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)
2295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef SK_ATOMICS_PLATFORM_H
2305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#  if defined(SK_BUILD_FOR_WIN)
2315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#    define SK_ATOMICS_PLATFORM_H "third_party/skia/src/ports/SkAtomics_win.h"
2325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#  elif defined(SK_BUILD_FOR_ANDROID_FRAMEWORK)
2335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#    define SK_ATOMICS_PLATFORM_H "third_party/skia/src/ports/SkAtomics_android.h"
2345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#  else
2355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#    define SK_ATOMICS_PLATFORM_H "third_party/skia/src/ports/SkAtomics_sync.h"
2365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#  endif
2375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif
2385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
2395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef SK_MUTEX_PLATFORM_H
2405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#  if defined(SK_BUILD_FOR_WIN)
2415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#    define SK_MUTEX_PLATFORM_H "third_party/skia/src/ports/SkMutex_win.h"
2425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#  else
2435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#    define SK_MUTEX_PLATFORM_H "third_party/skia/src/ports/SkMutex_pthread.h"
2445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#  endif
2455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif
2465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
247116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// These flags are no longer defined in Skia, but we have them (temporarily)
248116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// until we update our call-sites (typically these are for API changes).
249116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch//
250116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Remove these as we update our sites.
251116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch//
2521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef    SK_SUPPORT_LEGACY_GETTOPDEVICE
2531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#   define SK_SUPPORT_LEGACY_GETTOPDEVICE
2541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
2551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef    SK_SUPPORT_LEGACY_GETDEVICE
2571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#   define SK_SUPPORT_LEGACY_GETDEVICE
2581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
2591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef    SK_SUPPORT_LEGACY_PUBLIC_IMAGEINFO_FIELDS
2611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#   define SK_SUPPORT_LEGACY_PUBLIC_IMAGEINFO_FIELDS
2621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
2631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef    SK_IGNORE_PROPER_FRACTIONAL_SCALING
2651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#   define SK_IGNORE_PROPER_FRACTIONAL_SCALING
2661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
2671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef    SK_SUPPORT_LEGACY_PICTURE_CLONE
2691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#   define SK_SUPPORT_LEGACY_PICTURE_CLONE
2701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
2711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef    SK_IGNORE_ETC1_SUPPORT
2731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#   define SK_IGNORE_ETC1_SUPPORT
274116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif
275116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef    SK_IGNORE_GPU_DITHER
2771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#   define SK_IGNORE_GPU_DITHER
278116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif
279116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
2801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef    SK_SUPPORT_LEGACY_IMAGECACHE_NAME
2811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#   define SK_SUPPORT_LEGACY_IMAGECACHE_NAME
2821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
2831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef    SK_LEGACY_PICTURE_SIZE_API
2851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#   define SK_LEGACY_PICTURE_SIZE_API
2861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
2871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef    SK_LEGACY_PICTURE_DRAW_API
2891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#   define SK_LEGACY_PICTURE_DRAW_API
2901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
2911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Turns SkPicture::clone() into a simple "return SkRef(this);" as a way to
2941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// test the threadsafety of SkPicture playback.
2951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define SK_PICTURE_CLONE_NOOP 1
2961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
2971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Turns on new (nicer, hopefully faster) SkPicture backend.
2981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define SK_PICTURE_USE_SK_RECORD 1
2991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
3001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Run a few optimization passes over the SkRecord after recording.
3011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define SK_PICTURE_OPTIMIZE_SK_RECORD 1
3021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ===== End Chrome-specific definitions =====
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
306