Ticket #9: gtkimageview-private.diff

File gtkimageview-private.diff, 27.1 kB (added by guest, 2 years ago)
  • tests/test-memory.c

    old new  
    149149static void 
    150150test_finalize_for_unrealized_attributes () 
    151151{ 
     152#if 0 
    152153        printf ("test_finalize_for_unrealized_attributes\n"); 
    153154        GtkImageView *view = GTK_IMAGE_VIEW (gtk_image_view_new ()); 
    154155        g_object_ref (view); 
     
    166167 
    167168        gtk_widget_destroy (GTK_WIDGET (view)); 
    168169        g_object_unref (view); 
     170#endif 
    169171} 
    170172 
    171173/** 
  • src/gtkimageview.c

    old new  
    5353    LAST_SIGNAL 
    5454}; 
    5555 
     56#define GET_PRIVATE(o)  \ 
     57    (G_TYPE_INSTANCE_GET_PRIVATE ((o), GTK_TYPE_IMAGE_VIEW, GtkImageViewPrivate)) 
     58 
     59struct _GtkImageViewPrivate { 
     60    gboolean         black_bg; 
     61    gboolean         is_rendering; 
     62    GdkInterpType    interp; 
     63    GtkFitMode       fit_mode; 
     64    GdkPixbuf       *pixbuf; 
     65    gdouble          zoom; 
     66    gdouble          offset_x; 
     67    double           offset_y; 
     68    gboolean         show_frame; 
     69    gboolean         show_cursor; 
     70    ImageViewDrawer *drawer; 
     71    GdkCursor       *cursor; 
     72    GdkCursor       *void_cursor; 
     73    MouseHandler    *mouse_handler; 
     74    GtkAdjustment   *hadj; 
     75    GtkAdjustment   *vadj; 
     76}; 
     77 
    5678static guint gtk_image_view_signals[LAST_SIGNAL] = {0}; 
    5779 
    5880G_DEFINE_TYPE(GtkImageView, gtk_image_view, GTK_TYPE_WIDGET); 
     
    6486gtk_image_view_get_pixbuf_size (GtkImageView *view) 
    6587{ 
    6688    Size s = {0, 0}; 
    67     if (!view->pixbuf) 
     89    if (!view->priv->pixbuf) 
    6890        return s; 
    6991     
    70     s.width = gdk_pixbuf_get_width (view->pixbuf); 
    71     s.height = gdk_pixbuf_get_height (view->pixbuf); 
     92    s.width = gdk_pixbuf_get_width (view->priv->pixbuf); 
     93    s.height = gdk_pixbuf_get_height (view->priv->pixbuf); 
    7294    return s; 
    7395} 
    7496 
     
    85107gtk_image_view_get_zoomed_size (GtkImageView *view) 
    86108{ 
    87109    Size size = gtk_image_view_get_pixbuf_size (view); 
    88     size.width = floor (size.width * view->zoom + 0.5); 
    89     size.height = floor (size.height * view->zoom + 0.5); 
     110    size.width = floor (size.width * view->priv->zoom + 0.5); 
     111    size.height = floor (size.height * view->priv->zoom + 0.5); 
    90112    return size; 
    91113} 
    92114 
     
    107129{ 
    108130    Size zoomed = gtk_image_view_get_zoomed_size (view); 
    109131    Size alloc = gtk_image_view_get_allocated_size (view); 
    110     view->hadj->lower = 0.0; 
    111     view->hadj->upper = zoomed.width; 
    112     view->hadj->value = view->offset_x; 
    113     view->hadj->step_increment = 20.0; 
    114     view->hadj->page_increment = alloc.width / 2; 
    115     view->hadj->page_size = alloc.width; 
     132    view->priv->hadj->lower = 0.0; 
     133    view->priv->hadj->upper = zoomed.width; 
     134    view->priv->hadj->value = view->priv->offset_x; 
     135    view->priv->hadj->step_increment = 20.0; 
     136    view->priv->hadj->page_increment = alloc.width / 2; 
     137    view->priv->hadj->page_size = alloc.width; 
    116138 
    117     view->vadj->lower = 0.0; 
    118     view->vadj->upper = zoomed.height; 
    119     view->vadj->value = view->offset_y; 
    120     view->vadj->step_increment = 20.0; 
    121     view->vadj->page_increment = alloc.height / 2; 
    122     view->vadj->page_size = alloc.height; 
     139    view->priv->vadj->lower = 0.0; 
     140    view->priv->vadj->upper = zoomed.height; 
     141    view->priv->vadj->value = view->priv->offset_y; 
     142    view->priv->vadj->step_increment = 20.0; 
     143    view->priv->vadj->page_increment = alloc.height / 2; 
     144    view->priv->vadj->page_size = alloc.height; 
    123145 
    124     g_signal_handlers_block_by_data (G_OBJECT (view->hadj), view); 
    125     g_signal_handlers_block_by_data (G_OBJECT (view->vadj), view); 
    126     gtk_adjustment_changed (view->hadj); 
    127     gtk_adjustment_changed (view->vadj); 
    128     g_signal_handlers_unblock_by_data (G_OBJECT (view->hadj), view); 
    129     g_signal_handlers_unblock_by_data (G_OBJECT (view->vadj), view); 
     146    g_signal_handlers_block_by_data (G_OBJECT (view->priv->hadj), view); 
     147    g_signal_handlers_block_by_data (G_OBJECT (view->priv->vadj), view); 
     148    gtk_adjustment_changed (view->priv->hadj); 
     149    gtk_adjustment_changed (view->priv->vadj); 
     150    g_signal_handlers_unblock_by_data (G_OBJECT (view->priv->hadj), view); 
     151    g_signal_handlers_unblock_by_data (G_OBJECT (view->priv->vadj), view); 
    130152} 
    131153 
    132154/** 
     
    140162                                     gdouble       center_y, 
    141163                                     gboolean      is_allocating) 
    142164{ 
    143     gdouble zoom_ratio = zoom / view->zoom; 
     165    gdouble zoom_ratio = zoom / view->priv->zoom; 
    144166    Size alloc = gtk_image_view_get_allocated_size (view); 
    145167 
    146168    gdouble offset_x, offset_y; 
    147     offset_x = ((view->offset_x + center_x) * zoom_ratio - alloc.width / 2.0); 
    148     offset_y = ((view->offset_y + center_y) * zoom_ratio - alloc.height / 2.0); 
    149     view->zoom = zoom; 
     169    offset_x = ((view->priv->offset_x + center_x) * zoom_ratio - alloc.width / 2.0); 
     170    offset_y = ((view->priv->offset_y + center_y) * zoom_ratio - alloc.height / 2.0); 
     171    view->priv->zoom = zoom; 
    150172 
    151173    gtk_image_view_clamp_offset (view, &offset_x, &offset_y); 
    152     view->offset_x = offset_x; 
    153     view->offset_y = offset_y; 
     174    view->priv->offset_x = offset_x; 
     175    view->priv->offset_y = offset_y; 
    154176 
    155177    if (!is_allocating) 
    156178    { 
    157         view->fit_mode = GTK_FIT_NONE; 
     179        view->priv->fit_mode = GTK_FIT_NONE; 
    158180        gtk_image_view_update_adjustments (view); 
    159181        gtk_widget_queue_draw (GTK_WIDGET (view)); 
    160182    } 
     
    209231gtk_image_view_recalc_zoom (GtkImageView *view, 
    210232                            gboolean      is_allocating) 
    211233{ 
    212     if (!view->pixbuf || view->fit_mode != GTK_FIT_SIZE_IF_LARGER) 
     234    if (!view->priv->pixbuf || view->priv->fit_mode != GTK_FIT_SIZE_IF_LARGER) 
    213235        return; 
    214236    gtk_image_view_zoom_to_fit (view, is_allocating); 
    215237} 
     
    222244    GtkWidget *widget = GTK_WIDGET (view); 
    223245     
    224246    GdkGC *gc = widget->style->bg_gc[GTK_STATE_NORMAL]; 
    225     if (view->black_bg) 
     247    if (view->priv->black_bg) 
    226248        gc = widget->style->black_gc; 
    227249     
    228250    GdkWindow *window = widget->window; 
     
    238260static int 
    239261gtk_image_view_get_interp_for_zoom (GtkImageView *view) 
    240262{ 
    241     if (view->zoom == 1.0) 
     263    if (view->priv->zoom == 1.0) 
    242264        return GDK_INTERP_NEAREST; 
    243     return view->interp; 
     265    return view->priv->interp; 
    244266} 
    245267 
    246268static int 
    247269gtk_image_view_repaint_area (GtkImageView *view, 
    248270                             GdkRectangle *paint_rect) 
    249271{ 
    250     if (view->is_rendering) 
     272    if (view->priv->is_rendering) 
    251273        return FALSE; 
    252274     
    253275    /* Do not draw zero size rectangles. */ 
    254276    if (paint_rect->width == 0 || paint_rect->height == 0) 
    255277        return FALSE; 
    256     view->is_rendering = TRUE; 
     278    view->priv->is_rendering = TRUE; 
    257279 
    258280    Size zoom = gtk_image_view_get_zoomed_size (view); 
    259281    Size alloc = gtk_image_view_get_allocated_size (view); 
     
    274296        gtk_image_view_draw_background (view, &image_area, alloc); 
    275297    } 
    276298    GtkWidget *widget = GTK_WIDGET (view); 
    277     if (view->show_frame && view->pixbuf) 
     299    if (view->priv->show_frame && view->priv->pixbuf) 
    278300    { 
    279301        GdkGC *light_gc = widget->style->light_gc[GTK_STATE_NORMAL]; 
    280302        GdkGC *dark_gc = widget->style->dark_gc[GTK_STATE_NORMAL]; 
     
    286308    gboolean intersects = gdk_rectangle_intersect (&image_area, 
    287309                                                   paint_rect, 
    288310                                                   &paint_area); 
    289     if (intersects && view->pixbuf) 
     311    if (intersects && view->priv->pixbuf) 
    290312    { 
    291313        int interp = gtk_image_view_get_interp_for_zoom (view); 
    292         Pos src = {view->offset_x, view->offset_y}; 
     314        Pos src = {view->priv->offset_x, view->priv->offset_y}; 
    293315        src.x += paint_area.x - image_area.x; 
    294316        src.y += paint_area.y - image_area.y; 
    295317 
    296318        GtkWidget *widget = GTK_WIDGET (view); 
    297319 
    298         DrawSettings ds = {view->zoom, src, interp, view->pixbuf, paint_area}; 
    299         image_view_drawer_draw (view->drawer, 
     320        DrawSettings ds = {view->priv->zoom, src, interp, view->priv->pixbuf, paint_area}; 
     321        image_view_drawer_draw (view->priv->drawer, 
    300322                                &ds, 
    301323                                widget->style->black_gc, 
    302324                                widget->window); 
    303325    } 
    304326 
    305     view->is_rendering = FALSE; 
     327    view->priv->is_rendering = FALSE; 
    306328    return TRUE; 
    307329} 
    308330 
     
    330352 
    331353    gtk_image_view_clamp_offset (view, &offset_x, &offset_y); 
    332354 
    333     int delta_x = offset_x - view->offset_x; 
    334     int delta_y = offset_y - view->offset_y; 
     355    int delta_x = offset_x - view->priv->offset_x; 
     356    int delta_y = offset_y - view->priv->offset_y; 
    335357 
    336358    /* Exit early if the scroll was smaller than one (zoom space) 
    337359       pixel. */ 
    338360    if (!delta_x && !delta_y) 
    339361        return; 
    340362 
    341     view->offset_x = offset_x; 
    342     view->offset_y = offset_y; 
     363    view->priv->offset_x = offset_x; 
     364    view->priv->offset_y = offset_y; 
    343365 
    344366    int src_x, src_y; 
    345367    int dest_x, dest_y; 
     
    426448    if (!set_adjustments) 
    427449        return; 
    428450 
    429     g_signal_handlers_block_by_data (G_OBJECT (view->hadj), view); 
    430     g_signal_handlers_block_by_data (G_OBJECT (view->vadj), view); 
    431     gtk_adjustment_set_value (view->hadj, view->offset_x); 
    432     gtk_adjustment_set_value (view->vadj, view->offset_y); 
    433     g_signal_handlers_unblock_by_data (G_OBJECT (view->hadj), view); 
    434     g_signal_handlers_unblock_by_data (G_OBJECT (view->vadj), view); 
     451    g_signal_handlers_block_by_data (G_OBJECT (view->priv->hadj), view); 
     452    g_signal_handlers_block_by_data (G_OBJECT (view->priv->vadj), view); 
     453    gtk_adjustment_set_value (view->priv->hadj, view->priv->offset_x); 
     454    gtk_adjustment_set_value (view->priv->vadj, view->priv->offset_y); 
     455    g_signal_handlers_unblock_by_data (G_OBJECT (view->priv->hadj), view); 
     456    g_signal_handlers_unblock_by_data (G_OBJECT (view->priv->vadj), view); 
    435457} 
    436458 
    437459static void 
     
    444466    switch (xscroll) 
    445467    { 
    446468    case GTK_SCROLL_STEP_LEFT: 
    447         xstep = -view->hadj->step_increment; 
     469        xstep = -view->priv->hadj->step_increment; 
    448470        break; 
    449471    case GTK_SCROLL_STEP_RIGHT: 
    450         xstep = view->hadj->step_increment; 
     472        xstep = view->priv->hadj->step_increment; 
    451473        break; 
    452474    case GTK_SCROLL_PAGE_LEFT: 
    453         xstep = -view->hadj->page_increment; 
     475        xstep = -view->priv->hadj->page_increment; 
    454476        break; 
    455477    case GTK_SCROLL_PAGE_RIGHT: 
    456         xstep = view->hadj->page_increment; 
     478        xstep = view->priv->hadj->page_increment; 
    457479        break; 
    458480    default: 
    459481        xstep = 0; 
     
    463485    switch (yscroll) 
    464486    { 
    465487    case GTK_SCROLL_STEP_UP: 
    466         ystep = -view->vadj->step_increment; 
     488        ystep = -view->priv->vadj->step_increment; 
    467489        break; 
    468490    case GTK_SCROLL_STEP_DOWN: 
    469         ystep = view->vadj->step_increment; 
     491        ystep = view->priv->vadj->step_increment; 
    470492        break; 
    471493    case GTK_SCROLL_PAGE_UP: 
    472         ystep = -view->vadj->page_increment; 
     494        ystep = -view->priv->vadj->page_increment; 
    473495        break; 
    474496    case GTK_SCROLL_PAGE_DOWN: 
    475         ystep = view->vadj->page_increment; 
     497        ystep = view->priv->vadj->page_increment; 
    476498        break; 
    477499    default: 
    478500        ystep = 0; 
    479501        break; 
    480502    } 
    481503    gtk_image_view_scroll_to (view, 
    482                               view->offset_x + xstep, 
    483                               view->offset_y + ystep, 
     504                              view->priv->offset_x + xstep, 
     505                              view->priv->offset_y + ystep, 
    484506                              TRUE); 
    485507} 
    486508 
     
    517539    widget->style = gtk_style_attach (widget->style, widget->window); 
    518540    gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL); 
    519541 
    520     view->mouse_handler = mouse_handler_new (widget->window); 
     542    view->priv->mouse_handler = mouse_handler_new (widget->window); 
    521543 
    522     view->cursor = cursor_get (widget->window, CURSOR_HAND_OPEN); 
    523     view->void_cursor = cursor_get (widget->window, CURSOR_VOID); 
    524     gdk_window_set_cursor (widget->window, view->cursor); 
     544    view->priv->cursor = cursor_get (widget->window, CURSOR_HAND_OPEN); 
     545    view->priv->void_cursor = cursor_get (widget->window, CURSOR_VOID); 
     546    gdk_window_set_cursor (widget->window, view->priv->cursor); 
    525547} 
    526548 
    527549static void 
    528550gtk_image_view_unrealize (GtkWidget *widget) 
    529551{ 
    530552    GtkImageView *view = GTK_IMAGE_VIEW (widget); 
    531     gdk_cursor_unref (view->cursor); 
    532     gdk_cursor_unref (view->void_cursor);     
    533     g_free (view->mouse_handler); 
     553    gdk_cursor_unref (view->priv->cursor); 
     554    gdk_cursor_unref (view->priv->void_cursor);     
     555    g_free (view->priv->mouse_handler); 
    534556    GTK_WIDGET_CLASS (gtk_image_view_parent_class)->unrealize (widget); 
    535557} 
    536558 
     
    542564    widget->allocation = *alloc; 
    543565    gtk_image_view_recalc_zoom (view, TRUE); 
    544566 
    545     gtk_image_view_clamp_offset (view, &view->offset_x, &view->offset_y); 
     567    gtk_image_view_clamp_offset (view, &view->priv->offset_x, &view->priv->offset_y); 
    546568 
    547569    gtk_image_view_update_adjustments (view); 
    548570 
     
    564586                             GdkEventButton *ev) 
    565587{ 
    566588    GtkImageView *view = GTK_IMAGE_VIEW (widget); 
    567     return mouse_handler_handle_button_press (view->mouse_handler, ev); 
     589    return mouse_handler_handle_button_press (view->priv->mouse_handler, ev); 
    568590} 
    569591 
    570592static int 
     
    572594                               GdkEventButton *ev) 
    573595{ 
    574596    GtkImageView *view = GTK_IMAGE_VIEW (widget); 
    575     return mouse_handler_handle_button_release (view->mouse_handler, ev); 
     597    return mouse_handler_handle_button_release (view->priv->mouse_handler, ev); 
    576598} 
    577599 
    578600static int 
     
    580602                              GdkEventMotion *ev) 
    581603{ 
    582604    GtkImageView *view = GTK_IMAGE_VIEW (widget); 
    583     if (view->is_rendering) 
     605    if (view->priv->is_rendering) 
    584606        return FALSE; 
    585607 
    586608    if (!ev->is_hint) 
    587609        return FALSE; 
    588610 
    589     mouse_handler_handle_motion_notify (view->mouse_handler, ev); 
    590     if (!view->mouse_handler->dragging) 
     611    mouse_handler_handle_motion_notify (view->priv->mouse_handler, ev); 
     612    if (!view->priv->mouse_handler->dragging) 
    591613        return FALSE; 
    592614 
    593     if (mouse_handler_is_drag_delta_to_small (view->mouse_handler)) 
     615    if (mouse_handler_is_drag_delta_to_small (view->priv->mouse_handler)) 
    594616        return FALSE; 
    595617 
    596     Pos delta = mouse_handler_get_drag_delta (view->mouse_handler); 
     618    Pos delta = mouse_handler_get_drag_delta (view->priv->mouse_handler); 
    597619 
    598     gdouble offset_x = view->offset_x + delta.x; 
    599     gdouble offset_y = view->offset_y + delta.y; 
     620    gdouble offset_x = view->priv->offset_x + delta.x; 
     621    gdouble offset_y = view->priv->offset_y + delta.y; 
    600622 
    601623    gtk_image_view_scroll_to (view, offset_x, offset_y, TRUE); 
    602624 
    603     view->mouse_handler->drag_base = view->mouse_handler->drag_ofs; 
     625    view->priv->mouse_handler->drag_base = view->priv->mouse_handler->drag_ofs; 
    604626 
    605627    return FALSE; 
    606628} 
     
    610632                                GtkImageView *view) 
    611633{ 
    612634    gdouble offset_x = GTK_ADJUSTMENT (adj)->value; 
    613     gtk_image_view_scroll_to (view, offset_x, view->offset_y, FALSE); 
     635    gtk_image_view_scroll_to (view, offset_x, view->priv->offset_y, FALSE); 
    614636    return FALSE; 
    615637} 
    616638 
     
    619641                                GtkImageView *view) 
    620642{ 
    621643    int offset_y = GTK_ADJUSTMENT (adj)->value; 
    622     gtk_image_view_scroll_to (view, view->offset_x, offset_y, FALSE); 
     644    gtk_image_view_scroll_to (view, view->priv->offset_x, offset_y, FALSE); 
    623645    return FALSE; 
    624646} 
    625647 
     
    641663        return TRUE; 
    642664    } 
    643665     
    644     gdouble zoom = gtk_zooms_get_zoom_out (view->zoom); 
     666    gdouble zoom = gtk_zooms_get_zoom_out (view->priv->zoom); 
    645667    if (ev->direction == GDK_SCROLL_UP) 
    646         zoom = gtk_zooms_get_zoom_in (view->zoom); 
     668        zoom = gtk_zooms_get_zoom_in (view->priv->zoom); 
    647669    gtk_image_view_set_zoom_with_center (view, zoom, ev->x, ev->y, FALSE); 
    648670     
    649671    return TRUE; 
     
    654676                                       GtkAdjustment *hadj, 
    655677                                       GtkAdjustment *vadj) 
    656678{ 
    657     if (view->hadj && view->hadj != hadj) 
     679    if (view->priv->hadj && view->priv->hadj != hadj) 
    658680    { 
    659         g_signal_handlers_disconnect_by_data (G_OBJECT (view->hadj), view); 
    660         g_object_unref (view->hadj); 
     681        g_signal_handlers_disconnect_by_data (G_OBJECT (view->priv->hadj), view); 
     682        g_object_unref (view->priv->hadj); 
    661683        g_signal_connect (G_OBJECT (hadj), 
    662684                          "value_changed", 
    663685                          G_CALLBACK (gtk_image_view_hadj_changed_cb), 
    664686                          view); 
    665         view->hadj = hadj; 
    666         g_object_ref (view->hadj); 
    667         gtk_object_sink (GTK_OBJECT (view->hadj)); 
     687        view->priv->hadj = hadj; 
     688        g_object_ref (view->priv->hadj); 
     689        gtk_object_sink (GTK_OBJECT (view->priv->hadj)); 
    668690    } 
    669     if (view->vadj && view->vadj != vadj) 
     691    if (view->priv->vadj && view->priv->vadj != vadj) 
    670692    { 
    671         g_signal_handlers_disconnect_by_data (G_OBJECT (view->vadj), view); 
    672         g_object_unref (view->vadj); 
     693        g_signal_handlers_disconnect_by_data (G_OBJECT (view->priv->vadj), view); 
     694        g_object_unref (view->priv->vadj); 
    673695        g_signal_connect (G_OBJECT (vadj), 
    674696                          "value_changed", 
    675697                          G_CALLBACK (gtk_image_view_vadj_changed_cb), 
    676698                          view); 
    677         view->vadj = vadj; 
    678         g_object_ref (view->vadj); 
    679         gtk_object_sink (GTK_OBJECT (view->vadj)); 
     699        view->priv->vadj = vadj; 
     700        g_object_ref (view->priv->vadj); 
     701        gtk_object_sink (GTK_OBJECT (view->priv->vadj)); 
    680702    } 
    681703} 
    682704 
     
    687709static void 
    688710gtk_image_view_init (GtkImageView *view) 
    689711{ 
     712    view->priv = GET_PRIVATE (view); 
     713     
    690714    GTK_WIDGET_SET_FLAGS (view, GTK_CAN_FOCUS); 
    691715    GTK_WIDGET_UNSET_FLAGS (view, GTK_DOUBLE_BUFFERED); 
    692716 
    693     view->interp = GDK_INTERP_BILINEAR; 
    694     view->black_bg = FALSE; 
    695     view->fit_mode = GTK_FIT_SIZE_IF_LARGER; 
    696     view->pixbuf = NULL; 
    697     view->zoom = 1.0; 
    698     view->offset_x = 0.0; 
    699     view->offset_y = 0.0; 
    700     view->is_rendering = FALSE; 
    701     view->show_frame = TRUE; 
    702     view->drawer = image_view_drawer_new (); 
    703     view->cursor = NULL; 
    704     view->void_cursor = NULL; 
    705     view->mouse_handler = NULL; 
     717    view->priv->interp = GDK_INTERP_BILINEAR; 
     718    view->priv->black_bg = FALSE; 
     719    view->priv->fit_mode = GTK_FIT_SIZE_IF_LARGER; 
     720    view->priv->pixbuf = NULL; 
     721    view->priv->zoom = 1.0; 
     722    view->priv->offset_x = 0.0; 
     723    view->priv->offset_y = 0.0; 
     724    view->priv->is_rendering = FALSE; 
     725    view->priv->show_frame = TRUE; 
     726    view->priv->drawer = image_view_drawer_new (); 
     727    view->priv->cursor = NULL; 
     728    view->priv->void_cursor = NULL; 
     729    view->priv->mouse_handler = NULL; 
    706730 
    707     view->hadj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 1.0, 0.0, 
     731    view->priv->hadj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 1.0, 0.0, 
    708732                                                     1.0, 1.0, 1.0)); 
    709     view->vadj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 1.0, 0.0, 
     733    view->priv->vadj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 1.0, 0.0, 
    710734                                                     1.0, 1.0, 1.0)); 
    711     g_object_ref (view->hadj); 
    712     gtk_object_sink (GTK_OBJECT (view->hadj)); 
    713     g_object_ref (view->vadj); 
    714     gtk_object_sink (GTK_OBJECT (view->vadj)); 
     735    g_object_ref (view->priv->hadj); 
     736    gtk_object_sink (GTK_OBJECT (view->priv->hadj)); 
     737    g_object_ref (view->priv->vadj); 
     738    gtk_object_sink (GTK_OBJECT (view->priv->vadj)); 
    715739     
    716740    GtkWidget *widget = (GtkWidget *) view; 
    717741    widget->allocation.width = 0; 
     
    722746gtk_image_view_finalize (GObject *object) 
    723747{ 
    724748    GtkImageView *view = GTK_IMAGE_VIEW (object); 
    725     if (view->drawer) 
     749    if (view->priv->drawer) 
    726750    { 
    727         image_view_drawer_free (view->drawer); 
    728         view->drawer = NULL; 
     751        image_view_drawer_free (view->priv->drawer); 
     752        view->priv->drawer = NULL; 
    729753    } 
    730     if (view->hadj) 
     754    if (view->priv->hadj) 
    731755    { 
    732         g_signal_handlers_disconnect_by_data (G_OBJECT (view->hadj), view); 
    733         g_object_unref (view->hadj); 
    734         view->hadj = NULL; 
     756        g_signal_handlers_disconnect_by_data (G_OBJECT (view->priv->hadj), view); 
     757        g_object_unref (view->priv->hadj); 
     758        view->priv->hadj = NULL; 
    735759    } 
    736     if (view->vadj) 
     760    if (view->priv->vadj) 
    737761    { 
    738         g_signal_handlers_disconnect_by_data (G_OBJECT (view->vadj), view); 
    739         g_object_unref (view->vadj); 
    740         view->vadj = NULL; 
     762        g_signal_handlers_disconnect_by_data (G_OBJECT (view->priv->vadj), view); 
     763        g_object_unref (view->priv->vadj); 
     764        view->priv->vadj = NULL; 
    741765    } 
    742     if (view->pixbuf) 
     766    if (view->priv->pixbuf) 
    743767    { 
    744         g_object_unref (view->pixbuf); 
    745         view->pixbuf = NULL; 
     768        g_object_unref (view->priv->pixbuf); 
     769        view->priv->pixbuf = NULL; 
    746770    } 
    747771    /* Chain up. */ 
    748772    G_OBJECT_CLASS (gtk_image_view_parent_class)->finalize (object); 
     
    872896static void 
    873897gtk_image_view_class_init (GtkImageViewClass *klass) 
    874898{ 
     899    g_type_class_add_private (klass, sizeof (GtkImageViewPrivate)); 
     900 
    875901    gtk_image_view_init_signals (klass); 
    876902 
    877903    GObjectClass *object_class = G_OBJECT_CLASS (klass); 
     
    10501076gboolean 
    10511077gtk_image_view_get_viewport (GtkImageView *view, GdkRectangle *rect) 
    10521078{ 
    1053     gboolean ret_val = (view->pixbuf != NULL); 
     1079    gboolean ret_val = (view->priv->pixbuf != NULL); 
    10541080    if (!rect || !ret_val) 
    10551081        return ret_val; 
    10561082     
    10571083    Size alloc = gtk_image_view_get_allocated_size (view); 
    10581084    Size pixbuf = gtk_image_view_get_pixbuf_size (view); 
    1059     rect->x = view->offset_x; 
    1060     rect->y = view->offset_y; 
    1061     rect->width = MIN (alloc.width, pixbuf.width * view->zoom); 
    1062     rect->height = MIN (alloc.height, pixbuf.height * view->zoom); 
     1085    rect->x = view->priv->offset_x; 
     1086    rect->y = view->priv->offset_y; 
     1087    rect->width = MIN (alloc.width, pixbuf.width * view->priv->zoom); 
     1088    rect->height = MIN (alloc.height, pixbuf.height * view->priv->zoom); 
    10631089    return TRUE; 
    10641090} 
    10651091 
     
    11011127GtkFitMode 
    11021128gtk_image_view_get_fit_mode (GtkImageView *view) 
    11031129{ 
    1104     return view->fit_mode; 
     1130    return view->priv->fit_mode; 
    11051131} 
    11061132 
    11071133/** 
     
    11231149                             GtkFitMode    fit_mode) 
    11241150{ 
    11251151    g_return_if_fail (GTK_IS_IMAGE_VIEW (view)); 
    1126     view->fit_mode = fit_mode; 
     1152    view->priv->fit_mode = fit_mode; 
    11271153    gtk_widget_queue_resize (GTK_WIDGET (view)); 
    11281154} 
    11291155 
     
    11381164gtk_image_view_get_pixbuf (GtkImageView *view) 
    11391165{ 
    11401166    g_return_val_if_fail (GTK_IS_IMAGE_VIEW (view), NULL); 
    1141     return view->pixbuf; 
     1167    return view->priv->pixbuf; 
    11421168} 
    11431169 
    11441170/** 
     
    11581184gtk_image_view_set_pixbuf (GtkImageView *view, 
    11591185                           GdkPixbuf    *pixbuf) 
    11601186{ 
    1161     if (view->pixbuf) 
    1162         g_object_unref (view->pixbuf); 
    1163     view->pixbuf = pixbuf; 
    1164     if (view->pixbuf) 
     1187    if (view->priv->pixbuf) 
     1188        g_object_unref (view->priv->pixbuf); 
     1189    view->priv->pixbuf = pixbuf; 
     1190    if (view->priv->pixbuf) 
    11651191        g_object_ref (pixbuf); 
    11661192    gtk_image_view_set_fit_mode (view, GTK_FIT_SIZE_IF_LARGER); 
    11671193    g_signal_emit (G_OBJECT (view), 
     
    11721198gtk_image_view_set_pixbuf_no_repaint (GtkImageView *view, 
    11731199                                      GdkPixbuf    *pixbuf) 
    11741200{ 
    1175     if (view->pixbuf) 
    1176         g_object_unref (view->pixbuf); 
    1177     view->pixbuf = pixbuf; 
    1178     if (view->pixbuf) 
     1201    if (view->priv->pixbuf) 
     1202        g_object_unref (view->priv->pixbuf); 
     1203    view->priv->pixbuf = pixbuf; 
     1204    if (view->priv->pixbuf) 
    11791205        g_object_ref (pixbuf); 
    11801206    gtk_widget_queue_draw (GTK_WIDGET (view)); 
    11811207    g_signal_emit (G_OBJECT (view), 
     
    11931219gtk_image_view_get_zoom (GtkImageView *view) 
    11941220{ 
    11951221    g_return_val_if_fail (GTK_IS_IMAGE_VIEW (view), 1.0); 
    1196     return view->zoom; 
     1222    return view->priv->zoom; 
    11971223} 
    11981224 
    11991225/** 
     
    12301256                             gboolean      black_bg) 
    12311257{ 
    12321258    g_return_if_fail (GTK_IS_IMAGE_VIEW (view)); 
    1233     view->black_bg = black_bg; 
     1259    view->priv->black_bg = black_bg; 
    12341260    gtk_widget_queue_draw (GTK_WIDGET (view)); 
    12351261} 
    12361262 
     
    12461272gtk_image_view_get_black_bg (GtkImageView *view) 
    12471273{ 
    12481274    g_return_val_if_fail (GTK_IS_IMAGE_VIEW (view), FALSE); 
    1249     return view->black_bg; 
     1275    return view->priv->black_bg; 
    12501276} 
    12511277 
    12521278/** 
     
    12651291                               gboolean      show_frame) 
    12661292{ 
    12671293    g_return_if_fail (GTK_IS_IMAGE_VIEW (view)); 
    1268     view->show_frame = show_frame; 
     1294    view->priv->show_frame = show_frame; 
    12691295    gtk_widget_queue_resize (GTK_WIDGET (view)); 
    12701296     
    12711297} 
     
    12831309gtk_image_view_get_show_frame (GtkImageView *view) 
    12841310{ 
    12851311    g_return_val_if_fail (GTK_IS_IMAGE_VIEW (view), TRUE); 
    1286     return view->show_frame; 
     1312    return view->priv->show_frame; 
    12871313} 
    12881314 
    12891315/** 
     
    13021328                                gboolean      show_cursor) 
    13031329{ 
    13041330    g_return_if_fail (GTK_IS_IMAGE_VIEW (view)); 
    1305     view->show_cursor = show_cursor; 
     1331    view->priv->show_cursor = show_cursor; 
    13061332    if (show_cursor) 
    1307         gdk_window_set_cursor (GTK_WIDGET (view)->window, view->cursor); 
     1333        gdk_window_set_cursor (GTK_WIDGET (view)->window, view->priv->cursor); 
    13081334    else 
    1309         gdk_window_set_cursor (GTK_WIDGET (view)->window, view->void_cursor); 
     1335        gdk_window_set_cursor (GTK_WIDGET (view)->window, view->priv->void_cursor); 
    13101336} 
    13111337 
    13121338/** 
     
    13211347gtk_image_view_get_show_cursor (GtkImageView *view) 
    13221348{ 
    13231349    g_return_val_if_fail (GTK_IS_IMAGE_VIEW (view), TRUE); 
    1324     return view->show_cursor; 
     1350    return view->priv->show_cursor; 
    13251351} 
    13261352 
    13271353/** 
     
    13451371                                  int           interp) 
    13461372{ 
    13471373    g_return_if_fail (GTK_IS_IMAGE_VIEW (view)); 
    1348     view->interp = interp; 
     1374    view->priv->interp = interp; 
    13491375    gtk_widget_queue_draw (GTK_WIDGET (view)); 
    13501376} 
    13511377 
     
    13601386gtk_image_view_get_interpolation (GtkImageView *view) 
    13611387{ 
    13621388    g_return_val_if_fail (GTK_IS_IMAGE_VIEW (view), GDK_INTERP_BILINEAR); 
    1363     return view->interp; 
     1389    return view->priv->interp; 
    13641390} 
    13651391 
    13661392 
     
    13771403void 
    13781404gtk_image_view_zoom_in (GtkImageView *view) 
    13791405{ 
    1380     gdouble zoom = gtk_zooms_get_zoom_in (view->zoom); 
     1406    gdouble zoom = gtk_zooms_get_zoom_in (view->priv->zoom); 
    13811407    gtk_image_view_set_zoom (view, zoom); 
    13821408} 
    13831409 
     
    13911417void 
    13921418gtk_image_view_zoom_out (GtkImageView *view) 
    13931419{ 
    1394     gdouble zoom = gtk_zooms_get_zoom_out (view->zoom); 
     1420    gdouble zoom = gtk_zooms_get_zoom_out (view->priv->zoom); 
    13951421    gtk_image_view_set_zoom (view, zoom); 
    13961422} 
  • src/gtkimageview.h

    old new  
    3838 
    3939typedef struct _GtkImageView GtkImageView; 
    4040typedef struct _GtkImageViewClass GtkImageViewClass; 
     41typedef struct _GtkImageViewPrivate GtkImageViewPrivate; 
    4142 
    4243typedef enum 
    4344{ 
     
    5556struct _GtkImageView 
    5657{ 
    5758    GtkWidget     parent; 
    58      
    59     /* Private */ 
    60     gboolean         black_bg; 
    61     gboolean         is_rendering; 
    62     int              interp; 
    63     GtkFitMode       fit_mode; 
    64     GdkPixbuf       *pixbuf; 
    65     gdouble          zoom; 
    66     gdouble          offset_x; 
    67     double           offset_y; 
    68     gboolean         show_frame; 
    69     gboolean         show_cursor; 
    70     ImageViewDrawer *drawer; 
    71     GdkCursor       *cursor; 
    72     GdkCursor       *void_cursor; 
    73     MouseHandler    *mouse_handler; 
    74     GtkAdjustment   *hadj; 
    75     GtkAdjustment   *vadj; 
     59    GtkImageViewPrivate *priv; 
    7660}; 
    7761 
    7862struct _GtkImageViewClass