Changeset f13f1495 in mainline for uspace/lib/gfxfont/test/font.c


Ignore:
Timestamp:
2020-09-29T14:58:57Z (4 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
efe0881
Parents:
a81d480
git-author:
Jiri Svoboda <jiri@…> (2020-09-28 19:58:39)
git-committer:
Jiri Svoboda <jiri@…> (2020-09-29 14:58:57)
Message:

Bit pack font bitmap to 1 bit per pixel when saving to TPF file

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/gfxfont/test/font.c

    ra81d480 rf13f1495  
    366366}
    367367
     368/** Test gfx_font_bitmap_pack() properly packs bitmap */
     369PCUT_TEST(bitmap_pack)
     370{
     371        errno_t rc;
     372        gfx_coord_t width, height;
     373        gfx_coord_t i;
     374        uint32_t *pixels;
     375        void *data;
     376        size_t size;
     377        uint8_t *dp;
     378
     379        width = 10;
     380        height = 10;
     381
     382        pixels = calloc(sizeof(uint32_t), width * height);
     383        PCUT_ASSERT_NOT_NULL(pixels);
     384
     385        for (i = 0; i < 10; i++)
     386                pixels[i * width + i] = PIXEL(255, 255, 255, 255);
     387
     388        rc = gfx_font_bitmap_pack(width, height, pixels, &data, &size);
     389        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     390        PCUT_ASSERT_NOT_NULL(data);
     391        PCUT_ASSERT_INT_EQUALS(20, size);
     392
     393        dp = data;
     394
     395        for (i = 0; i < 8; i++) {
     396                PCUT_ASSERT_INT_EQUALS(0x80 >> i, dp[2 * i]);
     397                PCUT_ASSERT_INT_EQUALS(0, dp[2 * i + 1]);
     398        }
     399
     400        for (i = 8; i < 10; i++) {
     401                PCUT_ASSERT_INT_EQUALS(0, dp[2 * i]);
     402                PCUT_ASSERT_INT_EQUALS(0x80 >> (i - 8), dp[2 * i + 1]);
     403        }
     404}
     405
     406/** Test gfx_font_bitmap_unpack() properly unpacks bitmap */
     407PCUT_TEST(bitmap_unpack)
     408{
     409        errno_t rc;
     410        gfx_coord_t width, height;
     411        gfx_coord_t i, j;
     412        uint32_t epix;
     413        uint32_t *pixels;
     414        uint8_t data[20];
     415
     416        width = 10;
     417        height = 10;
     418
     419        for (i = 0; i < 8; i++) {
     420                data[2 * i] = 0x80 >> i;
     421                data[2 * i + 1] = 0;
     422        }
     423
     424        for (i = 8; i < 10; i++) {
     425                data[2 * i] = 0;
     426                data[2 * i + 1] = 0x80 >> (i - 8);
     427        }
     428
     429        pixels = calloc(sizeof(uint32_t), width * height);
     430        PCUT_ASSERT_NOT_NULL(pixels);
     431
     432        rc = gfx_font_bitmap_unpack(width, height, data, sizeof(data),
     433            pixels);
     434        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     435
     436        for (j = 0; j < 10; j++) {
     437                for (i = 0; i < 10; i++) {
     438                        epix = (i == j) ? PIXEL(255, 255, 255, 255) :
     439                            PIXEL(0, 0, 0, 0);
     440                        PCUT_ASSERT_INT_EQUALS(epix, pixels[j * width + i]);
     441                }
     442        }
     443}
     444
    368445static errno_t testgc_set_color(void *arg, gfx_color_t *color)
    369446{
Note: See TracChangeset for help on using the changeset viewer.