gzz-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gzz-commits] gzz ./TODO gzz/gfx/gl/PageSpanPaper.java gzz/vi...


From: Tuomas J. Lukka
Subject: [Gzz-commits] gzz ./TODO gzz/gfx/gl/PageSpanPaper.java gzz/vi...
Date: Mon, 27 Jan 2003 14:39:40 -0500

CVSROOT:        /cvsroot/gzz
Module name:    gzz
Changes by:     Tuomas J. Lukka <address@hidden>        03/01/27 14:39:40

Modified files:
        .              : TODO 
        gzz/gfx/gl     : PageSpanPaper.java 
        gzz/view       : pagespanview.py 
        test/gzz/gfx/gl: paper.test 

Log message:
        A core dumping test for paperquad\! It allocates too short arrays

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/TODO.diff?tr1=1.538&tr2=1.539&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/gfx/gl/PageSpanPaper.java.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/view/pagespanview.py.diff?tr1=1.27&tr2=1.28&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/test/gzz/gfx/gl/paper.test.diff?tr1=1.9&tr2=1.10&r1=text&r2=text

Patches:
Index: gzz/TODO
diff -u gzz/TODO:1.538 gzz/TODO:1.539
--- gzz/TODO:1.538      Mon Jan 27 11:23:40 2003
+++ gzz/TODO    Mon Jan 27 14:39:39 2003
@@ -258,8 +258,6 @@
          colors (not "not" tests but test that the 
          color really is right)
     tjl:
-       - implement uncompressed mipzips for R300. BLECHHH!!!!
-       - make demo start screen size adjustable by environment vars
        - xupdf: distorted multi-page PDF view with xu links
            - clean the code: split PageSpanPaper &c.
            - adjustable zoom / distortion area by mouse
@@ -281,6 +279,7 @@
            - use off-screen buffer for libpaper r2t
            - use background loading for paper textures
                - generate mipzips
+       - make demo start screen size adjustable by environment vars
        - matrix inv!
        - vobmatcher keymapping to work in both directions
        - PEG move Obs to gzz.util, freeze some gzz.util classes
Index: gzz/gzz/gfx/gl/PageSpanPaper.java
diff -u gzz/gzz/gfx/gl/PageSpanPaper.java:1.3 
gzz/gzz/gfx/gl/PageSpanPaper.java:1.4
--- gzz/gzz/gfx/gl/PageSpanPaper.java:1.3       Mon Jan 27 12:26:04 2003
+++ gzz/gzz/gfx/gl/PageSpanPaper.java   Mon Jan 27 14:39:40 2003
@@ -113,6 +113,9 @@
        }
     }
 
+    public void request(float importance, float pixels) {
+       p.getTexture(importance, pixels);
+    }
 
     public PageSpanPaper(Paper background, GLSpanner.SpanPage p) {
        if(filter == null) {
Index: gzz/gzz/view/pagespanview.py
diff -u gzz/gzz/view/pagespanview.py:1.27 gzz/gzz/view/pagespanview.py:1.28
--- gzz/gzz/view/pagespanview.py:1.27   Sun Jan 26 16:25:58 2003
+++ gzz/gzz/view/pagespanview.py        Mon Jan 27 14:39:40 2003
@@ -1,6 +1,6 @@
 from __future__ import nested_scopes
 import math
-from gzz.gfx.gl import GL, GLRen, GLSpanner, Paper, GLCache, Stencil
+from gzz.gfx.gl import GL, GLRen, GLSpanner, Paper, GLCache, Stencil, 
PageSpanPaper
 import gfx.libpaper.papermill
 from gfx.libutil import nvcode, effects
 import gzz
@@ -44,149 +44,21 @@
        globalscrollblockPapers[hashkey] = ret
     return ret
 
-class PDFPage:
-    def __init__(self, span, scrollblockPaper):
-       self.rect = GLSpanner.getSpanRect(span)
-       if dbg: print "Rect: ",self.rect
-       (self.paperwhite, self.w, self.h, self.paperwithbg) = pdfpaper(span, 
self.rect, scrollblockPaper) 
-
 def getPDFPapers(content):
     contentspan = enf2span(content)
     scrollblockPaper = getScrollblockPaper(contentspan.getScrollBlock())
     ret = []
     for i in range(0, content.length()):
-       rect = PDFPage(contentspan.subSpan(i,i+1), scrollblockPaper)
+       rect = PageSpanPaper(scrollblockPaper,
+                           GLSpanner.getSpanRect(
+                               contentspan.subSpan(i, i+1)).page)
        ret.append( rect )
     return ret
 
-filters = """
-       TexParameter TEXTURE_2D TEXTURE_MIN_FILTER LINEAR_MIPMAP_NEAREST
-       TexParameter TEXTURE_2D TEXTURE_MAG_FILTER LINEAR
-       TexParameter TEXTURE_2D TEXTURE_MAX_ANISOTROPY_EXT 1
-"""
-
 def setFilters(filt):
     global filters
     filters = filt
 
-def pdfpaper(span, pdfrect, background): 
-    """Get the papers for the pages.
-
-    Returns: (pdf on white background, width, height, 
-           pdf on given background paper)
-    """
-    # Papercoords: (0,0) .. (w,h) where
-    # w = pdfrect.w / 72 / 6, same for h
-    # ret: (paper, w, h)
-    dim = span.getSize()
-    pw = dim.width / 72.0 / 6
-    ph = dim.height / 72.0 / 6
-    wm = (pdfrect.x1-pdfrect.x0) / pw
-    hm = (pdfrect.y1-pdfrect.y0) / ph
-    texid = pdfrect.getTexture(0.1, 500).getTexId()
-
-    filt = filters
-
-    texcode = """
-
-       BindTexture TEXTURE_2D %(texid)s
-       TexParameter TEXTURE_2D TEXTURE_WRAP_S REPEAT
-       TexParameter TEXTURE_2D TEXTURE_WRAP_T REPEAT
-
-       %(filt)s
-       
-    """ % locals()
-
-    if dbg: print "Texcode: ",texcode
-
-    def mpap_general(blend, pap = None):
-       if pap == None:
-           pap = Paper()
-           pap.setNPasses(1)
-           ppass = pap.getPass(0)
-       else:
-           p = pap.getNPasses()
-           pap.setNPasses(p+1)
-           ppass = pap.getPass(p)
-
-       tc = texcode
-       ppass.setSetupcode("""
-           PushAttrib ENABLE_BIT TEXTURE_BIT COLOR_BUFFER_BIT
-           ActiveTexture TEXTURE1
-           Disable TEXTURE_2D
-           ActiveTexture TEXTURE0
-           Enable BLEND
-           Disable REGISTER_COMBINERS_NV
-           %(blend)s
-           Disable DEPTH_TEST
-           Color 1 1 1
-           SecondaryColorEXT 0 0 0
-           Enable TEXTURE_2D
-           Disable ALPHA_TEST
-
-           %(tc)s
-
-       """ % locals())
-
-       ppass.setTeardowncode("""PopAttrib""")
-       ppass.setNTexGens(1)
-       ppass.putNormalTexGen(0, [wm, 0, 0, pdfrect.x0,
-                                 0, hm, 0, pdfrect.y0,
-                                 0, 0,  1, 0,
-                                 0, 0,  0, 1])
-       return pap
-
-    if optimizedPaper:
-       def mpap(blend, pap = None):
-           if pap == None:
-               return mpap_general(blend, pap)
-           p = pap.getNPasses()
-           assert p == 1
-           ppass = pap.getPass(0)
-
-
-           tc = texcode
-           ppass.setSetupcode(ppass.getSetupcode() +  nvcode.combinercode("""
-               ActiveTexture TEXTURE1
-               Enable TEXTURE_2D
-
-               %(tc)s
-
-               ActiveTexture TEXTURE0
-
-               Disable BLEND
-               Disable ALPHA_TEST
-
-               Enable REGISTER_COMBINERS_NV
-               CombinerParameterNV CONSTANT_COLOR0_NV 0 0 0 0
-               CombinerParameterNV CONSTANT_COLOR1_NV 0 0 0 .7
-
-               """ % locals() +
-               nvcode.parseCombiner("""
-
-                   SPARE0 = (1-TEX1) + (-CONST0.alpha)
-
-                   SPARE0 = (-SPARE0)*CONST1.alpha + (.5)*(+TEX0)
-
-                   color = SPARE0 + SPARE0
-                   alpha = 1
-               """)))
-
-           ppass.setNTexGens(2)
-           ppass.putNormalTexGen(1, [wm, 0, 0, pdfrect.x0,
-                                     0, hm, 0, pdfrect.y0,
-                                     0, 0,  1, 0,
-                                     0, 0,  0, 1])
-           return pap
-    else:
-       mpap = mpap_general
-
-
-    papw = mpap("BlendFunc SRC_COLOR ZERO")
-    papo = mpap("", pap = background.clone())
-    return (papw, pw, ph, papo)
-
-
 class CellPDFView:
     dicefactor = 2
     # dicefactor = .5
@@ -266,14 +138,9 @@
                        vs.matcher.add(cs_cull, key+"_cull_"+str(i))
 
                    if onlypages == None or i in onlypages:
-                       if fancy:
-                               pq = GLRen.createPaperQuad(
-                                   papers[i].paperwithbg, *corners)
-                                vs.map.put(pq, cs_cull, cs2)
-                       else:
-                               pq = GLRen.createPaperQuad(
-                                   papers[i].paperwhite, *corners)
-                               vs.map.put(pq, cs_cull, cs2)
+                       pq = GLRen.createPaperQuad(
+                           papers[i].getPaper(fancy), *corners)
+                       vs.map.put(pq, cs_cull, cs2)
 
                    self.curx += self.scaledsheetsize[0]
 
@@ -338,12 +205,12 @@
     def reqTextures(self, x, y, all=0, importance = 1):
        (page, px, py) = self.paperpoint_inv(x, y)
        if dbg: print "Request page ",page
-       self.pap[page].rect.getTexture(importance, 4000)
+       self.pap[page].request(importance, 4000)
        if all:
            for i in range(0, len(self.pap)):
                if i == page: continue
                imp = importance * 1.0 / (1 + 2 * abs(i - page))
-               self.pap[i].rect.getTexture(imp, 4000)
+               self.pap[i].request(imp, 4000)
         
     def hitClip(self, coords, point3, cliprect):
        src = zeros(3, 'f') # assume only one point
Index: gzz/test/gzz/gfx/gl/paper.test
diff -u gzz/test/gzz/gfx/gl/paper.test:1.9 gzz/test/gzz/gfx/gl/paper.test:1.10
--- gzz/test/gzz/gfx/gl/paper.test:1.9  Sun Jan 12 06:41:47 2003
+++ gzz/test/gzz/gfx/gl/paper.test      Mon Jan 27 14:39:40 2003
@@ -30,6 +30,23 @@
     checkNotAvgColor(150, 150, 2, 2, (0,0,0), 30)
     checkNotAvgColor(250, 250, 2, 2, (0,0,0), 30)
 
+def testDicing():
+    """Dicing paper a LOT - there have been some
+    too short allocated arrays.
+    """
+    paper = PaperMill.getInstance().getPaper(57)
+    for df in (0, .1, .5, 1, 5, 10, 20, 37, 100):
+       vs = getvs()
+       vs.map.put(SolidBgVob(Color.black))
+       pq = GLRen.createPaperQuad(paper, 0, 0, 1, 1, df)
+       cs1 = vs.coords.distort(0, 0, 0, 10, 10, 400, 40)
+       vs.map.put(pq, cs1, 0)
+       vs.map.put(pq, cs1, 0)
+       vs.map.put(pq, cs1, 0)
+       vs.map.put(pq, cs1, 0)
+       render(vs)
+       checkNotAvgColor(50, 50, 20, 20, (0,0,0), 30)
+
 def testOptimizedPaper():
     """See that optimized paper really is same as
     original."""




reply via email to

[Prev in Thread] Current Thread [Next in Thread]