bool CFormBackendImp::LoadLayout( GUCEF::CORE::CIOAccess& layoutStorage ) {GUCEF_TRACE; CEGUI::Window* rootWindow = NULL; CEGUI::WindowManager* wmgr = CEGUI::WindowManager::getSingletonPtr(); GUCEF_DEBUG_LOG( 0, "Starting layout load for a GUI Form" ); try { CORE::CDynamicBuffer memBuffer( layoutStorage ); CEGUI::RawDataContainer container; container.setData( (CEGUI::uint8*) memBuffer.GetBufferPtr() ); container.setSize( (size_t) memBuffer.GetDataSize() ); rootWindow = wmgr->loadLayoutFromContainer( container ); container.setData( (CEGUI::uint8*) NULL ); container.setSize( (size_t) 0 ); } catch ( CEGUI::Exception& e ) { GUCEF_ERROR_LOG( 0, CString( "CEGUI Exception while attempting to load form layout: " ) + e.what() ); return false; } // Now that we completed loading lets see what we got from CEGUI if ( NULL != rootWindow ) { // Begin by providing a wrapper for the root window m_rootWindow = CreateAndHookWrapperForWindow( rootWindow ); if ( NULL != m_rootWindow ) { CString localWidgetName = m_rootWindow->GetName().SubstrToChar( '/', false ); m_widgetMap[ localWidgetName ] = m_rootWindow; WrapAndHookChildWindows( rootWindow ); // We will directly add the form as a child of the root for now // Note: This assumes that you have a GUISheet already set, otherwise this will result in a segfault! CEGUI::Window* globalRootWindow = CEGUI::System::getSingleton().getDefaultGUIContext().getRootWindow(); if ( NULL != globalRootWindow ) { globalRootWindow->addChild( rootWindow ); GUCEF_DEBUG_LOG( 0, "Successfully loaded a GUI Form layout" ); return true; } else { GUCEF_ERROR_LOG( 0, "Failed to add form as a child to the global \"root\" window" ); } } rootWindow->hide(); } GUCEF_DEBUG_LOG( 0, "Failed to load a GUI Form layout" ); return false; }
std::pair<unsigned, unsigned> getLineAndColumn(unsigned ByteOffset) const { auto &Buf = memBuffer(); if (ByteOffset > Buf.getBufferSize()) return std::make_pair(0, 0); SMLoc Loc = SMLoc::getFromPointer(Buf.getBufferStart() + ByteOffset); return SM.getLLVMSourceMgr().getLineAndColumn(Loc, BufferID); }
void VfsResourceProvider::loadRawDataContainer( const CEGUI::String& filename , CEGUI::RawDataContainer& output , const CEGUI::String& resourceGroup ) {GUCEF_TRACE; // everything in CEGUI works based on resource groups // make sure we dont use an empty one const CEGUI::String* rscGroup = &resourceGroup; if ( resourceGroup.empty() ) { rscGroup = &m_defaultResourceGroup; } CORE::CString filePath; CORE::CString fileName = filename; TCEStringMap::iterator i = m_groupMap.find( *rscGroup ); if ( i != m_groupMap.end() ) { filePath = (*i).second; } filePath = CORE::CombinePath( filePath, fileName ); VFS::CVFS& vfs = VFS::CVfsGlobal::Instance()->GetVfs(); VFS::CVFS::CVFSHandlePtr file = vfs.GetFile( filePath, "rb", false ); if ( !file.IsNULL() ) { CORE::CIOAccess* fileAccess = file->GetAccess(); if ( NULL != fileAccess ) { CORE::CDynamicBuffer memBuffer( *fileAccess ); void* buffer = NULL; UInt32 dataSize = 0; memBuffer.RelinquishDataOwnership( buffer, dataSize ); output.setData( (CEGUI::uint8*) buffer ); output.setSize( dataSize ); DataContainerInfoPtr info = new TDataContainerInfo; info->fileHandle = file; info->requestFilename = fileName; info->requestresourceGroup = resourceGroup; info->ceContainer = output; m_containerMap[ buffer ] = info; } else { GUCEF_ERROR_LOG( CORE::LOGLEVEL_NORMAL, "VfsResourceProvider:loadRawDataContainer: Unable to load resource from path: " + filePath ); } } }
wxImage CPainting::CreateFromSVG(const int & buttonWidth, const int & buttonHeight, const wxString &vector) { wxImage img; if (vector.size() > 0) { wxStringInputStream memBuffer(vector); wxSVGDocument svgDoc; svgDoc.Load(memBuffer); img = svgDoc.Render(buttonWidth, buttonHeight, NULL, true, true); } else { img.Create(buttonWidth, buttonHeight); } return img; }