/[gzz]/gzz/gfx/demo/xupdf.py
ViewVC logotype

Diff of /gzz/gfx/demo/xupdf.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.6 by tjl, Wed Sep 18 10:01:26 2002 UTC revision 1.7 by tjl, Wed Sep 18 11:23:26 2002 UTC
# Line 1  Line 1 
1  from __future__ import nested_scopes  from __future__ import nested_scopes
 from gzz.gfx.gl import GZZGL,GLSpans,Paper  
 import gzz  
   
2  # Now, this is the start of the REAL demo, the one  # Now, this is the start of the REAL demo, the one
3  # with Xanadu links between PDF and text.  # with Xanadu links between PDF and text.
4    
5  screensize = (1024, 768) # assuming XGA projector.  screensize = (1024, 768) # assuming XGA projector.
6    
7  pages = gzz.media.impl.PageImageScroll(None, gzz.mediaserver.Mediaserver.Id(  from gzz.gfx.gl import GZZGL,GLSpans,Paper
8      "0000000008000000E9573F43E00004CB42D4BEFEBAA27C20403F7D57693141B9E4D9A46329AC9C"))  import gzz
9    from test.tools import tools
10    execfile("gfx/libutil/effects.py")
11    
12    space = gzz.impl.ModularSpace(*tools.spaceArgList())
13    xuindexer = gzz.index.impl.TransientXuIndexer()
14    enfMaker = gzz.media.impl.Enfilade1DImpl.Enfilade1DImplMaker()
15    
16    # A PDF file
17    pagescroll1 = gzz.media.impl.PageImageScroll(None,
18            gzz.mediaserver.Mediaserver.Id(
19    "0000000008000000E9573F43E00004CB42D4BEFEBAA27C20403F7D57693141B9E4D9A46329AC9C"))
20    
21    # A second one
22    pagescroll2 = gzz.media.impl.PageImageScroll(None,
23            gzz.mediaserver.Mediaserver.Id(
24    "0000000008000000E9573F40460004592C0AC2038D1250E0ED08F865D8C9148654B87A7AA82CC6"))
25    
26    d1cell = space.N()
27    d1 = space.getDim(d1cell)
28    
29    # Two cells, with one PDF span in each
30    home = space.getHomeCell()
31    c1 = home.N(d1)
32    c2 = c1.N(d1)
33    
34    space.cellTexter.setEnfilade(c1, enfMaker.makeEnfilade(pagescroll1.getCurrent()))
35    space.cellTexter.setEnfilade(c2, enfMaker.makeEnfilade(pagescroll2.getCurrent()))
36    
37    globalcursor = None
38    
39    # Paper coordinates of current focus
40    globalx = 0
41    globaly = 0
42    
43    def moveToCell(cell):
44        global globalcursor, globalx, globaly, globalpap
45    
46        content = space.cellTexter.getEnfilade(cell, None)
47    
48  prect = [      # Check type
49      GLSpans.getRect(pages.getCurrent().subSpan(i,i+1))      if 1: # PDF
50          for i in range(0,pages.getCurrent().length())]          list = content.getList()
51            print list
52            content = list[0]
53            prect = [
54                GLSpans.getRect(content.subSpan(i,i+1))
55                    for i in range(0,content.length())]
56            globalpap = [
57                pdfpaper(p) for p in prect
58            ]
59    
60        AbstractUpdateManager.chg()
61    
62    
63    def globalkey(key):
64        if key == '1':
65            moveToCell(c1)
66        if key == '2':
67            moveToCell(c2)
68    
69  def pdfpaper(pdfrect):  def pdfpaper(pdfrect):
70      # Papercoords: (0,0) .. (w,h) where      # Papercoords: (0,0) .. (w,h) where
# Line 57  def pdfpaper(pdfrect): Line 109  def pdfpaper(pdfrect):
109                                0, 0,  0, 1])                                0, 0,  0, 1])
110      return (pap, pw, ph)      return (pap, pw, ph)
111    
 globalpap = [  
     pdfpaper(p) for p in prect  
 ]  
   
112  def placepapers(vs, cs2, papers, key, x, y, paperx, papery, h, onlypages=None):  def placepapers(vs, cs2, papers, key, x, y, paperx, papery, h, onlypages=None):
113      # The height in coords      # The height in coords
114      ph = papers[0][2]      ph = papers[0][2]
# Line 75  def placepapers(vs, cs2, papers, key, x, Line 123  def placepapers(vs, cs2, papers, key, x,
123                  papers[i][0], 0, 0, papers[i][1], papers[i][2], 21, 21)                  papers[i][0], 0, 0, papers[i][1], papers[i][2], 21, 21)
124              vs.map.put(pq, cs1, cs2)              vs.map.put(pq, cs1, cs2)
125          curx += 1.02 * h/ph * papers[i][1]          curx += 1.02 * h/ph * papers[i][1]
           
 # Paper coordinates of current focus  
 globalx = 0  
 globaly = 0  
126    
127  def bg(vs):  def bg(vs):
128      putnoc(vs, background((0.3,0.5,0.4)))      putnoc(vs, background((0.3,0.5,0.4)))
# Line 98  def bg(vs): Line 142  def bg(vs):
142  class XuPDFScene_PDFContext:  class XuPDFScene_PDFContext:
143      def __init__(self):      def __init__(self):
144          self.yheight = 50          self.yheight = 50
145            self.ctrx = screensize[0]/2
146            self.ctry = screensize[1]/2
147            self.rad = screensize[1]/2
148            self.nadir = NadirAngler(self.ctrx, screensize[1]*2)
149      def key(self, key):      def key(self, key):
150          global currentScene          global currentScene
151          if key == 'z':          if key == 'z':
# Line 112  class XuPDFScene_PDFContext: Line 160  class XuPDFScene_PDFContext:
160              AbstractUpdateManager.chg()              AbstractUpdateManager.chg()
161      def scene(self, vs):      def scene(self, vs):
162          bg(vs)          bg(vs)
163            self.bf = NadirCircleFloater(vs, (self.ctrx, self.ctry), self.rad,
164                            (self.ctrx+1.5*self.rad, self.ctry), self.nadir)
165          print "Context"          print "Context"
166          cs2 = vs.coords.affineCoordsys(0, "2", -3,          cs2 = vs.coords.affineCoordsys(0, "2", -3,
167                  screensize[0]/2, 0.9 * screensize[1]/2, 50, 0,0,50)                  screensize[0]/2, 0.9 * screensize[1]/2, 50, 0,0,50)
# Line 149  class XuPDFScene_PDFZoom: Line 199  class XuPDFScene_PDFZoom:
199                      768)                      768)
200    
201  currentScene = XuPDFScene_PDFZoom()  currentScene = XuPDFScene_PDFZoom()
202    moveToCell(c1)
203    

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26