gzz-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gzz-commits] fenfire/org/fenfire Fen.java demo/buoyoing.py v...


From: Benja Fallenstein
Subject: [Gzz-commits] fenfire/org/fenfire Fen.java demo/buoyoing.py v...
Date: Sun, 08 Jun 2003 07:21:00 -0400

CVSROOT:        /cvsroot/fenfire
Module name:    fenfire
Branch:         
Changes by:     Benja Fallenstein <address@hidden>      03/06/08 07:21:00

Modified files:
        org/fenfire    : Fen.java 
        org/fenfire/demo: buoyoing.py 
        org/fenfire/view: TextNodeView.java 
        org/fenfire/view/lava: FenPDFContext.java 

Log message:
        linebreaking in FenPDF

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/Fen.java.diff?tr1=1.8&tr2=1.9&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/demo/buoyoing.py.diff?tr1=1.61&tr2=1.62&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/TextNodeView.java.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/fenfire/fenfire/org/fenfire/view/lava/FenPDFContext.java.diff?tr1=1.28&tr2=1.29&r1=text&r2=text

Patches:
Index: fenfire/org/fenfire/Fen.java
diff -u fenfire/org/fenfire/Fen.java:1.8 fenfire/org/fenfire/Fen.java:1.9
--- fenfire/org/fenfire/Fen.java:1.8    Thu Apr 24 09:29:12 2003
+++ fenfire/org/fenfire/Fen.java        Sun Jun  8 07:21:00 2003
@@ -28,12 +28,12 @@
     /** The span maker for user-typed spans.
      */
     public org.nongnu.alph.SpanMaker userSpanMaker =
-       new org.nongnu.alph.impl.FakeSpanMaker(); // XXX
+       new org.nongnu.alph.impl.URN5SpanMaker();
 
     /** The span maker for computer-generated spans.
      */
     public org.nongnu.alph.SpanMaker fakeSpanMaker = 
-       new org.nongnu.alph.impl.FakeSpanMaker();
+       new org.nongnu.alph.impl.URN5SpanMaker();
     
     /** The enfilade maker.
      */
Index: fenfire/org/fenfire/demo/buoyoing.py
diff -u fenfire/org/fenfire/demo/buoyoing.py:1.61 
fenfire/org/fenfire/demo/buoyoing.py:1.62
--- fenfire/org/fenfire/demo/buoyoing.py:1.61   Sat Jun  7 15:55:27 2003
+++ fenfire/org/fenfire/demo/buoyoing.py        Sun Jun  8 07:21:00 2003
@@ -104,7 +104,8 @@
 
 
 textstyle = vob.GraphicsAPI.getInstance().getTextStyle("sans", 0, 24)
