Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
198
Src/Wasabi/api/wnd/wndclass/virtualhostwnd.cpp
Normal file
198
Src/Wasabi/api/wnd/wndclass/virtualhostwnd.cpp
Normal file
|
@ -0,0 +1,198 @@
|
|||
#include "precomp.h"
|
||||
#include "virtualhostwnd.h"
|
||||
#include <tataki/canvas/ifc_canvas.h>
|
||||
#include <tataki/region/api_region.h>
|
||||
|
||||
VirtualHostWnd::VirtualHostWnd() {
|
||||
group = new GuiObjectWnd();
|
||||
fittoclient = 0;
|
||||
xoffset = 0;
|
||||
yoffset = 0;
|
||||
groupwidth = 0;
|
||||
groupheight = 0;
|
||||
scripts_enabled = 1;
|
||||
}
|
||||
|
||||
VirtualHostWnd::~VirtualHostWnd() {
|
||||
delete group;
|
||||
}
|
||||
|
||||
int VirtualHostWnd::onInit() {
|
||||
GuiObjectWnd::onInit();
|
||||
group->setVirtual(0);
|
||||
group->setStartHidden(1);
|
||||
group->setParent(this);
|
||||
group->init(this);
|
||||
group->deferedInvalidate();
|
||||
group->setCloaked(1); // magic!
|
||||
group->setVisible(1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
void VirtualHostWnd::virtualhostwnd_setContent(const char *_groupname) {
|
||||
group->setContent(_groupname);
|
||||
if (isPostOnInit())
|
||||
virtualhostwnd_onNewContent();
|
||||
}
|
||||
|
||||
void VirtualHostWnd::virtualhostwnd_setContent(SkinItem *groupitem) {
|
||||
group->setContentBySkinItem(groupitem);
|
||||
if (isPostOnInit())
|
||||
virtualhostwnd_onNewContent();
|
||||
}
|
||||
|
||||
void VirtualHostWnd::virtualhostwnd_onNewContent() {
|
||||
}
|
||||
|
||||
#ifdef WASABI_COMPILE_SCRIPT
|
||||
ScriptObject *VirtualHostWnd::virtualhostwnd_findScriptObject(const char *object_id) {
|
||||
return group->findScriptObject(object_id);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef WASABI_COMPILE_SKIN
|
||||
GuiObject *VirtualHostWnd::virtualhostwnd_getContent() {
|
||||
return group->getContent();
|
||||
}
|
||||
|
||||
ScriptObject *VirtualHostWnd::virtualhostwnd_getContentScriptObject() {
|
||||
return group->getContentScriptObject();
|
||||
}
|
||||
|
||||
GuiObject *VirtualHostWnd::virtualhostwnd_findObject(const char *object_id) {
|
||||
return group->findObject(object_id);
|
||||
}
|
||||
#endif
|
||||
|
||||
api_window *VirtualHostWnd::virtualhostwnd_getContentRootWnd() {
|
||||
return group->getContentRootWnd();
|
||||
}
|
||||
|
||||
int VirtualHostWnd::onPaint(Canvas *c) {
|
||||
GuiObjectWnd::onPaint(c);
|
||||
|
||||
virtualhostwnd_onPaintBackground(c);
|
||||
|
||||
if (group == NULL) return 1;
|
||||
|
||||
RECT wr;
|
||||
Canvas *cv = NULL;
|
||||
|
||||
group->getNonClientRect(&wr);
|
||||
group->paint(NULL, NULL);
|
||||
|
||||
cv = group->getFrameBuffer();
|
||||
|
||||
if (cv != NULL) {
|
||||
BltCanvas *bltcanvas = static_cast<BltCanvas *>(cv); // HACK!
|
||||
bltcanvas->/*getSkinBitmap()->*/blitAlpha(c, xoffset, yoffset);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
void VirtualHostWnd::virtualhostwnd_onPaintBackground(Canvas *c) {
|
||||
RECT r;
|
||||
getClientRect(&r);
|
||||
c->fillRect(&r, RGB(255,255,255));
|
||||
}
|
||||
|
||||
int VirtualHostWnd::onResize() {
|
||||
GuiObjectWnd::onResize();
|
||||
if (group != NULL) {
|
||||
RECT r;
|
||||
getClientRect(&r);
|
||||
if (fittoclient) {
|
||||
xoffset = 0;
|
||||
yoffset = 0;
|
||||
groupwidth = r.right-r.left;
|
||||
groupheight = r.bottom-r.top;
|
||||
} else {
|
||||
groupwidth = group->getGuiObject()->guiobject_getAutoWidth();
|
||||
groupheight = group->getGuiObject()->guiobject_getAutoHeight();
|
||||
if (groupwidth == AUTOWH) groupwidth = 320;
|
||||
if (groupheight == AUTOWH) groupheight = 200;
|
||||
int cw = r.right-r.left;
|
||||
int ch = r.bottom-r.top;
|
||||
xoffset = (cw - groupwidth)/2;
|
||||
yoffset = (ch - groupheight)/2;
|
||||
}
|
||||
group->resize(xoffset+r.left, yoffset+r.top, groupwidth, groupheight);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
void VirtualHostWnd::virtualhostwnd_getContentRect(RECT *r) {
|
||||
ASSERT(r != NULL);
|
||||
getClientRect(r);
|
||||
r->left += xoffset;
|
||||
r->top += yoffset;
|
||||
r->right = r->left + groupwidth;
|
||||
r->bottom = r->top + groupheight;
|
||||
}
|
||||
|
||||
|
||||
void VirtualHostWnd::virtualhostwnd_fitToClient(int fit) {
|
||||
fittoclient = fit;
|
||||
if (isPostOnInit()) {
|
||||
onResize();
|
||||
invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
void VirtualHostWnd::onChildInvalidate(api_region *r, api_window *who) {
|
||||
GuiObjectWnd::onChildInvalidate(r, who);
|
||||
api_region *clone = r->clone();
|
||||
clone->offset(xoffset, yoffset);
|
||||
invalidateRgn(clone);
|
||||
r->disposeClone(clone);
|
||||
}
|
||||
|
||||
int VirtualHostWnd::onLeftButtonDown(int x, int y) {
|
||||
// DO NOT CALL GuiObjectWnd::onLeftButtonDown(x, y);
|
||||
x -= xoffset;
|
||||
y -= yoffset;
|
||||
return group->wndProc(group->gethWnd(), WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(x, y));
|
||||
}
|
||||
|
||||
int VirtualHostWnd::onLeftButtonUp(int x, int y){
|
||||
// DO NOT CALL GuiObjectWnd::onLeftButtonUp(x, y);
|
||||
x -= xoffset;
|
||||
y -= yoffset;
|
||||
return group->wndProc(group->gethWnd(), WM_LBUTTONUP, 0, MAKELPARAM(x, y));
|
||||
}
|
||||
|
||||
int VirtualHostWnd::onRightButtonDown(int x, int y){
|
||||
// DO NOT CALL GuiObjectWnd::onRightButtonDown(x, y);
|
||||
x -= xoffset;
|
||||
y -= yoffset;
|
||||
return group->wndProc(group->gethWnd(), WM_RBUTTONDOWN, MK_RBUTTON, MAKELPARAM(x, y));
|
||||
}
|
||||
|
||||
int VirtualHostWnd::onRightButtonUp(int x, int y){
|
||||
// DO NOT CALL GuiObjectWnd::onRightButtonUp(x, y);
|
||||
x -= xoffset;
|
||||
y -= yoffset;
|
||||
return group->wndProc(group->gethWnd(), WM_RBUTTONUP, 0, MAKELPARAM(x, y));
|
||||
}
|
||||
|
||||
int VirtualHostWnd::onLeftButtonDblClk(int x, int y){
|
||||
// DO NOT CALL GuiObjectWnd::onLeftButtonDblClk(x, y);
|
||||
x -= xoffset;
|
||||
y -= yoffset;
|
||||
return group->wndProc(group->gethWnd(), WM_RBUTTONDBLCLK, 0, MAKELPARAM(x, y));
|
||||
}
|
||||
|
||||
int VirtualHostWnd::onRightButtonDblClk(int x, int y){
|
||||
// DO NOT CALL GuiObjectWnd::onRightButtonDblClk(x, y);
|
||||
x -= xoffset;
|
||||
y -= yoffset;
|
||||
return group->wndProc(group->gethWnd(), WM_LBUTTONDBLCLK, 0, MAKELPARAM(x, y));
|
||||
}
|
||||
|
||||
int VirtualHostWnd::onMouseMove(int x, int y){
|
||||
// DO NOT CALL GuiObjectWnd::onMouseMove(x, y);
|
||||
x -= xoffset;
|
||||
y -= yoffset;
|
||||
return group->wndProc(group->gethWnd(), WM_MOUSEMOVE, 0, MAKELPARAM(x, y));
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue