LibreOffice Module canvas (master) 1
bitmapbackbuffer.hxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20#pragma once
21
22#include <vcl/virdev.hxx>
23#include <vcl/bitmapex.hxx>
24
25#include <vclwrapper.hxx>
26#include "outdevprovider.hxx"
27
28#include <memory>
29
30namespace vclcanvas
31{
39 {
40 public:
43 BitmapBackBuffer( const BitmapEx& rBitmap,
44 const OutputDevice& rRefDevice );
45
46 virtual ~BitmapBackBuffer() override;
47
48 virtual OutputDevice& getOutDev() override;
49 virtual const OutputDevice& getOutDev() const override;
50
52 void clear();
53
61
62 private:
63 void createVDev() const;
64 void updateVDev() const;
65
67 mutable VclPtr<VirtualDevice> mpVDev; // created only on demand
68
70
79
87 };
88
89 typedef std::shared_ptr< BitmapBackBuffer > BitmapBackBufferSharedPtr;
90
91}
92
93/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Backbuffer implementation for canvas bitmap.
bool mbVDevContentIsCurrent
When true, and mpVDev is non-NULL, the VDev contains the last valid content.
BitmapEx & getBitmapReference()
Exposing our internal bitmap.
BitmapBackBuffer(const BitmapEx &rBitmap, const OutputDevice &rRefDevice)
Create a backbuffer for given reference device.
const OutputDevice & mrRefDevice
virtual ~BitmapBackBuffer() override
VclPtr< VirtualDevice > mpVDev
virtual OutputDevice & getOutDev() override
::canvas::vcltools::VCLObject< BitmapEx > maBitmap
bool mbBitmapContentIsCurrent
When true, the bitmap contains the last valid content.
void clear()
Clear the underlying bitmap to white, all transparent.
Implementers of this interface provide the CanvasHelper with its OutputDevice.
std::shared_ptr< BitmapBackBuffer > BitmapBackBufferSharedPtr