Remove graphic size magic number
This commit is contained in:
@@ -61,11 +61,20 @@ struct DrawMessage
|
|||||||
class Graphic
|
class Graphic
|
||||||
{
|
{
|
||||||
PetitComputer petitcom;
|
PetitComputer petitcom;
|
||||||
|
protected int width;
|
||||||
|
protected int height;
|
||||||
this(PetitComputer p)
|
this(PetitComputer p)
|
||||||
{
|
{
|
||||||
petitcom = p;
|
petitcom = p;
|
||||||
|
paint = new Paint();
|
||||||
|
setSize(512, 512);
|
||||||
|
}
|
||||||
|
void setSize(int w, int h)
|
||||||
|
{
|
||||||
|
width = w;
|
||||||
|
height = h;
|
||||||
//nnnue
|
//nnnue
|
||||||
paint.buffer = new uint[512 * 512];
|
paint.buffer = new uint[width * height];
|
||||||
}
|
}
|
||||||
|
|
||||||
bool[2] visibles = [true, true];
|
bool[2] visibles = [true, true];
|
||||||
@@ -97,7 +106,7 @@ class Graphic
|
|||||||
}
|
}
|
||||||
uint gcolor = -1;
|
uint gcolor = -1;
|
||||||
GraphicPage[] GRP;
|
GraphicPage[] GRP;
|
||||||
struct Paint
|
class Paint
|
||||||
{
|
{
|
||||||
uint[] buffer;
|
uint[] buffer;
|
||||||
static const MAXSIZE = 1024; /* バッファサイズ */
|
static const MAXSIZE = 1024; /* バッファサイズ */
|
||||||
@@ -118,11 +127,11 @@ class Graphic
|
|||||||
BufStr* sIdx, eIdx; /* buffの先頭・末尾ポインタ */
|
BufStr* sIdx, eIdx; /* buffの先頭・末尾ポインタ */
|
||||||
uint point(int x, int y)
|
uint point(int x, int y)
|
||||||
{
|
{
|
||||||
return buffer.ptr[x + y * 512];
|
return buffer.ptr[x + y * width];
|
||||||
}
|
}
|
||||||
void pset(int x, int y, uint col)
|
void pset(int x, int y, uint col)
|
||||||
{
|
{
|
||||||
buffer.ptr[x + y * 512] = col;
|
buffer.ptr[x + y * width] = col;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
scanLine : 線分からシードを探索してバッファに登録する
|
scanLine : 線分からシードを探索してバッファに登録する
|
||||||
@@ -238,7 +247,7 @@ class Graphic
|
|||||||
paint(x, y, color, dx, dy, dx2, dy2);
|
paint(x, y, color, dx, dy, dx2, dy2);
|
||||||
if(dx == int.max) return;
|
if(dx == int.max) return;
|
||||||
int h = dy2 - dy;
|
int h = dy2 - dy;
|
||||||
glTexSubImage2D(GL_TEXTURE_2D , 0, 0, dy, 512, h, tf, GL_UNSIGNED_BYTE, pixels + (dy * 512));
|
glTexSubImage2D(GL_TEXTURE_2D , 0, 0, dy, width, h, tf, GL_UNSIGNED_BYTE, pixels + (dy * width));
|
||||||
// glDrawPixels(512, dy2, tf, GL_UNSIGNED_BYTE, buffer.ptr);
|
// glDrawPixels(512, dy2, tf, GL_UNSIGNED_BYTE, buffer.ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -299,10 +308,10 @@ class Graphic
|
|||||||
void drawCharacter(int x, int y, wchar character)
|
void drawCharacter(int x, int y, wchar character)
|
||||||
{
|
{
|
||||||
auto rect = petitcom.console.fontTable[character];
|
auto rect = petitcom.console.fontTable[character];
|
||||||
float tx1 = (rect.x) / 512f - 1;
|
float tx1 = (rect.x) / (cast(float)width) - 1;
|
||||||
float ty1 = (rect.y + 8) / 512f - 1;
|
float ty1 = (rect.y + 8) / (cast(float)height) - 1;
|
||||||
float tx2 = (rect.x + 8) / 512f - 1;
|
float tx2 = (rect.x + 8) / (cast(float)width) - 1;
|
||||||
float ty2 = (rect.y) / 512f - 1;
|
float ty2 = (rect.y) / (cast(float)height) - 1;
|
||||||
glTexCoord2f(tx1 , ty1);
|
glTexCoord2f(tx1 , ty1);
|
||||||
glVertex3i(x, y + 8, 0);
|
glVertex3i(x, y + 8, 0);
|
||||||
glTexCoord2f(tx1, ty2);
|
glTexCoord2f(tx1, ty2);
|
||||||
@@ -409,7 +418,7 @@ class Graphic
|
|||||||
{
|
{
|
||||||
glFinish();
|
glFinish();
|
||||||
//glGetTexImage(GL_TEXTURE_2D,0,GRP[oldpage].textureFormat,GL_UNSIGNED_BYTE,buffer.ptr);
|
//glGetTexImage(GL_TEXTURE_2D,0,GRP[oldpage].textureFormat,GL_UNSIGNED_BYTE,buffer.ptr);
|
||||||
glReadPixels(0, 0, 512, 512, GRP[oldpage].textureFormat, GL_UNSIGNED_BYTE, paint.buffer.ptr);
|
glReadPixels(0, 0, width, height, GRP[oldpage].textureFormat, GL_UNSIGNED_BYTE, paint.buffer.ptr);
|
||||||
}
|
}
|
||||||
paint.gpaintBuffer(paint.buffer.ptr, dm.x, dm.y, dm.color, GRP[oldpage].textureFormat);
|
paint.gpaintBuffer(paint.buffer.ptr, dm.x, dm.y, dm.color, GRP[oldpage].textureFormat);
|
||||||
//gpaintBufferExW(oldpage, dm.x, dm.y, dm.color);
|
//gpaintBufferExW(oldpage, dm.x, dm.y, dm.color);
|
||||||
@@ -605,13 +614,13 @@ class Graphic
|
|||||||
int y1 = displayArea[display].y;
|
int y1 = displayArea[display].y;
|
||||||
int x2 = x1 + displayArea[display].w;
|
int x2 = x1 + displayArea[display].w;
|
||||||
int y2 = y1 + displayArea[display].h;
|
int y2 = y1 + displayArea[display].h;
|
||||||
glTexCoord2f(x1 / 512f - 1 , y2 / 512f - 1);
|
glTexCoord2f(x1 / (cast(float)width) - 1 , y2 / (cast(float)height) - 1);
|
||||||
glVertex3f(x1, y2, z);
|
glVertex3f(x1, y2, z);
|
||||||
glTexCoord2f(x1 / 512f - 1, y1 / 512f - 1);
|
glTexCoord2f(x1 / (cast(float)width) - 1, y1 / (cast(float)height) - 1);
|
||||||
glVertex3f(x1, y1, z);
|
glVertex3f(x1, y1, z);
|
||||||
glTexCoord2f(x2 / 512f - 1, y1 / 512f - 1);
|
glTexCoord2f(x2 / (cast(float)width) - 1, y1 / (cast(float)height) - 1);
|
||||||
glVertex3f(x2, y1, z);
|
glVertex3f(x2, y1, z);
|
||||||
glTexCoord2f(x2 / 512f - 1, y2 / 512f - 1);
|
glTexCoord2f(x2 / (cast(float)width) - 1, y2 / (cast(float)height) - 1);
|
||||||
glVertex3f(x2, y2, z);
|
glVertex3f(x2, y2, z);
|
||||||
glEnd();
|
glEnd();
|
||||||
//glFlush();
|
//glFlush();
|
||||||
@@ -622,7 +631,7 @@ class Graphic
|
|||||||
{
|
{
|
||||||
if (clipmode)
|
if (clipmode)
|
||||||
{
|
{
|
||||||
clip(clipmode, 0, 0, 512, 512);
|
clip(clipmode, 0, 0, width, height);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user