src/java.desktop/share/native/libfreetype/src/base/ftlcdfil.c
author prr
Thu, 09 May 2019 16:09:39 -0700
changeset 54876 da3834261f0c
parent 50479 70e706c85f1d
permissions -rw-r--r--
8222362: Upgrade to Freetype 2.10.0 Reviewed-by: serb, erikj
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
     1
/****************************************************************************
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
     2
 *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
     3
 * ftlcdfil.c
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
     4
 *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
     5
 *   FreeType API for color filtering of subpixel bitmap glyphs (body).
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
     6
 *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
     7
 * Copyright (C) 2006-2019 by
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
     8
 * David Turner, Robert Wilhelm, and Werner Lemberg.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
     9
 *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    10
 * This file is part of the FreeType project, and may only be used,
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    11
 * modified, and distributed under the terms of the FreeType project
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    12
 * license, LICENSE.TXT.  By continuing to use, modify, or distribute
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    13
 * this file you indicate that you have read the license and
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    14
 * understand and accept it fully.
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    15
 *
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    16
 */
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    17
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    18
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    19
#include <ft2build.h>
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    20
#include FT_INTERNAL_DEBUG_H
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    21
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    22
#include FT_LCD_FILTER_H
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    23
#include FT_IMAGE_H
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    24
#include FT_INTERNAL_OBJECTS_H
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    25
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    26
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    27
#ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    28
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    29
/* define USE_LEGACY to implement the legacy filter */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    30
#define  USE_LEGACY
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    31
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    32
#define FT_SHIFTCLAMP( x )  ( x >>= 8, (FT_Byte)( x > 255 ? 255 : x ) )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    33
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    34
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    35
  /* add padding according to filter weights */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    36
  FT_BASE_DEF (void)
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    37
  ft_lcd_padding( FT_BBox*        cbox,
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    38
                  FT_GlyphSlot    slot,
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    39
                  FT_Render_Mode  mode )
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    40
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    41
    FT_Byte*                 lcd_weights;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    42
    FT_Bitmap_LcdFilterFunc  lcd_filter_func;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    43
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    44
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    45
    /* Per-face LCD filtering takes priority if set up. */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    46
    if ( slot->face && slot->face->internal->lcd_filter_func )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    47
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    48
      lcd_weights     = slot->face->internal->lcd_weights;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    49
      lcd_filter_func = slot->face->internal->lcd_filter_func;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    50
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    51
    else
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    52
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    53
      lcd_weights     = slot->library->lcd_weights;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    54
      lcd_filter_func = slot->library->lcd_filter_func;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    55
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    56
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    57
    if ( lcd_filter_func == ft_lcd_filter_fir )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    58
    {
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    59
      if ( mode == FT_RENDER_MODE_LCD )
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    60
      {
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    61
        cbox->xMin -= lcd_weights[0] ? 43 :
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    62
                      lcd_weights[1] ? 22 : 0;
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    63
        cbox->xMax += lcd_weights[4] ? 43 :
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    64
                      lcd_weights[3] ? 22 : 0;
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    65
      }
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    66
      else if ( mode == FT_RENDER_MODE_LCD_V )
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    67
      {
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    68
        cbox->yMin -= lcd_weights[0] ? 43 :
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    69
                      lcd_weights[1] ? 22 : 0;
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    70
        cbox->yMax += lcd_weights[4] ? 43 :
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    71
                      lcd_weights[3] ? 22 : 0;
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
    72
      }
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    73
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    74
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    75
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    76
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    77
  /* FIR filter used by the default and light filters */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    78
  FT_BASE_DEF( void )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    79
  ft_lcd_filter_fir( FT_Bitmap*           bitmap,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    80
                     FT_Render_Mode       mode,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    81
                     FT_LcdFiveTapFilter  weights )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    82
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    83
    FT_UInt   width  = (FT_UInt)bitmap->width;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    84
    FT_UInt   height = (FT_UInt)bitmap->rows;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    85
    FT_Int    pitch  = bitmap->pitch;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    86
    FT_Byte*  origin = bitmap->buffer;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    87
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    88
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    89
    /* take care of bitmap flow */
50479
70e706c85f1d 8203367: Upgrade to freetype 2.9.1
prr
parents: 49234
diff changeset
    90
    if ( pitch > 0 && height > 0 )
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    91
      origin += pitch * (FT_Int)( height - 1 );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    92
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    93
    /* horizontal in-place FIR filter */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    94
    if ( mode == FT_RENDER_MODE_LCD && width >= 2 )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    95
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    96
      FT_Byte*  line = origin;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    97
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    98
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
    99
      /* `fir' must be at least 32 bit wide, since the sum of */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   100
      /* the values in `weights' can exceed 0xFF              */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   101
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   102
      for ( ; height > 0; height--, line -= pitch )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   103
      {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   104
        FT_UInt  fir[5];
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   105
        FT_UInt  val, xx;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   106
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   107
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   108
        val    = line[0];
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   109
        fir[2] = weights[2] * val;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   110
        fir[3] = weights[3] * val;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   111
        fir[4] = weights[4] * val;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   112
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   113
        val    = line[1];
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   114
        fir[1] = fir[2] + weights[1] * val;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   115
        fir[2] = fir[3] + weights[2] * val;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   116
        fir[3] = fir[4] + weights[3] * val;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   117
        fir[4] =          weights[4] * val;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   118
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   119
        for ( xx = 2; xx < width; xx++ )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   120
        {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   121
          val    = line[xx];
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   122
          fir[0] = fir[1] + weights[0] * val;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   123
          fir[1] = fir[2] + weights[1] * val;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   124
          fir[2] = fir[3] + weights[2] * val;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   125
          fir[3] = fir[4] + weights[3] * val;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   126
          fir[4] =          weights[4] * val;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   127
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   128
          line[xx - 2] = FT_SHIFTCLAMP( fir[0] );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   129
        }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   130
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   131
        line[xx - 2] = FT_SHIFTCLAMP( fir[1] );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   132
        line[xx - 1] = FT_SHIFTCLAMP( fir[2] );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   133
      }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   134
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   135
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   136
    /* vertical in-place FIR filter */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   137
    else if ( mode == FT_RENDER_MODE_LCD_V && height >= 2 )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   138
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   139
      FT_Byte*  column = origin;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   140
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   141
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   142
      for ( ; width > 0; width--, column++ )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   143
      {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   144
        FT_Byte*  col = column;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   145
        FT_UInt   fir[5];
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   146
        FT_UInt   val, yy;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   147
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   148
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   149
        val    = col[0];
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   150
        fir[2] = weights[2] * val;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   151
        fir[3] = weights[3] * val;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   152
        fir[4] = weights[4] * val;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   153
        col   -= pitch;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   154
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   155
        val    = col[0];
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   156
        fir[1] = fir[2] + weights[1] * val;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   157
        fir[2] = fir[3] + weights[2] * val;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   158
        fir[3] = fir[4] + weights[3] * val;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   159
        fir[4] =          weights[4] * val;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   160
        col   -= pitch;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   161
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   162
        for ( yy = 2; yy < height; yy++, col -= pitch )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   163
        {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   164
          val    = col[0];
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   165
          fir[0] = fir[1] + weights[0] * val;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   166
          fir[1] = fir[2] + weights[1] * val;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   167
          fir[2] = fir[3] + weights[2] * val;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   168
          fir[3] = fir[4] + weights[3] * val;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   169
          fir[4] =          weights[4] * val;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   170
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   171
          col[pitch * 2]  = FT_SHIFTCLAMP( fir[0] );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   172
        }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   173
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   174
        col[pitch * 2]  = FT_SHIFTCLAMP( fir[1] );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   175
        col[pitch]      = FT_SHIFTCLAMP( fir[2] );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   176
      }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   177
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   178
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   179
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   180
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   181
#ifdef USE_LEGACY
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   182
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   183
  /* intra-pixel filter used by the legacy filter */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   184
  static void
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   185
  _ft_lcd_filter_legacy( FT_Bitmap*      bitmap,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   186
                         FT_Render_Mode  mode,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   187
                         FT_Byte*        weights )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   188
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   189
    FT_UInt   width  = (FT_UInt)bitmap->width;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   190
    FT_UInt   height = (FT_UInt)bitmap->rows;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   191
    FT_Int    pitch  = bitmap->pitch;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   192
    FT_Byte*  origin = bitmap->buffer;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   193
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   194
    static const unsigned int  filters[3][3] =
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   195
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   196
      { 65538 * 9/13, 65538 * 1/6, 65538 * 1/13 },
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   197
      { 65538 * 3/13, 65538 * 4/6, 65538 * 3/13 },
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   198
      { 65538 * 1/13, 65538 * 1/6, 65538 * 9/13 }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   199
    };
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   200
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   201
    FT_UNUSED( weights );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   202
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   203
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   204
    /* take care of bitmap flow */
