15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright (C) 2006 The Android Open Source Project
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Licensed under the Apache License, Version 2.0 (the "License");
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * you may not use this file except in compliance with the License.
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * You may obtain a copy of the License at
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *      http://www.apache.org/licenses/LICENSE-2.0
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Unless required by applicable law or agreed to in writing, software
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * distributed under the License is distributed on an "AS IS" BASIS,
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * See the License for the specific language governing permissions and
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * limitations under the License.
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef SkUserConfig_DEFINED
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SkUserConfig_DEFINED
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*  SkTypes.h, the root of the public header files, does the following trick:
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    #include <SkPreConfig.h>
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    #include <SkUserConfig.h>
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    #include <SkPostConfig.h>
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    SkPreConfig.h runs first, and it is responsible for initializing certain
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    skia defines.
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    SkPostConfig.h runs last, and its job is to just check that the final
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    defines are consistent (i.e. that we don't have mutually conflicting
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    defines).
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    SkUserConfig.h (this file) runs in the middle. It gets to change or augment
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    the list of flags initially set in preconfig, and then postconfig checks
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    that everything still makes sense.
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    Below are optional defines that add, subtract, or change default behavior
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    in Skia. Your port can locally edit this file to enable/disable flags as
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    you choose, or these can be delared on your command line (i.e. -Dfoo).
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    By default, this include file will always default to having all of the flags
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    commented out, so including it will have no effect.
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)///////////////////////////////////////////////////////////////////////////////
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*  Scalars (the fractional value type in skia) can be implemented either as
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    floats or 16.16 integers (fixed). Exactly one of these two symbols must be
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    defined.
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#define SK_SCALAR_IS_FLOAT
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#define SK_SCALAR_IS_FIXED
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*  Somewhat independent of how SkScalar is implemented, Skia also wants to know
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if it can use floats at all. Naturally, if SK_SCALAR_IS_FLOAT is defined,
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    then so muse SK_CAN_USE_FLOAT, but if scalars are fixed, SK_CAN_USE_FLOAT
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    can go either way.
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#define SK_CAN_USE_FLOAT
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*  For some performance-critical scalar operations, skia will optionally work
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    around the standard float operators if it knows that the CPU does not have
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    native support for floats. If your environment uses software floating point,
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    define this flag.
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#define SK_SOFTWARE_FLOAT
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*  Skia has lots of debug-only code. Often this is just null checks or other
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    parameter checking, but sometimes it can be quite intrusive (e.g. check that
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    each 32bit pixel is in premultiplied form). This code can be very useful
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    during development, but will slow things down in a shipping product.
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    By default, these mutually exclusive flags are defined in SkPreConfig.h,
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    based on the presence or absence of NDEBUG, but that decision can be changed
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    here.
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#define SK_DEBUG
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#define SK_RELEASE
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*  If, in debugging mode, Skia needs to stop (presumably to invoke a debugger)
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    it will call SK_CRASH(). If this is not defined it, it is defined in
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    SkPostConfig.h to write to an illegal address
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#define SK_CRASH() *(int *)(uintptr_t)0 = 0
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*  preconfig will have attempted to determine the endianness of the system,
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    but you can change these mutually exclusive flags here.
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#define SK_CPU_BENDIAN
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#define SK_CPU_LENDIAN
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*  Some compilers don't support long long for 64bit integers. If yours does
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    not, define this to the appropriate type.
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#define SkLONGLONG int64_t
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*  Some envorinments do not suport writable globals (eek!). If yours does not,
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    define this flag.
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#define SK_USE_RUNTIME_GLOBALS
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*  If zlib is available and you want to support the flate compression
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    algorithm (used in PDF generation), define SK_ZLIB_INCLUDE to be the
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    include path.
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#define SK_ZLIB_INCLUDE <zlib.h>
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SK_ZLIB_INCLUDE "third_party/zlib/zlib.h"
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*  Define this to allow PDF scalars above 32k.  The PDF/A spec doesn't allow
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    them, but modern PDF interpreters should handle them just fine.
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#define SK_ALLOW_LARGE_PDF_SCALARS
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*  Define this to provide font subsetter for font subsetting when generating
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PDF documents.
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SK_SFNTLY_SUBSETTER \
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    "third_party/sfntly/cpp/src/sample/chromium/font_subsetter.h"
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*  To write debug messages to a console, skia will call SkDebugf(...) following
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    printf conventions (e.g. const char* format, ...). If you want to redirect
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    this to something other than printf, define yours here
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//#define SkDebugf(...)  MyFunction(__VA_ARGS__)
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*  If SK_DEBUG is defined, then you can optionally define SK_SUPPORT_UNITTEST
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    which will run additional self-tests at startup. These can take a long time,
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    so this flag is optional.
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef SK_DEBUG
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SK_SUPPORT_UNITTEST
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* If your system embeds skia and has complex event logging, define this
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   symbol to name a file that maps the following macros to your system's
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   equivalents:
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       SK_TRACE_EVENT0(event)
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       SK_TRACE_EVENT1(event, name1, value1)
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       SK_TRACE_EVENT2(event, name1, value1, name2, value2)
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   src/utils/SkDebugTrace.h has a trivial implementation that writes to
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   the debug output stream. If SK_USER_TRACE_INCLUDE_FILE is not defined,
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   SkTrace.h will define the above three macros to do nothing.
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef SK_USER_TRACE_INCLUDE_FILE
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ===== Begin Chrome-specific definitions =====
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1551e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#ifdef SK_DEBUG
1561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#define SK_REF_CNT_MIXIN_INCLUDE "sk_ref_cnt_ext_debug.h"
1571e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#else
1581e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#define SK_REF_CNT_MIXIN_INCLUDE "sk_ref_cnt_ext_release.h"
1591e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#endif
1601e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SK_SCALAR_IS_FLOAT
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef SK_SCALAR_IS_FIXED
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#define SK_MSCALAR_IS_FLOAT
1654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#undef SK_MSCALAR_IS_DOUBLE
1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define GR_MAX_OFFSCREEN_AA_DIM     512
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Log the file and line number for assertions.
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SkDebugf(...) SkDebugf_FileLine(__FILE__, __LINE__, false, __VA_ARGS__)
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SK_API void SkDebugf_FileLine(const char* file, int line, bool fatal,
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              const char* format, ...);
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Marking the debug print as "fatal" will cause a debug break, so we don't need
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// a separate crash call here.
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SK_DEBUGBREAK(cond) do { if (!(cond)) { \
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    SkDebugf_FileLine(__FILE__, __LINE__, true, \
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    "%s:%d: failed assertion \"%s\"\n", \
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    __FILE__, __LINE__, #cond); } } while (false)
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(ANDROID)   // On Android, we use the skia default settings.
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SK_A32_SHIFT    24
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SK_R32_SHIFT    16
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SK_G32_SHIFT    8
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SK_B32_SHIFT    0
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(SK_BUILD_FOR_WIN32)
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SK_BUILD_FOR_WIN
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Skia uses this deprecated bzero function to fill zeros into a string.
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define bzero(str, len) memset(str, 0, len)
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(SK_BUILD_FOR_MAC)
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SK_CPU_LENDIAN
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef  SK_CPU_BENDIAN
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(SK_BUILD_FOR_UNIX)
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Prefer FreeType's emboldening algorithm to Skia's
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO: skia used to just use hairline, but has improved since then, so
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// we should revisit this choice...
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SK_USE_FREETYPE_EMBOLDEN
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef SK_CPU_BENDIAN
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Above we set the order for ARGB channels in registers. I suspect that, on
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// big endian machines, you can keep this the same and everything will work.
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The in-memory order will be different, of course, but as long as everything
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// is reading memory as words rather than bytes, it will all work. However, if
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// you find that colours are messed up I thought that I would leave a helpful
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// locator for you. Also see the comments in
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// base/gfx/bitmap_platform_device_linux.h
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#error Read the comment at this location
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The default crash macro writes to badbeef which can cause some strange
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// problems. Instead, pipe this through to the logging function as a fatal
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// assertion.
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SK_CRASH() SkDebugf_FileLine(__FILE__, __LINE__, true, "SK_CRASH")
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Uncomment the following line to forward skia trace events to Chrome
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// tracing.
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// #define SK_USER_TRACE_INCLUDE_FILE "skia/ext/skia_trace_shim.h"
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ===== End Chrome-specific definitions =====
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
232