Changeset 48 for branches/clutter-experiments/page.hh
- Timestamp:
- 01/20/09 18:14:04 (3 years ago)
- Files:
-
- 1 modified
-
branches/clutter-experiments/page.hh (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/clutter-experiments/page.hh
r47 r48 1 // TODO: move implementation in .cc file 2 // TODO: refine api, it's somewhat ugly right now 3 // TODO: should render in a thread? 1 4 #ifndef __PDFCUBE__PAGE_HH__ 2 5 #define __PDFCUBE__PAGE_HH__ … … 7 10 #include <gdk-pixbuf/gdk-pixbuf.h> 8 11 9 namespace pdfcube { 12 namespace pdfcube 13 { 10 14 15 /** 16 * @brief The pdfcube::page class is the link between a PopplerPage 17 * and ClutterActor GObjects. 18 * 19 * This class is used to render low and hi res version of a 20 * PopplerPage as a ClutterActor. 21 * 22 * Usually on start all the pages will be rendered in a low res 23 * version, while higher res versions will be rendered on demand by 24 * the animations. We need to program the animations in advance so 25 * that we can pre-render hi-res versions of the pages before the 26 * animations begins. One way can be to read animations from the 27 * PDF. 28 * 29 */ 11 30 class page 12 31 { 13 32 public: 33 /** 34 * @brief Ctor. 35 * 36 * This is used internally by pdfcube::document. (FIXME: make 37 * protected and friend of document?) 38 * 39 * @param poppler_page a PopplerPage* 40 * 41 */ 14 42 page(PopplerPage* poppler_page) 15 43 : poppler_page_m(poppler_page), … … 20 48 enum rendering_mode { LOW_RES, HI_RES }; 21 49 50 /** 51 * @brief Renders the PopplerPage on the desired actor. 52 */ 22 53 void 23 54 render(rendering_mode mode) … … 41 72 buffer); 42 73 GError* error; 43 low_res_m = clutter_texture_new();74 if(!low_res_m) low_res_m = clutter_texture_new(); 44 75 clutter_texture_set_from_rgb_data 45 76 (CLUTTER_TEXTURE(low_res_m), … … 51 82 4, (ClutterTextureFlags)0, 52 83 &error); 84 g_object_unref(buffer); 53 85 break; 54 86 } … … 69 101 buffer); 70 102 GError* error; 71 hi_res_m = clutter_texture_new();103 if(!hi_res_m) hi_res_m = clutter_texture_new(); 72 104 clutter_texture_set_from_rgb_data 73 105 (CLUTTER_TEXTURE(hi_res_m), … … 79 111 4, (ClutterTextureFlags)0, 80 112 &error); 113 g_object_unref(buffer); 81 114 break; 82 115 } … … 84 117 }; 85 118 119 /** 120 * @brief Frees an unneeded actor. 121 */ 86 122 void 87 123 free(rendering_mode mode) … … 90 126 { 91 127 case LOW_RES: 92 //gobject_unref(low_res_m);128 g_object_unref(low_res_m); 93 129 low_res_m = NULL; 94 130 break; 95 131 case HI_RES: 96 //gobject_unref(hi_res_m);132 g_object_unref(hi_res_m); 97 133 hi_res_m = NULL; 98 134 break; … … 100 136 }; 101 137 138 /** 139 * @brief Tells if the desired version is available. 140 */ 102 141 bool 103 142 has(rendering_mode mode) … … 110 149 return hi_res_m != NULL; 111 150 } 151 return false; 112 152 }; 113 153 154 /** 155 * @brief Returns the desired actor (on NULL if not present). 156 */ 114 157 ClutterActor* 115 158 actor(rendering_mode mode) … … 122 165 return hi_res_m; 123 166 } 167 return NULL; 124 168 } 125 169

