14 #ifndef PGSCROLLFRAME_H
15 #define PGSCROLLFRAME_H
50 virtual void xform(
const LMatrix4 &mat);
53 void setup(PN_stdfloat width, PN_stdfloat height,
54 PN_stdfloat left, PN_stdfloat right, PN_stdfloat bottom, PN_stdfloat top,
55 PN_stdfloat slider_width, PN_stdfloat bevel);
57 INLINE
void set_virtual_frame(PN_stdfloat left, PN_stdfloat right, PN_stdfloat bottom, PN_stdfloat top);
58 INLINE
void set_virtual_frame(
const LVecBase4 &virtual_frame);
59 INLINE
const LVecBase4 &get_virtual_frame()
const;
60 INLINE
bool has_virtual_frame()
const;
61 INLINE
void clear_virtual_frame();
63 INLINE
void set_manage_pieces(
bool manage_pieces);
64 INLINE
bool get_manage_pieces()
const;
66 INLINE
void set_auto_hide(
bool auto_hide);
67 INLINE
bool get_auto_hide()
const;
69 INLINE
void set_horizontal_slider(
PGSliderBar *horizontal_slider);
70 INLINE
void clear_horizontal_slider();
73 INLINE
void set_vertical_slider(
PGSliderBar *vertical_slider);
74 INLINE
void clear_vertical_slider();
78 INLINE
void recompute();
81 virtual void frame_changed();
83 virtual void item_transform_changed(
PGItem *item);
84 virtual void item_frame_changed(
PGItem *item);
85 virtual void item_draw_mask_changed(
PGItem *item);
86 virtual void slider_bar_adjust(
PGSliderBar *slider_bar);
89 void recompute_clip();
91 void recompute_canvas();
92 PN_stdfloat interpolate_canvas(PN_stdfloat clip_min, PN_stdfloat clip_max,
93 PN_stdfloat canvas_min, PN_stdfloat canvas_max,
98 bool _needs_recompute_clip;
99 std::atomic_flag _canvas_computed;
101 bool _has_virtual_frame;
102 LVecBase4 _virtual_frame;
114 static void init_type() {
115 PGVirtualFrame::init_type();
117 PGVirtualFrame::get_class_type());
120 return get_class_type();
122 virtual TypeHandle force_init_type() {init_type();
return get_class_type();}