void GxTabs::Draw() { GxDraw* draw = GxDraw::Get(); GxStyle& style = *GxStyle::Get(); bool lock = IsLockedWidget(); // Draw frame GxRecti r(myRect.x, myRect.y, myRect.w, tabH); style.Bar(r); // Draw tabs r = GetRect(); for(int i=0; i<myTabs.Size(); ++i) { GxTab* tab = GetTab(i); GxRecti tr = myGetTabRect(i); if(i == myHoverTab || tab->IsSelected()) style.Tab(tr, i == myHoverTab && !lock, tab->IsSelected()); style.Label(tr, GX_TA_CENTER, GX_TA_MIDDLE, tab->GetText(), lock); } if(mySelectedTab) mySelectedTab->GetLayout().Draw(); }
void GxSelectList::Draw() { GxDraw* draw = GxDraw::Get(); GxStyle& style = *GxStyle::Get(); float hl = GetHighlightValue(); bool lock = IsLockedWidget(); // Draw the list rectangle GxRecti bar(myRect); if(!myScrollbar->IsHidden()) bar.w -= 16; style.Field(bar); // Draw the scrollbar if(!myScrollbar->IsHidden()) myScrollbar->Draw(); // Draw the list of items draw->PushScissorRect(bar.x+2, bar.y+2, bar.w-4, bar.h-4); GxRecti viewRect = draw->GetScissorRect(); GxRecti listR = myGetListRect(); int ox = 2; GxText& settings = style.d.text[0]; settings.maxWidth = listR.w - ox*2; settings.SetAlign(myAlignH, GX_TA_MIDDLE); if(myAlignH == GX_TA_CENTER) ox = listR.w/2; else if(myAlignH == GX_TA_RIGHT) ox = listR.w - ox; for(int i=0; i<myItems.Size(); ++i) { GxRecti r(listR.x, listR.y + i*16, listR.w, 16); if(r.y < viewRect.y+viewRect.h && r.y+r.h > viewRect.y) { if(i == mySelectedItem) draw->Rect(r.x, r.y, r.w, r.h, style.c.textSelect); else if(i == myMouseOverItem) draw->Rect(r.x, r.y, r.w, r.h, style.c.textSelect.Alpha(hl * 0.5f)); settings.Draw(r.x + ox, r.y+r.h/2-2, myItems[i]); } } settings.SetMaxWidth(); draw->PopScissorRect(); }