mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-07-11 22:03:01 -06:00
.developing rainbow
git-svn-id: svn://ultimatepp.org/upp/trunk@3586 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
8d0ff37e27
commit
5d0f272a87
9 changed files with 96 additions and 89 deletions
|
|
@ -1,60 +1,18 @@
|
|||
class ViewDraw : public SystemDraw {
|
||||
ImageBuffer ib;
|
||||
|
||||
Vector<Rect> dummy_invalid;
|
||||
|
||||
public:
|
||||
ViewDraw(Ctrl *ctrl) : SystemDraw(ib, dummy_invalid) { _DBG_ }
|
||||
~ViewDraw() {}
|
||||
};
|
||||
|
||||
class DHCtrl : Ctrl {};
|
||||
|
||||
void InitFB();
|
||||
|
||||
|
||||
#ifdef PLATFORM_WIN32
|
||||
Vector<WString>& coreCmdLine__();
|
||||
Vector<WString> SplitCmdLine__(const char *cmd);
|
||||
|
||||
void FBInit(HINSTANCE hInstance);
|
||||
|
||||
#define GUI_APP_MAIN \
|
||||
void GuiMainFn_();\
|
||||
\
|
||||
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR lpCmdLine, int nCmdShow) \
|
||||
{ \
|
||||
UPP::coreCmdLine__() = UPP::SplitCmdLine__(UPP::FromSystemCharset(lpCmdLine)); \
|
||||
UPP::AppInitEnvironment__(); \
|
||||
UPP::FBInit(hInstance); \
|
||||
GuiMainFn_(); \
|
||||
UPP::Ctrl::CloseTopCtrls(); \
|
||||
UPP::UsrLog("---------- About to delete this log of WinFB..."); \
|
||||
UPP::DeleteUsrLog(); \
|
||||
return UPP::GetExitCode(); \
|
||||
} \
|
||||
\
|
||||
void GuiMainFn_()
|
||||
#endif
|
||||
|
||||
#ifdef PLATFORM_POSIX
|
||||
void FBInit(const String& fbdevice);
|
||||
|
||||
#define GUI_APP_MAIN \
|
||||
void GuiMainFn_();\
|
||||
\
|
||||
int main(int argc, const char **argv, const char **envptr) { \
|
||||
UPP::AppInit__(argc, argv, envptr); \
|
||||
FBInit("/dev/fb0"); \
|
||||
GuiMainFn_(); \
|
||||
UPP::Ctrl::CloseTopCtrls(); \
|
||||
UPP::UsrLog("---------- About to delete this log of LinuxFB..."); \
|
||||
UPP::DeleteUsrLog(); \
|
||||
return UPP::GetExitCode(); \
|
||||
} \
|
||||
\
|
||||
void GuiMainFn_()
|
||||
#endif
|
||||
|
||||
void SetDesktop(Ctrl& desktop);
|
||||
Ctrl *GetDesktop();
|
||||
class ViewDraw : public SystemDraw {
|
||||
ImageBuffer ib;
|
||||
|
||||
Vector<Rect> dummy_invalid;
|
||||
|
||||
public:
|
||||
ViewDraw(Ctrl *ctrl) : SystemDraw(ib, dummy_invalid) { _DBG_ }
|
||||
~ViewDraw() {}
|
||||
};
|
||||
|
||||
class DHCtrl : Ctrl {};
|
||||
|
||||
void InitFB();
|
||||
|
||||
#include FRAMEBUFFER_INCLUDE
|
||||
|
||||
void SetDesktop(Ctrl& desktop);
|
||||
Ctrl *GetDesktop();
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@ public:
|
|||
static void InitFB();
|
||||
static void DoMouseFB(int event, Point p, int zdelta = 0);
|
||||
static bool DoKeyFB(dword key, int cnt);
|
||||
static void RemoveCursor(Rect& update);
|
||||
static void RemoveCaret(Rect& update);
|
||||
static void RemoveCursor();
|
||||
static void RemoveCaret();
|
||||
static void CursorSync();
|
||||
|
|
|
|||
|
|
@ -66,26 +66,44 @@ Image Ctrl::GetBak(Rect& tr)
|
|||
return bak;
|
||||
}
|
||||
|
||||
void Ctrl::RemoveCursor()
|
||||
void Ctrl::RemoveCursor(Rect& update)
|
||||
{
|
||||
update = Null;
|
||||
if(!IsNull(fbCursorBakPos)) {
|
||||
Copy(framebuffer, fbCursorBakPos, fbCursorBak, fbCursorBak.GetSize());
|
||||
FBUpdate(Rect(fbCursorBakPos, fbCursorBak.GetSize()));
|
||||
update = Rect(fbCursorBakPos, fbCursorBak.GetSize());
|
||||
}
|
||||
fbCursorPos = fbCursorBakPos = Null;
|
||||
fbCursorBak = Null;
|
||||
}
|
||||
|
||||
void Ctrl::RemoveCaret()
|
||||
void Ctrl::RemoveCursor()
|
||||
{
|
||||
Rect update;
|
||||
RemoveCursor(update);
|
||||
if(!IsNull(update))
|
||||
FBUpdate(update);
|
||||
}
|
||||
|
||||
void Ctrl::RemoveCaret(Rect& update)
|
||||
{
|
||||
update = Null;
|
||||
if(!IsNull(fbCaretRect)) {
|
||||
Copy(framebuffer, fbCaretRect.TopLeft(), fbCaretBak, fbCaretBak.GetSize());
|
||||
FBUpdate(fbCaretRect);
|
||||
update = fbCaretRect;
|
||||
}
|
||||
fbCaretRect = Null;
|
||||
fbCaretBak = Null;
|
||||
}
|
||||
|
||||
void Ctrl::RemoveCaret()
|
||||
{
|
||||
Rect update;
|
||||
RemoveCaret(update);
|
||||
if(!IsNull(update))
|
||||
FBUpdate(update);
|
||||
}
|
||||
|
||||
void Ctrl::SetCaret(int x, int y, int cx, int cy)
|
||||
{
|
||||
GuiLock __;
|
||||
|
|
@ -109,7 +127,8 @@ void Ctrl::CursorSync()
|
|||
cr = RectC(focusCtrl->caretx, focusCtrl->carety, focusCtrl->caretcx, focusCtrl->caretcy)
|
||||
+ focusCtrl->GetScreenView().TopLeft();
|
||||
if(fbCursorPos != p || cr != fbCaretRect) {
|
||||
RemoveCursor();
|
||||
Rect oc;
|
||||
RemoveCursor(oc);
|
||||
RemoveCaret();
|
||||
|
||||
fbCursorPos = p;
|
||||
|
|
@ -135,6 +154,16 @@ void Ctrl::CursorSync()
|
|||
}
|
||||
|
||||
Over(framebuffer, p, fbCursorImage, sz);
|
||||
DLOG("Cursor " << p << " " << sz);
|
||||
DDUMP(oc);
|
||||
// DDUMP(tr);
|
||||
|
||||
_DBG_ // Only do this if they overlap!
|
||||
if(!IsNull(oc))
|
||||
tr = tr | oc;
|
||||
// tr.left -= 50;
|
||||
// tr.right += 50;
|
||||
DDUMP(tr);
|
||||
FBUpdate(tr);
|
||||
FBSync();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,18 +16,25 @@ IMAGE_ID(sizebottom)
|
|||
IMAGE_ID(sizebottomright)
|
||||
|
||||
IMAGE_BEGIN_DATA
|
||||
IMAGE_DATA(120,156,237,87,219,106,195,48,12,53,131,208,193,10,101,15,123,219,119,239,15,242,178,159,76,77,156,152,212,214,229,72)
|
||||
IMAGE_DATA(110,221,22,124,140,33,117,207,145,100,201,114,155,112,14,63,225,128,101,155,40,150,121,158,45,154,149,111,208,100,62,168)
|
||||
IMAGE_DATA(185,225,3,154,138,175,104,72,190,160,97,249,140,70,228,19,26,149,95,104,52,206,113,86,252,160,215,175,178,135,240,143)
|
||||
IMAGE_DATA(254,20,141,152,51,134,95,249,4,226,210,246,165,242,59,248,200,126,64,110,141,41,92,194,71,56,173,179,48,182,62,239)
|
||||
IMAGE_DATA(40,158,179,243,226,243,219,175,49,251,173,242,18,206,49,113,83,76,218,116,155,56,116,174,154,223,255,63,113,30,184,61)
|
||||
IMAGE_DATA(248,162,134,224,178,26,129,91,105,0,110,214,88,184,158,88,60,123,245,228,242,9,245,181,157,207,239,56,62,183,33,37)
|
||||
IMAGE_DATA(142,152,40,208,38,65,244,45,223,91,226,108,213,87,5,4,108,208,183,143,95,207,197,101,213,163,54,44,223,107,62,144)
|
||||
IMAGE_DATA(24,165,125,74,208,114,108,209,83,49,89,206,10,181,230,213,163,118,60,125,231,233,91,205,22,141,75,28,167,109,0,70)
|
||||
IMAGE_DATA(61,240,108,160,212,121,244,187,13,47,80,45,215,92,218,154,212,152,212,26,213,56,214,217,226,87,227,33,107,20,122,212)
|
||||
IMAGE_DATA(168,212,180,156,171,150,243,184,235,121,164,63,191,233,205,1,22,241,60,75,160,61,14,153,230,151,219,135,164,77,24,137)
|
||||
IMAGE_DATA(35,247,33,105,19,70,226,200,125,72,218,132,226,21,159,51,196,5,74,221,35,45,119,107,239,53,173,16,124,130,191,226)
|
||||
IMAGE_DATA(152,182,193,24,225,96,185,124,173,92,234,25,193,43,243,31,145,39,107,157,150,209,41,119,234,20,9,150,46,146,156,183)
|
||||
IMAGE_DATA(112,209,147,231,253,109,241,240,44,221,208,35,127,50,127,20,188,153,247,94,5,31,87,227,125,174,70,75,55,60,178,234)
|
||||
IMAGE_DATA(212,51,130,87,230,63,243,118,201,243,10,123,119,252,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
|
||||
IMAGE_END_DATA(448, 15)
|
||||
IMAGE_DATA(120,156,237,87,189,75,28,65,20,159,4,46,6,34,72,10,187,20,105,242,79,164,73,155,210,194,46,165,69,42,59,83)
|
||||
IMAGE_DATA(4,99,180,8,33,16,228,20,98,144,96,226,233,69,208,132,164,216,70,68,197,179,240,3,193,15,252,0,17,69,16,65)
|
||||
IMAGE_DATA(68,4,173,180,251,57,222,158,27,179,59,243,246,189,89,93,21,246,55,12,183,55,247,251,189,55,243,62,230,238,84,181)
|
||||
IMAGE_DATA(170,85,231,120,160,238,157,191,64,201,0,161,6,128,72,131,211,211,167,56,57,121,198,213,224,248,248,57,142,142,94,224)
|
||||
IMAGE_DATA(240,240,37,71,131,131,131,58,236,239,215,99,111,239,21,118,118,26,226,52,216,221,109,208,188,215,216,222,110,196,214,86)
|
||||
IMAGE_DATA(19,214,215,155,41,13,54,55,223,96,99,227,173,230,181,98,117,245,35,150,151,219,177,184,216,97,211,96,109,237,3,86)
|
||||
IMAGE_DATA(86,62,97,105,41,143,133,133,110,204,205,21,49,59,251,19,51,51,189,38,141,230,116,96,126,254,139,230,245,96,122,122)
|
||||
IMAGE_DATA(8,165,82,169,50,255,96,98,162,24,214,104,91,221,154,215,131,169,169,34,38,39,255,6,124,245,47,151,151,53,154,243)
|
||||
IMAGE_DATA(93,207,2,198,199,7,48,54,246,27,35,35,30,121,222,209,209,94,12,15,247,5,118,60,111,136,228,123,222,143,200,30)
|
||||
IMAGE_DATA(7,7,251,173,241,49,197,160,80,248,70,241,141,126,187,186,58,69,117,152,207,127,22,215,122,91,219,123,145,143,150,150)
|
||||
IMAGE_DATA(119,98,31,2,110,20,57,85,163,238,171,170,242,84,161,196,171,114,179,250,8,61,7,206,67,239,239,252,154,229,188,145)
|
||||
IMAGE_DATA(184,168,106,29,184,156,14,90,238,255,192,113,103,89,243,228,215,87,114,94,226,166,193,39,53,6,174,85,67,112,35,26)
|
||||
IMAGE_DATA(6,55,208,72,184,46,123,113,57,171,75,44,111,32,191,178,250,124,172,199,195,202,160,2,103,152,92,112,155,132,163,79)
|
||||
IMAGE_DATA(242,185,100,159,73,245,145,4,50,108,152,111,31,119,189,109,95,82,61,215,134,228,243,56,31,156,61,82,231,164,16,23)
|
||||
IMAGE_DATA(99,137,222,180,39,73,173,152,214,92,245,92,59,46,125,231,210,183,113,182,204,168,209,163,170,50,24,70,93,224,114,128)
|
||||
IMAGE_DATA(176,206,69,127,97,195,21,92,173,173,185,226,214,168,198,52,173,153,26,71,58,147,248,141,227,113,214,76,72,35,71,97)
|
||||
IMAGE_DATA(77,146,186,74,82,143,23,122,59,252,31,191,254,63,7,182,200,206,147,108,52,141,34,139,243,107,59,7,165,245,145,5)
|
||||
IMAGE_DATA(206,120,14,74,235,35,11,156,241,28,148,214,71,232,47,190,205,144,109,163,166,123,36,201,221,154,246,90,92,34,236,1)
|
||||
IMAGE_DATA(126,164,71,174,50,44,70,108,144,92,190,82,174,233,153,131,219,204,191,142,56,73,243,132,172,83,174,168,83,40,72,186)
|
||||
IMAGE_DATA(136,114,158,132,203,173,60,215,239,22,23,158,164,27,210,136,31,205,207,18,158,152,119,183,18,158,93,141,87,115,53,74)
|
||||
IMAGE_DATA(186,225,58,179,110,122,230,224,54,243,111,242,118,9,230,25,68,109,209,184,0,0,0,0,0,0,0,0,0,0,0,0)
|
||||
IMAGE_END_DATA(672, 15)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
file
|
||||
LinuxFb.h,
|
||||
Keys.h,
|
||||
Proc.cpp;
|
||||
|
||||
file
|
||||
LinuxFb.h,
|
||||
Local.h,
|
||||
Keys.h,
|
||||
Proc.cpp;
|
||||
|
||||
|
|
|
|||
|
|
@ -57,6 +57,7 @@ LRESULT CALLBACK fbWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa
|
|||
if(hwnd) {
|
||||
PAINTSTRUCT ps;
|
||||
HDC dc = BeginPaint(hwnd, &ps);
|
||||
DDUMP(Rect(ps.rcPaint));
|
||||
Size sz = framebuffer.GetSize();
|
||||
Buffer<byte> data;
|
||||
data.Alloc(sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD)*256);
|
||||
|
|
@ -71,8 +72,12 @@ LRESULT CALLBACK fbWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa
|
|||
hi->biClrImportant = 0;
|
||||
hi->biWidth = sz.cx;
|
||||
hi->biHeight = -sz.cy;
|
||||
::SetDIBitsToDevice(dc, 0, 0, sz.cx, sz.cy, 0, 0,
|
||||
0, sz.cy, ~framebuffer, (BITMAPINFO *)~data, DIB_RGB_COLORS);
|
||||
Rect r = ps.rcPaint;
|
||||
::SetDIBitsToDevice(dc, r.left, r.top, r.GetWidth(), r.GetHeight(),
|
||||
r.left, -r.top - r.GetHeight() + sz.cy, 0, sz.cy,
|
||||
~framebuffer, (BITMAPINFO *)~data, DIB_RGB_COLORS);
|
||||
// ::SetDIBitsToDevice(dc, r.left, r.top, r.GetWidth(), r.GetHeight(), r.left, ,
|
||||
// 0, sz.cy, ~framebuffer, (BITMAPINFO *)~data, DIB_RGB_COLORS);
|
||||
EndPaint(hwnd, &ps);
|
||||
}
|
||||
return 0L;
|
||||
|
|
|
|||
|
|
@ -59,7 +59,9 @@ void FBInit(HINSTANCE hInstance)
|
|||
|
||||
void FBUpdate(const Rect& inv)
|
||||
{
|
||||
DLOG("FBUpdate " << inv);
|
||||
if(fbHWND)
|
||||
// ::InvalidateRect(fbHWND, Rect(0, 0, 10000, 10000), false);
|
||||
::InvalidateRect(fbHWND, inv, false);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
file
|
||||
WinFb.h,
|
||||
Local.h,
|
||||
Keys.h,
|
||||
Win.cpp,
|
||||
Proc.cpp;
|
||||
|
|
|
|||
|
|
@ -8,12 +8,14 @@
|
|||
|
||||
#ifdef flagWINFB
|
||||
#define GUIPLATFORM_KEYCODES_INCLUDE <WinFb/Keys.h>
|
||||
#define GUIPLATFORM_INCLUDE <Framebuffer/Framebuffer.h>
|
||||
#define GUIPLATFORM_INCLUDE <Framebuffer/Framebuffer.h>
|
||||
#define FRAMEBUFFER_INCLUDE <WinFb/Local.h>
|
||||
#endif
|
||||
|
||||
#ifdef flagLINUXFB
|
||||
#define GUIPLATFORM_KEYCODES_INCLUDE <LinuxFb/Keys.h>
|
||||
#define GUIPLATFORM_INCLUDE <Framebuffer/Framebuffer.h>
|
||||
#define GUIPLATFORM_INCLUDE <Framebuffer/Framebuffer.h>
|
||||
#define FRAMEBUFFER_INCLUDE <LinuxFb/Local.h>
|
||||
#endif
|
||||
|
||||
#ifdef flagWINGL
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue