Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Functions | Variables
SkMasks.cpp File Reference
#include "src/core/SkMasks.h"
#include "include/private/base/SkDebug.h"

Go to the source code of this file.

Functions

static uint8_t convert_to_8 (uint8_t component, uint32_t n)
 
static uint8_t get_comp (uint32_t pixel, uint32_t mask, uint32_t shift, uint32_t size)
 
static SkMasks::MaskInfo process_mask (uint32_t mask)
 

Variables

static constexpr uint8_t n_bit_to_8_bit_lookup_table []
 

Function Documentation

◆ convert_to_8()

static uint8_t convert_to_8 ( uint8_t  component,
uint32_t  n 
)
static

Definition at line 49 of file SkMasks.cpp.

49 {
50 if (0 == n) {
51 return 0;
52 } else if (8 > n) {
53 return n_bit_to_8_bit_lookup_table[(1 << n) - 2 + component];
54 } else {
55 SkASSERT(8 == n);
56 return component;
57 }
58}
#define SkASSERT(cond)
Definition SkAssert.h:116
static constexpr uint8_t n_bit_to_8_bit_lookup_table[]
Definition SkMasks.cpp:16

◆ get_comp()

static uint8_t get_comp ( uint32_t  pixel,
uint32_t  mask,
uint32_t  shift,
uint32_t  size 
)
static

Definition at line 60 of file SkMasks.cpp.

61 {
62 return convert_to_8((pixel & mask) >> shift, size);
63}
static uint8_t convert_to_8(uint8_t component, uint32_t n)
Definition SkMasks.cpp:49

◆ process_mask()

static SkMasks::MaskInfo process_mask ( uint32_t  mask)
static

Definition at line 88 of file SkMasks.cpp.

88 {
89 // Determine properties of the mask
90 uint32_t tempMask = mask;
91 uint32_t shift = 0;
92 uint32_t size = 0;
93 if (tempMask != 0) {
94 // Count trailing zeros on masks
95 for (; (tempMask & 1) == 0; tempMask >>= 1) {
96 shift++;
97 }
98 // Count the size of the mask
99 for (; tempMask & 1; tempMask >>= 1) {
100 size++;
101 }
102 // Verify that the mask is continuous
103 if (tempMask) {
104 SkDebugf("Warning: Bit mask is not continuous.\n");
105 // Finish processing the mask
106 for (; tempMask; tempMask >>= 1) {
107 size++;
108 }
109 }
110 // Truncate masks greater than 8 bits
111 if (size > 8) {
112 shift += size - 8;
113 size = 8;
114 mask &= 0xFF << shift;
115 }
116 }
117
118 return { mask, shift, size };
119}
void SK_SPI SkDebugf(const char format[],...) SK_PRINTF_LIKE(1
it will be possible to load the file into Perfetto s trace viewer disable asset Prevents usage of any non test fonts unless they were explicitly Loaded via prefetched default font Indicates whether the embedding started a prefetch of the default font manager before creating the engine run In non interactive keep the shell running after the Dart script has completed enable serial On low power devices with low core running concurrent GC tasks on threads can cause them to contend with the UI thread which could potentially lead to jank This option turns off all concurrent GC activities domain network JSON encoded network policy per domain This overrides the DisallowInsecureConnections switch Embedder can specify whether to allow or disallow insecure connections at a domain level old gen heap size
Definition switches.h:259

Variable Documentation

◆ n_bit_to_8_bit_lookup_table

constexpr uint8_t n_bit_to_8_bit_lookup_table[]
staticconstexpr
Initial value:
= {
0, 255,
0, 85, 170, 255,
0, 36, 73, 109, 146, 182, 219, 255,
0, 17, 34, 51, 68, 85, 102, 119, 136, 153, 170, 187, 204, 221, 238, 255,
0, 8, 16, 25, 33, 41, 49, 58, 66, 74, 82, 90, 99, 107, 115, 123, 132, 140,
148, 156, 165, 173, 181, 189, 197, 206, 214, 222, 230, 239, 247, 255,
0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 45, 49, 53, 57, 61, 65, 69, 73,
77, 81, 85, 89, 93, 97, 101, 105, 109, 113, 117, 121, 125, 130, 134, 138,
142, 146, 150, 154, 158, 162, 166, 170, 174, 178, 182, 186, 190, 194, 198,
202, 206, 210, 215, 219, 223, 227, 231, 235, 239, 243, 247, 251, 255,
0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38,
40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76,
78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110,
112, 114, 116, 118, 120, 122, 124, 126, 129, 131, 133, 135, 137, 139, 141,
143, 145, 147, 149, 151, 153, 155, 157, 159, 161, 163, 165, 167, 169, 171,
173, 175, 177, 179, 181, 183, 185, 187, 189, 191, 193, 195, 197, 199, 201,
203, 205, 207, 209, 211, 213, 215, 217, 219, 221, 223, 225, 227, 229, 231,
233, 235, 237, 239, 241, 243, 245, 247, 249, 251, 253, 255
}

Definition at line 16 of file SkMasks.cpp.

16 {
17 // 1 bit
18 0, 255,
19 // 2 bits
20 0, 85, 170, 255,
21 // 3 bits
22 0, 36, 73, 109, 146, 182, 219, 255,
23 // 4 bits
24 0, 17, 34, 51, 68, 85, 102, 119, 136, 153, 170, 187, 204, 221, 238, 255,
25 // 5 bits
26 0, 8, 16, 25, 33, 41, 49, 58, 66, 74, 82, 90, 99, 107, 115, 123, 132, 140,
27 148, 156, 165, 173, 181, 189, 197, 206, 214, 222, 230, 239, 247, 255,
28 // 6 bits
29 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 45, 49, 53, 57, 61, 65, 69, 73,
30 77, 81, 85, 89, 93, 97, 101, 105, 109, 113, 117, 121, 125, 130, 134, 138,
31 142, 146, 150, 154, 158, 162, 166, 170, 174, 178, 182, 186, 190, 194, 198,
32 202, 206, 210, 215, 219, 223, 227, 231, 235, 239, 243, 247, 251, 255,
33 // 7 bits
34 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38,
35 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76,
36 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110,
37 112, 114, 116, 118, 120, 122, 124, 126, 129, 131, 133, 135, 137, 139, 141,
38 143, 145, 147, 149, 151, 153, 155, 157, 159, 161, 163, 165, 167, 169, 171,
39 173, 175, 177, 179, 181, 183, 185, 187, 189, 191, 193, 195, 197, 199, 201,
40 203, 205, 207, 209, 211, 213, 215, 217, 219, 221, 223, 225, 227, 229, 231,
41 233, 235, 237, 239, 241, 243, 245, 247, 249, 251, 253, 255
42};