1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
/* -*- 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/.
*/
#ifndef INCLUDED_SOURCE_OPENGL_OGL_BITMAPCANVASHELPER_HXX
#define INCLUDED_SOURCE_OPENGL_OGL_BITMAPCANVASHELPER_HXX
#include <com/sun/star/rendering/XBitmapCanvas.hpp>
#include <com/sun/star/rendering/XIntegerBitmap.hpp>
#include <basegfx/vector/b2isize.hxx>
#include <basegfx/vector/b2dsize.hxx>
#include <boost/utility.hpp>
#include <boost/shared_ptr.hpp>
#include <vector>
#include "ogl_canvashelper.hxx"
namespace oglcanvas
{
/** Helper class for basic canvas functionality. */
class BitmapCanvasHelper : public CanvasHelper
{
public:
BitmapCanvasHelper();
/// Release all references
void disposing();
/** Initialize canvas helper
This method late-initializes the canvas helper, providing
it with the necessary device and output objects. Note that
the CanvasHelper does <em>not</em> take ownership of the
passed rDevice reference, nor does it perform any
reference counting. Thus, to prevent the reference counted
SpriteCanvas object from deletion, the user of this class
is responsible for holding ref-counted references itself!
@param rDevice
Reference device this canvas is associated with
*/
void init( ::com::sun::star::rendering::XGraphicDevice& rDevice,
SpriteDeviceHelper& rDeviceHelper,
const ::com::sun::star::geometry::IntegerSize2D& rSize );
// BitmapCanvasHelper functionality
// ================================
void copyRect( const ::com::sun::star::rendering::XCanvas* rCanvas,
const ::com::sun::star::uno::Reference<
::com::sun::star::rendering::XBitmapCanvas >& sourceCanvas,
const ::com::sun::star::geometry::RealRectangle2D& sourceRect,
const ::com::sun::star::rendering::ViewState& sourceViewState,
const ::com::sun::star::rendering::RenderState& sourceRenderState,
const ::com::sun::star::geometry::RealRectangle2D& destRect,
const ::com::sun::star::rendering::ViewState& destViewState,
const ::com::sun::star::rendering::RenderState& destRenderState );
::com::sun::star::geometry::IntegerSize2D getSize();
::com::sun::star::uno::Reference< ::com::sun::star::rendering::XBitmapCanvas > queryBitmapCanvas();
::com::sun::star::uno::Reference< ::com::sun::star::rendering::XBitmap >
getScaledBitmap( const ::com::sun::star::geometry::RealSize2D& newSize,
sal_Bool beFast );
::com::sun::star::uno::Sequence< sal_Int8 >
getData( ::com::sun::star::rendering::IntegerBitmapLayout& bitmapLayout,
const ::com::sun::star::geometry::IntegerRectangle2D& rect );
void setData( const ::com::sun::star::uno::Sequence< sal_Int8 >& data,
const ::com::sun::star::rendering::IntegerBitmapLayout& bitmapLayout,
const ::com::sun::star::geometry::IntegerRectangle2D& rect );
void setPixel( const ::com::sun::star::uno::Sequence< sal_Int8 >& color,
const ::com::sun::star::rendering::IntegerBitmapLayout& bitmapLayout,
const ::com::sun::star::geometry::IntegerPoint2D& pos );
::com::sun::star::uno::Sequence< sal_Int8 >
getPixel( ::com::sun::star::rendering::IntegerBitmapLayout& bitmapLayout,
const ::com::sun::star::geometry::IntegerPoint2D& pos );
::com::sun::star::rendering::IntegerBitmapLayout getMemoryLayout();
bool hasAlpha() const;
private:
::com::sun::star::geometry::IntegerSize2D maSize;
};
}
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|