mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 14:16:07 -06:00
77 lines
1.7 KiB
C++
77 lines
1.7 KiB
C++
#include "Local.h"
|
|
|
|
#ifdef GUI_TURTLE
|
|
|
|
namespace Upp {
|
|
|
|
struct DrawDragRectInfo {
|
|
Rect rect1, rect2, clip;
|
|
int n;
|
|
int type;
|
|
int animation;
|
|
};
|
|
|
|
void DrawDragLine(SystemDraw& w, bool horz, int x, int y, int len, int n, int anim)
|
|
{
|
|
if(len <= 0)
|
|
return;
|
|
for(int i = 0; i < n; i++) {
|
|
Ctrl::Put8(horz ? Ctrl::HORZDRAGLINE : Ctrl::VERTDRAGLINE);
|
|
Ctrl::Put16(x + !horz * i);
|
|
Ctrl::Put16(y + horz * i);
|
|
Ctrl::Put16(len);
|
|
Ctrl::Put16(anim);
|
|
}
|
|
}
|
|
|
|
void DrawDragFrame(SystemDraw& w, const Rect& r, int n, int animation)
|
|
{
|
|
DrawDragLine(w, true, r.left, r.top, r.GetWidth(), n, animation);
|
|
DrawDragLine(w, false, r.left, r.top + n, r.GetHeight() - 2 * n, n, animation);
|
|
DrawDragLine(w, false, r.right - n, r.top + n, r.GetHeight() - 2 * n, n, animation);
|
|
DrawDragLine(w, true, r.left, r.bottom - n, r.GetWidth(), n, animation);
|
|
}
|
|
|
|
void DrawDragRect(Ctrl& q, const DrawDragRectInfo& f)
|
|
{
|
|
SystemDraw w;
|
|
w.Init(Ctrl::GetDesktopSize());
|
|
w.Clip(f.clip);
|
|
/* TODO
|
|
static int dashes[3][3] = {
|
|
{ 32, 32, 0 },
|
|
{ 1, 1, 1 },
|
|
{ 5, 1, 2 },
|
|
};
|
|
*/
|
|
DrawDragFrame(w, f.rect1, f.n, f.animation);
|
|
DrawDragFrame(w, f.rect2, f.n, f.animation);
|
|
w.End();
|
|
}
|
|
|
|
void DrawDragRect(Ctrl& q, const Rect& rect1, const Rect& rect2, const Rect& clip, int n,
|
|
Color color, int type, int animation)
|
|
{
|
|
Ctrl *top = q.GetTopCtrl();
|
|
if(top) {
|
|
Point off = q.GetScreenView().TopLeft();
|
|
DrawDragRectInfo f;
|
|
f.rect1 = rect1.Offseted(off);
|
|
f.rect2 = rect2.Offseted(off);
|
|
f.clip = (clip & q.GetSize()).Offseted(off);
|
|
f.n = n;
|
|
f.type = type;
|
|
f.animation = animation;
|
|
DrawDragRect(*top, f);
|
|
Ctrl::SyncClient();
|
|
Ctrl::Output();
|
|
}
|
|
}
|
|
|
|
void FinishDragRect(Ctrl& q)
|
|
{
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|