Exemplo n.º 1
0
        public MyScreenCanvas GetCanvasPage(int hPageNum, int vPageNum)
        {
            int j = cachePages.Count;

            for (int i = j - 1; i > -1; i--)
            {
                MyScreenCanvas page = cachePages[i];
                if (page.IsPageNumber(hPageNum, vPageNum))
                {
                    cachePages.RemoveAt(i);
                    if (page.DimensionInvalid)
                    {
                        page.Reset(hPageNum, vPageNum, eachPageWidth, eachPageHeight);
                        page.IsUnused = false;
                    }
                    return(page);
                }
            }

            if (j >= numOfCachePages)
            {
                MyScreenCanvas page = cachePages[0];
                cachePages.RemoveAt(0);
                page.IsUnused = false;

                if (page.DimensionInvalid)
                {
                    page.Reset(hPageNum, vPageNum, eachPageWidth, eachPageHeight);
                }
                else
                {
                    page.Reuse(hPageNum, vPageNum);
                }

                Rectangle rect = page.Rect;
                page.Invalidate(rect);

                return(page);
            }
            else
            {
                return(new MyScreenCanvas(gfxPlatform,
                                          hPageNum,
                                          vPageNum,
                                          hPageNum * eachPageWidth,
                                          eachPageHeight * vPageNum,
                                          eachPageWidth,
                                          eachPageHeight));
            }
        }
Exemplo n.º 2
0
        public void CanvasInvalidate(Rectangle rect)
        {
            Rectangle r = rect;

            if (pageA != null && pageA.IntersectsWith(r))
            {
                pageA.Invalidate(r);
            }
            if (pageB != null && pageB.IntersectsWith(r))
            {
                pageB.Invalidate(r);
            }
            if (pageC != null && pageC.IntersectsWith(r))
            {
                pageC.Invalidate(r);
            }
            if (pageD != null && pageD.IntersectsWith(r))
            {
                pageD.Invalidate(r);
            }
        }