int32 SpinButton::ButtonAt(BPoint point) const { if (ButtonFrame(kSpinButtonUp).Contains(point)) return kSpinButtonUp; if (ButtonFrame(kSpinButtonDown).Contains(point)) return kSpinButtonDown; return kSpinButtonNone; }
void SpinButton::Draw(BRect updateRect) { BRect rect = Bounds(); if (IsFocus()) { SetHighColor(ui_color(B_KEYBOARD_NAVIGATION_COLOR)); StrokeRect(rect); } else { DrawButton(rect, kSpinButtonNone); } DrawButton(ButtonFrame(kSpinButtonUp), kSpinButtonUp); DrawButton(ButtonFrame(kSpinButtonDown), kSpinButtonDown); }
void ComposeLBItem(uint32 iIdx, bool bSel, const iRect& irc) { iRect rc=irc; if (bSel) { gGfxMgr.BlitTile(PDGG_CTILE, gApp.Surface(),rc); ButtonFrame(gApp.Surface(),rc,0); } rc.DeflateRect(2); if (!m_pOwner) return; // School Level Name and Cost iStringT text(gTextMgr[TRID_SPNAME_MAGICARROW+m_spells[iIdx]]); uint8 cost = iBaseSpell::GetSpellCost((MAGIC_SPELL)m_spells[iIdx], m_pOwner); uint8 school = SPELL_DESCRIPTORS[m_spells[iIdx]].school; text.Addf(_T(" (%d)"), cost); iTextComposer::FontConfig fc(iTextComposer::FS_SMALL,MSCH_COLORS[school][0]); SpriteId icn = PDGG_MSCHICN_S+school; if (m_pOwner->ManaPts() < cost) { fc.cmpProps.alpha = 128; } gGfxMgr.Blit(icn, gApp.Surface(), rc.point()); rc.x += 12; gTextComposer.TextOut(fc, gApp.Surface(),iPoint(rc.x,rc.y),text,rc, AlignLeft); }
void iHeroChild::OnCompose() { iRect rc = GetScrRect(); gGfxMgr.BlitTile(PDGG_BKTILE, gApp.Surface(),rc); gApp.Surface().Darken25Rect(rc); check(m_pHero); // Name iRect trc(rc.x,rc.y,rc.w,17); ButtonFrame(gApp.Surface(),trc,0); iStringT txt; txt.Addf(_T("#S0#FEEE%s#S2#FAFF %s #S0#FEEE%s %d"),gTextMgr[TRID_HERO_TYPE_KNIGHT+m_pHero->Type()],m_pHero->Name().CStr(),gTextMgr[TRID_LEVEL],m_pHero->Level()); gTextComposer.TextOut(gApp.Surface(),trc,txt,trc,AlignCenter); gApp.Surface().HLine(iPoint(rc.x,rc.y+17),rc.x2(),cColor_Black); rc.DeflateRect(0,18,0,0); // Portrait /* gApp.Surface().FrameRect(iRect(rc.x+2,rc.y+1,50,50),cColor_Black); gGfxMgr.Blit(m_pHero->Proto()->m_icn48,gApp.Surface(),iPoint(rc.x+3,rc.y+2)); ButtonFrame(gApp.Surface(),iRect(rc.x+3,rc.y+2,48,48),0); */ }
void ComposeLBItem(uint32 iIdx, bool bSel, const iRect& irc) { iTextComposer::FontConfig fc(dlgfc_plain); iRect rc=irc; if (bSel) { gGfxMgr.BlitTile(PDGG_CTILE, gApp.Surface(),rc); ButtonFrame(gApp.Surface(),rc,0); } rc.DeflateRect(2); iCastle* pCastle = *(m_pOwner->CastleFirst()+iIdx); // Glyph gApp.Surface().FillRect(iRect(rc.x,rc.y,34,22),cColor_Black); SpriteId sid = PDGG_CTL_SICONS + (pCastle->Proto()->Size()-1)*CTLT_COUNT + pCastle->Proto()->Type(); gGfxMgr.Blit(sid,gApp.Surface(), iPoint(rc.x+1,rc.y+1)); // Name rc.DeflateRect(36,0,0,0); rc.h = 10; gTextComposer.TextOut(dlgfc_topic,gApp.Surface(),rc,pCastle->Name(),rc,AlignTop); rc.y+=10; State state = GetItemState(iIdx); if (state == Occupied) { iTextComposer::FontConfig fc(iTextComposer::FS_SMALL,RGB16(255,128,128)); gTextComposer.TextOut(fc,gApp.Surface(),rc,pCastle->Visitor()->Name(),rc,AlignTop); } else if (state == Normal) { iTextComposer::FontConfig fc(iTextComposer::FS_SMALL,RGB16(128,255,128)); gTextComposer.TextOut(fc,gApp.Surface(),rc,gTextMgr[TRID_UNOCCUPIED],rc,AlignTop); } else { check(0); } }
void iCastleToolBar::OnCompose() { iRect rect = GetScrRect(); gApp.Surface().FillRect(rect,cColor_Black); sint32 rval = m_pTabSwitch->GetSize().w+1+33; iRect rc(rect.x+rval,rect.y+1,rect.w-(30+rval)-1,20); gGfxMgr.BlitTile(PDGG_BKTILE, gApp.Surface(), rc); ButtonFrame(gApp.Surface(), rc, 0); }
void SpinButton::UpdateValue(int32 value) { if (value != Value()) { SetValue(value); Invoke(); } if (fButton != kSpinButtonNone && fButton != kSpinButtonWheel) { Invalidate(ButtonFrame(fButton)); } }
void OnCompose() { if (m_pHero) { iRect rc = GetScrRect(); SpriteId sid = m_pHero->Proto()->m_icn48; gGfxMgr.Blit(sid,gApp.Surface(), rc); ButtonFrame(gApp.Surface(),rc,GetButtonState()); if (!IsEnabled()) gApp.Surface().Darken25Rect(rc); rc.InflateRect(1); gApp.Surface().FrameRect(rc,cColor_Black); } }
void OnCompose() { iRect rc = GetScrRect(); gApp.Surface().FrameRect(rc, cColor_Black); rc.DeflateRect(1); SpriteId icn = PDGG_CTL_SICONS+CTLT_COUNT*2+m_nt; //PDGG_CTL_SICONS + (NATION_COUNT-NATION_HIGHMEN)*2 + (m_nt-NATION_HIGHMEN) BlitIcon(gApp.Surface(), icn, rc); ButtonFrame(gApp.Surface(), rc, m_state); if (!IsEnabled()) gApp.Surface().FillRect(rc, cColor_Gray64,128); }
void ComposeLBItem(uint32 iIdx, bool bSel, const iRect& irc) { iRect rc=irc; if (bSel) { gGfxMgr.BlitTile(PDGG_CTILE, gApp.Surface(),rc); ButtonFrame(gApp.Surface(),rc,0); } rc.DeflateRect(2); gTextComposer.TextOut(gApp.Surface(), rc, gTextComposer.CropString(m_strList[iIdx], dlgfc_splain, rc.w, true), rc, AlignLeft); }
void OnCompose() { iRect rc = GetScrRect(); gApp.Surface().FrameRect(rc, cColor_Black); rc.DeflateRect(1); gApp.Surface().FillRect(rc, PLAYER_COLORS[m_pid],96); ButtonFrame(gApp.Surface(), rc, m_state); SpriteId sid = (m_pt == PT_HUMAN)?PDGG_ICN_PLT_HUMAN:PDGG_ICN_PLT_AI; iPoint op(rc.x + (sint32)(rc.w/2) - (sint32)(gGfxMgr.Dimension(sid).w/2), rc.y + (sint32)(rc.h/2) - (sint32)(gGfxMgr.Dimension(sid).h/2)); gGfxMgr.Blit(sid, gApp.Surface(), op); /* if (m_pt == PT_HUMAN) gTextComposer.TextOut(dlgfc_stopic, gApp.Surface(), iPoint(), _T("Human"), rc, AlignCenter); else if (m_pt == PT_COMPUTER) gTextComposer.TextOut(dlgfc_splain, gApp.Surface(), iPoint(), _T("CPU"), rc, AlignCenter); */ if (!IsEnabled()) gApp.Surface().FillRect(rc, cColor_Gray64,128); }
void FormEdit::UpdateChildCount(int count) { for (int i = 0; i < _Ctrls.GetCount(); ++i) _CtrlContainer.RemoveChild(&_Ctrls[i]); _Ctrls.Clear(); _ItemList.Clear(); _Temporaries.Clear(); if (!_View.IsLayout()) { UpdateItemList(); return; } // if (_ViewMode == VIEW_MODE_WIREFRAME) // return; for (int i = 0; i < count; ++i) { if (!_View.GetObject(i)) continue; String type = (*_View.GetObjects())[i].Get("Type"); Font font = _View.GetFont(); int h = _View.ZoomY((*_View.GetObjects())[i].GetNumber("Font.Height")); if (h != 0) font.Height(h); if (font.GetHeight() == 0) font.Height(StdFont().GetHeight()); _ItemList.AddRow(type, (*_View.GetObjects())[i].Get("Variable")); if ((*_View.GetObjects())[i].GetBool("OutlineDraw", false) && _ViewMode != VIEW_MODE_AS_IS) { if (_ViewMode != VIEW_MODE_WIREFRAME) _CtrlContainer.Add( _Ctrls.Create<StaticRect>() ); } else if (type == "Button") { Button* b = &_Ctrls.Create<Button>(); b->SetFont(font); if (_ViewMode == VIEW_MODE_AS_IS) b->SetLabel((*_View.GetObjects())[i].Get("Label")); if (_ViewMode != VIEW_MODE_WIREFRAME) _CtrlContainer.Add( b->NoWantFocus() ); } else if (type == "DropDate") { DropDate *b = &_Ctrls.Create<DropDate>(); b->SetFont(font); if (_ViewMode != VIEW_MODE_WIREFRAME) _CtrlContainer.Add( b->NoWantFocus() ); } else if (type == "GridCtrl") { GridCtrl *b = &_Ctrls.Create<GridCtrl>(); // b->SetFont(font); TODO #ifdef PLATFORM_WIN32 b->Chameleon(); #endif String src = (*_View.GetObjects())[i].Get("Grid.Columns"); ReplaceString(src, ";", "\r\n"); StringStream s; s.Open(src); IniFile f; f.Load(s); Vector<String> names = f.EnumNames("Columns"); for (int j = 0; j < names.GetCount(); ++j) { int n = ScanInt(names[j]); Vector<String> values = f.GetArray("Columns", names[j]); if (values.GetCount() != 3) continue; if (values[1] == "Left") b->AddColumn(values[0]).HeaderAlignCenterLeft(); else if (values[1] == "Right") b->AddColumn(values[0]).HeaderAlignCenterRight(); else b->AddColumn(values[0]).HeaderAlignCenter(); } if (_ViewMode != VIEW_MODE_WIREFRAME) _CtrlContainer.Add( b->NoWantFocus() ); } else if (type == "EditField") { EditField *b = &_Ctrls.Create<EditField>(); b->SetFont(font); if (_ViewMode == VIEW_MODE_AS_IS) b->SetText((*_View.GetObjects())[i].Get("DefaultData")); if (_ViewMode != VIEW_MODE_WIREFRAME) _CtrlContainer.Add( b->NoWantFocus() ); } else if (type == "EditInt") { EditInt *b = &_Ctrls.Create<EditInt>(); b->SetFont(font); if (_ViewMode == VIEW_MODE_AS_IS) b->SetText((*_View.GetObjects())[i].Get("DefaultData")); if (_ViewMode != VIEW_MODE_WIREFRAME) _CtrlContainer.Add( b->NoWantFocus() ); } else if (type == "ProgressBar") { ProgressIndicator *b = &_Ctrls.Create<ProgressIndicator>(); b->Set(0, 100); if (_ViewMode != VIEW_MODE_WIREFRAME) _CtrlContainer.Add( b->NoWantFocus() ); } else if (type == "TabCtrl") { TabCtrl* e = &_Ctrls.Create<TabCtrl>(); TabCtrl::Style& style = e->StyleDefault().Write(); style.font = font; style.tabheight = font.GetHeight() + VertLayoutZoom(10); e->SetStyle(style); String src = (*_View.GetObjects())[i].Get("Tab.Content"); ReplaceString(src, ";", "\r\n"); StringStream s; s.Open(src); IniFile f; f.Load(s); Vector<String> names = f.EnumNames("Tabs"); VectorMap<int, Vector<String> > cache; int tabCount = 0; for (int j = 0; j < names.GetCount(); ++j) { int n = ScanInt(names[j]); if (AsString(n) != names[j]) continue; Vector<String> values = f.GetArray("Tabs", names[j]); if (values.GetCount() != 3) continue; Container *cont = &_Temporaries.Create<Container>(); Form *f = &_Temporaries.Create<Form>(); if (values[0] != t_("Current form")) { if (!f->Load(GetFileDirectory(_File) + "\\" + values[0])) continue; } else { int lay = _View.HasLayout(values[1]); if (lay < 0) continue; f->GetLayouts().Add() <<= _View.GetLayouts()[lay]; } if (!f->Layout(values[1], font)) continue; cont->Set(*f, f->GetSize()); cont->SizePos(); e->Add(*cont, values[2]); tabCount++; } int activeTab = -1; if (tabCount) { activeTab = (*_View.GetObjects())[i].GetNumber("Tab.Active", 0, 0); if (activeTab >= tabCount) { activeTab = tabCount - 1; e->Set(activeTab); } e->Set(activeTab); } (*_View.GetObjects())[i].SetNumber("Tab.Active", activeTab); (*_View.GetObjects())[i].SetNumber("Tab.Count", tabCount); if (_ViewMode != VIEW_MODE_WIREFRAME) _CtrlContainer.Add( e->NoWantFocus() ); } else if (type == "Form") { Form f; String path = (*_View.GetObjects())[i].Get("Form.Path"); (*_View.GetObjects())[i].Get("Form.PathType") == "Relative" ? f.Load(::GetFileDirectory(_File) + "\\" + path) : f.Load(path); f.Layout((*_View.GetObjects())[i].Get("Form.Layout"), font); ImageDraw w(f.GetSize()); f.DrawCtrl(w); ImageBuffer buf(w); StaticImage *s = &_Ctrls.Create<StaticImage>(); s->SetImage(buf); if (_ViewMode != VIEW_MODE_WIREFRAME) _CtrlContainer.AddChild( s ); } else { Label *b = &_Ctrls.Create<Label>(); b->SetFont(font); Color fontColor = DefaultInk(); LoadFromString(fontColor, Decode64((*_View.GetObjects())[i].Get("Font.Color", StoreAsString(fontColor)))); b->SetInk(fontColor); String align = (*_View.GetObjects())[i].Get("Text.Align"); if (align == "Center") b->SetAlign(ALIGN_CENTER); if (align == "Right") b->SetAlign(ALIGN_RIGHT); if (align == "Left") b->SetAlign(ALIGN_LEFT); if (_ViewMode == VIEW_MODE_AS_IS) b->SetLabel((*_View.GetObjects())[i].Get("Label")); if (_ViewMode != VIEW_MODE_WIREFRAME) _CtrlContainer.Add( b->NoWantFocus() ); } String frame = (*_View.GetObjects())[i].Get("Frame"); Ctrl* c = NULL; if (_Ctrls.GetCount()) c = &_Ctrls[_Ctrls.GetCount() - 1]; if (c) { if (frame == "Null frame") c->SetFrame(NullFrame()); if (frame == "Field frame") c->SetFrame(FieldFrame()); if (frame == "Inset frame") c->SetFrame(InsetFrame()); if (frame == "Outset frame") c->SetFrame(OutsetFrame()); if (frame == "Thin inset frame") c->SetFrame(ThinInsetFrame()); if (frame == "Thin outset frame") c->SetFrame(ThinOutsetFrame()); if (frame == "Black frame") c->SetFrame(BlackFrame()); if (frame == "Button frame") c->SetFrame(ButtonFrame()); if (frame == "Top separator frame") c->SetFrame(TopSeparatorFrame()); if (frame == "Left separator frame") c->SetFrame(LeftSeparatorFrame()); if (frame == "Right separator frame") c->SetFrame(RightSeparatorFrame()); if (frame == "Bottom separator frame") c->SetFrame(BottomSeparatorFrame()); } } UpdateItemList(); UpdateChildAllPos(); }
void iMeetToolBar::OnCompose() { iRect rect = GetScrRect(); gGfxMgr.BlitTile(PDGG_BKTILE, gApp.Surface(), iRect(rect.x,rect.y+1,rect.w-30,20)); ButtonFrame(gApp.Surface(), iRect(rect.x,rect.y+1,rect.w-30,20), 0); }