2
// Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
4
// This program is free software; you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation; either version 3 of the License, or
7
// (at your option) any later version.
9
// This program is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
// GNU General Public License for more details.
14
// You should have received a copy of the GNU General Public License
15
// along with this program; if not, write to the Free Software
16
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
#ifndef GNASH_BITMAP_CHARACTER_DEF_H
19
#define GNASH_BITMAP_CHARACTER_DEF_H
22
#include "gnashconfig.h"
25
#include "gnash.h" // for bitmap_info definition
26
#include "ref_counted.h" // for character_def inheritance
29
#include "smart_ptr.h"
30
#include "bitmap_info.h" // for dtor visibility by intrusive_ptr
31
#include "GC.h" // for GcResource (markReachableResources)
35
#include <memory> // for auto_ptr
43
/// Definition of a bitmap character
48
/// - SWF::DEFINEBITSJPEG2
49
/// - SWF::DEFINEBITSJPEG3
50
/// - SWF::DEFINELOSSLESS
51
/// - SWF::DEFINELOSSLESS2
53
/// The definition currently only takes an image::rgb
54
/// or image::rgba pointer. We should probably move
55
/// the methods for actually reading such tags instead.
57
/// One problem with this class is that it relies on the
58
/// availability of a render_handler in order to transform
59
/// image::rgb or image::rgba to a bitmap_info.
61
class bitmap_character_def : public ref_counted // @@ why not character_def ?
66
/// Construct a bitmap_character_def from an image::rgb
68
/// NOTE: uses currently registered render_handler to
69
/// create a bitmap_info, don't call before a renderer
70
/// has been registered
72
bitmap_character_def(std::auto_ptr<image::rgb> image);
74
/// Construct a bitmap_character_def from an image::rgba
76
/// NOTE: uses currently registered render_handler to
77
/// create a bitmap_info, don't call before a renderer
78
/// has been registered
80
bitmap_character_def(std::auto_ptr<image::rgba> image);
82
bitmap_info* get_bitmap_info() {
83
return _bitmap_info.get();
89
/// Mark reachable resources (for GC)
91
/// Reachable resources are:
92
/// - bitmap info (_bitmap_info)
94
void markReachableResources() const
96
if ( _bitmap_info ) _bitmap_info->setReachable();
98
#endif // GNASH_USE_GC
102
boost::intrusive_ptr<bitmap_info> _bitmap_info;
107
} // end namespace gnash
110
#endif // GNASH_BITMAP_CHARACTER_DEF_H
115
// indent-tabs-mode: t