]> gitweb.factorcode.org Git - factor.git/commitdiff
wrap: remove line-ideal, we only ever use a max-width.
authorJohn Benediktsson <mrjbq7@gmail.com>
Thu, 2 Feb 2017 04:30:57 +0000 (20:30 -0800)
committerJohn Benediktsson <mrjbq7@gmail.com>
Thu, 2 Feb 2017 04:30:57 +0000 (20:30 -0800)
basis/ui/gadgets/paragraphs/paragraphs.factor
basis/wrap/strings/strings.factor
basis/wrap/words/words-tests.factor
basis/wrap/words/words.factor
basis/wrap/wrap-tests.factor
basis/wrap/wrap.factor

index e0ca89f44da93bfd46d749089e155fdf63f74046..3f7ecca32251a0c78c245113cbdf32aa942b1f53 100644 (file)
@@ -41,7 +41,7 @@ TUPLE: line words width height baseline ;
 
 : wrap-paragraph ( paragraph -- wrapped-paragraph )
     [ children>> [ gadget>word ] map ] [ margin>> ] bi
-    dup wrap-words [ <line> ] map! ;
+    wrap-words [ <line> ] map! ;
 
 : cached-wrapped ( paragraph -- wrapped-paragraph )
     dup wrapped>>
index ed3fc3967e16da6922c9885d90c86e9990ce3dbb..fa9d0f04d65d30aa94658e72454333eeaceb39d7 100644 (file)
@@ -20,7 +20,7 @@ IN: wrap.strings
 PRIVATE>
 
 : wrap-lines ( string width -- newlines )
-    [ split-lines ] dip '[ _ dup wrap join-elements ] map! concat ;
+    [ split-lines ] dip '[ _ wrap join-elements ] map! concat ;
 
 : wrap-string ( string width -- newstring )
     wrap-lines join-lines ;
index 4781a095eb7cd77a21382df9707c9bd02b462a62..3c5e6e3fdc3279869ee6d122d6b47ed656eca9d3 100644 (file)
@@ -3,8 +3,8 @@
 USING: tools.test wrap.words sequences ;
 IN: wrap.words.tests
 
-{ { } } [ f 35 35 wrap-words ] unit-test
-{ { } } [ { } 35 35 wrap-words ] unit-test
+{ { } } [ f 35 wrap-words ] unit-test
+{ { } } [ { } 35 wrap-words ] unit-test
 
 {
     {
@@ -25,7 +25,7 @@ IN: wrap.words.tests
         T{ wrapping-word f 3 2 t }
         T{ wrapping-word f 4 10 f }
         T{ wrapping-word f 5 10 f }
-    } 35 35 wrap-words [ { } like ] map
+    } 35 wrap-words [ { } like ] map
 ] unit-test
 
 {
@@ -51,7 +51,7 @@ IN: wrap.words.tests
         T{ wrapping-word f 3 9 t }
         T{ wrapping-word f 4 10 f }
         T{ wrapping-word f 5 10 f }
-    } 35 35 wrap-words [ { } like ] map
+    } 35 wrap-words [ { } like ] map
 ] unit-test
 
 {
@@ -79,5 +79,5 @@ IN: wrap.words.tests
         T{ wrapping-word f 3 9 t }
         T{ wrapping-word f 4 10 f }
         T{ wrapping-word f 5 10 f }
-    } 35 35 wrap-words [ { } like ] map
+    } 35 wrap-words [ { } like ] map
 ] unit-test
index 48a73243f51c192654ad3afcc22c410f006e7c59..46795883b4471c352f3a38da1a9bfc58b7ae9274 100644 (file)
@@ -37,5 +37,5 @@ C: <wrapping-word> wrapping-word
 
 PRIVATE>
 
-: wrap-words ( words line-max line-ideal -- lines )
-    [ words>elements ] 2dip wrap [ concat ] map! ;
+: wrap-words ( words width -- lines )
+    [ words>elements ] dip wrap [ concat ] map! ;
index 0e4c069b97f3f140786161ba1c058565fd623144..6d71138925d31af1e79ee0dc974a05cb48661bdc 100644 (file)
@@ -2,4 +2,4 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: wrap tools.test ;
 
-{ { } } [ { } 10 10 wrap ] unit-test
+{ { } } [ { } 10 wrap ] unit-test
index 26868676d9d8852651ebc46211651c6179cfb2bb..480081656424252479d4a23fab1248a69a29b32d 100644 (file)
@@ -13,15 +13,14 @@ C: <element> element
 : element-length ( element -- n )
     [ black>> ] [ white>> ] bi + ; inline
 
-TUPLE: paragraph line-max line-ideal lines head-width tail-cost ;
+TUPLE: paragraph line-max lines head-width tail-cost ;
 C: <paragraph> paragraph
 
 : if-one-line ( paragraph true false -- )
     [ dup lines>> 1list? ] 2dip if ; inline
 
 TYPED: top-fits? ( paragraph: paragraph -- ? )
-    [ head-width>> ]
-    [ [ line-ideal>> ] [ line-max>> ] if-one-line ] bi <= ; inline
+    [ head-width>> ] [ line-max>> ] bi <= ; inline
 
 TYPED: fits? ( paragraph: paragraph -- ? )
     ! Make this not count spaces at end
@@ -29,7 +28,7 @@ TYPED: fits? ( paragraph: paragraph -- ? )
 
 TYPED: paragraph-cost ( paragraph: paragraph -- cost )
     [ drop 0 ] [
-        [ head-width>> ] [ line-ideal>> - sq ] [ tail-cost>> ] tri +
+        [ head-width>> ] [ line-max>> - sq ] [ tail-cost>> ] tri +
     ] if-one-line ; inline
 
 : min-cost ( paragraphs -- paragraph )
@@ -37,7 +36,7 @@ TYPED: paragraph-cost ( paragraph: paragraph -- cost )
 
 TYPED: new-line ( paragraph: paragraph element: element -- paragraph )
     {
-        [ drop [ line-max>> ] [ line-ideal>> ] bi ]
+        [ drop line-max>> ]
         [ [ lines>> ] [ 1list ] bi* swons ]
         [ nip black>> ]
         [ drop paragraph-cost ]
@@ -53,19 +52,19 @@ TYPED: wrap-step ( paragraphs: array element: element -- paragraphs )
     2bi swap prefix { array } declare
     [ fits? ] filter ; inline
 
-: 1paragraph ( line-max line-ideal element -- paragraph )
+: 1paragraph ( line-max element -- paragraph )
     [ 1list 1list ] [ black>> ] bi 0 <paragraph> ;
 
 : post-process ( paragraph -- array )
     lines>> [ [ contents>> ] lmap>array ] lmap>array ;
 
-: initial-step ( line-max line-ideal elements -- elements paragraph )
-    reverse unclip [ -rot ] dip 1paragraph 1array ;
+: initial-step ( line-max elements -- elements paragraph )
+    reverse unclip swapd 1paragraph 1array ;
 
 PRIVATE>
 
-: wrap ( elements line-max line-ideal -- array )
-    rot [ 2drop { } ] [
+: wrap ( elements width -- array )
+    swap [ drop { } ] [
         initial-step
         [ wrap-step ] reduce
         min-cost