#ifdef DEBUG
g_debug("Adding %s picture to the cache:\n "
- "Image 0x%x, w %d h %d Hash %u",
+ "Image 0x%lx, w %d h %d Hash %u",
(*list == self->original ? "ORIGINAL" : "RESIZED"),
- (guint)self, pic->width, pic->height, RrImagePicHash(pic));
+ (gulong)self, pic->width, pic->height, RrImagePicHash(pic));
#endif
}
#ifdef DEBUG
g_debug("Removing %s picture from the cache:\n "
- "Image 0x%x, w %d h %d Hash %u",
+ "Image 0x%lx, w %d h %d Hash %u",
(*list == self->original ? "ORIGINAL" : "RESIZED"),
- (guint)self, (*list)[i]->width, (*list)[i]->height,
+ (gulong)self, (*list)[i]->width, (*list)[i]->height,
RrImagePicHash((*list)[i]));
#endif
return pic;
}
-/*! This drawns an RGBA picture into the target, within the rectangle specified
+/*! This draws an RGBA picture into the target, within the rectangle specified
by the area parameter. If the area's size differs from the source's then it
will be centered within the rectangle */
void DrawRGBA(RrPixel32 *target, gint target_w, gint target_h,
if (self && --self->ref == 0) {
#ifdef DEBUG
g_debug("Refcount to 0, removing ALL pictures from the cache:\n "
- "Image 0x%x", (guint)self);
+ "Image 0x%lx", (gulong)self);
#endif
while (self->n_original > 0)
RemovePicture(self, &self->original, 0, &self->n_original);
if (self->original[i]->width == w && self->original[i]->height == h) {
#ifdef DEBUG
g_debug("Found duplicate ORIGINAL image:\n "
- "Image 0x%x, w %d h %d", (guint)self, w, h);
+ "Image 0x%lx, w %d h %d", (gulong)self, w, h);
#endif
return;
}
pic = NULL;
free_pic = FALSE;
- /* is there an original of this size? (only w or h has to be right cuz
- we maintain aspect ratios) */
+ /* is there an original of this size? (only the larger of
+ w or h has to be right cuz we maintain aspect ratios) */
for (i = 0; i < self->n_original; ++i)
- if (self->original[i]->width == area->width ||
- self->original[i]->height == area->height)
+ if ((self->original[i]->width >= self->original[i]->height &&
+ self->original[i]->width == area->width) ||
+ (self->original[i]->width <= self->original[i]->height &&
+ self->original[i]->height == area->height))
{
pic = self->original[i];
break;
/* is there a resize of this size? */
for (i = 0; i < self->n_resized; ++i)
- if (self->resized[i]->width == area->width ||
- self->resized[i]->height == area->height)
+ if ((self->resized[i]->width >= self->resized[i]->height &&
+ self->resized[i]->width == area->width) ||
+ (self->resized[i]->width <= self->resized[i]->height &&
+ self->resized[i]->height == area->height))
{
gint j;
RrImagePic *saved;