Skia
2DGraphicsLibrary
|
#include <ciso646>
#include "SkPreConfig.h"
#include "SkUserConfig.h"
#include "SkPostConfig.h"
#include <stddef.h>
#include <stdint.h>
#include <string.h>
#include "../private/SkMalloc.h"
#include "../private/SkTFitsIn.h"
Go to the source code of this file.
Macros | |
#define | SKIA_VERSION_MAJOR 1 |
See SkGraphics::GetVersion() to retrieve these at runtime. | |
#define | SKIA_VERSION_MINOR 0 |
#define | SKIA_VERSION_PATCH 0 |
#define | SK_INIT_TO_AVOID_WARNING = 0 |
#define | SkREQUIRE_SEMICOLON_AFTER(code) do { code } while (false) |
#define | SkASSERT_RELEASE(cond) SkREQUIRE_SEMICOLON_AFTER(if (!(cond)) { SK_ABORT(#cond); } ) |
#define | SkASSERT(cond) SkREQUIRE_SEMICOLON_AFTER(if (!(cond)) { SK_ABORT("assert(" #cond ")"); }) |
#define | SkASSERTF(cond, fmt,...) |
#define | SkDEBUGFAIL(message) SK_ABORT(message) |
#define | SkDEBUGFAILF(fmt,...) SkASSERTF(false, fmt, ##__VA_ARGS__) |
#define | SkDEBUGCODE(...) __VA_ARGS__ |
#define | SkDECLAREPARAM(type, var) , type var |
#define | SkPARAM(var) , var |
#define | SkDEBUGF(args) SkDebugf args |
#define | SkAssertResult(cond) SkASSERT(cond) |
#define | SkFAIL(message) SK_ABORT(message) |
#define | sk_throw() SK_ABORT("sk_throw") |
#define | SK_TO_STRING_NONVIRT() void toString(SkString* str) const; |
#define | SK_TO_STRING_VIRT() virtual void toString(SkString* str) const; |
#define | SK_TO_STRING_PUREVIRT() virtual void toString(SkString* str) const = 0; |
#define | SK_TO_STRING_OVERRIDE() void toString(SkString* str) const override; |
#define | SK_MACRO_CONCAT(X, Y) SK_MACRO_CONCAT_IMPL_PRIV(X, Y) |
#define | SK_MACRO_CONCAT_IMPL_PRIV(X, Y) X ## Y |
#define | SK_MACRO_APPEND_LINE(name) SK_MACRO_CONCAT(name, __LINE__) |
#define | SK_REQUIRE_LOCAL_VAR(classname) static_assert(false, "missing name for " #classname) |
For some classes, it's almost always an error to instantiate one without a name, e.g. More... | |
#define | SkToS8(x) SkTo<int8_t>(x) |
#define | SkToU8(x) SkTo<uint8_t>(x) |
#define | SkToS16(x) SkTo<int16_t>(x) |
#define | SkToU16(x) SkTo<uint16_t>(x) |
#define | SkToS32(x) SkTo<int32_t>(x) |
#define | SkToU32(x) SkTo<uint32_t>(x) |
#define | SkToInt(x) SkTo<int>(x) |
#define | SkToUInt(x) SkTo<unsigned>(x) |
#define | SkToSizeT(x) SkTo<size_t>(x) |
#define | SkToBool(cond) ((cond) != 0) |
Returns 0 or 1 based on the condition. | |
#define | SK_MaxS16 32767 |
#define | SK_MinS16 -32767 |
#define | SK_MaxU16 0xFFFF |
#define | SK_MinU16 0 |
#define | SK_MaxS32 0x7FFFFFFF |
#define | SK_MinS32 -SK_MaxS32 |
#define | SK_MaxU32 0xFFFFFFFF |
#define | SK_MinU32 0 |
#define | SK_NaN32 ((int) (1U << 31)) |
#define | SK_ARRAY_COUNT(array) (sizeof(SkArrayCountHelper(array))) |
#define | SK_BEGIN_REQUIRE_DENSE |
#define | SK_END_REQUIRE_DENSE |
#define | SkAlign2(x) (((x) + 1) >> 1 << 1) |
#define | SkIsAlign2(x) (0 == ((x) & 1)) |
#define | SkAlign4(x) (((x) + 3) >> 2 << 2) |
#define | SkIsAlign4(x) (0 == ((x) & 3)) |
#define | SkAlign8(x) (((x) + 7) >> 3 << 3) |
#define | SkIsAlign8(x) (0 == ((x) & 7)) |
#define | SkAlign16(x) (((x) + 15) >> 4 << 4) |
#define | SkIsAlign16(x) (0 == ((x) & 15)) |
#define | SkAlignPtr(x) (sizeof(void*) == 8 ? SkAlign8(x) : SkAlign4(x)) |
#define | SkIsAlignPtr(x) (sizeof(void*) == 8 ? SkIsAlign8(x) : SkIsAlign4(x)) |
#define | SkSetFourByteTag(a, b, c, d) (((a) << 24) | ((b) << 16) | ((c) << 8) | (d)) |
#define | SK_MSec1 1000 |
1 second measured in milliseconds | |
#define | SK_MSecMax 0x7FFFFFFF |
maximum representable milliseconds; 24d 20h 31m 23.647s. | |
#define | SkMSec_LT(a, b) ((int32_t)(a) - (int32_t)(b) < 0) |
Returns a < b for milliseconds, correctly handling wrap-around from 0xFFFFFFFF to 0. | |
#define | SkMSec_LE(a, b) ((int32_t)(a) - (int32_t)(b) <= 0) |
Returns a <= b for milliseconds, correctly handling wrap-around from 0xFFFFFFFF to 0. | |
#define | SK_InvalidGenID 0 |
The generation IDs in Skia reserve 0 has an invalid marker. | |
#define | SK_InvalidUniqueID 0 |
The unique IDs in Skia reserve 0 has an invalid marker. | |
Typedefs | |
typedef int | S8CPU |
Fast type for signed 8 bits. More... | |
typedef unsigned | U8CPU |
Fast type for unsigned 8 bits. More... | |
typedef int | S16CPU |
Fast type for signed 16 bits. More... | |
typedef unsigned | U16CPU |
Fast type for unsigned 16 bits. More... | |
typedef uint8_t | SkBool8 |
Meant to be a small version of bool, for storage purposes. More... | |
typedef uint32_t | SkFourByteTag |
typedef int32_t | SkUnichar |
32 bit integer to hold a unicode value | |
typedef uint16_t | SkGlyphID |
16 bit unsigned integer to hold a glyph index | |
typedef uint32_t | SkMSec |
32 bit value to hold a millisecond duration Note that SK_MSecMax is about 25 days. | |
Functions | |
SK_API void | sk_abort_no_print (void) |
Called internally if we hit an unrecoverable error. More... | |
SK_API void | SkDebugf (const char format[],...) |
template<typename D , typename S > | |
D | SkTo (S s) |
static bool | SkIsS16 (long x) |
Returns true if the value can be represented with signed 16bits. | |
static bool | SkIsU16 (long x) |
Returns true if the value can be represented with unsigned 16bits. | |
static int32_t | SkLeftShift (int32_t value, int32_t shift) |
static int64_t | SkLeftShift (int64_t value, int32_t shift) |
template<typename T , size_t N> | |
char(& | SkArrayCountHelper (T(&array)[N]))[N] |
Returns the number of entries in an array (not a pointer) | |
#define SK_REQUIRE_LOCAL_VAR | ( | classname | ) | static_assert(false, "missing name for " #classname) |
For some classes, it's almost always an error to instantiate one without a name, e.g.
{ SkAutoMutexAcquire(&mutex); <some code>=""> } In this case, the writer meant to hold mutex while the rest of the code in the block runs, but instead the mutex is acquired and then immediately released. The correct usage is { SkAutoMutexAcquire lock(&mutex); <some code>=""> }
To prevent callers from instantiating your class without a name, use SK_REQUIRE_LOCAL_VAR like this: class classname { <your class>=""> }; #define classname(...) SK_REQUIRE_LOCAL_VAR(classname)
This won't work with templates, and you must inline the class' constructors and destructors. Take a look at SkAutoFree and SkAutoMalloc in this file for examples.
#define SkASSERTF | ( | cond, | |
fmt, | |||
... | |||
) |
typedef int S16CPU |
Fast type for signed 16 bits.
Use for parameter passing and local variables, not for storage
typedef int S8CPU |
Fast type for signed 8 bits.
Use for parameter passing and local variables, not for storage.
typedef uint8_t SkBool8 |
Meant to be a small version of bool, for storage purposes.
Will be 0 or 1
typedef unsigned U16CPU |
Fast type for unsigned 16 bits.
Use for parameter passing and local variables, not for storage
typedef unsigned U8CPU |
Fast type for unsigned 8 bits.
Use for parameter passing and local variables, not for storage
SK_API void sk_abort_no_print | ( | void | ) |
Called internally if we hit an unrecoverable error.
The platform implementation must not return, but should either throw an exception or otherwise exit.