Esempio n. 1
0
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);
  }
}
Esempio n. 2
0
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);
}
Esempio n. 3
0
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);
}
Esempio n. 4
0
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);
  }
}
Esempio n. 5
0
/*
 * Dealloc
 */
static void
PyDiaImage_Dealloc(PyDiaImage *self)
{
  dia_image_unref (self->image);
  PyObject_DEL(self);
}