/[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.40 by tjl, Wed Oct 2 16:59:39 2002 UTC revision 1.41 by tjl, Wed Oct 2 18:24:34 2002 UTC
# Line 263  if 1: Line 263  if 1:
263      """)      """)
264      selectPaperQuad = GLRen.createPaperQuad(selectPaper, -1,-1,1,1, 1)      selectPaperQuad = GLRen.createPaperQuad(selectPaper, -1,-1,1,1, 1)
265    
266    class Mode:
267        def __init__(self, **args):
268            self.__dict__ = args
269    
270  class XuPDFScene_PDFContext:  class XuPDFScene_PDFContext:
271      def __init__(self):      def __init__(self):
272          self.mag = [(screensize[1]*1.6,screensize[1]/10),          self.modes = [
273                          (screensize[1],screensize[1])]                  Mode(
274                        mag=(screensize[1]*1.6,screensize[1]/10),
275                        context=1,
276                        movefocus=0,
277                        eye = 0.2,
278                    ),
279                    Mode(
280                        mag=(screensize[1],screensize[1]), # full-screen
281                        context=0,
282                        movefocus=1,
283                        eye = 0.2,
284                    ),
285                    Mode(
286                        mag=(screensize[1]*2,screensize[1]/2), # full-screen
287                        context=0,
288                        movefocus=1,
289                        eye = 0.2,
290                    ),
291            ]
292    
293          self.ctrx = screensize[0]/2          self.ctrx = screensize[0]/2
294          self.ctry = screensize[1]/2          self.ctry = screensize[1]/2
295          self.rad = screensize[1]/2          self.rad = screensize[1]/2
296          self.nadir = NadirAngler(self.ctrx, screensize[1]*2)          self.nadir = NadirAngler(self.ctrx, screensize[1]*2)
         self.showcontext = 1  
297          self.clip = 0          self.clip = 0
298          self.selectCS = None          self.selectCS = None
299          self.currentvs = None          self.currentvs = None
300      def key(self, key):      def key(self, key):
301          global currentScene          global currentScene
         if key == 'z':  
             currentScene = XuPDFScene_PDFZoom()  
             self.currentvs = None  
302          if key == 'm':          if key == 'm':
303              rotatelist(self.mag)              rotatelist(self.modes)
             self.currentvs = None  
304          if key == 'c':          if key == 'c':
305              self.clip = not self.clip              self.clip = not self.clip
             self.currentvs = None  
         if key == 's':  
             self.showcontext = not self.showcontext  
             self.currentvs = None  
306      def mouse(self, ev):      def mouse(self, ev):
307          global globalx, globaly          global globalx, globaly
308          if ev.getID() == ev.MOUSE_CLICKED:          if ev.getID() == ev.MOUSE_CLICKED:
# Line 310  class XuPDFScene_PDFContext: Line 323  class XuPDFScene_PDFContext:
323              else:              else:
324                  print "Didn't hit anything"                  print "Didn't hit anything"
325              checkGlobalCoords()              checkGlobalCoords()
             self.currentvs = None  
326              print "Mouse ",globalx, globaly              print "Mouse ",globalx, globaly
327              AbstractUpdateManager.chg()              AbstractUpdateManager.chg()
328          elif ev.getID() == ev.MOUSE_PRESSED:          elif ev.getID() == ev.MOUSE_PRESSED:
# Line 339  class XuPDFScene_PDFContext: Line 351  class XuPDFScene_PDFContext:
351                      ctr[0], ctr[1], s[0], 0, 0, s[1])                      ctr[0], ctr[1], s[0], 0, 0, s[1])
352              # print "paint: ",ctr, s              # print "paint: ",ctr, s
353              AbstractUpdateManager.chg()              AbstractUpdateManager.chg()
354                replaceNewScene(self.currentvs)
355    
356    
357          else:          else:
358              print "Unused mouse: ",ev              print "Unused mouse: ",ev
359      def scene(self, vs):      def scene(self, vs):
         if self.currentvs:  
             AbstractUpdateManager.setNoAnimation()  
             return self.currentvs  
