int center = P2N(&Image->center);
if (center)
{
- int area_height = (Image->oldheight > Image->height) ? Image->oldheight : Image->height;
- if (center > area_height)
- area_height = center;
- // set layout framebuffer to a fixed size
- drv_generic_graphic_resizeFB(row + area_height, LCOLS);
- // flush area
- drv_generic_graphic_blit(row, 0, area_height, LCOLS);
- // fill it black or transparent
- for (y = 0; y < area_height; y++)
- {
- for (x = 0; x < LCOLS; x++)
- {
- int i = (row + y ) * LCOLS + LCOLS + x;
- drv_generic_graphic_FB[layer][i] = (Driver == "SamsungSPF") ? BG_COL : NO_COL;
- }
- }
- // align image in the area
if (width < LCOLS)
col = (LCOLS / 2) - (width / 2);
else
col = 1;
- row += (area_height - height) / 2;
- }
- else
- {
- /* maybe grow layout framebuffer */
- drv_generic_graphic_resizeFB(row + height, col + width);
}
+ /* maybe grow layout framebuffer */
+ drv_generic_graphic_resizeFB(row + height, col + width);
+
/* render image */
visible = P2N(&Image->visible);
for (y = 0; y < height; y++)
#include "widget.h"
#include "widget_image.h"
#include "rgb.h"
+#include "drv_generic.h"
#ifdef WITH_DMALLOC
#include <dmalloc.h>
int x, y;
int inverted;
gdImagePtr gdImage;
- int scale,_width,_height;
+ int scale,_width,_height, center;
/* clear bitmap */
if (Image->bitmap)
_width = P2N(&Image->_width);
_height = P2N(&Image->_height);
scale = P2N(&Image->scale);
+ center = P2N(&Image->center);
if (((_width > 0) || (_height > 0)) && (scale == 100))
{
Image->gdImage = scaled_image;
}
+ if (center)
+ {
+ gdImage = Image->gdImage;
+ gdImagePtr center_image;
+ int ox = gdImageSX(gdImage);
+ int oy = gdImageSY(gdImage);
+ int cx = (DCOLS/2) - (ox/2);
+ int cy = (oy < Image->oldheight) ? Image->oldheight : oy;
+ center_image = gdImageCreateTrueColor(DCOLS,cy);
+ gdImageSaveAlpha(center_image, 1);
+ gdImageFill(center_image, 0, 0, gdImageColorAllocateAlpha(center_image, 0, 0, 0, 127));
+ gdImageCopyResized(center_image,Image->gdImage,cx,0,0,0,ox,oy,ox,oy);
+ gdImageDestroy(Image->gdImage);
+ Image->gdImage = center_image;
+ }
+
+
/* maybe resize bitmap */
gdImage = Image->gdImage;
if (gdImage->sx > Image->width || P2N(&Image->center))