@@ -30,13 +30,11 @@ type PageView struct {
3030 keyPressSignalHandle * glib.SignalHandle
3131 hdrControl * PageViewHdrControl
3232 navControl * PageViewNavControl
33- pbCache * util.PBCache
3433}
3534
3635func NewPageView (m * model.Model , u * UI , messenger util.Messenger ) View {
3736 v := & PageView {}
3837 v .ui = u
39- v .pbCache = util .NewPBCache (2 )
4038
4139 v .hud = v .newHUD (m , u )
4240
@@ -128,17 +126,16 @@ func (v *PageView) initRenderer(m *model.Model) {
128126 cr .Rectangle (x1 , y1 , x2 , y2 )
129127 cr .Fill ()
130128 if m .Spreads == nil {
131- v .pbCache .Clear ()
132129 return false
133130 }
134131
135132 spread := m .Spreads [m .SpreadIndex ]
136133 if m .LayoutMode == model .TWO_PAGE {
137134 s := newTwoPageSpread (m , canvas , cr , spread )
138- v . renderTwoPageSpread (s )
135+ renderTwoPageSpread (s )
139136 } else if m .LayoutMode == model .ONE_PAGE {
140137 s := newOnePageSpread (canvas , cr , spread .Pages [0 ])
141- v . renderOnePageSpread (s )
138+ renderOnePageSpread (s )
142139 }
143140 w := v .hud .GetAllocatedWidth () - 40
144141 v .hdrControl .container .SetSizeRequest (w , 8 )
@@ -179,99 +176,6 @@ func (v *PageView) initRenderer(m *model.Model) {
179176 })
180177}
181178
182- // direction (rtl or ltr) has already been accounted for
183- // so left and right here are literal
184- func (v * PageView ) renderTwoPageSpread (s * TwoPageSpread ) error {
185- if s .leftPage .Loaded == false {
186- return fmt .Errorf ("Image required by spread not loaded" )
187- }
188-
189- var x , y , cW , cH int
190- var err error
191- var lp , rp * gdk.Pixbuf
192- var k string
193- if s .rightPage != nil {
194- //put the left pg on the left, right-aligned
195- cW = s .canvas .GetAllocatedWidth () / 2
196- cH = s .canvas .GetAllocatedHeight ()
197- k = fmt .Sprintf ("%v-%d-%d" , s .leftPage .Image , cW , cH )
198- lp = v .pbCache .Get (k )
199- if lp == nil {
200- lp , err = scalePixbufToFit (s .canvas , s .leftPage .Image , cW , cH )
201- if err != nil {
202- return err
203- }
204- v .pbCache .Put (k , lp )
205- } else {
206- util .Log ("cachehit\n " )
207- }
208-
209- x , y = positionPixbuf (s .canvas , lp , ALIGN_RIGHT )
210- renderPixbuf (s .cr , lp , x , y )
211-
212- //put the right pg on the right, left-aligned
213- if s .rightPage .Loaded == false {
214- return fmt .Errorf ("Image required by spread not loaded" )
215- }
216-
217- k = fmt .Sprintf ("%v-%d-%d" , s .rightPage .Image , cW , cH )
218- rp = v .pbCache .Get (k )
219- if rp == nil {
220- rp , err = scalePixbufToFit (s .canvas , s .rightPage .Image , cW , cH )
221- if err != nil {
222- return err
223- }
224- } else {
225- util .Log ("cachehit\n " )
226- }
227-
228- x , y = positionPixbuf (s .canvas , rp , ALIGN_LEFT )
229- renderPixbuf (s .cr , rp , x , y )
230- } else {
231- //there is no right page, then center the left page
232- cW = s .canvas .GetAllocatedWidth ()
233- cH = s .canvas .GetAllocatedHeight ()
234- k = fmt .Sprintf ("%v-%d-%d" , s .leftPage .Image , cW , cH )
235- lp = v .pbCache .Get (k )
236- if lp == nil {
237- lp , err = scalePixbufToFit (s .canvas , s .leftPage .Image , cW , cH )
238- if err != nil {
239- return err
240- }
241- } else {
242- util .Log ("cachehit\n " )
243- }
244-
245- x , y = positionPixbuf (s .canvas , lp , ALIGN_CENTER )
246- renderPixbuf (s .cr , lp , x , y )
247- }
248- return nil
249- }
250-
251- func (v * PageView ) renderOnePageSpread (s * OnePageSpread ) error {
252- if s .page .Loaded == false {
253- return fmt .Errorf ("Image required by spread not loaded" )
254- }
255-
256- cW := s .canvas .GetAllocatedWidth ()
257- cH := s .canvas .GetAllocatedHeight ()
258- k := fmt .Sprintf ("%v-%d-%d" , s .page .Image , cW , cH )
259- p := v .pbCache .Get (k )
260- var err error
261- if p == nil {
262- p , err = scalePixbufToFit (s .canvas , s .page .Image , cW , cH )
263- if err != nil {
264- return err
265- }
266- } else {
267- util .Log ("cachehit\n " )
268- }
269- x , y := positionPixbuf (s .canvas , p , ALIGN_CENTER )
270-
271- renderPixbuf (s .cr , p , x , y )
272- return nil
273- }
274-
275179type PagePosition int
276180
277181type OnePageSpread struct {
@@ -364,3 +268,69 @@ func renderPixbuf(cr *cairo.Context, p *gdk.Pixbuf, x, y int) {
364268 cr .Paint ()
365269}
366270
271+ func renderOnePageSpread (s * OnePageSpread ) error {
272+ if s .page .Loaded == false {
273+ return fmt .Errorf ("Image required by spread not loaded" )
274+ }
275+
276+ cW := s .canvas .GetAllocatedWidth ()
277+ cH := s .canvas .GetAllocatedHeight ()
278+ p , err := scalePixbufToFit (s .canvas , s .page .Image , cW , cH )
279+ if err != nil {
280+ return err
281+ }
282+
283+ x , y := positionPixbuf (s .canvas , p , ALIGN_CENTER )
284+ renderPixbuf (s .cr , p , x , y )
285+ return nil
286+ }
287+
288+ // direction (rtl or ltr) has already been accounted for
289+ // so left and right here are literal
290+ func renderTwoPageSpread (s * TwoPageSpread ) error {
291+ if s .leftPage .Loaded == false {
292+ return fmt .Errorf ("Image required by spread not loaded" )
293+ }
294+
295+ var x , y , cW , cH int
296+ var lp , rp * gdk.Pixbuf
297+ var err error
298+ if s .rightPage != nil {
299+ //put the left pg on the left, right-aligned
300+ cW = s .canvas .GetAllocatedWidth () / 2
301+ cH = s .canvas .GetAllocatedHeight ()
302+ lp , err = scalePixbufToFit (s .canvas , s .leftPage .Image , cW , cH )
303+ if err != nil {
304+ return err
305+ }
306+
307+ x , y = positionPixbuf (s .canvas , lp , ALIGN_RIGHT )
308+ renderPixbuf (s .cr , lp , x , y )
309+
310+ //put the right pg on the right, left-aligned
311+ if s .rightPage .Loaded == false {
312+ return fmt .Errorf ("Image required by spread not loaded" )
313+ }
314+
315+ rp , err = scalePixbufToFit (s .canvas , s .rightPage .Image , cW , cH )
316+ if err != nil {
317+ return err
318+ }
319+
320+ x , y = positionPixbuf (s .canvas , rp , ALIGN_LEFT )
321+ renderPixbuf (s .cr , rp , x , y )
322+ } else {
323+ //there is no right page, then center the left page
324+ cW = s .canvas .GetAllocatedWidth ()
325+ cH = s .canvas .GetAllocatedHeight ()
326+ lp , err = scalePixbufToFit (s .canvas , s .leftPage .Image , cW , cH )
327+ if err != nil {
328+ return err
329+ }
330+
331+ x , y = positionPixbuf (s .canvas , lp , ALIGN_CENTER )
332+ renderPixbuf (s .cr , lp , x , y )
333+ }
334+ return nil
335+ }
336+
0 commit comments