gzz-commits
[Top][All Lists]
Advanced

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

[Gzz-commits] gzz ./TODO gfx/demo/xupdf.py gzz/view/__init__....


From: Tuomas J. Lukka
Subject: [Gzz-commits] gzz ./TODO gfx/demo/xupdf.py gzz/view/__init__....
Date: Sun, 29 Sep 2002 10:52:29 -0400

CVSROOT:        /cvsroot/gzz
Module name:    gzz
Changes by:     Tuomas J. Lukka <address@hidden>        02/09/29 10:52:29

Modified files:
        .              : TODO 
        gfx/demo       : xupdf.py 
Added files:
        gzz/view       : __init__.py pagespanview.py 

Log message:
        Many xupdf improvements; now need to raise frame rate

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/TODO.diff?tr1=1.179&tr2=1.180&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/demo/xupdf.py.diff?tr1=1.30&tr2=1.31&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/view/__init__.py?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/view/pagespanview.py?rev=1.1

Patches:
Index: gzz/TODO
diff -c gzz/TODO:1.179 gzz/TODO:1.180
*** gzz/TODO:1.179      Sat Sep 28 15:34:38 2002
--- gzz/TODO    Sun Sep 29 10:52:29 2002
***************
*** 67,74 ****
          (inverse should be in the functions themselves)
            - needed for mouse click positioning in distorted cs.
        - think about how to combine client and xupdf
        - xupdf: distorted multi-page PDF view with xu links
!           - make it work again
            - saving, loading
                - both space and xu link space
            - text
--- 67,76 ----
          (inverse should be in the functions themselves)
            - needed for mouse click positioning in distorted cs.
        - think about how to combine client and xupdf
+       - stencil: use depth
        - xupdf: distorted multi-page PDF view with xu links
!           - frame rate ~= 25
!               - frame rate counter
            - saving, loading
                - both space and xu link space
            - text
Index: gzz/gfx/demo/xupdf.py
diff -c gzz/gfx/demo/xupdf.py:1.30 gzz/gfx/demo/xupdf.py:1.31
*** gzz/gfx/demo/xupdf.py:1.30  Sat Sep 28 15:01:20 2002
--- gzz/gfx/demo/xupdf.py       Sun Sep 29 10:52:29 2002
***************
*** 1,6 ****
--- 1,11 ----
  from __future__ import nested_scopes
  from gzz.index import XuLink
  from gzz.gfx.gl import Stencil
+ from gzz.vob.buoy import NadirAngler
+ 
+ from gzz.view import pagespanview
+ from gfx.libutil import effects
+ reload(pagespanview)
  
  # Now, this is the start of the REAL demo, the one
  # with Xanadu links between PDF and text.
***************
*** 15,22 ****
  AbstractUpdateManager.fractCalc = AbstractUpdateManager.LinearCalculator()
  
  from test.tools import tools
- execfile("gfx/libutil/effects.py")
- execfile("gfx/libpaper/papermill.py")
  
  space = gzz.impl.ModularSpace(*tools.spaceArgList())
  xuindexer = gzz.index.impl.TransientXuIndexer()
--- 20,25 ----
***************
*** 71,82 ****
  globalx = 0
  globaly = 0
  
! globalusefancypaper = 0
! globalseedoffs = 8
  
  globalcurlinks = {}
  
- globalLOD = 1
  
  def takeLink(toenf, tocell):
      """Move along a xu connection to given cell (with given enf).
--- 74,83 ----
  globalx = 0
  globaly = 0
  
! globalusefancypaper = 1
  
  globalcurlinks = {}
  
  
  def takeLink(toenf, tocell):
      """Move along a xu connection to given cell (with given enf).
***************
*** 89,96 ****
      p = s.getLocation()
      d = s.getSize()
      scale = 1 / 72.0 / 6
!     x = (p.x  + 0.5*d.width) * scale + globalpap[0][1][1] * 1.02 * page
!     y = (p.y + 0.5*d.height) * scale
      print "Takelink: to ",x,y
      print ": ",page, p, d, scale, s
      return (x,y)
--- 90,98 ----
      p = s.getLocation()
      d = s.getSize()
      scale = 1 / 72.0 / 6
!     x = (p.x  + 0.5*d.width)
!     y = (p.y + 0.5*d.height)
!     (x,y) = globalview.paperpoint(page, x, y)
      print "Takelink: to ",x,y
      print ": ",page, p, d, scale, s
      return (x,y)
***************
*** 122,327 ****
      AbstractUpdateManager.chg()
  
  def getCellPDFView(cell):
