MyPaintGeglTiledSurface *
mypaint_gegl_tiled_surface_new(void)
{
    MyPaintGeglTiledSurface *self = (MyPaintGeglTiledSurface *)malloc(sizeof(MyPaintGeglTiledSurface));

    mypaint_tiled_surface_init(&self->parent, tile_request_start, tile_request_end);

    // MyPaintSurface vfuncs
    self->parent.parent.destroy = free_gegl_tiledsurf;
    self->parent.parent.save_png = save_png;

    self->parent.threadsafe_tile_requests = TRUE;

    self->buffer = NULL;

    gegl_rectangle_set(&self->extent_rect, 0, 0, 0, 0);

    self->format = babl_format_new(babl_model ("R'aG'aB'aA"), babl_type ("u15"),
                             babl_component("R'a"), babl_component("G'a"), babl_component("B'a"), babl_component("A"),
                             NULL);
    g_assert(self->format);

    mypaint_gegl_tiled_surface_set_buffer(self, NULL);

    return self;
}
MyPaintPythonTiledSurface *
mypaint_python_tiled_surface_new(PyObject *py_object)
{
    MyPaintPythonTiledSurface *self = (MyPaintPythonTiledSurface *)malloc(sizeof(MyPaintPythonTiledSurface));

    mypaint_tiled_surface_init(&self->parent);

    self->parent.parent.draw_dab = draw_dab;
    self->parent.parent.destroy = free_tiledsurf;

    self->parent.get_tile = get_tile_memory;
    self->parent.update_tile = update_tile;
    self->parent.begin_atomic = begin_atomic;
    self->parent.end_atomic = end_atomic;
    self->parent.area_changed = area_changed;

    self->py_obj = py_object; // no need to incref
    self->atomic = 0;
    self->tileMemoryValid = 0;
    self->tileMemoryWrite = 0;

    self->dirty_bbox.w = 0;
    self->dirty_bbox.h = 0;
    self->dirty_bbox.x = 0;
    self->dirty_bbox.y = 0;

    return self;
}
Beispiel #3
0
MyPaintPythonTiledSurface *
mypaint_python_tiled_surface_new(PyObject *py_object)
{
    MyPaintPythonTiledSurface *self = (MyPaintPythonTiledSurface *)malloc(sizeof(MyPaintPythonTiledSurface));

    mypaint_tiled_surface_init(&self->parent, tile_request_start, tile_request_end);
    self->parent.threadsafe_tile_requests = TRUE;

    // MyPaintSurface vfuncs
    self->parent.parent.destroy = free_tiledsurf;

    self->py_obj = py_object; // no need to incref

    return self;
}