[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gzz-commits] gzz gfx/demo/xupdf.py gfx/jni/paper-jni.cxx gzz...
From: |
Tuomas J. Lukka |
Subject: |
[Gzz-commits] gzz gfx/demo/xupdf.py gfx/jni/paper-jni.cxx gzz... |
Date: |
Wed, 23 Oct 2002 15:50:19 -0400 |
CVSROOT: /cvsroot/gzz
Module name: gzz
Changes by: Tuomas J. Lukka <address@hidden> 02/10/23 15:50:17
Modified files:
gfx/demo : xupdf.py
gfx/jni : paper-jni.cxx
gzz/gfx/gl : Paper.java
gzz/view : pagespanview.py
Log message:
A LOT, LOT faster xupdf\! Render-paper-to-texture made an incredible
difference...
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/demo/xupdf.py.diff?tr1=1.54&tr2=1.55&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gfx/jni/paper-jni.cxx.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/gfx/gl/Paper.java.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/gzz/view/pagespanview.py.diff?tr1=1.15&tr2=1.16&r1=text&r2=text
Patches:
Index: gzz/gfx/demo/xupdf.py
diff -u gzz/gfx/demo/xupdf.py:1.54 gzz/gfx/demo/xupdf.py:1.55
--- gzz/gfx/demo/xupdf.py:1.54 Sun Oct 20 05:33:17 2002
+++ gzz/gfx/demo/xupdf.py Wed Oct 23 15:50:17 2002
@@ -8,6 +8,9 @@
from jarray import array, zeros
+from gzz.view import pagespanview
+pagespanview.window = w
+
# Now, this is the start of the REAL demo, the one
# with Xanadu links between PDF and text.
Index: gzz/gfx/jni/paper-jni.cxx
diff -u gzz/gfx/jni/paper-jni.cxx:1.5 gzz/gfx/jni/paper-jni.cxx:1.6
--- gzz/gfx/jni/paper-jni.cxx:1.5 Tue Sep 24 04:14:08 2002
+++ gzz/gfx/jni/paper-jni.cxx Wed Oct 23 15:50:17 2002
@@ -83,6 +83,14 @@
env->ReleaseStringUTFChars(code, utf);
}
+JNIEXPORT jstring JNICALL Java_gzz_gfx_gl_Paper_impl_1Pass_1getSetupcode
+ (JNIEnv *env, jclass, jint id, jint pass) {
+
+ string s = (*papers[id])[pass].setupcode.getSource();
+ return env->NewStringUTF(s.c_str());
+}
+
+
JNIEXPORT void JNICALL Java_gzz_gfx_gl_Paper_impl_1Pass_1setTeardowncode
(JNIEnv *env, jclass, jint id, jint pass, jstring code) {
GLERR
@@ -94,6 +102,14 @@
env->ReleaseStringUTFChars(code, utf);
}
+
+JNIEXPORT jstring JNICALL Java_gzz_gfx_gl_Paper_impl_1Pass_1getTeardowncode
+ (JNIEnv *env, jclass, jint id, jint pass) {
+
+ string s = (*papers[id])[pass].teardowncode.getSource();
+ return env->NewStringUTF(s.c_str());
+}
+
JNIEXPORT void JNICALL Java_gzz_gfx_gl_Paper_impl_1Pass_1putNormalTexGen
(JNIEnv *env, jclass, jint id, jint pass, jint ind, jfloatArray arr) {
Index: gzz/gzz/gfx/gl/Paper.java
diff -u gzz/gzz/gfx/gl/Paper.java:1.5 gzz/gzz/gfx/gl/Paper.java:1.6
--- gzz/gzz/gfx/gl/Paper.java:1.5 Tue Sep 24 04:14:08 2002
+++ gzz/gzz/gfx/gl/Paper.java Wed Oct 23 15:50:17 2002
@@ -51,7 +51,9 @@
public void setNLightSetups(int n) { impl_Pass_setNLightSetups(c_id,
index, n); }
public void setSetupcode(String code) { impl_Pass_setSetupcode(c_id,
index, code); }
+ public String getSetupcode() { return impl_Pass_getSetupcode(c_id,
index); }
public void setTeardowncode(String code) {
impl_Pass_setTeardowncode(c_id, index, code); }
+ public String getTeardowncode() { return
impl_Pass_getTeardowncode(c_id, index); }
public void putNormalTexGen(int ind, float[] matrix) {
impl_Pass_putNormalTexGen(c_id, index, ind, matrix);
@@ -93,7 +95,9 @@
static private native void impl_Pass_setNLightSetups(int pid, int pass,
int i);
static private native void impl_Pass_setSetupcode(int pid, int pass,
String code);
+ static private native String impl_Pass_getSetupcode(int pid, int pass);
static private native void impl_Pass_setTeardowncode(int pid, int pass,
String code);
+ static private native String impl_Pass_getTeardowncode(int pid, int pass);
static private native void impl_Pass_putNormalTexGen(int pid, int pass,
int ind, float[] matrix) ;
static private native void impl_Pass_putEmbossTexGen(int pid, int pass,
int ind, float[] matrix, float eps) ;
Index: gzz/gzz/view/pagespanview.py
diff -u gzz/gzz/view/pagespanview.py:1.15 gzz/gzz/view/pagespanview.py:1.16
--- gzz/gzz/view/pagespanview.py:1.15 Wed Oct 23 08:12:38 2002
+++ gzz/gzz/view/pagespanview.py Wed Oct 23 15:50:17 2002
@@ -20,18 +20,26 @@
list = enf.getList()
return list[0]
+optimizedPaper = 1
+
globalscrollblockPapers = {}
+
+window = None
+
def getScrollblockPaper(sb):
"""Get the paper object for a given scrollblock.
"""
hashkey = sb.hashCode() + globalseedoffs
ret = globalscrollblockPapers.get(hashkey, None)
if ret == None:
- ret = papermill.getPaper(hashkey)
- ret.setNPasses(3)
+ if optimizedPaper:
+ ret = papermill.getOptimizedPaper(hashkey, window)
+ else:
+ ret = papermill.getPaper(hashkey)
globalscrollblockPapers[hashkey] = ret
return ret
+
def getPDFPapers(content):
contentspan = enf2span(content)
scrollblockPaper = getScrollblockPaper(contentspan.getScrollBlock())
@@ -56,7 +64,7 @@
ph = pdfrect.h / 72.0 / 6
wm = (pdfrect.x1-pdfrect.x0) / pw
hm = (pdfrect.y1-pdfrect.y0) / ph
- def mpap(blend, pap = None):
+ def mpap_general(blend, pap = None):
if pap == None:
pap = Paper()
pap.setNPasses(1)
@@ -97,6 +105,66 @@
0, 0, 1, 0,
0, 0, 0, 1])
return pap
+
+ if optimizedPaper:
+ def mpap(blend, pap = None):
+ if pap == None:
+ return mpap_general(blend, pap)
+ p = pap.getNPasses()
+ assert p == 1
+ ppass = pap.getPass(0)
+
+ texid = pdfrect.texId
+ ppass.setSetupcode(ppass.getSetupcode() + nvcode.combinercode("""
+ ActiveTexture TEXTURE1
+ Enable TEXTURE_2D
+ 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
+ TexParameter TEXTURE_2D TEXTURE_MAX_ANISOTROPY_EXT 10
+ ActiveTexture TEXTURE0
+
+ Disable BLEND
+ Disable ALPHA_TEST
+
+ Enable REGISTER_COMBINERS_NV
+ CombinerParameterNV NUM_GENERAL_COMBINERS_NV 2
+
+ # 2*tex1 - 1 -> spare0
+ CI0 RGB A TEXTURE1 EXPAND_NORMAL_NV RGB
+ CI0 RGB B ZERO UNSIGNED_INVERT_NV RGB
+ CI0 RGB C ZERO UNSIGNED_INVERT_NV RGB
+ CI0 RGB D ZERO EXPAND_NORMAL_NV RGB
+ CO0 RGB DISCARD_NV DISCARD_NV SPARE0_NV NONE NONE FALSE FALSE
FALSE
+
+ # spare0 + tex0 -> spare1
+ CI1 RGB A TEXTURE0 UNSIGNED_IDENTITY_NV RGB
+ CI1 RGB B ZERO UNSIGNED_INVERT_NV RGB
+ CI1 RGB C SPARE0_NV SIGNED_IDENTITY_NV RGB
+ CI1 RGB D ZERO UNSIGNED_INVERT_NV RGB
+ CO1 RGB DISCARD_NV DISCARD_NV SPARE1_NV NONE NONE FALSE FALSE
FALSE
+
+ FCI A SPARE1_NV UNSIGNED_IDENTITY_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
+
+ # Final color: simply just SPARE1
+
+ """ % locals()))
+ ppass.setNTexGens(2)
+ ppass.putNormalTexGen(1, [wm, 0, 0, pdfrect.x0,
+ 0, hm, 0, pdfrect.y0,
+ 0, 0, 1, 0,
+ 0, 0, 0, 1])
+ return pap
+ else:
+ mpap = mpap_general
+
+
papw = mpap("BlendFunc SRC_COLOR ZERO")
papo = mpap(nvcode.combinercode("""
Enable REGISTER_COMBINERS_NV
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gzz-commits] gzz gfx/demo/xupdf.py gfx/jni/paper-jni.cxx gzz...,
Tuomas J. Lukka <=