[Top][All Lists]
[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])
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gzz-commits] gzz ./TODO gfx/demo/xupdf.py gzz/view/__init__....,
Tuomas J. Lukka <=