Skip to content

Commit a40a908

Browse files
committed
Removed pbcache
1 parent 15f87bf commit a40a908

File tree

2 files changed

+68
-132
lines changed

2 files changed

+68
-132
lines changed

internal/ui/pageview.go

Lines changed: 68 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,11 @@ type PageView struct {
3030
keyPressSignalHandle *glib.SignalHandle
3131
hdrControl *PageViewHdrControl
3232
navControl *PageViewNavControl
33-
pbCache *util.PBCache
3433
}
3534

3635
func 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-
275179
type PagePosition int
276180

277181
type 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+

internal/util/gtk3.go

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -19,40 +19,6 @@ func ImgGetFileInfo(path string) (*ImgFormat, int, int, error) {
1919
return gdk.PixbufGetFileInfo(path)
2020
}
2121

22-
type PBCache struct {
23-
max int
24-
evict string
25-
items map[string]*gdk.Pixbuf
26-
}
27-
28-
func NewPBCache(max int) *PBCache {
29-
return &PBCache{
30-
max: max,
31-
items: make(map[string]*gdk.Pixbuf, max),
32-
}
33-
}
34-
35-
func (c *PBCache) Put(key string, pb *gdk.Pixbuf) {
36-
if len(c.items) == c.max {
37-
delete(c.items, c.evict)
38-
Log("evicted %s\n", c.evict)
39-
}
40-
41-
c.items[key] = pb
42-
43-
if len(c.items) == c.max {
44-
c.evict = key
45-
}
46-
}
47-
48-
func (c *PBCache) Get(key string) *gdk.Pixbuf {
49-
return c.items[key]
50-
}
51-
52-
func (c *PBCache) Clear() {
53-
for k := range c.items {delete(c.items, k)}
54-
}
55-
5622
func CreateLabel(text string, cssClass string, toolTip *string) *gtk.Label {
5723
c, err := gtk.LabelNew(text)
5824
if err != nil {

0 commit comments

Comments
 (0)