Show
Ignore:
Timestamp:
01/20/09 18:14:04 (3 years ago)
Author:
mirko
Message:

simplistic makefile

Files:
1 modified

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? 
    14#ifndef __PDFCUBE__PAGE_HH__ 
    25#define __PDFCUBE__PAGE_HH__ 
     
    710#include <gdk-pixbuf/gdk-pixbuf.h> 
    811 
    9 namespace pdfcube { 
     12namespace pdfcube  
     13{ 
    1014 
     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   */ 
    1130  class page  
    1231  { 
    1332  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     */ 
    1442    page(PopplerPage* poppler_page)  
    1543      : poppler_page_m(poppler_page), 
     
    2048    enum rendering_mode { LOW_RES, HI_RES }; 
    2149     
     50    /** 
     51     * @brief Renders the PopplerPage on the desired actor. 
     52     */ 
    2253    void 
    2354    render(rendering_mode mode) 
     
    4172                                          buffer); 
    4273            GError* error; 
    43             low_res_m = clutter_texture_new(); 
     74            if(!low_res_m) low_res_m = clutter_texture_new(); 
    4475            clutter_texture_set_from_rgb_data  
    4576               (CLUTTER_TEXTURE(low_res_m), 
     
    5182                4, (ClutterTextureFlags)0, 
    5283                &error); 
     84            g_object_unref(buffer); 
    5385            break; 
    5486          } 
     
    69101                                          buffer); 
    70102            GError* error; 
    71             hi_res_m = clutter_texture_new(); 
     103            if(!hi_res_m) hi_res_m = clutter_texture_new(); 
    72104            clutter_texture_set_from_rgb_data  
    73105               (CLUTTER_TEXTURE(hi_res_m), 
     
    79111                4, (ClutterTextureFlags)0, 
    80112                &error); 
     113            g_object_unref(buffer); 
    81114            break; 
    82115          } 
     
    84117    }; 
    85118 
     119    /** 
     120     * @brief Frees an unneeded actor. 
     121     */ 
    86122    void 
    87123    free(rendering_mode mode) 
     
    90126        { 
    91127        case LOW_RES: 
    92           //gobject_unref(low_res_m); 
     128          g_object_unref(low_res_m); 
    93129          low_res_m = NULL; 
    94130          break; 
    95131        case HI_RES: 
    96           //gobject_unref(hi_res_m); 
     132          g_object_unref(hi_res_m); 
    97133          hi_res_m = NULL; 
    98134          break; 
     
    100136    }; 
    101137 
     138    /** 
     139     * @brief Tells if the desired version is available. 
     140     */ 
    102141    bool 
    103142    has(rendering_mode mode) 
     
    110149          return hi_res_m != NULL; 
    111150        } 
     151      return false; 
    112152    }; 
    113153 
     154    /** 
     155     * @brief Returns the desired actor (on NULL if not present). 
     156     */ 
    114157    ClutterActor*  
    115158    actor(rendering_mode mode) 
     
    122165          return hi_res_m; 
    123166        } 
     167      return NULL; 
    124168    } 
    125169