mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 22:02:49 -06:00
74 lines
1.5 KiB
C++
74 lines
1.5 KiB
C++
#include "IconDes.h"
|
|
|
|
void IconDraw::PutHorz(int x, int y, int cx)
|
|
{
|
|
if(y < 0 || y >= image.GetHeight())
|
|
return;
|
|
int r = minmax(x + cx, 0, image.GetWidth());
|
|
x = minmax(x, 0, image.GetWidth());
|
|
cx = r - x;
|
|
if(cx <= 0)
|
|
return;
|
|
Upp::Fill(image[y] + x, docolor, cx);
|
|
}
|
|
|
|
void IconDraw::PutVert(int x, int y, int cy)
|
|
{
|
|
if(x < 0 || x >= image.GetWidth())
|
|
return;
|
|
int b = minmax(y + cy, 0, image.GetHeight());
|
|
y = minmax(y, 0, image.GetHeight());
|
|
cy = b - y;
|
|
if(cy <= 0)
|
|
return;
|
|
RGBA *t = image[y] + x;
|
|
while(cy-- > 0) {
|
|
*t = docolor;
|
|
t += image.GetWidth();
|
|
}
|
|
}
|
|
|
|
void IconDraw::DrawRect(int x, int y, int cx, int cy, RGBA color)
|
|
{
|
|
docolor = color;
|
|
int b = minmax(y + cy, 0, image.GetHeight());
|
|
y = minmax(y, 0, image.GetHeight());
|
|
cy = b - y;
|
|
while(cy-- > 0)
|
|
PutHorz(x, y++, cx);
|
|
}
|
|
|
|
void IconDraw::DrawFrame(int x, int y, int cx, int cy, RGBA color, int n)
|
|
{
|
|
DrawRect(x, y, cx, n, color);
|
|
DrawRect(x, y + n, n, cy - n, color);
|
|
DrawRect(x + cx - n, y + n, n, cy - n, color);
|
|
DrawRect(x + n, y + cy - n, cx - 2 * n, n, color);
|
|
}
|
|
|
|
void IconDraw::DrawLine(Point p1, Point p2, int width, RGBA color)
|
|
{
|
|
docolor = color;
|
|
Width(width);
|
|
Move(p1);
|
|
Line(p2);
|
|
}
|
|
|
|
void IconDraw::DrawEllipse(const Rect& r_, bool fill_empty, RGBA color, int pen, RGBA pencolor)
|
|
{
|
|
Rect r = r_.Normalized();
|
|
if(r.IsEmpty() && Rect(image.GetSize()).Contains(r.TopLeft())) {
|
|
image[r.top][r.left] = pencolor;
|
|
return;
|
|
}
|
|
r.right++;
|
|
r.bottom++;
|
|
if(fill_empty) {
|
|
docolor = color;
|
|
Ellipse(r, -1);
|
|
}
|
|
if(!IsNull(pen)) {
|
|
docolor = pencolor;
|
|
Ellipse(r, pen);
|
|
}
|
|
}
|