public void EmptyPolicy()
        {
            var policy = new PagePrefetchAndRetainPolicy();

            var key = new PageKey(Guid.Empty, 1, ScreenWidth);
            var context = new PageCacheContext(ScreenWidth, GetLibrary(0));

            Assert.IsFalse(policy.MustRetain(key, context), "not retain with empty library");

            var dict = GetCacheDict(0);
            CollectionAssert.IsEmpty(policy.KeysToRemove(dict, context), "no keys exist");

            dict = GetCacheDict(5);
            CollectionAssert.AreEquivalent(dict.Keys, policy.KeysToRemove(dict, context), "return all keys");

            CollectionAssert.IsEmpty(policy.PrefetchKeyOrder(context), "prefetch list empty");
        }
示例#2
0
        protected PageImage CreatePageImage(PageKey key, int pageWidth)
        {
            if (pageWidth == 0)
            {
                var layout = GetPageLayout(key.PageNum, key.ScreenWidth);
                pageWidth = ((float)key.ScreenWidth / layout.UnitBounds.Width).Round();
            }
            _lastPageWidth = pageWidth;

            Bitmap b = BookProvider.o.RenderPageImage(key.PageNum, new Size(pageWidth, int.MaxValue), RenderQuality.Optimal);

            return new PageImage(key, b);
        }
 public PageImage GetPageImage(int pageNum, int screenWidth)
 {
     var layout = GetPageLayout(pageNum, screenWidth);
     var bmp = BookProvider.o.RenderPageImage(pageNum, new Size(screenWidth, int.MaxValue));
     var key = new PageKey(Book.Id, pageNum, screenWidth);
     return new PageImage(key, bmp);
 }
示例#4
0
        PageImage GetPageImage(int pageNum, int screenWidth, int pageWidth)
        {
            // TODO: revise locking
            lock (this)
            {
                PageKey key = new PageKey(Book.Id, pageNum, screenWidth);
                PageImage image;

                // Try to get from cache
                if (ImageCache != null)
                {
                    image = ImageCache.o.Get(key);
                    if (image != null) { return image; }
                }

                // Create
                image = CreatePageImage(key, pageWidth);

                // Save to cache
                if (ImageCache != null)
                {
                    image.DisposeOnReturn = false;
                    ImageCache.o.Add(key, image);
                }

                return image;
            }
        }