diff options
author | Jay Sorg <jay.sorg@gmail.com> | 2015-02-05 09:20:23 +0300 |
---|---|---|
committer | Jay Sorg <jay.sorg@gmail.com> | 2015-02-05 09:20:23 +0300 |
commit | 0170e1be4354c57c6cfadb89dab3b7e990b40616 (patch) | |
tree | 61a984da16fe8cd37f5355ca3a88de7ba3a541f4 | |
parent | 3c092add4a38b39f58c7f8ef3092e24395d9b49e (diff) |
bitmap.c ExtractCodeId opt
-rw-r--r-- | libfreerdp-codec/bitmap.c | 40 |
1 files changed, 15 insertions, 25 deletions
diff --git a/libfreerdp-codec/bitmap.c b/libfreerdp-codec/bitmap.c index 499a935..96b3225 100644 --- a/libfreerdp-codec/bitmap.c +++ b/libfreerdp-codec/bitmap.c @@ -77,35 +77,25 @@ static const uint8 g_MaskLiteRunLength = 0x0F; */ static uint32 ExtractCodeId(uint8 bOrderHdr) { - int code; - - switch (bOrderHdr) + if ((bOrderHdr & 0xC0U) != 0xC0U) { - case MEGA_MEGA_BG_RUN: - case MEGA_MEGA_FG_RUN: - case MEGA_MEGA_SET_FG_RUN: - case MEGA_MEGA_DITHERED_RUN: - case MEGA_MEGA_COLOR_RUN: - case MEGA_MEGA_FGBG_IMAGE: - case MEGA_MEGA_SET_FGBG_IMAGE: - case MEGA_MEGA_COLOR_IMAGE: - case SPECIAL_FGBG_1: - case SPECIAL_FGBG_2: - case SPECIAL_WHITE: - case SPECIAL_BLACK: - return bOrderHdr; + /* REGULAR orders + * (000x xxxx, 001x xxxx, 010x xxxx, 011x xxxx, 100x xxxx) + */ + return bOrderHdr >> 5; } - code = bOrderHdr >> 5; - switch (code) + else if ((bOrderHdr & 0xF0U) == 0xF0U) { - case REGULAR_BG_RUN: - case REGULAR_FG_RUN: - case REGULAR_COLOR_RUN: - case REGULAR_FGBG_IMAGE: - case REGULAR_COLOR_IMAGE: - return code; + /* MEGA and SPECIAL orders (0xF*) */ + return bOrderHdr; + } + else + { + /* LITE orders + * 1100 xxxx, 1101 xxxx, 1110 xxxx) + */ + return bOrderHdr >> 4; } - return bOrderHdr >> 4; } /** |