1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 #ifndef INCLUDED_CANVAS_PAGEMANAGER_HXX 29 #define INCLUDED_CANVAS_PAGEMANAGER_HXX 30 31 #include <basegfx/vector/b2isize.hxx> 32 #include <canvas/rendering/irendermodule.hxx> 33 #include <canvas/rendering/isurface.hxx> 34 35 #include "page.hxx" 36 37 namespace canvas 38 { 39 40 ////////////////////////////////////////////////////////////////////////////////// 41 // PageManager 42 ////////////////////////////////////////////////////////////////////////////////// 43 44 class PageManager 45 { 46 public: 47 PageManager( const canvas::IRenderModuleSharedPtr pRenderModule ) : 48 mpRenderModule(pRenderModule) 49 { 50 } 51 52 // returns the maximum size of a hardware 53 // accelerated page, e.g. OpenGL texture. 54 ::basegfx::B2ISize getPageSize() const; 55 56 canvas::IRenderModuleSharedPtr getRenderModule() const; 57 58 FragmentSharedPtr allocateSpace( const ::basegfx::B2ISize& rSize ); 59 void free( const FragmentSharedPtr& pFragment ); 60 61 void nakedFragment( const FragmentSharedPtr& pFragment ); 62 63 void validatePages(); 64 65 private: 66 // the pagemanager needs access to the rendermodule 67 // since we query for system resources from it. 68 canvas::IRenderModuleSharedPtr mpRenderModule; 69 70 // here we collect all fragments that will be created 71 // since we need them for relocation purposes. 72 typedef std::list<FragmentSharedPtr> FragmentContainer_t; 73 FragmentContainer_t maFragments; 74 75 // this is the container holding all created pages, 76 // behind the scenes these are real hardware surfaces. 77 typedef std::list<PageSharedPtr> PageContainer_t; 78 PageContainer_t maPages; 79 80 bool relocate( const FragmentSharedPtr& pFragment ); 81 }; 82 83 ////////////////////////////////////////////////////////////////////////////////// 84 // PageManagerSharedPtr 85 ////////////////////////////////////////////////////////////////////////////////// 86 87 typedef ::boost::shared_ptr< PageManager > PageManagerSharedPtr; 88 89 ////////////////////////////////////////////////////////////////////////////////// 90 // End of file 91 ////////////////////////////////////////////////////////////////////////////////// 92 } 93 94 #endif 95