@@ -130,24 +130,45 @@ void GfxDrawLine(int x, int y, int x2, i
y -= dpi->top;
y2 -= dpi->top;
/* Check clipping */
if (x < 0 && x2 < 0) return;
if (y < 0 && y2 < 0) return;
if (x > dpi->width && x2 > dpi->width) return;
if (y > dpi->height && y2 > dpi->height) return;
blitter->DrawLine(dpi->dst_ptr, x, y, x2, y2, dpi->width, dpi->height, color);
}
void GfxDrawLineUnscaled(int x, int y, int x2, int y2, int color)
{
Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter();
DrawPixelInfo *dpi = _cur_dpi;
x -= dpi->left;
x2 -= dpi->left;
blitter->DrawLine(dpi->dst_ptr, UnScaleByZoom(x, dpi->zoom), UnScaleByZoom(y, dpi->zoom),
UnScaleByZoom(x2, dpi->zoom), UnScaleByZoom(y2, dpi->zoom),
UnScaleByZoom(dpi->width, dpi->zoom), UnScaleByZoom(dpi->height, dpi->zoom), color);
/**
* Draws the projection of a parallelepiped.
* This can be used to draw boxes in world coordinates.
*
* @param x Screen X-coordinate of top front corner.
* @param y Screen Y-coordinate of top front corner.
* @param dx1 Screen X-length of first edge.
* @param dy1 Screen Y-length of first edge.
* @param dx2 Screen X-length of second edge.
* @param dy2 Screen Y-length of second edge.
* @param dx3 Screen X-length of third edge.
* @param dy3 Screen Y-length of third edge.
@@ -162,34 +183,34 @@ void DrawBox(int x, int y, int dx1, int
* : --__ / :
* : *(x,y) :
* : | :
* : | ..
* .... |(dx3,dy3)
* .... | ..
* ....V.
*/
static const byte color = 255;
GfxDrawLine(x, y, x + dx1, y + dy1, color);
GfxDrawLine(x, y, x + dx2, y + dy2, color);
GfxDrawLine(x, y, x + dx3, y + dy3, color);
GfxDrawLineUnscaled(x, y, x + dx1, y + dy1, color);
GfxDrawLineUnscaled(x, y, x + dx2, y + dy2, color);
GfxDrawLineUnscaled(x, y, x + dx3, y + dy3, color);
GfxDrawLine(x + dx1, y + dy1, x + dx1 + dx2, y + dy1 + dy2, color);
GfxDrawLine(x + dx1, y + dy1, x + dx1 + dx3, y + dy1 + dy3, color);
GfxDrawLine(x + dx2, y + dy2, x + dx2 + dx1, y + dy2 + dy1, color);
GfxDrawLine(x + dx2, y + dy2, x + dx2 + dx3, y + dy2 + dy3, color);
GfxDrawLine(x + dx3, y + dy3, x + dx3 + dx1, y + dy3 + dy1, color);
GfxDrawLine(x + dx3, y + dy3, x + dx3 + dx2, y + dy3 + dy2, color);
GfxDrawLineUnscaled(x + dx1, y + dy1, x + dx1 + dx2, y + dy1 + dy2, color);
GfxDrawLineUnscaled(x + dx1, y + dy1, x + dx1 + dx3, y + dy1 + dy3, color);
GfxDrawLineUnscaled(x + dx2, y + dy2, x + dx2 + dx1, y + dy2 + dy1, color);
GfxDrawLineUnscaled(x + dx2, y + dy2, x + dx2 + dx3, y + dy2 + dy3, color);
GfxDrawLineUnscaled(x + dx3, y + dy3, x + dx3 + dx1, y + dy3 + dy1, color);
GfxDrawLineUnscaled(x + dx3, y + dy3, x + dx3 + dx2, y + dy3 + dy2, color);
/** Truncate a given string to a maximum width if neccessary.
* If the string is truncated, add three dots ('...') to show this.
* @param *str string that is checked and possibly truncated
* @param maxw maximum width in pixels of the string
* @return new width of (truncated) string */
static int TruncateString(char *str, int maxw)
int w = 0;
FontSize size = _cur_fontsize;
Status change: