1 /*
   2  * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 #ifndef FontScalerDefsIncludesDefined
  27 #define FontScalerDefsIncludesDefined
  28 
  29 #include "AccelGlyphCache.h"
  30 
  31 #ifdef  __cplusplus
  32 extern "C" {
  33 #endif
  34 
  35 #ifdef _LP64
  36 typedef unsigned int            UInt32;
  37 typedef int                     Int32;
  38 #else
  39 typedef unsigned long           UInt32;
  40 typedef long                    Int32;
  41 #endif
  42 typedef unsigned short          UInt16;
  43 typedef short                   Int16;
  44 typedef unsigned char           UInt8;
  45 
  46 typedef UInt8                   Byte;
  47 typedef Int32                   hsFixed;
  48 typedef Int32                   hsFract;
  49 typedef UInt32                  Bool32;
  50 
  51 #ifndef  __cplusplus
  52 #ifndef false
  53          #define false           0
  54 #endif
  55 
  56 #ifndef true
  57         #define true            1
  58 #endif
  59 #endif
  60 
  61   /* managed: 1 means the glyph has a hardware cached
  62    * copy, and its freeing is managed by the usual
  63    * 2D disposer code.
  64    * A value of 0 means its either unaccelerated (and so has no cellInfos)
  65    * or we want to free this in a different way.
  66    * The field uses previously unused padding, so doesn't enlarge
  67    * the structure.
  68    */
  69 #define UNMANAGED_GLYPH 0
  70 #define MANAGED_GLYPH   1
  71 typedef struct GlyphInfo {
  72     float        advanceX;
  73     float        advanceY;
  74     UInt16       width;
  75     UInt16       height;
  76     UInt16       rowBytes;
  77     UInt8         managed;
  78     float        topLeftX;
  79     float        topLeftY;
  80     void         *cellInfo;
  81     UInt8        *image;
  82 } GlyphInfo;
  83 
  84   /* We use fffe and ffff as meaning invisible glyphs which have no
  85    * image, or advance and an empty outline.
  86    * Since there are no valid glyphs with this great a value (watch out for
  87    * large fonts in the future!) we can safely use check for >= this value
  88    */
  89 #define INVISIBLE_GLYPHS 0xfffe
  90 
  91 #include "sunfontids.h"
  92 
  93 /* If font is malformed then scaler context created by particular scaler
  94  * will be replaced by null scaler context.
  95  * Note that this context is not compatible with structure of the context
  96  * object used by particular scaler. Therefore, before using context
  97  * scaler has to check if it is NullContext.
  98  *
  99  * Note that in theory request with NullContext should not even reach native
 100  * scaler.
 101  *
 102  * It seems that the only reason to support NullContext is to simplify
 103  * FileFontStrike logic - presence of context is used as marker to
 104  * free the memory.
 105 */
 106 JNIEXPORT int isNullScalerContext(void *context);
 107 
 108 #ifdef  __cplusplus
 109 }
 110 #endif
 111 
 112 #endif