return 0;
}
- /* maybe grow layout framebuffer */
- drv_generic_graphic_resizeFB(row + height, col + width);
+ int center = P2N(&Image->center);
+ if (center) {
+ int aHight = Image->height;
+ if (Image->oldheight > Image->height) aHight = Image->oldheight;
+ // set layout framebuffer to a fixed size
+ drv_generic_graphic_resizeFB(row + aHight, LCOLS);
+ // flush area
+ drv_generic_graphic_blit(row, 0, aHight, LCOLS);
+ // fill it black or transparent
+ for (y = 0; y < aHight; 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 logo in the area
+ if (width < LCOLS)
+ col = (LCOLS / 2) - (width / 2);
+ else
+ col = 1;
+ row += (aHight - height) / 2;
+ } else {
+ /* maybe grow layout framebuffer */
+ drv_generic_graphic_resizeFB(row + height, col + width);
+ }
/* render image */
visible = P2N(&Image->visible);
/* clear bitmap */
if (Image->bitmap) {
+ Image->oldheight = Image->height;
int i;
for (i = 0; i < Image->height * Image->width; i++) {
RGBA empty = {.R = 0x00,.G = 0x00,.B = 0x00,.A = 0x00 };
/* maybe resize bitmap */
gdImage = Image->gdImage;
- if (gdImage->sx > Image->width) {
+ if (gdImage->sx > Image->width || P2N(&Image->center)) {
Image->width = gdImage->sx;
free(Image->bitmap);
Image->bitmap = NULL;
}
- if (gdImage->sy > Image->height) {
+ if (gdImage->sy > Image->height || P2N(&Image->center)) {
Image->height = gdImage->sy;
free(Image->bitmap);
Image->bitmap = NULL;
property_eval(&Image->reload);
property_eval(&Image->visible);
property_eval(&Image->inverted);
+ property_eval(&Image->center);
/* render image into bitmap */
widget_image_render(W->name, Image);
property_load(section, "reload", "0", &Image->reload);
property_load(section, "visible", "1", &Image->visible);
property_load(section, "inverted", "0", &Image->inverted);
+ property_load(section, "center", "0", &Image->center);
/* sanity checks */
if (!property_valid(&Image->file)) {
property_free(&Image->reload);
property_free(&Image->visible);
property_free(&Image->inverted);
+ property_free(&Image->center);
free(Self->data);
Self->data = NULL;
}
void *gdImage; /* raw gd image */
RGBA *bitmap; /* image bitmap */
int width, height; /* size of the image */
+ int oldheight; /* height of the image before */
PROPERTY file; /* image filename */
PROPERTY scale; /* scale image in percent */
PROPERTY update; /* update interval */
PROPERTY reload; /* reload image on update? */
PROPERTY visible; /* image visible? */
PROPERTY inverted; /* image inverted? */
+ PROPERTY center; /* image centered? */
} WIDGET_IMAGE;
extern WIDGET_CLASS Widget_Image;
/* clear bitmap */
if (Image->bitmap)
{
+ Image->oldheight = Image->height;
int i;
for (i = 0; i < Image->height * Image->width; i++)
{
/* maybe resize bitmap */
gdImage = Image->gdImage;
- if (gdImage->sx > Image->width)
+ if (gdImage->sx > Image->width || P2N(&Image->center)) {
{
Image->width = gdImage->sx;
free(Image->bitmap);
Image->bitmap = NULL;
}
- if (gdImage->sy > Image->height)
+ if (gdImage->sy > Image->height || P2N(&Image->center)) {
{
Image->height = gdImage->sy;
free(Image->bitmap);
property_eval(&Image->reload);
property_eval(&Image->visible);
property_eval(&Image->inverted);
+ property_eval(&Image->center);
/* render image into bitmap */
widget_ttf_render(W->name, Image);
property_load(section, "reload", "0", &Image->reload);
property_load(section, "visible", "1", &Image->visible);
property_load(section, "inverted", "0", &Image->inverted);
+ property_load(section, "center", "0", &Image->center);
/* sanity checks */
if (!property_valid(&Image->font))
property_free(&Image->reload);
property_free(&Image->visible);
property_free(&Image->inverted);
+ property_free(&Image->center);
free(Self->data);
Self->data = NULL;
}
void *gdImage; /* raw gd image */
RGBA *bitmap; /* image bitmap */
int width, height; /* size of the image */
+ int oldheight; /* height of the image before */
PROPERTY value; /* text to render */
PROPERTY size; /* fontsize */
PROPERTY font; /* path to font */
PROPERTY reload; /* reload image on update? */
PROPERTY visible; /* image visible? */
PROPERTY inverted; /* image inverted? */
+ PROPERTY center; /* image centered? */
} WIDGET_TTF;
extern WIDGET_CLASS Widget_Truetype;