Rect GuiTableComposition::GetBounds() { Rect cached = previousBounds; Rect result = GuiBoundsComposition::GetBounds(); bool cellMinSizeModified = false; SortedList<GuiCellComposition*> cells; FOREACH(GuiCellComposition*, cell, cellCompositions) { if (cell && !cells.Contains(cell)) { cells.Add(cell); Size newSize = cell->GetPreferredBounds().GetSize(); if (cell->lastPreferredSize != newSize) { cell->lastPreferredSize = newSize; cellMinSizeModified = true; } } } if (cached != result || cellMinSizeModified) { UpdateCellBounds(); } return result; }
static void CollectTypeDescriptors(ITypeDescriptor* td, SortedList<ITypeDescriptor*>& tds) { if (!tds.Contains(td)) { tds.Add(td); } }
ParserDecl(Ptr<ParsingTreeObject> parserDecl) { nodeTypeMap.Add(parserDecl.Obj(), this); CollectTypes(parserDecl->GetMember(L"types").Cast<ParsingTreeArray>(), nodeTypeMap); { Ptr<ParsingTreeArray> items=parserDecl->GetMember(L"tokens").Cast<ParsingTreeArray>(); if(items) { for(int i=0;i<items->Count();i++) { Ptr<ParsingTreeObject> type=items->GetItem(i).Cast<ParsingTreeObject>(); if(type) { Ptr<ParsingTreeToken> name=type->GetMember(L"name").Cast<ParsingTreeToken>(); if(name) { tokens.Add(name->GetValue()); } } } } } { Ptr<ParsingTreeArray> items=parserDecl->GetMember(L"rules").Cast<ParsingTreeArray>(); if(items) { for(int i=0;i<items->Count();i++) { Ptr<ParsingTreeObject> type=items->GetItem(i).Cast<ParsingTreeObject>(); if(type) { Ptr<ParsingTreeToken> name=type->GetMember(L"name").Cast<ParsingTreeToken>(); if(name) { rules.Add(name->GetValue()); } } } } } }
ParserDecl(Ptr<ParsingTreeObject> parserDecl) { nodeTypeMap.Add(parserDecl.Obj(), this); Ptr<ParsingTreeArray> defs=parserDecl->GetMember(L"definitions").Cast<ParsingTreeArray>(); if(defs) { vint count=defs->Count(); for(vint i=0;i<count;i++) { Ptr<ParsingTreeObject> defObject=defs->GetItem(i).Cast<ParsingTreeObject>(); if(defObject) { if(defObject->GetType()==L"TokenDef") { Ptr<ParsingTreeToken> name=defObject->GetMember(L"name").Cast<ParsingTreeToken>(); if(name) { tokens.Add(name->GetValue()); } } else if(defObject->GetType()==L"RuleDef") { Ptr<ParsingTreeToken> name=defObject->GetMember(L"name").Cast<ParsingTreeToken>(); if(name) { rules.Add(name->GetValue()); } } else { CollectSubType(defObject, nodeTypeMap); } } } } }