Mercurial > mplayer.hg
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 |