XU32 XDomTD::Handle(XU32 nOpera, XU32 pData1, XU32 pData2) { switch(nOpera) { case XDO_GET_RECT: if(IsVisiable()&&m_nWidth>0) { XRect*pr=(XRect*)pData1; *pr=XRect(m_nPosX,m_nPosY, m_nPosX+m_nWidth,m_nPosY+m_nHeight); //rt.InflateRect(2,2); return XTRUE; }break; case XDO_PAINT:return XDomNode::Handle(nOpera,pData1,pData2); case XDO_LAYEROUT_TABPRE: return LayeroutPre((DRAWCONTEXT*)pData1,(CELLDATA*)pData2); case XDO_LAYEROUT_TAB: LayeroutCell((DRAWCONTEXT*)pData1,(CELLDATA*)pData2); return XTRUE; case XDO_LAYEROUT_TABS: LayeroutCells((DRAWCONTEXT*)pData1,(CELLDATA*)pData2); return XTRUE; case XDO_PAINT_TABLE: if(!IsVisiable()) return 0; return Paint((DRAWCONTEXT*)pData1,pData2); } return XDomBlock::Handle(nOpera,pData1,pData2); }
Air::U1 Frustum::IsVisiable( const BoundingBox& box ) { Float3 vCenter = (box.vMin + box.vMax)*0.5f; Float3 vSize = (box.vMax - box.vMin)*0.5f; AxisAlignedBox b; memcpy(&b.Center,&vCenter,sizeof(Float3)); memcpy(&b.Extents,&vSize,sizeof(Float3)); return IsVisiable(b); }
XU32 XHTMLButton::Handle(XU32 nOpera, XU32 pData1, XU32 pData2) { if(!IsVisiable()) return 0; switch(nOpera) { case XDO_SELECT: return (XU32)XDomItem::SelectItem((SELECTMARK*)pData1); case XDO_HITTEST: { XRect rect(m_nPosX,m_nPosY,m_nPosX+m_nWidth,m_nPosY+m_nHeight); if(rect.PtInRect(pData1,pData2)) return (XU32)this; } return 0; case XDO_GET_STYLE: { XU32 s=XDomBlock::Handle(nOpera,pData1,pData2)|DOM_SELECTABLE; return s; }break; case XDO_PAINT: return Paint((DRAWCONTEXT*)pData1); case XDO_EVENT_ONKEYDOWN: if(pData1!=XK_RETURN) break; case XDO_EVENT_ONMOUSEUP: return OnMouseUp((XEVENTDATA*)pData2); case XDO_EVENT_ONMOUSEOUT: return OnMouseLeave((XEVENTDATA*)pData2); case XDO_EVENT_ONMOUSEDOWN: return OnMouseDown(*(XPoint*)pData1,(XEVENTDATA*)pData2); // case XDO_ADD_CHILD: // return XDomNode::Handle(nOpera,pData1,pData2); // case XDO_GET_STYLE: // return XDomInput::Handle(nOpera,pData1,pData2)|DOM_NODE; case XDO_LAYEROUT_CELLS: return LayeroutCells((DRAWCONTEXT*)pData1,(CELLDATA*)pData2); case XDO_LAYEROUT_CELL: return LayeroutCell((DRAWCONTEXT*)pData1,(CELLDATA*)pData2); } return XDomBlock::Handle(nOpera,pData1,pData2); }