-textnodeview = ff.view.lava.RSTText(fen.txtfunc, textstyle, 1)
+#textnodeview = ff.view.lava.RSTText(fen.txtfunc, textstyle, 1)
+textnodeview = ff.view.TextNodeView(fen.txtfunc, textstyle, 1)
 pagenodeview = ff.view.PageNodeView(fen.txtfunc)
 dispnodeview = ff.view.DispatchingNodeView(fen.txtfunc,
                                            textnodeview,
@@ -122,7 +123,7 @@
 context = ff.view.lava.FenPDFContext(fen, ppAct, nodeview)
 context.initMainNodes(2)
 nodeview.setContext(context)
-textnodeview.setContext(context)
+#textnodeview.setContext(context)
 context.setAccursed(noteA1)
 context.setCursorOffset(3)
 context.ppView = irregu
@@ -275,9 +276,9 @@
             System.exit(43)
         elif key == "Ctrl-R":
             vob.putil.demo.loadScenes()
-        elif key == "?":
-            vob.putil.demo.showHelp = 1-showHelp
-            vob.AbstractUpdateManager.setNoAnimation()
+        #elif key == "?":
+        #    vob.putil.demo.showHelp = 1-showHelp
+        #    vob.AbstractUpdateManager.setNoAnimation()
         else:
             return globalkey(key)
 
@@ -341,13 +342,13 @@
     frame += 1
         
 def globalkey(k):
-    if k == "P":
+    if k == "Ctrl-P":
         s = Scene()
         vs = s.getVs()
         w.renderStill(vs, 0);
         saveanim.saveframe("/tmp/buoyframeWithHand.png", w)
         
-    if k == "S":
+    if k == "Ctrl-S":
         screenshots()
     if k == "Ctrl-PrinT":
         screenshots()
Index: fenfire/org/fenfire/view/TextNodeView.java
diff -u fenfire/org/fenfire/view/TextNodeView.java:1.4 
fenfire/org/fenfire/view/TextNodeView.java:1.5
--- fenfire/org/fenfire/view/TextNodeView.java:1.4      Mon May 12 00:33:11 2003
+++ fenfire/org/fenfire/view/TextNodeView.java  Sun Jun  8 07:21:00 2003
@@ -29,6 +29,7 @@
 import org.fenfire.swamp.*;
 import org.nongnu.alph.*;
 import org.nongnu.libvob.*;
+import org.nongnu.libvob.linebreaking.*;
 import org.nongnu.libvob.vobs.*;
 
 /** A node function returning a vob that shows
@@ -37,14 +38,18 @@
  *  currently, places text as a single very long line.
  */
 public class TextNodeView implements NodeFunction {
-public static final String rcsid = "$Id: TextNodeView.java,v 1.4 2003/05/12 
04:33:11 tjl Exp $";
+public static final String rcsid = "$Id: TextNodeView.java,v 1.5 2003/06/08 
11:21:00 benja Exp $";
     public static boolean dbg = false;
     private static void pa(String s) { System.out.println("TextNodeView::"+s); 
}
 
+    final SimpleLinebreaker breaker = new SimpleLinebreaker();
+
     final NodeFunction nodeContent;
     final TextStyle style;
     final float scale;
 
+    final float width = 300;
+
     public TextNodeView(NodeFunction nodeContent,
                        TextStyle style,
                        float scale) {
@@ -58,23 +63,64 @@
        
        final Object objNode = node;
        String s = enf.makeString();
-       final TextVob vob = new TextVob(style, s, false);
-       final float width = style.getWidth(s, scale);
-       final float height = style.getHeight(scale);
+
+       HChain ch = getChain(s);
+       final HBroken br = breaker.breakLines(ch, width, scale);
+       final float height = br.getHeight();
+
+       //final TextVob vob = new TextVob(style, s, false);
+       //final float width = style.getWidth(s, scale);
+       //final float height = style.getHeight(scale);
 
        if(dbg) {
-           pa("Textnodeview: '"+s+"' "+width+" "+height);
+           pa("Textnodeview: '"+s+"' "+width+" "+height+" "+scale+" "+br);
        }
 
        return new org.nongnu.libvob.lava.placeable.Placeable() {
                public void place(VobScene vs, int into) {
-                   int scaled = vs.orthoCS(into, objNode, 0,
-                                           0, 0, height, height);
-                   vs.put(vob, scaled);
+                   br.put(vs, into);
                }
 
                public float getWidth() { return width; }
                public float getHeight() { return height; }
            };
+    }
+
+
+    protected HChain getChain(String s) {
+       HChain ch = new LinebreakableChain();
+
+       int pos = 0;
+       int last;
+       while(pos < s.length()) {
+           last = pos;
+           int sp = s.indexOf(' ', pos);
+           int br = s.indexOf('\n', pos);
+
+           if(sp >= 0 && br >= 0)
+               pos = sp<br ? sp+1 : br;
+            else if(sp >= 0) pos = sp+1;
+           else if(br >= 0) pos = br;
+           else
+               pos = s.length();
+
+            addVobs(s, ch, last, pos);
+           if(pos == br) {
+               ch.addBox(new HBox.Null(1));
+               ch.addBreak();
+               pos++;
+           }
+       }
+
+       return ch;
+    }
+
+    protected void addVobs(String s, HChain ch, int start, int end) {
+        Object key = new Integer(start+1472);
+       s = s.substring(start, end);
+
+       if(dbg) pa("addVobs: "+start+" "+end+" '"+s+"'");
+        TextVob vob = new TextVob(style, s, false, key);
+        ch.addBox(vob);
     }
 }
Index: fenfire/org/fenfire/view/lava/FenPDFContext.java
diff -u fenfire/org/fenfire/view/lava/FenPDFContext.java:1.28 
fenfire/org/fenfire/view/lava/FenPDFContext.java:1.29
--- fenfire/org/fenfire/view/lava/FenPDFContext.java:1.28       Sat Jun  7 
15:55:27 2003
+++ fenfire/org/fenfire/view/lava/FenPDFContext.java    Sun Jun  8 07:21:00 2003
@@ -327,11 +327,12 @@
     public void handleKeyStroke(String stroke, AbstractMainNode2D main)
     { try {
        // synchronized(fen) XXX
-       p("s: "+stroke+", v: "+main);
+       if(dbg) p("s: "+stroke+", v: "+main);
 
        if (stroke.equals("Return")) {
+           if(dbg) p("Insert \\n");
            if (accursed[CURR]==null) return;
-
+           
            String acc = Nodes.toString(accursed[CURR]);
            ppAct.insertText(acc, cursorOffset[CURR], "\n");
            cursorOffset[CURR]++;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]