static void image_draw(EImage *image, DiaRenderer *renderer) { DiaRendererClass *renderer_ops = DIA_RENDERER_GET_CLASS (renderer); Point ul_corner, lr_corner; Element *elem; assert(image != NULL); assert(renderer != NULL); elem = &image->element; lr_corner.x = elem->corner.x + elem->width + image->border_width/2; lr_corner.y = elem->corner.y + elem->height + image->border_width/2; ul_corner.x = elem->corner.x - image->border_width/2; ul_corner.y = elem->corner.y - image->border_width/2; if (image->draw_border) { renderer_ops->set_linewidth(renderer, image->border_width); renderer_ops->set_linestyle(renderer, image->line_style); renderer_ops->set_dashlength(renderer, image->dashlength); renderer_ops->set_linejoin(renderer, LINEJOIN_MITER); renderer_ops->draw_rect(renderer, &ul_corner, &lr_corner, &image->border_color); } /* Draw the image */ if (image->image) { if (image->keep_orig_aspect) { real aspect; real width,height; Point corner; aspect = (real)dia_image_width(image->image) / (real)dia_image_height(image->image); width = elem->height * aspect; if (width < elem->width) { height = elem->height; } else { width = elem->width; height = elem->width * (1.0/aspect); } corner.x = elem->corner.x + elem->width / 2.0 - width / 2.0; corner.y = elem->corner.y + elem->height / 2.0 - height / 2.0; renderer_ops->draw_image(renderer,&corner,width,height,image->image); } else { renderer_ops->draw_image(renderer, &elem->corner, elem->width, elem->height, image->image); } } else { DiaImage *broken = dia_image_get_broken(); renderer_ops->draw_image(renderer, &elem->corner, elem->width, elem->height, broken); dia_image_unref(broken); } }
static void image_destroy(Image *image) { if (image->file != NULL) g_free(image->file); if (image->image != NULL) dia_image_unref(image->image); element_destroy(&image->element); }
static void image_destroy(EImage *image) { if (image->file != NULL) { g_free(image->file); } if (image->image != NULL) { dia_image_unref(image->image); } element_destroy(&image->element); }
static void image_draw(Image *image, DiaRenderer *renderer) { DiaRendererClass *renderer_ops = DIA_RENDERER_GET_CLASS (renderer); Point ul_corner, lr_corner; Element *elem; assert(image != NULL); assert(renderer != NULL); elem = &image->element; lr_corner.x = elem->corner.x + elem->width + image->border_width/2; lr_corner.y = elem->corner.y + elem->height + image->border_width/2; ul_corner.x = elem->corner.x - image->border_width/2; ul_corner.y = elem->corner.y - image->border_width/2; if (image->draw_border) { renderer_ops->set_linewidth(renderer, image->border_width); renderer_ops->set_linestyle(renderer, image->line_style); renderer_ops->set_dashlength(renderer, image->dashlength); renderer_ops->set_linejoin(renderer, LINEJOIN_MITER); renderer_ops->draw_rect(renderer, &ul_corner, &lr_corner, &image->border_color); } /* Draw the image */ if (image->image) { renderer_ops->draw_image(renderer, &elem->corner, elem->width, elem->height, image->image); } else { DiaImage *broken = dia_image_get_broken(); renderer_ops->draw_image(renderer, &elem->corner, elem->width, elem->height, broken); dia_image_unref(broken); } }
/* * Dealloc */ static void PyDiaImage_Dealloc(PyDiaImage *self) { dia_image_unref (self->image); PyObject_DEL(self); }