| Index: skia/config/SkUserConfig.h
|
| ===================================================================
|
| --- skia/config/SkUserConfig.h (revision 0)
|
| +++ skia/config/SkUserConfig.h (revision 0)
|
| @@ -0,0 +1,222 @@
|
| +/*
|
| + * Copyright (C) 2006 The Android Open Source Project
|
| + *
|
| + * Licensed under the Apache License, Version 2.0 (the "License");
|
| + * you may not use this file except in compliance with the License.
|
| + * You may obtain a copy of the License at
|
| + *
|
| + * http://www.apache.org/licenses/LICENSE-2.0
|
| + *
|
| + * Unless required by applicable law or agreed to in writing, software
|
| + * distributed under the License is distributed on an "AS IS" BASIS,
|
| + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| + * See the License for the specific language governing permissions and
|
| + * limitations under the License.
|
| + */
|
| +
|
| +#ifndef SkUserConfig_DEFINED
|
| +#define SkUserConfig_DEFINED
|
| +
|
| +/* SkTypes.h, the root of the public header files, does the following trick:
|
| +
|
| + #include <SkPreConfig.h>
|
| + #include <SkUserConfig.h>
|
| + #include <SkPostConfig.h>
|
| +
|
| + SkPreConfig.h runs first, and it is responsible for initializing certain
|
| + skia defines.
|
| +
|
| + SkPostConfig.h runs last, and its job is to just check that the final
|
| + defines are consistent (i.e. that we don't have mutually conflicting
|
| + defines).
|
| +
|
| + SkUserConfig.h (this file) runs in the middle. It gets to change or augment
|
| + the list of flags initially set in preconfig, and then postconfig checks
|
| + that everything still makes sense.
|
| +
|
| + Below are optional defines that add, subtract, or change default behavior
|
| + in Skia. Your port can locally edit this file to enable/disable flags as
|
| + you choose, or these can be delared on your command line (i.e. -Dfoo).
|
| +
|
| + By default, this include file will always default to having all of the flags
|
| + commented out, so including it will have no effect.
|
| +*/
|
| +
|
| +///////////////////////////////////////////////////////////////////////////////
|
| +
|
| +/* Scalars (the fractional value type in skia) can be implemented either as
|
| + floats or 16.16 integers (fixed). Exactly one of these two symbols must be
|
| + defined.
|
| +*/
|
| +//#define SK_SCALAR_IS_FLOAT
|
| +//#define SK_SCALAR_IS_FIXED
|
| +
|
| +
|
| +/* Somewhat independent of how SkScalar is implemented, Skia also wants to know
|
| + if it can use floats at all. Naturally, if SK_SCALAR_IS_FLOAT is defined,
|
| + then so muse SK_CAN_USE_FLOAT, but if scalars are fixed, SK_CAN_USE_FLOAT
|
| + can go either way.
|
| + */
|
| +//#define SK_CAN_USE_FLOAT
|
| +
|
| +/* For some performance-critical scalar operations, skia will optionally work
|
| + around the standard float operators if it knows that the CPU does not have
|
| + native support for floats. If your environment uses software floating point,
|
| + define this flag.
|
| + */
|
| +//#define SK_SOFTWARE_FLOAT
|
| +
|
| +
|
| +/* Skia has lots of debug-only code. Often this is just null checks or other
|
| + parameter checking, but sometimes it can be quite intrusive (e.g. check that
|
| + each 32bit pixel is in premultiplied form). This code can be very useful
|
| + during development, but will slow things down in a shipping product.
|
| +
|
| + By default, these mutually exclusive flags are defined in SkPreConfig.h,
|
| + based on the presence or absence of NDEBUG, but that decision can be changed
|
| + here.
|
| + */
|
| +//#define SK_DEBUG
|
| +//#define SK_RELEASE
|
| +
|
| +
|
| +/* If, in debugging mode, Skia needs to stop (presumably to invoke a debugger)
|
| + it will call SK_CRASH(). If this is not defined it, it is defined in
|
| + SkPostConfig.h to write to an illegal address
|
| + */
|
| +//#define SK_CRASH() *(int *)(uintptr_t)0 = 0
|
| +
|
| +
|
| +/* preconfig will have attempted to determine the endianness of the system,
|
| + but you can change these mutually exclusive flags here.
|
| + */
|
| +//#define SK_CPU_BENDIAN
|
| +//#define SK_CPU_LENDIAN
|
| +
|
| +
|
| +/* Some compilers don't support long long for 64bit integers. If yours does
|
| + not, define this to the appropriate type.
|
| + */
|
| +//#define SkLONGLONG int64_t
|
| +
|
| +
|
| +/* Some envorinments do not suport writable globals (eek!). If yours does not,
|
| + define this flag.
|
| + */
|
| +//#define SK_USE_RUNTIME_GLOBALS
|
| +
|
| +
|
| +/* To write debug messages to a console, skia will call SkDebugf(...) following
|
| + printf conventions (e.g. const char* format, ...). If you want to redirect
|
| + this to something other than printf, define yours here
|
| + */
|
| +//#define SkDebugf(...) MyFunction(__VA_ARGS__)
|
| +
|
| +
|
| +/* If SK_DEBUG is defined, then you can optionally define SK_SUPPORT_UNITTEST
|
| + which will run additional self-tests at startup. These can take a long time,
|
| + so this flag is optional.
|
| + */
|
| +#ifdef SK_DEBUG
|
| +#define SK_SUPPORT_UNITTEST
|
| +#endif
|
| +
|
| +// ===== Begin Chrome-specific definitions =====
|
| +
|
| +#define SK_SCALAR_IS_FLOAT
|
| +#undef SK_SCALAR_IS_FIXED
|
| +
|
| +// Log the file and line number for assertions.
|
| +#define SkDebugf(...) SkDebugf_FileLine(__FILE__, __LINE__, false, __VA_ARGS__)
|
| +void SkDebugf_FileLine(const char* file, int line, bool fatal,
|
| + const char* format, ...);
|
| +
|
| +// Marking the debug print as "fatal" will cause a debug break, so we don't need
|
| +// a separate crash call here.
|
| +#define SK_DEBUGBREAK(cond) do { if (!(cond)) { \
|
| + SkDebugf_FileLine(__FILE__, __LINE__, true, \
|
| + "%s:%d: failed assertion \"%s\"\n", \
|
| + __FILE__, __LINE__, #cond); } } while (false)
|
| +
|
| +#if defined(SK_BUILD_FOR_WIN32)
|
| +
|
| +#define SK_BUILD_FOR_WIN
|
| +
|
| +// VC8 doesn't support stdint.h, so we define those types here.
|
| +#define SK_IGNORE_STDINT_DOT_H
|
| +typedef signed char int8_t;
|
| +typedef unsigned char uint8_t;
|
| +typedef short int16_t;
|
| +typedef unsigned short uint16_t;
|
| +typedef int int32_t;
|
| +typedef unsigned uint32_t;
|
| +#define SK_A32_SHIFT 24
|
| +#define SK_R32_SHIFT 16
|
| +#define SK_G32_SHIFT 8
|
| +#define SK_B32_SHIFT 0
|
| +
|
| +// VC doesn't support __restrict__, so make it a NOP.
|
| +#undef SK_RESTRICT
|
| +#define SK_RESTRICT
|
| +
|
| +// Skia uses this deprecated bzero function to fill zeros into a string.
|
| +#define bzero(str, len) memset(str, 0, len)
|
| +
|
| +#elif defined(SK_BUILD_FOR_MAC)
|
| +
|
| +#define SK_CPU_LENDIAN
|
| +#undef SK_CPU_BENDIAN
|
| +// we want (memory order) RGBA
|
| +#define SK_A32_SHIFT 24
|
| +#define SK_R32_SHIFT 0
|
| +#define SK_G32_SHIFT 8
|
| +#define SK_B32_SHIFT 16
|
| +
|
| +#elif defined(SK_BUILD_FOR_UNIX)
|
| +
|
| +#ifdef SK_CPU_BENDIAN
|
| +// Below we set the order for ARGB channels in registers. I suspect that, on
|
| +// big endian machines, you can keep this the same and everything will work.
|
| +// The in-memory order will be different, of course, but as long as everything
|
| +// is reading memory as words rather than bytes, it will all work. However, if
|
| +// you find that colours are messed up I thought that I would leave a helpful
|
| +// locator for you. Also see the comments in
|
| +// base/gfx/bitmap_platform_device_linux.h
|
| +#error Read the comment at this location
|
| +#endif
|
| +
|
| +// For Linux we want to match the most common X visual, which is
|
| +// ARGB (in registers)
|
| +#define SK_A32_SHIFT 24
|
| +#define SK_R32_SHIFT 16
|
| +#define SK_G32_SHIFT 8
|
| +#define SK_B32_SHIFT 0
|
| +
|
| +#endif
|
| +
|
| +// The default crash macro writes to badbeef which can cause some strange
|
| +// problems. Instead, pipe this through to the logging function as a fatal
|
| +// assertion.
|
| +#define SK_CRASH() SkDebugf_FileLine(__FILE__, __LINE__, true, "SK_CRASH")
|
| +
|
| +// TODO(brettw) bug 6373: Re-enable Skia assertions. This is blocked on fixing
|
| +// some of our transparency handling which generates purposely-invalid colors,
|
| +// in turn causing assertions.
|
| +//#ifndef NDEBUG
|
| +// #define SK_DEBUG
|
| +// #undef SK_RELEASE
|
| + #undef SK_SUPPORT_UNITTEST // This is only necessary in debug mode since
|
| + // we've disabled assertions. When we re-enable
|
| + // them, this line can be removed.
|
| +//#else
|
| + #define SK_RELEASE
|
| + #undef SK_DEBUG
|
| +//#endif
|
| +
|
| +// For now (and to avoid rebaselining 1700+ tests), we'll use the old version
|
| +// of SkAlpha255To256.
|
| +#define SK_USE_OLD_255_TO_256
|
| +
|
| +// ===== End Chrome-specific definitions =====
|
| +
|
| +#endif
|
|
|