!     return CellPDFView(cell)
! 
! class CellPDFView:
!     def __init__(self, cell):
!         self.white = getDListNocoords("Color 1 1 1")
!         self.black = getDListNocoords("Color 0 0 0")
!       self.cell = cell
!       self.content = space.cellTexter.getEnfilade(cell, None)
!       self.pap = getPDFPapers(self.content)
!       self.irregu = IrreguFrame(0, 0, self.pap[0][1] / self.pap[0][2] * 
len(self.pap), 1,
!                       0.06, 0.5)
!       self.papersize = (self.pap[0][1] * len(self.pap), self.pap[0][2])
!       # self.irregu = IrreguFrame(-1, -1, 1, 1, 0.06, 0.5)
!     # Height = always 1.
!     # Start = always (0,0)
!     def placepapers(self, vs, 
!                   cs1into, onlypages=None, depth=10,
!                   cliprect = None):
!       key = self.cell.getId()
!       # The height in coords
!       h = 1
!       papers = self.pap
!       ph = papers[0][2]
!       scale = h/ph
!       self.curx = 0
!       ycoord = 0
!       # print "x,y for place: ",curx, ycoord
!       # print papers
!       grid = 13
!       corners = (0, 0, papers[0][1], papers[0][2])
!       cs2 = vs.coords.affineCoordsys(0, 0, 0, 0, 1, 0, 0, 1)
!       vs.matcher.add(cs2, key+"_p2_") 
! 
!       class PutPapers(java.lang.Runnable):
!           def run(rself):
!               for i in range(0, len(papers)):
!                   # create always all cs, gets interpolation better
!                   cs1 = vs.coords.affineCoordsys(cs1into, 100,
!                           self.curx, ycoord, scale, 0, 0, scale)
!                   vs.matcher.add(cs1, key+"_p_"+str(i)) 
!                   if onlypages == None or i in onlypages:
!                       if globalusefancypaper:
!                           pq = GLRen.createPaperQuad(
!                               papers[i][3], *corners)
!                           vs.map.put(pq, cs1, cs2)
!                       else:
!                           pq = GLRen.createPaperQuad(
!                               papers[i][0], *corners)
!                           vs.map.put(pq, cs1, cs2)
!                   self.curx += papers[i][1] * scale
! 
!       pp = PutPapers()
!       if cliprect and 0:
!           irr = vs.coords.affineCoordsys(0, 0, 
!                   (cliprect[0]+cliprect[2])/2,
!                   (cliprect[1]+cliprect[3])/2,
!                   (cliprect[2]-cliprect[0])/2,
!                   0, 0,
!                   (cliprect[3]-cliprect[1])/2)
!           vs.matcher.add(irr, key+"_irr")
! 
!           class FrameR(java.lang.Runnable):
!               def run(rself):
!                   vs.map.put(self.black)
!                   vs.map.put(self.irregu.frame, cs1into, irr)
!           class ContentR(java.lang.Runnable):
!               def run(rself):
!                   vs.map.put(self.white)
!                   vs.map.put(self.irregu.content, cs1into, irr)
! 
!           if 0:
!               vs.map.put(getDListNocoords("""
!                   PolygonMode FRONT_AND_BACK LINE
!               """))
!               ContentR().run()
! 
!           if 1:
!               Stencil.drawStenciled(vs,
!                   ContentR(),
!                   None,
!                   FrameR(),
!                   pp,
!                   0)
!               
!       else:
!           pp.run()
!     def paperpoint(self, page, pointx, pointy):
!       return (
!           page * self.papersize[0] + pointx/72.0/6, pointy/72.0/6
!       )
  
  
  
- globalscrollblockPapers = {}
- def getScrollblockPaper(sb):
-     """Get the paper object for a given scrollblock.
-     """
-     hashkey = sb.hashCode() + globalseedoffs
-     ret = globalscrollblockPapers.get(hashkey, None)
-     if ret == None:
-       ret = ThePaperMill().getPaper(hashkey)
-       ret.setNPasses(3)
-       globalscrollblockPapers[hashkey] = ret
-     return ret
- 
- def getPDFPapers(content):
-     contentspan = enf2span(content)
-     scrollblockPaper = getScrollblockPaper(contentspan.getScrollBlock())
-     ret = []
-     for i in range(0, content.length()):
-       rect = GLSpans.getRect(contentspan.subSpan(i,i+1), globalLOD)
-       print "Rect: ",globalLOD, rect
-       ret.append( pdfpaper(rect, scrollblockPaper) )
-     return ret
- 
-     
- 
  def globalkey(key):
