if(!Text) return 0;
+
+ X += Window->BorderL;
+ Y += Window->BorderT;
+
// Check the bounds
- if(W < 0 || X < 0 || X >= Window->W) return 0;
- if(X + W > Window->W) W = Window->W - X;
+ if(W < 0 || X < 0 || X >= Window->RealW) return 0;
+ if(X + W > Window->RealW) W = Window->RealW - X;
- if(H < 0 || Y < 0 || Y >= Window->H) return 0;
- if(Y + H > Window->H) H = Window->H - Y;
+ if(H < 0 || Y < 0 || Y >= Window->RealH) return 0;
+ if(Y + H > Window->RealH) H = Window->RealH - Y;
+ // TODO: Catch trampling of decorations
+
// Handle NULL font (system default monospace)
if( !Font ) Font = &gSystemFont;
}
// _SysDebug("X = %i, Y = %i", X, Y);
- outBuf = (uint32_t*)Window->RenderBuffer + Y*Window->W + X;
+ outBuf = (uint32_t*)Window->RenderBuffer + Y*Window->RealW + X;
inBuf = Glyph->Bitmap + yStart*Glyph->TrueWidth;
for( y = yStart; y < Glyph->TrueHeight; y ++ )
{
outBuf[dst_x] = Video_AlphaBlend( outBuf[dst_x], Color, inBuf[x] );
}
- outBuf += Window->W;
+ outBuf += Window->RealW;
inBuf += Glyph->TrueWidth;
}
}