28#if !(defined(ENABLE_BCB) || defined(ENABLE_KYRA) || defined(ENABLE_SCI) || defined(ENABLE_SCUMM) || defined(ENABLE_SAGA) || defined(ENABLE_AGOS) || defined(DYNAMIC_MODULES))
34#ifndef GRAPHICS_SJIS_H
35#define GRAPHICS_SJIS_H
42#define DISABLE_FLIPPED_MODE
45#include "common/scummsys.h"
46#include "common/platform.h"
66 virtual ~FontSJIS() {}
79 static FontSJIS *createFont(
const Common::Platform platform = Common::kPlatformUnknown);
84 virtual bool loadData() = 0;
100 virtual void setDrawingMode(DrawingMode mode) {}
105 virtual void toggleFatPrint(
bool enable) {}
110 virtual void toggleFlippedMode(
bool enable) {}
115 virtual void setCharSpacing(
int spacing) {}
116 virtual void setLineSpacing(
int spacing) {}
121 virtual uint getFontHeight()
const = 0;
126 virtual uint getMaxFontWidth()
const = 0;
131 virtual uint getCharWidth(uint16 ch)
const = 0;
136 void drawChar(
Graphics::Surface &dst, uint16 ch,
int x,
int y, uint32 c1, uint32 c2)
const;
150 virtual void drawChar(
void *dst, uint16 ch,
int pitch,
int bpp, uint32 c1, uint32 c2,
int maxW,
int maxH)
const = 0;
156class FontSJISBase :
public FontSJIS {
160 void setDrawingMode(DrawingMode mode)
override;
162 void toggleFlippedMode(
bool enable)
override;
164 void toggleFatPrint(
bool enable)
override;
166 uint getFontHeight()
const override;
168 uint getMaxFontWidth()
const override;
170 uint getCharWidth(uint16 ch)
const override;
172 void drawChar(
void *dst, uint16 ch,
int pitch,
int bpp, uint32 c1, uint32 c2,
int maxW,
int maxH)
const override;
174 template<
typename Color>
175 void blitCharacter(
const uint8 *glyph,
const int w,
const int h, uint8 *dst,
int pitch, Color c)
const;
176 void createOutline(uint8 *outline,
const uint8 *glyph,
const int w,
const int h)
const;
178#ifndef DISABLE_FLIPPED_MODE
181 const uint8 *flipCharacter(
const uint8 *glyph,
const int w)
const;
182 mutable uint8 _tempGlyph[32];
184 const uint8 *makeFatCharacter(
const uint8 *glyph,
const int w)
const;
185 mutable uint8 _tempGlyph2[32];
187 DrawingMode _drawMode;
188 bool _flippedMode, _fatPrint;
189 int _fontWidth, _fontHeight;
190 uint8 _bitPosNewLineMask;
192 bool isASCII(uint16 ch)
const;
194 virtual const uint8 *getCharData(uint16 c)
const = 0;
196 enum DrawingFeature {
197 kFeatDefault = 1 << 0,
198 kFeatOutline = 1 << 1,
199 kFeatShadow = 1 << 2,
200 kFeatFMTownsShadow = 1 << 3,
201 kFeatFlipped = 1 << 4,
202 kFeatFatPrint = 1 << 5
205 virtual bool hasFeature(
int feat)
const = 0;
213class FontTowns :
public FontSJISBase {
218 bool loadData()
override;
220 static int getCharFMTChunk(uint16 ch);
224 kFont16x16Chars = 7808,
228 uint8 _fontData16x16[kFont16x16Chars * 32];
229 uint8 _fontData8x16[kFont8x16Chars * 32];
231 const uint8 *getCharData(uint16 c)
const override;
233 bool hasFeature(
int feat)
const override;
241class FontPC98 :
public FontSJISBase {
246 bool loadData()
override;
254 const uint8 *getCharData(uint16 c)
const override;
258 kFont16x16Chars = 8831,
262 uint8 _fontData16x16[kFont16x16Chars * 32];
263 uint8 _fontData8x16[kFont8x16Chars * 16];
265 bool hasFeature(
int feat)
const override;
273class FontPCEngine :
public FontSJISBase {
278 bool loadData()
override;
281 kFont12x12Chars = 3418
284 uint8 _fontData12x12[kFont12x12Chars * 18];
286 const uint8 *getCharData(uint16 c)
const override;
288 bool hasFeature(
int feat)
const override;
294class FontSjisSVM :
public FontSJISBase {
302 bool loadData()
override;
304 uint8 *_fontData16x16;
305 uint _fontData16x16Size;
307 uint8 *_fontData8x16;
308 uint _fontData8x16Size;
310 uint8 *_fontData12x12;
311 uint _fontData12x12Size;
313 const uint8 *getCharData(uint16 c)
const override;
315 bool hasFeature(
int feat)
const override;
317 const uint8 *getCharDataPCE(uint16 c)
const;
318 const uint8 *getCharDataDefault(uint16 c)
const;
320 void mapKANJIChar(
const uint8 fB,
const uint8 sB,
int &base,
int &index)
const;
Definition: formatinfo.h:28