<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>nobigwords.ntxt.net &#187; formatowanie</title>
	<atom:link href="http://nobigwords.ntxt.net/tag/formatowanie/feed/" rel="self" type="application/rss+xml" />
	<link>http://nobigwords.ntxt.net</link>
	<description>not too big words not only about web</description>
	<lastBuildDate>Thu, 08 Dec 2011 23:35:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>formatowanie liczb w actionscript, cz.2</title>
		<link>http://nobigwords.ntxt.net/2009/01/12/formatowanie-liczb-w-actionscript-cz2/</link>
		<comments>http://nobigwords.ntxt.net/2009/01/12/formatowanie-liczb-w-actionscript-cz2/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 09:37:47 +0000</pubDate>
		<dc:creator>Piotr Tomaszewski</dc:creator>
				<category><![CDATA[actionscript]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[tekst]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[całkowita]]></category>
		<category><![CDATA[formatNumber]]></category>
		<category><![CDATA[formatowanie]]></category>
		<category><![CDATA[klasa]]></category>
		<category><![CDATA[liczba]]></category>
		<category><![CDATA[metoda]]></category>
		<category><![CDATA[number]]></category>
		<category><![CDATA[numberFormat]]></category>
		<category><![CDATA[zmiennoprzecinkowa]]></category>

		<guid isPermaLink="false">http://nobigwords.ntxt.net/?p=70</guid>
		<description><![CDATA[Przyjrzawszy się po raz drugi problemowi, popełniłem poniższą metodę, zastępując poprzednią. Trochę inne podejście, wszystko objaśnione w kodzie. Dla dobra publicznego publikuję: /** * metoda formatuje liczbę z dokładnością zadaną przez @resolution, * oddzielając tysiące znakiem z @thouSep a część ułamkową znakiem * z @decPoint. Na końcu dodaje jednostkę @unit * Np.: * Format.Number(123.456, ' [...]]]></description>
			<content:encoded><![CDATA[<p>
Przyjrzawszy się po raz drugi problemowi, popełniłem poniższą metodę, zastępując poprzednią.<br />
Trochę inne podejście, wszystko objaśnione w kodzie. Dla dobra publicznego publikuję:
</p>
<pre>
		/**
		 * metoda formatuje liczbę z dokładnością zadaną przez @resolution,
		 * oddzielając tysiące znakiem z @thouSep a część ułamkową znakiem
		 * z @decPoint. Na końcu dodaje jednostkę @unit
		 * Np.:
		 * Format.Number(123.456, ' zł', 0.1) zwraca '123,5 zł'
		 * Format.Number(123.456, ' zł', 1) zwraca '123 zł'
		 * Format.Number(123.456, ' m', 10) zwraca '120 m'
		 */
		public static function number(
			v:			Number,
			unit:		String = '',
			resolution:	Number = 1,
			decPoint:	String = ',',
			thouSep:	String = ' '
		):String
		{
			var r:		String = '';
			var rDec:	String = '';
			var rInt:	String = '';
			var i:		int;
			var rIntTmp:String;
			var len: 	int;

			v = Math.round(v / resolution) * resolution;
			r = v.toString();
			// pozycja kropki dziesiętnej
			var decPointPos:int = r.lastIndexOf('.');

			// część całkowita
			if(decPointPos > -1)
				rIntTmp	= r.substr(0, decPointPos);
			else
				rIntTmp = r;

			len	= rIntTmp.length;
			// przepisujemy po 3 cyfry, dodając separator
			while(len > 3){
				rInt = thouSep + rIntTmp.substr(len - 3, len) + rInt;
				rIntTmp = rIntTmp.substr(0, len - 3);
				len = rIntTmp.length;
			}
			rInt = rIntTmp + rInt;

			// część ułamkowa
			if(resolution < 1) {
				// liczba znaków w części ułamkowej powinna być taka jak długość części ułamkowej @resolution
				var decLength = (resolution - Math.floor(resolution)).toString().length - 2;
				// część ułamkowa
				if(decPointPos > -1){
					var x:int = decPointPos + 1 + decLength;
					rDec = r.substring(decPointPos + 1, decPointPos + 1 + decLength);
				}
				// dodajemy zera na końcu, jeśli trzeba
				var zerosCount:int = decLength - rDec.length;
				for(i = 0; i < zerosCount; i++) rDec += '0';
				rDec = decPoint + rDec;
			}
			r = rInt + rDec + unit;
			return r;
		}
</pre>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://nobigwords.ntxt.net/2009/01/12/formatowanie-liczb-w-actionscript-cz2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>wielokolumnowy układ tekstu w actionscript</title>
		<link>http://nobigwords.ntxt.net/2008/07/12/wielokolumnowy-uklad-tekstu-w-actionscript/</link>
		<comments>http://nobigwords.ntxt.net/2008/07/12/wielokolumnowy-uklad-tekstu-w-actionscript/#comments</comments>
		<pubDate>Sat, 12 Jul 2008 12:55:00 +0000</pubDate>
		<dc:creator>Piotr Tomaszewski</dc:creator>
				<category><![CDATA[actionscript]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[tekst]]></category>
		<category><![CDATA[formatowanie]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[kolumny]]></category>
		<category><![CDATA[layout]]></category>
		<category><![CDATA[układ tekstu]]></category>
		<category><![CDATA[wielokolumnowy]]></category>

		<guid isPermaLink="false">http://nobigwords.ntxt.net/?p=24</guid>
		<description><![CDATA[Jest taki przykład w dokumentacji Flexa, jest też trochę o tym na blogu niejakiego Daniela. Jednak oba przykłady kończą się tam, gdzie zaczyna się próba przelewania HTMLa przez kilka ramek tekstowych. Dla zwykłego, czystego tekstu to proste &#8211; zobaczyć ile się nie zmieściło w ramce n i wlać to do ramki n+1, aż do ostatniej [...]]]></description>
			<content:encoded><![CDATA[<p>Jest taki <a title="wielokolumnowy układ tekstu - Flex" href="http://danielmclaren.net/2008/03/multi-column-layouts-in-flash-and-flex" target="_blank">przykład </a>w dokumentacji Flexa, jest też trochę o tym <a href="http://danielmclaren.net/2008/03/multi-column-layouts-in-flash-and-flex" target="_blank">na blogu niejakiego Daniela</a>. Jednak oba przykłady kończą się tam, gdzie zaczyna się próba przelewania HTMLa przez kilka ramek tekstowych. Dla zwykłego, czystego tekstu to proste &#8211; zobaczyć ile się nie zmieściło w ramce n i wlać to do ramki n+1, aż do ostatniej ramki albo końca tekstu.</p>
<p>W przypadku HTMLa jednak Flash nas nie oszczędza. Obliczenie pozycji, na której powinien nastąpić podział jest skomplikowane, bo trzeba uwzględnić &#8211; niewidoczne w ramce &#8211; tagi, w dodatku pamiętać o automatycznym zamykaniu ich i otwieraniu w kolejnych ramkach. Metody klasy TextField jak getLineOffset() zwracają pozycję w czystym tekście, a podział musi nastąpić w odpowiadającym jej miejscu HTMLa. Na dokładkę HTML, jaki naprawdę jest w obiekcie TextField zupełnie niekoniecznie przypomina ten, który przypisaliśmy do htmlText! Dlatego trzeba najpierw wlać tekst do ramki:</p>
<p>naszTextField.htmlText = nowyHtml;</p>
<p>potem pobrać go do zmiennej i dalej pracować już nad nim:</p>
<p>processedHtml = naszTextField.htmlText;</p>
<p>a oto procedurka przelewająca:</p>
<p>protected function flow():void<br />
{<br />
var lastSplit:                int     = 0;<br />
var newSplit:                int     = 0;<br />
var tb:                        VTextBox;<br />
var tbNum:                    int        = linkedTextBoxes.length;<br />
var tagsHeap:                Array      = new Array();<br />
var opening:                String;<br />
var closing:                String;<br />
var tempText:                String;<br />
var remainder:                String;<br />
var remainLinesNum:            int;<br />
var lastVisibleLineIndex:    int;<br />
var cutIndex:                int;</p>
<p>// liczba stron, na jaką trzeba będzie podzielić tekst<br />
pagesNum             = 0;<br />
// pozycje podziału stron<br />
splitIndices         = new Array();<br />
splitIndices.push(0);<br />
// pozostała do wlania część tekstu &#8211; najpierw cały<br />
remainder = processedText;<br />
textPieces = new Array();</p>
<p>while(remainder.length &gt; 0) {<br />
textPieces[pagesNum] = new Array();<br />
for(var i:int = 0; i &lt; tbNum; i++) {<br />
// kolejna ramka tekstowa<br />
tb = linkedTextBoxes[i];<br />
trace(&#8216;strona &#8216; + pagesNum + &#8216;, box nr &#8216; + i);</p>
<p>// Jeśli tekst już się skończył, kolejne ramki bieżącej strony wypełniamy pustym tekstem.<br />
// Jeśli tekst jeszcze jest, wlewamy pozostałą część i badamy ile się zmieściło<br />
if(remainder.length == 0) {<br />
textPieces[pagesNum][i] = &#8221;;<br />
} else {<br />
// dodajemy na początek otwarcie wszystkich tagów kontynuowanych z poprzedniej ramki<br />
opening                 = Html.getOpeningHtml(tagsHeap);<br />
// wlewamy cały pozostały tekst<br />
tb.htmlText             = opening + remainder;<br />
// obliczamy, ile linii jest poza ramką<br />
remainLinesNum             = tb.maxScrollV &#8211; 1;<br />
trace(&#8216;poza ramką jest linii: &#8216; + remainLinesNum);</p>
<p>if(remainLinesNum == 0) {<br />
textPieces[pagesNum][i] = opening + remainder;<br />
remainder = &#8221;;<br />
} else {<br />
// obliczamy index ostatniej linii<br />
lastVisibleLineIndex     = tb.numLines &#8211; remainLinesNum &#8211; 1;<br />
trace(&#8216;indeks ostatniej linii: &#8216; + lastVisibleLineIndex);<br />
// pobieramy indeks ostatniego widocznego znaku<br />
cutIndex                 = tb.getLineOffset(lastVisibleLineIndex) + tb.getLineLength(lastVisibleLineIndex) &#8211; 1;<br />
trace(&#8216;cutIndex: &#8216; + cutIndex);<br />
trace(&#8216;cut rigth after &#8230;&#8217; + tb.getLineText(lastVisibleLineIndex));<br />
// pozostawiamy tylko mieszczącą się część tekstu<br />
tempText                = remainder.substring(0, cutIndex);<br />
remainder                = remainder.substr(cutIndex);<br />
// uzupełniamy listę otwartych tagów<br />
tagsHeap                 = Html.getTags(tempText, tagsHeap);<br />
// pobieramy tagi do zamknięcia w ramce<br />
closing = Html.getClosingHtml(tagsHeap);<br />
textPieces[pagesNum][i] = opening + tempText + closing;<br />
}<br />
}<br />
}<br />
pagesNum++;<br />
}</p>
<p>displayPage(0);<br />
}</p>
<p>A oto <a title="Nowe możliwości tekstu w actionscript  (Aero)." href="http://labs.adobe.com/technologies/flashplayer10/demos/videos/text.html" target="_blank">link do video</a>, w świetle którego całe powyższe rozważanie wkrótce straci sens.</p>
]]></content:encoded>
			<wfw:commentRss>http://nobigwords.ntxt.net/2008/07/12/wielokolumnowy-uklad-tekstu-w-actionscript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>osadzanie czcionek we Flashu i formatowanie tekstów (bold/italic)</title>
		<link>http://nobigwords.ntxt.net/2008/04/10/osadzanie-czcionek-we-flashu-i-formatowanie-tekstow-bolditalic/</link>
		<comments>http://nobigwords.ntxt.net/2008/04/10/osadzanie-czcionek-we-flashu-i-formatowanie-tekstow-bolditalic/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 22:32:21 +0000</pubDate>
		<dc:creator>Piotr Tomaszewski</dc:creator>
				<category><![CDATA[actionscript]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[AS]]></category>
		<category><![CDATA[błąd]]></category>
		<category><![CDATA[bold]]></category>
		<category><![CDATA[czcionki]]></category>
		<category><![CDATA[fonty]]></category>
		<category><![CDATA[formatowanie]]></category>
		<category><![CDATA[kerning]]></category>
		<category><![CDATA[letterSpacing]]></category>
		<category><![CDATA[odstępy między literami]]></category>
		<category><![CDATA[osadzanie]]></category>
		<category><![CDATA[problem]]></category>
		<category><![CDATA[texfield]]></category>
		<category><![CDATA[textformat]]></category>
		<category><![CDATA[zaszywanie]]></category>

		<guid isPermaLink="false">http://nobigwords.ntxt.net/2008/04/10/osadzanie-czcionek-we-flashu-i-formatowanie-tekstow-bolditalic/</guid>
		<description><![CDATA[A oto błąd we Flash CS3: kiedy wstawimy sobie dynamiczne pole tekstowe i zaszyjemy czcionki, postępując całkiem przepisowo, możemy doznać przykrego zaskoczenia. Jeśli np. lubimy napisy rozstrzelone i pogrubione jednocześnie, pewnie ustawiliśmy odstępy między literami na więcej niż 0, no i mamy zaznaczone wytłuszczenie. Może nawet pamiętaliśmy o stworzeniu czcionki w bibliotece i wybraliśmy ją [...]]]></description>
			<content:encoded><![CDATA[<p>A oto błąd we Flash CS3: kiedy wstawimy sobie dynamiczne pole tekstowe i zaszyjemy czcionki, postępując całkiem przepisowo, możemy doznać przykrego zaskoczenia. Jeśli np. lubimy napisy rozstrzelone i pogrubione jednocześnie, pewnie ustawiliśmy <em>odstępy między literami </em>na więcej niż 0, no i mamy zaznaczone <em>wytłuszczenie</em>. Może nawet pamiętaliśmy o stworzeniu czcionki w bibliotece i wybraliśmy ją dla naszego TextFielda. Cóż, kiedy rezultat będzie nieco inny niż zamierzony&#8230; Flash zgubi pogrubienie! Czcionka niby jest zaszyta, tekst jest widoczny po maskowaniu i obróceniu, ale nie jest wytłuszczony. Będzie tak, jeśli tworzymy obiekt zawierający to pole tekstowe dynamicznie (np. <em>var a:Naszobiekt = new NaszObiekt()</em>;) Jaka rada? Ano, odpuścić kerning na 0 w edytorze CS3, a ustawić go w ActionScriptcie:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #6699cc; font-weight: bold;">var</span> tf<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">TextFormat</span><span style="color: #000066; font-weight: bold;">;</span>
tf = label_tf<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">defaultTextFormat</span><span style="color: #000066; font-weight: bold;">;</span>
tf<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">letterSpacing</span> = <span style="color: #000000; font-weight:bold;">1.5</span><span style="color: #000066; font-weight: bold;">;</span>
label_tf<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">defaultTextFormat</span> = tf<span style="color: #000066; font-weight: bold;">;</span></pre></div></div>

<p><img src="http://nobigwords.ntxt.net/wp-content/uploads/2008/04/osadzanie_czcionek_we_flashu.jpg" alt="Opcje istotne przy osadzaniu czcionki dla dynamicznego pola tekstowego we Flash CS3" /></p>
]]></content:encoded>
			<wfw:commentRss>http://nobigwords.ntxt.net/2008/04/10/osadzanie-czcionek-we-flashu-i-formatowanie-tekstow-bolditalic/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