!     global globalusefancypaper, globalseedoffs, globalLOD
      if '1' <= key <= '9':
        moveToCell(cells[int(key)-1])
      elif key == 'l':
!       globalLOD = 1 - globalLOD
!       print "Lod: ",globalLOD
        AbstractUpdateManager.chg()
      elif key == 'p':
        globalusefancypaper = not globalusefancypaper
      elif key == ',':
!       globalseedoffs -= 1
        moveToCell(globalcursor)
      elif key == '.':
!       globalseedoffs += 1
        moveToCell(globalcursor)
  
! def pdfpaper(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)
!     pw = pdfrect.w / 72.0 / 6
!     ph = pdfrect.h / 72.0 / 6
!     wm = (pdfrect.x1-pdfrect.x0) / pw
!     hm = (pdfrect.y1-pdfrect.y0) / ph
!     def mpap(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)
! 
!       texid = pdfrect.texId
!       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
! 
!           BindTexture TEXTURE_2D %(texid)s
!           TexParameter TEXTURE_2D TEXTURE_WRAP_S REPEAT
!           TexParameter TEXTURE_2D TEXTURE_WRAP_T REPEAT
!           TexParameter TEXTURE_2D TEXTURE_MIN_FILTER LINEAR_MIPMAP_LINEAR
!           TexParameter TEXTURE_2D TEXTURE_MAG_FILTER LINEAR
!       """ % 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
!     papw = mpap("BlendFunc SRC_COLOR ZERO")
!     papo = mpap(nvcode.combinercode("""
!       Enable REGISTER_COMBINERS_NV
!       CombinerParameterNV NUM_GENERAL_COMBINERS_NV 1
!       FCI A TEXTURE0 UNSIGNED_INVERT_NV RGB
!       FCI B ZERO UNSIGNED_INVERT_NV RGB
!       FCI C ZERO UNSIGNED_IDENTITY_NV RGB
!       FCI D ZERO UNSIGNED_IDENTITY_NV RGB
!       FCI G ZERO UNSIGNED_IDENTITY_NV ALPHA
!       BlendFunc ONE ONE_MINUS_SRC_COLOR
!       BlendEquation FUNC_REVERSE_SUBTRACT
!     """), pap = background.clone())
!     return (papw, pw, ph, papo)
! 
  def bg(vs):
      putnoc(vs, background((0.3,0.5,0.4)))
      putnoc(vs, getDListNocoords("""
--- 124,151 ----
      AbstractUpdateManager.chg()
  
  def getCellPDFView(cell):
!     return pagespanview.CellPDFView(cell)
  
  
  
  def globalkey(key):
!     global globalusefancypaper
      if '1' <= key <= '9':
        moveToCell(cells[int(key)-1])
      elif key == 'l':
!       pagespanview.globalLOD = 1 - pagespanview.globalLOD
!       print "Lod: ",pagespanview.globalLOD
        AbstractUpdateManager.chg()
      elif key == 'p':
        globalusefancypaper = not globalusefancypaper
      elif key == ',':
!       pagespanview.globalseedoffs -= 1
        moveToCell(globalcursor)
      elif key == '.':
!       pagespanview.globalseedoffs += 1
        moveToCell(globalcursor)
  
! # Show the intended screen size
  def bg(vs):
      putnoc(vs, background((0.3,0.5,0.4)))
      putnoc(vs, getDListNocoords("""
***************
*** 358,373 ****
      p0 = view.paperpoint(linkspan.offset(), p.x, p.y)
      p1 = view.paperpoint(linkspan.offset(), p.x+d.width, p.y+d.height)
  
      cs1 = floater.addBuoy(anchorX, anchorY, importance, m.getId(), 0, 0)
      eye = 0.2
!     cs1_zoom= vs.coords.distort(cs1, 0, 0, eye, eye, 100, 100)
      vs.matcher.add(cs1_zoom, cell.getId()+"__bulg") 
  
!     # cs1_trans = vs.coords.translateXY(cs1_zoom, - (p0[0]+p1[0])/2, - 
(p0[1]+p1[1])/2)
!     cs1_trans = vs.coords.translateXY(cs1_zoom, 0, 0)
      vs.matcher.add(cs1_trans, cell.getId()+"__trans") 
  
!     view.placepapers(vs, cs1_trans, cliprect = (p0[0], p0[1], p1[0], p1[1]))
  
  
  class XuPDFScene_PDFContext:
--- 182,202 ----
      p0 = view.paperpoint(linkspan.offset(), p.x, p.y)
      p1 = view.paperpoint(linkspan.offset(), p.x+d.width, p.y+d.height)
  
+     print "page, loc, size: ", linkspan.offset(), p, d
+     print "P0, P1: ",p0, p1
+ 
      cs1 = floater.addBuoy(anchorX, anchorY, importance, m.getId(), 0, 0)
      eye = 0.2
!     buoyscale = 200
!     cs1_zoom= vs.coords.distort(cs1, 0, 0, eye, eye, buoyscale, buoyscale)
      vs.matcher.add(cs1_zoom, cell.getId()+"__bulg") 
  
!     cs1_trans = vs.coords.translateXY(cs1_zoom, - (p0[0]+p1[0])/2, - 
(p0[1]+p1[1])/2)
!     # cs1_trans = vs.coords.translateXY(cs1_zoom, 0, 0)
      vs.matcher.add(cs1_trans, cell.getId()+"__trans") 
  
!     view.placepapers(vs, cs1_trans, cliprect = (p0[0], p0[1], p1[0], p1[1]),
!           fancy = globalusefancypaper)
  
  
  class XuPDFScene_PDFContext:
***************
*** 377,383 ****
        self.ctry = screensize[1]/2
        self.rad = screensize[1]/2
        self.nadir = NadirAngler(self.ctrx, screensize[1]*2)
!       self.showcontext = 0
        self.clip = 0
      def key(self, key):
        global currentScene
--- 206,212 ----
        self.ctry = screensize[1]/2
        self.rad = screensize[1]/2
        self.nadir = NadirAngler(self.ctrx, screensize[1]*2)
!       self.showcontext = 1
        self.clip = 0
      def key(self, key):
        global currentScene
***************
*** 399,407 ****
            AbstractUpdateManager.chg()
      def scene(self, vs):
        bg(vs)
!       bf = NadirCircleFloater_NoAnchor(vs, (self.ctrx, self.ctry), self.rad,
                        self.nadir, 1)
!       bfforw = NadirCircleFloater_NoAnchor(vs, (self.ctrx, self.ctry), 
self.rad,
                        self.nadir, -1)
        print "Context"
  
--- 228,236 ----
            AbstractUpdateManager.chg()
      def scene(self, vs):
        bg(vs)
!       bf = effects.NadirCircleFloater_NoAnchor(vs, (self.ctrx, self.ctry), 
self.rad,
                        self.nadir, 1)
!       bfforw = effects.NadirCircleFloater_NoAnchor(vs, (self.ctrx, 
self.ctry), self.rad,
                        self.nadir, -1)
        print "Context"
  
***************
*** 422,428 ****
            extray = 0.1
            clip = (0-extrax, -extray, w+extrax, 1+extray)
  
!       globalview.placepapers(vs, cs1_trans, cliprect = clip)
            
        if self.showcontext:
            for forwlink in globalforw:
--- 251,258 ----
            extray = 0.1
            clip = (0-extrax, -extray, w+extrax, 1+extray)
  
!       globalview.placepapers(vs, cs1_trans, cliprect = clip,
!               fancy = globalusefancypaper)
            
        if self.showcontext:
            for forwlink in globalforw:
***************
*** 454,460 ****
            AbstractUpdateManager.chg()
      def scene(self, vs):
        bg(vs)
!       bf = NadirCircleFloater_NoAnchor(vs, 
                screenctr,  100, None, 1)
        cs1 = bf.addCentralBuoy(globalcursor.getId())
        # cs1_zoom = vs.coords.affineCoordsys(cs1, 0, 0, 0, 
--- 284,290 ----
            AbstractUpdateManager.chg()
      def scene(self, vs):
        bg(vs)
!       bf = effects.NadirCircleFloater_NoAnchor(vs, 
                screenctr,  100, None, 1)
        cs1 = bf.addCentralBuoy(globalcursor.getId())
        # cs1_zoom = vs.coords.affineCoordsys(cs1, 0, 0, 0, 
***************
*** 477,482 ****
        # placepapers(vs, cs1_trans, globalpap, globalcursor.getId())
                    
  
! currentScene = XuPDFScene_PDFZoom()
  moveToCell(cells[0])
  
--- 307,312 ----
        # placepapers(vs, cs1_trans, globalpap, globalcursor.getId())
                    
  
! currentScene = XuPDFScene_PDFContext()
  moveToCell(cells[0])
  




reply via email to

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