Example #1
0
void art_clear(art_buffer_p buffer, art_context_p context)
{
  unsigned char r = ((context->current_color & 0xff000000) >> 24);
  unsigned char g = ((context->current_color & 0xff0000) >> 16);
  unsigned char b = ((context->current_color & 0xff00) >> 8);
  unsigned char a = (context->current_color & 0xff);
  art_rgb_run_alpha(buffer->buffer, r, g, b, a, 
		    buffer->width * buffer->height);
}
Example #2
0
static GdkPixbuf *
cheese_thumbnail_stretch_frame_image (GdkPixbuf *frame_image,
                                      gint       left_offset,
                                      gint       top_offset,
                                      gint       right_offset,
                                      gint       bottom_offset,
                                      gint       dest_width,
                                      gint       dest_height,
                                      gboolean   fill_flag)
{
  GdkPixbuf *result_pixbuf;
  guchar    *pixels_ptr;
  gint       frame_width, frame_height;
  gint       y, row_stride;
  gint       target_width, target_frame_width;
  gint       target_height, target_frame_height;

  frame_width  = gdk_pixbuf_get_width (frame_image);
  frame_height = gdk_pixbuf_get_height (frame_image);

  if (fill_flag)
  {
    result_pixbuf = gdk_pixbuf_scale_simple (frame_image,
                                             dest_width,
                                             dest_height,
                                             GDK_INTERP_NEAREST);
  }
  else
  {
    result_pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB,
                                    TRUE,
                                    8,
                                    dest_width,
                                    dest_height);
  }

  row_stride = gdk_pixbuf_get_rowstride (result_pixbuf);
  pixels_ptr = gdk_pixbuf_get_pixels (result_pixbuf);

  if (!fill_flag)
  {
    for (y = 0; y < dest_height; y++)
    {
      art_rgb_run_alpha (pixels_ptr,
                         255, 255,
                         255, 255,
                         dest_width);
      pixels_ptr += row_stride;
    }
  }

  target_width       = dest_width - left_offset - right_offset;
  target_frame_width = frame_width - left_offset - right_offset;

  target_height       = dest_height - top_offset - bottom_offset;
  target_frame_height = frame_height - top_offset - bottom_offset;

  /* Draw the left top corner  and top row */
  gdk_pixbuf_copy_area (frame_image,
                        0, 0,
                        left_offset,
                        top_offset,
                        result_pixbuf,
                        0, 0);

  draw_frame_row (frame_image,
                  target_width,
                  target_frame_width,
                  0, 0,
                  result_pixbuf,
                  left_offset,
                  top_offset);

  /* Draw the right top corner and left column */
  gdk_pixbuf_copy_area (frame_image,
                        frame_width - right_offset,
                        0,
                        right_offset,
                        top_offset,
                        result_pixbuf,
                        dest_width - right_offset,
                        0);

  draw_frame_column (frame_image,
                     target_height,
                     target_frame_height,
                     0, 0,
                     result_pixbuf,
                     top_offset,
                     left_offset);

  /* Draw the bottom right corner and bottom row */
  gdk_pixbuf_copy_area (frame_image,
                        frame_width - right_offset,
                        frame_height - bottom_offset,
                        right_offset,
                        bottom_offset,
                        result_pixbuf,
                        dest_width - right_offset,
                        dest_height - bottom_offset);

  draw_frame_row (frame_image,
                  target_width,
                  target_frame_width,
                  frame_height - bottom_offset,
                  dest_height - bottom_offset,
                  result_pixbuf,
                  left_offset, bottom_offset);

  /* Draw the bottom left corner and the right column */
  gdk_pixbuf_copy_area (frame_image,
                        0,
                        frame_height - bottom_offset,
                        left_offset,
                        bottom_offset,
                        result_pixbuf,
                        0,
                        dest_height - bottom_offset);

  draw_frame_column (frame_image,
                     target_height,
                     target_frame_height,
                     frame_width - right_offset,
                     dest_width - right_offset,
                     result_pixbuf, top_offset,
                     right_offset);

  return result_pixbuf;
}