20 |
list = enf.getList() |
list = enf.getList() |
21 |
return list[0] |
return list[0] |
22 |
|
|
23 |
|
optimizedPaper = 1 |
24 |
|
|
25 |
globalscrollblockPapers = {} |
globalscrollblockPapers = {} |
26 |
|
|
27 |
|
window = None |
28 |
|
|
29 |
def getScrollblockPaper(sb): |
def getScrollblockPaper(sb): |
30 |
"""Get the paper object for a given scrollblock. |
"""Get the paper object for a given scrollblock. |
31 |
""" |
""" |
32 |
hashkey = sb.hashCode() + globalseedoffs |
hashkey = sb.hashCode() + globalseedoffs |
33 |
ret = globalscrollblockPapers.get(hashkey, None) |
ret = globalscrollblockPapers.get(hashkey, None) |
34 |
if ret == None: |
if ret == None: |
35 |
ret = papermill.getPaper(hashkey) |
if optimizedPaper: |
36 |
ret.setNPasses(3) |
ret = papermill.getOptimizedPaper(hashkey, window) |
37 |
|
else: |
38 |
|
ret = papermill.getPaper(hashkey) |
39 |
globalscrollblockPapers[hashkey] = ret |
globalscrollblockPapers[hashkey] = ret |
40 |
return ret |
return ret |
41 |
|
|
42 |
|
|
43 |
def getPDFPapers(content): |
def getPDFPapers(content): |
44 |
contentspan = enf2span(content) |
contentspan = enf2span(content) |
45 |
scrollblockPaper = getScrollblockPaper(contentspan.getScrollBlock()) |
scrollblockPaper = getScrollblockPaper(contentspan.getScrollBlock()) |
64 |
ph = pdfrect.h / 72.0 / 6 |
ph = pdfrect.h / 72.0 / 6 |
65 |
wm = (pdfrect.x1-pdfrect.x0) / pw |
wm = (pdfrect.x1-pdfrect.x0) / pw |
66 |
hm = (pdfrect.y1-pdfrect.y0) / ph |
hm = (pdfrect.y1-pdfrect.y0) / ph |
67 |
def mpap(blend, pap = None): |
def mpap_general(blend, pap = None): |
68 |
if pap == None: |
if pap == None: |
69 |
pap = Paper() |
pap = Paper() |
70 |
pap.setNPasses(1) |
pap.setNPasses(1) |
105 |
0, 0, 1, 0, |
0, 0, 1, 0, |
106 |
0, 0, 0, 1]) |
0, 0, 0, 1]) |
107 |
return pap |
return pap |
108 |
|
|
109 |
|
if optimizedPaper: |
110 |
|
def mpap(blend, pap = None): |
111 |
|
if pap == None: |
112 |
|
return mpap_general(blend, pap) |
113 |
|
p = pap.getNPasses() |
114 |
|
assert p == 1 |
115 |
|
ppass = pap.getPass(0) |
116 |
|
|
117 |
|
texid = pdfrect.texId |
118 |
|
ppass.setSetupcode(ppass.getSetupcode() + nvcode.combinercode(""" |
119 |
|
ActiveTexture TEXTURE1 |
120 |
|
Enable TEXTURE_2D |
121 |
|
BindTexture TEXTURE_2D %(texid)s |
122 |
|
TexParameter TEXTURE_2D TEXTURE_WRAP_S REPEAT |
123 |
|
TexParameter TEXTURE_2D TEXTURE_WRAP_T REPEAT |
124 |
|
TexParameter TEXTURE_2D TEXTURE_MIN_FILTER LINEAR_MIPMAP_LINEAR |
125 |
|
TexParameter TEXTURE_2D TEXTURE_MAG_FILTER LINEAR |
126 |
|
TexParameter TEXTURE_2D TEXTURE_MAX_ANISOTROPY_EXT 10 |
127 |
|
ActiveTexture TEXTURE0 |
128 |
|
|
129 |
|
Disable BLEND |
130 |
|
Disable ALPHA_TEST |
131 |
|
|
132 |
|
Enable REGISTER_COMBINERS_NV |
133 |
|
CombinerParameterNV NUM_GENERAL_COMBINERS_NV 2 |
134 |
|
|
135 |
|
# 2*tex1 - 1 -> spare0 |
136 |
|
CI0 RGB A TEXTURE1 EXPAND_NORMAL_NV RGB |
137 |
|
CI0 RGB B ZERO UNSIGNED_INVERT_NV RGB |
138 |
|
CI0 RGB C ZERO UNSIGNED_INVERT_NV RGB |
139 |
|
CI0 RGB D ZERO EXPAND_NORMAL_NV RGB |
140 |
|
CO0 RGB DISCARD_NV DISCARD_NV SPARE0_NV NONE NONE FALSE FALSE FALSE |
141 |
|
|
142 |
|
# spare0 + tex0 -> spare1 |
143 |
|
CI1 RGB A TEXTURE0 UNSIGNED_IDENTITY_NV RGB |
144 |
|
CI1 RGB B ZERO UNSIGNED_INVERT_NV RGB |
145 |
|
CI1 RGB C SPARE0_NV SIGNED_IDENTITY_NV RGB |
146 |
|
CI1 RGB D ZERO UNSIGNED_INVERT_NV RGB |
147 |
|
CO1 RGB DISCARD_NV DISCARD_NV SPARE1_NV NONE NONE FALSE FALSE FALSE |
148 |
|
|
149 |
|
FCI A SPARE1_NV UNSIGNED_IDENTITY_NV RGB |
150 |
|
FCI B ZERO UNSIGNED_INVERT_NV RGB |
151 |
|
FCI C ZERO UNSIGNED_IDENTITY_NV RGB |
152 |
|
FCI D ZERO UNSIGNED_IDENTITY_NV RGB |
153 |
|
FCI G ZERO UNSIGNED_IDENTITY_NV ALPHA |
154 |
|
|
155 |
|
# Final color: simply just SPARE1 |
156 |
|
|
157 |
|
""" % locals())) |
158 |
|
ppass.setNTexGens(2) |
159 |
|
ppass.putNormalTexGen(1, [wm, 0, 0, pdfrect.x0, |
160 |
|
0, hm, 0, pdfrect.y0, |
161 |
|
0, 0, 1, 0, |
162 |
|
0, 0, 0, 1]) |
163 |
|
return pap |
164 |
|
else: |
165 |
|
mpap = mpap_general |
166 |
|
|
167 |
|
|
168 |
papw = mpap("BlendFunc SRC_COLOR ZERO") |
papw = mpap("BlendFunc SRC_COLOR ZERO") |
169 |
papo = mpap(nvcode.combinercode(""" |
papo = mpap(nvcode.combinercode(""" |
170 |
Enable REGISTER_COMBINERS_NV |
Enable REGISTER_COMBINERS_NV |