change hud to use antigrain, fix antigrain compiling in linux (for now, libagg is mandatory; give me a preprocessor symbol and i will make it optional) and move antigrain source back into windows directory
This commit is contained in:
parent
04f79fb224
commit
64350887cc
|
@ -32,8 +32,8 @@
|
|||
#include "debug.h"
|
||||
#include "render3D.h"
|
||||
#include "gfx3d.h"
|
||||
#include "GPU_osd.h"
|
||||
#include "debug.h"
|
||||
#include "GPU_osd.h"
|
||||
#include "NDSSystem.h"
|
||||
#include "readwrite.h"
|
||||
|
||||
|
@ -52,12 +52,10 @@ GPU::MosaicLookup GPU::mosaicLookup;
|
|||
//#define DEBUG_TRI
|
||||
|
||||
CACHE_ALIGN u8 GPU_screen[4*256*192];
|
||||
CACHE_ALIGN u8 GPU_tempScreen[4*256*192];
|
||||
CACHE_ALIGN u8 *GPU_tempScanline;
|
||||
|
||||
CACHE_ALIGN u8 sprWin[256];
|
||||
|
||||
OSDCLASS *osd = NULL;
|
||||
|
||||
u16 gpu_angle = 0;
|
||||
|
||||
|
@ -2193,7 +2191,7 @@ int Screen_Init(int coreid)
|
|||
MainScreen.gpu = GPU_Init(0);
|
||||
SubScreen.gpu = GPU_Init(1);
|
||||
|
||||
memset(GPU_tempScreen, 0, sizeof(GPU_tempScreen));
|
||||
memset(GPU_screen, 0, sizeof(GPU_screen));
|
||||
for(int i = 0; i < (256*192*2); i++)
|
||||
((u16*)GPU_screen)[i] = 0x7FFF;
|
||||
disp_fifo.head = disp_fifo.tail = 0;
|
||||
|
@ -2209,7 +2207,7 @@ void Screen_Reset(void)
|
|||
GPU_Reset(MainScreen.gpu, 0);
|
||||
GPU_Reset(SubScreen.gpu, 1);
|
||||
|
||||
memset(GPU_tempScreen, 0, sizeof(GPU_tempScreen));
|
||||
memset(GPU_screen, 0, sizeof(GPU_screen));
|
||||
for(int i = 0; i < (256*192*2); i++)
|
||||
((u16*)GPU_screen)[i] = 0x7FFF;
|
||||
|
||||
|
@ -2673,7 +2671,7 @@ static INLINE void GPU_ligne_MasterBrightness(NDS_Screen * screen, u16 l)
|
|||
{
|
||||
GPU * gpu = screen->gpu;
|
||||
|
||||
u8 * dst = GPU_tempScreen + (screen->offset + l) * 512;
|
||||
u8 * dst = GPU_screen + (screen->offset + l) * 512;
|
||||
u16 i16;
|
||||
|
||||
//isn't it odd that we can set uselessly high factors here?
|
||||
|
@ -2830,7 +2828,7 @@ void GPU_ligne(NDS_Screen * screen, u16 l)
|
|||
//blacken the screen if it is turned off by the user
|
||||
if(!CommonSettings.showGpu.screens[gpu->core])
|
||||
{
|
||||
u8 * dst = GPU_tempScreen + (screen->offset + l) * 512;
|
||||
u8 * dst = GPU_screen + (screen->offset + l) * 512;
|
||||
memset(dst,0,512);
|
||||
return;
|
||||
}
|
||||
|
@ -2857,7 +2855,7 @@ void GPU_ligne(NDS_Screen * screen, u16 l)
|
|||
|
||||
//always generate the 2d+3d, no matter what we're displaying, since we may need to capture it
|
||||
//(if this seems inefficient in some cases, consider that the speed in those cases is not really a problem)
|
||||
GPU_tempScanline = screen->gpu->currDst = (u8 *)(GPU_tempScreen) + (screen->offset + l) * 512;
|
||||
GPU_tempScanline = screen->gpu->currDst = (u8 *)(GPU_screen) + (screen->offset + l) * 512;
|
||||
GPU_ligne_layer(screen, l);
|
||||
|
||||
if (gpu->core == GPU_MAIN)
|
||||
|
@ -2870,7 +2868,7 @@ void GPU_ligne(NDS_Screen * screen, u16 l)
|
|||
{
|
||||
case 0: // Display Off(Display white)
|
||||
{
|
||||
u8 * dst = GPU_tempScreen + (screen->offset + l) * 512;
|
||||
u8 * dst = GPU_screen + (screen->offset + l) * 512;
|
||||
|
||||
for (int i=0; i<256; i++)
|
||||
T2WriteWord(dst, i << 1, 0x7FFF);
|
||||
|
@ -2883,14 +2881,14 @@ void GPU_ligne(NDS_Screen * screen, u16 l)
|
|||
|
||||
case 2: // Display framebuffer
|
||||
{
|
||||
u8 * dst = GPU_tempScreen + (screen->offset + l) * 512;
|
||||
u8 * dst = GPU_screen + (screen->offset + l) * 512;
|
||||
u8 * src = gpu->VRAMaddr + (l*512);
|
||||
memcpy (dst, src, 512);
|
||||
}
|
||||
break;
|
||||
case 3: // Display memory FIFO
|
||||
{
|
||||
u8 * dst = GPU_tempScreen + (screen->offset + l) * 512;
|
||||
u8 * dst = GPU_screen + (screen->offset + l) * 512;
|
||||
for (int i=0; i < 128; i++)
|
||||
T1WriteLong(dst, i << 2, DISP_FIFOrecv() & 0x7FFF7FFF);
|
||||
}
|
||||
|
@ -3026,8 +3024,8 @@ template<bool MOSAIC> void GPU::modeRender(int layer)
|
|||
|
||||
void gpu_UpdateRender()
|
||||
{
|
||||
int x = 0, y = 0;
|
||||
u16 *src = (u16*)GPU_tempScreen;
|
||||
/*int x = 0, y = 0;
|
||||
u16 *src = (u16*)GPU_screen;
|
||||
u16 *dst = (u16*)GPU_screen;
|
||||
|
||||
switch (gpu_angle)
|
||||
|
@ -3064,7 +3062,7 @@ void gpu_UpdateRender()
|
|||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
void gpu_SetRotateScreen(u16 angle)
|
||||
|
|
|
@ -32,7 +32,6 @@
|
|||
#include "registers.h"
|
||||
#include "FIFO.h"
|
||||
#include "MMU.h"
|
||||
#include "GPU_osd.h"
|
||||
#include <iosfwd>
|
||||
|
||||
//#undef FORCEINLINE
|
||||
|
@ -868,7 +867,6 @@ static void REG_DISPx_pack_test(GPU * gpu)
|
|||
#endif
|
||||
|
||||
CACHE_ALIGN extern u8 GPU_screen[4*256*192];
|
||||
CACHE_ALIGN extern u8 GPU_tempScreen[4*256*192];
|
||||
|
||||
|
||||
GPU * GPU_Init(u8 l);
|
||||
|
@ -993,7 +991,5 @@ void gpu_SetRotateScreen(u16 angle);
|
|||
//#undef FORCEINLINE
|
||||
//#define FORCEINLINE __forceinline
|
||||
|
||||
extern OSDCLASS *osd;
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -29,18 +29,12 @@
|
|||
#include <time.h>
|
||||
#include "debug.h"
|
||||
|
||||
#include "softrender.h"
|
||||
#include "aggdraw.h"
|
||||
|
||||
#include "softrender_v3sysfont.h"
|
||||
#include "softrender_desmumefont.h"
|
||||
|
||||
using namespace softrender;
|
||||
|
||||
image screenshell;
|
||||
OSDCLASS *osd = NULL;
|
||||
|
||||
OSDCLASS::OSDCLASS(u8 core)
|
||||
{
|
||||
memset(screen, 0, sizeof(screen));
|
||||
memset(name,0,7);
|
||||
|
||||
mode=core;
|
||||
|
@ -49,7 +43,7 @@ OSDCLASS::OSDCLASS(u8 core)
|
|||
lastLineText=0;
|
||||
lineText_x = 5;
|
||||
lineText_y = 120;
|
||||
lineText_color = render51.MakeColor(255, 255, 255);
|
||||
lineText_color = AggColor(255, 255, 255);
|
||||
for (int i=0; i < OSD_MAX_LINES+1; i++)
|
||||
{
|
||||
lineText[i] = new char[1024];
|
||||
|
@ -73,18 +67,7 @@ OSDCLASS::OSDCLASS(u8 core)
|
|||
mode=255;
|
||||
}
|
||||
|
||||
screenshell.shell = true;
|
||||
screenshell.data = screen;
|
||||
screenshell.bpp = 15;
|
||||
screenshell.width = 256;
|
||||
screenshell.height = 384;
|
||||
screenshell.pitch = 256;
|
||||
screenshell.cx1 = 0;
|
||||
screenshell.cx2 = 256-1;
|
||||
screenshell.cy1 = 0;
|
||||
screenshell.cy2 = 384-1;
|
||||
|
||||
border(false);
|
||||
//border(false);
|
||||
|
||||
LOG("OSD_Init (%s)\n",name);
|
||||
}
|
||||
|
@ -109,39 +92,10 @@ void OSDCLASS::setOffset(u16 ofs)
|
|||
void OSDCLASS::setRotate(u16 angle)
|
||||
{
|
||||
rotAngle = angle;
|
||||
|
||||
switch(rotAngle)
|
||||
{
|
||||
case 0:
|
||||
case 180:
|
||||
{
|
||||
screenshell.width = 256;
|
||||
screenshell.height = 384;
|
||||
screenshell.pitch = 256;
|
||||
screenshell.cx1 = 0;
|
||||
screenshell.cx2 = 255;
|
||||
screenshell.cy1 = 0;
|
||||
screenshell.cy2 = 383;
|
||||
}
|
||||
break;
|
||||
case 90:
|
||||
case 270:
|
||||
{
|
||||
screenshell.width = 384;
|
||||
screenshell.height = 256;
|
||||
screenshell.pitch = 384;
|
||||
screenshell.cx1 = 0;
|
||||
screenshell.cx2 = 383;
|
||||
screenshell.cy1 = 0;
|
||||
screenshell.cy2 = 255;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void OSDCLASS::clear()
|
||||
{
|
||||
memset(screen, 0, sizeof(screen));
|
||||
needUpdate=false;
|
||||
}
|
||||
|
||||
|
@ -181,7 +135,8 @@ void OSDCLASS::update()
|
|||
{
|
||||
for (int i=0; i < lastLineText; i++)
|
||||
{
|
||||
render51.PrintString<DesmumeFont>(1,lineText_x,lineText_y+(i*16),lineColor[i],lineText[i],&screenshell);
|
||||
aggDraw.hud->lineColor(lineColor[i]);
|
||||
aggDraw.hud->renderTextDropshadowed(lineText_x,lineText_y+(i*16),lineText[i]);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -189,17 +144,6 @@ void OSDCLASS::update()
|
|||
if (!needUpdate) return;
|
||||
}
|
||||
}
|
||||
|
||||
u16 *dst = (u16*)GPU_screen;
|
||||
|
||||
if (mode!=255)
|
||||
dst+=offset*512;
|
||||
|
||||
for (int i=0; i<256*192*2; i++)
|
||||
{
|
||||
if(screen[i]&0x8000)
|
||||
T2WriteWord((u8*)dst,(i << 1), screen[i] );
|
||||
}
|
||||
}
|
||||
|
||||
void OSDCLASS::setListCoord(u16 x, u16 y)
|
||||
|
@ -210,7 +154,7 @@ void OSDCLASS::setListCoord(u16 x, u16 y)
|
|||
|
||||
void OSDCLASS::setLineColor(u8 r=255, u8 b=255, u8 g=255)
|
||||
{
|
||||
lineText_color = render51.MakeColor(r, g, b);
|
||||
lineText_color = AggColor(r,g,b);
|
||||
}
|
||||
|
||||
void OSDCLASS::addLine(const char *fmt, ...)
|
||||
|
@ -249,19 +193,17 @@ void OSDCLASS::addFixed(u16 x, u16 y, const char *fmt, ...)
|
|||
char msg[1024];
|
||||
|
||||
va_start(list,fmt);
|
||||
#if defined(_MSC_VER) || defined(__INTEL_COMPILER)
|
||||
_vsnprintf(msg,1023,fmt,list);
|
||||
#else
|
||||
vsnprintf(msg,1023,fmt,list);
|
||||
#endif
|
||||
vsnprintf(msg,1023,fmt,list);
|
||||
va_end(list);
|
||||
|
||||
render51.PrintString<DesmumeFont>(1,x,y,render51.MakeColor(255,255,255),msg,&screenshell);
|
||||
aggDraw.hud->lineColor(255,255,255);
|
||||
aggDraw.hud->renderTextDropshadowed(x,y,msg);
|
||||
|
||||
needUpdate = true;
|
||||
}
|
||||
|
||||
void OSDCLASS::border(bool enabled)
|
||||
{
|
||||
render51.setTextBoxBorder(enabled);
|
||||
//render51.setTextBoxBorder(enabled);
|
||||
}
|
||||
|
||||
|
|
|
@ -28,13 +28,14 @@
|
|||
#include <time.h>
|
||||
#include "types.h"
|
||||
|
||||
#include "aggdraw.h"
|
||||
|
||||
#define OSD_MAX_LINES 4
|
||||
#define OSD_TIMER_SECS 2
|
||||
|
||||
class OSDCLASS
|
||||
{
|
||||
private:
|
||||
u16 screen[256*192*2];
|
||||
u64 offset;
|
||||
u8 mode;
|
||||
|
||||
|
@ -42,11 +43,11 @@ private:
|
|||
|
||||
u16 lineText_x;
|
||||
u16 lineText_y;
|
||||
u32 lineText_color;
|
||||
AggColor lineText_color;
|
||||
u8 lastLineText;
|
||||
char *lineText[OSD_MAX_LINES+1];
|
||||
time_t lineTimer[OSD_MAX_LINES+1];
|
||||
u32 lineColor[OSD_MAX_LINES+1];
|
||||
AggColor lineColor[OSD_MAX_LINES+1];
|
||||
|
||||
bool needUpdate;
|
||||
|
||||
|
|
|
@ -33,8 +33,6 @@ libdesmume_a_SOURCES = \
|
|||
rtc.cpp rtc.h \
|
||||
saves.cpp saves.h \
|
||||
SPU.cpp SPU.h \
|
||||
softrender.cpp softrender.h softrender_config.h \
|
||||
softrender_v3sysfont.h softrender_desmumefont.h \
|
||||
matrix.cpp matrix.h \
|
||||
gfx3d.cpp gfx3d.h \
|
||||
texcache.cpp texcache.h \
|
||||
|
@ -50,7 +48,8 @@ libdesmume_a_SOURCES = \
|
|||
addons/compactFlash.cpp addons/gbagame.cpp addons/none.cpp addons/rumblepak.cpp addons/guitarGrip.cpp fs.h \
|
||||
cheatSystem.cpp cheatSystem.h \
|
||||
texcache.cpp texcache.h rasterize.cpp rasterize.h \
|
||||
version.h
|
||||
version.h \
|
||||
aggdraw.cpp
|
||||
if HAVE_GLIB
|
||||
libdesmume_a_SOURCES += commandline.h commandline.cpp
|
||||
endif
|
||||
|
@ -60,7 +59,7 @@ else
|
|||
libdesmume_a_SOURCES += mic.cpp
|
||||
endif
|
||||
if HAVE_LIBAGG
|
||||
libdesmume_a_SOURCES += aggdraw.cpp
|
||||
|
||||
endif
|
||||
if HAVE_LUA
|
||||
libdesmume_a_SOURCES += lua-engine.cpp
|
||||
|
|
|
@ -1143,7 +1143,7 @@ int NDS_WritePNG(const char *fname)
|
|||
int x, y;
|
||||
int width=256;
|
||||
int height=192*2;
|
||||
u16 * bmp = (u16 *)GPU_tempScreen;
|
||||
u16 * bmp = (u16 *)GPU_screen;
|
||||
FILE *pp=NULL;
|
||||
uint8 *compmem = NULL;
|
||||
uLongf compmemsize = (uLongf)( (height * (width + 1) * 3 * 1.001 + 1) + 12 );
|
||||
|
@ -1269,7 +1269,7 @@ int NDS_WriteBMP(const char *filename)
|
|||
bmpimgheader_struct imageheader;
|
||||
FILE *file;
|
||||
int i,j;
|
||||
u16 * bmp = (u16 *)GPU_tempScreen;
|
||||
u16 * bmp = (u16 *)GPU_screen;
|
||||
size_t elems_written = 0;
|
||||
|
||||
memset(&fileheader, 0, sizeof(fileheader));
|
||||
|
|
|
@ -23,11 +23,14 @@
|
|||
#ifndef AGG2D_INCLUDED
|
||||
#define AGG2D_INCLUDED
|
||||
|
||||
// With this define uncommented you can use FreeType font engine
|
||||
//we're not using vector fonts right now.
|
||||
//#define AGG2D_USE_VECTORFONTS
|
||||
|
||||
#ifdef AGG2D_USE_VECTORFONTS
|
||||
#if defined(UNDER_CE) || not defined(WIN32)
|
||||
#define AGG2D_USE_FREETYPE
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#pragma warning(disable: 4786)
|
||||
|
||||
|
@ -45,7 +48,6 @@
|
|||
#include "agg_renderer_scanline.h"
|
||||
#include "agg_span_gradient.h"
|
||||
#include "agg_span_image_filter_rgba.h"
|
||||
//#include "agg_span_image_resample_rgba.h"
|
||||
|
||||
//+ JME
|
||||
#include "agg_span_allocator.h"
|
||||
|
@ -58,6 +60,14 @@
|
|||
#include "agg_rounded_rect.h"
|
||||
#include "agg_font_cache_manager.h"
|
||||
|
||||
#include "agg_glyph_raster_bin.h"
|
||||
#include "agg_renderer_raster_text.h"
|
||||
#include "agg_embedded_raster_fonts.h"
|
||||
|
||||
|
||||
#include <string>
|
||||
|
||||
#ifdef AGG2D_USE_VECTORFONTS
|
||||
#ifdef AGG2D_USE_FREETYPE
|
||||
#ifndef WIN32
|
||||
#include "agg_font_freetype.h"
|
||||
|
@ -67,6 +77,7 @@
|
|||
#else
|
||||
#include "../font_win32_tt/agg_font_win32_tt.h"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include "agg_pixfmt_rgba.h"
|
||||
//+ JME
|
||||
|
@ -81,7 +92,7 @@
|
|||
|
||||
|
||||
template<typename Main, typename Pre>
|
||||
class PixFormatSet
|
||||
class PixFormatSetDeclaration
|
||||
{
|
||||
public:
|
||||
typedef Main PixFormat;
|
||||
|
@ -170,17 +181,18 @@ public:
|
|||
}
|
||||
int width() const { return renBuf.width(); }
|
||||
int height() const { return renBuf.height(); }
|
||||
AGG2D_TEMPLATE void premultiply()
|
||||
{
|
||||
PixFormat pixf(renBuf);
|
||||
pixf.premultiply();
|
||||
}
|
||||
|
||||
AGG2D_TEMPLATE void premultiply()
|
||||
{
|
||||
typename PixFormatSet::PixFormat pixf(renBuf);
|
||||
pixf.premultiply();
|
||||
}
|
||||
|
||||
AGG2D_TEMPLATE void demultiply()
|
||||
{
|
||||
PixFormat pixf(renBuf);
|
||||
pixf.demultiply();
|
||||
}
|
||||
{
|
||||
typename PixFormatSet::PixFormat pixf(renBuf);
|
||||
pixf.demultiply();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
@ -249,6 +261,7 @@ public:
|
|||
|
||||
};
|
||||
|
||||
template<typename,typename> class Agg2DRenderer;
|
||||
|
||||
template<typename PixFormatSet> class Agg2D : public Agg2DBase
|
||||
{
|
||||
|
@ -290,20 +303,22 @@ public:
|
|||
typedef agg::span_gradient<ColorType, agg::span_interpolator_linear<>, agg::gradient_x, GradientArray> LinearGradientSpan;
|
||||
typedef agg::span_gradient<ColorType, agg::span_interpolator_linear<>, agg::gradient_circle, GradientArray> RadialGradientSpan;
|
||||
|
||||
#ifdef AGG2D_USE_VECTORFONTS
|
||||
#ifdef AGG2D_USE_FREETYPE
|
||||
typedef agg::font_engine_freetype_int32 FontEngine;
|
||||
#else
|
||||
typedef agg::font_engine_win32_tt_int32 FontEngine;
|
||||
#endif
|
||||
|
||||
typedef agg::font_cache_manager<FontEngine> FontCacheManager;
|
||||
typedef FontCacheManager::gray8_adaptor_type FontRasterizer;
|
||||
typedef FontCacheManager::gray8_scanline_type FontScanline;
|
||||
#endif
|
||||
|
||||
typedef agg::conv_curve<agg::path_storage> ConvCurve;
|
||||
typedef agg::conv_stroke<ConvCurve> ConvStroke;
|
||||
typedef agg::conv_transform<ConvCurve> PathTransform;
|
||||
typedef agg::conv_transform<ConvStroke> StrokeTransform;
|
||||
|
||||
enum Gradient
|
||||
{
|
||||
Solid,
|
||||
|
@ -312,7 +327,7 @@ public:
|
|||
};
|
||||
|
||||
public:
|
||||
AGG2D_TEMPLATE_WITH_IMAGE friend class Agg2DRenderer;
|
||||
template<typename,typename> friend class Agg2DRenderer;
|
||||
|
||||
typedef ColorType Color;
|
||||
|
||||
|
@ -414,6 +429,7 @@ public:
|
|||
double antiAliasGamma() const;
|
||||
|
||||
void font(const agg::int8u* font) { m_font = font; }
|
||||
const agg::int8u* font() { return m_font; }
|
||||
|
||||
void fillColor(Color c);
|
||||
void fillColor(unsigned r, unsigned g, unsigned b, unsigned a = 255);
|
||||
|
@ -493,6 +509,7 @@ public:
|
|||
|
||||
// Text
|
||||
//-----------------------
|
||||
#ifdef AGG2D_USE_VECTORFONTS
|
||||
void flipText(bool flip);
|
||||
void font(const char* fileName, double height,
|
||||
bool bold = false,
|
||||
|
@ -501,6 +518,7 @@ public:
|
|||
double angle = 0.0);
|
||||
double fontHeight() const;
|
||||
double fontAscent() const;
|
||||
|
||||
void textAlignment(TextAlignment alignX, TextAlignment alignY);
|
||||
bool textHints() const;
|
||||
void textHints(bool hints);
|
||||
|
@ -511,7 +529,7 @@ public:
|
|||
|
||||
double textWidth(const char* str);
|
||||
void text(double x, double y, const char* str, bool roundOff=false, double dx=0.0, double dy=0.0);
|
||||
|
||||
#endif
|
||||
|
||||
// Path commands
|
||||
//-----------------------
|
||||
|
@ -592,7 +610,7 @@ public:
|
|||
lineTo(dstX1, dstY2);
|
||||
closePolygon();
|
||||
double parallelogram[6] = { dstX1, dstY1, dstX2, dstY1, dstX2, dstY2 };
|
||||
renderImage <ImagePixFormat> (img, imgX1, imgY1, imgX2, imgY2, parallelogram);
|
||||
renderImage <typename ImagePixFormatSet::ImagePixFormat> (img, imgX1, imgY1, imgX2, imgY2, parallelogram);
|
||||
}
|
||||
|
||||
AGG2D_IMAGE_TEMPLATE void transformImage(const TIMAGE& img,
|
||||
|
@ -693,49 +711,47 @@ public:
|
|||
|
||||
|
||||
void renderText(double dstX, double dstY, const std::string& str)
|
||||
{
|
||||
worldToScreen(dstX, dstY);
|
||||
PixFormat pixF(m_rbuf);
|
||||
//Rect r(imgX1, imgY1, imgX2, imgY2);
|
||||
|
||||
typedef agg::glyph_raster_bin<agg::rgba8> glyph_gen;
|
||||
glyph_gen glyph(0);
|
||||
|
||||
if(m_blendMode == BlendAlpha)
|
||||
{
|
||||
typedef agg::renderer_base<PixFormatPre> ren_base;
|
||||
agg::renderer_raster_htext_solid<ren_base, glyph_gen> rt(m_renBasePre,glyph);
|
||||
rt.color(m_lineColor);
|
||||
glyph.font(m_font);
|
||||
rt.render_text(dstX, dstY, str.c_str(), true); //flipy
|
||||
}
|
||||
else
|
||||
{
|
||||
typedef agg::renderer_base<PixFormatCompPre> ren_base;
|
||||
agg::renderer_raster_htext_solid<ren_base, glyph_gen> rt(m_renBaseCompPre,glyph);
|
||||
rt.color(m_lineColor);
|
||||
glyph.font(m_font);
|
||||
rt.render_text(dstX, dstY, str.c_str(), true); //flipy
|
||||
}
|
||||
worldToScreen(dstX, dstY);
|
||||
PixFormat pixF(m_rbuf);
|
||||
//Rect r(imgX1, imgY1, imgX2, imgY2);
|
||||
|
||||
typedef agg::glyph_raster_bin<agg::rgba8> glyph_gen;
|
||||
glyph_gen glyph(0);
|
||||
|
||||
}
|
||||
if(m_blendMode == BlendAlpha)
|
||||
{
|
||||
typedef agg::renderer_base<PixFormatPre> ren_base;
|
||||
agg::renderer_raster_htext_solid<ren_base, glyph_gen> rt(m_renBasePre,glyph);
|
||||
rt.color(m_lineColor);
|
||||
glyph.font(m_font);
|
||||
rt.render_text(dstX, dstY, str.c_str(), true); //flipy
|
||||
}
|
||||
else
|
||||
{
|
||||
typedef agg::renderer_base<PixFormatCompPre> ren_base;
|
||||
agg::renderer_raster_htext_solid<ren_base, glyph_gen> rt(m_renBaseCompPre,glyph);
|
||||
rt.color(m_lineColor);
|
||||
glyph.font(m_font);
|
||||
rt.render_text(dstX, dstY, str.c_str(), true); //flipy
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
AGG2D_IMAGE_TEMPLATE void blendImage(TIMAGE& img, double dstX, double dstY, unsigned alpha=255)
|
||||
{
|
||||
worldToScreen(dstX, dstY);
|
||||
PixFormat pixF(img.renBuf);
|
||||
m_renBasePre.blend_from(pixF, 0, int(dstX), int(dstY), alpha);
|
||||
if(m_blendMode == BlendAlpha)
|
||||
{
|
||||
m_renBasePre.blend_from(pixF, 0, int(dstX), int(dstY), alpha);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_renBaseCompPre.blend_from(pixF, 0, int(dstX), int(dstY), alpha);
|
||||
}
|
||||
}
|
||||
{
|
||||
worldToScreen(dstX, dstY);
|
||||
PixFormat pixF(img.renBuf);
|
||||
m_renBasePre.blend_from(pixF, 0, int(dstX), int(dstY), alpha);
|
||||
if(m_blendMode == BlendAlpha)
|
||||
{
|
||||
m_renBasePre.blend_from(pixF, 0, int(dstX), int(dstY), alpha);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_renBaseCompPre.blend_from(pixF, 0, int(dstX), int(dstY), alpha);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -777,38 +793,40 @@ public:
|
|||
private:
|
||||
void render(bool fillColor);
|
||||
|
||||
#ifdef AGG2D_USE_VECTORFONTS
|
||||
#if !defined( UNDER_CE )
|
||||
void render(FontRasterizer& ras, FontScanline& sl);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
void addLine(double x1, double y1, double x2, double y2);
|
||||
void updateRasterizerGamma();
|
||||
AGG2D_IMAGE_TEMPLATE void renderImage(const TIMAGE& img, int x1, int y1, int x2, int y2, const double* parl)
|
||||
{
|
||||
agg::trans_affine mtx((double)x1,
|
||||
(double)y1,
|
||||
(double)x2,
|
||||
(double)y2,
|
||||
parl);
|
||||
mtx *= m_transform;
|
||||
mtx.invert();
|
||||
{
|
||||
agg::trans_affine mtx((double)x1,
|
||||
(double)y1,
|
||||
(double)x2,
|
||||
(double)y2,
|
||||
parl);
|
||||
mtx *= m_transform;
|
||||
mtx.invert();
|
||||
|
||||
m_rasterizer.reset();
|
||||
m_rasterizer.add_path(m_pathTransform);
|
||||
m_rasterizer.reset();
|
||||
m_rasterizer.add_path(m_pathTransform);
|
||||
|
||||
typedef agg::span_interpolator_linear<agg::trans_affine> Interpolator;
|
||||
Interpolator interpolator(mtx);
|
||||
typedef agg::span_interpolator_linear<agg::trans_affine> Interpolator;
|
||||
Interpolator interpolator(mtx);
|
||||
|
||||
if(m_blendMode == BlendAlpha)
|
||||
{
|
||||
// JME audit -
|
||||
Agg2DRenderer<PixFormatSet,ImagePixFormatSet>::renderImage(*this, img, m_renBasePre, interpolator);
|
||||
}
|
||||
else
|
||||
{
|
||||
Agg2DRenderer<PixFormatSet,ImagePixFormatSet>::renderImage(*this, img, m_renBaseCompPre, interpolator);
|
||||
}
|
||||
}
|
||||
if(m_blendMode == BlendAlpha)
|
||||
{
|
||||
// JME audit -
|
||||
Agg2DRenderer<PixFormatSet,ImagePixFormatSet>::renderImage(*this, img, m_renBasePre, interpolator);
|
||||
}
|
||||
else
|
||||
{
|
||||
Agg2DRenderer<PixFormatSet,ImagePixFormatSet>::renderImage(*this, img, m_renBaseCompPre, interpolator);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void updateTransformations();
|
||||
|
@ -894,12 +912,13 @@ private:
|
|||
PathTransform m_pathTransform;
|
||||
StrokeTransform m_strokeTransform;
|
||||
|
||||
#ifdef AGG2D_USE_VECTORFONTS
|
||||
#ifndef AGG2D_USE_FREETYPE
|
||||
HDC m_fontDC;
|
||||
#endif
|
||||
FontEngine m_fontEngine;
|
||||
FontCacheManager m_fontCacheManager;
|
||||
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
// 11 Jul 2009 - significant refactors for introduction to desmume
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
#include "GPU.h"
|
||||
#include "agg2d.h"
|
||||
|
||||
static const double g_approxScale = 2.0;
|
||||
|
@ -39,9 +38,11 @@ static const double g_approxScale = 2.0;
|
|||
|
||||
AGG2D_TEMPLATE inline TAGG2D::~Agg2D()
|
||||
{
|
||||
#ifdef AGG2D_USE_VECTORFONTS
|
||||
#ifndef AGG2D_USE_FREETYPE
|
||||
::ReleaseDC(0, m_fontDC);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
AGG2D_TEMPLATE inline TAGG2D::Agg2D() :
|
||||
|
@ -97,7 +98,8 @@ AGG2D_TEMPLATE inline TAGG2D::Agg2D() :
|
|||
m_fontDescent(0.0),
|
||||
m_fontCacheType(RasterFontCache),
|
||||
|
||||
m_imageFilter(Bilinear),
|
||||
m_imageFilter(Bilinear), //less quality more speed
|
||||
//m_imageFilter(NoFilter),
|
||||
m_imageResample(NoResample),
|
||||
m_imageFilterLut(agg::image_filter_bilinear(), true),
|
||||
|
||||
|
@ -120,16 +122,17 @@ AGG2D_TEMPLATE inline TAGG2D::Agg2D() :
|
|||
m_convStroke(m_convCurve),
|
||||
|
||||
m_pathTransform(m_convCurve, m_transform),
|
||||
m_strokeTransform(m_convStroke, m_transform),
|
||||
m_strokeTransform(m_convStroke, m_transform)
|
||||
|
||||
#ifdef AGG2D_USE_VECTORFONTS
|
||||
#ifdef AGG2D_USE_FREETYPE
|
||||
m_fontEngine(),
|
||||
, m_fontEngine(),
|
||||
#else
|
||||
m_fontDC(::GetDC(0)),
|
||||
m_fontEngine(m_fontDC),
|
||||
#endif
|
||||
|
||||
m_fontCacheManager(m_fontEngine)
|
||||
#endif
|
||||
{
|
||||
lineCap(m_lineCap);
|
||||
lineJoin(m_lineJoin);
|
||||
|
@ -241,16 +244,21 @@ AGG2D_TEMPLATE void Agg2D AGG2D_TEMPLATE_ARG ::attach(unsigned char* buf, unsign
|
|||
m_renBasePre.reset_clipping(true);
|
||||
m_renBaseCompPre.reset_clipping(true);
|
||||
|
||||
//why is all this reset here???? seems silly.
|
||||
|
||||
resetTransformations();
|
||||
lineWidth(1.0),
|
||||
lineColor(0,0,0);
|
||||
fillColor(255,255,255);
|
||||
textAlignment(AlignLeft, AlignBottom);
|
||||
clipBox(0, 0, width, height);
|
||||
lineCap(CAP_ROUND);
|
||||
lineJoin(JOIN_ROUND);
|
||||
#ifdef AGG2D_USE_VECTORFONTS
|
||||
textAlignment(AlignLeft, AlignBottom);
|
||||
flipText(false);
|
||||
imageFilter(Bilinear);
|
||||
#endif
|
||||
imageFilter(Bilinear); //less quality more speed
|
||||
//imageFilter(NoFilter);
|
||||
imageResample(NoResample);
|
||||
m_masterAlpha = 1.0;
|
||||
m_antiAliasGamma = 1.0;
|
||||
|
@ -1055,6 +1063,8 @@ AGG2D_TEMPLATE void TAGG2D::polyline(double* xy, int numPoints)
|
|||
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
|
||||
#ifdef AGG2D_USE_VECTORFONTS
|
||||
AGG2D_TEMPLATE void TAGG2D::flipText(bool flip)
|
||||
{
|
||||
m_fontEngine.flip_y(flip);
|
||||
|
@ -1118,6 +1128,7 @@ AGG2D_TEMPLATE void TAGG2D::textAlignment(TextAlignment alignX, TextAlignment al
|
|||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
|
||||
AGG2D_TEMPLATE double TAGG2D::textWidth(const char* str, unsigned int len)
|
||||
{
|
||||
#if defined( UNDER_CE )
|
||||
|
@ -1359,7 +1370,7 @@ AGG2D_TEMPLATE void TAGG2D::text(double x, double y, const wchar_t* str, unsigne
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
AGG2D_TEMPLATE void TAGG2D::resetPath() { m_path.remove_all(); }
|
||||
|
@ -1643,18 +1654,18 @@ public:
|
|||
//- typedef agg::renderer_scanline_aa<BaseRenderer, TAGG2D::LinearGradientSpan> RendererLinearGradient;
|
||||
typedef agg::renderer_scanline_aa<BaseRenderer,
|
||||
span_allocator_type,
|
||||
TAGG2D::LinearGradientSpan> RendererLinearGradient;
|
||||
typename TAGG2D::LinearGradientSpan> RendererLinearGradient;
|
||||
//- typedef agg::renderer_scanline_aa<BaseRenderer, TAGG2D::RadialGradientSpan> RendererRadialGradient;
|
||||
typedef agg::renderer_scanline_aa<BaseRenderer,
|
||||
span_allocator_type,
|
||||
TAGG2D::RadialGradientSpan> RendererRadialGradient;
|
||||
typename TAGG2D::RadialGradientSpan> RendererRadialGradient;
|
||||
|
||||
if ((fillColor && gr.m_fillGradientFlag == TAGG2D::Linear) ||
|
||||
(!fillColor && gr.m_lineGradientFlag == TAGG2D::Linear))
|
||||
{
|
||||
if (fillColor)
|
||||
{
|
||||
TAGG2D::LinearGradientSpan span(/*gr.m_allocator, */
|
||||
typename TAGG2D::LinearGradientSpan span(/*gr.m_allocator, */
|
||||
gr.m_fillGradientInterpolator,
|
||||
gr.m_linearGradientFunction,
|
||||
gr.m_fillGradient,
|
||||
|
@ -1666,7 +1677,7 @@ public:
|
|||
}
|
||||
else
|
||||
{
|
||||
TAGG2D::LinearGradientSpan span(/*gr.m_allocator,*/
|
||||
typename TAGG2D::LinearGradientSpan span(/*gr.m_allocator,*/
|
||||
gr.m_lineGradientInterpolator,
|
||||
gr.m_linearGradientFunction,
|
||||
gr.m_lineGradient,
|
||||
|
@ -1684,7 +1695,7 @@ public:
|
|||
{
|
||||
if (fillColor)
|
||||
{
|
||||
TAGG2D::RadialGradientSpan span(/*gr.m_allocator, */
|
||||
typename TAGG2D::RadialGradientSpan span(/*gr.m_allocator, */
|
||||
gr.m_fillGradientInterpolator,
|
||||
gr.m_radialGradientFunction,
|
||||
gr.m_fillGradient,
|
||||
|
@ -1696,7 +1707,7 @@ public:
|
|||
}
|
||||
else
|
||||
{
|
||||
TAGG2D::RadialGradientSpan span(/*gr.m_allocator,*/
|
||||
typename TAGG2D::RadialGradientSpan span(/*gr.m_allocator,*/
|
||||
gr.m_lineGradientInterpolator,
|
||||
gr.m_radialGradientFunction,
|
||||
gr.m_lineGradient,
|
||||
|
@ -1727,20 +1738,20 @@ public:
|
|||
void convert(Color* span, int x, int y, unsigned len) const
|
||||
{
|
||||
unsigned l2;
|
||||
TAGG2D::Color* s2;
|
||||
typename TAGG2D::Color* s2;
|
||||
if(m_mode != TAGG2D::BlendDst)
|
||||
{
|
||||
l2 = len;
|
||||
s2 = span;
|
||||
typedef agg::comp_op_adaptor_clip_to_dst_rgba_pre<TAGG2D::Color, agg::order_rgba> OpType;
|
||||
typedef agg::comp_op_adaptor_clip_to_dst_rgba_pre<typename TAGG2D::Color, agg::order_rgba> OpType;
|
||||
do
|
||||
{
|
||||
OpType::blend_pix(m_mode,
|
||||
(TAGG2D::Color::value_type*)s2,
|
||||
(typename TAGG2D::Color::value_type*)s2,
|
||||
m_color.r,
|
||||
m_color.g,
|
||||
m_color.b,
|
||||
TAGG2D::Color::base_mask,
|
||||
TAGG2D::Color::base_mask,
|
||||
agg::cover_full);
|
||||
++s2;
|
||||
}
|
||||
|
@ -1777,12 +1788,12 @@ public:
|
|||
{
|
||||
// JME
|
||||
typedef agg::span_allocator<agg::rgba8> span_allocator_type;
|
||||
typedef agg::renderer_scanline_aa<BaseRenderer,span_allocator_type,TAGG2D::LinearGradientSpan> RendererLinearGradient;
|
||||
typedef agg::renderer_scanline_aa<BaseRenderer,span_allocator_type,TAGG2D::RadialGradientSpan> RendererRadialGradient;
|
||||
typedef agg::renderer_scanline_aa<BaseRenderer,span_allocator_type,typename TAGG2D::LinearGradientSpan> RendererLinearGradient;
|
||||
typedef agg::renderer_scanline_aa<BaseRenderer,span_allocator_type,typename TAGG2D::RadialGradientSpan> RendererRadialGradient;
|
||||
|
||||
if(gr.m_fillGradientFlag == TAGG2D::Linear)
|
||||
{
|
||||
TAGG2D::LinearGradientSpan span(
|
||||
typename TAGG2D::LinearGradientSpan span(
|
||||
gr.m_fillGradientInterpolator,
|
||||
gr.m_linearGradientFunction,
|
||||
gr.m_fillGradient,
|
||||
|
@ -1795,7 +1806,7 @@ public:
|
|||
{
|
||||
if(gr.m_fillGradientFlag == TAGG2D::Radial)
|
||||
{
|
||||
TAGG2D::RadialGradientSpan span(
|
||||
typename TAGG2D::RadialGradientSpan span(
|
||||
gr.m_fillGradientInterpolator,
|
||||
gr.m_radialGradientFunction,
|
||||
gr.m_fillGradient,
|
||||
|
@ -1823,20 +1834,23 @@ public:
|
|||
//! JME - have not quite figured which part of this is not const-correct
|
||||
// hence the cast.
|
||||
Image& imgc = const_cast<Image&>(img);
|
||||
ImagePixFormatSet::PixFormat img_pixf(imgc.renBuf);
|
||||
typedef agg::image_accessor_clone<ImagePixFormatSet::PixFormat> img_source_type;
|
||||
typename ImagePixFormatSet::PixFormat img_pixf(imgc.renBuf);
|
||||
typedef agg::image_accessor_clone<typename ImagePixFormatSet::PixFormat> img_source_type;
|
||||
img_source_type source(img_pixf);
|
||||
|
||||
SpanConvImageBlend blend(gr.m_imageBlendMode, gr.m_imageBlendColor);
|
||||
if(gr.m_imageFilter == TAGG2D::NoFilter)
|
||||
{
|
||||
|
||||
//modifications less quality more speed
|
||||
|
||||
typedef agg::span_image_filter_rgba_nn<img_source_type,Interpolator> SpanGenType;
|
||||
typedef agg::span_converter<SpanGenType,SpanConvImageBlend> SpanConvType;
|
||||
typedef agg::renderer_scanline_aa<BaseRenderer,TAGG2D::SpanAllocator,SpanGenType> RendererType;
|
||||
//typedef agg::span_converter<SpanGenType,SpanConvImageBlend> SpanConvType;
|
||||
typedef agg::renderer_scanline_aa<BaseRenderer,typename TAGG2D::SpanAllocator,SpanGenType> RendererType;
|
||||
//typedef agg::renderer_scanline_bin<BaseRenderer,TAGG2D::SpanAllocator,SpanGenType> RendererType;
|
||||
|
||||
SpanGenType sg(source,interpolator);
|
||||
SpanConvType sc(sg, blend);
|
||||
//SpanConvType sc(sg, blend);
|
||||
RendererType ri(renBase,gr.m_allocator,sg);
|
||||
agg::render_scanlines(gr.m_rasterizer, gr.m_scanline, ri);
|
||||
}
|
||||
|
@ -1857,7 +1871,7 @@ public:
|
|||
{
|
||||
typedef agg::span_image_resample_rgba_affine<img_source_type> SpanGenType;
|
||||
typedef agg::span_converter<SpanGenType,SpanConvImageBlend> SpanConvType;
|
||||
typedef agg::renderer_scanline_aa<BaseRenderer,TAGG2D::SpanAllocator,SpanGenType> RendererType;
|
||||
typedef agg::renderer_scanline_aa<BaseRenderer,typename TAGG2D::SpanAllocator,SpanGenType> RendererType;
|
||||
|
||||
SpanGenType sg(source,interpolator,gr.m_imageFilterLut);
|
||||
SpanConvType sc(sg, blend);
|
||||
|
@ -1871,7 +1885,7 @@ public:
|
|||
{
|
||||
typedef agg::span_image_filter_rgba_bilinear<img_source_type,Interpolator> SpanGenType;
|
||||
typedef agg::span_converter<SpanGenType,SpanConvImageBlend> SpanConvType;
|
||||
typedef agg::renderer_scanline_aa<BaseRenderer,TAGG2D::SpanAllocator,SpanGenType> RendererType;
|
||||
typedef agg::renderer_scanline_aa<BaseRenderer,typename TAGG2D::SpanAllocator,SpanGenType> RendererType;
|
||||
|
||||
SpanGenType sg(source,interpolator);
|
||||
SpanConvType sc(sg, blend);
|
||||
|
@ -1884,7 +1898,7 @@ public:
|
|||
{
|
||||
typedef agg::span_image_filter_rgba_2x2<img_source_type,Interpolator> SpanGenType;
|
||||
typedef agg::span_converter<SpanGenType,SpanConvImageBlend> SpanConvType;
|
||||
typedef agg::renderer_scanline_aa<BaseRenderer,TAGG2D::SpanAllocator,SpanGenType> RendererType;
|
||||
typedef agg::renderer_scanline_aa<BaseRenderer,typename TAGG2D::SpanAllocator,SpanGenType> RendererType;
|
||||
|
||||
SpanGenType sg(source,interpolator,gr.m_imageFilterLut);
|
||||
SpanConvType sc(sg, blend);
|
||||
|
@ -1895,7 +1909,7 @@ public:
|
|||
{
|
||||
typedef agg::span_image_filter_rgba<img_source_type,Interpolator> SpanGenType;
|
||||
typedef agg::span_converter<SpanGenType,SpanConvImageBlend> SpanConvType;
|
||||
typedef agg::renderer_scanline_aa<BaseRenderer,TAGG2D::SpanAllocator,SpanGenType> RendererType;
|
||||
typedef agg::renderer_scanline_aa<BaseRenderer,typename TAGG2D::SpanAllocator,SpanGenType> RendererType;
|
||||
SpanGenType sg(source,interpolator,gr.m_imageFilterLut);
|
||||
SpanConvType sc(sg, blend);
|
||||
RendererType ri(renBase,gr.m_allocator,sg);
|
||||
|
@ -1920,6 +1934,8 @@ AGG2D_TEMPLATE void TAGG2D::render(bool fillColor)
|
|||
TAGG2DRENDERER::render(*this, m_renBaseComp, m_renSolidComp, fillColor);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef AGG2D_USE_VECTORFONTS
|
||||
#if !defined( UNDER_CE )
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
|
@ -1936,10 +1952,10 @@ AGG2D_TEMPLATE void TAGG2D::render(FontRasterizer& ras, FontScanline& sl)
|
|||
}
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
AGG2D_TEMPLATE struct Agg2DRasterizerGamma
|
||||
struct Agg2DRasterizerGamma
|
||||
{
|
||||
|
||||
Agg2DRasterizerGamma(double alpha, double gamma) :
|
||||
|
|
|
@ -63,6 +63,53 @@
|
|||
|
||||
#include "agg_span_allocator.h"
|
||||
|
||||
namespace agg
|
||||
{
|
||||
//this custom blender does more correct blending math than the default
|
||||
//which is necessary or else drawing transparent pixels on (31,31,31) will yield (30,30,30)
|
||||
struct my_blender_rgb555_pre
|
||||
{
|
||||
typedef rgba8 color_type;
|
||||
typedef color_type::value_type value_type;
|
||||
typedef color_type::calc_type calc_type;
|
||||
typedef int16u pixel_type;
|
||||
|
||||
static AGG_INLINE void blend_pix(pixel_type* p,
|
||||
unsigned cr, unsigned cg, unsigned cb,
|
||||
unsigned alpha,
|
||||
unsigned cover)
|
||||
{
|
||||
//not sure whether this is right...
|
||||
alpha = color_type::base_mask - alpha;
|
||||
pixel_type rgb = *p;
|
||||
calc_type r = (rgb >> 10) & 31;
|
||||
calc_type g = (rgb >> 5) & 31;
|
||||
calc_type b = (rgb ) & 31;
|
||||
r = ((r+1)*(alpha+1) + (cr)*(cover)-1)>>8;
|
||||
g = ((g+1)*(alpha+1) + (cg)*(cover)-1)>>8;
|
||||
b = ((b+1)*(alpha+1) + (cb)*(cover)-1)>>8;
|
||||
*p = (r<<10)|(g<<5)|b;
|
||||
}
|
||||
|
||||
static AGG_INLINE pixel_type make_pix(unsigned r, unsigned g, unsigned b)
|
||||
{
|
||||
return (pixel_type)(((r & 0xF8) << 7) |
|
||||
((g & 0xF8) << 2) |
|
||||
(b >> 3) | 0x8000);
|
||||
}
|
||||
|
||||
static AGG_INLINE color_type make_color(pixel_type p)
|
||||
{
|
||||
return color_type((p >> 7) & 0xF8,
|
||||
(p >> 2) & 0xF8,
|
||||
(p << 3) & 0xF8);
|
||||
}
|
||||
};
|
||||
|
||||
typedef pixfmt_alpha_blend_rgb_packed<my_blender_rgb555_pre, rendering_buffer> my_pixfmt_rgb555_pre; //----pixfmt_rgb555_pre
|
||||
}
|
||||
|
||||
|
||||
|
||||
typedef std::map<std::string, const agg::int8u*> TAgg_Font_Table;
|
||||
static TAgg_Font_Table font_table;
|
||||
|
@ -125,8 +172,9 @@ static void Agg_init_fonts()
|
|||
|
||||
AggDraw_Desmume aggDraw;
|
||||
|
||||
typedef AggDrawTargetImplementation<PixFormatSet<agg::pixfmt_rgb555,agg::pixfmt_rgb555_pre> > T_AGG_RGB555;
|
||||
typedef AggDrawTargetImplementation<PixFormatSet<agg::pixfmt_bgra32,agg::pixfmt_bgra32_pre> > T_AGG_RGBA;
|
||||
|
||||
typedef AggDrawTargetImplementation<PixFormatSetDeclaration<agg::pixfmt_rgb555,agg::my_pixfmt_rgb555_pre> > T_AGG_RGB555;
|
||||
typedef AggDrawTargetImplementation<PixFormatSetDeclaration<agg::pixfmt_bgra32,agg::pixfmt_bgra32_pre> > T_AGG_RGBA;
|
||||
|
||||
T_AGG_RGB555 agg_targetScreen(GPU_screen, 256, 384, 512);
|
||||
|
||||
|
@ -138,7 +186,7 @@ T_AGG_RGBA agg_targetHud((u8*)hudBuffer, 256, 384, 1024);
|
|||
|
||||
static AggDrawTarget* targets[] = {
|
||||
&agg_targetScreen,
|
||||
&agg_targetHud,
|
||||
&agg_targetScreen, //THATS RIGHT! for now, hud maps to screen
|
||||
&agg_targetLua,
|
||||
};
|
||||
|
||||
|
@ -146,6 +194,11 @@ void Agg_init()
|
|||
{
|
||||
Agg_init_fonts();
|
||||
aggDraw.target = targets[0];
|
||||
aggDraw.screen = targets[0];
|
||||
aggDraw.hud = targets[1];
|
||||
aggDraw.lua = targets[2];
|
||||
|
||||
aggDraw.hud->setFont("verdana18_bold");
|
||||
}
|
||||
|
||||
void AggDraw_Desmume::setTarget(AggTarget newTarget)
|
||||
|
@ -153,120 +206,123 @@ void AggDraw_Desmume::setTarget(AggTarget newTarget)
|
|||
target = targets[newTarget];
|
||||
}
|
||||
|
||||
void AggDraw_Desmume::composite(void* dest)
|
||||
{
|
||||
T_AGG_RGBA target((u8*)dest, 256, 384, 1024);
|
||||
|
||||
//if lua is nonempty, blend it
|
||||
if(!agg_targetLua.empty)
|
||||
{
|
||||
T_AGG_RGBA::MyImage luaImage(agg_targetLua.buf());
|
||||
target.transformImage(luaImage, 0,0,256-1,384-1);
|
||||
}
|
||||
|
||||
//if hud is nonempty, blend it
|
||||
if(!agg_targetHud.empty)
|
||||
{
|
||||
T_AGG_RGBA::MyImage hudImage(agg_targetHud.buf());
|
||||
target.transformImage(hudImage, 0,0,256-1,384-1);
|
||||
}
|
||||
}
|
||||
//this code would do compositing.. and maybe it will.. one day. but not for now.
|
||||
//void AggDraw_Desmume::composite(void* dest)
|
||||
//{
|
||||
// T_AGG_RGB555 target((u8*)dest, 256, 384, 512);
|
||||
//
|
||||
// ctr = 0;
|
||||
//
|
||||
// //if lua is nonempty, blend it
|
||||
// if(!agg_targetLua.empty)
|
||||
// {
|
||||
// T_AGG_RGBA::MyImage luaImage(agg_targetLua.buf());
|
||||
// target.transformImage(luaImage, 0,40,256-1,384-1);
|
||||
// }
|
||||
//
|
||||
// int zzz=9;
|
||||
//
|
||||
// //if hud is nonempty, blend it
|
||||
// if(!agg_targetHud.empty)
|
||||
// {
|
||||
// T_AGG_RGBA::MyImage hudImage(agg_targetHud.buf());
|
||||
// target.transformImage(hudImage, 0,0,256-1,384-1);
|
||||
// }
|
||||
//}
|
||||
|
||||
//temporary, just for testing the lib
|
||||
void AGGDraw() {
|
||||
|
||||
aggDraw.setTarget(AggTarget_Hud);
|
||||
|
||||
aggDraw.target->clear();
|
||||
m_graphics.clipBox(50, 50, rbuf_window().width() - 50, rbuf_window().height() - 50);
|
||||
|
||||
aggDraw.target->lineColor(0, 255, 0, 128);
|
||||
aggDraw.target->fillColor(0, 255, 0, 128);
|
||||
//aggDraw.target->noFill();
|
||||
aggDraw.target->lineWidth(1.0);
|
||||
aggDraw.target->roundedRect(10,10,256-10,192-10,4);
|
||||
|
||||
aggDraw.target->setFont("verdana18_bold");
|
||||
aggDraw.target->renderText(60,60, "testing testing testing");
|
||||
|
||||
// Gradients (Aqua Buttons)
|
||||
//=======================================
|
||||
// m_graphics.font("Verdana", 20.0, false, false, TAGG2D::VectorFontCache);
|
||||
double xb1 = 10;
|
||||
double yb1 = 80;
|
||||
double xb2 = xb1 + 150;
|
||||
double yb2 = yb1 + 36;
|
||||
|
||||
aggDraw.target->fillColor(0,50,180,180);
|
||||
aggDraw.target->lineColor(0,0,80, 255);
|
||||
aggDraw.target->lineWidth(1.0);
|
||||
aggDraw.target->roundedRect(xb1, yb1, xb2, yb2, 12, 18);
|
||||
|
||||
aggDraw.target->lineColor(0,0,0,0);
|
||||
aggDraw.target->fillLinearGradient(xb1, yb1, xb1, yb1+30,
|
||||
agg::rgba8(100,200,255,255),
|
||||
agg::rgba8(255,255,255,0));
|
||||
aggDraw.target->roundedRect(xb1+3, yb1+2.5, xb2-3, yb1+30, 9, 18, 1, 1);
|
||||
|
||||
aggDraw.target->fillColor(0,0,50, 200);
|
||||
aggDraw.target->noLine();
|
||||
/* m_graphics.textAlignment(TAGG2D::AlignCenter, TAGG2D::AlignCenter);
|
||||
m_graphics.text((xb1 + xb2) / 2.0, (yb1 + yb2) / 2.0, "Aqua Button", true, 0.0, 0.0);
|
||||
*/
|
||||
aggDraw.target->fillLinearGradient(xb1, yb2-20, xb1, yb2-3,
|
||||
agg::rgba8(0, 0, 255,0),
|
||||
agg::rgba8(100,255,255,255));
|
||||
aggDraw.target->roundedRect(xb1+3, yb2-20, xb2-3, yb2-2, 1, 1, 9, 18);
|
||||
|
||||
// Basic Shapes -- Ellipse
|
||||
//===========================================
|
||||
aggDraw.target->lineWidth(3.5);
|
||||
aggDraw.target->lineColor(20, 80, 80);
|
||||
aggDraw.target->fillColor(200, 255, 80, 200);
|
||||
aggDraw.target->ellipse(150, 200, 50, 90);
|
||||
|
||||
// Paths
|
||||
//===========================================
|
||||
aggDraw.target->resetPath();
|
||||
aggDraw.target->fillColor(255, 0, 0, 100);
|
||||
aggDraw.target->lineColor(0, 0, 255, 100);
|
||||
aggDraw.target->lineWidth(2);
|
||||
aggDraw.target->moveTo(300/2, 200/2);
|
||||
aggDraw.target->horLineRel(-150/2);
|
||||
aggDraw.target->arcRel(150/2, 150/2, 0, 1, 0, 150/2, -150/2);
|
||||
aggDraw.target->closePolygon();
|
||||
aggDraw.target->drawPath();
|
||||
|
||||
aggDraw.target->resetPath();
|
||||
aggDraw.target->fillColor(255, 255, 0, 100);
|
||||
aggDraw.target->lineColor(0, 0, 255, 100);
|
||||
aggDraw.target->lineWidth(2);
|
||||
aggDraw.target->moveTo(275/2, 175/2);
|
||||
aggDraw.target->verLineRel(-150/2);
|
||||
aggDraw.target->arcRel(150/2, 150/2, 0, 0, 0, -150/2, 150/2);
|
||||
aggDraw.target->closePolygon();
|
||||
aggDraw.target->drawPath();
|
||||
|
||||
aggDraw.target->resetPath();
|
||||
aggDraw.target->noFill();
|
||||
aggDraw.target->lineColor(127, 0, 0);
|
||||
aggDraw.target->lineWidth(5);
|
||||
aggDraw.target->moveTo(600/2, 350/2);
|
||||
aggDraw.target->lineRel(50/2, -25/2);
|
||||
aggDraw.target->arcRel(25/2, 25/2, aggDraw.target->deg2Rad(-30), 0, 1, 50/2, -25/2);
|
||||
aggDraw.target->lineRel(50/2, -25/2);
|
||||
aggDraw.target->arcRel(25/2, 50/2, aggDraw.target->deg2Rad(-30), 0, 1, 50/2, -25/2);
|
||||
aggDraw.target->lineRel(50/2, -25/2);
|
||||
aggDraw.target->arcRel(25/2, 75/2, aggDraw.target->deg2Rad(-30), 0, 1, 50/2, -25/2);
|
||||
aggDraw.target->lineRel(50, -25);
|
||||
aggDraw.target->arcRel(25/2, 100/2, aggDraw.target->deg2Rad(-30), 0, 1, 50/2, -25/2);
|
||||
aggDraw.target->lineRel(50/2, -25/2);
|
||||
aggDraw.target->drawPath();
|
||||
|
||||
aggDraw.target->line(5, 6, 40, 70);
|
||||
aggDraw.target->star(60, 70, 4, 5, 4, 6);
|
||||
}
|
||||
|
||||
//void AGGDraw() {
|
||||
//
|
||||
// aggDraw.setTarget(AggTarget_Lua);
|
||||
//
|
||||
// aggDraw.target->clear();
|
||||
//
|
||||
// aggDraw.target->clipBox(0,0,255,383);
|
||||
//
|
||||
// aggDraw.target->lineColor(0, 255, 0, 128);
|
||||
// aggDraw.target->fillColor(0, 255, 0, 128);
|
||||
// //aggDraw.target->noFill();
|
||||
// aggDraw.target->lineWidth(1.0);
|
||||
// aggDraw.target->roundedRect(10,30,256-10,192-10,4);
|
||||
//
|
||||
// aggDraw.target->setFont("verdana18_bold");
|
||||
// aggDraw.target->renderText(60,60, "testing testing testing");
|
||||
//
|
||||
// // Gradients (Aqua Buttons)
|
||||
// //=======================================
|
||||
//// m_graphics.font("Verdana", 20.0, false, false, TAGG2D::VectorFontCache);
|
||||
// double xb1 = 10;
|
||||
// double yb1 = 80;
|
||||
// double xb2 = xb1 + 150;
|
||||
// double yb2 = yb1 + 36;
|
||||
//
|
||||
// aggDraw.target->fillColor(0,50,180,180);
|
||||
// aggDraw.target->lineColor(0,0,80, 255);
|
||||
// aggDraw.target->lineWidth(1.0);
|
||||
// aggDraw.target->roundedRect(xb1, yb1, xb2, yb2, 12, 18);
|
||||
//
|
||||
// aggDraw.target->lineColor(0,0,0,0);
|
||||
// aggDraw.target->fillLinearGradient(xb1, yb1, xb1, yb1+30,
|
||||
// agg::rgba8(100,200,255,255),
|
||||
// agg::rgba8(255,255,255,0));
|
||||
// aggDraw.target->roundedRect(xb1+3, yb1+2.5, xb2-3, yb1+30, 9, 18, 1, 1);
|
||||
//
|
||||
// aggDraw.target->fillColor(0,0,50, 200);
|
||||
// aggDraw.target->noLine();
|
||||
///* m_graphics.textAlignment(TAGG2D::AlignCenter, TAGG2D::AlignCenter);
|
||||
// m_graphics.text((xb1 + xb2) / 2.0, (yb1 + yb2) / 2.0, "Aqua Button", true, 0.0, 0.0);
|
||||
//*/
|
||||
// aggDraw.target->fillLinearGradient(xb1, yb2-20, xb1, yb2-3,
|
||||
// agg::rgba8(0, 0, 255,0),
|
||||
// agg::rgba8(100,255,255,255));
|
||||
// aggDraw.target->roundedRect(xb1+3, yb2-20, xb2-3, yb2-2, 1, 1, 9, 18);
|
||||
//
|
||||
// // Basic Shapes -- Ellipse
|
||||
// //===========================================
|
||||
// aggDraw.target->lineWidth(3.5);
|
||||
// aggDraw.target->lineColor(20, 80, 80);
|
||||
// aggDraw.target->fillColor(200, 255, 80, 200);
|
||||
// aggDraw.target->ellipse(150, 200, 50, 90);
|
||||
//
|
||||
// // Paths
|
||||
// //===========================================
|
||||
// aggDraw.target->resetPath();
|
||||
// aggDraw.target->fillColor(255, 0, 0, 100);
|
||||
// aggDraw.target->lineColor(0, 0, 255, 100);
|
||||
// aggDraw.target->lineWidth(2);
|
||||
// aggDraw.target->moveTo(300/2, 200/2);
|
||||
// aggDraw.target->horLineRel(-150/2);
|
||||
// aggDraw.target->arcRel(150/2, 150/2, 0, 1, 0, 150/2, -150/2);
|
||||
// aggDraw.target->closePolygon();
|
||||
// aggDraw.target->drawPath();
|
||||
//
|
||||
// aggDraw.target->resetPath();
|
||||
// aggDraw.target->fillColor(255, 255, 0, 100);
|
||||
// aggDraw.target->lineColor(0, 0, 255, 100);
|
||||
// aggDraw.target->lineWidth(2);
|
||||
// aggDraw.target->moveTo(275/2, 175/2);
|
||||
// aggDraw.target->verLineRel(-150/2);
|
||||
// aggDraw.target->arcRel(150/2, 150/2, 0, 0, 0, -150/2, 150/2);
|
||||
// aggDraw.target->closePolygon();
|
||||
// aggDraw.target->drawPath();
|
||||
//
|
||||
// aggDraw.target->resetPath();
|
||||
// aggDraw.target->noFill();
|
||||
// aggDraw.target->lineColor(127, 0, 0);
|
||||
// aggDraw.target->lineWidth(5);
|
||||
// aggDraw.target->moveTo(600/2, 350/2);
|
||||
// aggDraw.target->lineRel(50/2, -25/2);
|
||||
// aggDraw.target->arcRel(25/2, 25/2, aggDraw.target->deg2Rad(-30), 0, 1, 50/2, -25/2);
|
||||
// aggDraw.target->lineRel(50/2, -25/2);
|
||||
// aggDraw.target->arcRel(25/2, 50/2, aggDraw.target->deg2Rad(-30), 0, 1, 50/2, -25/2);
|
||||
// aggDraw.target->lineRel(50/2, -25/2);
|
||||
// aggDraw.target->arcRel(25/2, 75/2, aggDraw.target->deg2Rad(-30), 0, 1, 50/2, -25/2);
|
||||
// aggDraw.target->lineRel(50, -25);
|
||||
// aggDraw.target->arcRel(25/2, 100/2, aggDraw.target->deg2Rad(-30), 0, 1, 50/2, -25/2);
|
||||
// aggDraw.target->lineRel(50/2, -25/2);
|
||||
// aggDraw.target->drawPath();
|
||||
//}
|
||||
//
|
||||
|
||||
|
||||
//
|
||||
|
@ -598,4 +654,4 @@ void AGGDraw() {
|
|||
// m_graphics.ellipse(400, 500, 40, 40);
|
||||
//
|
||||
// }
|
||||
//
|
||||
//
|
||||
|
|
|
@ -41,6 +41,8 @@
|
|||
|
||||
#include "agg2d.h"
|
||||
|
||||
typedef agg::rgba8 AggColor;
|
||||
|
||||
class AggDrawTarget
|
||||
{
|
||||
public:
|
||||
|
@ -58,9 +60,15 @@ public:
|
|||
bool empty;
|
||||
|
||||
virtual void clear() = 0;
|
||||
|
||||
virtual void clipBox(double x1, double y1, double x2, double y2) = 0;
|
||||
virtual Agg2DBase::RectD clipBox() const = 0;
|
||||
|
||||
virtual void lineColor(unsigned r, unsigned g, unsigned b, unsigned a = 255) = 0;
|
||||
virtual void lineColor(AggColor color) { lineColor(color.r,color.g,color.b,color.a); }
|
||||
virtual AggColor lineColor() = 0;
|
||||
virtual void fillColor(unsigned r, unsigned g, unsigned b, unsigned a = 255) = 0;
|
||||
virtual AggColor fillColor() = 0;
|
||||
virtual void noFill() = 0;
|
||||
virtual void noLine() = 0;
|
||||
virtual void lineWidth(double w) = 0;
|
||||
|
@ -122,6 +130,22 @@ public:
|
|||
static const agg::int8u* lookupFont(const std::string& name);
|
||||
virtual void setFont(const std::string& name) = 0;
|
||||
virtual void renderText(double dstX, double dstY, const std::string& str) = 0;
|
||||
virtual void renderTextDropshadowed(double dstX, double dstY, const std::string& str)
|
||||
{
|
||||
AggColor lineColorOld = lineColor();
|
||||
lineColor(255-lineColorOld.r,255-lineColorOld.g,255-lineColorOld.b);
|
||||
renderText(dstX-1,dstY-1,str);
|
||||
renderText(dstX,dstY-1,str);
|
||||
renderText(dstX+1,dstY-1,str);
|
||||
renderText(dstX-1,dstY,str);
|
||||
renderText(dstX+1,dstY,str);
|
||||
renderText(dstX-1,dstY+1,str);
|
||||
renderText(dstX,dstY+1,str);
|
||||
renderText(dstX+1,dstY+1,str);
|
||||
lineColor(lineColorOld);
|
||||
renderText(dstX,dstY,str);
|
||||
}
|
||||
|
||||
|
||||
// Auxiliary
|
||||
virtual double pi() { return agg::pi; }
|
||||
|
@ -140,7 +164,7 @@ public:
|
|||
typedef Agg2D<PixFormatSet> BASE;
|
||||
AggDrawTargetImplementation(agg::int8u* buf, int width, int height, int stride)
|
||||
{
|
||||
attach(buf,width,height,stride);
|
||||
BASE::attach(buf,width,height,stride);
|
||||
|
||||
BASE::viewport(0, 0, width-1, height-1, 0, 0, width-1, height-1, TAGG2D::Anisotropic);
|
||||
}
|
||||
|
@ -153,8 +177,14 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
virtual void clipBox(double x1, double y1, double x2, double y2) { BASE::clipBox(x1,y1,x2,y2); }
|
||||
virtual Agg2DBase::RectD clipBox() const { return BASE::clipBox(); }
|
||||
|
||||
virtual void lineColor(unsigned r, unsigned g, unsigned b, unsigned a = 255) { BASE::lineColor(r,g,b,a); }
|
||||
virtual AggColor lineColor() { return BASE::lineColor(); }
|
||||
virtual void fillColor(unsigned r, unsigned g, unsigned b, unsigned a = 255) { BASE::fillColor(r,g,b,a); }
|
||||
virtual AggColor fillColor() { return BASE::fillColor(); }
|
||||
|
||||
virtual void noFill() { BASE::noFill(); }
|
||||
virtual void noLine() { BASE::noLine(); }
|
||||
virtual void lineWidth(double w) { BASE::lineWidth(w); }
|
||||
|
@ -175,10 +205,16 @@ public:
|
|||
virtual void polygon(double* xy, int numPoints) {BASE::polygon(xy, numPoints);};
|
||||
virtual void polyline(double* xy, int numPoints) {BASE::polyline(xy, numPoints);};
|
||||
|
||||
virtual void fillLinearGradient(double x1, double y1, double x2, double y2, Color c1, Color c2, double profile=1.0) {BASE::fillLinearGradient(x1, y1, x2, y2, c1, c2, profile); }
|
||||
virtual void fillLinearGradient(double x1, double y1, double x2, double y2, AggColor c1, AggColor c2, double profile=1.0) {BASE::fillLinearGradient(x1, y1, x2, y2, c1, c2, profile); }
|
||||
|
||||
virtual void setFont(const std::string& name) { BASE::font(lookupFont(name)); }
|
||||
virtual void renderText(double dstX, double dstY, const std::string& str) { dirty(); BASE::renderText(dstX, dstY, str); }
|
||||
virtual void renderText(double dstX, double dstY, const std::string& str) {
|
||||
dirty();
|
||||
int height = BASE::font()[0];
|
||||
int base = BASE::font()[1];
|
||||
int offset = height-base*2;
|
||||
BASE::renderText(dstX, dstY + offset, str);
|
||||
}
|
||||
|
||||
// Path commands
|
||||
virtual void resetPath() {BASE::resetPath();};
|
||||
|
@ -209,10 +245,10 @@ public:
|
|||
virtual void cubicCurveTo(double xCtrl2, double yCtrl2, double xTo, double yTo) {BASE::cubicCurveTo(xCtrl2, yCtrl2, xTo, yTo);};
|
||||
virtual void cubicCurveRel(double xCtrl2, double yCtrl2, double xTo, double yTo) {BASE::cubicCurveRel(xCtrl2, yCtrl2, xTo, yTo);};
|
||||
|
||||
virtual void addEllipse(double cx, double cy, double rx, double ry, Direction dir) {BASE::addEllipse(cx, cy, rx, ry, dir);};
|
||||
virtual void addEllipse(double cx, double cy, double rx, double ry, Agg2DBase::Direction dir) {BASE::addEllipse(cx, cy, rx, ry, dir);};
|
||||
virtual void closePolygon() {BASE::closePolygon();};
|
||||
|
||||
virtual void drawPath(DrawPathFlag flag = FillAndStroke) {BASE::drawPath(flag);};
|
||||
virtual void drawPath(Agg2DBase::DrawPathFlag flag = Agg2DBase::FillAndStroke) {BASE::drawPath(flag);};
|
||||
// virtual void drawPathNoTransform(DrawPathFlag flag = FillAndStroke) {BASE::drawPathNoTransform(flag);};
|
||||
|
||||
// Auxiliary
|
||||
|
@ -242,7 +278,9 @@ class AggDraw_Desmume : public AggDraw
|
|||
{
|
||||
public:
|
||||
void setTarget(AggTarget newTarget);
|
||||
void composite(void* dest);
|
||||
//void composite(void* dest);
|
||||
|
||||
AggDrawTarget *screen, *hud, *lua;
|
||||
};
|
||||
|
||||
extern AggDraw_Desmume aggDraw;
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include "zlib.h"
|
||||
#include "NDSSystem.h"
|
||||
#include "movie.h"
|
||||
#include "GPU_osd.h"
|
||||
#ifdef WIN32
|
||||
#include "main.h"
|
||||
#include "windows.h"
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#include "common.h"
|
||||
#include "mic.h"
|
||||
#include "version.h"
|
||||
#include "GPU_osd.h"
|
||||
#include "memorystream.h"
|
||||
|
||||
using namespace std;
|
||||
|
|
|
@ -1,752 +0,0 @@
|
|||
/// The VERGE 3 Project is originally by Ben Eirich and is made available via
|
||||
/// the BSD License.
|
||||
///
|
||||
/// Please see LICENSE in the project's root directory for the text of the
|
||||
/// licensing agreement. The CREDITS file in the same directory enumerates the
|
||||
/// folks involved in this public build.
|
||||
///
|
||||
/// If you have altered this source file, please log your name, date, and what
|
||||
/// changes you made below this line.
|
||||
|
||||
|
||||
/****************************************************************
|
||||
xerxes engine
|
||||
vid_manager.cpp
|
||||
****************************************************************/
|
||||
|
||||
#include "softrender.h"
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "softrender_v3sysfont.h"
|
||||
|
||||
namespace softrender {
|
||||
|
||||
//instantiations
|
||||
Trender32 render32;
|
||||
Trender16 render16;
|
||||
Trender15 render15;
|
||||
Trender51 render51;
|
||||
|
||||
|
||||
template<typename T>
|
||||
T sgn(const T& a) {
|
||||
if (a<0)
|
||||
return -1;
|
||||
else if (a>0)
|
||||
return +1;
|
||||
else return 0;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
T abs(const T& a) {
|
||||
if (a<0)
|
||||
return -a;
|
||||
else return a;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void SWAP(T& a, T& b) {
|
||||
T temp = a;
|
||||
a = b;
|
||||
b = temp;
|
||||
}
|
||||
|
||||
|
||||
/***************************** data *****************************/
|
||||
|
||||
bool vid_initd = false;
|
||||
bool vid_window = true;
|
||||
int vid_bpp, vid_xres, vid_yres, vid_bytesperpixel;
|
||||
int transColor;
|
||||
image *screen;
|
||||
|
||||
/****************************************************************/
|
||||
|
||||
image::image()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
image::image(int xres, int yres)
|
||||
{
|
||||
width = pitch = xres;
|
||||
height = yres;
|
||||
cx1 = 0;
|
||||
cy1 = 0;
|
||||
cx2 = width - 1;
|
||||
cy2 = height - 1;
|
||||
bpp = vid_bpp;
|
||||
shell = 0;
|
||||
data = new char[width*height*vid_bytesperpixel];
|
||||
//switch (vid_bpp)
|
||||
//{
|
||||
// case 15:
|
||||
// case 16:
|
||||
// case 61: data = new word[width * height];
|
||||
// break;
|
||||
// case 32: data = new quad[width * height];
|
||||
// break;
|
||||
//}
|
||||
}
|
||||
|
||||
void image::delete_data()
|
||||
{
|
||||
delete[] (char *)data;
|
||||
}
|
||||
|
||||
image::~image()
|
||||
{
|
||||
if (data && !shell)
|
||||
delete_data();
|
||||
}
|
||||
|
||||
|
||||
void image::SetClip(int x1, int y1, int x2, int y2)
|
||||
{
|
||||
cx1 = x1 >= 0 ? x1 : 0;
|
||||
cy1 = y1 >= 0 ? y1 : 0;
|
||||
cx1 = cx1 < width ? cx1 : width-1;
|
||||
cy1 = cy1 < height ? cy1 : height-1;
|
||||
cx2 = x2 >= 0 ? x2 : 0;
|
||||
cy2 = y2 >= 0 ? y2 : 0;
|
||||
cx2 = cx2 < width ? cx2 : width-1;
|
||||
cy2 = cy2 < height ? cy2 : height-1;
|
||||
}
|
||||
|
||||
|
||||
void image::GetClip(int &x1, int &y1, int &x2, int &y2)
|
||||
{
|
||||
x1 = cx1;
|
||||
y1 = cy1;
|
||||
x2 = cx2;
|
||||
y2 = cy2;
|
||||
}
|
||||
|
||||
|
||||
//generic render methods
|
||||
|
||||
//template<typename FONT>
|
||||
//void renderbase::print_char(char c, image *dest)
|
||||
//{
|
||||
// int height = FONT::height(c);
|
||||
//}
|
||||
|
||||
void renderbase::Line(int x, int y, int xe, int ye, int color, image *dest)
|
||||
{
|
||||
int dx = xe - x, dy = ye - y,
|
||||
xg = sgn(dx), yg = sgn(dy),
|
||||
i = 0;
|
||||
float slope = 0;
|
||||
|
||||
if (abs(dx) >= abs(dy))
|
||||
{
|
||||
slope = (float) dy / (float) dx;
|
||||
for (i=0; i!=dx; i+=xg)
|
||||
PutPixel(x+i, y+(int)(slope*i), color, dest);
|
||||
}
|
||||
else
|
||||
{
|
||||
slope = (float) dx / (float) dy;
|
||||
for (i=0; i!=dy; i+=yg)
|
||||
PutPixel(x+(int)(slope*i), y+i, color, dest);
|
||||
}
|
||||
PutPixel(xe, ye, color, dest);
|
||||
}
|
||||
|
||||
void renderbase::Box(int x, int y, int x2, int y2, int color, image *dest)
|
||||
{
|
||||
if (x2<x) SWAP(x,x2);
|
||||
if (y2<y) SWAP(y,y2);
|
||||
HLine(x, y, x2, color, dest);
|
||||
HLine(x, y2, x2, color, dest);
|
||||
VLine(x, y+1, y2-1, color, dest);
|
||||
VLine(x2, y+1, y2-1, color, dest);
|
||||
}
|
||||
|
||||
void renderbase::Rect(int x, int y, int x2, int y2, int color, image *dest)
|
||||
{
|
||||
if (y2<y) SWAP(y,y2);
|
||||
for (; y<=y2; y++)
|
||||
HLine(x, y, x2, color, dest);
|
||||
}
|
||||
|
||||
void renderbase::Sphere(int x, int y, int xradius, int yradius, int color, image *dest)
|
||||
{
|
||||
Oval(x-xradius, y-yradius, x+xradius-1, y+yradius-1, color, 1, dest);
|
||||
}
|
||||
|
||||
|
||||
void renderbase::Circle(int x, int y, int xradius, int yradius, int color, image *dest)
|
||||
{
|
||||
Oval(x-xradius, y-yradius, x+xradius-1, y+yradius-1, color, 0, dest);
|
||||
}
|
||||
|
||||
void renderbase::Oval(int x, int y, int xe, int ye, int color, int Fill, image *dest)
|
||||
{
|
||||
int m=xe-x, n=ye-y,
|
||||
//mi=m/2, //mbg 9/5/05 this variable is not being used. why? probably unnecessary
|
||||
ni=n/2,
|
||||
dx=4*m*m,
|
||||
dy=4*n*n,
|
||||
r=m*n*n,
|
||||
rx=2*r,
|
||||
ry=0,
|
||||
xx=m,
|
||||
lasty=9999;
|
||||
|
||||
y+=ni;
|
||||
if (Fill)
|
||||
HLine(x, y, x+xx-1, color, dest);
|
||||
else {
|
||||
PutPixel(x, y, color, dest);
|
||||
PutPixel(x+xx, y, color, dest);
|
||||
}
|
||||
|
||||
xe=x, ye=y;
|
||||
if (ni+ni==n)
|
||||
{
|
||||
ry=-2*m*m;
|
||||
}
|
||||
else
|
||||
{
|
||||
ry=2*m*m;
|
||||
ye++;
|
||||
|
||||
if (Fill)
|
||||
HLine(xe, ye, xe+xx-1, color, dest);
|
||||
else {
|
||||
PutPixel(xe, ye, color, dest);
|
||||
PutPixel(xe+xx, ye, color, dest);
|
||||
}
|
||||
}
|
||||
|
||||
while (xx>0)
|
||||
{
|
||||
if (r<=0)
|
||||
{
|
||||
xx-=2;
|
||||
x++, xe++;
|
||||
rx-=dy;
|
||||
r+=rx;
|
||||
}
|
||||
if (r>0)
|
||||
{
|
||||
y--, ye++;
|
||||
ry+=dx;
|
||||
r-=ry;
|
||||
}
|
||||
|
||||
if (Fill && y != lasty)
|
||||
{
|
||||
HLine(x, y, x+xx-1, color, dest);
|
||||
HLine(xe, ye, xe+xx-1, color, dest);
|
||||
}
|
||||
else {
|
||||
PutPixel(x, y, color, dest);
|
||||
PutPixel(x+xx, y, color, dest);
|
||||
PutPixel(xe, ye, color, dest);
|
||||
PutPixel(xe+xx, ye, color, dest);
|
||||
}
|
||||
lasty = y;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void renderbase::GrabRegion(int sx1, int sy1, int sx2, int sy2, int dx, int dy, image *s, image *d)
|
||||
{
|
||||
int dcx1, dcy1, dcx2, dcy2;
|
||||
d->GetClip(dcx1, dcy1, dcx2, dcy2);
|
||||
|
||||
if (sx1>sx2) SWAP(sx1, sx2);
|
||||
if (sy1>sy2) SWAP(sy1, sy2);
|
||||
int grabwidth = sx2 - sx1;
|
||||
int grabheight = sy2 - sy1;
|
||||
d->SetClip(dx, dy, dx+grabwidth, dy+grabheight);
|
||||
Blit(dx-sx1, dy-sy1, s, d);
|
||||
|
||||
d->SetClip(dcx1, dcy1, dcx2, dcy2);
|
||||
}
|
||||
|
||||
// Overkill 2006-02-04
|
||||
void renderbase::RectVGrad(int x, int y, int x2, int y2, int color, int color2, image *dest)
|
||||
{
|
||||
int r, g, b;
|
||||
int color_r, color_g, color_b;
|
||||
int color_r2, color_g2, color_b2;
|
||||
int i = 0;
|
||||
|
||||
GetColor(color, color_r, color_g, color_b);
|
||||
GetColor(color2, color_r2, color_g2, color_b2);
|
||||
|
||||
if (y2 < y) SWAP(y,y2);
|
||||
|
||||
for(i = 0; i <= y2 - y; i++)
|
||||
{
|
||||
r = ((i * (color_r2 - color_r) / (y2 - y)) + color_r);
|
||||
g = ((i * (color_g2 - color_g) / (y2 - y)) + color_g);
|
||||
b = ((i * (color_b2 - color_b) / (y2 - y)) + color_b);
|
||||
HLine(x, y + i, x2, MakeColor(r, g, b), dest);
|
||||
}
|
||||
}
|
||||
|
||||
// Overkill 2006-02-04
|
||||
void renderbase::RectHGrad(int x, int y, int x2, int y2, int color, int color2, image *dest)
|
||||
{
|
||||
int r, g, b;
|
||||
int color_r, color_g, color_b;
|
||||
int color_r2, color_g2, color_b2;
|
||||
int i = 0;
|
||||
|
||||
GetColor(color, color_r, color_g, color_b);
|
||||
GetColor(color2, color_r2, color_g2, color_b2);
|
||||
|
||||
if (x2 < x) SWAP(x,x2);
|
||||
|
||||
for(i = 0; i <= x2 - x; i++)
|
||||
{
|
||||
r = ((i * (color_r2 - color_r) / (x2 - x)) + color_r);
|
||||
g = ((i * (color_g2 - color_g) / (x2 - x)) + color_g);
|
||||
b = ((i * (color_b2 - color_b) / (x2 - x)) + color_b);
|
||||
VLine(x + i, y, y2, MakeColor(r, g, b), dest);
|
||||
}
|
||||
}
|
||||
|
||||
// janus 2006-07-22
|
||||
|
||||
// radial gradient: color1 is edge color, color2 is center color
|
||||
void renderbase::RectRGrad(int x1, int y1, int x2, int y2, int color1, int color2, image *dest)
|
||||
{
|
||||
int r1, r2, g1, g2, b1, b2;
|
||||
GetColor(color1, r1, g1, b1);
|
||||
GetColor(color2, r2, g2, b2);
|
||||
if (x2 < x1) SWAP(x1,x2);
|
||||
if (y2 < y1) SWAP(y1,y2);
|
||||
int w = (x2 - x1) + 1;
|
||||
int h = (y2 - y1) + 1;
|
||||
int z;
|
||||
if ((w == 0) || (h == 0)) return;
|
||||
// lookup table to eliminate the sqrt-per-pixel
|
||||
static bool tableInitialized = false;
|
||||
static struct pythagorasTable { byte v[256]; } pythagorasLookup[256];
|
||||
if (!tableInitialized) {
|
||||
// we initialize this table on the fly the first time this function is invoked
|
||||
// the output of the formula is not in the value range we require for 8bpp so we scale it
|
||||
// if you want a nonscaled gradient, set this constant to 1.0f
|
||||
const float pythagorasConstant = 0.707106781186547f;
|
||||
for (unsigned a = 0; a < 256; a++) {
|
||||
for (unsigned b = 0; b < 256; b++) {
|
||||
float value = sqrt((float)(a * a) + (b * b)) * pythagorasConstant;
|
||||
if (value <= 0)
|
||||
pythagorasLookup[a].v[b] = 0;
|
||||
else if (value >= 255)
|
||||
pythagorasLookup[a].v[b] = 255;
|
||||
else
|
||||
pythagorasLookup[a].v[b] = unsigned(value) & 0xFF;
|
||||
}
|
||||
}
|
||||
tableInitialized = true;
|
||||
}
|
||||
// color lookup table to reduce per-pixel blending computations
|
||||
int colorTable[256];
|
||||
for (int i = 0; i < 256; i++) {
|
||||
unsigned r = r2 + ((r1 - r2) * i / 255);
|
||||
unsigned g = g2 + ((g1 - g2) * i / 255);
|
||||
unsigned b = b2 + ((b1 - b2) * i / 255);
|
||||
colorTable[i] = MakeColor(r, g, b);
|
||||
}
|
||||
// x and y weight tables which unfortunately must be dynamically allocated due to the fact that their size depends on the size of the rect
|
||||
byte* xTable = new byte[w];
|
||||
byte* yTable = new byte[h];
|
||||
{
|
||||
// the float->int conversions in here are kind of expensive, it might be alright to do this in integer.
|
||||
// haven't tested the math enough to be sure though, so float it is ('cause i'm lazy)
|
||||
float xMul = 255.0f / (w / 2), yMul = 255.0f / (h / 2);
|
||||
int xOffset = (w / 2), yOffset = (h / 2);
|
||||
// these tables convert x/y coordinates into 0-255 weights which can be used to index the sqrt table
|
||||
for (int x = 0; x < w; x++) {
|
||||
xTable[x] = unsigned((float)abs(x - xOffset) * xMul) & 0xFF;
|
||||
}
|
||||
for (int y = 0; y < h; y++) {
|
||||
yTable[y] = unsigned((float)abs(y - yOffset) * yMul) & 0xFF;
|
||||
}
|
||||
}
|
||||
for (int y = 0; y < h; y++) {
|
||||
for (int x = 0; x < w; x++) {
|
||||
z = pythagorasLookup[yTable[y]].v[xTable[x]];
|
||||
PutPixel(x+x1, y+y1, colorTable[z], dest);
|
||||
}
|
||||
}
|
||||
// cleanup locals
|
||||
delete[] xTable;
|
||||
delete[] yTable;
|
||||
}
|
||||
|
||||
// 4-corner gradient: color1-4 are edges top left, top right, bottom left, bottom right
|
||||
void renderbase::Rect4Grad(int x1, int y1, int x2, int y2, int color1, int color2, int color3, int color4, image *dest)
|
||||
{
|
||||
int cr[4], cg[4], cb[4];
|
||||
GetColor(color1, cr[0], cg[0], cb[0]);
|
||||
GetColor(color2, cr[1], cg[1], cb[1]);
|
||||
GetColor(color3, cr[2], cg[2], cb[2]);
|
||||
GetColor(color4, cr[3], cg[3], cb[3]);
|
||||
if (x2 < x1) SWAP(x1,x2);
|
||||
if (y2 < y1) SWAP(y1,y2);
|
||||
int w = (x2 - x1) + 1;
|
||||
int h = (y2 - y1) + 1;
|
||||
if ((w == 0) || (h == 0)) return;
|
||||
unsigned wDiv = w-1;
|
||||
unsigned hDiv = h-1;
|
||||
for (int y = 0; y < h; y++) {
|
||||
for (int x = 0; x < w; x++) {
|
||||
// calculate x and y weights
|
||||
unsigned aX = x * 255 / wDiv;
|
||||
unsigned aY = y * 255 / hDiv;
|
||||
// calculate per-color weights
|
||||
unsigned a[4]; // tl tr bl br
|
||||
a[0] = (aX^0xFF) * (aY^0xFF) / 255;
|
||||
a[1] = aX * (aY^0xFF) / 255;
|
||||
a[2] = (aX^0xFF) * aY / 255;
|
||||
a[3] = 255 - (a[0] + a[1] + a[2]);
|
||||
// blend
|
||||
unsigned r = ((cr[0] * a[0]) + (cr[1] * a[1]) + (cr[2] * a[2]) + (cr[3] * a[3])) / 255;
|
||||
unsigned g = ((cg[0] * a[0]) + (cg[1] * a[1]) + (cg[2] * a[2]) + (cg[3] * a[3])) / 255;
|
||||
unsigned b = ((cb[0] * a[0]) + (cb[1] * a[1]) + (cb[2] * a[2]) + (cb[3] * a[3])) / 255;
|
||||
PutPixel(x+x1, y+y1, MakeColor(r, g, b), dest);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int Trender32::MakeColor(int r, int g, int b)
|
||||
{
|
||||
return ((r<<16)|(g<<8)|b);
|
||||
}
|
||||
|
||||
|
||||
bool Trender32::GetColor(int c, int &r, int &g, int &b)
|
||||
{
|
||||
// if (c == transColor) return false;
|
||||
b = c & 0xff;
|
||||
g = (c >> 8) & 0xff;
|
||||
r = (c >> 16) & 0xff;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Trender32::Clear(int color, image *dest)
|
||||
{
|
||||
int *d = (int *)dest->data;
|
||||
int bytes = dest->pitch * dest->height;
|
||||
while (bytes--)
|
||||
*d++ = color;
|
||||
}
|
||||
|
||||
|
||||
int Trender32::ReadPixel(int x, int y, image *source)
|
||||
{
|
||||
quad *ptr = (quad*)source->data;
|
||||
return ptr[(y * source->pitch) + x];
|
||||
}
|
||||
|
||||
|
||||
void Trender32::PutPixel(int x, int y, int color, image *dest)
|
||||
{
|
||||
int *ptr = (int *)dest->data;
|
||||
if (x<dest->cx1 || x>dest->cx2 || y<dest->cy1 || y>dest->cy2)
|
||||
return;
|
||||
ptr[(y * dest->pitch) + x] = color;
|
||||
}
|
||||
|
||||
|
||||
void Trender32::HLine(int x, int y, int xe, int color, image *dest)
|
||||
{
|
||||
int *d = (int *) dest->data;
|
||||
int cx1=0, cy1=0, cx2=0, cy2=0;
|
||||
if (xe<x) SWAP(x,xe);
|
||||
dest->GetClip(cx1, cy1, cx2, cy2);
|
||||
if (x>cx2 || y>cy2 || xe<cx1 || y<cy1)
|
||||
return;
|
||||
if (xe>cx2) xe=cx2;
|
||||
if (x<cx1) x =cx1;
|
||||
|
||||
d += (y * dest->pitch) + x;
|
||||
for (; x<=xe; x++)
|
||||
*d++ = color;
|
||||
}
|
||||
|
||||
void Trender32::VLine(int x, int y, int ye, int color, image *dest)
|
||||
{
|
||||
int *d = (int *) dest->data;
|
||||
int cx1=0, cy1=0, cx2=0, cy2=0;
|
||||
if (ye<y) SWAP(y,ye);
|
||||
dest->GetClip(cx1, cy1, cx2, cy2);
|
||||
if (x>cx2 || y>cy2 || x<cx1 || ye<cy1)
|
||||
return;
|
||||
if (ye>cy2) ye=cy2;
|
||||
if (y<cy1) y =cy1;
|
||||
|
||||
d += (y * dest->pitch) + x;
|
||||
for (; y<=ye; y++, d+=dest->pitch)
|
||||
*d = color;
|
||||
}
|
||||
|
||||
void Trender32::Blit(int x, int y, image *src, image *dest)
|
||||
{
|
||||
int *s=(int *)src->data,
|
||||
*d=(int *)dest->data;
|
||||
int spitch=src->pitch,
|
||||
dpitch=dest->pitch;
|
||||
int xlen=src->width,
|
||||
ylen=src->height;
|
||||
int cx1=0, cy1=0,
|
||||
cx2=0, cy2=0;
|
||||
|
||||
dest->GetClip(cx1, cy1, cx2, cy2);
|
||||
if (x>cx2 || y>cy2 || x+xlen<cx1 || y+ylen<cy1)
|
||||
return;
|
||||
|
||||
if (x+xlen>cx2) xlen = cx2-x+1;
|
||||
if (y+ylen>cy2) ylen = cy2-y+1;
|
||||
if (x<cx1) {
|
||||
s +=(cx1-x);
|
||||
xlen-=(cx1-x);
|
||||
x =cx1;
|
||||
}
|
||||
if (y<cy1) {
|
||||
s +=(cy1-y)*spitch;
|
||||
ylen-=(cy1-y);
|
||||
y =cy1;
|
||||
}
|
||||
|
||||
d += (y * dpitch) + x;
|
||||
for (xlen *= 4; ylen--; s+=spitch, d+=dpitch)
|
||||
memcpy(d, s, xlen);
|
||||
}
|
||||
|
||||
void Trender32::TBlit(int x, int y, image *src, image *dest)
|
||||
{
|
||||
int *s=(int *)src->data,c,
|
||||
*d=(int *)dest->data;
|
||||
int spitch=src->pitch,
|
||||
dpitch=dest->pitch;
|
||||
int xlen=src->width,
|
||||
ylen=src->height;
|
||||
int cx1=0, cy1=0,
|
||||
cx2=0, cy2=0;
|
||||
|
||||
dest->GetClip(cx1, cy1, cx2, cy2);
|
||||
if (x>cx2 || y>cy2 || x+xlen<cx1 || y+ylen<cy1)
|
||||
return;
|
||||
|
||||
if (x+xlen > cx2) xlen=cx2-x+1;
|
||||
if (y+ylen > cy2) ylen=cy2-y+1;
|
||||
if (x<cx1) {
|
||||
s +=(cx1-x);
|
||||
xlen-=(cx1-x);
|
||||
x =cx1;
|
||||
}
|
||||
if (y<cy1) {
|
||||
s +=(cy1-y)*spitch;
|
||||
ylen-=(cy1-y);
|
||||
y =cy1;
|
||||
}
|
||||
d+=y*dpitch+x;
|
||||
for (; ylen; ylen--)
|
||||
{
|
||||
for (x=0; x<xlen; x++)
|
||||
{
|
||||
c=s[x];
|
||||
if (c != transColor) d[x]=c;
|
||||
}
|
||||
s+=spitch;
|
||||
d+=dpitch;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/********************** 16bpp blitter code **********************/
|
||||
|
||||
int Trender16::MakeColor(int r, int g, int b)
|
||||
{
|
||||
return (((r>>3)<<11)|((g>>2)<<5)|(b>>3));
|
||||
}
|
||||
|
||||
bool Trender16::GetColor(int c, int &r, int &g, int &b)
|
||||
{
|
||||
// if (c == transColor) return false;
|
||||
b = (c & 0x1F) << 3;
|
||||
g = ((c >> 5) & 0x3f) << 2;
|
||||
r = ((c >> 11) & 0x1f) << 3;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void Trender16::Clear(int color, image *dest)
|
||||
{
|
||||
word *d = (word *)dest->data;
|
||||
int bytes = dest->pitch * dest->height;
|
||||
while (bytes--)
|
||||
*d++ = color;
|
||||
}
|
||||
|
||||
|
||||
int Trender16::ReadPixel(int x, int y, image *source)
|
||||
{
|
||||
word *ptr = (word*)source->data;
|
||||
return ptr[(y * source->pitch) + x];
|
||||
}
|
||||
|
||||
|
||||
void Trender16::PutPixel(int x, int y, int color, image *dest)
|
||||
{
|
||||
word *ptr = (word *)dest->data;
|
||||
if (x<dest->cx1 || x>dest->cx2 || y<dest->cy1 || y>dest->cy2)
|
||||
return;
|
||||
ptr[(y * dest->pitch) + x] = color;
|
||||
}
|
||||
|
||||
void Trender16::VLine(int x, int y, int ye, int color, image *dest)
|
||||
{
|
||||
word *d = (word *) dest->data;
|
||||
int cx1=0, cy1=0, cx2=0, cy2=0;
|
||||
if (ye<y) SWAP(y,ye);
|
||||
dest->GetClip(cx1, cy1, cx2, cy2);
|
||||
if (x>cx2 || y>cy2 || x<cx1 || ye<cy1)
|
||||
return;
|
||||
if (ye>cy2) ye=cy2;
|
||||
if (y<cy1) y =cy1;
|
||||
|
||||
d += (y * dest->pitch) + x;
|
||||
for (; y<=ye; y++, d+=dest->pitch)
|
||||
*d = color;
|
||||
}
|
||||
|
||||
void Trender16::HLine(int x, int y, int xe, int color, image *dest)
|
||||
{
|
||||
word *d = (word *) dest->data;
|
||||
int cx1=0, cy1=0, cx2=0, cy2=0;
|
||||
if (xe<x) SWAP(x,xe);
|
||||
dest->GetClip(cx1, cy1, cx2, cy2);
|
||||
if (x>cx2 || y>cy2 || xe<cx1 || y<cy1)
|
||||
return;
|
||||
if (xe>cx2) xe=cx2;
|
||||
if (x<cx1) x =cx1;
|
||||
|
||||
d += (y * dest->pitch) + x;
|
||||
for (; x<=xe; x++)
|
||||
*d++ = color;
|
||||
}
|
||||
|
||||
void Trender16::Blit(int x, int y, image *src, image *dest)
|
||||
{
|
||||
word *s=(word *)src->data,
|
||||
*d=(word *)dest->data;
|
||||
int spitch=src->pitch,
|
||||
dpitch=dest->pitch;
|
||||
int xlen=src->width,
|
||||
ylen=src->height;
|
||||
int cx1=0, cy1=0,
|
||||
cx2=0, cy2=0;
|
||||
|
||||
dest->GetClip(cx1, cy1, cx2, cy2);
|
||||
if (x>cx2 || y>cy2 || x+xlen<cx1 || y+ylen<cy1)
|
||||
return;
|
||||
|
||||
if (x+xlen>cx2) xlen = cx2-x+1;
|
||||
if (y+ylen>cy2) ylen = cy2-y+1;
|
||||
if (x<cx1) {
|
||||
s +=(cx1-x);
|
||||
xlen-=(cx1-x);
|
||||
x =cx1;
|
||||
}
|
||||
if (y<cy1) {
|
||||
s +=(cy1-y)*spitch;
|
||||
ylen-=(cy1-y);
|
||||
y =cy1;
|
||||
}
|
||||
|
||||
d += (y * dpitch) + x;
|
||||
for (xlen *= 2; ylen--; s+=spitch, d+=dpitch)
|
||||
memcpy(d, s, xlen);
|
||||
}
|
||||
|
||||
void Trender16::TBlit(int x, int y, image *src, image *dest)
|
||||
{
|
||||
word *s=(word *)src->data,c,
|
||||
*d=(word *)dest->data;
|
||||
int spitch=src->pitch,
|
||||
dpitch=dest->pitch;
|
||||
int xlen=src->width,
|
||||
ylen=src->height;
|
||||
int cx1=0, cy1=0,
|
||||
cx2=0, cy2=0;
|
||||
|
||||
dest->GetClip(cx1, cy1, cx2, cy2);
|
||||
if (x>cx2 || y>cy2 || x+xlen<cx1 || y+ylen<cy1)
|
||||
return;
|
||||
|
||||
if (x+xlen > cx2) xlen=cx2-x+1;
|
||||
if (y+ylen > cy2) ylen=cy2-y+1;
|
||||
if (x<cx1) {
|
||||
s +=(cx1-x);
|
||||
xlen-=(cx1-x);
|
||||
x =cx1;
|
||||
}
|
||||
if (y<cy1) {
|
||||
s +=(cy1-y)*spitch;
|
||||
ylen-=(cy1-y);
|
||||
y =cy1;
|
||||
}
|
||||
d+=y*dpitch+x;
|
||||
for (; ylen; ylen--)
|
||||
{
|
||||
for (x=0; x<xlen; x++)
|
||||
{
|
||||
c=s[x];
|
||||
if (c != transColor) d[x]=c;
|
||||
}
|
||||
s+=spitch;
|
||||
d+=dpitch;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/********************** 15bpp blitter code **********************/
|
||||
|
||||
int Trender15::MakeColor(int r, int g, int b)
|
||||
{
|
||||
return (((r>>3)<<10)|((g>>3)<<5)|(b>>3))|0x8000; //0x8000 for opaque
|
||||
}
|
||||
|
||||
|
||||
bool Trender15::GetColor(int c, int &r, int &g, int &b)
|
||||
{
|
||||
// if (c == transColor) return false;
|
||||
b = (c & 0x1F) << 3;
|
||||
g = ((c >> 5) & 0x1f) << 3;
|
||||
r = ((c >> 10) & 0x1f) << 3;
|
||||
return true;
|
||||
}
|
||||
|
||||
/********************** 51bpp (15bpp with high bit blue) blitter code **********************/
|
||||
|
||||
int Trender51::MakeColor(int r, int g, int b)
|
||||
{
|
||||
return (((b>>3)<<10)|((g>>3)<<5)|(r>>3))|0x8000; //0x8000 for opaque
|
||||
}
|
||||
|
||||
|
||||
bool Trender51::GetColor(int c, int &r, int &g, int &b)
|
||||
{
|
||||
// if (c == transColor) return false;
|
||||
r = (c & 0x1F) << 3;
|
||||
g = ((c >> 5) & 0x1f) << 3;
|
||||
b = ((c >> 10) & 0x1f) << 3;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
} //end namespace
|
|
@ -1,235 +0,0 @@
|
|||
/// The VERGE 3 Project is originally by Ben Eirich and is made available via
|
||||
/// the BSD License.
|
||||
///
|
||||
/// Please see LICENSE in the project's root directory for the text of the
|
||||
/// licensing agreement. The CREDITS file in the same directory enumerates the
|
||||
/// folks involved in this public build.
|
||||
///
|
||||
/// If you have altered this source file, please log your name, date, and what
|
||||
/// changes you made below this line.
|
||||
|
||||
|
||||
#ifndef SOFTRENDER_H
|
||||
#define SOFTRENDER_H
|
||||
|
||||
#include <string.h>
|
||||
#include "softrender_config.h"
|
||||
|
||||
namespace softrender {
|
||||
|
||||
|
||||
class image
|
||||
{
|
||||
public:
|
||||
int width, height, pitch;
|
||||
int cx1, cy1, cx2, cy2;
|
||||
int bpp, shell;
|
||||
void *data;
|
||||
|
||||
image();
|
||||
image(int xres, int yres);
|
||||
~image();
|
||||
void delete_data();
|
||||
void SetClip(int x1, int y1, int x2, int y2);
|
||||
void GetClip(int &x1, int &y1, int &x2, int &y2);
|
||||
};
|
||||
|
||||
extern int vid_bpp, vid_xres, vid_yres, vid_bytesperpixel, transColor;
|
||||
extern bool vid_window;
|
||||
extern image *screen;
|
||||
extern int alpha, ialpha;
|
||||
extern int skewlines[];
|
||||
|
||||
int SetLucent(int percent);
|
||||
|
||||
//void run2xSAI(image *src, image *dest);
|
||||
|
||||
class renderbase {
|
||||
private:
|
||||
|
||||
void Oval(int x, int y, int xe, int ye, int color, int Fill, image *dest);
|
||||
public:
|
||||
//render methods that do not depend on the pixel format
|
||||
void Line(int x, int y, int xe, int ye, int color, image *dest);
|
||||
void Box(int x, int y, int xe, int ye, int color, image *dest);
|
||||
void Rect(int x, int y, int xe, int ye, int color, image *dest);
|
||||
void Sphere(int x, int y, int xradius, int yradius, int color, image *dest);
|
||||
void Circle(int x, int y, int xradius, int yradius, int color, image *dest);
|
||||
void RectVGrad(int x, int y, int xe, int ye, int color, int color2, image *dest);
|
||||
void RectHGrad(int x, int y, int xe, int ye, int color, int color2, image *dest);
|
||||
void RectRGrad(int x1, int y1, int x2, int y2, int color1, int color2, image *dest);
|
||||
void Rect4Grad(int x1, int y1, int x2, int y2, int color1, int color2, int color3, int color4, image *dest);
|
||||
|
||||
//things that werent originally even blitter-specific
|
||||
void GrabRegion(int sx1, int sy1, int sx2, int sy2, int dx, int dy, image *s, image *d);
|
||||
|
||||
private:
|
||||
bool textBoxBorder;
|
||||
template<typename FONT>
|
||||
void print_char(int scale, int x, int y, int color, char c, image *dest)
|
||||
{
|
||||
int height = FONT::height();
|
||||
int width = FONT::width(c);
|
||||
int ofs = FONT::haveContour()?1:0;
|
||||
|
||||
if (FONT::haveContour())
|
||||
{
|
||||
for (int yc=0; yc<height+2; yc++)
|
||||
for (int xc=0; xc<width+2; xc++)
|
||||
{
|
||||
if(FONT::contour(c,xc,yc)) {
|
||||
for(int xi=0;xi<scale;xi++)
|
||||
for(int yi=0;yi<scale;yi++)
|
||||
PutPixel((xc*scale+x)+xi,(yc*scale+y)+ yi,MakeColor(0,0,0), dest);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (int yc=0; yc<height; yc++)
|
||||
for (int xc=0; xc<width; xc++)
|
||||
{
|
||||
if(FONT::pixel(c,xc,yc)) {
|
||||
for(int xi=0;xi<scale;xi++)
|
||||
for(int yi=0;yi<scale;yi++)
|
||||
PutPixel((xc*scale+x)+xi+ofs,(yc*scale+y)+ yi+ofs,color, dest);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public:
|
||||
void setTextBoxBorder(bool enabled) { textBoxBorder = enabled; }
|
||||
template<typename FONT>
|
||||
void PrintString(int scale, int x, int y, int color, char *str, image *dest)
|
||||
{
|
||||
int xc = x;
|
||||
int yc = y;
|
||||
|
||||
int height = FONT::height();
|
||||
int boxSize= 0;
|
||||
if (FONT::haveContour())
|
||||
boxSize = ((FONT::width(*str)*scale+scale+1)*strlen(str));
|
||||
else
|
||||
boxSize = ((FONT::width(*str)*scale+scale)*strlen(str));
|
||||
|
||||
int x1 = x; // Remember where x where the line should start. -- Overkill 2005-12-28.
|
||||
for (; *str; ++str)
|
||||
{
|
||||
// New lines -- Overkill 2005-12-28.
|
||||
if (*str == '\n' || *str == '\r')
|
||||
{
|
||||
if (*str == '\r')
|
||||
{
|
||||
// Checks for \r\n so they aren't parsed as two seperate line breaks.
|
||||
if (!*++str) return;
|
||||
if (*str != '\n')
|
||||
{
|
||||
*--str;
|
||||
}
|
||||
}
|
||||
xc = x1;
|
||||
yc += height*scale + scale;
|
||||
} else {
|
||||
print_char<FONT>(scale, xc, yc, color, *str, dest);
|
||||
xc += FONT::width(*str)*scale + scale;
|
||||
if (FONT::haveContour()) xc += 1;
|
||||
}
|
||||
}
|
||||
if (textBoxBorder)
|
||||
Box(x, y, x+boxSize, y+height, MakeColor(0, 0, 0), dest);
|
||||
}
|
||||
|
||||
|
||||
public:
|
||||
virtual int MakeColor(int r, int g, int b)=0;
|
||||
virtual bool GetColor(int c, int &r, int &g, int &b)=0;
|
||||
virtual void Clear(int color, image *dest)=0;
|
||||
virtual int ReadPixel(int x, int y, image *dest)=0;
|
||||
virtual void PutPixel(int x, int y, int color, image *dest)=0;
|
||||
virtual void VLine(int x, int y, int ye, int color, image *dest)=0;
|
||||
virtual void HLine(int x, int y, int xe, int color, image *dest)=0;
|
||||
virtual void Blit(int x, int y, image *src, image *dest)=0;
|
||||
virtual void TBlit(int x, int y, image *src, image *dest)=0;
|
||||
//virtual void AlphaBlit(int x, int y, image *src, image *alpha, image *dest);
|
||||
//virtual void AdditiveBlit(int x, int y, image *src, image *dest);
|
||||
//virtual void TAdditiveBlit(int x, int y, image *src, image *dest);
|
||||
//virtual void SubtractiveBlit(int x, int y, image *src, image *dest);
|
||||
//virtual void TSubtractiveBlit(int x, int y, image *src, image *dest);
|
||||
//virtual void BlitTile(int x, int y, char *src, image *dest);
|
||||
//virtual void TBlitTile(int x, int y, char *src, image *dest);
|
||||
//virtual void ScaleBlit(int x, int y, int dw, int dh, image *src, image *dest);
|
||||
//virtual void TScaleBlit(int x, int y, int dw, int dh, image *src, image *dest);
|
||||
//virtual void WrapBlit(int x, int y, image *src, image *dst);
|
||||
//virtual void TWrapBlit(int x, int y, image *src, image *dst);
|
||||
//virtual void Silhouette(int x, int y, int c, image *src, image *dst);
|
||||
//virtual void RotScale(int x, int y, float angle, float scale, image *src, image *dest);
|
||||
//virtual void Mosaic(int xf, int yf, image *src);
|
||||
//virtual void Timeless(int x, int y1, int y, image *src, image *dest);
|
||||
//virtual void BlitWrap(int x, int y, image *src, image *dest);
|
||||
//virtual void ColorFilter(int filter, image *img);
|
||||
//virtual void Triangle(int x1, int y1, int x2, int y2, int x3, int y3, int c, image *dest);
|
||||
//virtual void FlipBlit(int x, int y, int fx, int fy, image *src, image *dest);
|
||||
//virtual image* ImageFrom8bpp(byte *src, int width, int height, byte *pal);
|
||||
//virtual image* ImageFrom24bpp(byte *src, int width, int height);
|
||||
//virtual image* ImageFrom32bpp(byte *src, int width, int height);
|
||||
//// Overkill (2007-05-04)
|
||||
//virtual int HSVtoColor(int h, int s, int v);
|
||||
//// Overkill (2007-05-04)
|
||||
//virtual void GetHSV(int color, int &h, int &s, int &v);
|
||||
//// Overkill (2007-05-04)
|
||||
//virtual void HueReplace(int hue_find, int hue_tolerance, int hue_replace, image *img);
|
||||
//// Overkill (2007-05-04)
|
||||
//virtual void ColorReplace(int color_find, int color_replace, image *img);
|
||||
};
|
||||
|
||||
class Trender16: public renderbase
|
||||
{
|
||||
public:
|
||||
virtual int MakeColor(int r, int g, int b);
|
||||
virtual bool GetColor(int c, int &r, int &g, int &b);
|
||||
virtual void Clear(int color, image *dest);
|
||||
virtual int ReadPixel(int x, int y, image *dest);
|
||||
virtual void PutPixel(int x, int y, int color, image *dest);
|
||||
virtual void VLine(int x, int y, int ye, int color, image *dest);
|
||||
virtual void HLine(int x, int y, int xe, int color, image *dest);
|
||||
virtual void Blit(int x, int y, image *src, image *dest);
|
||||
virtual void TBlit(int x, int y, image *src, image *dest);
|
||||
};
|
||||
|
||||
class Trender32: public renderbase
|
||||
{
|
||||
public:
|
||||
virtual int MakeColor(int r, int g, int b);
|
||||
virtual bool GetColor(int c, int &r, int &g, int &b);
|
||||
virtual void Clear(int color, image *dest);
|
||||
virtual int ReadPixel(int x, int y, image *dest);
|
||||
virtual void PutPixel(int x, int y, int color, image *dest);
|
||||
virtual void VLine(int x, int y, int ye, int color, image *dest);
|
||||
virtual void HLine(int x, int y, int xe, int color, image *dest);
|
||||
virtual void Blit(int x, int y, image *src, image *dest);
|
||||
virtual void TBlit(int x, int y, image *src, image *dest);
|
||||
};
|
||||
|
||||
|
||||
class Trender15 : public Trender16
|
||||
{
|
||||
public:
|
||||
virtual int MakeColor(int r, int g, int b);
|
||||
virtual bool GetColor(int c, int &r, int &g, int &b);
|
||||
};
|
||||
|
||||
class Trender51 : public Trender16
|
||||
{
|
||||
public:
|
||||
virtual int MakeColor(int r, int g, int b);
|
||||
virtual bool GetColor(int c, int &r, int &g, int &b);
|
||||
};
|
||||
|
||||
extern Trender32 render32;
|
||||
extern Trender16 render16;
|
||||
extern Trender15 render15;
|
||||
extern Trender51 render51;
|
||||
|
||||
|
||||
} //end namespace
|
||||
|
||||
#endif
|
|
@ -1,14 +0,0 @@
|
|||
#ifndef SOFTRENDER_CONFIG_H
|
||||
#define SOFTRENDER_CONFIG_H
|
||||
|
||||
namespace softrender {
|
||||
|
||||
typedef unsigned char byte;
|
||||
typedef unsigned short word;
|
||||
typedef unsigned int quad;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endif
|
|
@ -1,574 +0,0 @@
|
|||
/* Copyright (C) 2006 yopyop
|
||||
yopyop156@ifrance.com
|
||||
yopyop156.ifrance.com
|
||||
|
||||
Copyright (C) 2006-2008 DeSmuME team
|
||||
|
||||
This file is part of DeSmuME
|
||||
|
||||
DeSmuME is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
DeSmuME is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with DeSmuME; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef SYSFONT_DESMUME_H
|
||||
#define SYSFONT_DESMUME_H
|
||||
|
||||
#define OSD_FONT_WIDTH 8
|
||||
#define OSD_FONT_HEIGHT 16
|
||||
|
||||
namespace softrender {
|
||||
|
||||
class DesmumeFont {
|
||||
public:
|
||||
static int height() { return OSD_FONT_HEIGHT; }
|
||||
static int width(char c) { return OSD_FONT_WIDTH; }
|
||||
static bool valid(char c) { return true; }
|
||||
static bool haveContour() { return true; }
|
||||
|
||||
static int pixel(char c, int x, int y) {
|
||||
|
||||
static const unsigned char font_eng[256*OSD_FONT_HEIGHT] =
|
||||
{
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00 */
|
||||
0x00,0x00,0x7E,0x81,0xA5,0x81,0x81,0xBD,0x99,0x81,0x81,0x7E,0x00,0x00,0x00,0x00, /* 01 */
|
||||
0x00,0x00,0x7E,0xFF,0xDB,0xFF,0xFF,0xC3,0xE7,0xFF,0xFF,0x7E,0x00,0x00,0x00,0x00, /* 02 */
|
||||
0x00,0x00,0x00,0x00,0x6C,0xFE,0xFE,0xFE,0xFE,0x7C,0x38,0x10,0x00,0x00,0x00,0x00, /* 03 */
|
||||
0x00,0x00,0x00,0x00,0x10,0x38,0x7C,0xFE,0x7C,0x38,0x10,0x00,0x00,0x00,0x00,0x00, /* 04 */
|
||||
0x00,0x00,0x00,0x18,0x3C,0x3C,0xE7,0xE7,0xE7,0x18,0x18,0x3C,0x00,0x00,0x00,0x00, /* 05 */
|
||||
0x00,0x00,0x00,0x18,0x3C,0x7E,0xFF,0xFF,0x7E,0x18,0x18,0x3C,0x00,0x00,0x00,0x00, /* 06 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x3C,0x3C,0x18,0x00,0x00,0x00,0x00,0x00,0x00, /* 07 */
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0xC3,0xC3,0xE7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* 08 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x3C,0x66,0x42,0x42,0x66,0x3C,0x00,0x00,0x00,0x00,0x00, /* 09 */
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xC3,0x99,0xBD,0xBD,0x99,0xC3,0xFF,0xFF,0xFF,0xFF,0xFF, /* 0A */
|
||||
0x00,0x00,0x1E,0x0E,0x1A,0x32,0x78,0xCC,0xCC,0xCC,0xCC,0x78,0x00,0x00,0x00,0x00, /* 0B */
|
||||
0x00,0x00,0x3C,0x66,0x66,0x66,0x66,0x3C,0x18,0x7E,0x18,0x18,0x00,0x00,0x00,0x00, /* 0C */
|
||||
0x00,0x00,0x3F,0x33,0x3F,0x30,0x30,0x30,0x30,0x70,0xF0,0xE0,0x00,0x00,0x00,0x00, /* 0D */
|
||||
0x00,0x00,0x7F,0x63,0x7F,0x63,0x63,0x63,0x63,0x67,0xE7,0xE6,0xC0,0x00,0x00,0x00, /* 0E */
|
||||
0x00,0x00,0x00,0x18,0x18,0xDB,0x3C,0xE7,0x3C,0xDB,0x18,0x18,0x00,0x00,0x00,0x00, /* 0F */
|
||||
0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFE,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00, /* 10 */
|
||||
0x00,0x02,0x06,0x0E,0x1E,0x3E,0xFE,0x3E,0x1E,0x0E,0x06,0x02,0x00,0x00,0x00,0x00, /* 11 */
|
||||
0x00,0x00,0x18,0x3C,0x7E,0x18,0x18,0x18,0x7E,0x3C,0x18,0x00,0x00,0x00,0x00,0x00, /* 12 */
|
||||
0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x00,0x66,0x66,0x00,0x00,0x00,0x00, /* 13 */
|
||||
0x00,0x00,0x7F,0xDB,0xDB,0xDB,0x7B,0x1B,0x1B,0x1B,0x1B,0x1B,0x00,0x00,0x00,0x00, /* 14 */
|
||||
0x00,0x7C,0xC6,0x60,0x38,0x6C,0xC6,0xC6,0x6C,0x38,0x0C,0xC6,0x7C,0x00,0x00,0x00, /* 15 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFE,0xFE,0xFE,0x00,0x00,0x00,0x00, /* 16 */
|
||||
0x00,0x00,0x18,0x3C,0x7E,0x18,0x18,0x18,0x7E,0x3C,0x18,0x7E,0x00,0x00,0x00,0x00, /* 17 */
|
||||
0x00,0x00,0x18,0x3C,0x7E,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00, /* 18 */
|
||||
0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x7E,0x3C,0x18,0x00,0x00,0x00,0x00, /* 19 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x18,0x0C,0xFE,0x0C,0x18,0x00,0x00,0x00,0x00,0x00,0x00, /* 1A */
|
||||
0x00,0x00,0x00,0x00,0x00,0x30,0x60,0xFE,0x60,0x30,0x00,0x00,0x00,0x00,0x00,0x00, /* 1B */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0xC0,0xFE,0x00,0x00,0x00,0x00,0x00,0x00, /* 1C */
|
||||
0x00,0x00,0x00,0x00,0x00,0x24,0x66,0xFF,0x66,0x24,0x00,0x00,0x00,0x00,0x00,0x00, /* 1D */
|
||||
0x00,0x00,0x00,0x00,0x10,0x38,0x38,0x7C,0x7C,0xFE,0xFE,0x00,0x00,0x00,0x00,0x00, /* 1E */
|
||||
0x00,0x00,0x00,0x00,0xFE,0xFE,0x7C,0x7C,0x38,0x38,0x10,0x00,0x00,0x00,0x00,0x00, /* 1F */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 20 */
|
||||
0x00,0x00,0x18,0x3C,0x3C,0x3C,0x18,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00, /* 21 */
|
||||
0x00,0x66,0x66,0x66,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 22 */
|
||||
0x00,0x00,0x00,0x6C,0x6C,0xFE,0x6C,0x6C,0x6C,0xFE,0x6C,0x6C,0x00,0x00,0x00,0x00, /* 23 */
|
||||
0x18,0x18,0x7C,0xC6,0xC2,0xC0,0x7C,0x06,0x06,0x86,0xC6,0x7C,0x18,0x18,0x00,0x00, /* 24 */
|
||||
0x00,0x00,0x00,0x00,0xC2,0xC6,0x0C,0x18,0x30,0x60,0xC6,0x86,0x00,0x00,0x00,0x00, /* 25 */
|
||||
0x00,0x00,0x38,0x6C,0x6C,0x38,0x76,0xDC,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00, /* 26 */
|
||||
0x00,0x30,0x30,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 27 */
|
||||
0x00,0x00,0x0C,0x18,0x30,0x30,0x30,0x30,0x30,0x30,0x18,0x0C,0x00,0x00,0x00,0x00, /* 28 */
|
||||
0x00,0x00,0x30,0x18,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x18,0x30,0x00,0x00,0x00,0x00, /* 29 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00,0x00,0x00,0x00,0x00, /* 2A */
|
||||
0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00, /* 2B */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x30,0x00,0x00,0x00, /* 2C */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 2D */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00, /* 2E */
|
||||
0x00,0x00,0x00,0x00,0x02,0x06,0x0C,0x18,0x30,0x60,0xC0,0x80,0x00,0x00,0x00,0x00, /* 2F */
|
||||
0x00,0x00,0x3C,0x66,0xC3,0xC3,0xDB,0xDB,0xC3,0xC3,0x66,0x3C,0x00,0x00,0x00,0x00, /* 30 */
|
||||
0x00,0x00,0x18,0x38,0x78,0x18,0x18,0x18,0x18,0x18,0x18,0x7E,0x00,0x00,0x00,0x00, /* 31 */
|
||||
0x00,0x00,0x7C,0xC6,0x06,0x0C,0x18,0x30,0x60,0xC0,0xC6,0xFE,0x00,0x00,0x00,0x00, /* 32 */
|
||||
0x00,0x00,0x7C,0xC6,0x06,0x06,0x3C,0x06,0x06,0x06,0xC6,0x7C,0x00,0x00,0x00,0x00, /* 33 */
|
||||
0x00,0x00,0x0C,0x1C,0x3C,0x6C,0xCC,0xFE,0x0C,0x0C,0x0C,0x1E,0x00,0x00,0x00,0x00, /* 34 */
|
||||
0x00,0x00,0xFE,0xC0,0xC0,0xC0,0xFC,0x06,0x06,0x06,0xC6,0x7C,0x00,0x00,0x00,0x00, /* 35 */
|
||||
0x00,0x00,0x38,0x60,0xC0,0xC0,0xFC,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00, /* 36 */
|
||||
0x00,0x00,0xFE,0xC6,0x06,0x06,0x0C,0x18,0x30,0x30,0x30,0x30,0x00,0x00,0x00,0x00, /* 37 */
|
||||
0x00,0x00,0x7C,0xC6,0xC6,0xC6,0x7C,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00, /* 38 */
|
||||
0x00,0x00,0x7C,0xC6,0xC6,0xC6,0x7E,0x06,0x06,0x06,0x0C,0x78,0x00,0x00,0x00,0x00, /* 39 */
|
||||
0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00, /* 3A */
|
||||
0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x30,0x00,0x00,0x00,0x00, /* 3B */
|
||||
0x00,0x00,0x00,0x06,0x0C,0x18,0x30,0x60,0x30,0x18,0x0C,0x06,0x00,0x00,0x00,0x00, /* 3C */
|
||||
0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 3D */
|
||||
0x00,0x00,0x00,0x60,0x30,0x18,0x0C,0x06,0x0C,0x18,0x30,0x60,0x00,0x00,0x00,0x00, /* 3E */
|
||||
0x00,0x00,0x7C,0xC6,0xC6,0x0C,0x18,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00, /* 3F */
|
||||
0x00,0x00,0x00,0x7C,0xC6,0xC6,0xDE,0xDE,0xDE,0xDC,0xC0,0x7C,0x00,0x00,0x00,0x00, /* 40 */
|
||||
0x00,0x00,0x10,0x38,0x6C,0xC6,0xC6,0xFE,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00, /* 41 */
|
||||
0x00,0x00,0xFC,0x66,0x66,0x66,0x7C,0x66,0x66,0x66,0x66,0xFC,0x00,0x00,0x00,0x00, /* 42 */
|
||||
0x00,0x00,0x3C,0x66,0xC2,0xC0,0xC0,0xC0,0xC0,0xC2,0x66,0x3C,0x00,0x00,0x00,0x00, /* 43 */
|
||||
0x00,0x00,0xF8,0x6C,0x66,0x66,0x66,0x66,0x66,0x66,0x6C,0xF8,0x00,0x00,0x00,0x00, /* 44 */
|
||||
0x00,0x00,0xFE,0x66,0x62,0x68,0x78,0x68,0x60,0x62,0x66,0xFE,0x00,0x00,0x00,0x00, /* 45 */
|
||||
0x00,0x00,0xFE,0x66,0x62,0x68,0x78,0x68,0x60,0x60,0x60,0xF0,0x00,0x00,0x00,0x00, /* 46 */
|
||||
0x00,0x00,0x3C,0x66,0xC2,0xC0,0xC0,0xDE,0xC6,0xC6,0x66,0x3A,0x00,0x00,0x00,0x00, /* 47 */
|
||||
0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00, /* 48 */
|
||||
0x00,0x00,0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00, /* 49 */
|
||||
0x00,0x00,0x1E,0x0C,0x0C,0x0C,0x0C,0x0C,0xCC,0xCC,0xCC,0x78,0x00,0x00,0x00,0x00, /* 4A */
|
||||
0x00,0x00,0xE6,0x66,0x66,0x6C,0x78,0x78,0x6C,0x66,0x66,0xE6,0x00,0x00,0x00,0x00, /* 4B */
|
||||
0x00,0x00,0xF0,0x60,0x60,0x60,0x60,0x60,0x60,0x62,0x66,0xFE,0x00,0x00,0x00,0x00, /* 4C */
|
||||
0x00,0x00,0xC3,0xE7,0xFF,0xFF,0xDB,0xC3,0xC3,0xC3,0xC3,0xC3,0x00,0x00,0x00,0x00, /* 4D */
|
||||
0x00,0x00,0xC6,0xE6,0xF6,0xFE,0xDE,0xCE,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00, /* 4E */
|
||||
0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00, /* 4F */
|
||||
0x00,0x00,0xFC,0x66,0x66,0x66,0x7C,0x60,0x60,0x60,0x60,0xF0,0x00,0x00,0x00,0x00, /* 50 */
|
||||
0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xD6,0xDE,0x7C,0x0C,0x0E,0x00,0x00, /* 51 */
|
||||
0x00,0x00,0xFC,0x66,0x66,0x66,0x7C,0x6C,0x66,0x66,0x66,0xE6,0x00,0x00,0x00,0x00, /* 52 */
|
||||
0x00,0x00,0x7C,0xC6,0xC6,0x60,0x38,0x0C,0x06,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00, /* 53 */
|
||||
0x00,0x00,0xFF,0xDB,0x99,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00, /* 54 */
|
||||
0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00, /* 55 */
|
||||
0x00,0x00,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0x66,0x3C,0x18,0x00,0x00,0x00,0x00, /* 56 */
|
||||
0x00,0x00,0xC3,0xC3,0xC3,0xC3,0xC3,0xDB,0xDB,0xFF,0x66,0x66,0x00,0x00,0x00,0x00, /* 57 */
|
||||
0x00,0x00,0xC3,0xC3,0x66,0x3C,0x18,0x18,0x3C,0x66,0xC3,0xC3,0x00,0x00,0x00,0x00, /* 58 */
|
||||
0x00,0x00,0xC3,0xC3,0xC3,0x66,0x3C,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00, /* 59 */
|
||||
0x00,0x00,0xFF,0xC3,0x86,0x0C,0x18,0x30,0x60,0xC1,0xC3,0xFF,0x00,0x00,0x00,0x00, /* 5A */
|
||||
0x00,0x00,0x3C,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x3C,0x00,0x00,0x00,0x00, /* 5B */
|
||||
0x00,0x00,0x00,0x80,0xC0,0xE0,0x70,0x38,0x1C,0x0E,0x06,0x02,0x00,0x00,0x00,0x00, /* 5C */
|
||||
0x00,0x00,0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x00,0x00,0x00,0x00, /* 5D */
|
||||
0x10,0x38,0x6C,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 5E */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00, /* 5F */
|
||||
0x30,0x30,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 60 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x78,0x0C,0x7C,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00, /* 61 */
|
||||
0x00,0x00,0xE0,0x60,0x60,0x78,0x6C,0x66,0x66,0x66,0x66,0x7C,0x00,0x00,0x00,0x00, /* 62 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0xC0,0xC0,0xC0,0xC6,0x7C,0x00,0x00,0x00,0x00, /* 63 */
|
||||
0x00,0x00,0x1C,0x0C,0x0C,0x3C,0x6C,0xCC,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00, /* 64 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0xFE,0xC0,0xC0,0xC6,0x7C,0x00,0x00,0x00,0x00, /* 65 */
|
||||
0x00,0x00,0x38,0x6C,0x64,0x60,0xF0,0x60,0x60,0x60,0x60,0xF0,0x00,0x00,0x00,0x00, /* 66 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x76,0xCC,0xCC,0xCC,0xCC,0xCC,0x7C,0x0C,0xCC,0x78,0x00, /* 67 */
|
||||
0x00,0x00,0xE0,0x60,0x60,0x6C,0x76,0x66,0x66,0x66,0x66,0xE6,0x00,0x00,0x00,0x00, /* 68 */
|
||||
0x00,0x00,0x18,0x18,0x00,0x38,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00, /* 69 */
|
||||
0x00,0x00,0x06,0x06,0x00,0x0E,0x06,0x06,0x06,0x06,0x06,0x06,0x66,0x66,0x3C,0x00, /* 6A */
|
||||
0x00,0x00,0xE0,0x60,0x60,0x66,0x6C,0x78,0x78,0x6C,0x66,0xE6,0x00,0x00,0x00,0x00, /* 6B */
|
||||
0x00,0x00,0x38,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00, /* 6C */
|
||||
0x00,0x00,0x00,0x00,0x00,0xE6,0xFF,0xDB,0xDB,0xDB,0xDB,0xDB,0x00,0x00,0x00,0x00, /* 6D */
|
||||
0x00,0x00,0x00,0x00,0x00,0xDC,0x66,0x66,0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x00, /* 6E */
|
||||
0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00, /* 6F */
|
||||
0x00,0x00,0x00,0x00,0x00,0xDC,0x66,0x66,0x66,0x66,0x66,0x7C,0x60,0x60,0xF0,0x00, /* 70 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x76,0xCC,0xCC,0xCC,0xCC,0xCC,0x7C,0x0C,0x0C,0x1E,0x00, /* 71 */
|
||||
0x00,0x00,0x00,0x00,0x00,0xDC,0x76,0x66,0x60,0x60,0x60,0xF0,0x00,0x00,0x00,0x00, /* 72 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0x60,0x38,0x0C,0xC6,0x7C,0x00,0x00,0x00,0x00, /* 73 */
|
||||
0x00,0x00,0x10,0x30,0x30,0xFC,0x30,0x30,0x30,0x30,0x36,0x1C,0x00,0x00,0x00,0x00, /* 74 */
|
||||
0x00,0x00,0x00,0x00,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00, /* 75 */
|
||||
0x00,0x00,0x00,0x00,0x00,0xC3,0xC3,0xC3,0xC3,0x66,0x3C,0x18,0x00,0x00,0x00,0x00, /* 76 */
|
||||
0x00,0x00,0x00,0x00,0x00,0xC3,0xC3,0xC3,0xDB,0xDB,0xFF,0x66,0x00,0x00,0x00,0x00, /* 77 */
|
||||
0x00,0x00,0x00,0x00,0x00,0xC3,0x66,0x3C,0x18,0x3C,0x66,0xC3,0x00,0x00,0x00,0x00, /* 78 */
|
||||
0x00,0x00,0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7E,0x06,0x0C,0xF8,0x00, /* 79 */
|
||||
0x00,0x00,0x00,0x00,0x00,0xFE,0xCC,0x18,0x30,0x60,0xC6,0xFE,0x00,0x00,0x00,0x00, /* 7A */
|
||||
0x00,0x00,0x0E,0x18,0x18,0x18,0x70,0x18,0x18,0x18,0x18,0x0E,0x00,0x00,0x00,0x00, /* 7B */
|
||||
0x00,0x00,0x18,0x18,0x18,0x18,0x00,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00, /* 7C */
|
||||
0x00,0x00,0x70,0x18,0x18,0x18,0x0E,0x18,0x18,0x18,0x18,0x70,0x00,0x00,0x00,0x00, /* 7D */
|
||||
0x00,0x00,0x76,0xDC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 7E */
|
||||
0x00,0x00,0x00,0x00,0x10,0x38,0x6C,0xC6,0xC6,0xC6,0xFE,0x00,0x00,0x00,0x00,0x00, /* 7F */
|
||||
0x00,0x00,0x3C,0x66,0xC2,0xC0,0xC0,0xC0,0xC2,0x66,0x3C,0x0C,0x06,0x7C,0x00,0x00, /* 80 */
|
||||
0x00,0x00,0xCC,0x00,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00, /* 81 */
|
||||
0x00,0x0C,0x18,0x30,0x00,0x7C,0xC6,0xFE,0xC0,0xC0,0xC6,0x7C,0x00,0x00,0x00,0x00, /* 82 */
|
||||
0x00,0x10,0x38,0x6C,0x00,0x78,0x0C,0x7C,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00, /* 83 */
|
||||
0x00,0x00,0xCC,0x00,0x00,0x78,0x0C,0x7C,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00, /* 84 */
|
||||
0x00,0x60,0x30,0x18,0x00,0x78,0x0C,0x7C,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00, /* 85 */
|
||||
0x00,0x38,0x6C,0x38,0x00,0x78,0x0C,0x7C,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00, /* 86 */
|
||||
0x00,0x00,0x00,0x00,0x3C,0x66,0x60,0x60,0x66,0x3C,0x0C,0x06,0x3C,0x00,0x00,0x00, /* 87 */
|
||||
0x00,0x10,0x38,0x6C,0x00,0x7C,0xC6,0xFE,0xC0,0xC0,0xC6,0x7C,0x00,0x00,0x00,0x00, /* 88 */
|
||||
0x00,0x00,0xC6,0x00,0x00,0x7C,0xC6,0xFE,0xC0,0xC0,0xC6,0x7C,0x00,0x00,0x00,0x00, /* 89 */
|
||||
0x00,0x60,0x30,0x18,0x00,0x7C,0xC6,0xFE,0xC0,0xC0,0xC6,0x7C,0x00,0x00,0x00,0x00, /* 8A */
|
||||
0x00,0x00,0x66,0x00,0x00,0x38,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00, /* 8B */
|
||||
0x00,0x18,0x3C,0x66,0x00,0x38,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00, /* 8C */
|
||||
0x00,0x60,0x30,0x18,0x00,0x38,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00, /* 8D */
|
||||
0x00,0xC6,0x00,0x10,0x38,0x6C,0xC6,0xC6,0xFE,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00, /* 8E */
|
||||
0x38,0x6C,0x38,0x00,0x38,0x6C,0xC6,0xC6,0xFE,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00, /* 8F */
|
||||
0x18,0x30,0x60,0x00,0xFE,0x66,0x60,0x7C,0x60,0x60,0x66,0xFE,0x00,0x00,0x00,0x00, /* 90 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x6E,0x3B,0x1B,0x7E,0xD8,0xDC,0x77,0x00,0x00,0x00,0x00, /* 91 */
|
||||
0x00,0x00,0x3E,0x6C,0xCC,0xCC,0xFE,0xCC,0xCC,0xCC,0xCC,0xCE,0x00,0x00,0x00,0x00, /* 92 */
|
||||
0x00,0x10,0x38,0x6C,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00, /* 93 */
|
||||
0x00,0x00,0xC6,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00, /* 94 */
|
||||
0x00,0x60,0x30,0x18,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00, /* 95 */
|
||||
0x00,0x30,0x78,0xCC,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00, /* 96 */
|
||||
0x00,0x60,0x30,0x18,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00, /* 97 */
|
||||
0x00,0x00,0xC6,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7E,0x06,0x0C,0x78,0x00, /* 98 */
|
||||
0x00,0xC6,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00, /* 99 */
|
||||
0x00,0xC6,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00, /* 9A */
|
||||
0x00,0x18,0x18,0x7E,0xC3,0xC0,0xC0,0xC0,0xC3,0x7E,0x18,0x18,0x00,0x00,0x00,0x00, /* 9B */
|
||||
0x00,0x38,0x6C,0x64,0x60,0xF0,0x60,0x60,0x60,0x60,0xE6,0xFC,0x00,0x00,0x00,0x00, /* 9C */
|
||||
0x00,0x00,0xC3,0x66,0x3C,0x18,0xFF,0x18,0xFF,0x18,0x18,0x18,0x00,0x00,0x00,0x00, /* 9D */
|
||||
0x00,0xFC,0x66,0x66,0x7C,0x62,0x66,0x6F,0x66,0x66,0x66,0xF3,0x00,0x00,0x00,0x00, /* 9E */
|
||||
0x00,0x0E,0x1B,0x18,0x18,0x18,0x7E,0x18,0x18,0x18,0x18,0x18,0xD8,0x70,0x00,0x00, /* 9F */
|
||||
0x00,0x18,0x30,0x60,0x00,0x78,0x0C,0x7C,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00, /* A0 */
|
||||
0x00,0x0C,0x18,0x30,0x00,0x38,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00, /* A1 */
|
||||
0x00,0x18,0x30,0x60,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00, /* A2 */
|
||||
0x00,0x18,0x30,0x60,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00, /* A3 */
|
||||
0x00,0x00,0x76,0xDC,0x00,0xDC,0x66,0x66,0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x00, /* A4 */
|
||||
0x76,0xDC,0x00,0xC6,0xE6,0xF6,0xFE,0xDE,0xCE,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00, /* A5 */
|
||||
0x00,0x3C,0x6C,0x6C,0x3E,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* A6 */
|
||||
0x00,0x38,0x6C,0x6C,0x38,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* A7 */
|
||||
0x00,0x00,0x30,0x30,0x00,0x30,0x30,0x60,0xC0,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00, /* A8 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00, /* A9 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x06,0x06,0x06,0x06,0x00,0x00,0x00,0x00,0x00, /* AA */
|
||||
0x00,0xC0,0xC0,0xC2,0xC6,0xCC,0x18,0x30,0x60,0xCE,0x9B,0x06,0x0C,0x1F,0x00,0x00, /* AB */
|
||||
0x00,0xC0,0xC0,0xC2,0xC6,0xCC,0x18,0x30,0x66,0xCE,0x96,0x3E,0x06,0x06,0x00,0x00, /* AC */
|
||||
0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x18,0x3C,0x3C,0x3C,0x18,0x00,0x00,0x00,0x00, /* AD */
|
||||
0x00,0x00,0x00,0x00,0x00,0x36,0x6C,0xD8,0x6C,0x36,0x00,0x00,0x00,0x00,0x00,0x00, /* AE */
|
||||
0x00,0x00,0x00,0x00,0x00,0xD8,0x6C,0x36,0x6C,0xD8,0x00,0x00,0x00,0x00,0x00,0x00, /* AF */
|
||||
0x11,0x44,0x11,0x44,0x11,0x44,0x11,0x44,0x11,0x44,0x11,0x44,0x11,0x44,0x11,0x44, /* B0 */
|
||||
0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA, /* B1 */
|
||||
0xDD,0x77,0xDD,0x77,0xDD,0x77,0xDD,0x77,0xDD,0x77,0xDD,0x77,0xDD,0x77,0xDD,0x77, /* B2 */
|
||||
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, /* B3 */
|
||||
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xF8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, /* B4 */
|
||||
0x18,0x18,0x18,0x18,0x18,0xF8,0x18,0xF8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, /* B5 */
|
||||
0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xF6,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, /* B6 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, /* B7 */
|
||||
0x00,0x00,0x00,0x00,0x00,0xF8,0x18,0xF8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, /* B8 */
|
||||
0x36,0x36,0x36,0x36,0x36,0xF6,0x06,0xF6,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, /* B9 */
|
||||
0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, /* BA */
|
||||
0x00,0x00,0x00,0x00,0x00,0xFE,0x06,0xF6,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, /* BB */
|
||||
0x36,0x36,0x36,0x36,0x36,0xF6,0x06,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* BC */
|
||||
0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* BD */
|
||||
0x18,0x18,0x18,0x18,0x18,0xF8,0x18,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* BE */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, /* BF */
|
||||
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* C0 */
|
||||
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* C1 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, /* C2 */
|
||||
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, /* C3 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* C4 */
|
||||
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xFF,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, /* C5 */
|
||||
0x18,0x18,0x18,0x18,0x18,0x1F,0x18,0x1F,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, /* C6 */
|
||||
0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, /* C7 */
|
||||
0x36,0x36,0x36,0x36,0x36,0x37,0x30,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* C8 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x3F,0x30,0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, /* C9 */
|
||||
0x36,0x36,0x36,0x36,0x36,0xF7,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* CA */
|
||||
0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xF7,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, /* CB */
|
||||
0x36,0x36,0x36,0x36,0x36,0x37,0x30,0x37,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, /* CC */
|
||||
0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* CD */
|
||||
0x36,0x36,0x36,0x36,0x36,0xF7,0x00,0xF7,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, /* CE */
|
||||
0x18,0x18,0x18,0x18,0x18,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* CF */
|
||||
0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* D0 */
|
||||
0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, /* D1 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, /* D2 */
|
||||
0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* D3 */
|
||||
0x18,0x18,0x18,0x18,0x18,0x1F,0x18,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* D4 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x1F,0x18,0x1F,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, /* D5 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, /* D6 */
|
||||
0x36,0x36,0x36,0x36,0x36,0x36,0x36,0xFF,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36, /* D7 */
|
||||
0x18,0x18,0x18,0x18,0x18,0xFF,0x18,0xFF,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, /* D8 */
|
||||
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* D9 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, /* DA */
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* DB */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* DC */
|
||||
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, /* DD */
|
||||
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F, /* DE */
|
||||
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* DF */
|
||||
0x00,0x00,0x00,0x00,0x00,0x76,0xDC,0xD8,0xD8,0xD8,0xDC,0x76,0x00,0x00,0x00,0x00, /* E0 */
|
||||
0x00,0x00,0x78,0xCC,0xCC,0xCC,0xD8,0xCC,0xC6,0xC6,0xC6,0xCC,0x00,0x00,0x00,0x00, /* E1 */
|
||||
0x00,0x00,0xFE,0xC6,0xC6,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0x00, /* E2 */
|
||||
0x00,0x00,0x00,0x00,0xFE,0x6C,0x6C,0x6C,0x6C,0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00, /* E3 */
|
||||
0x00,0x00,0x00,0xFE,0xC6,0x60,0x30,0x18,0x30,0x60,0xC6,0xFE,0x00,0x00,0x00,0x00, /* E4 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x7E,0xD8,0xD8,0xD8,0xD8,0xD8,0x70,0x00,0x00,0x00,0x00, /* E5 */
|
||||
0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x7C,0x60,0x60,0xC0,0x00,0x00,0x00, /* E6 */
|
||||
0x00,0x00,0x00,0x00,0x76,0xDC,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00, /* E7 */
|
||||
0x00,0x00,0x00,0x7E,0x18,0x3C,0x66,0x66,0x66,0x3C,0x18,0x7E,0x00,0x00,0x00,0x00, /* E8 */
|
||||
0x00,0x00,0x00,0x38,0x6C,0xC6,0xC6,0xFE,0xC6,0xC6,0x6C,0x38,0x00,0x00,0x00,0x00, /* E9 */
|
||||
0x00,0x00,0x38,0x6C,0xC6,0xC6,0xC6,0x6C,0x6C,0x6C,0x6C,0xEE,0x00,0x00,0x00,0x00, /* EA */
|
||||
0x00,0x00,0x1E,0x30,0x18,0x0C,0x3E,0x66,0x66,0x66,0x66,0x3C,0x00,0x00,0x00,0x00, /* EB */
|
||||
0x00,0x00,0x00,0x00,0x00,0x7E,0xDB,0xDB,0xDB,0x7E,0x00,0x00,0x00,0x00,0x00,0x00, /* EC */
|
||||
0x00,0x00,0x00,0x03,0x06,0x7E,0xDB,0xDB,0xF3,0x7E,0x60,0xC0,0x00,0x00,0x00,0x00, /* ED */
|
||||
0x00,0x00,0x1C,0x30,0x60,0x60,0x7C,0x60,0x60,0x60,0x30,0x1C,0x00,0x00,0x00,0x00, /* EE */
|
||||
0x00,0x00,0x00,0x7C,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00, /* EF */
|
||||
0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0xFE,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00, /* F0 */
|
||||
0x00,0x00,0x00,0x00,0x18,0x18,0x7E,0x18,0x18,0x00,0x00,0xFF,0x00,0x00,0x00,0x00, /* F1 */
|
||||
0x00,0x00,0x00,0x30,0x18,0x0C,0x06,0x0C,0x18,0x30,0x00,0x7E,0x00,0x00,0x00,0x00, /* F2 */
|
||||
0x00,0x00,0x00,0x0C,0x18,0x30,0x60,0x30,0x18,0x0C,0x00,0x7E,0x00,0x00,0x00,0x00, /* F3 */
|
||||
0x00,0x00,0x0E,0x1B,0x1B,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, /* F4 */
|
||||
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xD8,0xD8,0xD8,0x70,0x00,0x00,0x00,0x00, /* F5 */
|
||||
0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x7E,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00, /* F6 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x76,0xDC,0x00,0x76,0xDC,0x00,0x00,0x00,0x00,0x00,0x00, /* F7 */
|
||||
0x00,0x38,0x6C,0x6C,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* F8 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* F9 */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* FA */
|
||||
0x00,0x0F,0x0C,0x0C,0x0C,0x0C,0x0C,0xEC,0x6C,0x6C,0x3C,0x1C,0x00,0x00,0x00,0x00, /* FB */
|
||||
0x00,0xD8,0x6C,0x6C,0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* FC */
|
||||
0x00,0x70,0xD8,0x30,0x60,0xC8,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* FD */
|
||||
0x00,0x00,0x00,0x00,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x00,0x00,0x00,0x00,0x00, /* FE */
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* FF */
|
||||
};
|
||||
|
||||
return (font_eng[(int)c*OSD_FONT_HEIGHT + y] >> (7-x))&1;
|
||||
} //pixel()
|
||||
|
||||
static int contour(char c, int x, int y) {
|
||||
|
||||
static const u16 font_eng_contour[256*(OSD_FONT_HEIGHT+2)] =
|
||||
{
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 00 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 01 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 02 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 03 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 04 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 05 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 06 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 07 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 08 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 09 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 0A */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 0B */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 0C */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 0D */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 0E */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 0F */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 10 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 11 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 12 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 13 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 14 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 15 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 16 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 17 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 18 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 19 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 1A */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 1B */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 1C */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 1D */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 1E */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 1F */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 20 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 21 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 22 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 23 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 24 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 25 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 26 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 27 */
|
||||
0x000,0x000,0x03C,0x064,0x0CC,0x198,0x198,0x198,0x198,0x198,0x198,0x0CC,0x064,0x03C,0x000,0x000,0x000,0x000, /* 28 */
|
||||
0x000,0x000,0x0F0,0x098,0x0CC,0x066,0x066,0x066,0x066,0x066,0x066,0x0CC,0x098,0x0F0,0x000,0x000,0x000,0x000, /* 29 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x0CC,0x132,0x186,0x201,0x186,0x132,0x0CC,0x000,0x000,0x000,0x000,0x000,0x000, /* 2A */
|
||||
0x000,0x000,0x000,0x000,0x000,0x030,0x048,0x0CC,0x102,0x0CC,0x048,0x030,0x000,0x000,0x000,0x000,0x000,0x000, /* 2B */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x078,0x048,0x048,0x0C8,0x098,0x0F0,0x000,0x000,0x000, /* 2C */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x3FE,0x202,0x3FE,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 2D */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x030,0x048,0x048,0x030,0x000,0x000,0x000,0x000, /* 2E */
|
||||
0x000,0x000,0x000,0x000,0x00E,0x01A,0x032,0x066,0x0CC,0x198,0x330,0x260,0x2C0,0x380,0x000,0x000,0x000,0x000, /* 2F */
|
||||
0x000,0x000,0x0FC,0x186,0x333,0x249,0x279,0x201,0x201,0x279,0x249,0x333,0x186,0x0FC,0x000,0x000,0x000,0x000, /* 30 */
|
||||
0x000,0x000,0x078,0x0C8,0x188,0x308,0x3C8,0x048,0x048,0x048,0x048,0x1CE,0x102,0x1FE,0x000,0x000,0x000,0x000, /* 31 */
|
||||
0x000,0x000,0x1FC,0x304,0x272,0x3D2,0x024,0x048,0x090,0x120,0x25E,0x272,0x202,0x3FE,0x000,0x000,0x000,0x000, /* 32 */
|
||||
0x000,0x000,0x1FC,0x306,0x272,0x3D2,0x0F2,0x086,0x0F2,0x012,0x3D2,0x272,0x306,0x1FC,0x000,0x000,0x000,0x000, /* 33 */
|
||||
0x000,0x000,0x03C,0x064,0x0C4,0x184,0x324,0x266,0x202,0x3E6,0x024,0x066,0x042,0x07E,0x000,0x000,0x000,0x000, /* 34 */
|
||||
0x000,0x000,0x3FE,0x202,0x27E,0x240,0x27C,0x206,0x3F2,0x012,0x3D2,0x272,0x306,0x1FC,0x000,0x000,0x000,0x000, /* 35 */
|
||||
0x000,0x000,0x0F8,0x188,0x338,0x260,0x27C,0x206,0x272,0x252,0x252,0x272,0x306,0x1FC,0x000,0x000,0x000,0x000, /* 36 */
|
||||
0x000,0x000,0x3FE,0x202,0x272,0x3F2,0x032,0x064,0x0C8,0x090,0x090,0x090,0x090,0x0F0,0x000,0x000,0x000,0x000, /* 37 */
|
||||
0x000,0x000,0x1FC,0x306,0x272,0x252,0x272,0x306,0x272,0x252,0x252,0x272,0x306,0x1FC,0x000,0x000,0x000,0x000, /* 38 */
|
||||
0x000,0x000,0x1FC,0x306,0x272,0x252,0x272,0x302,0x1F2,0x012,0x012,0x1E6,0x10C,0x1F8,0x000,0x000,0x000,0x000, /* 39 */
|
||||
0x000,0x000,0x000,0x000,0x078,0x048,0x048,0x078,0x000,0x078,0x048,0x048,0x078,0x000,0x000,0x000,0x000,0x000, /* 3A */
|
||||
0x000,0x000,0x000,0x000,0x078,0x048,0x048,0x078,0x000,0x078,0x048,0x0C8,0x098,0x0F0,0x000,0x000,0x000,0x000, /* 3B */
|
||||
0x000,0x000,0x000,0x01E,0x012,0x024,0x048,0x090,0x120,0x090,0x048,0x024,0x012,0x01E,0x000,0x000,0x000,0x000, /* 3C */
|
||||
0x000,0x000,0x000,0x000,0x000,0x1FE,0x102,0x1FE,0x1FE,0x102,0x1FE,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 3D */
|
||||
0x000,0x000,0x000,0x1E0,0x120,0x090,0x048,0x024,0x012,0x024,0x048,0x090,0x120,0x1E0,0x000,0x000,0x000,0x000, /* 3E */
|
||||
0x000,0x000,0x1FC,0x306,0x272,0x272,0x3E6,0x04C,0x048,0x048,0x078,0x048,0x048,0x078,0x000,0x000,0x000,0x000, /* 3F */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 40 */
|
||||
0x000,0x000,0x070,0x0D8,0x18C,0x326,0x252,0x272,0x202,0x272,0x252,0x252,0x252,0x3DE,0x000,0x000,0x000,0x000, /* 41 */
|
||||
0x000,0x000,0x3FC,0x206,0x332,0x132,0x132,0x106,0x132,0x132,0x132,0x332,0x206,0x3FC,0x000,0x000,0x000,0x000, /* 42 */
|
||||
0x000,0x000,0x0FC,0x186,0x332,0x27A,0x24E,0x240,0x240,0x24E,0x27A,0x332,0x186,0x0FC,0x000,0x000,0x000,0x000, /* 43 */
|
||||
0x000,0x000,0x3F8,0x20C,0x326,0x132,0x132,0x132,0x132,0x132,0x132,0x326,0x20C,0x3F8,0x000,0x000,0x000,0x000, /* 44 */
|
||||
0x000,0x000,0x3FE,0x202,0x332,0x13A,0x12E,0x108,0x128,0x13E,0x13A,0x332,0x202,0x3FE,0x000,0x000,0x000,0x000, /* 45 */
|
||||
0x000,0x000,0x3FE,0x202,0x332,0x13A,0x12E,0x108,0x128,0x138,0x120,0x330,0x210,0x3F0,0x000,0x000,0x000,0x000, /* 46 */
|
||||
0x000,0x000,0x0FC,0x184,0x332,0x27A,0x24E,0x27E,0x242,0x272,0x252,0x332,0x18A,0x0FE,0x000,0x000,0x000,0x000, /* 47 */
|
||||
0x000,0x000,0x3DE,0x252,0x252,0x252,0x272,0x202,0x272,0x252,0x252,0x252,0x252,0x3DE,0x000,0x000,0x000,0x000, /* 48 */
|
||||
0x000,0x000,0x0FC,0x084,0x0CC,0x048,0x048,0x048,0x048,0x048,0x048,0x0CC,0x084,0x0FC,0x000,0x000,0x000,0x000, /* 49 */
|
||||
0x000,0x000,0x07E,0x042,0x066,0x024,0x024,0x024,0x3E4,0x264,0x264,0x264,0x30C,0x1F8,0x000,0x000,0x000,0x000, /* 4A */
|
||||
0x000,0x000,0x3FE,0x232,0x332,0x132,0x126,0x10C,0x10C,0x126,0x132,0x332,0x232,0x3FE,0x000,0x000,0x000,0x000, /* 4B */
|
||||
0x000,0x000,0x3F0,0x210,0x330,0x120,0x120,0x120,0x120,0x12E,0x13A,0x332,0x202,0x3FE,0x000,0x000,0x000,0x000, /* 4C */
|
||||
0x000,0x000,0x3CF,0x279,0x231,0x201,0x201,0x249,0x279,0x249,0x249,0x249,0x249,0x3CF,0x000,0x000,0x000,0x000, /* 4D */
|
||||
0x000,0x000,0x3DE,0x252,0x232,0x212,0x202,0x242,0x262,0x272,0x252,0x252,0x252,0x3DE,0x000,0x000,0x000,0x000, /* 4E */
|
||||
0x000,0x000,0x1FC,0x306,0x272,0x252,0x252,0x252,0x252,0x252,0x252,0x272,0x306,0x1FC,0x000,0x000,0x000,0x000, /* 4F */
|
||||
0x000,0x000,0x3FC,0x206,0x332,0x132,0x132,0x106,0x13C,0x120,0x120,0x330,0x210,0x3F0,0x000,0x000,0x000,0x000, /* 50 */
|
||||
0x000,0x000,0x1FC,0x306,0x272,0x252,0x252,0x252,0x252,0x272,0x252,0x242,0x306,0x1E6,0x022,0x03E,0x000,0x000, /* 51 */
|
||||
0x000,0x000,0x3FC,0x206,0x332,0x132,0x132,0x106,0x126,0x132,0x132,0x332,0x232,0x3FE,0x000,0x000,0x000,0x000, /* 52 */
|
||||
0x000,0x000,0x1FC,0x306,0x272,0x272,0x33E,0x18C,0x0E6,0x3F2,0x272,0x272,0x306,0x1FC,0x000,0x000,0x000,0x000, /* 53 */
|
||||
0x000,0x000,0x3FF,0x201,0x201,0x2CD,0x3CF,0x048,0x048,0x048,0x048,0x0CC,0x084,0x0FC,0x000,0x000,0x000,0x000, /* 54 */
|
||||
0x000,0x000,0x3DE,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x252,0x272,0x306,0x1FC,0x000,0x000,0x000,0x000, /* 55 */
|
||||
0x000,0x000,0x3CF,0x249,0x249,0x249,0x249,0x249,0x249,0x279,0x333,0x186,0x0CC,0x078,0x000,0x000,0x000,0x000, /* 56 */
|
||||
0x000,0x000,0x3CF,0x249,0x249,0x249,0x249,0x279,0x249,0x249,0x201,0x333,0x132,0x1FE,0x000,0x000,0x000,0x000, /* 57 */
|
||||
0x000,0x000,0x3CF,0x249,0x279,0x333,0x086,0x0CC,0x0CC,0x186,0x333,0x279,0x249,0x3CF,0x000,0x000,0x000,0x000, /* 58 */
|
||||
0x000,0x000,0x3CF,0x249,0x249,0x279,0x333,0x186,0x0CC,0x048,0x048,0x0CC,0x084,0x0FC,0x000,0x000,0x000,0x000, /* 59 */
|
||||
0x000,0x000,0x3FF,0x201,0x279,0x2F3,0x3E6,0x0CC,0x198,0x337,0x26D,0x279,0x201,0x3FF,0x000,0x000,0x000,0x000, /* 5A */
|
||||
0x000,0x000,0x0FC,0x084,0x09C,0x090,0x090,0x090,0x090,0x090,0x090,0x09C,0x084,0x0FC,0x000,0x000,0x000,0x000, /* 5B */
|
||||
0x000,0x000,0x000,0x380,0x2C0,0x260,0x230,0x318,0x18C,0x0C6,0x062,0x032,0x01A,0x00E,0x000,0x000,0x000,0x000, /* 5C */
|
||||
0x000,0x000,0x0FC,0x084,0x0E4,0x024,0x024,0x024,0x024,0x024,0x024,0x0E4,0x084,0x0FC,0x000,0x000,0x000,0x000, /* 5D */
|
||||
0x070,0x0D8,0x18C,0x326,0x272,0x3DE,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 5E */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x3FF,0x201,0x3FF,0x000,0x000, /* 5F */
|
||||
0x0F0,0x090,0x098,0x0C8,0x078,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 60 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x1F8,0x10C,0x1E4,0x304,0x264,0x264,0x266,0x312,0x1FE,0x000,0x000,0x000,0x000, /* 61 */
|
||||
0x000,0x000,0x3E0,0x220,0x320,0x138,0x10C,0x126,0x132,0x132,0x132,0x132,0x106,0x1FC,0x000,0x000,0x000,0x000, /* 62 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x1FC,0x306,0x272,0x25E,0x240,0x25E,0x272,0x306,0x1FC,0x000,0x000,0x000,0x000, /* 63 */
|
||||
0x000,0x000,0x07C,0x044,0x064,0x0E4,0x184,0x324,0x264,0x264,0x264,0x266,0x312,0x1FE,0x000,0x000,0x000,0x000, /* 64 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x1FC,0x306,0x272,0x202,0x27E,0x25E,0x272,0x306,0x1FC,0x000,0x000,0x000,0x000, /* 65 */
|
||||
0x000,0x000,0x0F8,0x18C,0x124,0x134,0x33C,0x210,0x330,0x120,0x120,0x330,0x210,0x3F0,0x000,0x000,0x000,0x000, /* 66 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x1FE,0x312,0x266,0x264,0x264,0x264,0x264,0x304,0x3E4,0x264,0x30C,0x1F8,0x000, /* 67 */
|
||||
0x000,0x000,0x3E0,0x220,0x320,0x13C,0x126,0x112,0x132,0x132,0x132,0x332,0x232,0x3FE,0x000,0x000,0x000,0x000, /* 68 */
|
||||
0x000,0x000,0x078,0x048,0x048,0x0F8,0x088,0x0C8,0x048,0x048,0x048,0x0CC,0x084,0x0FC,0x000,0x000,0x000,0x000, /* 69 */
|
||||
0x000,0x000,0x01E,0x012,0x012,0x03E,0x022,0x032,0x012,0x012,0x012,0x012,0x1F2,0x132,0x132,0x186,0x0FC,0x000, /* 6A */
|
||||
0x000,0x000,0x3E0,0x220,0x320,0x13E,0x132,0x126,0x10C,0x10C,0x126,0x332,0x232,0x3FE,0x000,0x000,0x000,0x000, /* 6B */
|
||||
0x000,0x000,0x0F8,0x088,0x0C8,0x048,0x048,0x048,0x048,0x048,0x048,0x0CC,0x084,0x0FC,0x000,0x000,0x000,0x000, /* 6C */
|
||||
0x000,0x000,0x000,0x000,0x000,0x3FE,0x233,0x201,0x249,0x249,0x249,0x249,0x249,0x3FF,0x000,0x000,0x000,0x000, /* 6D */
|
||||
0x000,0x000,0x000,0x000,0x000,0x3FC,0x246,0x332,0x132,0x132,0x132,0x132,0x132,0x1FE,0x000,0x000,0x000,0x000, /* 6E */
|
||||
0x000,0x000,0x000,0x000,0x000,0x1FC,0x306,0x272,0x252,0x252,0x252,0x272,0x306,0x1FC,0x000,0x000,0x000,0x000, /* 6F */
|
||||
0x000,0x000,0x000,0x000,0x000,0x3FC,0x246,0x332,0x132,0x132,0x132,0x132,0x106,0x13C,0x330,0x210,0x3F0,0x000, /* 70 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x1FE,0x312,0x266,0x264,0x264,0x264,0x264,0x304,0x1E4,0x066,0x042,0x07E,0x000, /* 71 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x3FC,0x246,0x312,0x132,0x13E,0x120,0x330,0x210,0x3F0,0x000,0x000,0x000,0x000, /* 72 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x1FC,0x306,0x272,0x33E,0x088,0x3E6,0x272,0x306,0x1FC,0x000,0x000,0x000,0x000, /* 73 */
|
||||
0x000,0x000,0x070,0x0D0,0x090,0x39C,0x204,0x39C,0x090,0x090,0x09E,0x092,0x0C6,0x07C,0x000,0x000,0x000,0x000, /* 74 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x3FC,0x264,0x264,0x264,0x264,0x264,0x266,0x312,0x1FE,0x000,0x000,0x000,0x000, /* 75 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x3CF,0x249,0x249,0x249,0x279,0x333,0x186,0x0CC,0x078,0x000,0x000,0x000,0x000, /* 76 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x3CF,0x249,0x249,0x279,0x249,0x249,0x201,0x333,0x1FE,0x000,0x000,0x000,0x000, /* 77 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x3CF,0x279,0x333,0x084,0x0CC,0x084,0x333,0x279,0x3CF,0x000,0x000,0x000,0x000, /* 78 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x3DE,0x252,0x252,0x252,0x252,0x252,0x272,0x302,0x1F2,0x3E6,0x20C,0x3F8,0x000, /* 79 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x3FE,0x202,0x264,0x3C8,0x090,0x13E,0x272,0x202,0x3FE,0x000,0x000,0x000,0x000, /* 7A */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 7B */
|
||||
0x000,0x000,0x078,0x048,0x048,0x048,0x048,0x078,0x048,0x048,0x048,0x048,0x048,0x078,0x000,0x000,0x000,0x000, /* 7C */
|
||||
0x000,0x000,0x0E0,0x110,0x0C8,0x048,0x04C,0x022,0x04C,0x048,0x048,0x0C8,0x110,0x0E0,0x000,0x000,0x000,0x000, /* 7D */
|
||||
0x000,0x000,0x1EE,0x312,0x246,0x3BC,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 7E */
|
||||
0x000,0x000,0x000,0x000,0x020,0x050,0x088,0x124,0x252,0x252,0x272,0x202,0x1FC,0x000,0x000,0x000,0x000,0x000, /* 7F */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 80 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 81 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 82 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 83 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 84 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 85 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 86 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 87 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 88 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 89 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 8A */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 8B */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 8C */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 8D */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 8E */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 8F */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 90 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 91 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 92 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 93 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 94 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 95 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 96 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 97 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 98 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 99 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 9A */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 9B */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 9C */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 9D */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 9E */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* 9F */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* A0 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* A1 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* A2 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* A3 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* A4 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* A5 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* A6 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* A7 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* A8 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* A9 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* AA */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* AB */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* AC */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* AD */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* AE */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* AF */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* B0 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* B1 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* B2 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* B3 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* B4 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* B5 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* B6 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* B7 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* B8 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* B9 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* BA */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* BB */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* BC */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* BD */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* BE */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* BF */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* C0 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* C1 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* C2 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* C3 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* C4 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* C5 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* C6 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* C7 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* C8 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* C9 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* CA */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* CB */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* CC */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* CD */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* CE */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* CF */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* D0 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* D1 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* D2 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* D3 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* D4 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* D5 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* D6 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* D7 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* D8 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* D9 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* DA */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* DB */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* DC */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* DD */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* DE */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* DF */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* E0 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* E1 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* E2 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* E3 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* E4 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* E5 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* E6 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* E7 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* E8 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* E9 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* EA */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* EB */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* EC */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* ED */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* EE */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* EF */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* F0 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* F1 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* F2 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* F3 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* F4 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* F5 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* F6 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* F7 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* F8 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x078,0x048,0x048,0x078,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* F9 */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x078,0x048,0x078,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* FA */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* FB */
|
||||
0x000,0x3F8,0x20C,0x304,0x104,0x104,0x104,0x104,0x1FC,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* FC */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000, /* FD */
|
||||
0x000,0x000,0x000,0x000,0x1FC,0x104,0x104,0x104,0x104,0x104,0x104,0x104,0x1FC,0x000,0x000,0x000,0x000,0x000, /* FE */
|
||||
0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000,0x000 /* FF */
|
||||
};
|
||||
|
||||
return (font_eng_contour[(int)c*(OSD_FONT_HEIGHT+2) + y] >> (9-x))&1;
|
||||
} //contour()
|
||||
|
||||
}; //class
|
||||
|
||||
} //namespace
|
||||
|
||||
|
||||
#endif
|
|
@ -1,940 +0,0 @@
|
|||
#include "softrender.h"
|
||||
|
||||
#define xx 1
|
||||
#define zz 0
|
||||
|
||||
namespace softrender {
|
||||
|
||||
class v3sysfont {
|
||||
public:
|
||||
static int height() { return 7; }
|
||||
static int width(char c) { return charByte(c,0); }
|
||||
static int pixel(char c, int x, int y) { return charByte(c,width(c)*y+x+1); }
|
||||
static bool valid(char c) { return c>=32; }
|
||||
static bool haveContour() { return false; }
|
||||
|
||||
static char charByte(byte c, int i) {
|
||||
|
||||
if (c < 32 || c > 128)
|
||||
c = 2;
|
||||
else
|
||||
c -= 32;
|
||||
|
||||
static const char sbA[]=
|
||||
{4,
|
||||
zz,xx,xx,zz,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,xx,xx,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx};
|
||||
|
||||
static const char ssA[]=
|
||||
{5,
|
||||
zz,zz,zz,zz,zz,
|
||||
zz,zz,zz,zz,zz,
|
||||
zz,xx,xx,zz,zz,
|
||||
xx,zz,zz,xx,zz,
|
||||
xx,zz,zz,xx,zz,
|
||||
xx,zz,zz,xx,zz,
|
||||
zz,xx,xx,zz,xx};
|
||||
|
||||
static const char sbB[]=
|
||||
{4,
|
||||
xx,xx,xx,zz,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,xx,xx,zz,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,xx,xx,zz};
|
||||
|
||||
static const char ssB[]=
|
||||
{4,
|
||||
xx,zz,zz,zz,
|
||||
xx,zz,zz,zz,
|
||||
xx,xx,xx,zz,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,xx,xx,zz};
|
||||
|
||||
static const char sbC[]=
|
||||
{4,
|
||||
zz,xx,xx,zz,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,zz,
|
||||
xx,zz,zz,zz,
|
||||
xx,zz,zz,zz,
|
||||
xx,zz,zz,xx,
|
||||
zz,xx,xx,zz};
|
||||
|
||||
static const char ssC[]=
|
||||
{3,
|
||||
zz,zz,zz,
|
||||
zz,zz,zz,
|
||||
zz,xx,xx,
|
||||
xx,zz,zz,
|
||||
xx,zz,zz,
|
||||
xx,zz,zz,
|
||||
zz,xx,xx};
|
||||
|
||||
static const char sbD[]=
|
||||
{4,
|
||||
xx,xx,zz,zz,
|
||||
xx,zz,xx,zz,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,xx,zz,
|
||||
xx,xx,zz,zz};
|
||||
|
||||
|
||||
static const char ssD[]=
|
||||
{4,
|
||||
zz,zz,zz,xx,
|
||||
zz,zz,zz,xx,
|
||||
zz,xx,xx,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
zz,xx,xx,xx};
|
||||
|
||||
static const char sbE[]=
|
||||
{4,
|
||||
xx,xx,xx,xx,
|
||||
xx,zz,zz,zz,
|
||||
xx,zz,zz,zz,
|
||||
xx,xx,xx,zz,
|
||||
xx,zz,zz,zz,
|
||||
xx,zz,zz,zz,
|
||||
xx,xx,xx,xx};
|
||||
|
||||
static const char ssE[]=
|
||||
{4,
|
||||
zz,zz,zz,zz,
|
||||
zz,zz,zz,zz,
|
||||
zz,xx,xx,zz,
|
||||
xx,zz,zz,xx,
|
||||
xx,xx,xx,zz,
|
||||
xx,zz,zz,zz,
|
||||
zz,xx,xx,zz};
|
||||
|
||||
static const char sbF[]=
|
||||
{4,
|
||||
xx,xx,xx,xx,
|
||||
xx,zz,zz,zz,
|
||||
xx,zz,zz,zz,
|
||||
xx,xx,xx,zz,
|
||||
xx,zz,zz,zz,
|
||||
xx,zz,zz,zz,
|
||||
xx,zz,zz,zz};
|
||||
|
||||
static const char ssF[]=
|
||||
{4,
|
||||
zz,zz,xx,zz,
|
||||
zz,xx,zz,xx,
|
||||
zz,xx,zz,zz,
|
||||
xx,xx,xx,zz,
|
||||
zz,xx,zz,zz,
|
||||
zz,xx,zz,zz,
|
||||
zz,xx,zz,zz};
|
||||
|
||||
static const char sbG[]=
|
||||
{4,
|
||||
zz,xx,xx,zz,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,zz,
|
||||
xx,zz,zz,zz,
|
||||
xx,zz,xx,xx,
|
||||
xx,zz,zz,xx,
|
||||
zz,xx,xx,zz};
|
||||
|
||||
static const char ssG[]=
|
||||
{4,
|
||||
zz,zz,zz,zz,
|
||||
zz,zz,zz,zz,
|
||||
zz,xx,xx,zz,
|
||||
xx,zz,zz,zz,
|
||||
xx,zz,xx,xx,
|
||||
xx,zz,zz,xx,
|
||||
zz,xx,xx,zz};
|
||||
|
||||
|
||||
static const char sbH[]=
|
||||
{4,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,xx,xx,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx};
|
||||
|
||||
static const char ssH[]=
|
||||
{4,
|
||||
xx,zz,zz,zz,
|
||||
xx,zz,zz,zz,
|
||||
xx,xx,xx,zz,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx};
|
||||
|
||||
static const char sbI[]=
|
||||
{3,
|
||||
xx,xx,xx,
|
||||
zz,xx,zz,
|
||||
zz,xx,zz,
|
||||
zz,xx,zz,
|
||||
zz,xx,zz,
|
||||
zz,xx,zz,
|
||||
xx,xx,xx};
|
||||
|
||||
static const char ssI[]=
|
||||
{1,
|
||||
zz,
|
||||
xx,
|
||||
zz,
|
||||
xx,
|
||||
xx,
|
||||
xx,
|
||||
xx};
|
||||
|
||||
static const char sbJ[]=
|
||||
{4,
|
||||
zz,zz,zz,xx,
|
||||
zz,zz,zz,xx,
|
||||
zz,zz,zz,xx,
|
||||
zz,zz,zz,xx,
|
||||
zz,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
zz,xx,xx,zz};
|
||||
|
||||
static const char ssJ[]=
|
||||
{3,
|
||||
zz,zz,xx,
|
||||
zz,zz,zz,
|
||||
zz,zz,xx,
|
||||
zz,zz,xx,
|
||||
zz,zz,xx,
|
||||
xx,zz,xx,
|
||||
zz,xx,zz};
|
||||
|
||||
static const char sbK[]=
|
||||
{4,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,xx,zz,
|
||||
xx,xx,zz,zz,
|
||||
xx,xx,xx,zz,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx};
|
||||
|
||||
static const char ssK[]=
|
||||
{3,
|
||||
xx,zz,zz,
|
||||
xx,zz,zz,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
xx,xx,zz,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx};
|
||||
|
||||
static const char sbL[]=
|
||||
{3,
|
||||
xx,zz,zz,
|
||||
xx,zz,zz,
|
||||
xx,zz,zz,
|
||||
xx,zz,zz,
|
||||
xx,zz,zz,
|
||||
xx,zz,zz,
|
||||
xx,xx,xx};
|
||||
|
||||
static const char ssL[]=
|
||||
{3,
|
||||
zz,zz,zz,
|
||||
zz,zz,zz,
|
||||
xx,zz,zz,
|
||||
xx,zz,zz,
|
||||
xx,zz,zz,
|
||||
xx,zz,zz,
|
||||
xx,xx,xx};
|
||||
|
||||
static const char sbM[]=
|
||||
{5,
|
||||
xx,zz,zz,zz,xx,
|
||||
xx,xx,zz,xx,xx,
|
||||
xx,zz,xx,zz,xx,
|
||||
xx,zz,xx,zz,xx,
|
||||
xx,zz,zz,zz,xx,
|
||||
xx,zz,zz,zz,xx,
|
||||
xx,zz,zz,zz,xx};
|
||||
|
||||
static const char ssM[]=
|
||||
{5,
|
||||
zz,zz,zz,zz,zz,
|
||||
zz,zz,zz,zz,zz,
|
||||
zz,xx,zz,xx,zz,
|
||||
xx,zz,xx,zz,xx,
|
||||
xx,zz,xx,zz,xx,
|
||||
xx,zz,xx,zz,xx,
|
||||
xx,zz,xx,zz,xx};
|
||||
|
||||
static const char sbN[]=
|
||||
{4,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,xx,zz,xx,
|
||||
xx,zz,xx,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx};
|
||||
|
||||
static const char ssN[]=
|
||||
{4,
|
||||
zz,zz,zz,zz,
|
||||
zz,zz,zz,zz,
|
||||
xx,zz,xx,zz,
|
||||
xx,xx,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx};
|
||||
|
||||
static const char sbO[]=
|
||||
{4,
|
||||
zz,xx,xx,zz,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
zz,xx,xx,zz};
|
||||
|
||||
static const char ssO[]=
|
||||
{4,
|
||||
zz,zz,zz,zz,
|
||||
zz,zz,zz,zz,
|
||||
zz,xx,xx,zz,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
zz,xx,xx,zz};
|
||||
|
||||
static const char sbP[]=
|
||||
{4,
|
||||
xx,xx,xx,zz,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,xx,xx,zz,
|
||||
xx,zz,zz,zz,
|
||||
xx,zz,zz,zz,
|
||||
xx,zz,zz,zz};
|
||||
|
||||
static const char ssP[]=
|
||||
{4,
|
||||
zz,zz,zz,zz,
|
||||
zz,zz,zz,zz,
|
||||
xx,xx,xx,zz,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,xx,xx,zz,
|
||||
xx,zz,zz,zz};
|
||||
|
||||
static const char sbQ[]=
|
||||
{4,
|
||||
zz,xx,xx,zz,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,xx,zz,
|
||||
zz,xx,zz,xx};
|
||||
|
||||
static const char ssQ[]=
|
||||
{4,
|
||||
zz,zz,zz,zz,
|
||||
zz,zz,zz,zz,
|
||||
zz,xx,xx,zz,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,xx,zz,
|
||||
zz,xx,zz,xx};
|
||||
|
||||
static const char sbR[]=
|
||||
{4,
|
||||
xx,xx,xx,zz,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,xx,xx,zz,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx};
|
||||
|
||||
static const char ssR[]=
|
||||
{4,
|
||||
zz,zz,zz,zz,
|
||||
zz,zz,zz,zz,
|
||||
zz,xx,xx,zz,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,zz,
|
||||
xx,zz,zz,zz,
|
||||
xx,zz,zz,zz};
|
||||
|
||||
static const char sbS[]=
|
||||
{4,
|
||||
zz,xx,xx,zz,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,zz,
|
||||
zz,xx,xx,zz,
|
||||
zz,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
zz,xx,xx,zz,};
|
||||
|
||||
static const char ssS[]=
|
||||
{3,
|
||||
zz,zz,zz,
|
||||
zz,zz,zz,
|
||||
zz,xx,xx,
|
||||
xx,zz,zz,
|
||||
zz,xx,zz,
|
||||
zz,zz,xx,
|
||||
xx,xx,zz};
|
||||
|
||||
static const char sbT[]=
|
||||
{3,
|
||||
xx,xx,xx,
|
||||
zz,xx,zz,
|
||||
zz,xx,zz,
|
||||
zz,xx,zz,
|
||||
zz,xx,zz,
|
||||
zz,xx,zz,
|
||||
zz,xx,zz};
|
||||
|
||||
static const char ssT[]=
|
||||
{3,
|
||||
zz,xx,zz,
|
||||
zz,xx,zz,
|
||||
xx,xx,xx,
|
||||
zz,xx,zz,
|
||||
zz,xx,zz,
|
||||
zz,xx,zz,
|
||||
zz,xx,xx};
|
||||
|
||||
static const char sbU[]=
|
||||
{3,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
xx,xx,xx};
|
||||
|
||||
static const char ssU[]=
|
||||
{3,
|
||||
zz,zz,zz,
|
||||
zz,zz,zz,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
xx,xx,xx};
|
||||
|
||||
static const char sbV[]=
|
||||
{3,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
zz,xx,zz};
|
||||
|
||||
static const char ssV[]=
|
||||
{3,
|
||||
zz,zz,zz,
|
||||
zz,zz,zz,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
zz,xx,zz};
|
||||
|
||||
static const char sbW[]=
|
||||
{5,
|
||||
xx,zz,zz,zz,xx,
|
||||
xx,zz,zz,zz,xx,
|
||||
xx,zz,zz,zz,xx,
|
||||
xx,zz,xx,zz,xx,
|
||||
xx,zz,xx,zz,xx,
|
||||
xx,xx,zz,xx,xx,
|
||||
xx,zz,zz,zz,xx};
|
||||
|
||||
static const char ssW[]=
|
||||
{5,
|
||||
zz,zz,zz,zz,zz,
|
||||
zz,zz,zz,zz,zz,
|
||||
xx,zz,zz,zz,xx,
|
||||
xx,zz,xx,zz,xx,
|
||||
xx,zz,xx,zz,xx,
|
||||
xx,xx,zz,xx,xx,
|
||||
xx,zz,zz,zz,xx};
|
||||
|
||||
static const char sbX[]=
|
||||
{5,
|
||||
xx,zz,zz,zz,xx,
|
||||
xx,zz,zz,zz,xx,
|
||||
zz,xx,zz,xx,zz,
|
||||
zz,zz,xx,zz,zz,
|
||||
zz,xx,zz,xx,zz,
|
||||
xx,zz,zz,zz,xx,
|
||||
xx,zz,zz,zz,xx};
|
||||
|
||||
static const char ssX[]=
|
||||
{3,
|
||||
zz,zz,zz,
|
||||
zz,zz,zz,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
zz,xx,zz,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx};
|
||||
|
||||
static const char sbY[]=
|
||||
{3,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
zz,xx,zz,
|
||||
zz,xx,zz,
|
||||
zz,xx,zz,
|
||||
zz,xx,zz};
|
||||
|
||||
static const char ssY[]=
|
||||
{3,
|
||||
zz,zz,zz,
|
||||
zz,zz,zz,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
zz,xx,zz,
|
||||
zz,xx,zz,
|
||||
zz,xx,zz};
|
||||
|
||||
static const char sbZ[]=
|
||||
{5,
|
||||
xx,xx,xx,xx,xx,
|
||||
zz,zz,zz,zz,xx,
|
||||
zz,zz,zz,xx,zz,
|
||||
zz,zz,xx,zz,zz,
|
||||
zz,xx,zz,zz,zz,
|
||||
xx,zz,zz,zz,zz,
|
||||
xx,xx,xx,xx,xx};
|
||||
|
||||
static const char ssZ[]=
|
||||
{4,
|
||||
zz,zz,zz,zz,
|
||||
zz,zz,zz,zz,
|
||||
xx,xx,xx,xx,
|
||||
zz,zz,zz,xx,
|
||||
zz,zz,xx,zz,
|
||||
zz,xx,zz,zz,
|
||||
xx,xx,xx,xx};
|
||||
|
||||
static const char s1[]=
|
||||
{3,
|
||||
zz,xx,zz,
|
||||
xx,xx,zz,
|
||||
zz,xx,zz,
|
||||
zz,xx,zz,
|
||||
zz,xx,zz,
|
||||
zz,xx,zz,
|
||||
xx,xx,xx};
|
||||
|
||||
static const char s2[]=
|
||||
{4,
|
||||
zz,xx,xx,zz,
|
||||
xx,zz,zz,xx,
|
||||
zz,zz,zz,xx,
|
||||
zz,zz,zz,xx,
|
||||
zz,zz,xx,zz,
|
||||
zz,xx,zz,zz,
|
||||
xx,xx,xx,xx};
|
||||
|
||||
static const char s3[]=
|
||||
{4,
|
||||
xx,xx,xx,xx,
|
||||
zz,zz,zz,xx,
|
||||
zz,zz,zz,xx,
|
||||
zz,xx,xx,xx,
|
||||
zz,zz,zz,xx,
|
||||
zz,zz,zz,xx,
|
||||
xx,xx,xx,xx};
|
||||
|
||||
static const char s4[]=
|
||||
{4,
|
||||
xx,zz,xx,zz,
|
||||
xx,zz,xx,zz,
|
||||
xx,zz,xx,zz,
|
||||
xx,xx,xx,xx,
|
||||
zz,zz,xx,zz,
|
||||
zz,zz,xx,zz,
|
||||
zz,zz,xx,zz};
|
||||
|
||||
static const char s5[]=
|
||||
{4,
|
||||
xx,xx,xx,xx,
|
||||
xx,zz,zz,zz,
|
||||
xx,zz,zz,zz,
|
||||
xx,xx,xx,zz,
|
||||
zz,zz,zz,xx,
|
||||
zz,zz,zz,xx,
|
||||
xx,xx,xx,zz};
|
||||
|
||||
static const char s6[]=
|
||||
{4,
|
||||
zz,xx,xx,zz,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,zz,
|
||||
xx,xx,xx,zz,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
zz,xx,xx,zz};
|
||||
|
||||
static const char s7[]=
|
||||
{3,
|
||||
xx,xx,xx,
|
||||
zz,zz,xx,
|
||||
zz,zz,xx,
|
||||
zz,xx,zz,
|
||||
zz,xx,zz,
|
||||
zz,xx,zz,
|
||||
zz,xx,zz};
|
||||
|
||||
static const char s8[]=
|
||||
{4,
|
||||
zz,xx,xx,zz,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
zz,xx,xx,zz,
|
||||
xx,zz,zz,xx,
|
||||
xx,zz,zz,xx,
|
||||
zz,xx,xx,zz};
|
||||
|
||||
static const char s9[]=
|
||||
{3,
|
||||
xx,xx,xx,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
xx,xx,xx,
|
||||
zz,zz,xx,
|
||||
zz,zz,xx,
|
||||
xx,xx,xx};
|
||||
|
||||
static const char s0[]=
|
||||
{3,
|
||||
xx,xx,xx,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
xx,xx,xx};
|
||||
|
||||
static const char sQuote[]={3,
|
||||
xx,zz,xx,
|
||||
xx,zz,xx,
|
||||
zz,zz,zz,
|
||||
zz,zz,zz,
|
||||
zz,zz,zz,
|
||||
zz,zz,zz,
|
||||
zz,zz,zz};
|
||||
|
||||
static const char sYow[]={3,
|
||||
zz,xx,zz,
|
||||
xx,xx,xx,
|
||||
xx,xx,xx,
|
||||
xx,xx,xx,
|
||||
zz,xx,zz,
|
||||
zz,zz,zz,
|
||||
zz,xx,zz};
|
||||
|
||||
static const char sQuotes[]={1,
|
||||
xx,
|
||||
xx,
|
||||
zz,
|
||||
zz,
|
||||
zz,
|
||||
zz,
|
||||
zz};
|
||||
|
||||
|
||||
static const char sComma[]={2,
|
||||
zz,zz,
|
||||
zz,zz,
|
||||
zz,zz,
|
||||
zz,zz,
|
||||
zz,zz,
|
||||
zz,xx,
|
||||
xx,zz};
|
||||
|
||||
static const char sPeriod[]={1,
|
||||
zz,
|
||||
zz,
|
||||
zz,
|
||||
zz,
|
||||
zz,
|
||||
zz,
|
||||
xx};
|
||||
|
||||
static const char sMinus[]={2,
|
||||
zz,zz,
|
||||
zz,zz,
|
||||
zz,zz,
|
||||
xx,xx,
|
||||
zz,zz,
|
||||
zz,zz,
|
||||
zz,zz};
|
||||
|
||||
static const char sQuest[]={3,
|
||||
xx,xx,xx,
|
||||
zz,zz,xx,
|
||||
zz,zz,xx,
|
||||
zz,zz,xx,
|
||||
zz,xx,xx,
|
||||
zz,zz,zz,
|
||||
zz,xx,zz};
|
||||
|
||||
static const char sColon[]={1,
|
||||
zz,
|
||||
zz,
|
||||
xx,
|
||||
zz,
|
||||
xx,
|
||||
zz,
|
||||
zz};
|
||||
|
||||
static const char sch[]={3,
|
||||
zz,xx,zz,
|
||||
xx,xx,xx,
|
||||
xx,xx,xx,
|
||||
xx,xx,xx,
|
||||
zz,xx,zz};
|
||||
|
||||
static const char usc[]={2,
|
||||
zz,zz,
|
||||
zz,zz,
|
||||
zz,zz,
|
||||
zz,zz,
|
||||
xx,xx};
|
||||
|
||||
static const char star[]={5,
|
||||
zz,zz,zz,zz,zz,
|
||||
zz,zz,zz,zz,zz,
|
||||
xx,xx,xx,xx,xx,
|
||||
xx,xx,xx,xx,xx,
|
||||
zz,zz,zz,zz,zz,
|
||||
zz,zz,zz,zz,zz,
|
||||
zz,zz,zz,zz,zz};
|
||||
|
||||
static const char ss[]={2,
|
||||
xx,xx,
|
||||
xx,xx,
|
||||
xx,xx,
|
||||
xx,xx,
|
||||
xx,xx,
|
||||
xx,xx,
|
||||
xx,xx};
|
||||
|
||||
static const char sra[]={3,
|
||||
zz,zz,zz,
|
||||
xx,zz,zz,
|
||||
xx,xx,zz,
|
||||
xx,xx,xx,
|
||||
xx,xx,zz,
|
||||
xx,zz,zz,
|
||||
zz,zz,zz};
|
||||
|
||||
static const char slParen[]={2,
|
||||
zz,xx,
|
||||
xx,zz,
|
||||
xx,zz,
|
||||
xx,zz,
|
||||
xx,zz,
|
||||
xx,zz,
|
||||
zz,xx};
|
||||
|
||||
static const char srParen[]={2,
|
||||
xx,zz,
|
||||
zz,xx,
|
||||
zz,xx,
|
||||
zz,xx,
|
||||
zz,xx,
|
||||
zz,xx,
|
||||
xx,zz};
|
||||
|
||||
static const char ssemic[]={2,
|
||||
zz,xx,
|
||||
zz,zz,
|
||||
zz,xx,
|
||||
zz,xx,
|
||||
zz,xx,
|
||||
zz,xx,
|
||||
xx,zz};
|
||||
|
||||
static const char sSlash[]={3,
|
||||
zz,zz,zz,
|
||||
zz,zz,xx,
|
||||
zz,zz,xx,
|
||||
zz,xx,zz,
|
||||
zz,xx,zz,
|
||||
xx,zz,zz,
|
||||
xx,zz,zz};
|
||||
|
||||
static const char sbSlash[]={3,
|
||||
zz,zz,zz,
|
||||
xx,zz,zz,
|
||||
xx,zz,zz,
|
||||
zz,xx,zz,
|
||||
zz,xx,zz,
|
||||
zz,zz,xx,
|
||||
zz,zz,xx};
|
||||
|
||||
static const char sBlock[]={3,
|
||||
zz,zz,zz,
|
||||
zz,zz,zz,
|
||||
xx,xx,xx,
|
||||
xx,xx,xx,
|
||||
xx,xx,xx,
|
||||
zz,zz,zz,
|
||||
zz,zz,zz};
|
||||
|
||||
static const char sBlank[]={2,
|
||||
zz,zz,
|
||||
zz,zz,
|
||||
zz,zz,
|
||||
zz,zz,
|
||||
zz,zz,
|
||||
zz,zz,
|
||||
zz,zz};
|
||||
|
||||
static const char sAT[]=
|
||||
{ 5,
|
||||
zz,xx,xx,xx,zz,
|
||||
xx,zz,zz,zz,xx,
|
||||
xx,zz,xx,xx,xx,
|
||||
xx,zz,xx,zz,xx,
|
||||
xx,zz,xx,xx,xx,
|
||||
xx,zz,zz,zz,zz,
|
||||
zz,xx,xx,xx,zz};
|
||||
|
||||
static const char sNum[]=
|
||||
{ 5,
|
||||
zz,zz,zz,zz,zz,
|
||||
zz,xx,zz,xx,zz,
|
||||
xx,xx,xx,xx,xx,
|
||||
zz,xx,zz,xx,zz,
|
||||
xx,xx,xx,xx,xx,
|
||||
zz,xx,zz,xx,zz,
|
||||
zz,zz,zz,zz,zz};
|
||||
|
||||
static const char sBuck[]=
|
||||
{5,
|
||||
zz,zz,zz,zz,zz,
|
||||
zz,zz,zz,zz,zz,
|
||||
zz,zz,xx,zz,zz,
|
||||
zz,xx,xx,xx,zz,
|
||||
xx,xx,xx,xx,xx,
|
||||
zz,zz,zz,zz,zz,
|
||||
zz,zz,zz,zz,zz};
|
||||
|
||||
static const char sPercnt[]=
|
||||
{
|
||||
5,
|
||||
zz,zz,zz,zz,zz,
|
||||
xx,zz,zz,zz,xx,
|
||||
zz,zz,zz,xx,zz,
|
||||
zz,zz,xx,zz,zz,
|
||||
zz,xx,zz,zz,zz,
|
||||
xx,zz,zz,zz,xx,
|
||||
zz,zz,zz,zz,zz};
|
||||
|
||||
static const char sCarot[]=
|
||||
{ 3,
|
||||
zz,xx,zz,
|
||||
xx,zz,xx,
|
||||
zz,zz,zz,
|
||||
zz,zz,zz,
|
||||
zz,zz,zz,
|
||||
zz,zz,zz,
|
||||
zz,zz,zz};
|
||||
|
||||
static const char sCopy[]=
|
||||
{ 7,
|
||||
zz,xx,xx,xx,xx,xx,zz,
|
||||
xx,zz,zz,zz,zz,zz,xx,
|
||||
xx,zz,zz,xx,xx,zz,xx,
|
||||
xx,zz,xx,zz,zz,zz,xx,
|
||||
xx,zz,zz,xx,xx,zz,xx,
|
||||
xx,zz,zz,zz,zz,zz,xx,
|
||||
zz,xx,xx,xx,xx,xx,zz};
|
||||
|
||||
static const char sPtr[]=
|
||||
{ 5,
|
||||
xx,zz,zz,zz,zz,
|
||||
xx,xx,zz,zz,zz,
|
||||
xx,xx,xx,zz,zz,
|
||||
xx,xx,xx,xx,zz,
|
||||
xx,xx,xx,xx,xx,
|
||||
zz,zz,xx,zz,zz,
|
||||
zz,zz,zz,xx,zz};
|
||||
|
||||
static const char check[]=
|
||||
{ 7,
|
||||
xx,zz,zz,zz,zz,zz,xx,
|
||||
zz,xx,zz,zz,zz,xx,zz,
|
||||
zz,zz,xx,zz,xx,zz,zz,
|
||||
zz,zz,zz,xx,zz,zz,zz,
|
||||
zz,zz,xx,zz,xx,zz,zz,
|
||||
zz,xx,zz,zz,zz,xx,zz,
|
||||
xx,zz,zz,zz,zz,zz,xx };
|
||||
|
||||
static const char target[]=
|
||||
{ 7,
|
||||
zz,zz,zz,xx,zz,zz,zz,
|
||||
zz,zz,xx,zz,xx,zz,zz,
|
||||
zz,xx,zz,zz,zz,xx,zz,
|
||||
xx,zz,zz,xx,zz,zz,xx,
|
||||
zz,xx,zz,zz,zz,xx,zz,
|
||||
zz,zz,xx,zz,xx,zz,zz,
|
||||
zz,zz,zz,xx,zz,zz,zz };
|
||||
|
||||
static const char *smal_tbl[]=
|
||||
{ sBlank,
|
||||
sYow, sQuote, sNum, sBuck,sPercnt, sCarot, sQuotes, slParen,
|
||||
srParen, star, sPtr, sComma, sMinus,sPeriod, sSlash, s0,
|
||||
s1, s2, s3, s4, s5, s6, s7, s8,
|
||||
s9, sColon, ssemic, ss, ss, sra, sQuest, sAT,
|
||||
sbA, sbB, sbC, sbD, sbE, sbF, sbG, sbH,
|
||||
sbI, sbJ, sbK, sbL, sbM, sbN, sbO, sbP,
|
||||
sbQ, sbR, sbS, sbT, sbU, sbV, sbW, sbX,
|
||||
sbY, sbZ, ss, sbSlash, ss, sCarot, usc, sch,
|
||||
ssA, ssB, ssC, ssD, ssE, ssF, ssG, ssH,
|
||||
ssI, ssJ, ssK, ssL, ssM, ssN, ssO, ssP,
|
||||
ssQ, ssR, ssS, ssT, ssU, ssV, ssW, ssX,
|
||||
ssY, ssZ, ss, target, check, sCopy, sBlock, ss};
|
||||
|
||||
return smal_tbl[c][i];
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#undef xx
|
||||
#undef zz
|
|
@ -21,6 +21,6 @@ Global
|
|||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
AMDCaProjectFile = C:\svn\desmume\trunk\desmume\src\windows\CodeAnalyst\DeSmuME_2005.caw
|
||||
AMDCaProjectFile = D:\svn\desmume\trunk\desmume\src\windows\CodeAnalyst\DeSmuME_2005.caw
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
|
|
@ -51,7 +51,7 @@
|
|||
FavorSizeOrSpeed="0"
|
||||
EnableFiberSafeOptimizations="false"
|
||||
WholeProgramOptimization="false"
|
||||
AdditionalIncludeDirectories=".;..;"lua\lua-5.1.4\src";"glib-2.20.1\build";"glib-2.20.1\build\glib";.\zlib123;.\zziplib;.\winpcap;userconfig;defaultconfig;.\7z;..\agg\include;..\agg\examples"
|
||||
AdditionalIncludeDirectories=".;..;"lua\lua-5.1.4\src";"glib-2.20.1\build";"glib-2.20.1\build\glib";.\zlib123;.\zziplib;.\winpcap;userconfig;defaultconfig;.\7z;.\agg\include;.\agg\examples"
|
||||
PreprocessorDefinitions="DEBUG;_CRT_SECURE_NO_DEPRECATE;WIN32;SPU_INTERPOLATE;HAVE_LIBZ;HAVE_LIBZZIP;NOMINMAX;DEBUG;EXPERIMENTAL_WIFI"
|
||||
ExceptionHandling="1"
|
||||
BasicRuntimeChecks="0"
|
||||
|
@ -145,7 +145,7 @@
|
|||
OmitFramePointers="true"
|
||||
EnableFiberSafeOptimizations="true"
|
||||
WholeProgramOptimization="true"
|
||||
AdditionalIncludeDirectories=".;..;"lua\lua-5.1.4\src";"glib-2.20.1\build";"glib-2.20.1\build\glib";.\zlib123;.\zziplib;.\winpcap;userconfig;defaultconfig;.\7z;..\agg\include;..\agg\examples"
|
||||
AdditionalIncludeDirectories=".;..;"lua\lua-5.1.4\src";"glib-2.20.1\build";"glib-2.20.1\build\glib";.\zlib123;.\zziplib;.\winpcap;userconfig;defaultconfig;.\7z;.\agg\include;.\agg\examples"
|
||||
PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;WIN32;HAVE_LIBZ;HAVE_LIBZZIP;SPU_INTERPOLATE;NOMINMAX;NDEBUG;RELEASE;EXPERIMENTAL_WIFI"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
|
@ -174,7 +174,7 @@
|
|||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="agg-2.5.lib lua-5.1.4-x86.lib glib-2.20.1-x86.lib vfw32.lib winmm.lib opengl32.lib glu32.lib ws2_32.lib user32.lib gdi32.lib directx\dxguid.lib shell32.lib comdlg32.lib directx\dxerr8.lib directx\dsound.lib directx\dinput8.lib directx\ddraw.lib zlib-2005-x32.lib zziplib-2005-x32.lib shlwapi.lib winpcap\wpcap.lib 7zip.lib"
|
||||
OutputFile="$(OutDir)\$(ProjectName)_release.exe"
|
||||
AdditionalLibraryDirectories=".\zlib123;.\zziplib;glib-2.20.1\lib;.\lua\lib;.\7z"
|
||||
AdditionalLibraryDirectories=".\zlib123;.\zziplib;glib-2.20.1\lib;.\lua\lib;.\7z;agg"
|
||||
DelayLoadDLLs="wpcap.dll"
|
||||
GenerateDebugInformation="true"
|
||||
GenerateMapFile="true"
|
||||
|
@ -243,7 +243,7 @@
|
|||
OmitFramePointers="true"
|
||||
EnableFiberSafeOptimizations="true"
|
||||
WholeProgramOptimization="false"
|
||||
AdditionalIncludeDirectories=".;..;"lua\lua-5.1.4\src";"glib-2.20.1\build";"glib-2.20.1\build\glib";.\zlib123;.\zziplib;.\winpcap;userconfig;defaultconfig;.\7z;..\agg\include;..\agg\examples"
|
||||
AdditionalIncludeDirectories=".;..;"lua\lua-5.1.4\src";"glib-2.20.1\build";"glib-2.20.1\build\glib";.\zlib123;.\zziplib;.\winpcap;userconfig;defaultconfig;.\7z;.\agg\include;.\agg\examples"
|
||||
PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;WIN32;HAVE_LIBZ;HAVE_LIBZZIP;SPU_INTERPOLATE;NOMINMAX;NDEBUG;RELEASE;EXPERIMENTAL_WIFI"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
|
@ -1082,18 +1082,6 @@
|
|||
RelativePath="..\shaders.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\softrender.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\softrender.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\softrender_config.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\SPU.cpp"
|
||||
>
|
||||
|
|
|
@ -52,7 +52,7 @@
|
|||
FavorSizeOrSpeed="0"
|
||||
EnableFiberSafeOptimizations="false"
|
||||
WholeProgramOptimization="false"
|
||||
AdditionalIncludeDirectories=".;..;"lua\lua-5.1.4\src";"glib-2.20.1\build";"glib-2.20.1\build\glib";.\zlib123;.\zziplib;.\winpcap;userconfig;defaultconfig;.\7z;..\agg\include;..\agg\examples"
|
||||
AdditionalIncludeDirectories=".;..;"lua\lua-5.1.4\src";"glib-2.20.1\build";"glib-2.20.1\build\glib";.\zlib123;.\zziplib;.\winpcap;userconfig;defaultconfig;.\7z;.\agg\include;.\agg\examples"
|
||||
PreprocessorDefinitions="DEBUG;_CRT_SECURE_NO_DEPRECATE;WIN32;BETA_VERSION;SPU_INTERPOLATE;NOMINMAX;EXPERIMENTAL_WIFI;HAVE_LIBZ;HAVE_LIBZZIP"
|
||||
ExceptionHandling="1"
|
||||
BasicRuntimeChecks="3"
|
||||
|
@ -142,7 +142,7 @@
|
|||
OmitFramePointers="true"
|
||||
EnableFiberSafeOptimizations="true"
|
||||
WholeProgramOptimization="true"
|
||||
AdditionalIncludeDirectories=".;..;"lua\lua-5.1.4\src";"glib-2.20.1\build";"glib-2.20.1\build\glib";.\zlib123;.\zziplib;.\winpcap;userconfig;defaultconfig;.\7z;..\agg\include;..\agg\examples"
|
||||
AdditionalIncludeDirectories=".;..;"lua\lua-5.1.4\src";"glib-2.20.1\build";"glib-2.20.1\build\glib";.\zlib123;.\zziplib;.\winpcap;userconfig;defaultconfig;.\7z;.\agg\include;.\agg\examples"
|
||||
PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;WIN32;HAVE_LIBZ;HAVE_LIBZZIP;SSE2;SPU_INTERPOLATE;NOMINMAX;RELEASE;EXPERIMENTAL_WIFI;NDEBUG"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
|
@ -235,7 +235,7 @@
|
|||
OmitFramePointers="true"
|
||||
EnableFiberSafeOptimizations="true"
|
||||
WholeProgramOptimization="false"
|
||||
AdditionalIncludeDirectories=".;..;"lua\lua-5.1.4\src";"glib-2.20.1\build";"glib-2.20.1\build\glib";.\zlib123;.\zziplib;.\winpcap;userconfig;defaultconfig;.\7z;..\agg\include;..\agg\examples"
|
||||
AdditionalIncludeDirectories=".;..;"lua\lua-5.1.4\src";"glib-2.20.1\build";"glib-2.20.1\build\glib";.\zlib123;.\zziplib;.\winpcap;userconfig;defaultconfig;.\7z;.\agg\include;.\agg\examples"
|
||||
PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;WIN32;HAVE_LIBZ;HAVE_LIBZZIP;SSE2;SPU_INTERPOLATE;NOMINMAX;RELEASE;EXPERIMENTAL_WIFI;NDEBUG"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
|
@ -437,10 +437,6 @@
|
|||
RelativePath="..\saves.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\softrender.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\SPU.cpp"
|
||||
>
|
||||
|
|
Binary file not shown.
|
@ -17,7 +17,7 @@
|
|||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="Debug"
|
||||
OutputDirectory="."
|
||||
IntermediateDirectory="Debug"
|
||||
ConfigurationType="4"
|
||||
>
|
||||
|
@ -79,7 +79,7 @@
|
|||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="..\windows\agg"
|
||||
OutputDirectory="."
|
||||
IntermediateDirectory="Release"
|
||||
ConfigurationType="4"
|
||||
WholeProgramOptimization="0"
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue