void MkBodyFrameControlNode::_SetBodyFrame (const MkHashStr& themeName, MkWindowThemeData::eComponentType componentType, const MkHashStr& customFormName, bool useShadow, eHangingType hangingType, const MkFloat2& clientSize) { SetThemeName(themeName); if (componentType == MkWindowThemeData::eCT_CustomForm) { SetCustomForm(customFormName); } else { SetComponentType(componentType); } SetFormState(MkWindowThemeFormData::eS_Default); SetShadowUsage(useShadow); m_HangingType = hangingType; SetClientSize(clientSize); SetLocalDepth(0.1f); // title과 겹치는 것을 피하기 위해 0.1f만큼 뒤에 위치 _ApplyHangingType(); }
void MkWindowThemedNode::LoadObject(const MkDataNode& node) { MkVisualPatternNode::LoadObject(node); // theme name MkHashStr themeName; if (node.GetDataEx(ObjKey_ThemeName, themeName, 0) && (!themeName.Empty())) { SetThemeName(themeName); } // component MkHashStr componentBuffer; if (node.GetDataEx(ObjKey_ComponentType, componentBuffer, 0) && (!componentBuffer.Empty())) { SetComponentType(MkWindowThemeData::ConvertComponentNameToType(componentBuffer)); } else if (node.GetDataEx(ObjKey_CustomFormName, componentBuffer, 0) && (!componentBuffer.Empty())) { SetComponentType(MkWindowThemeData::eCT_CustomForm); SetCustomForm(componentBuffer); } // shadow bool useShadow; if (node.GetData(ObjKey_UseShadow, useShadow, 0)) { SetShadowUsage(useShadow); } // client size MkFloat2 clientSize; if (node.GetDataEx(ObjKey_ClientSize, clientSize, 0)) { SetClientSize(clientSize); } // frame type MkHashStr frameTypeName; if (node.GetDataEx(ObjKey_FrameType, frameTypeName, 0) && (!frameTypeName.Empty())) { m_FrameType = MkWindowThemeData::ConvertFrameNameToType(frameTypeName); } // form state -> default SetFormState(MkWindowThemeFormData::eS_Default); }
void MkCheckBoxControlNode::_SetCheckBox (const MkHashStr& themeName, MkWindowThemeData::eFrameType frameType, const MkArray<MkHashStr>& textNode, const MkStr& caption, bool onCheck) { m_FrameType = frameType; float frameSize = MK_STATIC_RES.GetWindowThemeSet().GetFrameSize(themeName, m_FrameType); // check box SetThemeName(themeName); SetComponentType(MkWindowThemeData::eCT_CheckBoxBtn); SetClientSize(MkFloat2(frameSize, frameSize)); SetFormState(MkWindowThemeFormData::eS_Normal); // caption _SetCaption(textNode, caption); // on check _SetCheck(onCheck, false); }
void MkWindowThemedNode::SendNodeCommandTypeEvent(ePA_SceneNodeEvent eventType, MkDataNode* argument) { switch (eventType) { case ePA_SNE_ChangeTheme: { MkArray<MkHashStr> names; if (argument->GetDataEx(ArgKey_ChangeTheme, names) && (names.GetSize() == 2)) { if (names[0].Empty() || (names[0] == m_ThemeName)) { SetThemeName(names[1]); } } } break; } MkVisualPatternNode::SendNodeCommandTypeEvent(eventType, argument); }