50479
70e706c85f1d 8203367: Upgrade to freetype 2.9.1
prr
parents: 49234
diff changeset
   205
    if ( pitch > 0 && height > 0 )
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   206
      origin += pitch * (FT_Int)( height - 1 );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   207
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   208
    /* horizontal in-place intra-pixel filter */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   209
    if ( mode == FT_RENDER_MODE_LCD && width >= 3 )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   210
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   211
      FT_Byte*  line = origin;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   212
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   213
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   214
      for ( ; height > 0; height--, line -= pitch )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   215
      {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   216
        FT_UInt  xx;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   217
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   218
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   219
        for ( xx = 0; xx < width; xx += 3 )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   220
        {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   221
          FT_UInt  r, g, b;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   222
          FT_UInt  p;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   223
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   224
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   225
          p  = line[xx];
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   226
          r  = filters[0][0] * p;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   227
          g  = filters[0][1] * p;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   228
          b  = filters[0][2] * p;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   229
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   230
          p  = line[xx + 1];
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   231
          r += filters[1][0] * p;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   232
          g += filters[1][1] * p;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   233
          b += filters[1][2] * p;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   235
          p  = line[xx + 2];
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   236
          r += filters[2][0] * p;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   237
          g += filters[2][1] * p;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   238
          b += filters[2][2] * p;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   239
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   240
          line[xx]     = (FT_Byte)( r / 65536 );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   241
          line[xx + 1] = (FT_Byte)( g / 65536 );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   242
          line[xx + 2] = (FT_Byte)( b / 65536 );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   243
        }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   244
      }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   245
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   246
    else if ( mode == FT_RENDER_MODE_LCD_V && height >= 3 )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   247
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   248
      FT_Byte*  column = origin;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   249
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   250
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   251
      for ( ; width > 0; width--, column++ )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   252
      {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   253
        FT_Byte*  col = column - 2 * pitch;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   254
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   255
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   256
        for ( ; height > 0; height -= 3, col -= 3 * pitch )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   257
        {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   258
          FT_UInt  r, g, b;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   259
          FT_UInt  p;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   260
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   261
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   262
          p  = col[0];
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   263
          r  = filters[0][0] * p;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   264
          g  = filters[0][1] * p;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   265
          b  = filters[0][2] * p;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   266
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   267
          p  = col[pitch];
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   268
          r += filters[1][0] * p;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   269
          g += filters[1][1] * p;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   270
          b += filters[1][2] * p;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   271
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   272
          p  = col[pitch * 2];
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   273
          r += filters[2][0] * p;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   274
          g += filters[2][1] * p;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   275
          b += filters[2][2] * p;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   276
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   277
          col[0]         = (FT_Byte)( r / 65536 );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   278
          col[pitch]     = (FT_Byte)( g / 65536 );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   279
          col[pitch * 2] = (FT_Byte)( b / 65536 );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   280
        }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   281
      }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   282
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   283
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   284
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   285
#endif /* USE_LEGACY */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   286
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   287
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   288
  /* documentation in ftlcdfil.h */
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   289
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   290
  FT_EXPORT_DEF( FT_Error )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   291
  FT_Library_SetLcdFilterWeights( FT_Library      library,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   292
                                  unsigned char  *weights )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   293
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   294
    if ( !library )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   295
      return FT_THROW( Invalid_Library_Handle );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   296
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   297
    if ( !weights )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   298
      return FT_THROW( Invalid_Argument );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   299
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   300
    ft_memcpy( library->lcd_weights, weights, FT_LCD_FILTER_FIVE_TAPS );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   301
    library->lcd_filter_func = ft_lcd_filter_fir;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   302
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   303
    return FT_Err_Ok;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   304
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   305
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   306
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   307
  /* documentation in ftlcdfil.h */
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   308
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   309
  FT_EXPORT_DEF( FT_Error )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   310
  FT_Library_SetLcdFilter( FT_Library    library,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   311
                           FT_LcdFilter  filter )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   312
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   313
    static const FT_LcdFiveTapFilter  default_weights =
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   314
                   { 0x08, 0x4d, 0x56, 0x4d, 0x08 };
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   315
    static const FT_LcdFiveTapFilter  light_weights =
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   316
                   { 0x00, 0x55, 0x56, 0x55, 0x00 };
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   317
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   318
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   319
    if ( !library )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   320
      return FT_THROW( Invalid_Library_Handle );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   321
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   322
    switch ( filter )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   323
    {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   324
    case FT_LCD_FILTER_NONE:
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   325
      library->lcd_filter_func = NULL;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   326
      break;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   327
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   328
    case FT_LCD_FILTER_DEFAULT:
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   329
      ft_memcpy( library->lcd_weights,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   330
                 default_weights,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   331
                 FT_LCD_FILTER_FIVE_TAPS );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   332
      library->lcd_filter_func = ft_lcd_filter_fir;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   333
      break;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   334
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   335
    case FT_LCD_FILTER_LIGHT:
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   336
      ft_memcpy( library->lcd_weights,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   337
                 light_weights,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   338
                 FT_LCD_FILTER_FIVE_TAPS );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   339
      library->lcd_filter_func = ft_lcd_filter_fir;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   340
      break;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   341
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   342
#ifdef USE_LEGACY
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   343
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   344
    case FT_LCD_FILTER_LEGACY:
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   345
    case FT_LCD_FILTER_LEGACY1:
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   346
      library->lcd_filter_func = _ft_lcd_filter_legacy;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   347
      break;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   348
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   349
#endif
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   350
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   351
    default:
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   352
      return FT_THROW( Invalid_Argument );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   353
    }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   354
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   355
    return FT_Err_Ok;
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   356
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   357
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   358
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   359
  FT_EXPORT_DEF( FT_Error )
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   360
  FT_Library_SetLcdGeometry( FT_Library  library,
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   361
                             FT_Vector*  sub )
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   362
  {
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   363
    FT_UNUSED( library );
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   364
    FT_UNUSED( sub );
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   365
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   366
    return FT_THROW( Unimplemented_Feature );
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   367
  }
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   368
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   369
#else /* !FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   370
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   371
  /* add padding to accommodate outline shifts */
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   372
  FT_BASE_DEF (void)
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   373
  ft_lcd_padding( FT_BBox*        cbox,
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   374
                  FT_GlyphSlot    slot,
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   375
                  FT_Render_Mode  mode )
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   376
  {
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   377
    FT_Vector*  sub = slot->library->lcd_geometry;
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   378
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   379
    if ( mode == FT_RENDER_MODE_LCD )
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   380
    {
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   381
      cbox->xMin -= FT_MAX( FT_MAX( sub[0].x, sub[1].x ), sub[2].x );
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   382
      cbox->xMax -= FT_MIN( FT_MIN( sub[0].x, sub[1].x ), sub[2].x );
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   383
      cbox->yMin -= FT_MAX( FT_MAX( sub[0].y, sub[1].y ), sub[2].y );
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   384
      cbox->yMax -= FT_MIN( FT_MIN( sub[0].y, sub[1].y ), sub[2].y );
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   385
    }
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   386
    else if ( mode == FT_RENDER_MODE_LCD_V )
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   387
    {
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   388
      cbox->xMin -= FT_MAX( FT_MAX( sub[0].y, sub[1].y ), sub[2].y );
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   389
      cbox->xMax -= FT_MIN( FT_MIN( sub[0].y, sub[1].y ), sub[2].y );
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   390
      cbox->yMin += FT_MIN( FT_MIN( sub[0].x, sub[1].x ), sub[2].x );
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   391
      cbox->yMax += FT_MAX( FT_MAX( sub[0].x, sub[1].x ), sub[2].x );
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   392
    }
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   393
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   394
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   395
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   396
  FT_EXPORT_DEF( FT_Error )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   397
  FT_Library_SetLcdFilterWeights( FT_Library      library,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   398
                                  unsigned char  *weights )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   399
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   400
    FT_UNUSED( library );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   401
    FT_UNUSED( weights );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   402
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   403
    return FT_THROW( Unimplemented_Feature );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   404
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   405
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   406
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   407
  FT_EXPORT_DEF( FT_Error )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   408
  FT_Library_SetLcdFilter( FT_Library    library,
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   409
                           FT_LcdFilter  filter )
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   410
  {
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   411
    FT_UNUSED( library );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   412
    FT_UNUSED( filter );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   413
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   414
    return FT_THROW( Unimplemented_Feature );
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   415
  }
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   416
54876
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   417
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   418
  /* documentation in ftlcdfil.h */
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   419
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   420
  FT_EXPORT_DEF( FT_Error )
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   421
  FT_Library_SetLcdGeometry( FT_Library  library,
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   422
                             FT_Vector   sub[3] )
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   423
  {
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   424
    if ( !library )
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   425
      return FT_THROW( Invalid_Library_Handle );
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   426
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   427
    if ( !sub )
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   428
      return FT_THROW( Invalid_Argument );
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   429
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   430
    ft_memcpy( library->lcd_geometry, sub, 3 * sizeof( FT_Vector ) );
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   431
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   432
    return FT_THROW( Unimplemented_Feature );
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   433
  }
da3834261f0c 8222362: Upgrade to Freetype 2.10.0
prr
parents: 50479
diff changeset
   434
49234
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   435
#endif /* !FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   436
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   437
3375a8039fde 8193017: Import freetype sources into OpenJDK source tree
prr
parents:
diff changeset
   438
/* END */