comparison gui/ui/render.c @ 37005:4330b0a2af69

Change the parameter list of PutImage(). Put destination data first and source data second, hence put x and y at the beginning. Add buffer to be drawn in and its width to the list. As a result, the global variables image_buffer and drawbuf_width can be removed.
author ib
date Fri, 28 Mar 2014 13:32:20 +0000
parents 2d8157b3b386
children 5526b86aaa7c
comparison
equal deleted inserted replaced
37004:c3fcf359e4dc 37005:4330b0a2af69
31 #include "libavutil/avstring.h" 31 #include "libavutil/avstring.h"
32 #include "osdep/timer.h" 32 #include "osdep/timer.h"
33 #include "stream/stream.h" 33 #include "stream/stream.h"
34 34
35 #define DLABEL_DELAY 2500 // in milliseconds 35 #define DLABEL_DELAY 2500 // in milliseconds
36
37 static char *image_buffer;
38 static int drawbuf_width;
39 36
40 /** 37 /**
41 * @brief Convert #guiInfo member Filename. 38 * @brief Convert #guiInfo member Filename.
42 * 39 *
43 * @param how 0 (cut file path and extension), 40 * @param how 0 (cut file path and extension),
355 } 352 }
356 353
357 return translation; 354 return translation;
358 } 355 }
359 356
360 static void PutImage(guiImage *img, int x, int y, int parts, int index) 357 static void PutImage(int x, int y, uint32_t *drawbuf, int drawbuf_width, guiImage *img, int parts, int index)
361 { 358 {
362 int i, ix, iy; 359 int i, ix, iy;
363 uint32_t *pixels, *drawbuf; 360 uint32_t *pixels;
364 register uint32_t yc, pixel; 361 register uint32_t yc, pixel;
365 362
366 if (!img || (img->Image == NULL)) 363 if (!img || (img->Image == NULL))
367 return; 364 return;
368 365
369 i = img->Width * (img->Height / parts) * index; 366 i = img->Width * (img->Height / parts) * index;
370 drawbuf = (uint32_t *)image_buffer;
371 pixels = (uint32_t *)img->Image; 367 pixels = (uint32_t *)img->Image;
372 368
373 yc = y * drawbuf_width; 369 yc = y * drawbuf_width;
374 370
375 for (iy = y; iy < (int)(y + img->Height / parts); iy++) { 371 for (iy = y; iy < (int)(y + img->Height / parts); iy++) {
384 } 380 }
385 } 381 }
386 382
387 void RenderAll(wsWindow *window, guiItem *items, int nrItems, char *drawbuf) 383 void RenderAll(wsWindow *window, guiItem *items, int nrItems, char *drawbuf)
388 { 384 {
385 uint32_t *db;
389 guiItem *item; 386 guiItem *item;
390 guiImage *image = NULL; 387 guiImage *image = NULL;
391 int i, index; 388 int dw, i, index;
392 389
393 image_buffer = drawbuf; 390 db = (uint32_t *)drawbuf;
394 drawbuf_width = window->Width; 391 dw = window->Width;
395 392
396 for (i = 0; i < nrItems + 1; i++) { 393 for (i = 0; i < nrItems + 1; i++) {
397 item = &items[i]; 394 item = &items[i];
398 395
399 switch (item->pressed) { 396 switch (item->pressed) {
411 } 408 }
412 409
413 switch (item->type) { 410 switch (item->type) {
414 case itButton: 411 case itButton:
415 412
416 PutImage(&item->Bitmap, item->x, item->y, 3, index); 413 PutImage(item->x, item->y, db, dw, &item->Bitmap, 3, index);
417 break; 414 break;
418 415
419 case itPimage: 416 case itPimage:
420 417
421 PutImage(&item->Bitmap, item->x, item->y, item->numphases, (item->numphases - 1) * (item->value / 100.0)); 418 PutImage(item->x, item->y, db, dw, &item->Bitmap, item->numphases, (item->numphases - 1) * (item->value / 100.0));
422 break; 419 break;
423 420
424 case itHPotmeter: 421 case itHPotmeter:
425 422
426 PutImage(&item->Bitmap, item->x, item->y, item->numphases, (item->numphases - 1) * (item->value / 100.0)); 423 PutImage(item->x, item->y, db, dw, &item->Bitmap, item->numphases, (item->numphases - 1) * (item->value / 100.0));
427 PutImage(&item->Mask, item->x + (item->width - item->pwidth) * (item->value / 100.0), item->y, 3, index); 424 PutImage(item->x + (item->width - item->pwidth) * (item->value / 100.0), item->y, db, dw, &item->Mask, 3, index);
428 break; 425 break;
429 426
430 case itVPotmeter: 427 case itVPotmeter:
431 428
432 PutImage(&item->Bitmap, item->x, item->y, item->numphases, (item->numphases - 1) * (item->value / 100.0)); 429 PutImage(item->x, item->y, db, dw, &item->Bitmap, item->numphases, (item->numphases - 1) * (item->value / 100.0));
433 PutImage(&item->Mask, item->x, item->y + (item->height - item->pheight) * (1.0 - item->value / 100.0), 3, index); 430 PutImage(item->x, item->y + (item->height - item->pheight) * (1.0 - item->value / 100.0), db, dw, &item->Mask, 3, index);
434 break; 431 break;
435 432
436 case itSLabel: 433 case itSLabel:
437 434
438 if (item->width == -1) 435 if (item->width == -1)
439 item->width = fntTextWidth(item->fontid, item->label); 436 item->width = fntTextWidth(item->fontid, item->label);
440 437
441 image = fntTextRender(item, 0, item->label); 438 image = fntTextRender(item, 0, item->label);
442 439
443 if (image) 440 if (image)
444 PutImage(image, item->x, item->y, 1, 0); 441 PutImage(item->x, item->y, db, dw, image, 1, 0);
445 442
446 break; 443 break;
447 444
448 case itDLabel: 445 case itDLabel:
449 { 446 {
480 477
481 image = fntTextRender(item, x, t); 478 image = fntTextRender(item, x, t);
482 } 479 }
483 480
484 if (image) 481 if (image)
485 PutImage(image, item->x, item->y, 1, 0); 482 PutImage(item->x, item->y, db, dw, image, 1, 0);
486 483
487 break; 484 break;
488 } 485 }
489 } 486 }
490 487