void CChatChannel::WhoIs(LPCTSTR pszBy, LPCTSTR pszMember) { ADDTOCALLSTACK("CChatChannel::WhoIs"); CChatMember *pMemberBy = FindMember(pszBy); CChatMember *pMemberTarg = FindMember(pszMember); CChar *pCharTarg = (pMemberTarg && pMemberTarg->GetClient()) ? pMemberTarg->GetClient()->GetChar() : NULL; if ( !pCharTarg ) pMemberBy->SendChatMsg(CHATMSG_NoPlayer, pszMember); else if ( pMemberTarg->m_bAllowWhoIs ) pMemberBy->SendChatMsg(CHATMSG_PlayerKnownAs, pszMember, pCharTarg->GetName()); else pMemberBy->SendChatMsg(CHATMSG_PlayerIsAnonymous, pszMember); }
void CChatChannel::Broadcast(CHATMSG_TYPE iType, LPCTSTR pszName, LPCTSTR pszText, CLanguageID lang, bool fOverride ) { ADDTOCALLSTACK("CChatChannel::Broadcast"); CGString sName; CChatChanMember *pSendingMember = FindMember(pszName); if (iType >= CHATMSG_PlayerTalk && iType <= CHATMSG_PlayerPrivate) // Only chat, emote, and privates get a color status number g_Serv.m_Chats.DecorateName(sName, pSendingMember, fOverride); else sName = pszName; for (size_t i = 0; i < m_Members.GetCount(); i++) { // Check to see if the recipient is ignoring messages from the sender // Just pass over it if it's a regular talk message if (!m_Members[i]->IsIgnoring(pszName)) { m_Members[i]->SendChatMsg(iType, sName, pszText, lang ); } // If it's a private message, then tell the sender the recipient is ignoring them else if (iType == CHATMSG_PlayerPrivate) { pSendingMember->SendChatMsg(CHATMSG_PlayerIsIgnoring, m_Members[i]->GetChatName()); } } }
void CChatChannel::RemoveModerator(CChatMember *pByMember, LPCTSTR pszName) { ADDTOCALLSTACK("CChatChannel::RemoveModerator"); LPCTSTR pszByName = pByMember->GetChatName(); if ( !IsModerator(pszByName) ) { pByMember->SendChatMsg(CHATMSG_MustHaveOps); return; } CChatMember *pMember = FindMember(pszName); if ( !pMember ) { pByMember->SendChatMsg(CHATMSG_NoPlayer, pszName); return; } pszName = pMember->GetChatName(); // fix case-sensitive mismatch if ( !IsModerator(pszName) ) return; SetModerator(pszName, true); SendMember(pMember); // update name color Broadcast(CHATMSG_PlayerNoLongerModerator, pszName); pMember->SendChatMsg(CHATMSG_RemovedListModerators, pszByName); }
void CChatChannel::PrivateMessage(CChatMember *pFrom, LPCTSTR pszTo, LPCTSTR pszMsg, CLanguageID lang) { ADDTOCALLSTACK("CChatChannel::PrivateMessage"); CChatMember *pTo = FindMember(pszTo); if ( !pTo ) { pFrom->SendChatMsg(CHATMSG_NoPlayer, pszTo); return; } if ( !pTo->m_bReceiving ) { pFrom->SendChatMsg(CHATMSG_PlayerNotReceivingPrivateMessages, pszTo); return; } // Members without voice can't send private messages on channel, but they still allowed to send private messages to moderators if ( !HasVoice(pFrom->GetChatName()) && !IsModerator(pszTo) ) { pFrom->SendChatMsg(CHATMSG_RevokedSpeaking); return; } if ( pTo->IsIgnoring(pFrom->GetChatName()) ) { pFrom->SendChatMsg(CHATMSG_PlayerIsIgnoring, pszTo); return; } CGString sName; g_Serv.m_Chats.FormatName(sName, pFrom); pFrom->SendChatMsg(CHATMSG_PlayerPrivateMessage, sName, pszMsg, lang); if ( pTo != pFrom ) pTo->SendChatMsg(CHATMSG_PlayerPrivateMessage, sName, pszMsg, lang); }
void CChatChannel::RemoveVoice(CChatMember *pByMember, LPCTSTR pszName) { ADDTOCALLSTACK("CChatChannel::RemoveVoice"); LPCTSTR pszByName = pByMember->GetChatName(); if ( !IsModerator(pszByName) ) { pByMember->SendChatMsg(CHATMSG_MustHaveOps); return; } CChatMember *pMember = FindMember(pszName); if ( !pMember ) { pByMember->SendChatMsg(CHATMSG_NoPlayer, pszName); return; } pszName = pMember->GetChatName(); // fix case-sensitive mismatch if ( !HasVoice(pszName) ) return; SetVoice(pszName, true); SendMember(pMember); // update name color pMember->SendChatMsg(CHATMSG_ModeratorHasRemovedSpeakPriv, pszByName); Broadcast(CHATMSG_PlayerNoSpeaking, pszName); }
Group::Group() : Node() { Member *name = FindMember(wxT("Name")); DeleteMember(name); DESTROY(name); }
void UIViewController::InitFromStory(XIBObject *obj) { ObjectConverterSwapper::InitFromStory(obj); _view = (UIView *) obj->FindMember("view"); if ( _connections ) { for ( int i = 0; i < _connections->count(); i ++ ) { XIBObject *curObj = _connections->objectAtIndex(i); if ( strcmp(curObj->_className, "segue") == 0 ) { const char *pDest = curObj->getAttrib("destination"); const char *pKind = curObj->getAttrib("kind"); XIBObject *newController = findReference(pDest); if ( newController && strcmp(pKind, "relationship") == 0 ) { ((UIViewController *) newController)->_parentViewController = this; _childViewControllers->AddMember(NULL, newController); _viewControllers->AddMember(NULL, newController); } } } } _tabBarItem = (UITabBarItem *) FindMember("tabBarItem"); _navigationItem = (UINavigationItem *) obj->FindMember("navigationItem"); _outputClassName = "UIViewController"; }
void CChatChannel::Emote(LPCTSTR pszBy, LPCTSTR pszMsg, CLanguageID lang ) { ADDTOCALLSTACK("CChatChannel::Emote"); if (HasVoice(pszBy)) Broadcast(CHATMSG_PlayerEmote, pszBy, pszMsg, lang ); else FindMember(pszBy)->SendChatMsg(CHATMSG_RevokedSpeaking); }
void plNetTalkList::AddMember(plNetTransportMember* e) { if (FindMember(e)==-1) { plStatusLog::AddLineS("voice.log", "Adding %s to talk list", e->AsString().c_str()); fMembers.push_back(e); } fFlags |= kDirty; }
void plNetTalkList::RemoveMember(plNetTransportMember* e) { int idx=FindMember(e); if (idx!=-1) { plStatusLog::AddLineS("voice.log", "Removing %s from talklist", e->AsString().c_str()); fMembers.erase(fMembers.begin()+idx); } fFlags |= kDirty; }
void CChatChannel::WhoIs(LPCTSTR pszBy, LPCTSTR pszMember) { ADDTOCALLSTACK("CChatChannel::WhoIs"); CChatChanMember * pBy = FindMember(pszBy); CChatChanMember * pMember = FindMember(pszMember); CChar * pChar = pMember? pMember->GetClient()->GetChar() : NULL; if (!pMember||!pChar) { pBy->SendChatMsg(CHATMSG_NoPlayer, pszMember); } else if (pMember->GetWhoIs()) { pBy->SendChatMsg(CHATMSG_PlayerKnownAs, pszMember, pChar->GetName()); } else { pBy->SendChatMsg(CHATMSG_PlayerIsAnonymous, pszMember); } }
bool CChatChannel::RemoveMember(LPCTSTR pszName) { ADDTOCALLSTACK("CChatChannel::RemoveMember(2)"); CChatMember *pMember = FindMember(pszName); if ( !pMember ) return false; RemoveMember(pMember); return true; }
void CChatChannel::ToggleDefaultVoice(LPCTSTR pszName) { ADDTOCALLSTACK("CChatChannel::ToggleDefaultVoice"); if ( !IsModerator(pszName) ) { FindMember(pszName)->SendChatMsg(CHATMSG_MustHaveOps); return; } m_bDefaultVoice = !m_bDefaultVoice; Broadcast(m_bDefaultVoice ? CHATMSG_EveryoneSpeakingPrivByDefault : CHATMSG_ModeratorSpeakingPrivByDefault); }
AnimationMaster AnimationMaster::Unserialize(Renderer* renderer, rapidjson::Value* value) { PASSERT( value->IsObject(), "AnimationMaster cannot unserialize because passed is not an object (Note: This may indicate parsing failure)"); PASSERT(value->FindMember("animations")->value.IsArray(), "AnimationMaster cannot unserialize because animations field is not an array"); PASSERT(value->FindMember("default")->value.IsString(), "AnimationMaster default should be string"); std::map<PBase::String, AnimationSetEntry> anims; rapidjson::Value* animations = &value->FindMember("animations")->value; for (auto it = animations->Begin(); it != animations->End(); it++) { PASSERT(it->IsObject(), "AnimationMaster animation entry should be an object"); PASSERT(it->FindMember("name")->value.IsString(), "AnimationMaster animation entry name should be string"); PASSERT(it->FindMember("animation_file")->value.IsString(), "AnimationMaster animation file path should be string"); String after; if (it->HasMember("after")) { PASSERT(it->FindMember("after")->value.IsString(), "after should be a string animation identifier"); after = it->FindMember("after")->value.GetString(); } anims[it->FindMember("name")->value.GetString()] = AnimationSetEntry( renderer->LoadAnimationSet(it->FindMember("animation_file")->value.GetString()), after); } return AnimationMaster(value->FindMember("default")->value.GetString(), anims); }
// // add a member to the master list if not already there // int plNetTransport::AddMember(plNetTransportMember* mbr) { if (FindMember(mbr)==-1) { fMembers.push_back(mbr); hsLogEntry( plNetClientMgr::GetInstance()->DebugMsg("Adding member %s", mbr->AsString().c_str()) ); plNetClientMgr::GetInstance()->GetListenList()->AddMember(mbr); plNetClientMgr::GetInstance()->GetTalkList()->AddMember(mbr); DumpState(); return fMembers.size()-1; } return -1; }
void CChatChannel::ToggleVoiceDefault(LPCTSTR pszBy) { ADDTOCALLSTACK("CChatChannel::ToggleVoiceDefault"); if (!IsModerator(pszBy)) { FindMember(pszBy)->SendChatMsg(CHATMSG_MustHaveOps); return; } if (GetVoiceDefault()) Broadcast(CHATMSG_ModeratorsSpeakDefault, "", ""); else Broadcast(CHATMSG_SpeakingByDefault, "", ""); SetVoiceDefault(!GetVoiceDefault()); }
void UILabel::InitFromXIB(XIBObject *obj) { UIView::InitFromXIB(obj); _shadowOffset = obj->GetSize("IBUIShadowOffset", 0, -1.0f); _text = obj->GetString("IBUIText", NULL); _textColor = (UIColor *) obj->FindMember("IBUITextColor"); if ( _textColor && _textColor->isNil() ) _textColor = NULL; _highlightedColor = (UIColor *) obj->FindMember("IBUIHighlightedColor"); if ( _highlightedColor && _highlightedColor->isNil() ) _highlightedColor = NULL; _baselineAdjustment = obj->GetInt("IBUIBaselineAdjustment", 0); _textAlignment = obj->GetInt("IBUITextAlignment", 0); _numberOfLines = obj->GetInt("IBUINumberOfLines", 1); _font = (UIFont *) obj->FindMember("IBUIFontDescription"); if ( !_font ) _font = (UIFont *) obj->FindMember("IBUIFont"); if ( FindMember("IBUIMinimumFontSize") ) { _minimumFontSize = FindMember("IBUIMinimumFontSize")->floatValue(); _adjustsFontSizeToFit = true; } obj->_outputClassName = "UILabel"; }
std::shared_ptr<TileData> TopoJsonSource::parse(const TileTask& _task, const MapProjection& _projection) const { auto& task = static_cast<const DownloadTileTask&>(_task); std::shared_ptr<TileData> tileData = std::make_shared<TileData>(); // Parse data into a JSON document const char* error; size_t offset; auto document = JsonParseBytes(task.rawTileData->data(), task.rawTileData->size(), &error, &offset); if (error) { LOGE("Json parsing failed on tile [%s]: %s (%u)", task.tileId().toString().c_str(), error, offset); return tileData; } // Transform JSON data into a TileData using TopoJson functions BoundingBox tileBounds(_projection.TileBounds(task.tileId())); glm::dvec2 tileOrigin = {tileBounds.min.x, tileBounds.max.y*-1.0}; double tileInverseScale = 1.0 / tileBounds.width(); const auto projFn = [&](glm::dvec2 _lonLat){ glm::dvec2 tmp = _projection.LonLatToMeters(_lonLat); return Point { (tmp.x - tileOrigin.x) * tileInverseScale, (tmp.y - tileOrigin.y) * tileInverseScale, 0 }; }; // Parse topology and transform auto topology = TopoJson::getTopology(document, projFn); // Parse each TopoJson object as a data layer auto objectsIt = document.FindMember("objects"); if (objectsIt == document.MemberEnd()) { return tileData; } auto& objects = objectsIt->value; for (auto layer = objects.MemberBegin(); layer != objects.MemberEnd(); ++layer) { tileData->layers.push_back(TopoJson::getLayer(layer, topology, m_id)); } // Discard JSON object and return TileData return tileData; }
Group::Group(List<Shape *> *nodes) : Node() { for (List<Shape *>::Iterator i = nodes->Iterate(); !i; i++) { if (dynamic_cast<Node *>(*i) != NULL) { m_children.Add(*i); } } AddPorts(); Member *name = FindMember(wxT("Name")); DeleteMember(name); DESTROY(name); AddProperty(NEW(TextProperty, (this, wxT("Name")))); SetPosition(GetTopLeft(nodes)); EvalSize(); }
BOOL CParty::DeleteMember( u_long uPlayerId ) { int Findid = FindMember( uPlayerId ); if( Findid >= 0) { for( int i = Findid ; i < m_nSizeofMember-1 ; i++ ) { memcpy( &m_aMember[i], &m_aMember[i+1], sizeof(PartyMember) ); } m_nSizeofMember--; #ifdef __WORLDSERVER #if __VER >= 14 // __INSTANCE_DUNGEON CInstanceDungeonParty::GetInstance()->SetPartyLeaveTime( uPlayerId ); #endif // __INSTANCE_DUNGEON #endif // __WORLDSERVER return TRUE; } return FALSE; }
void plNetListenList::RemoveMember(plNetTransportMember* e) { int idx=FindMember(e); if (idx!=-1) { fMembers.erase(fMembers.begin()+idx); plStatusLog::AddLineS("voice.log", "Removing %s from listen list", e->AsString().c_str()); #if 0 // call the new member's win audible and set talk icon parameters plSoundMsg* pMsg = new plSoundMsg; plArmatureMod* pMod = plArmatureMod::ConvertNoRef(e->GetAvatarKey()->GetObjectPtr()); if (pMod) pMsg->AddReceiver(pMod->GetTarget(0)->GetKey()); pMsg->SetCmd(plSoundMsg::kClearTalkIcon); plgDispatch::MsgSend(pMsg); #endif } }
void CChatChannel::RevokeModerator(CChatChanMember * pByMember, LPCTSTR pszName) { ADDTOCALLSTACK("CChatChannel::RevokeModerator"); if (!IsModerator(pByMember->GetChatName())) { pByMember->SendChatMsg(CHATMSG_MustHaveOps); return; } CChatChanMember * pMember = FindMember(pszName); if (!pMember) { pByMember->SendChatMsg(CHATMSG_NoPlayer, pszName); return; } if (!IsModerator(pMember->GetChatName())) return; SetModerator(pszName, false); SendThisMember(pMember); // Update the color Broadcast(CHATMSG_PlayerNoLongerModerator, pMember->GetChatName(), "", ""); pMember->SendChatMsg(CHATMSG_RemovedListModerators, pByMember->GetChatName()); }
void CChatChannel::GrantModerator(CChatChanMember * pByMember, LPCTSTR pszName) { ADDTOCALLSTACK("CChatChannel::GrantModerator"); if (!IsModerator(pByMember->GetChatName())) { pByMember->SendChatMsg(CHATMSG_MustHaveOps); return; } CChatChanMember * pMember = FindMember(pszName); if (!pMember) { pByMember->SendChatMsg(CHATMSG_NoPlayer, pszName); return; } if (IsModerator(pMember->GetChatName())) return; SetModerator(pszName, true); SendThisMember(pMember); // Update the color Broadcast(CHATMSG_PlayerIsAModerator, pMember->GetChatName(), "", ""); pMember->SendChatMsg(CHATMSG_YouAreAModerator, pByMember->GetChatName()); }
void CChatChannel::RevokeVoice(CChatChanMember * pByMember, LPCTSTR pszName) { ADDTOCALLSTACK("CChatChannel::RevokeVoice"); if (!IsModerator(pByMember->GetChatName())) { pByMember->SendChatMsg(CHATMSG_MustHaveOps); return; } CChatChanMember * pMember = FindMember(pszName); if (!pMember) { pByMember->SendChatMsg(CHATMSG_NoPlayer, pszName); return; } if (!HasVoice(pszName)) return; SetVoice(pszName, false); SendThisMember(pMember); // Update the color pMember->SendChatMsg(CHATMSG_ModeratorRemovedSpeaking, pByMember->GetChatName()); Broadcast(CHATMSG_PlayerNoSpeaking, pszName, "", ""); }
void plNetListenList::AddMember(plNetTransportMember* e) { if (FindMember(e)==-1) { plStatusLog::AddLineS("voice.log", "Adding %s to listen list ", e->AsString().c_str()); fMembers.push_back(e); #if 0 // call the new member's win audible and set talk icon parameters plSoundMsg* pMsg = new plSoundMsg; plArmatureMod* pMod = plArmatureMod::ConvertNoRef(e->GetAvatarKey()->GetObjectPtr()); if (pMod) pMsg->AddReceiver(pMod->GetTarget(0)->GetKey()); pMsg->SetCmd(plSoundMsg::kSetTalkIcon); pMsg->fIndex = GetNumMembers(); pMsg->fNameStr = (uint32_t)e->GetName(); plgDispatch::MsgSend(pMsg); #endif } }
void CChatChannel::Broadcast(CHATMSG_TYPE iType, LPCTSTR pszName, LPCTSTR pszText, CLanguageID lang, bool bOverride) { ADDTOCALLSTACK("CChatChannel::Broadcast"); CChatMember *pSendingMember = FindMember(pszName); CGString sName; if ( (iType >= CHATMSG_PlayerMessage) && (iType <= CHATMSG_PlayerPrivateMessage) ) g_Serv.m_Chats.FormatName(sName, pSendingMember, bOverride); else sName = pszName; for ( size_t i = 0; i < m_Members.GetCount(); i++ ) { if ( m_Members[i]->IsIgnoring(pszName) ) // don't receive messages from players being ignored { if ( pSendingMember && (iType == CHATMSG_PlayerPrivateMessage) ) // if it's a private message, tell the sender that he's being ignored pSendingMember->SendChatMsg(CHATMSG_PlayerIsIgnoring, m_Members[i]->GetChatName()); continue; } m_Members[i]->SendChatMsg(iType, sName, pszText, lang); } }
//! 添加一个联系人 void LinkmanGroup::AddMember(tagLinkman &Linkman, BOOL bSend2Client) { assert(!FindMember(Linkman.guid)); assert(NULL_GUID != Linkman.guid); if (m_mapAddMe.find(Linkman.guid) != m_mapAddMe.end()) { Linkman.bMutual = TRUE; } m_mapMeAdd[Linkman.guid] = Linkman; //! 通知玩家 if(bSend2Client) { CMessage msgClient(MSG_S2C_LINKMAN_ADD); msgClient.Add((LONG)TRUE); msgClient.Add(m_pSetup->m_uID); msgClient.AddEx(&Linkman, sizeof(tagLinkman)); msgClient.SendToPlayer(m_OwnerGuid); } }
void CChatChannel::SendPrivateMessage(CChatChanMember * pFrom, LPCTSTR pszTo, LPCTSTR pszMsg) { ADDTOCALLSTACK("CChatChannel::SendPrivateMessage"); CChatChanMember * pTo = FindMember(pszTo); if (!pTo) { pFrom->SendChatMsg(CHATMSG_NoPlayer, pszTo); return; } if (!pTo->IsReceivingAllowed()) { pFrom->SendChatMsg(CHATMSG_PlayerNotReceivingPrivate, pszTo); return; } // Can always send private messages to moderators (but only if they are receiving) bool fHasVoice = HasVoice(pFrom->GetChatName()); if ( !fHasVoice && !IsModerator(pszTo)) { pFrom->SendChatMsg(CHATMSG_RevokedSpeaking); return; } if (pTo->IsIgnoring(pFrom->GetChatName())) // See if ignoring you { pFrom->SendChatMsg(CHATMSG_PlayerIsIgnoring, pszTo); return; } CGString sName; g_Serv.m_Chats.DecorateName(sName, pFrom); // Echo to the sending client so they know the message went out pFrom->SendChatMsg(CHATMSG_PlayerPrivate, sName, pszMsg); // If the sending and receiving are different send it out to the receiver if (pTo != pFrom) pTo->SendChatMsg(CHATMSG_PlayerPrivate, sName, pszMsg); }
void UIView::InitFromXIB(XIBObject *obj) { ObjectConverterSwapper::InitFromXIB(obj); _subviews = (XIBArray *) obj->FindMember("NSSubviews"); if ( !_subviews ) _subviews = new XIBArray(); if ( FindMember("NSFrame") != NULL ) { const char *pszFramePos = GetString("NSFrame", NULL); _bounds.x = 0; _bounds.y = 0; _bounds.width = 0; _bounds.height = 0; _center.x = 0; _center.y = 0; sscanf(pszFramePos, "{{%f, %f}, {%f, %f}}", &_center.x, &_center.y, &_bounds.width, &_bounds.height); _center.x += _bounds.width / 2.0f; _center.y += _bounds.height / 2.0f; } else { const char *pszFramePos = GetString("NSFrameSize", NULL); _bounds.x = 0; _bounds.y = 0; _bounds.width = 0; _bounds.height = 0; sscanf(pszFramePos, "{%f, %f}", &_bounds.width, &_bounds.height); _center.x = _bounds.width / 2.0f; _center.y = _bounds.height / 2.0f; } if ( FindMember("NSSuperview") == NULL ) { _center.x = _bounds.width / 2.0f; _center.y = _bounds.height / 2.0f; } _autoresizeSubviews = true; _autoresizingMask = 0; _hidden = false; _opaque = GetBool("IBUIOpaque", true); _clipsToBounds = GetBool("IBUIClipsSubviews", false); _userInteractionDisabled = !GetBool("IBUIUserInteractionEnabled", true); _contentMode = GetInt("IBUIContentMode", 0); _clearsContextBeforeDrawing = GetBool("IBUIClearsContextBeforeDrawing", true); if ( FindMember("NSvFlags") != NULL ) { int flags = FindMember("NSvFlags")->intValue(); if ( flags & 0x100 ) { _autoresizeSubviews = true; } _autoresizingMask = flags & 0x3F; if ( flags & 0x80000000 ) { _hidden = true; } } _autoresizeSubviews = GetBool("IBUIAutoresizesSubviews", true); _enabled = GetBool("IBUIEnabled", true); _multipleTouchEnabled = GetBool("IBUIMultipleTouchEnabled", false); _backgroundColor = (UIColor *) FindMember("IBUIBackgroundColor"); // Constraints for XIB are handled in NSLayoutConstraint.cpp _outputClassName = "UIView"; }
void UIView::InitFromStory(XIBObject *obj) { ObjectConverterSwapper::InitFromStory(obj); _subviews = (XIBArray *) obj->FindMemberClass("subviews"); if ( !_subviews ) _subviews = new XIBArray(); _constraints = (XIBArray *)obj->FindMemberClass("constraints"); if (!_constraints) _constraints = new XIBArray(); if ( getAttrib("opaque") ) { const char *pVal = getAttrib("opaque"); if ( strcmp(pVal, "NO") == 0 ) _opaque = false; } if ( getAttrib("multipleTouchEnabled") ) { if ( strcmp(getAttrib("multipleTouchEnabled"), "YES") == 0 ) _multipleTouchEnabled = true; } if ( getAttrib("clipsSubviews") ) { if ( strcmp(getAttrib("clipsSubviews"), "YES") == 0 ) _clipsToBounds = true; } if ( getAttrib("userInteractionEnabled") ) { if ( strcmp(getAttrib("userInteractionEnabled"), "NO") == 0 ) _userInteractionDisabled = true; } if ( getAttrib("clearsContextBeforeDrawing") ) { if ( strcmp(getAttrib("clearsContextBeforeDrawing"), "NO") == 0 ) _clearsContextBeforeDrawing = false; } if ( getAttrib("contentMode") ) { const char *mode = getAttrib("contentMode"); if ( strcmp(mode, "left") == 0 ) { _contentMode = UIViewContentModeLeft; } else if ( strcmp(mode, "scaleToFill") == 0 ) { _contentMode = UIViewContentModeScaleToFill; } else if ( strcmp(mode, "center") == 0 ) { _contentMode = UIViewContentModeCenter; } else if ( strcmp(mode, "redraw") == 0 ) { _contentMode = UIViewContentModeRedraw; } else if ( strcmp(mode, "scaleAspectFill") == 0 ) { _contentMode = UIViewContentModeScaleAspectFill; } else if ( strcmp(mode, "scaleAspectFit") == 0 ) { _contentMode = UIViewContentModeScaleAspectFit; } else { assert(0); } } if ( getAttrib("hidden") ) { if ( strcmp(getAttrib("hidden"), "YES") == 0 ) _hidden = true; } XIBObject *frameRect = FindMember("frame"); if ( frameRect ) { _bounds.x = 0; _bounds.y = 0; _bounds.width = strtod(frameRect->getAttrib("width"), NULL); _bounds.height = strtod(frameRect->getAttrib("height"), NULL); _center.x = strtod(frameRect->getAttrib("x"), NULL); _center.y = strtod(frameRect->getAttrib("y"), NULL); _center.x += _bounds.width / 2.0f; _center.y += _bounds.height / 2.0f; } XIBObject *resizeMask = FindMember("autoresizingMask"); if ( resizeMask ) { if ( resizeMask->getAttrib("widthSizable") ) _autoresizingMask |= (int) UIViewAutoresizingFlexibleWidth; if ( resizeMask->getAttrib("heightSizable") ) _autoresizingMask |= (int) UIViewAutoresizingFlexibleHeight; if ( resizeMask->getAttrib("flexibleMinX") ) _autoresizingMask |= (int) UIViewAutoresizingFlexibleLeftMargin; if ( resizeMask->getAttrib("flexibleMaxX") ) _autoresizingMask |= (int) UIViewAutoresizingFlexibleRightMargin; if ( resizeMask->getAttrib("flexibleMinY") ) _autoresizingMask |= (int) UIViewAutoresizingFlexibleTopMargin; if ( resizeMask->getAttrib("flexibleMaxY") ) _autoresizingMask |= (int) UIViewAutoresizingFlexibleBottomMargin; } _backgroundColor = (UIColor *) FindMember("backgroundColor"); if (getAttrib("translatesAutoresizingMaskIntoConstraints")) { if (strcmp(getAttrib("translatesAutoresizingMaskIntoConstraints"), "NO") == 0) _translatesAutoresizeToConstraints = false; } _outputClassName = "UIView"; }