360          bg(vs)          bg(vs)
361          bf = effects.NadirCircleFloater_NoAnchor(vs, (self.ctrx, self.ctry), self.rad,          bf = effects.NadirCircleFloater_NoAnchor(vs, (self.ctrx, self.ctry), self.rad,
362                          self.nadir, 1)                          self.nadir, 1)
# Line 356  class XuPDFScene_PDFContext: Line 366  class XuPDFScene_PDFContext:
366    
367          cs1 = bf.addCentralBuoy(globalcursor.getId())          cs1 = bf.addCentralBuoy(globalcursor.getId())
368    
369          eye = 0.2  
370          cs1_zoom= vs.coords.distort(cs1, 0, 0, eye, eye, *(self.mag[0]))          if self.modes[0].movefocus:
371                focusy_at = globaly * screensize[1]
372            else:
373                focusy_at = self.ctry
374    
375            # The buoy cs is centered
376            focusy_at -= self.ctry
377    
378            eye = self.modes[0].eye
379            cs1_zoom= vs.coords.distort(cs1, 0, focusy_at,
380                eye, eye, *(self.modes[0].mag))
381          vs.matcher.add(cs1_zoom, globalcursor.getId()+"__bulg")          vs.matcher.add(cs1_zoom, globalcursor.getId()+"__bulg")
382    
383          cs1_trans = vs.coords.translateXY(cs1_zoom, -globalx, -globaly)          cs1_trans = vs.coords.translateXY(cs1_zoom,
384                    -globalx, -globaly + focusy_at)
385          vs.matcher.add(cs1_trans, globalcursor.getId()+"__trans")          vs.matcher.add(cs1_trans, globalcursor.getId()+"__trans")
386    
387          if self.clip:          if self.clip:
388              clip = (-0.2+globalx, -0.2+globaly, 0.2+globalx, 0.2+globaly)              clip = (-0.2+globalx, -0.2+globaly, 0.2+globalx, 0.2+globaly)
389              self.cliprect = cliprect              self.cliprect = clip
390          else:          else:
391              w = globalview.papersize[0]              w = globalview.papersize[0]
392              extrax = 0.1              extrax = 0.1
# Line 378  class XuPDFScene_PDFContext: Line 399  class XuPDFScene_PDFContext:
399    
400          self.buoys = []          self.buoys = []
401                            
402          if self.showcontext:          if self.modes[0].context:
403              for forwlink in globalforw:              for forwlink in globalforw:
404                  b = XuPDFBuoy(1, (getattr(forwlink, "from"), forwlink.to))                  b = XuPDFBuoy(1, (getattr(forwlink, "from"), forwlink.to))
405                  b.add(vs, 0, 0, 1, bfforw, maincs = cs1_trans)                  b.add(vs, 0, 0, 1, bfforw, maincs = cs1_trans)
# Line 391  class XuPDFScene_PDFContext: Line 412  class XuPDFScene_PDFContext:
412          self.selectCS = None          self.selectCS = None
413          self.papercs = cs1_trans          self.papercs = cs1_trans
414    
 class XuPDFScene_PDFZoom:  
     def __init__(self):  
         self.mag = [(screensize[1],screensize[1]),(screensize[1]*1.6,screensize[1]/3)]  
         self.clip = 0  
     def key(self, key):  
         print "Key: ",key  
         global currentScene  
         if key == 'z':  
             currentScene = XuPDFScene_PDFContext()  
         if key == 'm':  
             rotatelist(self.mag)  
         if key == 'c':  
             self.clip = not self.clip  
     def mouse(self, ev):  
         global globalx, globaly  
         if ev.getID() == ev.MOUSE_CLICKED:  
             # scale = 1.0 / screensize[1]  
             # globalx += (ev.getX() - screensize[0]/2) * scale  
             # self.y -= ev.getY() - screensize[1]/2  
             # globaly = ev.getY() * scale  
   
             # Try a real inverse transform  
             point = array([ev.getX(), ev.getY(), 0], 'f')  
             src = zeros(len(point), 'f')  
             self.currentvs.coords.inverseTransformPoints3(  
                 self.papercs, point, src)  
   
             globalx = src[0]  
             globaly = src[1]  
             print "Mouse ret",point, src  
             checkGlobalCoords()  
             print "Mouse ",globalx, globaly  
             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,  
         #     100, 0, 0, 100)  
         eye = 0.2  
         yat = (globaly-0.5) * screensize[1]  
         cs1_zoom= vs.coords.distort(cs1, 0, yat, eye, eye,  
             *(self.mag[0]))  
         vs.matcher.add(cs1_zoom, globalcursor.getId()+"__bulg")  
         cs1_trans = vs.coords.translateXY(cs1_zoom, -globalx, -globaly + yat)  
         vs.matcher.add(cs1_trans, globalcursor.getId()+"__trans")  
   
         if self.clip:  
             clip = (-0.2+globalx, -0.2+globaly, 0.2+globalx, 0.2+globaly)  
         else:  
             w = globalview.papersize[0]  
             extrax = 1  
             extray = 0.3  
             clip = (0-extrax, -extray, w+extrax, 1+extray)  
   
         globalview.placepapers(vs, cs1_trans, cliprect = clip,  
             showTessel = globalshowtessel,  
             fancy = globalusefancypaper)  
         self.currentvs = vs  
         self.papercs = cs1_trans  
                       
   
415  currentScene = XuPDFScene_PDFContext()  currentScene = XuPDFScene_PDFContext()
416  moveToCell(cells[1])  moveToCell(cells[1])
417    

Legend:
Removed from v.1.40  
changed lines
  Added in v.1.41

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