diff options
Diffstat (limited to 'canvas/inc/canvas/rendering/irendermodule.hxx')
-rw-r--r-- | canvas/inc/canvas/rendering/irendermodule.hxx | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/canvas/inc/canvas/rendering/irendermodule.hxx b/canvas/inc/canvas/rendering/irendermodule.hxx deleted file mode 100644 index 413320eb85e9..000000000000 --- a/canvas/inc/canvas/rendering/irendermodule.hxx +++ /dev/null @@ -1,143 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#ifndef INCLUDED_CANVAS_IRENDERMODULE_HXX -#define INCLUDED_CANVAS_IRENDERMODULE_HXX - -#include <sal/types.h> - -#include <boost/shared_ptr.hpp> -#include <boost/utility.hpp> - - -namespace basegfx -{ - class B2DRange; - class B2IRange; - class B2IVector; - class B2IPoint; -} - -namespace canvas -{ - struct ISurface; - - struct Vertex - { - float r,g,b,a; - float u,v; - float x,y,z; - }; - - /** Output module interface for backend render implementations. - - Implement this interface for each operating system- or - library-specific rendering backend, which needs coupling with - the canvas rendering framework (which can be shared between - all backend implementations). - */ - struct IRenderModule - { - /** Type of primitive passed to the render module via - pushVertex() - */ - enum PrimitiveType - { - PRIMITIVE_TYPE_UNKNOWN, - PRIMITIVE_TYPE_TRIANGLE, - PRIMITIVE_TYPE_QUAD - }; - - virtual ~IRenderModule() {} - - /// Lock rendermodule against concurrent access - virtual void lock() const = 0; - - /// Unlock rendermodule for concurrent access - virtual void unlock() const = 0; - - /** Maximal size of VRAM pages available - - This is typically the maximum texture size of the - hardware, or some arbitrary limit if the backend is - software. - */ - virtual ::basegfx::B2IVector getPageSize() = 0; - - /** Create a (possibly hardware-accelerated) surface - - @return a pointer to a surface, which is an abstraction of - a piece of (possibly hardware-accelerated) texture memory. - */ - virtual ::boost::shared_ptr<ISurface> createSurface( const ::basegfx::B2IVector& surfaceSize ) = 0; - - /** Begin rendering the given primitive. - - Each beginPrimitive() call must be matched with an - endPrimitive() call. - */ - virtual void beginPrimitive( PrimitiveType eType ) = 0; - - /** Finish rendering a primitive. - - Each beginPrimitive() call must be matched with an - endPrimitive() call. - */ - virtual void endPrimitive() = 0; - - /** Add given vertex to current primitive - - After issuing a beginPrimitive(), each pushVertex() adds a - vertex to the active primitive. - */ - virtual void pushVertex( const Vertex& vertex ) = 0; - - /** Query error status - - @returns true, if an error occurred during primitive - construction. - */ - virtual bool isError() = 0; - }; - - typedef ::boost::shared_ptr< IRenderModule > IRenderModuleSharedPtr; - - /// Little RAII wrapper for guarding access to IRenderModule interface - class RenderModuleGuard : private ::boost::noncopyable - { - public: - explicit RenderModuleGuard( const IRenderModuleSharedPtr& rRenderModule ) : - mpRenderModule( rRenderModule ) - { - mpRenderModule->lock(); - } - - ~RenderModuleGuard() - { - mpRenderModule->unlock(); - } - - private: - const IRenderModuleSharedPtr mpRenderModule; - }; -} - -#endif /* INCLUDED_CANVAS_IRENDERMODULE_HXX */ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |