| //////////////////////////////////////////////////////////////////////////////// |
| // |
| // Licensed to the Apache Software Foundation (ASF) under one or more |
| // contributor license agreements. See the NOTICE file distributed with |
| // this work for additional information regarding copyright ownership. |
| // The ASF licenses this file to You under the Apache License, Version 2.0 |
| // (the "License"); you may not use this file except in compliance with |
| // the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| // |
| //////////////////////////////////////////////////////////////////////////////// |
| package flashx.textLayout.utils |
| { |
| [ExcludeClass] |
| /** @private |
| * Internally, we work with Twips, which we consider to be 1/20 of |
| * a pixel. This is the same measurement as used within FTE (see the |
| * kTwipsPerPixel constant in flash/core/edittext.h). |
| * |
| * Note that conversion between Pixels and Twips does not round-trip |
| * due to the loss of precision in the conversion to Twips. |
| */ |
| public final class Twips |
| { |
| /** One twip in pixels */ |
| public static const ONE_TWIP:Number = .05; |
| /** Twips per pixels */ |
| public static const TWIPS_PER_PIXEL:int = 20; |
| /** Largest Twip value */ |
| public static const MAX_VALUE:int = int.MAX_VALUE; |
| /** Smallest Twip value */ |
| public static const MIN_VALUE:int = int.MIN_VALUE; |
| |
| /** Convert Pixels to Twips (truncated). @return twips */ |
| public static function to(n:Number):int |
| { |
| return int(n * 20); |
| } |
| |
| /** Convert Pixels to Twips (rounded). @return twips */ |
| public static function roundTo(n:Number):int |
| { |
| return int(Math.round(n) * 20); |
| } |
| |
| /** Convert Twips to pixels. @return pixels */ |
| public static function from(t:int):Number |
| { |
| return Number(t) / 20; |
| } |
| |
| |
| /** ceil a number to the nearest twip. @return pixels */ |
| public static function ceil(n:Number):Number |
| { |
| return Math.ceil(n*20.0)/20.0; |
| } |
| /** floor a number to the nearest twip. @return pixels */ |
| public static function floor(n:Number):Number |
| { |
| return Math.floor(n*20.0)/20.0; |
| } |
| /** round a number to the nearest twip. @return pixels */ |
| public static function round(n:Number):Number |
| { |
| return Math.round(n*20.0)/20.0; |
| } |
| } |
| } |