From 4b9ae9397e6f17bc1a83687cdc3bfa8df80555b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=A3=AE?= <690275538@qq.com> Date: Mon, 6 Nov 2017 15:21:28 +0800 Subject: [PATCH 01/15] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20=E5=BA=93=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E7=9A=84=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FairyGUI-as3/.flexLibProperties | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 FairyGUI-as3/.flexLibProperties diff --git a/FairyGUI-as3/.flexLibProperties b/FairyGUI-as3/.flexLibProperties new file mode 100644 index 0000000..1fbacb4 --- /dev/null +++ b/FairyGUI-as3/.flexLibProperties @@ -0,0 +1,6 @@ + + + + + + From 504c06104a9a10e6231968bfc96a55330f292476 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=A3=AE?= <690275538@qq.com> Date: Mon, 6 Nov 2017 16:13:43 +0800 Subject: [PATCH 02/15] =?UTF-8?q?=E5=90=88=E5=B9=B6=20ktv=20=E5=BA=93?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FairyGUI-as3/.actionScriptProperties | 18 +- FairyGUI-as3/bin/FairyGUI-as3.swc | Bin 232581 -> 716554 bytes FairyGUI-as3/libs/flTween.swc | Bin 0 -> 98284 bytes .../src/com/google/zxing/BarcodeFormat.as | 100 + .../src/com/google/zxing/Binarizer.as | 98 + .../src/com/google/zxing/BinaryBitmap.as | 141 + .../zxing/BufferedImageLuminanceSource.as | 166 + .../src/com/google/zxing/ChecksumException.as | 39 + .../src/com/google/zxing/ClassImportor.as | 77 + .../src/com/google/zxing/DecodeHintType.as | 83 + .../src/com/google/zxing/EncodeHintType.as | 44 + .../src/com/google/zxing/FormatException.as | 40 + .../src/com/google/zxing/LuminanceSource.as | 146 + .../src/com/google/zxing/MultiFormatReader.as | 197 + .../src/com/google/zxing/MultiFormatWriter.as | 58 + .../src/com/google/zxing/NotFoundException.as | 39 + FairyGUI-as3/src/com/google/zxing/Reader.as | 50 + .../src/com/google/zxing/ReaderException.as | 57 + FairyGUI-as3/src/com/google/zxing/Result.as | 155 + .../com/google/zxing/ResultMetadataType.as | 108 + .../src/com/google/zxing/ResultPoint.as | 149 + .../com/google/zxing/ResultPointCallback.as | 31 + FairyGUI-as3/src/com/google/zxing/Writer.as | 40 + .../src/com/google/zxing/WriterException.as | 34 + .../google/zxing/aztec/AztecDetectorResult.as | 57 + .../src/com/google/zxing/aztec/AztecReader.as | 101 + .../src/com/google/zxing/aztec/Point.as | 34 + .../com/google/zxing/aztec/decoder/Decoder.as | 469 ++ .../google/zxing/aztec/detector/Detector.as | 655 ++ .../result/AbstractDoCoMoResultParser.as | 43 + .../result/AddressBookDocomoResultParser.as | 74 + .../client/result/AddressBookParsedResult.as | 127 + .../client/result/BizcardResultParser.as | 98 + .../result/BookmarkDoCoMoResultParser.as | 49 + .../client/result/CalendarParsedResult.as | 143 + .../client/result/EmailAddressParsedResult.as | 71 + .../client/result/EmailAddressResultParser.as | 62 + .../client/result/EmailDoCoMoResultParser.as | 88 + .../zxing/client/result/GeoParsedResult.as | 109 + .../zxing/client/result/GeoResultParser.as | 65 + .../zxing/client/result/ISBNParsedResult.as | 42 + .../zxing/client/result/ISBNResultParser.as | 58 + .../zxing/client/result/ParsedResult.as | 69 + .../zxing/client/result/ParsedResultType.as | 53 + .../client/result/ProductParsedResult.as | 58 + .../client/result/ProductResultParser.as | 67 + .../zxing/client/result/ResultParser.as | 292 + .../zxing/client/result/SMSMMSResultParser.as | 104 + .../zxing/client/result/SMSParsedResult.as | 77 + .../zxing/client/result/TelParsedResult.as | 54 + .../zxing/client/result/TelResultParser.as | 46 + .../zxing/client/result/TextParsedResult.as | 51 + .../zxing/client/result/URIParsedResult.as | 114 + .../zxing/client/result/URIResultParser.as | 60 + .../zxing/client/result/URLTOResultParser.as | 48 + .../zxing/client/result/VCardResultParser.as | 173 + .../zxing/client/result/VEventResultParser.as | 59 + .../optional/AbstractMobileTagResultParser.as | 83 + .../optional/AbstractNDEFResultParser.as | 47 + .../optional/AddressBookAUResultParser.as | 74 + .../optional/MobileTagMMSResultParser.as | 54 + .../optional/MobileTagRichWebParsedResult.as | 63 + .../optional/MobileTagRichWebResultParser.as | 64 + .../optional/MobileTagSMSResultParser.as | 55 + .../MobileTagSimpleCalendarResultParser.as | 70 + .../MobileTagSimpleContactResultParser.as | 71 + .../MobileTagSimpleWebResultParser.as | 73 + .../optional/MobileTagTelResultParser.as | 53 + .../client/result/optional/NDEFRecord.as | 90 + .../optional/NDEFSmartPosterParsedResult.as | 65 + .../optional/NDEFSmartPosterResultParser.as | 82 + .../result/optional/NDEFTextResultParser.as | 57 + .../result/optional/NDEFURIResultParser.as | 96 + .../src/com/google/zxing/client/testClass.as | 1070 ++++ .../src/com/google/zxing/common/BitArray.as | 296 + .../src/com/google/zxing/common/BitMatrix.as | 387 ++ .../src/com/google/zxing/common/BitSource.as | 122 + .../src/com/google/zxing/common/ByteMatrix.as | 156 + .../google/zxing/common/CharacterSetECI.as | 115 + .../com/google/zxing/common/Collections.as | 59 + .../src/com/google/zxing/common/Comparator.as | 29 + .../com/google/zxing/common/DecoderResult.as | 67 + .../google/zxing/common/DefaultGridSampler.as | 90 + .../com/google/zxing/common/DetectorResult.as | 48 + .../src/com/google/zxing/common/ECI.as | 56 + .../zxing/common/GlobalHistogramBinarizer.as | 211 + .../com/google/zxing/common/GridSampler.as | 233 + .../google/zxing/common/HybridBinarizer.as | 190 + .../zxing/common/LocalBlockBinarizer.as | 179 + .../zxing/common/PerspectiveTransform.as | 135 + .../detector/MonochromeRectangleDetector.as | 217 + .../common/detector/WhiteRectangleDetector.as | 354 ++ .../zxing/common/flexdatatypes/ArrayList.as | 200 + .../zxing/common/flexdatatypes/Enumeration.as | 50 + .../zxing/common/flexdatatypes/HashTable.as | 169 + .../flexdatatypes/IllegalArgumentException.as | 27 + .../common/flexdatatypes/StringBuilder.as | 154 + .../zxing/common/flexdatatypes/Utils.as | 51 + .../google/zxing/common/reedsolomon/GF256.as | 162 + .../zxing/common/reedsolomon/GF256Poly.as | 310 + .../zxing/common/reedsolomon/GenericGF.as | 199 + .../zxing/common/reedsolomon/GenericGFPoly.as | 295 + .../common/reedsolomon/ReedSolomonDecoder.as | 209 + .../common/reedsolomon/ReedSolomonEncoder.as | 83 + .../reedsolomon/ReedSolomonException.as | 34 + .../com/google/zxing/common/zxingByteArray.as | 153 + .../zxing/datamatrix/DataMatrixReader.as | 172 + .../datamatrix/decoder/BitMatrixParser.as | 454 ++ .../zxing/datamatrix/decoder/DataBlock.as | 121 + .../decoder/DecodedBitStreamParser.as | 503 ++ .../zxing/datamatrix/decoder/Decoder.as | 145 + .../google/zxing/datamatrix/decoder/ECB.as | 43 + .../zxing/datamatrix/decoder/ECBlocks.as | 55 + .../zxing/datamatrix/decoder/Version.as | 192 + .../zxing/datamatrix/detector/Detector.as | 451 ++ .../detector/ResultPointsAndTransitions.as | 48 + .../ResultPointsAndTransitionsComparator.as | 35 + .../google/zxing/maxicode/MaxiCodeReader.as | 129 + .../zxing/maxicode/decoder/BitMatrixParser.as | 94 + .../decoder/DecodedBitStreamParser.as | 207 + .../google/zxing/maxicode/decoder/Decoder.as | 123 + .../google/zxing/multi/ByQuadrantReader.as | 90 + .../multi/GenericMultipleBarcodeReader.as | 137 + .../zxing/multi/MultipleBarcodeReader.as | 38 + .../zxing/multi/qrcode/QRCodeMultiReader.as | 76 + .../qrcode/detector/ModuleSizeComparator.as | 35 + .../multi/qrcode/detector/MultiDetector.as | 70 + .../detector/MultiFinderPatternFinder.as | 309 + .../com/google/zxing/oned/CodaBarReader.as | 264 + .../com/google/zxing/oned/Code128Reader.as | 481 ++ .../com/google/zxing/oned/Code128Writer.as | 203 + .../src/com/google/zxing/oned/Code39Reader.as | 337 + .../src/com/google/zxing/oned/Code39Writer.as | 85 + .../src/com/google/zxing/oned/Code93Reader.as | 276 + .../src/com/google/zxing/oned/EAN13Reader.as | 131 + .../src/com/google/zxing/oned/EAN13Writer.as | 98 + .../src/com/google/zxing/oned/EAN8Reader.as | 69 + .../src/com/google/zxing/oned/EAN8Writer.as | 92 + .../zxing/oned/EANManufacturerOrgSupport.as | 172 + .../src/com/google/zxing/oned/ITFReader.as | 353 ++ .../src/com/google/zxing/oned/ITFWriter.as | 74 + .../zxing/oned/MultiFormatOneDReader.as | 110 + .../zxing/oned/MultiFormatUPCEANReader.as | 94 + .../src/com/google/zxing/oned/OneDReader.as | 315 + .../src/com/google/zxing/oned/UPCAReader.as | 68 + .../src/com/google/zxing/oned/UPCAWriter.as | 71 + .../zxing/oned/UPCEANExtensionSupport.as | 197 + .../src/com/google/zxing/oned/UPCEANReader.as | 363 ++ .../src/com/google/zxing/oned/UPCEANWriter.as | 103 + .../src/com/google/zxing/oned/UPCEReader.as | 197 + .../zxing/oned/rss/AbstractRSSReader.as | 112 + .../google/zxing/oned/rss/DataCharacter.as | 39 + .../google/zxing/oned/rss/FinderPattern.as | 51 + .../src/com/google/zxing/oned/rss/Pair.as | 42 + .../com/google/zxing/oned/rss/RSS14Reader.as | 509 ++ .../src/com/google/zxing/oned/rss/RSSUtils.as | 159 + .../oned/rss/expanded/BitArrayBuilder.as | 85 + .../zxing/oned/rss/expanded/ExpandedPair.as | 71 + .../oned/rss/expanded/RSSExpandedReader.as | 582 ++ .../rss/expanded/decoders/AI013103decoder.as | 50 + .../rss/expanded/decoders/AI01320xDecoder.as | 58 + .../rss/expanded/decoders/AI01392xDecoder.as | 69 + .../rss/expanded/decoders/AI01393xDecoder.as | 78 + .../expanded/decoders/AI013x0x1xDecoder.as | 108 + .../rss/expanded/decoders/AI013x0xDecoder.as | 59 + .../rss/expanded/decoders/AI01AndOtherAIs.as | 59 + .../oned/rss/expanded/decoders/AI01decoder.as | 84 + .../expanded/decoders/AI01weightDecoder.as | 61 + .../decoders/AbstractExpandedDecoder.as | 87 + .../rss/expanded/decoders/AnyAIDecoder.as | 51 + .../expanded/decoders/BlockParsedResult.as | 55 + .../expanded/decoders/CurrentParsingState.as | 71 + .../oned/rss/expanded/decoders/DecodedChar.as | 53 + .../expanded/decoders/DecodedInformation.as | 67 + .../rss/expanded/decoders/DecodedNumeric.as | 81 + .../rss/expanded/decoders/DecodedObject.as | 45 + .../oned/rss/expanded/decoders/FieldParser.as | 304 + .../expanded/decoders/GeneralAppIdDecoder.as | 422 ++ .../com/google/zxing/pdf417/PDF417Reader.as | 196 + .../zxing/pdf417/decoder/BitMatrixParser.as | 1023 +++ .../pdf417/decoder/DecodedBitStreamParser.as | 663 ++ .../google/zxing/pdf417/decoder/Decoder.as | 161 + .../google/zxing/pdf417/detector/Detector.as | 513 ++ .../zxing/pdf417/encoder/BarcodeMatrix.as | 96 + .../google/zxing/pdf417/encoder/BarcodeRow.as | 93 + .../com/google/zxing/pdf417/encoder/PDF417.as | 757 +++ .../pdf417/encoder/PDF417ErrorCorrection.as | 211 + .../pdf417/encoder/PDF417HighLevelEncoder.as | 591 ++ .../zxing/pdf417/encoder/PDF417Writer.as | 123 + .../com/google/zxing/qrcode/QRCodeReader.as | 181 + .../com/google/zxing/qrcode/QRCodeWriter.as | 111 + .../zxing/qrcode/decoder/BitMatrixParser.as | 234 + .../google/zxing/qrcode/decoder/DataBlock.as | 138 + .../google/zxing/qrcode/decoder/DataMask.as | 62 + .../zxing/qrcode/decoder/DataMask000.as | 30 + .../zxing/qrcode/decoder/DataMask001.as | 32 + .../zxing/qrcode/decoder/DataMask010.as | 35 + .../zxing/qrcode/decoder/DataMask011.as | 31 + .../zxing/qrcode/decoder/DataMask100.as | 33 + .../zxing/qrcode/decoder/DataMask101.as | 35 + .../zxing/qrcode/decoder/DataMask110.as | 35 + .../zxing/qrcode/decoder/DataMask111.as | 32 + .../zxing/qrcode/decoder/DataMaskBase.as | 44 + .../qrcode/decoder/DecodedBitStreamParser.as | 411 ++ .../google/zxing/qrcode/decoder/Decoder.as | 181 + .../com/google/zxing/qrcode/decoder/ECB.as | 46 + .../google/zxing/qrcode/decoder/ECBlocks.as | 70 + .../qrcode/decoder/ErrorCorrectionLevel.as | 79 + .../zxing/qrcode/decoder/FormatInformation.as | 167 + .../com/google/zxing/qrcode/decoder/Mode.as | 162 + .../google/zxing/qrcode/decoder/Version.as | 549 ++ .../zxing/qrcode/detector/AlignmentPattern.as | 62 + .../qrcode/detector/AlignmentPatternFinder.as | 297 + .../zxing/qrcode/detector/CenterComparator.as | 79 + .../detector/ClosestToAverageComparator.as | 37 + .../google/zxing/qrcode/detector/Detector.as | 404 ++ .../zxing/qrcode/detector/FinderPattern.as | 78 + .../qrcode/detector/FinderPatternFinder.as | 678 ++ .../qrcode/detector/FinderPatternInfo.as | 49 + .../detector/FurthestFromAverageComparator.as | 36 + .../google/zxing/qrcode/encoder/BitVector.as | 203 + .../google/zxing/qrcode/encoder/BlockPair.as | 40 + .../google/zxing/qrcode/encoder/Encoder.as | 715 +++ .../google/zxing/qrcode/encoder/MaskUtil.as | 227 + .../google/zxing/qrcode/encoder/MatrixUtil.as | 558 ++ .../com/google/zxing/qrcode/encoder/QRCode.as | 216 + FairyGUI-as3/src/fairygui/GButton.as | 32 +- FairyGUI-as3/src/fairygui/GComboBox.as | 26 + FairyGUI-as3/src/fairygui/GComponent.as | 1206 ++-- FairyGUI-as3/src/fairygui/GImage.as | 79 +- FairyGUI-as3/src/fairygui/GLabel.as | 22 + FairyGUI-as3/src/fairygui/GList.as | 5559 +++++++++-------- FairyGUI-as3/src/fairygui/GLoader.as | 33 +- FairyGUI-as3/src/fairygui/GMovieClip.as | 1 + FairyGUI-as3/src/fairygui/GObject.as | 108 +- FairyGUI-as3/src/fairygui/GProgressBar.as | 444 +- FairyGUI-as3/src/fairygui/GRichTextField.as | 8 +- FairyGUI-as3/src/fairygui/GSlider.as | 50 +- FairyGUI-as3/src/fairygui/GTextField.as | 99 +- FairyGUI-as3/src/fairygui/GTextInput.as | 6 + FairyGUI-as3/src/fairygui/GearBase.as | 24 + FairyGUI-as3/src/fairygui/GearText.as | 7 + FairyGUI-as3/src/fairygui/PackageItem.as | 15 +- FairyGUI-as3/src/fairygui/ScrollPane.as | 13 +- FairyGUI-as3/src/fairygui/UIConfig.as | 5 + FairyGUI-as3/src/fairygui/UIPackage.as | 209 +- .../src/fairygui/text/RichTextField.as | 8 +- FairyGUI-as3/src/fairygui/utils/CharSize.as | 10 +- FairyGUI-as3/src/ktv/font/FontItem.as | 13 + FairyGUI-as3/src/ktv/font/ManagerFont.as | 240 + FairyGUI-as3/src/ktv/gifv/GIFBoy.as | 233 + FairyGUI-as3/src/ktv/gifv/GIFDecoder.as | 954 +++ FairyGUI-as3/src/ktv/gifv/GIFEvent.as | 15 + FairyGUI-as3/src/ktv/inter/IChangLang.as | 10 + FairyGUI-as3/src/ktv/managers/Interface.as | 54 + FairyGUI-as3/src/ktv/managers/ManagerLang.as | 45 + FairyGUI-as3/src/ktv/managers/ManagerLayer.as | 157 + FairyGUI-as3/src/ktv/managers/ManagerSkin.as | 84 + FairyGUI-as3/src/ktv/message/local/UIEvent.as | 35 + .../ktv/message/local/UIEventDispatcher.as | 45 + .../src/ktv/message/socket/SocketEvent.as | 29 + .../src/ktv/message/socket/SocketManager.as | 247 + .../src/ktv/message/socket/SocketMessage.as | 60 + .../src/ktv/morn/core/handlers/Handler.as | 37 + .../ktv/morn/core/managers/LoaderManager.as | 282 + .../src/ktv/morn/core/managers/LogManager.as | 524 ++ .../morn/core/managers/LogManagerWindow.as | 153 + .../morn/core/managers/MassLoaderManager.as | 273 + .../src/ktv/morn/core/managers/ResLoader.as | 364 ++ FairyGUI-as3/src/ktv/ui/KLoader.as | 169 + FairyGUI-as3/src/ktv/utils/XmlToJson.as | 132 + FairyGUI-as3/src/ktv/utils/qrcode/Qrcode.as | 84 + .../src/ktv/utils/transition/MCTransition.as | 108 + 273 files changed, 43461 insertions(+), 3593 deletions(-) create mode 100644 FairyGUI-as3/libs/flTween.swc create mode 100644 FairyGUI-as3/src/com/google/zxing/BarcodeFormat.as create mode 100644 FairyGUI-as3/src/com/google/zxing/Binarizer.as create mode 100644 FairyGUI-as3/src/com/google/zxing/BinaryBitmap.as create mode 100644 FairyGUI-as3/src/com/google/zxing/BufferedImageLuminanceSource.as create mode 100644 FairyGUI-as3/src/com/google/zxing/ChecksumException.as create mode 100644 FairyGUI-as3/src/com/google/zxing/ClassImportor.as create mode 100644 FairyGUI-as3/src/com/google/zxing/DecodeHintType.as create mode 100644 FairyGUI-as3/src/com/google/zxing/EncodeHintType.as create mode 100644 FairyGUI-as3/src/com/google/zxing/FormatException.as create mode 100644 FairyGUI-as3/src/com/google/zxing/LuminanceSource.as create mode 100644 FairyGUI-as3/src/com/google/zxing/MultiFormatReader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/MultiFormatWriter.as create mode 100644 FairyGUI-as3/src/com/google/zxing/NotFoundException.as create mode 100644 FairyGUI-as3/src/com/google/zxing/Reader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/ReaderException.as create mode 100644 FairyGUI-as3/src/com/google/zxing/Result.as create mode 100644 FairyGUI-as3/src/com/google/zxing/ResultMetadataType.as create mode 100644 FairyGUI-as3/src/com/google/zxing/ResultPoint.as create mode 100644 FairyGUI-as3/src/com/google/zxing/ResultPointCallback.as create mode 100644 FairyGUI-as3/src/com/google/zxing/Writer.as create mode 100644 FairyGUI-as3/src/com/google/zxing/WriterException.as create mode 100644 FairyGUI-as3/src/com/google/zxing/aztec/AztecDetectorResult.as create mode 100644 FairyGUI-as3/src/com/google/zxing/aztec/AztecReader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/aztec/Point.as create mode 100644 FairyGUI-as3/src/com/google/zxing/aztec/decoder/Decoder.as create mode 100644 FairyGUI-as3/src/com/google/zxing/aztec/detector/Detector.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/AbstractDoCoMoResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/AddressBookDocomoResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/AddressBookParsedResult.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/BizcardResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/BookmarkDoCoMoResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/CalendarParsedResult.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/EmailAddressParsedResult.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/EmailAddressResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/EmailDoCoMoResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/GeoParsedResult.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/GeoResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/ISBNParsedResult.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/ISBNResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/ParsedResult.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/ParsedResultType.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/ProductParsedResult.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/ProductResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/ResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/SMSMMSResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/SMSParsedResult.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/TelParsedResult.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/TelResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/TextParsedResult.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/URIParsedResult.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/URIResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/URLTOResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/VCardResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/VEventResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/optional/AbstractMobileTagResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/optional/AbstractNDEFResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/optional/AddressBookAUResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagMMSResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagRichWebParsedResult.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagRichWebResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagSMSResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagSimpleCalendarResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagSimpleContactResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagSimpleWebResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagTelResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/optional/NDEFRecord.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/optional/NDEFSmartPosterParsedResult.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/optional/NDEFSmartPosterResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/optional/NDEFTextResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/result/optional/NDEFURIResultParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/client/testClass.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/BitArray.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/BitMatrix.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/BitSource.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/ByteMatrix.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/CharacterSetECI.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/Collections.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/Comparator.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/DecoderResult.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/DefaultGridSampler.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/DetectorResult.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/ECI.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/GlobalHistogramBinarizer.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/GridSampler.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/HybridBinarizer.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/LocalBlockBinarizer.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/PerspectiveTransform.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/detector/MonochromeRectangleDetector.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/detector/WhiteRectangleDetector.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/flexdatatypes/ArrayList.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/flexdatatypes/Enumeration.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/flexdatatypes/HashTable.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/flexdatatypes/IllegalArgumentException.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/flexdatatypes/StringBuilder.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/flexdatatypes/Utils.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/reedsolomon/GF256.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/reedsolomon/GF256Poly.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/reedsolomon/GenericGF.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/reedsolomon/GenericGFPoly.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/reedsolomon/ReedSolomonDecoder.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/reedsolomon/ReedSolomonEncoder.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/reedsolomon/ReedSolomonException.as create mode 100644 FairyGUI-as3/src/com/google/zxing/common/zxingByteArray.as create mode 100644 FairyGUI-as3/src/com/google/zxing/datamatrix/DataMatrixReader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/BitMatrixParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/DataBlock.as create mode 100644 FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/DecodedBitStreamParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/Decoder.as create mode 100644 FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/ECB.as create mode 100644 FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/ECBlocks.as create mode 100644 FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/Version.as create mode 100644 FairyGUI-as3/src/com/google/zxing/datamatrix/detector/Detector.as create mode 100644 FairyGUI-as3/src/com/google/zxing/datamatrix/detector/ResultPointsAndTransitions.as create mode 100644 FairyGUI-as3/src/com/google/zxing/datamatrix/detector/ResultPointsAndTransitionsComparator.as create mode 100644 FairyGUI-as3/src/com/google/zxing/maxicode/MaxiCodeReader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/maxicode/decoder/BitMatrixParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/maxicode/decoder/DecodedBitStreamParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/maxicode/decoder/Decoder.as create mode 100644 FairyGUI-as3/src/com/google/zxing/multi/ByQuadrantReader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/multi/GenericMultipleBarcodeReader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/multi/MultipleBarcodeReader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/multi/qrcode/QRCodeMultiReader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/multi/qrcode/detector/ModuleSizeComparator.as create mode 100644 FairyGUI-as3/src/com/google/zxing/multi/qrcode/detector/MultiDetector.as create mode 100644 FairyGUI-as3/src/com/google/zxing/multi/qrcode/detector/MultiFinderPatternFinder.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/CodaBarReader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/Code128Reader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/Code128Writer.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/Code39Reader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/Code39Writer.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/Code93Reader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/EAN13Reader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/EAN13Writer.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/EAN8Reader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/EAN8Writer.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/EANManufacturerOrgSupport.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/ITFReader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/ITFWriter.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/MultiFormatOneDReader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/MultiFormatUPCEANReader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/OneDReader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/UPCAReader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/UPCAWriter.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/UPCEANExtensionSupport.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/UPCEANReader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/UPCEANWriter.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/UPCEReader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/AbstractRSSReader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/DataCharacter.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/FinderPattern.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/Pair.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/RSS14Reader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/RSSUtils.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/BitArrayBuilder.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/ExpandedPair.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/RSSExpandedReader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI013103decoder.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI01320xDecoder.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI01392xDecoder.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI01393xDecoder.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI013x0x1xDecoder.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI013x0xDecoder.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI01AndOtherAIs.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI01decoder.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI01weightDecoder.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AbstractExpandedDecoder.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AnyAIDecoder.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/BlockParsedResult.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/CurrentParsingState.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/DecodedChar.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/DecodedInformation.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/DecodedNumeric.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/DecodedObject.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/FieldParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/GeneralAppIdDecoder.as create mode 100644 FairyGUI-as3/src/com/google/zxing/pdf417/PDF417Reader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/pdf417/decoder/BitMatrixParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/pdf417/decoder/DecodedBitStreamParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/pdf417/decoder/Decoder.as create mode 100644 FairyGUI-as3/src/com/google/zxing/pdf417/detector/Detector.as create mode 100644 FairyGUI-as3/src/com/google/zxing/pdf417/encoder/BarcodeMatrix.as create mode 100644 FairyGUI-as3/src/com/google/zxing/pdf417/encoder/BarcodeRow.as create mode 100644 FairyGUI-as3/src/com/google/zxing/pdf417/encoder/PDF417.as create mode 100644 FairyGUI-as3/src/com/google/zxing/pdf417/encoder/PDF417ErrorCorrection.as create mode 100644 FairyGUI-as3/src/com/google/zxing/pdf417/encoder/PDF417HighLevelEncoder.as create mode 100644 FairyGUI-as3/src/com/google/zxing/pdf417/encoder/PDF417Writer.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/QRCodeReader.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/QRCodeWriter.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/decoder/BitMatrixParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataBlock.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask000.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask001.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask010.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask011.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask100.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask101.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask110.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask111.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMaskBase.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DecodedBitStreamParser.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/decoder/Decoder.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/decoder/ECB.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/decoder/ECBlocks.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/decoder/ErrorCorrectionLevel.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/decoder/FormatInformation.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/decoder/Mode.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/decoder/Version.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/detector/AlignmentPattern.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/detector/AlignmentPatternFinder.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/detector/CenterComparator.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/detector/ClosestToAverageComparator.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/detector/Detector.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/detector/FinderPattern.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/detector/FinderPatternFinder.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/detector/FinderPatternInfo.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/detector/FurthestFromAverageComparator.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/encoder/BitVector.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/encoder/BlockPair.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/encoder/Encoder.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/encoder/MaskUtil.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/encoder/MatrixUtil.as create mode 100644 FairyGUI-as3/src/com/google/zxing/qrcode/encoder/QRCode.as create mode 100644 FairyGUI-as3/src/ktv/font/FontItem.as create mode 100644 FairyGUI-as3/src/ktv/font/ManagerFont.as create mode 100644 FairyGUI-as3/src/ktv/gifv/GIFBoy.as create mode 100644 FairyGUI-as3/src/ktv/gifv/GIFDecoder.as create mode 100644 FairyGUI-as3/src/ktv/gifv/GIFEvent.as create mode 100644 FairyGUI-as3/src/ktv/inter/IChangLang.as create mode 100644 FairyGUI-as3/src/ktv/managers/Interface.as create mode 100644 FairyGUI-as3/src/ktv/managers/ManagerLang.as create mode 100644 FairyGUI-as3/src/ktv/managers/ManagerLayer.as create mode 100644 FairyGUI-as3/src/ktv/managers/ManagerSkin.as create mode 100644 FairyGUI-as3/src/ktv/message/local/UIEvent.as create mode 100644 FairyGUI-as3/src/ktv/message/local/UIEventDispatcher.as create mode 100644 FairyGUI-as3/src/ktv/message/socket/SocketEvent.as create mode 100644 FairyGUI-as3/src/ktv/message/socket/SocketManager.as create mode 100644 FairyGUI-as3/src/ktv/message/socket/SocketMessage.as create mode 100644 FairyGUI-as3/src/ktv/morn/core/handlers/Handler.as create mode 100644 FairyGUI-as3/src/ktv/morn/core/managers/LoaderManager.as create mode 100644 FairyGUI-as3/src/ktv/morn/core/managers/LogManager.as create mode 100644 FairyGUI-as3/src/ktv/morn/core/managers/LogManagerWindow.as create mode 100644 FairyGUI-as3/src/ktv/morn/core/managers/MassLoaderManager.as create mode 100644 FairyGUI-as3/src/ktv/morn/core/managers/ResLoader.as create mode 100644 FairyGUI-as3/src/ktv/ui/KLoader.as create mode 100644 FairyGUI-as3/src/ktv/utils/XmlToJson.as create mode 100644 FairyGUI-as3/src/ktv/utils/qrcode/Qrcode.as create mode 100644 FairyGUI-as3/src/ktv/utils/transition/MCTransition.as diff --git a/FairyGUI-as3/.actionScriptProperties b/FairyGUI-as3/.actionScriptProperties index 666a251..3722fde 100644 --- a/FairyGUI-as3/.actionScriptProperties +++ b/FairyGUI-as3/.actionScriptProperties @@ -1,15 +1,29 @@ - + + + + + + + + + + + + + + + - + diff --git a/FairyGUI-as3/bin/FairyGUI-as3.swc b/FairyGUI-as3/bin/FairyGUI-as3.swc index be36485712775545246bc2007e9768740059127b..3615cbc2f6980a1962d37762b56c8df79f1d6b94 100644 GIT binary patch literal 716554 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%0D&8UjjuXXhF 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
wy?xTGayhe}!}iwYa9STVBR8?cO)UFju)cl_ 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
4g5ahgGBK*+Ls#nwR0I!09 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℘c@D9(jFr#3fXVc#SZR!90c@}_M=UElzFAlsz0@Lh+?W~W` z$}>`@rVh0L;ye$v)n(`Xn+uJe_E1|>QYsF$DK>!#8zi@203IGZY6q}4lCY*AFgZDa z3A+g0TMo6;u-49pzyv;B30B^;LoHEP=iy{KLD~-UCvm`yu*s0}I43rp=BOKbXGh&% zf*M97FI%vxxUC1~)FAXh@){gNb4Utkii1ej9D-@-86ZVVQeB2!4}Q?6>bW+X zl80Y5K$NCu$jz_Y$kC=xFb7RC4RYK5T>Q} z`$UfYKx9&JpLHpo+jk;U%ZrmPmmK`KgN zAfyU*XDVTLrc$Ydtr?hRQL12nrV3@M;QgVxvJ{Mr637iyz}G{GQdpBZvg3%Wy2gO_IpmB#BHydpi8VD64VmajmuqgkYEB*pa({5gs>PPgs=o* zDMCKNGK2zzLWJcAMF=YpRw5K5lpvHMlp&NOR3KC$R3TI&)F9NZWqIq6u7?#`Y$#Z` zb07+cV;s&rVL8VV1+oD2p0rf_CXrou9^!dW?43d_t6XXj)q zENf19PR<;K(R<1Tom8HaBM7DULg9!grLHMyMfa4nqGw845#B6FS`o}4@@5fI6W%OB zTEd$}$k7Xzfo?su!x_?h;qB4m40gCeP)7%w-j&wj4!L^WVAi|SJ3JwGuLr&@JQ*F{ zkf+xR_n_X)4qwRI>w}X}Usi`d1Z8y`xcqZEQbPXT6db!!aykMb=&i$PXkczfYADbP z?-=Q+^E!f|)ZQR0YX|3dq=kaLX)t1)wxAl z$ljorcyDqqNev0+CV*Dkxc9(;TLbPrs&xxmwT@~t6x#aPU9DE-MQgRKHUHmp&U|j1F_|gQHCiM>n00pLF9JzZ4#ADuFS9 z(UH*wWY8%k6KTaebv4f5gI4?YHqi1x4Ltf}FlP3WB!@~o?T{I%cD zdVT8)w~fkwe%6Qoy!T+w;+JN9vizyB=l$iySszU*v^_AoXV1nsy>cFh35DKqn28JK z)+|}IVAXm{$%MYBX34x&^DU`llD=s5;;Pye!kQD_~{3J0~5XcVe(GM(A~jn{|+w(Pl0iFfLwi zh?X2$D2uX|++!$5)LBQHP(P?H-->&Q6_!2EvgaJV;Qq!bbuCc^bnq%VvO!+9ATFnF z*h-@dZCh$Lb0sxL>UW@KU9e4DwOQ9Oj=GjD)`%Txn7Otk)|7vQ{s8f>B@MG5B%0F1 zPGj4Pk15|^1TwZj0_*0+Hf3{gyMhbUV=Oy9)<-^%6qoaJ2!zW)!&JEfvO!%;E2RY9 zilQPKP{>DADogko1LEsQR9#^y3C{ybAhcRkmg%BHLHt)zDil&dWE~{W6&FK{U2zFS z;1ySbl28brKBBlZT(nfmC6!R%1a%jQT1G~q4eI7bK^H{q7@cK6ngnR{!4&|ZE0Cl` z>Mq2=gH9cE)iTO3aL^b-XAKBGgZeoGQqS@Yxqu{{$&hqbVi>r8nPt$m%K}4QWXLN? zmYKW(Yy=waSM2x)eHKLVCxP0}1qwgcXk5ck_;?x=dkLz_-gR^@y)|GAKyZJC*WI*ZwbDo_?F>Yj&B9N zRruE6TZ?ZUzV#=v>XTpxn2}*K@MFnAH#PcbqTMr~IRl!>J#G@ImH9<4XPFq=MEj`4)96D|Bm2ZlS2L zPTRX4kU84T@lY887LM+SGw3w4x_7j_%Ng>y(&~xGtfql_p$3_8*@fFJGsoK}dIHxo z=43dzmpr*V9A5HFvAPSLwIsYx!zIH=P^OuApn>$e zkvhMt$DathpbMmUunVCaBnfsApy+96&q_ckq4rFWN(FQm!kbcJN73dD6L{cDV0ClV-XSY9%p?)U|cRE82LtVIx1ZNO*5R)>RGYDhDaI^P;Cf*?NE#N#8S1>5eGG8U;}~(mb;X*i3U_GtxRK?RcbZ zp|qva7Ld6bP(##VylbA?-Nh9Iw{~N0yHxal6%w`!pzY8`&bE?*o^9qvSXYsB#sM~+;odb}{^0>O zLjg1QnQNqujD6-0>DCt4tm20Dc78)UQw2BoIXp=7Y^Bo9V_1o_PAU;}%Ms^pT(fp# ztU9^htHIvg2?0z9ldUj^2)mHN6e}!Igk6NoTd#UQ$xT6|iomlyxU}|4XLn+CqO0A# zxDiGgE$wW6G24q0cr9ahxn4DGHDaz{SU*Tn_m%W>$F1RIBNy!!LYpQ?S7DVto?XSv zs~I6@4>zvthMFD!D7s@$j1g$rIl~wy_|1r96a-*!f?or`#1E+>5@=O7w${ZicZVU+ zq9pwUTI4$#ffl71M4%-Cz7v5KWyMd1p$W7oGM|j$j$Pl8K+7srJg5~G;O3{O5C$Ev zD9Sop;VP)GlCE2o^#88}T4{p_v_=df(8?T=Knu6Fv;&hy%lL0`hnYMqf!3JeUJUT^ z3tf%)QN9`MufevKxOU1U>HGhk`$Cj>k|0|@iIc6LB&vX)$FV8^TjZ8Pxus|^qVh!A zJf1dBq{Z+3SX!dbJ4%x2NP@9)}t_-RMaHK0o-96hyRl`$L|6C&d0K}E(eprGj@ z)*`yNRMSB$o$kiV9?tCi*v^TrKwgTge;gk{Zl!f7aNBSj2){*J>Or(d?}1e~h*C_9 zw3J34_jJG(q6?KhU@VvMzNBTXlfWAy$Utw$DoB}7!@+C?{P$Hqa{>KYgPs`hkheod zI_{PGt8T4BC{6s!m~mKhIk5g$7XfVgkif3_zhXY%bvh|d-Yn`gW2ia-GmSd_yijP_ zMS=l6!4Jvt;nrorHatBvA4Z{bXoJ)7a9f6-ku5e~ufW&ay+18NmV z%>h_C93mgnM5rt&pLA?>OC72j5G7w~VAZyP4m&YDm2PuY&|n*!oR(BM+THjW! zVRM0B#!}3GOEyh^@E+8CR z3&@DQ{)&mZa@;TzwH{nE;x?zB2Pj+zSr3P5E#>nRBn4CpeqSYVezR z9-Ge=u!ZadwumieOW0C~m|D(Ou$62TTg}$6wQL<*&o-nI{FU<;_*WGTC}2FBz$W5% zQ8t^za`0m&7qmG({A9>u`8aFNU^CfqIDO3mk@Sh|Bo<&BS#9d7nsuuVt7(vhSRJcp zVT>b${SX@iI|XV2H?wBe!nUwep%f;{+E_c=%C@oXxRp9RjRWFUDjra!@3S-5nd}D^ ziI3!pw6<)nZV0wkV*rkRS?X9;HMh2AN%hjXHLj|a)e9C_9tSmFggbe;!tJhFvU0(? z!XhimT{Cxqzp8pw%!~1;fm&tDd-ea-LfVfs{ahkLA`RA2Ekvq-IcHal#7j_mt!f3! zf4J2}@hiidHeXvhiX})Phg*EU3z3+eYl7G?vRwkj)$?aQXW;cZ{ge_dvGYt)SH262)75fq6bNX zqV?!uQLGJCJRPTA(>TT5;e7S|gL#w{z*=m?{V-JeZ3(xoY-o(M8Ia>Zs+Mh}u^D3* ztvpIo2KGGKVP(%cE~`Lnvc`$I$B!*29V3rb^##pPINc^f%El!6TUxR5#g!%}VSg1t zNY_R*w5z}S3YQ<#m12$b0Q{gMrBTP<2%@Bi1FsKguok7}Ctx>@hF5KCp`fTPQjHn9 z3osv`+`H^plzSgPG=w-l^y4amM4{-x=9Vn=tW2CfFr=-J+SIO)&T=b zVhPp%+a{vnYyV?as~WVLIigsCn(GOVU6J;tCd_4y@|-5?@I&UYFC4LnHE5<7?ad(W zscUdS84|6Yyr}tMNlHi^@Um;ksy=qFKV&SOrO%;+zJhAEt~Os z2Ld6uP8$aV($qACX@mODRd4X_Ffv|fy%j;HiES;d^%)_tjl}%1`X_IRhTH3*VUj8< zr0BSabZ$+swUM@jHU9w|8KN(i|1ZD}jrm9VB@IqH;<>9NolsEcB=kR7s-H;f6Df_y z6CEDYil9Xb)ZJw;$_w>+zLkO)x}XqxoeGN7ijtBts6;9+fl8!OJk)80P@z-`6I!3N zLg-Jb)SyPHvLJovIv&dt9Uk|AZP{BuZ6u6-}T^jzL{$Tf_5B* zH03~@53|(y$Unyu8MN%kzhd@ZGNQT;ODuEj#jInCGSQuwcpd9FwKXbFawqO47dh^W zIUXd3GHK$(v5&Hj8==vfM?Wq?LEiT)x!UB36DRIv9nV2wkR-iGw-8||{Uruj?JqNK zy&|kvh4oWmy(X;Jh4qH8-W1l)g!PuN-WFDuu)2lSBdlIwy(6r5g|$yu`-Sxj_8!&c ze}wOS#(dN44v0O029Md0BY_K;*)lAq%vNB@>TDI3V)(U*bOU4a>k~mNrP=+)L|nq? z4!><8h@}jt-#!t**%$PM ze0B85lYO`B*V&q^Al_9Q)VUiCh_VA|SEE(~(k@1%UEkCFAnlTgwCfaO9!R^OZR7xJ zvdsr+mrA5vo9zog+NBX`SF>XwNW1ig1YE;0&8DdDCv-3jkma!0gsn0^so*O zUgK5~mu?h9>6l1%a}7j}!=FmRFxLi>_^WP`Lec+%Ai(cYk`n{TJ-v9_%r#H){DuNH z22v1^f`D4j+Y}HCq#_^{0U^)x6i^>XLqHk=!kz~xU{fHSo@xB)O0L=9xq*Vd7s&A8 zK}GLen86g!`6z#VNUt-@4J0xlWLQG_NV0Pv;D|V^5ay{y$jPL|-U^XDg$Su5bu3nh z;=vt=83`mr608u_gUg*9lEIm+d2j)lt=WuBP~2-deSH;ueGB^fHuUwK($_~s_)S*- zn9b-K$f>@c1mz}^a8o?!;3eqctx2zb+h?|bLtvy=awEdrLT}-tSgzR`$n5U*kCyNd zHO4EAG9)Rh!$V42LRyC>Yhfk{!U3&?qW(t3;BFU>U|?$iOT($e($LCaL}eJ4GUash z^qj4bTfxT(uVj}o^^9(>%|DJ2Q^J|_ewqq~aPtS~$SWB2B5^9u_P|GcN)wgT`TA!ucK0JDyd5dMPFUKtR2W z(NNEarW1sHD8iub1j9BT&t?ewGvtE+)>WdW-Z54+Jx&0+ni71(;*$E|`xri=e)s$Z znXaSwzcAiI*Rx5~k?$b*1`7U!rIK2U8&Ss{qTx4zkX`a!#r#=Nx&e$eZ>DsgigdRi z-8CZJtpn4Yi*&b9y3a)2I~k$nd~+9tf$EZaZZ{+3op0VwVWtSXgAuaMH}9mdgN&4# zaE_9D$^SV^^daB<U4Zqr|Pgcohm(rb-ERr`3T#fknaGyfhjLA^Eu$he&|yPjP)uD z$Fh#GF&ummNp587%dl=@+MBQz>px@Wi=ucNSI+Vhl(W3d`qA_i(GDK>D&n9K#f#^D zj>ecYUaSXi^51=ImXBs*GX^PIu3YIL!X&8xUbRChNy zStqSkz(=!}^>SST?*LnHT^F)NvN0DrIS#%{P2%E|_xH#0m|ro^RRs5ckQ-bC=KH`_ zTRh*dc|OAD-%>cw@q4Sfe_)<*`cAvD~0UV z@;n>i@8PD^3Sgdm1pJYCWh+4TkSd5TnOCs_hLEIc&%6qfRHuB~clNh^&wbm6*K_!R z4Iu+>?MBG(DruhrvCoz*EN_G798w9PstJnPs{_NK$K@~#&pNNpj?aM)JMF2`g*a5S zGBSbfm%;+JUoM-M%7pEg%ZFk64kQ7#Ujqx+eiN+4`pvSrLsUax`&IHh^BTDy+pmQp z4a{1O?K=^7gM1ja-^5jR=uinmqh)wbi(&gMGW5grWBbR1Tb;lm3)^>*Q($`|x^y?Z zBJ?oB4-xlIlFoiDK|f-y3mwV*!-D318_dp-_*4~55P%Zt<(nS8dqB-%E3w)}+R#cX+5 zj?I==WnlE(@!9g4Rm<09&!>d&Z&EGsnu1!MK()MwIo^`Zw`2+v9qNSg7SRVkM{S(( zT6V>2*+b#H58e^bJ#;#Nu9b|18Ca*^lf~S6pK5}|e!$$i73x~*Tu=#wx#b!#w;qB} zWGg_-ttVy7Es;XZtv6)MEfFxp+;Z``_1wSu=6&0D*0+5)?$F%2SspOAeu(Mx+t}RF z;rSiSEsahof0Z$}J`i(@>)D|lgyzx*m<_Fr%o~{ev21?aKYjL#^U9})yAdZ6nl|cJ zvia%2Y4aJTh8dqWs(BE2ADcFxBkoI@HmaCby?l@Oiub4Hc@0BFdxQ41YG9vmY zLg5h|N{^2p>^$fZ^DG4sZWm~rpy35PoL(PaI!SP}c@D)*=5gopxMC4U%k=pQhWmlo za6=1CoQOzCE5K-61i^xIu*~==j+I>f3#g{%aJp91@AJ&Qf)tErv^610H~O>s09mstzObF(%)rm^Ui4 zp6~{85IMDsieIOdqQD)Y=;3axyq=R`i1KVs@`1^Q&Vq3lnbZ0}T1%MaJ2 z;>DZ?r=~$FH}uBz z#!v8~qj7={AmT^VHk*!9($|FNPl>j1{C?LVDV>=)w1u-jLy+!g8U=g~rrQ zKfLVF;v)7NBV>h7?xTffs~|>f=FsH>JVqEZZSs(@&eN$(+bF-hjky)((K=pI+Ms` zaQ77BI>=u@SM;3oWnMTKr;JLGw)}S}qhjUG7+fwMhi1j1rVoyaGdCO(K0Vsj+Hwjg zbHL3)lC#xzJXDECwEq<-unh6Xnm8lPA>|&@V~z#!&Wm$cW(?C5=YT37>F!sq1WRa9 zrF(Ek$iTI zmyATvbD+p7v~@E{ttN_hBvP4%^E)W6$gL6$70G|JXsDEcPBc`SMX9+N6K@a(%_9u* zH-?+)In9M~-@Er|0CcZ1sy~Jv{|XC>pk<;N!to+4>Xw$4CaLMajAMh!Pa5Q-+Sp>X zvEGo02Mt7QTaHf2Fh~TDqYdr1M3j(|oi_fkqT&tD54E&H_K(0*bxV7+VZsp-qeAVi z%~6hza#LgWQIpaezq7WsYGrY4ZQj;!oxX-svQ0cf##kqax9uaLrB+l_QC6T^EdZBK zL8)QYP%A1fEH8ElA5{VYMWvPWc8px*MWtkx;H9Ccyu8FBA0coB#bg#$TCWT#@rl!4 zVcWdbt5(&ls9hIxtha@mAP+a%7*+D}@*Eud_|v!}(iDs~gu< z7X&`lJh7yC^^MUjO~KO~qQx`~U7K6lqv4undJC(^!)6n3fZTRY1lWWr=)odq327G` zSaERE=ZS#A82st|<%38d&d0|2EC+#5wg#ILtjY)&Ms29EZF6vov3kLR&B0CKl<2lb zJbDhw)vthNP&tiT(Jj+OdOXDf2#DmuF_BUR71I(8JFNodf+);g+ZsN#y|FdCB1}|@ zu_!-=K69wHSRg>lK_ftWpGP?R@ku9I!{)Zc+IE6i-2yU;*7mwKI|AWf(y|RiJ>(ia z6nw(Je01~hk=U~|j+#RzA)KXcZTLt4kMkuC9HkhxQ|==t0E96^)t%3h_?~)%B*OvV z^N0WpnODRjZ}w1y51MKO!>DiJ)9x5j1LnA)U|KVkpdB$D`Q4b-MBut|ORx@;d&oiu zr68ckkP4t30+DC}##vDZ4je}_iY1UoNda(LZK$QGen|YF2m&&EB=Q@zjcpi;x*=B` z5k)YL6b&fOTA`PUwvm2u7y~AAe>6d}(Zl}Q*5H<-rR5bA=cOTQAfgCl(tvr}*o2{r z9w`Ihx@rfU!zK=eF9YJKgrlYb(1hA(L$JPOo1mqLGbRrl-+>7TthHZl3b$<5mbGB3 zJbEq^-hqY%Y}!zr6QgK3tlOQn?V*sh?F>1*{n4~C9xVxa$Py(pdq;Dy7%j8>i>zJ3xxp z+7?~gh*QAo1_RY9Mwo+K%R&2IVPqAnvaq}qksr!Bx1)r^&Z zpN+y>;f_wPA&d55B0>tc>YG}Fr-kc56ok`JTppgr*J;CAI}-*idMd3j_V|LOi{%28 zqrA5LTc|y}ITWs^3OeGhXx`9R6+2rDz$<>NOXA?@U=uqhsf%j-t86g@P?s!SQZvjs zVld2Deq-LM#?4qK)JAOSwpyGVXd738_4UqLIv0puF|4Cd(#i!JYA{6>Rjnt|?!3*z0^B&YkZ=Q%K?O7?d6BEOV?3IPE^Pj)#fxm5Hf{BsIktwj%}tcX*4)0C%8YWF zLOwCnx^QEYI97|_I(C2-u7p}%dF+-P8 z1Wpmh8WpU>2o1p+rW<1;ELt^8BI`J5flY|jjQ>1oCoC0CUUN?OtV3D^ zjU{N$8&9Vn0&-o0Tvw-4=Bl;-~XSV{A_u3dj2|fCii@`X^Zf zU-<~*(AUkI!u2U4WFBABtgxf}oEajAt@bprmCN-Fx)63Y{?q z6gBV?3A+v5fl=d~;&j1bxCWjym`}q1HMTkUEcZ9H1cy1#46d%SZt)`8T+oDI1cxfL zV8{)7a1sOFMHq!4=V5%{twfL(LR_mABu1pNu|JQ(BBrzyu z7MH1|B_IhcEiErsOUp`NKH>Szvf|1@wG1HDva-Sg804)e zFH_4ZAv>QuJ$ zW2jJ$LEL<#c1VE^yF^2Umbz3!8!^U(M9^xhKssI)*H`B?l*xuN)i9}DADnTGv1!+yNsm_-Wh>{W(+j$yAh>~leqY1ro*$^t`K zXecKbu0@8j%&;#voGT31N<&#~C~FM+TEo81u&*~=|GmN+yMI~*tf#oh0h|;Rqken;~s?Hi?I7(KLG!OupeSZ(!;PH1)RrV z|A^TihbkK7$M~Ma2f|(jguTi$_@2f09KPrAy?}2IzPzrns* zHqx(wdndl@@!f#$MtnEPhU->*opA5QcbDvbfHC*o(2=6tBfFoZPPtchKTY<1vip9S zxt~G&v-lo>`xV%Dq;kK2?>T%AQND*{_rr*L1mC0h9z&S=IAA}4?@4@5$!<5=|BP(k zBP)jOUD-(cjg0mo>TY~r;5%C}l!swIhVNpyuT%{CjrdSi$1cUbOHquB-HKgTA^!*@ zeX<84qUDs1BuGb0@4%xXq$^RlRD)NoC5S6o)v;7^Zh$K#i1?I{B&F1oFAQID1g_*w zaLsOjYxegj>=X)XBG+bewUBEIxlScllw56am28EpWE;6oBiHHVI)hwilIw@$I*Y-X zd=7&<`8;yZzJT1bFC_P(i^;v{GIBfd!j1Gdle^>=p8hs+CwJn#BzZRs=N)9cM8;3a z=pv(==lYOc$ehj|P(?$iA@xLx$*q!`<&GXEId8#}it{!yZkJKYi|og8#~m^`o{l-5 zB?om}VVlknx>%f&YZ-*dpR(a)3d0vUVBc#({k$oL5vFO%^K z8LyJ@Q!-v7<8?CLAmdFken!SyWV}tr&&lW_qnnH#GJ45)hm3t>>?h+FWc-qhUy<=1 z8UI7Z`(*r@jNg*+J2HMx#vjP|BN-o%@gW(1CgUSAJ|^QYWPC!#r(}Fa#sM-+G7ggQ zIT?Q?<4ZFBM#fiUd`-sR$@m8u|0LrZGX6!zw`BB@(V@UNi;Q!~IG2p`$T**j3&^;T zjEl&)gp5ncxQvX;$+&`y9b{ZZ#?@q8L&mja>?GqlGOj1%1~P6U<7P5$A>&puZX=^p zxkF*2?Fd|d zmP#P0Y!VMo$l*TsWNsynoGp!zm}dgdnly`B$)kA6l(F1O9nY<_%-PaxiKS2EzKl8C z8d1%mjGW7@Q8nDk^mA+Ue4b>?LY{Bz3A3d|5*xRgD(n)D;(3# zgQLXZV0o{xAf%(^p9ST8Hdas?gm|<20r6-hCs#u}TIuU-1>~cZ zz0RtoL{{FoLh`VR#%d{vRi3g!N@mkfsg_dMj5m-fmCbwusnXbSO)I2yc6?K{l)+|g zULlQOvo}{m>TFfZ3TYIZ(^4&E01-g$zq0D)71C%nx4Bvx!)msykj66qmTGAnoA(Tx zBW1Dq&j8YRw%|>`oxm2p3ExC^!q4FIvPD0GFPklX3%*Hg$y@N{u%!#Cq{(dA+wkPF zWu3R|(YTAIpMZe1by*s4nacN$y$b2L4Vt(jgW<+HW9RZ;<4cYKvp$kv};B^9v^ z$5lzi?8NiYF(vGzt6`P0KnJWcwy_I2%UNwVtO|B=Rh3l9g7?BRorPY4HG|c?3~MH< zmsGHmKo_i(NE{%{LmVJ-5^;binv&*c$>1Wfr~75H9T~Hglme`X>^QlH&Bgn4I3nYn zTHe%fJV^ji69xOndA5ygjTEG3Ydm2qYVASQyub!^03GtX=0!H5qm3wAlV=e@oK3pK zW?sU>{HjC=F12-grJ!bB#%N+h~j)MXzfycsmhY3x>;d8^GU?e9Jt6htIH z4jLRMcF6n8P7b7p1G&{!q$)|j@9VRvHqaLFdMM`Y1ez;3NCN0P0ouIFMkFA2Qv?J( zKmbuduD@~?)oGeE1Hy1+5{8?{W)>z8_8~%WNz%5)R1G=!klcL+~v=O{JbE_1K*EsEI@g6C@GMI)P8e}M1IGc>T}%MCL04o#7ALsBn2FB4gas-=QdWu5FJ)c+ z=>QFWgBg(-)K1WMrNpuz+F_;SzrhdmAQk!yJLXvB0%>b z@hAXFBtX`bQ|G0Q(q$9cBK=0{aAk^~AtFNnoEw;!J=| zBCuru`eoipQf@oi~xrYFy#sIxTfc7ErcmPU^0s5r{=$8zH<%ko2-X}og&0hmh z6~^Yb1SmZQ==TKZk4QWbfHGo$KC}RR$jpx@P5}A~0h$PUdr_m$2+)WaAd>)nj>K~S zXk-k~mlmKenfVpP2|#}*KyyGuF93Z*fJVgteM^8k`36$5k+0lE)~{Qxwc0BrzD zJ!k=XPzIqm;<{7t`^0>d0Qt?w5Hb~kJFztV2=1Jne9}E051wcKSPsmL%-l&6(|i); z(gb{(%AF7^_gO0Ud1RT7awo<8xyl!JHI>`3r*iE95%?FmniI7GS<_ z!F*pfe?x#y0G+j{5ht;p?8MsAp&;QODEptN{;|agkg~vdmV6ER0|eOShjL&sqP^2l zHOLaBKMgE>i*4qgMNBrP#-ULkAF;Q%Kl|MgnZylgs;=ToDl`LmBh}| z`B%t+m64T^Rl8$g<%Ns&HA=&3;_x#+;gwCUg7Z^U@3Ud6cVO7+t&suiQ~)?g{g#zd z3+Ly6^##=$#pHVa$zT(>KmcrkKC?7I86;uNq0rP49rDywu(knM|=zLQG7o=QOJ z(7E2L(?AaW)|ewmIKj%zu)cOq_KODqVpI}fDUfLN#kA|3O7LlA$5 z=<=N$h&|L3WZeaxqr*hln%xdbLX|##1AgF#n~DHLN#p zK$7)fH>T6-ja2-4uhxn1oBGolJn3c3ycuaP1DBpV7m05LCqy!Fci%?25X?FoE@OO# z?Xp5t3Ni0Mt{gG>sVsEe-LNMo6RY4o9Af)^-iG_s0Pi>S)ctDUau&H9Wj#zw2rXW{ zBIIH58{h#e0n$FmVf4CffcKEv)k|eQf-rQ)Wx&4LPRQa#H$SF!b5@VXRbbf_%zQ%a z0xS8I4EXh972}Vfr&MtYd{zZ2l@Kc3LyOZ3YF7b%8G_#rh?69}0Q1j`?N!aaYWI2j z%onM(J6KOA$BdKvf(UV+SL zsn>rElTm>As(=$)VX)k~`;;n%p?y2arpL1B? z@QGESYdCQ9yV!gu*4zOt-A^4>N~?J_`s<0##;A(2YGQfb~bf!lgl-2b@9a_%iT;JHBodMgyGibz`$Su4Q%O;L5@` zp3n9_qK9#v{wb_4nEV;6zcS?jtS^~r!ulK2$oh)uWPQzygRuV2Y-Ig|**}N%Pv#)& z8|EbIU(EFdtZ!MuUt#qz_m{9bs&eYGO+#h zvb5`Ay~EPUI#14c64v?hh^Js(Adh?+)`jw@=U{!pGN0GY4}hU!x%o4?WhdJyR!2<8 z>saJEC{>ThD{(v2u#<6a-M^?5LJ7GX`A?B&PIRC78SIG|Rba~jIJH1p1eXtjMau*~ z3wVae0CNwxMa_de1Q#ISq%l9|9tU}xWVp;Pcu0azG5@NbSLZgrR7pKxv@X&73b1qd zvJSQ?EbIQATesFFnO`HgB62;WjS<^9c}~2&or}C??d^5R=HFG?x!0Tj;5Mf0H^?y| z0tpc*=D&Dpsh&S6#FTf5Jh~5^d8s_6Lo@p*RVdYe1B1@PF=mGr0v7mhWGq@Y);wDa zjrBTG{|SUTR|~mAV>+p>=V{bG{zP0Y)p^YGwU7rKX_|R~1`c2;H6MvD(n1Mv(n5Z* zhT2B!63k1q5W0r{^1l?(#0qs8f~c>qAP_p1lq-2ag1LhNjG$p&MGiOC;H$}z7_^($ zXraWAC!+Uuc2aL$i|`1FSnnpR->G$x7rk&D!gjKdhi;kB$v0?J@f-O7Y35C0pv;@O zZJ4)k+hN|yZKrt~w_RqZ=DAOn%-g9KsveYVimamz6pmsUFkB_A<&V-%fi5 zSh~y~i4L`U>S_JELLU31WJ#!|P!)_j22A{zM~AFkaP{;iLh3m4b90^iv+Bo3E3sbt#2L;SD%@ zFglv~CR|{8C+AyQD2cE-iFctEQqfU#mi&1fuRO;y$OagMTkp`Q6Joqe4nm0iNFD(T zTPkgKzogJHL7V4cc;4eZ%6B(jgp0Pis$^YvKWFVOoZqj@nrbUq@!%1d-QA6W}29g;5NDQVG4 zGcVUeY1Tkrsngnq!w?DFxQ3@8h(H9ki!h$np=)_@cGN)cq_vbEm2N=V9DXpmk&2Dh zrE^B_o8iHnOgC?ZV>17(aT{EhVS;7w1iRqF(v)HD)(4%N@H-?olo3BT(HZY{D+Q&# zQ}0gBM%dlDI1=51I;Dp)#G&Y3T^x$;*TtdeA(T;;#b?aJH zLX?R4m_E;ZT<;1%j08YVg3O>!rsDqf3FIwA_TVmNKB-e*M(akH&meTr4)q)YsK=sp zndb9+j~eZ{gwb|zot*W$Ztmgnq0zDK+#3h=5@N>k%kkYTl@2UF(ZP3&f!>8xDOxwu zGX-HU#}nNSC3XmSC6jgZ79_NCW(*m%!DI*Gl>BSPb2ThY(-fm_kr zI#xwTDmumdx$b!qRyT!YrA~meR}YQACOvquqzz((`Ht?n7%BFneuu1(ztBVDvQp|0 z`70`!KBE&&A}Clb1u7}2Bj*btF#~d|qfP7vLjYh!e(CAQR+GcQ;e}J-LBl;n^Ck5|h z=AZR>65gNin~iS4KGyM@?Gr>^fzu3ldCkw@wyx_A0KsrA$9w&tg=}9??h4ACgWO+I z?yr!eg3C)Xzt+2I?qaxk_&bu*1^hoKc_p1cf6b8o8>FB7uK6u;j2CYsoP)nl-*`8E zQ8e7mJeSfsyGxeN#=2mLA2q2NsMfjg=>5OjcD27t0-ntCDVUNWz`Vfd#;*!D-9ui4 za8bfNER}vYUu>X=Kr$sDbi=g)l|~!KrB;j;L^lLiP!O+=c@>Ynn?>%XUo5+j$-LSK z6wr%_J-~xIv0z<8N)V^(s&3q*p_w}koQ==hm(}6MuUwEB?1Yf8PZ_%r)}69^lVM(O zbamIs`ssVS(G_?AdZ8b{&%;sX zorr&s;_sq(YRKJ)$M)0XhtvRE>)(q64^x8sVhQd?0^D`<_#Z)nvF3wF@F*pCD3;)1 zB*2T6NHE@f6bT-q1dmYy`bGJp0acjD@!|Pf=Q`?$ZO(&M}`wizAOS z--Gh~xLJE1sh^Jt=%O=4<48O8DlQuaoa-?h8J{%r{V}XQ@(eQl(~~Qg5MB@g7}h zzKsOWQG%bx`lD+=8|U->=s|xl+(f^Nw9ix8eUz4NI)4F_oWGNg)Gr6a{T0%_KxyBj zw8cpKzR~0Rk?h~YAmwep`D-L!6xd6GsIaQ~_cF#k%dzpg-awdVC36NjJKz<=W{>?DIB#Zf^nP-U1(L% zLZO;zfnF9!jieR?-eHk4esI(wHBVf?i9Uikf$8OJlvW z3iSJ@2o~c3ybgoflRqHM0FJLVunr91TPDs~i~cha8@Qrf*!yaGk~FtbKD()QD%UAfJ3>y^ajojKA3?ft`K#2oQyNi z#5kgbK!Ug~(cyC*MqWLb83vl!2P`Z{5(c0YRTK_I>8_MOk9k=^xl&#LGJO&YTvT!h zn>%RqIVpZQk>ZzD9!~NN4WfmWao&9Q;Hf!)*4vUAa72>t7#G(ONxzk1C{ZseDkJ&D z`Up0{o-U7Yr6;9lr%z8mA$^(59MBc28H!;*35(`1bf=-Y4K2|y1hsa$p^h|+QHGXj zXrm2njG>G()QJXkW2=)4EyvI%8)~khO)<2ohUPQWX@-_(X!(X#V5o(LR%EEfhE`&z zQ2A1BXcdNihM|CPyN1ZL9g7UdV*4UyXiE&|Qp2$v#{^J$N-8LLa9p&3c2>8gb)-l( zXz0{!BjD1D7|T6vrIM6Hy)25_HVu5Z#<^4}xsY@B~3N zXPX=Z*&OX%PL?|t6@dCwiH_NLEy2D9@-M^YKB$;(9JoD1e?+=pK=)bKj>wv0PUcx1X0FIO1z8P{Mcax2--oRE zBr=nqCJRV(9SO#aBm~|3eWEBHk{EQG#mH)-tVzgPimc_hekIME6^O8dF51>1BW604 zJYJd(J&|m#IWv$HNlH$~S>-rXB#<0QCQW<(R2EF*ZyB>F6d}Phvx=Pfg&)i?=fH{o zk+k3lb1peX(#y;~)4y?4ATz={YP5e0oxA4+Mny*9+JSz3%ttKw@GdjTT(EI$Ea^B( zI@Vkm7#kUjr1VREQBN}cnq7=U6v#Ro#_}I9ORWIB$c%*uU+S71q+3N*L&88-B&#zx z-dwYB!X!{Vt?i;f_}6WmkOTh)bcBPDU>f@2B=pe6z=X&IaV?D}Q8dXL^qN8L8XtpI zhfE~@NQXvLWOD?j27D18mw!|c$cy9^1g1o$aD(&?;>?wcRN`>;0VdO+!_}PjwzigL zk~hH*R?w4#6eIi38~yQmHPK|j5C_uo-Li{j!R+geiU~xx#v-6TK;@OoeV@RYPh}ka}sJ$&v=$#1iQo##8e~ z2rDFg!q`+TyQ)MJT5#2c7THB*F_c|d01)66vCmHXv8D_p*_Vv{o;@9R@;?(4gwukV4r zK6tP~3h7_EX~*Pn(7NeF6-ntGSF5FSU7HYqTtHHgg<37BD@Bq$sk^a;5UxX$!C?J& z&_h!XZGiRR;>s1_Aef9XZ3R<2sTX6?H58>Z!DP4VVW&9=pI3qHl8OJ7Q< zh5{~Vf`U*Wt|nG53|OYXaKbqKM5?2_u%mbZ?U$eaeEkA=~LQTmVkq`WgB>!!^=c&e##|wa-%T{ z%^RD-P%AQ6pW2~np5)f>+<}dO_Lc}V2v$W=!^Y?-7F>j)_D%IrX#+71h|dCNG*6Ia z)%*BE3(DieGZ1uKebEpF45vuTHm9+T>&0?{*`4!ALn43&4HQkcLR{#2$e4q&6vR3< zH#S@D^tKiVPoe&aMZ(?IU|4mQ8;fY|wJ)w(SG%Ta(druL4CF9kLscv{mc-npRRi0C z4jH2RMK@6`vX(4em391aS;hH9SyQrt_!S7D5XT=Y1goPh&g1XW#Y0qX_93NPov^B< z8XV?>2KbP2(bB9sq^bBfhIkNgOO%))gc;Q90>=%Z1f~AF=t^UCmb?Kr6;vkKEMIM= zpN1AhY7n&kRj~~N*yabR!K*o>FGR+g?QJAuqMkYfAfWOG1KAkmNROSmEvqGx)z%Qs z3N~$N2!_IKGyhE}m_yBA1#f~~A7-R_a4lQPrXLjyP7aU}M#BIRTUp^~U2sb{3v9tS zFhun#s5xt{k1J8D{5J+^aH|vBiG7_PlIAvUYHV|%M|pS9A?tAMwuevefxW?n;l+OU z(wZnV0BMjd&=%FW_!T=18D9ex6l1C0vy;dL9+*h3W!6dw*7@XZv`mudhj10Ky4N(< zyM&%Tadc9fARJC>ZQRt*mNLWwlK^26km_IojIFi;`PmeGMR+r=YBmmR0B^w z!4Zmu20-pT>;>@qCRLhHtD%8r7QfNLZ zEUhGsNR<`k#PVH&+lHcId%OT}-xn3R1~%8xe-b$2EdrD-6&6BdL2&}E5fr*8NOxv9 zN%_$zSNiz$N$Il`yU<69(<;*n`N0>r3c4XfwW}TczH){kk1*tshCIq(V+?t$A&)cU zEW97D!EM1dhsH(bXXN)_>MD~k+ywIQ!D*gAu)H{=ry`6L6Iy#0Fy)U}Wr zrBe;1)sWi^)^5n#499lEahl;c-H^X;$Y&bz#kg3w6yIgc4vF%(T*sN)o|N6;X36&Q zj%1daT-h-VZ<}j7X2@g4j@@vf>~J`p>((oip;G6Jj({6f1d5dK1NOrX2IDL;&L-m= zGR`IAJTlHF;{q}+B;z77E@785_QNa4c_m|c`F2Cn6tE6Lvyg2xx9rn`xLR=FN?|tS z(L+|LJX^No=0KgTz>>AuDwzC~adfsq%1J9Z@xiqIjc-J289gBtzr z&=XYSYvo{q`7o-UQwOpcQUlTkW+<%4r(!HW_zE7jGfeZd!Tm$ zk&r3fllB^(xPQw6i9Rp19x0#&d{%x*PV`8!>Q=Rbgb05CA^;0Ov^H233jENFATR_r zI;SoH7$N-u<3E}G5oWIZCzw+pgaB+t-59QY(E7nq0Y3@t=ARKcRV6cB`v|5_KL~T0 z@j1*q+ZT9b$6IqGIg&yYJ0EeR&^^-3|&ufF+bYq@&3opXo_^9yoRY-2&1b0BJ-MjGr;pzLFJ zhKxjda6ezhFqYCV0$9j}=DI?z9^NUKZMh`n8zS60QTWAj$TlA;Jg5p8ZNPxbC~FyI zrQh|C9mai0fOu$xzL4G%pLy_>T+Ud`1~z&jtQdiF;5 z^>C#SjiIrb12S9XT0pu9(f#QlG}cULhR}R-`bl>*U-dxG+<~4N z5cQ0cF%W+3HWWHf@06iZfaAxls0Ow(XvxLKWRQ4<- zIFBC&XQ@@6CkDZp6oWGx_4zSnS~jo|%dJdL4$9<=Wuitr-Cy{#vZseo;f2ErUtz)7 zGYC#r3=ZM&UdpsE6;BJkmFA1QX9@gI2>dGEwpV0N6yQD02;PO!th4#%aQ!X)dOm#B zV5tk)cmUV);hPJtIV*tc`S8`4&&2|U(DPx-+yxyvrQi0Q`EB1T-}cSv>w_PRZzP|8 zB+E5l#}vUlQaRPon+Vo;Fcg7U$`X3gegM@UP;lZOMQqxdtZ4c?AopUrwOc1GJ^*d& zi{Zna*^=%YPJ_EVXX`$$-e(QinljC`J(D=q*?JJEjrL&m0%LPd!)Wtl?8dq+UDJQ8 z173*FmDqZlgtZoY#&s$9Qt^T1Iv|CxO*0r9Wf-+e{Q-8e8a}{+S_F%oz8Ooi(G29a zwH#n|_ALikz2h8OdY$LO47)CX8A-Sa<|g-@FdGu@V$eqiGL~_)|Egw~CKoM6ni=V# zeH}^`@X`W>bV4tO*@%rs=c^5Zb4jm+jqTi;L_7NCK-$7IsUr>RU~~VTZu9VMpcQMr zCyFIMX&V&5Wg#OJ;$(rPCW>9yhFv%cg6p=x_)wC6Jm!+!Y{#N%=i{)IXn7sxHd;B8 zJ)m&1o7*XSC>a|p)pT1Z8N-(xN`@*LN7`@t`b3q_u&Vt1;j8?EklojmT8qj_ki3Ido@bNB8`$MF17;mqTdIg3ur5L?Bdj_3FgJ* z(}k8i93XPBlFPS;oDT{H5U^n<`kMJX0F!kjGx;*wD8?mUfuU(hxf14<)E&&c0(Ijx zBf9b{d3933flbv)^NgozUByDFblyZ8()<&dA15D>q#{iyZ7&jq(m?k{N+qtL6e&nS z7t5hk@64 zVmz2K~saJjg_RofsJK6M#n!L5R-W1)gsR6jA+KC9LqTrc5fbr~-7tOO)MuC^_n&56q+ zB&gkj6mi+S!!>uoKRPlH@ql7ShsLwQHIUkPg}wZ{dY3( z`f)*zxGPKRFI4n3JvJ1^#4g4up@yvo=xy4!khn$HzyUkb1qa^Hip9mfQV42`!s1E= zU7?gzmMIm51rUx{stKT#rRB%;CRb8YBA1sqi25O2wxy0>>7%r)4BgV&4C!^aub{gL zJkc43ECkl!l`h#(Qw$}|(9#Vp!%#*VdZs%G(!wUV(;!F8Ybe=5(8`@lkl#W9FP~vaCl~6DR$vy&t|$~FMITq zXOBJfvHqt#nLp*pc*=XDuTOreukXdaKDf-(EUbyvTOMc{@Rm1%&LtzU075^DiVGRk zBa`akmNMzrJ`9hXX^sK$dKNz~(>?_cem@JMcs$>eAIAaa?GsxWel6#M0wQ7?n8S8R z4qI<52bX9tuB+Q`2Tv#l%N!3k3ACAjTB%GXtwRb3C3vO0W)4ENSZJ;Y%{6@p)zOdI zLZr>(RKo|LK{^i`CMz(Dx+4jozAOguCGBS=T|K_>em8@9nX>LkB4Wy|n2K18&8!4O z+CBLDrebP=bRy+1AcNjFp;pOy-+WRY=6w@4jGM84M4H0eq3$6_D{?e{K~qzB6LfmC zZfYkH+%?@09@84?quw85II@!krUaP?yWa}|4V9*9a zGGd2aG|S2>iQ+&`w~b(U_s5N^VJJj!VApW#>cH=8tV_6VyAZKhnq=G=GFO6|xe{?< z3(5jIj37#;B?Ai>-9T#Ak^wPKdIm5sO)ME{n94q_yK@2K#7T1O&;x>|fJ!%5oI;2j z{Ln+xK1BDlC-ov6)Ttcw&EUuRx~4{;XTG>&&##6&=;rz$_S@EIxL#bY$1v7ke0az5 z%y}a7^dU1}`hSL|ye=n+y381=E_7VN1dW{^SmUr5dW^P zBsYEfcg$SVTtDkOW?f_r%6H9QWsT)`ZTBid0qgB@@I$t9bMUlK*m|9X>M8zQJNG*_ z)1r?T>&UR{C)QUL(v}OA$}&*&R+5-?pXICpt6txV*LeC*=1#vmv?|#R90N>fp1Vf)uQsk!qlOV)HQI< z9Lv^$s+Sfhl?5Qf<@lWt~|+*@kUo<$R&ncX2=!vQYX(eDQ@zRokL$3jTH6sfjt_uv@%o!8$O~$SuOP*XdWhy=&zG?XK@a5wxz*mT`7+)#A za(tEeX5c#x->hmjWiIR*mO0v~OLBs9wq#%jb8$;f;FjX%mYT>d&BHAnXJ!!0rO_$c zmQJT=dj_4N9V4nh>gyay5;9$*f*|#UOihP4S36kdTs+gcaR)wdlhjo02HNUc>GfhC z1YF>r3{PIF)M`e%vr@jM`xK3}9bme=-E8ZQFuYE*_jqmM7;E4d+v80f=<&eA-xRj; zGr3}J$2H4-aT|Ubk>TNCOT`s3SODoDdwMJtJ#O`SZTyzyOcdZglZsAI&SK^dNYkmx zeC`y=@k1-eSFXlGzK9(s zjJzHpE->G!Kw-ckWJeYS9KHPDUW{8!C!MkzTp%~@ZAdW7xawiIR1GzoI-Pr9-)QM&v2^t5OUo`6Tt4zxz|=YkRh0Yc_~>`<0EG~rAhK;*?hT;ay;tgoHw40aA2@ZOM{j zD^gq}xs#M+OO}gVlf3*K%ZcMW=l$aVU_?1id45iPX}n5xD&Kcz?%lf!fFLB<`h%Rg zbLXC^J9qBPneUvlr#Ooby-`auYSbyz=#*WfQ+AD7i)w@gns+>N!A2e)SoGDQj8@XL z;=bYwBtpzBUahP+LwqE9oSH5BDT~6OL!g)*q9~E*&R5YKe^I}z>{AnqkVT4k1bY$i zSmdezb{l|xsDuH5a0%=Hs3nFHbeD)t2=*QtI3*MA#cP4E#I zUY9(mSTQ#a7y~%ojgUv1Zk$G&Yx%zAIyOwN@kJq1u#;mD+Osy@*uF~}7q2sKJp>9f zdc$_zw|-{|sd@BDv zBAOdY7v+x?Z)5D$Odn;|^ilBhyp|aSMq_|8!5Um^X-1;;tkNcFm;^8r(VQc$mV z<|e%pGYV%Ss?v5^48qg#+21ichn3DwtX-HHhPXICp52Y(S(zWt#&A3<^92s%sl+rU zRwqrE#-No#p=r!sbAisC%_S$jw{U=?y(F+-LSW7Du4Ga;90AuxNLT2We^b8vyYh?g!G8#>NH4I)MWbHi zX0HzHw|qfvW$h$>(R1P`1Ry%eMBVW|V3eaQ#^Nl&8dxK1V$H0DwX+V^$@X)2@Bwy^ zb%U#Ym>pq9Sr6-F$Jib0IO_x7;{-bi`0!mgE5C=;G6F&GU_03^wwu+nJ^lk7u=N}p z>^srX*VQjQ`bI5KL{HeO5_?gypeHcNy2QFA6sfsIXQ~7~*3uUt0c-$7pTjrE$P68U zg~U;TC3aKh6VsDJnVX3a6mQE{#*r$)8K1y^_hCca+3n^s2xKzbojMORHrZ$MK$PWZ zcTanN?{OCf%`hsGGw`LP>rEMA%1A0xB7n7dPWB=h4Vt(FO*c#*l6g11>n+o%(Oh}5 zr!zX3?1psC;IZDm?*8uHo(dk<*VWnEvp*kM3K5?Zo&6_{ckLf+KXwfKCIzhk>KWr2 z0Y2HTMkx!L*>RCS(J)T$>8>n%&gCblWo6=*JD3`O>quYb46)=5Yfx8+N5BcnE{lg#g)>sfZ7=K?Z+0l! zJ>CV=e?wFD*Uv|z(yC`p9iwr2J~cX>;oonvh6sbET%LsYmBxd6Z!z3&GIv-Lm7eCt z2QA}*uBi(X)K$6CR4xa*oe&Y|w_?`s7h4?sV1*MJUc3;#Lbv9yT0#Yj*ETDf>GI4~ z@pBdq6~2S`*<@Qd8eCkm1dB7Q%kUynrzrSQ*@$N(H?a#Rtu4Ev0nsN1v3(&ft=|z( z!wl)A<8rL;a)&b)Ee^0B!=Jwm9TySlrc8w(QWhcrXLnB%%i4Wm5;6(&s7SiR1xDNm zEtjnWcE}#2hK~YeKSHFQ)bMcEXolXL#S5s{(!rFeH4a~I*G|ERH{MO_6{guiFu;Q( ztAWu)F*!aBET**h_r776vY#R|k1$*5#!DbVcfH1uZ`+&{V`+(*qh#vrWCnJCA+f@1 z=ErN{+_{J80oAzgXHtRU$<3V|nasgdFn-h=-nel-^nxPTe|BV248_`x)Nn0k-C7LE z9HcM6Y$ail3$PJen?~B&Bd@b+MbrAx*O=MTQ^v9@@>mq?V%eaO_3Z&)dN`1LhJx|2#=S^$HonB;hSp{1 zNkcnmXx)Z($j}ZO+7UxLYOo$d>ov4vhIWU+jvHE^!TJsDguzZ4+MOiMq1|n;dkp1G zhIY!(1`MOo&`ujhlOYcp23X5)HjEZSO&Ng08AFCKY#13s%NoWR!#HagBZhXbVccgJ zqlPht<-Rs;Xcr9qord-;J3jqnE; z-3^~OA-vIQU1P9GxiyFiSf&2ad}Eyo)(v9 z#O1T%@;PyNR$QJFm(Q~=QZ8Q-cVA}gXph??feY(_TuB`k@{ks9fZPZ>LQHIVHA#{v zT#`hsAxRSL;2k&~(AVGL(wVXL4!6Nvm3Met3|ts?l(sVviGk%LMa>ZlQxUS0b!QNUCGc18ah+`(^!=7}&Ov zJ9i9es6<@dn_;yx%9tkup6ZyF`#$dbxgW@|xiOYu^J8*`T^&<0fWVJ|CEqCRy^ak7 zyk;3*i?Y|;mtg~HhK;gADw|QqG_ws6S}1l%V>8;AZnjfN`j}yMWFQYR<}y3++<;{V zgUuLYZUHPkhztNil|rhI)UF){3AprGH&rpX2Qhbu7$Sq|77qi~l%AP=B#$v0No!n& zL+3Ia=81toHUKrd%6gY>-i0(CksEYrJYMz>P?ma6KCTpTq(ls2AlvhiWfaNbE&~}> zhdKwpg+zn-=jC|LwWJRrN(*saxk1?XGc$RT3L=33gn1SfuOzZ$CCiO@%@N##ONJP4 zvWoGJxfeG^Z3PfJ=BQos;9+Dpna{48vV(+!Ii10;V)a38%x9h#_e2OM1A30m$&LBV z3%K% zT#Ib3;K73q@j4=2k2oA*tS=-+*p*zbZs!Iu-tQ#XKnX}=2ynDD3lbQ(cf+a48hv}P z8AOjb32W_YJ<0|)7A8z?M70P%^kHUqr}?Cl&W&`Bm%blZ@Q<^BO-M+O^yFp<7k4rw zk-Sswj6n*Gc1hVG z?UdB8v`d02iQST}N%azV8WG7Ag_Sx;vc;jr1g7-74N{}zYmk~Ge}mL41sWt-b1CYR zGTzopLY4>kEt0oLOPBCo4`Hsm&cOSXGUk6kWP$8`WcMa-XIv4{ zf3ksn`M5Tg+{fuYC=b+K6$8;lQcUfK+NGKHA-DM`$tppz4vHXQN>8SPRvL&N2rfZ_ z&y(!HZ~tLPhNQg%`?C8G(Mdz;QP~!_yIT1@bjC+P3{kuN5LTK;GIzEMp!cNAN6x1p zlLGmK1IXypG6s=G=O0me$++Cqhy*F3EAkwH@3UQ8K8fiUzM*ytPn5B7ZG69&!h2Qr%**XUddmkG;=Tuhi{~n z&HsQ1Oc_7Pe!KoH85X8U6vGH&8Ra&=jm|QX-7LJlq8q8dBc~1274j2YIs}YfNQdBK zeTkDm_KI{meV5Wu+#vu#sm$+F1pPLl_4sX)hryUdA;ya+g=bg!QB?5<)bR$6veeHh z=s%dCqW;T^D$-D$<$Xy0m^>>7KgN6OBTV^`Y+jRT2!=d9n&5uu{5U^CFM4<{!o&mG zx#h2ffZZQEB>&s$MKv^B*ttIz(dczG)lucn;g=(Tk_7C`q z6J1cn;63Pyf8;;>F)I9Vrv1BY{);GF<%R#$$@I4zuLg8vT)bcH;;@c(isZcr&{ z-7fUqq}#{^!<*`}48PZVfoRMlGt$y~VaMi4sC8G&2Nmmuy=J~oncp(Qp0(8Xzh9XT zz3bV7<_8e_B6}83Du7?P&OXNEUsPZz%1ZV!tVPX-_C1R)&DG~1k_hS_gZf2Aiu|v$ zk2B>Xiun;x(=v-BDL)GGnrB17XVNO@pMXNO@F!sN_-Cgi-4}aL( zx#!dgFz$1w?iv}&^rbVCXHK;bPoy)oN#fbmc1(|qLTgfOVt3Q7C~&y_7c!agQ@P2Z z*6ir1g4|juH!#aox(13%T339_3$7=mGNItKPLz{_78%G#j8A!amN-jDjRDJ>8V8hj zvebG;xG+2bYgbDV$Hik68A>$Xnmy;wau(F^NRA{=RxhYge_jv;btP66nB`Eqv8RhJ z1kg%NL8-)~caRsH92rlIZe5TCRR%EZMLq03I&pp^(>XeF&f2J#I)xn-4P@tBgH{{2 zERh3vgA-F=qCz*-pwN#gP?zAV;OF8(ILomdAT`mXv@}NyJ25y4O&+Hb%PN^%UM&Qv zyHuK*n*(4fXjQW2uhv|FsuHdkBDkh>Rj_J{0&W5wz*&ria*hcAAOL4~Ubhe0&B_b| zCwP^HTxIxxHS-zD8beuYDC-Q@M(BoctFqw_;d~7z=(3JOJ!Diq11<%Yt*d8nRs|hr z>)D1HxLUYPb!@{{T(>b6bi1H)F_6Y-oTRsrab#AK!igC&f;Kcpn_E;2v6^lHo=JnF z9|vLU@%q(pMQ5N8EWhxg!6onAwo4%KBGtwX$t zzoIUJTf)dYp5?`uP?Xk&x1xsLELE!Enoj6Ay$0G(@xg>x4^GoJU#%sHZ(xAtPeSD( z*Hp0`cFJJWQZ{$ug`(qd4he!*O-S+xNRS;DMO@4}OSiwhin$u7I(OC`A&IPXX|YS*ElS=~P_l}sjI^(wr1;JNctD50XX*#}r@el# zy)Qm^J{qg1uQ{@)&u3v(zO^6=ypimjJ~EC2<*DtrDv#cV;{<-P6efuYXqgHYc2mVt zxqAz$a7CkUX?GtIIFUw)dwNV~8GkJmuwMmnmXJqPyJH3>G*byjVznyY6%ve&Y@ z4jOUSgs}6MuaE%_+Iy^{8|;r@eq+O22sYE7@?n=`*3>I=SLUvOXdHL7AfhM0Y?~YL zq+Z3{JoB~3tOvZa6lh0vPMJ*A3*|%zM2r4 zQ%y2c@a>9^)2AL?&wus_k}9j`B472Xw_-h2&lPvsAIa)l=HDAe>2aD7g6stGsVkKEsiZ4$geiX~a5<`Vf@^ZXb^s{1ZC#kA?MmOkQ zBcV3909>$w`6_X(!fKA>XBC-aw@C@riylm2X=*wm6afgw)0pA@NU!{3y@vgN-sU_4|i4O-KrSRy( zq31sw-?-WM6ersG1>JtE@s6f)_u<2A57&yth`fcz;01{uc%zndq7M1xTtUU@`!T}q zg{^_Hb2QEpi$=`N>t8>TqvmIZZ5T<@t4Ul?374JGvZK7YIdLn9mA4>MpB?Tf_(nil zT`Zxn86v14M=e4LG$hP}hEj@?BdnwNP$oG_*9K0#nJFoZ zPdvhaRq3OEWe=@XtUU{T2uN8wm#0=qo?0V$YF);_oSVM_X3qw2*Pb09PUzD~#xCIo zQq}h43UP1@U!)HePOS>`JTEo1s`;V&?5iHSQG4i?zlxz7mHz)9x>0NBzRFP>eLbT# zT5k_3$e*or)W%-LsEyua)JDaq4cMbrXmI4SFGufViIX3-1|PMwwy~s&G3l1AaMVJ5 z(awdV7R!@)8lD3T19$n+y7ASG)-T{(cFBbR0o`vR@xtxw6o6XM%&)P<6VEaT{(>Az zPPQNKZtpnKH3&J@1N{fBPoh-We`oLD{_X?a{e%14``fLjawH=5fpR1&M`Cg`B1fZg z6oI%LZIGi)ax5apqH-)I$0KsQNp6YAEm658Cbz`pmW15WAh$HiEr@THTUx674<7I8 zT3iZr-A72@JzPwQK~xY(6u3BC0=7;fa8bAzTwF;&`$hsfK%qhuj_yGdLtG4TF~r3X z2b(BBn7}n|DlGHZkrRDO6dy;HK&HdR;NoxzxCXdJC627)$U2U!8 zd!xSb%Ls=QjCf3%fyvZ`0wI6^2Yvw%Cy-`rBq$;rC|U`RNCKHGNGvE|Y0m_pz0>2v zH%I@LW4C5g+4x^K;Yqm!@vXVTWyLiQ#Ts6f$U`YOv_nulaWXYILg?7`?tm4Ogx>k# z_U^?%x|Piv!q^3`T&{ckKxP~|(MOL>Phyjru`riw{Ej1E&sPK{{%#u2!& zfVwUYdP8-fH*@=1ezSDeJ&V>?E3NM2$a!c5*i+nk`f`?@xB7;cNc9AJ|9-kI#$Ud+ z!ko_Ue67{zbrW;`aw|kN8iU^DC?*7;_YyH^M+Qf(A<@*JHpW`;>NYpV)s}|lh_@iW z>T~V+}1Hjlg(n)d!dhC#{dNs>fLMV-Tq$a2~#yq^=0;aCxI8Z|Ul5lsip!Uv%NOas zBJRG*SQ%84AUg=mwqYB_uq^|Z1N;0o66%xnHrkFUMjNmvObrrfO$!icP4|=fW3-u- zVG%65+`6;1LmYnGR?rhA z>_t!)L_R0zcY*;YSmFeO2+AT^X>o?!gbJRn7x|Z4PhH}cE6c-E>$cK*xDuDkb;Y;qi*Gj+-JV>P!bxe3eB`tit}S{J-dKFQ$-3no zsDw8cKMfV%Zn17lMO*8vTkCh&T1>pH_;x#*&C|)@9mP*};)$Pfl*3^sxXTIdc7pXz zFj8E4)VeJZb&G*e5t+t|pCp_o4NkBzA3Rx|(ttKpMo#PDX2e=UtHlZKae}Q*@HQv7 z*9qS41ot_?HYeEb1UsByrxV=o1iPGI(g_}Lf(M;ow-Y?%1P?pGBTn$B6YOzW}INw37&C+XPw}P6TH_6-sc2Ii-+Bqb<1ZqB|KjIbfWm_IqO!;1SeZkI$(3^ z=h$f@Jc$ylwkGGl8$! zcK{Z9kg?yz<$X;40WJ?Q5&xkcfnSdLUPh8L$BKp7+26SMv$agj{Uuwg_iQHZ@%I<@|n*^v8<2kSwWoj-)93* z#7fX!B9`$4>hT}Sy5^F8<)C>DNHymvrL&&~@bm{eRkcr_JX%|CRi z`6s-Z3RM%>lOKzEg2(SRf5LUnTlGw99BH4TTy?H(O`a*Gmp>+7#USGY<(Kl=n;!uZOPaIB$>W@4{t_p8!Xf&&e02^S8mogo zfjhbZJW>yTl0j2?TD=th6uXqxE)lZwQ}RF%fUF>%yGTnq6g3h!Ic+>h;AAKPc3pZ9 zTu4RnDC+O>c3l>zI(#B@+8v;qxdnVe;${QGvj$& zKEYf-EM6&W%+q#bphFT$)6sasGJW=}v1l?0pd01D+8k=UfMYG4D$^Cqet?Uv{ zStYjSOT@O{(Qdn_K2GiBu^}TfnmPwXe?}HyuT1x_3%kV3B*a0D1N|eAbIk?pVr;>| ziOKu8Ol@Eg7_F%j=Z4V@eVMnw!p-PZiqd!?G&pn?%D8ay9vFmJYLc?vkAg1hyp)_f z9~&sDb3AWA+wR3%GYwo2O5}M%RuRZF;Inw`Pzk!@PqZA_ID)7%$zf-PJ-iZ}NV$DP$oJ=3Ewpa}-DWUg+5CnQFj$F!6CfP?uu@V_QOOlnK&>#~ZmS)*o3g>s zY7Au~*;FRw!cjws8wv#Qnn?yvAsIaPHrNOPx1Dd^%PZCcTTodmvGU5zGn=IHkR+9F z!ClqXnL45hK)FE}ZWr8cxO%ty5-cxE z(42+~X;rJl4&BW!iq0>p(k88f>I*1L!xnuF*-tjsbdplFwOpy%I<8c0Jy)uR3C+c- zX!Gv#lcl3PribQA(!L9rgXvgH)(lnq9x1>rpN(we2#0b)IKTt}pn^c+DH~yw6sxJM zJoU0!eHEv)mqU!J(15|;>1*7Q0^jUr)#+L_nHZ?%Pq|&XOCuB#O80NU z^T;f0wz|zIC-c2%k@+}T426|Eezqid3WQA}Bb!2G1l1t!xoi+Hj{pfB?U^MT%lNt@ zO1=zzW5~I6shn?v<`E5Yc2@pLr0rZPe^^|$^WOxTq^RtHrLsK8vpkH?9{4x{a0P=E zW-oHUr(czU?jp5h$7ylCNjeTg%5$jQ3CdA7Pl~Uls%-|zT}XD1DCte&@hSY4CESLE zW}XJAPDmLtul;6_rUmJcARVTQ&&=>&Kg-jdK?<}x(8aihJ*AkR^4yj@5+ELqFLzbQ+n~^^M{Io#MTQcPF=J5V ztPJL+$`{l%1gxcGv?Y4W5!`4MlTNAx|5T9=zy^{71PKrv7ruEME+!7Q?b_taFKkV{OTJhc)uE zu6bl&Xxq(L9cENThQi5BD7cXdUM)4^3o+N_W7|!zAhTRaH_W+_(s=@)TPV79*oAnq z9t(gD6go%Il_D2`q8mex(^iDfVTC9%uSTuoO~oeKmV(7iv4YnI@&1YYY-7+NC>+ z*6yghrCUfrkXG`G@f}Xr($5gONlU2fDMzlFg>J5h5%UG60;MIvbr$oqgoRz1 z-3@54P?}>L&Zk$ot7MKR0YDZO7sGOoaO3p@ENskOI)pF08J*kmfRKiZ(LQ|+FX%xt z!A)Gy`hgTr)`;wC5WqIS7K<1xE%B1&7d@LXKZLL}^*w4w+Du)7qkg6m=za9T9YrHEtvX?wOqBYv<){c zK^;f`x4oWh=m+!_{+f$%YT|ucG>{gwdBy4IBLdUf#Au_!m;a2AUL!6=0cA#jOaPR1 z^RJ=`7+BM)rTU7>QR7Xq7Gm7Alq{$LcsRgp;oVpsXaV(0QJ9iy^kT7U0B5m5+giQB zwT(+GZif+Ti;3f5DpcP?tV1^dMqpsxtT$9JXEqDtPivWb2N*dp|FjE+n8|iExHSx{ z8rZIGGZZLC>T=h}Sl?kCr>%ot44;4JOzlRd`(iV-fTbs9;cZW-Pn9lM&;W8ek!+dYJoQER_`@$7G97Wh4uH<1l$1e$2 z@o*gBV7Qux=@h>-yo!hE7{4sMnuqBezk*a3S#4^fRXx4En$ayq|FzQo z>ue)~w@FT#2j=Pg=4)jUtRlK09!hr)b;zJL4-vPDj8db$hw1E2Jme9Qhi#lLzQbQ)YpRYH$#fx#>iuFx!r_*bxiqBWGwgs$fz z-Syoa(`g{|xL~)vZVLRo_9b@Nr+C?|g=OP2+G9T!(&l>#AJ;GQjL>!GQfIhw@xG}E zNW~A+>fUBcY+EL2QS;X>Ls+)BjOFHdFvXqI8s1o6VQXZd+p3sLukuQeB~`hNDj()X z`iW>ikCi{dGSrTd>M=j!XvZygV2+|EBn^k%I3_BD720`|5SSdqDVl658L9Rz3Cvx= zam!e{)dh+WgiK^TGhb%b_k`tf-|fN?-0bhrDrfgF$pC8rEzY8r&ig-Nqp% zR=H$#XpM>Az*@E`FoGjQ4j>&2voSb1ArWJkq=Eg#D)57_F@vBNgd>HNjBbc9>@4E6 zMTD_mL|Br9)UgT)W0E>9gR6i8KS~G32cu1q`QA{WuOd_Fs|fxLEDB&~DWtR8*(L%v zLVRH^zOPDglBt2G%kXe0V>aTvSbYjS{OOm{noEOBr1&>~2~(7;AoXoXeT-%|RXRqg z;ps9wLpf&l@zh|?=QFU=LoLk}o`*ttoIxHFA`h5S))+iphG!@f<|G*nm!ER#5Mn-3 zW|M<9m#6IP<|s3Bnn!{4zqmNrDvqC4=OuyOiua43QbVK&RVah_8m9Xq^9VvG0hEF* zy-PheoJ~ZV>iL2+Gg;q};+n&cPh7BHyvSm?MUiH=m1a*tn)kj@TT)SlQ&tsPohsm! z)h>(-Pn~7=iCvL0IdP%1=y@oXh%aW(6gTSDTc#50?9w(NwOGkPagGJuRM5+`D`NMH zJ)ZqhSS)UL^PIq*9^_mu&Y#xOqp6|$U^kBR(u(-#qP@z^GsBJz9rbEb;8TX70xeH4 z2dGa>Phl@=Z5J2sPHtWY>tgp4obYXk;6&YokjSj6KDqZOS%w?GP}DbnJ`{srpxs@&CX7sSx> z_H1zijkP}Cw-|%~2g?o9X%NDOh71n-8uvOJpTY!Kh@14j32q zGf=srNu{t}D;v62H3N}bC@}%AeC^CC$qV&}pmW!-+Kq6V;5Nf;f!hkV9d5@iR=XS5 zdYD*%xDm-b=WXYeZIHnWXG12+?jtbG~SrMXmS2E%@!jYGfY zx$Uk_RFBWdWU{6UYu}{MMWN}C^}Gjhy;RI9sTUl6`mj{UcbM24fC%TZSI`YJ?3zg% zgqKP5-fi~H<8WLa(5}usmDE^PL9OrL#aSsTe}t|%F^^9dR@_iFfD*)MYgPu<(OPs{ zvdq;3WptVxA&*WvgCG`4Fy0QG1AMt%tbmFi67gvti#PnIzn{MAo2;UEZLo*aDT8A} z4$h@mW0PbrnvVU9R%NZcNKEb43QHTD0)lA$QuV5*C$z-oX2A()}*!JH`THDoT$?l%+zJtru6;m~zyf-e{9J{K#Ns!PY*4f2dkW!9=*>kxCOJ?!I)hCbj zQDzDVd=sO?-8q8xP`8ZOp#astix6HMoK(V9dOPA zR!9#@adxexGdPnceeC0BGHMn|TWXi=yMn41+(8cj=Ld}wGp&veXmikOA7M7(#Zn{X2SJm%I zqMJx(zeexGq|V$7KlXYB>c(sdy%X(Qv)nf?it-bvVsu65V1Fg%)>#6e+^);HcNu&iyRZ3~8aIqYCfoEIDjyUbm;%%bq+ z@mbSAUw`}Y{xwS`c7azC}t9#Y4<`e1Np?ULC7I0wYa&7Kj! zZs|!W3wXzc)a0huHYJ9vPlS*2H^Iu{2o?cWe3H+p z)(uWq@HJWXL_&i$M*Lp!NK3+R$$n~8;Du;S)s?R1s+OufYg!dwfeuBSlOMJOKvj-0 zshP#X-j5t|2?eNa0L6{i{PhIhZgx(qdGs0R(T+fWY~>JdXdYIu4L^_ZdG zVW`IqwcqfZFw~QVey5?{ZK!WDAPK<+4fV~2ci3PVLp^J#_ZbYf8C2M2fEXC4nmaD98pYPn2N4$rig zNM${e1o(?o2JN(E09clthD%Y>G})2UrLrMJWD!w6GINHNB}QlNmCD8t2RV_l39M~3 zsqq|p%OqS5ZVGN1?mXNDxclKQ!o3ylZE$agdk5S*;ob!|!{EJ}ya&j8A9)Xv_b_?y zC+`=?`v7^5koSw^JxbnV#twEv zb~muAvP}wmJdAB@lXmzpz-!v1of%>(D2${%Xf`rGrpe~P| zyA2WVafy2`HklOfs}NVeUt9xw#kHiZO=<^2IoKiYOSiR2TTy)3t`2aV%Xf7mb%ox6 z4Ope#iCt+`X9u=L)t#L%`nxLB0jcHHp-w33T?0eWFbECYvzM)_>yUhGeO;&IXB&36 zOC_vkf4dZ9wJ<4N$~MBhbQ#;Uyg&F0EqQ zqV3XZw!N`kTEli6XqVQqoqO7)bvRpVm)5gg*nx{PKDL1!#0J^5yFL=dVQNDSN2it2 zu27an@`BLVMlxB`v^ww&rH?T%4k0ZAB$`aVTlpA!#bbVqU7foEUZ&t&VvDZ_5c>-d z#4$ez#aAkJe~Jc7*$;^LLtO4imp&vzUI;K@HKjpu`5bU9fwyB%{5TRAWif=FkY^F= zx}0in{*bcy zV`Njocg&F0za6oE%Cp%l{V9Z#LhR3F^Upz13B`PWfx1+ontw@Et1$mcp6ABA{~FQN zi2hs38wg`fFGDW>NqPS_?{e74K>lvR`K`f|2cQM&I@>8dpg@21>|7GV$9zaZS`Ynd zQBXX>DRk)(1*)nC*32c>ureICpbMdV?=hsA&90rzu0!)--vU{CHB`MH2_Ltzeq1r1 zRPdYlQya{WDYMy{Z0-3nZ1&BM<7Ol7XXkcYOZn$ra%z+L3B~@AHW&R!<|nCAKD$9* zMBe6?k)Dbsrn#T`eH}{u1}}A=^bN)QWl_1ysdeVBQ0jo<*7PsYK%C`7jnXWn(-VyR zs7!vnLVmkSeu+l@YJFD0AfIhxXV)X)oI(Jtc_r=2);?YacEthnDoQ!K(foY{=Z-bz zOA6T#Uu$0D*O2)#t^@@CA+831-+!Q79oUlH@-+fzLZV>3`6E2g&eoZKh=y+s4IkRd z&TcdRNSRG;$FKOuRP7Sd+pr&n{}ZouyYx>~JN8eC`Onm?q10OQUr>iso%yf$edh7| zJWebp^QWj0z?%PN<@N8BR}cn}_0`Dh5fvTysEYLH!ClGSU?DxGf}m7KKfVnF9|gg- zm&_;Bfi)PC^rNq%pG>6_+=2RReKss+c#FgHW@2mD$gTw>U+Y^fU zJCwG9(uR@t8m0Xq($MSn2l+HD#c6&-X)5jV{+iPKEz;~kn!mHk`}=&_*5b6+DQy+K zlG{+;0~)=Oy7Yi%zE9)x&O@5W=wV!GCVamJ`f7R?XvBXM^yU*9eo9wrm-(bc`!S+f zMP1npn&*k;iyF<5(0FZrNt+$GEqNPW;=Pygb3K*X6(rQ+3zP}47?+UGS1A2z%>R72 ze3RGdjPy;-{1p^%J1X(3M6iYkHll!E=LGjkzpj}tS_I$G=92qB_!~sHmTFQ1!fRBM zA5u*oFT;!|3cQR0|A5HW!JriHgdY>xPk4ptSn5yn6{g{J<#KAT`DaAGp0cHR?Eez| z-=O|z0GR=zdF*eAVgnu3ZNx#8#~dCwG_WJPBQnsP?dBfGDIdfWaUAuuee#E~Zr!13pld9c7hl)lA7vO)9C$Nfy?ilzwFD z*5^aw^vPm1vHR$t$Coc9)P$Xq)piAY8a+KRH8nA&j%Kn`+T_TYvs0D!W4j()1(1+J zz^N?wbvgtxU>3GwAt6c0>7u0N_Na1WL~c$%Qm;h;(o5snD=};&DZSFr5LwX?2X=#U zya6X1E&zu$=##JJ8sz~GAUrR&0XWV8B8$rpD1MTtBbADVLfSzs={gN^b+v}F32-fr zDkdZrEIL=rz(})il~5b+TEo_^gIf=`0j>saBi!aKY;7H`TbZwfjxTg9Esh}Q92##4fNJ-?O3tqbZ)iC7W0ZcBqH$M#qUF4fW|Gh|6c zZNU|W_#pKF**TO+f^H-=MWPRMv~Hah0GKgQk}ZjlM`s0eoFOn8HPltuEa4cjSegCM z=m_jB)DsI}bgI5TGs<-_4bxtG)K;G@ZQH%*_)(Ht|(w;>~ zNdxTn!eWCyl^H#8yjzT*<1c;a0(|hFc4_9LzkU^g1Sld;K#u3In7q$&=Fv6AqoumLBGiOvEvs~RrM#+XX6j>b&GFg@uF zm{Zo#dP|ko(OED&U0z4C8`im58F)fc%uEs*^Emje#pI}Q$qdX=q*z?R(J`0IP_PFf zRbxC3b~(&#Sco8w?-Gd)l3XzNk<}2#_lOC^)l5jL#&`+BSr8^x=J=Uz zjKWw%(fMwC4x3V>g^;RP&M0OTrblk=qhO9)f0jNIVv_t-3teM>itG8IP<`LX*tt=d z?zK(Q*vp%!BW=$K_bej3|L42hImL@@U05upJ@+828zbJMxA1`aJU_xENU1qn;{Up>x=?Bg0*c;yej*vRf% zHA|fM*r~1c+bs)(G_9S)J{7apXC6F)ehHY29`+5|C&qmFhIQmn#zBDIq$ze1YX;eJ ztNIU(!tl~^v!2|96<;*!E$pLMtT9mBa0R@2Z$Yb+#-@nNu8Y!~h-$nb*ePyo4lewq zm*t|9VhA}A6Q~$ZmABeUf~eTuOeJcZIlR}d1XbgjUZc?<}k%E)fr%ql~Yq19;tFeU^LOdZ@d zxE*le-2lbl8e!#r4vb-Z5h-~&l%HW031AFhFeHk~fia~V7*pl|W6H%mNZ|cET9HIk zD=}@jFh#j&b?KfxDZvPe2a_Zg%&K+@54oB|L-LU%Dm=IBH~lbsGM80m)R)b`)yFx1 zpyZ@Pw?TSx6*!U7tMh=2Y$u$#S&p#ILN_YVA!dbmU{;|F@a9$R7|K{h>)0U`j7Dh{ zl>^T$uZAZ5d^u~bo-f--OWAT|t+|$GNa_^U0nB)#obp|NHLcd7;2Pws(rUj2`C|J= zd2U2@j9@=jcGt|!^AO$Rx*Fz5cLId>z?LyXbqCG5t(a^z#jR@Jkdec77|9q?YiC?T zIw5Da6E75=TZSR0)e5jbjBS?`NOE>dKa^156uBX|^yIka1gnK9@PLQW{ojHmTlXyuShSS3YPtODOnvoWm? z&$Xjtsm;x}X_vN>RwT2v?mYVAwzT#ll@d)u=a#$jS>SVS7X^N&ut2jdt=b(hoAr|F zin0!5(!uK(3={Zgzf+Sg)TDygp-IGrSkedH3zdJ+Dy>tL_I;E_8XLGig)(#=X>900 z-vCVIHhb}eK==h~e1Fy-AtXMn@ykIkK3^XJyJyKYK9u$>G*|^w^U#I^6IOh6GiiU) z?pqAka}wumJS|N8!8dBP@6;u4?_fb)=-UVT^`dR=VVrf3=WyUi>%fB<+K`tV&%kQj zFOZ*eDPLz zh1ndP7@i)@*y}2<1-$OKIF<2G8^z<>RxrYr93|9yuX%`BKlJNNAA6nY!7EUYeo+FXj;#jMGmUn2;hiSRZhtdM*6AU6iC3}QavL_l^c(t9G z0wyKmYEv`{O9=o>0i6_Sf*);a23`r~9|(*Tivw-c*xV8+Sup9Xgv$aB4mLn7k!By* zEHW4^!K!Kq7FP?w;;L@a-cF2bSS{7CzW~Ptl1?1FgWUro6*#mRVP%E}ktZm>0Sy59 z*oM^6egzwm9kdsb!-l-ekRyg1GvtIJHyU!%kPjH%gN6)9&=CVFNwusYpK)hpaA*k3 zZ zE1dOH!&yH-RDktUNgE%XO9U9$1VI8Dn;?h=mbU|Y;eiP+4}(2B=4G|}Q7xa}SGXZk zv2S=cG1kG{ArqZu3ppJv>j_ z4(d5<+_3Aw4LJJS(*`=N1)X+kZhi-(E{1$*-#`H8<4^-zA_MD@3Yr6!_4m_ADPN*0 z3}VY;xO~AuSu)>DI}`cx;_UHbZ%^wXg-ln`)=ZS=vdT*>F0a%oFKv}KlrL`><+)Ja zbtah^Do?#sSf0#pXds|GgUZVn=eCN=E-tRjD(;L`+}V6_BPh;|;$~3Xy*F!~Q=IA) z=dp^rZ*g(uR&k?Nabx-7#!;LH#g#Gukm%={M42?u^FP-Mbc5*u`VHM_^=h(0MmcNo ztL2<>X0Z+DKU<}m3c7q;hLG&WpU;~s+yBXEvGL4@1u*K~weFPPGFBv=|;s=NrbprAGY~s>_ zTJQX?8|K4oUc4#gbiDq4Xgvt;#!Fuhjga*Ih-B$WsLSmSlas{(%?b1s`9r{t&gxdyx(BTsM@>mdS7Dney@`*0g|nt{-#aK3TeOV(0SOL+0*+e&Nq8WKMgfUu3^lqr<<`sW01*qZ=fC$2Rg+ve9L=V|S4}(Z4 zCVIb3^a1%QI@8E^CIEz+Zy(V1#NKYi9Fde$a-P7o;tM9@Soa{7Wz z^hH5b__KV;CVIgp`idYb?98v)L|?awz5${IKg&05qF>>i>7vg39*xZJTAle_-kIb# z$iGFfNZy&>TigY|ZRhlTySU#GM8&_}|FX$`*CzYH;!gNIn`q7^nqS-rS8bw~Y@%z6 zJK<%U=nrh7ABj#V?DIdgiT>Co`V&D^*ysP-Ci*`%(N6?XVW0o0P4wryJKg!Q`HIz@ zukh|9zd`;7+5895o&QKZRXjHT$FMNPi>-qw~78^@elK#Hqn3EL^nh~ z6}E0hv4-7yC_u00dlf!_3tRVqP4qsS=phg-7*P+~M89AYeE>uYUi1&zM89YgJqn@) zFZyFP(T5az(LG9~sy#;P@;-^PV4OKXQS*==E&x{o7lbQ?D}yVCtDx2QCxN@XjeQFK zUis7TZ&#j%zfXMzew+3=`0e_$@H>pp!|!xG4}ZV=OYplqUslXd0j{bh*GTxpewqi@ z(!_iThrLXiFQ;$dWo2Mp_|Tzs*e5*ADb{1XpqkI{@CJl6^K%Nm(ofME`&k7G7laJ+ z^GX`Zq_5<#*nVEYae{`R+x(I;V5Hq?7j_df#*hbSS-fsoeR!~Wy3USzUqHQjd|y$_ z7nHP@C-<3O;WYl>OIV>?XTAQfg63G@Yl`_*CGF?=2F$Nsmp?Q@YMZfzf3S)%G*v+h7{$%>&~Ui z(?P5<%5W-not-HERmJ>OB^^l9^9u8SC}~f+B3;UtB;QohWiRH2%F<)k{eRyuzk>`hFucym#HxW!0~@m& zBjnM^L@h>35PPz3S9AllKqnLTO`WeF15XtSbSE?QW2y1f8L-9ck4&67D#CZ-WZ2PJ z@wTl9odZ70~XD8bK5ha$>9MdhEO@=w|2w=OIn3}JO_BsK0no*A0L*}!PV zljZ7u&txXXJPvi$((Q3|92mT_dw>5yHv$K{x(^)ehrNY~Gom*rPxn}A1X5GzE|nyQ zo0raKQNJwe*C-`};LbX`Jp@<3N$V!VBLI5XTo!OLDG2}%YYI?s-b4!dwj!VMc5 z=SOlQP#@)+n8dkF|3nh1Y^Jn{3*hzpQ==DB7h$E5$0b(UDYld#^(03-EF~W58;7v@ z`HX0n|8VAFdIG|fT#V6mxa;mgbV3gr!&`x;`%xj!(Fq8T3zDO~C;GYuPaN}1j30&M zsd&uej`p7H!l65?Not)(x;qa;GPaZMIsqfNPou-3Ox0if%7cIT*!zwwcrEHz+CVzr zM~)ExBB|GoiTgdGI#lP|SDK04OT|B!J~eR$!~3>ZpNrE-H%83l6m`oY3DG^TK3}_g zjiIT@QT!6deVL2IhIHA#nM=Hi(9lk}?LXCDW=Xc8RpVBx?cbfP|Sj$|g43nSyzJq3fZ8^gDkKg!|!1c;hR zoSahoSqpE@F!f4 z3Kih$!K>Waex%FI)x}U0V9(HJo@-rc57}Mgyl%pzsB@9 z+*+3D-OwCY8etx}39h-J(Xie#zy=#ge>?1u#^TM;F_UOaKy)|;E2S`qOnSLmAT`_s zFVWZ(T=-V&edvy3cCwO1nvZn9qzE5mQz4yc1I+J`|bB<&is0 z4b4hJJWkLZokJ8$s@7Ds1EvUmHaBppx=CR)G})*=gZT{&3Zrd7R~3S;P##?c{m}+w zU3JL1t~D4`+CbKI11aoOYYlayp>8tN%_R4#)*0$nL*GWCuZ&d6lK?E+<;cJ?$iT)R z{c5O9hT3ANty~E9c0=7~7;Rh{))s=*dJMJK(2g0ZkbOO5Xnls(Z>U@XR)YlWU0ewE z9z#84sAml2ErvE}s5wKQGPG$!J8x(g00ki?y^B;`uMI)UA|bK0rOh)90HW{V{$BDo z>?c2QV5U=PWr@x=JuG{@1FZYdVTqka0`}&aLCUBk#nMA?!*Ch6EZkYR5x9Hd?t>eJ z8-p8%n}9oaKTBW4^{uQcNh(48?l!3vRnpqvajZKcWrOqQ_jCR{IPl=lZ{_^?%>+y` zYB_&?C+E)tz6t)kr-S(Oo=(U{g3-u)tczev{s3fmf$6v4o4V}w?7^a}TJXlJ0b?Iv zFsdh!mhCKbjlx$CF%^i-RfK9<&DCnJnN1oHN+BazvWgr&N_>8p(*nXX>wcW%b^#Zf zoy~e+!V6sZO*|VP_x-7WxmnzUHd_MzT*!J1Z8q7m*=#u$tk7r5pNc2RO17Phy12RY z5I~{sY;_qlAQ4!|odl8y-2W_84Y{+c>vp`9S~KTjsWs*<)DC(I-JZ`=?En)6E|i+% zBeglApmiuH23A~leYS)EDnQl0%!WXWE?b+V*f{03ATA-2XM?nw%>n_nnUgjYMThL@ zMk{&?r$+6!a_S~ze4ew8Ap7J_Zb9W+2eyUdNf?7RZ$p(;1s$42jc=!)q(QnJnl~5L zkUFS+K@BOc!zyz-FB849nfGPq;;In!ew3!kD2*(oBt>aSoONtX?nGU>@l>a}e3QEG zuy}mfJPJEHBKHbHIrZ9&&#q5~(UxQOz0*fj)E!09ypIqayc0R}*%^i^X!~|zF1ZUZ zEZ8tG@3fz6s@RR&yNmM3cmF*_(fRH_h3XqJ3{;S|s?$K8!FW-FbQ&5~v%78H`&_nu zAd-z_qkwFIdyDNROT%al4X?+~Uo(d=f)V7skwJDY71^bc-C634PU)<9F9_yR)lj@j zgk`%>%P|D`kQ_&VqA?_|rPh#O<{EQC)HNAH3yE7j34*PN&sp(t^x!l~a?85g^Kt6; zw^32u(%Y`HLk!+w8Qu})9oT!SFkSbKfrdj3(o6&Px9?1=Vwg0h8qIg5)q$pLQ?@zP zV$Oi`KA+md+4WcP^1TQ5oHDfJ#w0fwO&9q`$3?99PF@Ib3w(Q>2?dF5xc3*a1 zwk_2TwtZTgOLdqJ37#or#@!ymN&f;^rsfC1&?Zi*mxj}B#6HRyse{s^3@mxf8JhVa zkYMD~Z~PGoA^~!HoN#K8NM$aZ&LJJ?IXsX(5E(d_J!r|89m*bx3>?lLjtnHTN$!!z z8U3B@LJ9$Nd%K0x0AxU$zs50lu`ml+F|VJ@Rf$)}OLlZ-eA=txMDxdsauQ5LduR{jvx-@ano@sct^-dh;B~wU3@Vo3dBT-LF5t z9%$5=92q+N`g7{eO>}35@GBpBy?J5rX;q8wNe})E^5flhCRPFLB58hdSpX}Ze@*&_qYgP zA_G?fguAe%1g(!kq$fm+V0jx3kpOCzaM5x8Y|Hc*;EowVxKcb*B!4-psD!J6tA<+z zw;FCO+&Ts8W&^(w<|0D)I?!TGCaO|U z(ONBn?*n}mpT}1PdZxvLI36VE0pyD40puLTgC;zH{JBO-&glU(=aS`Dos^qHr8&_< zO~zgnVgagkQWJ@l6%~Oe?RWw}wMf&6C;Mk9D?I7Klf02R7?iQ)g&;IU49yahA#BBd z7eC*UQ0upFy}R~jr=E7lHnzHVv8^CMoyX-8wFfHGj&}F7_xB!`?2n3%e^ab4Ole>L z@e`f>Cys-w)_&|*SI>U6@01$G#;!|gqXy33P2ozcN$_wl~|!DGFB-K6rcg2(lB zb@uk`&qr!dWOq;ZJAOVgN|<$u?L&#S+MlFWYAdl#0l&+=PCQ?X@&eQq3eNx}%OOOW z)(%f(a<$_VHl{B%evv2u@B=}3(WJP4WSaS-YiunIWcKr zp>tdT)?y1(OBGBRT7u_7NZf{x+v2Pf9R0il%C1CtwL{>*Oz|d?bHN- zj3c?)G2}+Fj#fo5^+F=nOJ#5%bF}5wK<33(a+az#%E;F!-vc&ud}UpZEU4R7OiUI^ zcHQFl*+WgOx0MSo21l;ADFr{KHUW(2Bow5M7^pJUg06h{E!hhNNo`rQ71g@yEz_yd zoW1l}{?iL(aQHwqG+Q6xcnsewsDOi7plFN3#-2+1~^mDw+uL^7BDmz zHC)ZV!ZoB-4dBi^mJ_yP0O#Cm$Q>NZ*$p74yF$i%j?bshUp5m^q*8y`s+p=lHSI0in3T7E&al=l-9SvCa>OjLq)!VQFfjDxT zfeTbFxNtGtZEjp#o;D9I?zN=8-vc2qAAvqADm^GpQU8SR_hhN|G~rR`-$@)&hUE@L zEDJWC#u>LKB5&%!F=`5FQCY-U65kT>K=T5jd~)xp$oQI4S*MAL2=f56bKm^%?mUKh_gi^aP~af_G!x2A&HR z7Y8BZMN0`>leBQa^&nY>#P!gC3relr<`L3qjcX4XqrvqUnVG@0k07VGo*3|kOJU;0 z3$ep*VUxUX?wZ*S$jTb*Y_~|k2NBhYvweQcg6DDDg;RWfD+kZu_CQD#w+dD!uzM5I z#H||a#_i#dA#Szc9^4)cxx}p=+=<)XkXzguLDEokN60U3U8KZ&YZ+C+O)9sxxLxwv z6E|+S{Woq@-ng;;#*HmEZtS{oqv6Jly*F-j-MDe|#tl5CwH$ye_2{e!byk%`J;vZw z%V5LN0x$-qKmcsEdFXRWKq5S7HlUMXBS+OnkPI9fu8m`@bQ;J!HVj~%oPkl{Y@oIR zFQ%DBZ*8EyGKc4q1lY!GqKFa|qKpnDhM-VOc*MH&FJYT(xOQ?*LRyAXY*)`XcDLRq@WPm%(JVxYVpr7 zGEM5XkLLa6nt|GZnruykJX*<8Cy1l@_u)5RawSV!sQRw<9-PciXK~~(J(-#8ojlVw zeeT@EWL`7KN0>0>yKwWh=jJINek1uItv9U));?m1<%J^K;pw3%IyBUw*7X1J_8st1 zRoVaV-uK?TnMs>;Isr1&^d3M-2pI^SBp@I$J1LJuQ!oh#TQs03c16XC1hMztu&!-w zyOTs=?PUea>iS%F*KNxGd+vQRNk{Rp zO8v`+m#)o1#0ajhZBtntcD5SLM(lIh=V(Lkxg5Dt(t)Xd+WK{ZY3m;!Z>)3UM7~sl z3CtM8vQQ&AO02El0iQdY&n@Q* zXY-O(e9;2FsFIhJ>a$DJ7cS>Z@m|5_AnZb3zJ$+P&Q}-nxrk>TU$mSrLW-;Tf>K^m z#w!=|idDRHE?>Bc&tJmJ%K3tmcttTUF6F*5Ub2`khUG$DQOf65@`@FF9&BJ=&X*#R zC4A9JUQ*0gAgX!1WC>rsiZ3nYvzPGVa$d5KFGb8He0Di6tK_8>ykt4ASinnG^Hs>h zV!mK0uPo<_7xD$=ymB6|n9Iu+^A(Hv(gnN>Us}nF;SHa*WX}J!68g7hS8-dLe-l9+ z{JbkuL+`mArRI;=u8+>bO71nIF!2cOQQZ2$E)bBBq0XaV_z{z_w{*Y{XJ!*?$(`YP zY(iXO96=N$oHqca06RDUHI>S-aoWivv4caGfZ`1(EF|^VLB-g(^5Hrc4i^Ix^>Uco z2`YtyK?@t!sq+XHHnKBnxDv6I#?x)|!xhK*j9tJkWWu;e8kb1pQfXW!jVl-w?gF7e z)Ab_k7%;^x42G*X(7T0eIoN^W;y4iFwa#L&F$3%rxP?FoG^eJ&L&pf%r%CE$wK}Bm z9C*M9=}I!eTulU1#V3J-QYYic&Bt*7F|kU8#Cx&|6@0j4gPC;_HdcHNlCzsk(r=pQ zmzYR^xuQ+^mU(ns-j8;q;ZBaJLlE6y#15TDX<1Wike=xzIlE~+H4aiWW~C&}v(j+P zfIIki(PfAlN4tj%J(9g!4%x9d? z2`1qK^N7ueQu0U}2kF};$QPk;8F_fcHJ3rU`0M!23Q?DS}!Y@P0s4s-TtxydM&kCa9$W z??*(X3u;-w`!P`&f+`PqKOrhpP!$31r$l85sxsjHjHqluEf07P5S1gS6#?%-qH+aw zQo#E;QF($|8Ss8dRKB2A1-xIW-tYUqd3C`1H`V(iSriB#CkMRSH25zR)EX2TQPTxg z74Tk8)C@tL67XI@)J#ED2fSAkb%LON5%6A5)QN)f2fR0E-di*zGD}$01ibf?bCIBG z1KuZyDi%~-!26`;eStjB78dmZ@9)XEL{MhH+e6eGL9Im%5mhRvhJg2vn)e+F>Jt`? zs3dZpE2vXZ*hI|})M+SeqRIr-6!89usQH3wM)4B0Ku|3K?-xWZ6jUpUkf=q1S{LyC znW)8rIz8b1hNvZiY72P(Lex@0wFkTwQOg9?5%7LTRJowm2fTkJszOj30^aY5sua{2 zs3D@33uA+lDG;OV`8)xF8YATK9UMulTm?{*?vge#6)y;nKBJ1AqV!sZItbUD1Qkj*+_gL7E#?;PH4 zvN>JYTm_pRilj}DJ3zimWV;}*2KgS59fG_Dm}+UkkDezqx7gdk=Z*r`>NX zP8EP^ok2ge79+qHsnF>&8%`A*-oSHhxkH&=2lT1hj@GtxAxqf~)QVz&KR^bzq_r8s zgMKw}e=G8;noHCN>M~URh|J4#r<_U)aGEXy(oF^>TqW$t~v7HMX3A%;9Vh}I< z^FQ(^g=nj%GHS7`0-}g*W@&&}X^4Qf2?!J{^>@Ij1^e#JX>0p0&koB#0`^f$+o9M5 z@&-1-1!Y|I*R&6YYB?rz1TK~IrgDy-l3fS|K}(#nCgtfQbm^>7j!#3 zN9mLy637kVBS#$;+L*hrm5`Vm)fm9Aw^D}^SnG$NzpJBleQg81893>u-a_a9OB*+| zcDRImvJi?c5q(oiC`aIAOG1hWr$vo*&=D1Z!J?xP`Y1&hv3;|scxCm9;)Tm028}H& zY~w7UD+Mmfn2_4X%Y8&!igpMw^gq0?Il5kO=OItBk zl-2Qd9bwgdZtD8BCVg&sYikECmb7<-u3reHcu>P7b0cqhIGX8x!%Ataidfs!TH|l3 zY$eU9P5th>=prSyk!{jZZ!1?xaepd~@kcBJu{B0s#5Pe-7+faqB#l|*2Gk_F&mgXc zgrGME6-=$arMA8al?wG;REui;h7M8@=Rg{3k$YjRibYw==$DJ(oC-&qQ@&)W2VjXJ zTnGoUPQ=s!+^N&o*SB~0T5H$057Zer^@!gU+yDzTpra1KSp^wtc6PQ3JxeOIjEF8F zT83JXSLh7ZxC$*zfL+NdbjVL7ks6%zk_@ z8tODdO)=C|LrpW(bVJQB^ekv`Hq;zL%{A0KLoG1WLPMQys51-|I*(2?)M7)OZKx%N zI>%5;4Rx-e&V%Y^LoGMdT<5_}d8J-F}m3UU*IcX(ZunOjC#-~C*4mY$SIt1jyp&kd* zN$zZ%vuSyxn8p^q&KJVhadgh+#C}W>gkhL6svJjT5NTwbW*?UukSo}e0Wu`X%0yy@ z!AzxU9%x$Jd$4#c&9|kO55aDJx zbcsZgz_v!v;HJkPjrk5lj2UCblD3L?L^BSV#kbHAi6&5bA(kx=c}Z3#8g`SBFUT2d zW@6G^JCI>r1(?Bk3@)kkx#N}8Z`lNfpJa|7uZo|ES}r7fM37iakygfB90v6^3@4du ztq0PuIaMRgk)#Yo^Nofea;_x1Nj%$3lEygSc-}bydrVLP3ycgi8IRXD5jn=z4{#TJ zlMt`~nHSlD1p#w-=hS`HLJ{NQ;8&zU>e!dTI}`SM zO6c@vS#MRUnQCVGvRKSi5<>Q=6*v@3m9{ zzzI)zMMXKFr|N@?2;;hI>F?E9(tHOUi~c4Q2}7Auv|RjsIm=tNJ-KZA*R#rxEQmLK zP$C|hjf+>z#f)5DR=l{RRIt~|xTVFF5P@1;y{NddWL`CCMqF4aFC10-ic26CHJIlX zrw~h8>gUMp>uq!$DUssGWyP`;WpkDnFAOC!4ANDQj#@kiswsnMl@~)uY8V9=%Hf>< z)oO^og9LbI3@R+JT267;gCm|us0&0T*(;ECsYf&p8fJE~D1g4;w0; zZdb#pi;cr?m);;p{P6tG_f0Hf>hcymf^#(uesL_kij{3H?*0y$?N_S&;P2<|N znC(l+?#RO7M~$_y1sB{1q=3D2vr}&ukb(oHhtO`L zTk8O8hZX~_RTOJ`46)e*tz7UVqG@-NqkKK#c(OdG%^#KJBGmzfSy}dqU$9m9Da`jA z-r^uOl@Fjh$Sb@0>J>~{rYlrKT2@|OLDXRdrDf5*K*&Lps`?C)%_1qStin79NJC#J z7TVd-gR(sIsjs_li2HdG%Q>02tC*Kb2zlBFhwe#;PK44@;yx?$B z69}#F*jPwsH(?Wjgr%Hp#3@4bSy*#n4H+jFA9ac&T}=+(Ljq22b@VAlx|STd$8TUx zXQakv#dl#++$NmFZ6ZkACX#1bnL<(o!fGxH$`AmBWV%Q+35=nYO>Cw(m&@s$XJy&~ zBkuTKa1;5YCD0cR_E#e4%|`5Cq6i0XI^o~}L2ncx=ppuf)=ZHGgwYj-dzpn?p9x&4)>5Oo$Ajk{wvk|0JqG;o$5>o9(stdZO);f9#Cfs#7P`e#K z_Hg=L019_F4QnAvPNN)MNI6<8a|BesF$_Or`4Y;}Qp(XX2uM+mmWmv8Mk2jsGE0*v zOXYT!!chQLg&>5VN|C2!{qqz+o=)n^(-njAv=Vs|km=u1o>mKBmC&&*j&32d7Ot!& zCiG8a87H>5iiSf}QSxhgfJ}o|fY^}5eyggdcMp{k0RKn~O<=}h!2#qz zl196CL(G}Pc}~)P@hzLI`|-(+8tWGXCvJKOFvTxkqv<5K1_e=TkPI1)fTtO?R&93; z3YTzG>S|EHkp{}3zDAt-u7!n8yJ1!XS?E?xjRC+AqsE}>c^XA=T8$&w4NR1K=2^`I z7LOjIJ8JOZ6Tz-er1j3EKviV2Hb0Uz#A305cPG8a;k-F$A8$Mdpy~GQqWC z7Z*seef#iIH;vfuXfJN5tAw0Sdm~-eZx8OnCl8+X`yxsU?t4!^N<{y&>tlWS>f4V$ za=yTkY9??6ct@*5FOc88deBte7wyma-1H--=s7&yFr!Z*9QwjD248p?BF7{8)#72D=;v`c8BmU1fZZ@~IizlBj5u$I>{GQQ zj~qy09UU_ms?fFspaM0?H5MEG*k4x(9n$CoFQjN#Ekj0H(IFP;02(b^aY7Ljizg0G zJf1{6!|{y7GkP4084q&;!zC#l;?t}MTnqMrgn^q>&`u4up_rt1oI-jBSF$kd;m{(e zXDN(W1*vB#B+4V@X~ivjI3N4l9NnJ<%DOTU*lGAWPZa+SE$#<#?}<@1ZqhaM<(=q3}$^kk&5- zjG9BlaQXjgwJtvis^>zVG-Id?VW2dc>)YG0`MhY*kRanY=0^=#R(3ZYtde1Hq;W%K zOc#r=pVP-wpb6o8u<(c@MnR6a6^SJRbv_lxe8AhL3mPsk!`w|=C7K1p(H^~VU{pjz zLe(SIA1>-GXfx2lL;V2Tu3)$O^o;?+I}VL9sBerKJ`{|Rsv6uMlvBD2;bx6^+zeu& z#gCZM2}e;*>Cww%qYUoSr!OyC>aRTw6%uT2@2fFE$LS%*h-w_8U}p@X!C0|+s@KUd zw39I#BDXOEE$9kRcr`AbL7j&WFf8p6K=AU@T6fv{`t|jZ)lzV{y+UaFR8ITbld` zLZt`oH^!`PTo;N-?%_GG>wzQl(L+Q9sbRbN!b}0OCNyrjNRNb&Y8`XbFj=0m!;*3Z zE4D5O=;Nx!5fAjZmenN<5tlrLva=w?n(-;(3K%|%Oc##H+DeeOcG5dDdy{Az@`L1= zQ{U-TC@<;#-9x8<(mNf}@pX;ih^!2FPO~>HFJBmDXMiju8d@A!AnX7_kBKNc8MN=% zap;tY-$88Q)qo&sZkJir*Edd2Pamr2?F=A*h9M!7ezJIadQhJmOSc8nbreWhokNPt z6aPSsMQ?AbEvpL)eMDKE0UIith>#soLlsWQ1Cn;z1YU>oDiNe`Y7FmHW6 z{lp1wL~TQT?P(U!$$$Ny0K2LZbAEV2304zgPo$RE~;N|BN+o=CZaN^wPN(Z)->4(OhnB@DjGK9 z8^q0zpq^>{3{uzRXb>u>bOD^E7p`q}Zo3#|YF2s-z>W219SV&}md&k8NUPpkKWk zRQ}5=eHu0ANa3}3gTJwf1UxjFDV^j%FYdnCvrn!h)Ix9?An+ik%YjmFq`Vn+A3=Ti z>qKsc8nMZ-xT#6Fw-1ECw0k=>P>0!u`fPU#Lv%WJ>QHl^jr!Ktl=`yRSVuGC$WSBe zbD@SsZbS9+;ABJY@-*kDzA$uXG+MK@x}0NL>d%l>8f^A7CtwTNW?pEBN4B_ z5~8*+)HnyX!-tdzu*b3yQ>AM(M9_?4Cm&C3CDhD?s0m<$VsJj%(%uAyB;+*IppIxl z?i6{H4bDds1r?Q(CXvOsW)?UnFH{Wmy2<3AAwo0Vu zNTpQU9UJJtt=%oDYWOnn_@RQ#2?(7A@?)gp3LWls;r1LEI<=X0t)5a93b$RMB6rNj zx3sqK)QpIB470TmiWK^o^@aYL`X(nzucj4vrKzDd+1G=DpE|fI9Q5_|bz%$vd))#~ zgMN?DR)i0mb8N1!YxL{FCJHkp)lrE(#}3uv;U(xCBPYrJA%+^Wq_1Eg(%UCy?g;RP z9V>uqD@an|8uS7PUebhS54dW@8KxNGVD<@5^_9tCd5#>I+)y2EaJF$S2)?nUBZ?}C zc!q_@0j7%?N2vqKr08?$Ay2Xn<^gr9slE+UGK9ZQYi!9lHu$j$49^i??!D%VdvE^y zx_iIaaO`%w)SL>-sv|Q@BXTCPbmnUNmQV===H#J=hS3D1`n|goWIbGot&=t}?gL zcBxCMti@~{0z27RvSiWHg{76H5!Ka=G{gztgM|=9%cu2Edzf7c6)3210ir5PrQMBk zs_$r@hq+jGm$u}e^JyeJhbpA8F(jqW4v z=ER_Nzxh9yhbC0>5YhH8uBZWik~6|Yq_VJ_f_=bbp|=C6n1nUgVFeGB+5Sx$VH}fa zsi4qo2=JCwYia9R)}m>P50=F%nJ=0m+g-w%UXRwC24v`H9tR{dmV(h#4d%DKzK+@~ zaY>;q1UJT)aw+cVl6wp-^&Q9RFmmegcVKKk*04d`?hz{PSe;;C(EgR8Mt|J~lG!nA z6QNp~Jbm*o#?hAgCIfMisWvvRb%{}mCPjA>cnPU-*Rhte(jIQ2gh?obIuDkrW~&BR z0kN2C{H2ig#;O_Xyt-&q6~3aF3R1QTXn3XFW3{6LB6x7pDe`s~{R%#vpSB?=kD_5Q zn8j<>Qm)#{n%54+ruA>|R9-1Z=@f(Va>PAQ?1ezggOGMIa|GrcggXGNgJY2lNatqf zfXpRCyu7STx>9e?2oNjD7CPK*8X_hcxtS4inhyHO$^v!|zyNY%`)?B2TQ^!(K@Q-i zGYSd;H=SP?-hclCkUV*XF&L`*_B6zfhnACn4?@ey&&&>|R)qd53RcU7NK5Px zn*~~KHgJY=a|-iSh{dS+g@vx_8h<-hksS>7ZPeB3k$S@LVPK1qGULOiz2NMyOmmDRz{vyn3IK{yxcr!lg!G= zz;AX=Hhyz*vx9p=SR%k8KP!V+Ey1CHEXd9!QMAJs0?xu;_#eoWm0?_s_Jj5!`@UK zklYT6LD?_iIBo+j?9JR@YTr2`GYCpbh{Qtxp5Y`B@=?(w>ICd_$iTBCLmh9Z6Ag6| zft`~Wyns1}0KA@Iuq?v?q4(*AW2T{=V5qZ%#CwV1CP8=CLT0FoBBPnB5-%%_u+@gT z2Dj@C^%O(>g#oOhTI8kPV5Xrq7-5YDJKczAH`LQ2-8gbwZ?FxnCgwT=?;8zm6Amn0 zzeGI0GSpv3{su3NXY$d;&wg0MCUi@*;W% z#({bXp37L|-~g1ES$K8n}J@H`JMFW`9*&r3+^73O*spu^MQ^eT&dld;Hn7WsS1 zNNnUjGXBV1@4)sw#zv`;OIYN`@ckex{si*?%+Fzdf#*x|{Aa}aHOz0A;jv(Thv$1> zUHu*AKk)nj_kY6t7tDXdBtQSfbBGzyXCs$e@tnsE$A#R8z6kFZb0g*wZs?ccxg7L% z2)A7Ya|btKuZDRoYU?_f*W}C%2cmtBbjX=B~|%{{lQ0;(3Ssy~|zik@-G%ZGqj{cs?NdL+<*B%#RW76Ylzy z-v5O6&+r_;T?w?GgWUB6XRfnQQ!u`Q5B6v7`iy*j17Bwu>X$ISLZ<$L=UY4$p6~FG z^Iu_}W#}KkfH$4IA#VLHe9reU|Ay!9@U{hljpyJw7ti^4F2-{yp3CuEf#)i8^XpV2 zyms^zoZ)iI9@yQE=YBj7;&~X)qj;WFji@(NSCr_{rN?csQ=D@Hl6DCcRJda!9J> zbWTWSiO$)b)0opa2fyQ;rTC4Wu%fd}nS7GMqEo9oSK+s&6M$rEK}X)iIun%WTXBpU zeK&rb_t4M1^m8B1T%(;2u+IA#B_oog6cghgXPpl+FA{o^bw0sh?q!|HY=ZM?*7+M2 zk@yTb1Eb?vvdwlrCp=9^d|6mWCwANBSHe7>CH{q8c(gP1uL!V;Uj8Ou5>x-fI#Xbi znEIprqIB}kl%L=`(Rl^l@NJ2^`IZzGy_?<6J8$A}Q0@wOx!d;gknQDR@}fp3?q$lO zaC(Hxn4Yk`y~4L3tjT@!0OB!9$*e#8lq;az}Zjr{V(zs0;cSz$-Y1}1^ zyQOiDH13tgebRV98V^b15otUojmM?&gf#X_<0)x8EsbZS@vJnSlg9JX_^mWvkj9JB zcu5*BOXC%3{7xFLOXCmH2&iwXsK$Mg+Apa;O6na+y(_8rRMm(F3Xf+>K@s)j_(EYM zY==M($i$2ySczd{f!`C$ zlEP*yaco@pY$cwJ-@#`q32ed+UZNzjWT^NU#=KC(J)BL1QtlCK5>$MQWRqKpl~HWU z)re#?n|ck5F>KnkFvhZ!>tH0Y)Yf8U97|hQtc+*r*TZT8%eaIU<1TXM6)?Ok>jD@P zS@wl6Cb69QVr44J-2-A8%ex##8q0qiMmj6F6h;;+d<{l6n|>aQ95%yWtmLzqe*;m# zPT0k6;I84ybapGmoDvmw;!|WXQkltZi&?M30bLWn@uwEC$qK!4loaDdDh#d`X)si+ zNY8>8vtHzg4+pa~hQz5IF(giHoX<&~+Iaydfoj)J%!_yLk3Hoc8ZEu z!mQL%PSI8<0;W<=Jw;FQ>ySxdboo5~JC~J9(#38i7jo5*x$XuOBnhn8jzX?FTA6Om zByn)*sH(cERU#ySs=oz%=PamFW%!Bb#b9C8*-!v7Tj@0R1Ax-i-80|CJ6#a)Eus5i zZU*HZluWM~){C2gr4(zg8BXs$Qr)N#mgP*uT}E*yC}pIebpe!oP>i^-*3&KGSVVF3 zm|;B#x0vGSF~jM735jy+9C1+o$|;U9N;$<*X;s>vNAWE0@kQaz+6p_GQyo*RlX^@~ zQY@tDtd-K%L$*S-2O_8U)hIOweftTBdkw`sL4lNWGQ*FMcaB$2u}-Oq>Gs7i=wyWI z@)~VJ3;{p>0*WqreX)F=RYTZN24v^7d_+=DkxWzS5uV{Eg|D^NRwV#{k##2Sw;Fn- zQi{f2b6795@gn$X6x_*?hm{E4BJ&2Rx>ZN7 zIikmObS5He>uWUWupwz)N;cGTn_*ow8h#MJOLM7O7e@ln@sYH(R!hRy=y-A9G4Mdr zdm1VJ$Yq^qbb0(7==~br#03V8jaw4ei=r%_sM?@|mVec6#!BWO+7ck&db|>q}PTy#bY(Sw$)fhCQF;u!b zz$$C>q*z?9g{n>+>g+Fu-w52xL_V!c;0CSoW7#}XMTv@XT**kcHl^L$vm44$MU;kh z6|0J=F=U15(D^}8j-?Pq2JkSifnM!o)+Hi!TGvvfPG1t6XYIt-K+mY=P&Ft+aammg zPji~mg^cH7`9P&|2Yx50_u#ikyH{xIP7)=thf3m>zB0NsR7SUv%N+yD=uS~aRDyRw zH8}8D4*v$ty0>30b?ZJ>HLeCXPkrM!vIw;&sx}Nce9+F}gUotZU_;2h9Il3|+HR`r z$KWBUbHaYquZBlR_QMqQozxj$3!(Zl%Ed+&x>MiS%)_Bq-o?Pe7#5MXElHP)oFD@Viuh7Qf3JFW|S_coDx9&X-7oc&|B; z>iHSg>zkw?57x6#2?H1>v?WyPbF9XJ_F|wco@WGc3;p3xWDcY@yE36TT!WWTg}uZ` z)DD*b9F%_x%EX}pDgohshw)Nay=wcYabfUy9qx250Iz#lR+u~b#6yRiVNSR8CPUAU zpqtXsC@3fl&#<~#m4^MjQ7Ga_j5pdOIJ_l_c$M-Nv-Yv7DdrS&Do}ovs%hr5ZeNNv z#oABtL{W_t!uvb6_jj1}o*i4V5=ZE;AK0NOq%RFa=7+4it{CIh#}t8wpyDPX0;!Au z61JIvs&ps}N;DHI*leXC1Gko!D-D@eHhf2G9!>w+fcH;D1t+2x<9@P{)R|T5OzMoN zbtQFX*M`$r`zb2oRCW-*r|~cFyFmR4zfHKCi(y6o8-AM|f5&f&@elmAI`79cvknUh zRH*wYZhc1DbaJeN0F2E6N>eV|y3hK8RZTD_n0XuaTVIOTiO>P`72bO0PhiM~1_kEi zqZiiSumDD&{DuPSFXC-tLm^a_!)m&3hSKRpYxpap@0w|SFU%3v57gM8Ty{%sq^A(F z&(I$mfz}47zJIZ*#QBK|hB}A!Z#0{Lf0*?jm{lj3C!o8ZsF<^SMGU%w{tHVqkbK-e z|53h9^oLtN$=BKb66=tBo#QXHIyrp$@Ku|6PYU3g<}xZnYYRublWUx~=i-2_EdM;~ z?4S*kHf5eebQxzGg`bb`=Og@97PkdeeIa>W099@Nh1Nynz6kCY4~YK~crh2s`2CBm zOM@gL_b;(73z8hhHRTd+sDU1!dy|~ z@STKqdmHyO!_w1$$j^aqv$!_OI+s%|m@8|dYyjzexOPd)RkkJbjEChd(sH$J$@?Im zRRQ^|I-^G3eCUvR=TC=DKXmBQLx(_Eck+Olf%H#C`gh@dCX$63V07xcDF@+6vCv>* zK~=grf=J==1Ivnxh<^IVL(WKNgmpjMa#F5kzBP>chxGujaV5oKwd{eiFARg%v#>|F z^$4%Zo}aBy=dm6|h|C(7uS%&2M?#NrC`5MoPC*VHLRhnUL-fnY*DJ0ovfuTehsc~*$;O5tyC>kV=f zT*7_}ir39zSy^}OfNHX6G?FR3W-R~}h{B`-nIueWk5A^!#k=NIF&vWhj zdb;DOPI@R)vE0z~?KIWAWoIg>)2zk#E$14_;XaYW{oI0nc2QJsTl-}W|6u3v9r)P8 zu!m#4(=Vg%BBQkwne`s8(UM}Rp}&teV)8r}gMhkrb8S-WDKxX+$+V9U%Uw+Wm|M`* zZmy*|(XEd~oj5$HR41R3J<8Z&$NMJ{FMZ)>cD(RkcuKCNW(cWH{Papc$tXhL8e?LqM_f17~ig1+tsAbxc$}@YPa3gR>zehzgMX}NwEN( zu&!2nsv69Ohs5A@joO2CK-_*0vFX>TRdGGOI7T#e>76Q#Jl(#=kWE*A8|x+&XcWXq z?Lpq4b-n7;skNGU>T|U^u}l6_ow`%AZdH4`{ii_>d#|qv6YlLnU(XNlb%#(hKZ2vo ziMP62eB2XExm$%^b__X^w;D$KH#)u2w()-B3q*=*^!9%*rWG5G+%EbrKd|I<3BX;0{&;+6__dJ*xE*^hKyD4&*14brXGOt zI@3Ofu~h#;wLVjO1RJv7I)Jv(j?r7Q4yxUP@jBf+y@J(fvzfoc`a-3V-Qg)^G*vV^ zzCr|VFyqfK-ek^iRO>6Xm&O&rru-ZO z;Ws7h2i3C3*9Lr>^;hV$Cw-B)1U99{-E9st!!Rz#koLy!Rk}P|J-A|K{RdV_ zHO`<_5v&fWHO`bJcTrxD&=lnFjFdkxXs)EJbZYRQ5@5jq6vq~_3&mk=Mfa;Q{2Q%v zwQjS6hEoheU#OwcRf~VLBQ0o=!lhHw59MSe}?0DYw=Qv}_~Zl$yg%5N19#hh6lx32iP}iS(lQc56K~u9W=@>Ec7Jn}8}* z^-J@Yu{1mFp|aHco2*+Y(63|z2NQf77DgLl7Qx3IBJ{h#(0BF^eHVNo^slXZgs1m| zp6(5LqH*^=cuM&I?cM(y>p?A8^@2A5@gY_Ge0Y19qL4X!Bp94>_^8a`nbu<>jgNw9 zJl@~a6VlUJo-tgp_EIAAngv zVrk%}rNInL=)t8yxb?h9c6nC~)f<)HZ-WU_FL^-&>!$fPGwVf7a#o0nn8UqT3xYZH zT+9^f70S?OEN(O2U!}yiV15)`+F`vW3L5(u)*F2V@MixcelH6dN&G=%+M{`ZeP+E)37ylI&_0pSVkGp(zJ%WCAH}<&gx(Vgg^K$9pf9SA52UZNtPeHM z{h&Xgbhh@T^QlN@2V6euOXol^1}d|Ip>)2$Td*d+v}@w4Bi6*%B3J!t;+y`l{v}is z-v(>qtNt}%eWw9u0gDzbcy+%w{)Yb^vi?rv!33J5QZO9+fZ;%l{Xb~dztG*zWjn-< z+`lzUE$1=JE&qY-HkuTZgB;IKB22RK6I$3RM!zY%Q@1+xK8|OzZtu-)(TU@^fbl8T z*|e+b4Mwt6mu%Bk0A#FU^qa!Z)2;LRMY1gz$@wCZ3n`KdD3XZ;^Z6)o$`^@PQk08C zEEnn4C3<(&Ma*{*Q~cQSx)f*nIQK?VcxLu`?9ysyGykwW}}M-GidN388NZMSE*sw70?G z4vO|tr01zYJa>iSy$qTnVR26YD?rr0DBQi|5oh;PJcY2oKjd*ci<=CK2SpBK)jdRB zMb$krC^L^y@l7J`W*kcI3A^;35T*BoZtbP?puAv;^%QxWjGb(KGHOP713rFY>LC<7{LJfpJEugeht-2H*Jqm!xr136hk*+n8xULGv~d!)vNaa z5T3RO_FHf1y(wEbcCnHV#g4$&?9;2RVkZ9YU@7PFo-W_j^x-J^Z`n4kzJoZHYVYdS zJ36phF+jbG#0X?0ixwvD>s8KP^iYS-$x_a@Bc)08LmikN@cohQi2?a8$mbBMM(;I8 z#lM7=#;2GVkbw$H<^rxC(5=sO?8zf%m~Iasi-o>xnAkl%s8?OfOe}z}W7u3vW>wd- zsvDSj1M6PF=3mcv5?SnI=1!uR??$FivA(1Nn(723&m&Yo&!Ff}nz|2t?@G>|(d$`K z=PuT)!ra=d5tZ63EK{2u^{l&@c9@iBbn7`-f>Et!O-%5roe|C4dLEWdd_xRYZ`KQV zuiC}tgIN<1S}&5LYId=z-OR*)z-ya(nD1ulOfLyH3hcXuD*fdk&HT4A>lK~0@F+Cx z6?j?@`y233G@0@y>KMcn5DpNp!KLapX5#D&8ge~Y@bwRCsQ1$$~40M zgI0T&Wr@~}!(a;y1`-f|rFO%=$8U=IFKm|SD5omy4V(8d-@S~P_cPxv#!zbetnbCA z_t3uTe(P^K?ZVSQ@OSjs9{^iGq`!m{cD;QMP!ax1?=f!$e~5KJ>S9-sI*?*`HjnOZ<*wqf}YV1t~yVy03fnDr6$I-gjPQ`uq=cd>h@fYPXo^-vf4Db&U8;p`{0rBD~^d<-0{=xV}N^fBsjMyRX(gy{_JaZp#= zOpO#>?M$?Wv++KltDQrRhjq2b?XI?!JU_dL|sq0378trpvC2~G|lC$T~A~6rrY}lD4r^CIh*-7MtW)~R|&2BQDV$ESNw>F0p zmD(I3jYzv6V@u;XhxJ>;7N7>*Z!ZP2=1Z`KEjOQLNXmMddVwmJ^{>!7t6D}jbP(_i zvwj!!{jBi)s_mONiPwa0@=L3F|8vZGJ?Qy);rR{QGwm3>DLnT@{adVZU?nWL`2s_7 z?ajIsklyIjYA-YQvI@$oj`jRns~b)rxcMRz8!pWbs|Qx7@@B)+j#D1%EsAh2n-AHI zPAWI+Z5af=O?1|WGPL$dE0_6_$l`uUs=;F$3{Zb0@6M_PB5Rmuz)>xe`NSOFpTNON zp9_vvK+IpD`Cn$%JHbR=5sADjV+FuY?mdZjv$FTl3aMTYEj{4{;P1KN_D|nD+1%<9NaOD5{kU0}gt_hHE^=ukVo1*sg z_{~2avaUhLj(kI~YHxy7o1pw2teR8#17?aWC4h-yveFGs&8zfaqL{4oG6nLAI1^S} z6NtBS3*Iga1&&E2TudqvVp54rRkBrRMSF=RmFo<9Qn?O;A10L>Xbj{#@tdOV!S5qn zyV~I-ivKwi2wx1EZDSYgqRfRp+z$=c56hkKEsDg!ZXBBlcVO8CYi%cHsj?PcIfSzI|XG zNG~iV7xiJode{gxkZ!?|gFAb~=&9O|?Wy_uu{NPIxW^1^D{o`g<3{&H|GAJ_pxous z+HX8fin}1r0#0=o?H=xScAGW!>hF(`*>J*VUTBuvgEQWNEa@H+g<d9+#XF2u1^yW45q<&?AB-AF9NlHTh)!Yp?`AXnxn}~Y>pu#qB)iftPV-d@9c8c|n`pFdvd9FLjq z8S0=s1t9HVa&!pm!g2nyunqFJVJSVlizE^-5k3!l_*YYUxmccKD)_Cmf;b1wO)r8X z@sMW2dI_(SHeiN%880*g;Xu`Xb6dZYj$ziT@+I7Q&322h-mu>sp1U>7Sic8}G-!# z6xb(y(BKwjI#Tv?-}@L1vYI{Cez=Ii3#XGN4Rs!x+%OGM3{6pTfJ3b`(G!WCg8Q*k z@U9&l1)&VQM}F0mKk~T$U?cJaP*v}+`R}01QXN_!k~69jlkW!%5(*#n(H}C1D16*U zf5iMBGwYK+i%*#UQ)YeIXYnTzp!icC{TcI@S)cXM2bljLvkn9;Xh~t1pEDn>Px!xN z*5~Bl+!51&G2=^mH_Wfth8PkS`ZGwJ&DnO~6VULiugOnLQfvV{{Dt1>J7WBQX4bbM z%AAKRS$$*~a`c@+ELV(=j=KLrPR9_G-%K99>kgE&wI`S&SqC&`mCsHqH&0moEyseus97Ra=n!D-(x9;59CR6;k=0 ziPH<>9xn}g`rh^wZe2#6oH5_Qbvs`BdNlYS$$@$3 z$a;-pK=k5h&tW$q*>ql)aYUPCRJm`GN9u}B|38@Z`yl1={{Z$sNQL?T$*e$-3itnu zS=~g@2XTLm)q}YtQ8HHl24gkeW~?yefU)|oV64DWIVLMVg0YHMegb242tyE71e2A` zTyalUws0j3R%df19L70ZiI_}$S!9;7l`Bz`m2xOKuWN{0bSQ zAIJlKLw;uT`I#B?^F8^&5B&Ut{G0$>LMOBrW+42Cs-3(l-i*(n9|FpxW$PEtsvB+F zUEJKoGpf3{*#%=aH+RFhiJLdUxPhBD1dWw!wD@b-MaA}=vue-rM!@X|o}vg2Qa+!J zYry$5ZV4%7Q@Xg*EdhMf>;3Jx{+qrS7h;3(h@(cBO=mdNsHtyTyQa9VwWdDFhYQ>dNwe2CHUT~&DJLyIHFJ&GRCz{yeajkv+{`eW*7S>X zjf`{#MT)Ditb^6CT2?pV$VpRH>&d%~-aqabUdvj>AH&Cz^|VV8#gWeIlmYtiE<&q9W=H%q(#t)gICcfSV3Cz#R(S^>v zVL00)@J*@7+Ta4a9}1hG#~RlV6u`gY&)G@P|MK14?>(&Fd$@RqoGw}kSM(_6!Bq-R zES`8giFigbhvCuyatl3}bcsVz=@JLi=nepFA&>o|lqm{5Uv%pd-qv=;v7tdTy4U zo5?eN92`G}+H9@s=UF4q(-1Qhw~BmRfKwA43cJZa{nDLSNWu3DqLZvxSRex(9^tk# zbR`GA*w*+L2Q@qp6Um?->hKQuA!)Q{;|@S_gL)f4S<-Dd*!1?++SBSg(kq0~U-O^Z zdC#ZXb#oNuewHLqTqJ&MnhY>~Kmg!wNYyIJrvE>fqR7A+JI8Be24)P%06J^Ru`-!X z*YWLq#tilxF)+fx9tM8$z!C#OBNZb+rT{}hh*D|C3?K4J`3gcukXk&7XenS_(vKNM zKfj2B;29-!+i`^i0)qe$b=gUmElvHI370LUtlOxo#}NoA>H>nQKXximx&SBHhoA~X zzSeaFh7zn7+595pH!qTuqe2$DNuzuk@KJ^UFfvM(EM8n%QW+&f0#8TQ&>%I65lh=z z*Af_uP`wvcv7}@{X=U}C;>u#^F{DZn$P6V5msFI7*>N?sw%3Q3Eh!}hJtCB|Y)N%# zdHIrZXJc!%07i+as0UzCW5=dGPmvX+CCkgpDpyIbk?pn*8Ne-yM#QF9mMtnRcZ!lJ zU*DpmkF|Apk6Am7EsY&|J?S0PNNu5xZ>lE*rL}hVJ`9Sg*@kB#5Ug1FVP8CZ8YBr0*;MqveZhhT!y9|T%Vb`o( zKO+uawE6SB_sEP$pRR*>0d{nNv304RYDBB8mmk0aS&X~y*b)B`s^@WsQo))yU=iJC5PXwJJW8ODR)l(J?(vjNDAdUE(vs4$6{XdSN-HXg z=ayE_D=nT=y|8rg+{$?ojqP^&1YPEAus>S|<5*iC^TmC84_vzA;G^3PZococ$L~o? zOJnI_9jzVyCi>ux22cIQS_~>Qct{Ip9bPHxZhDb+8olbZP@vidB;V$B1wZ2>WV1Q! z>rrU6^^F_qryVnbzEV9*k?1i)hI)GtQ{GvFub~eVFH}eoqJGdGL=`!pwHC_YA{Lfa zRxT_hZMIOh=fIc&OQ-M&5LtWZIdJLaUv_Sm#W_7n;I=}a$y$Iy!jHhw4aTZbK6JAQ zD6r#X=Q()8opQhca^DwcKYj3$+e1+un>(P`>}rmc&_`lKBY4dEmijhS4!Zi}V-}8$ z%z8AYo77zQhX@2lQ%<3pS5V-}%*s#8z`sm2KQ~t`$beFb?0n!D{B$TgWsBY{4oKq&CnzA!8G{lRayc{4pX`BZdOiaSib@Qs#0cQ5Q$vNgD$eev36|8eu1@~C_A4huC#vB=9s~S zmDbPesDAIkV4*4HsA^>K{TVrGZefl)q(^pa!nk29q0qS!ApTXhK3Q9tEYyBSK#3SB zkY%x?J(iGjh8x-lgF$udD1(hQ^f87biI8)Q35J?%IJ^cRbc{&`l*t-X3DIm-=L(NjBeb3S1qik>$YEfhO5m1}hF~l7$Z0GDDpYbR9!oY^W86 zT4|^&40e*?T5Pyh87?60oJ?Rl5btIJY=`*`$b+l3hAO~z)J8)+6-YaV+G42d40XMs zZ7|d`40WTSZju-~0N4S#j-hVGa$yUe^Y8!~M?l{I_Qr7=3IpWrxDTjc%`Mc}I&r5O z`;7)vkU5R$PLJY_!<#z+Z_XUN#T0esGUvEb`i+^}nX5P#z;?_MqDL;J--K$iZC1F` zZM2dS+*2Fzs+>+(B8yH%ToB)FQ=DhhqC-`Z0QR$$oy&x=O&aG*<3ed%B#n!uafvi8 zmBwY#xLg|BrE!Hcu9U`A(%2!5You|lG_I4z_0qUO8at(NqcnC&qe~jQrE!xqZkEQa zED0BY7u^X-W$|)1Uhbivg22b6);z;56p3VhJeiv_5wNO1$F1_~*P6ezcY7WyJ3 z3~DIUA|+a3j$&wMaRa9%vIr|&=JXUPQ3`Wur1saHNos$?GD{Slg=frG94sQE1d&Fb zRIE5z6jT7am}f$<;%3n!ij^=HlUl5Vvsi#OM6kHg#Y!ZLA6BeHv4mO0iiai6BrJ$w zDFg*Ed?i6aj968S8%iS;&WfNJjwvf>@yu8}<5=`*qehPzn}F4_ri&diu8_hDMjBd3 zjc^t=oO0;u(T*6BAIS@<5iTG*S}rrF)ry42N$@zCHm0T`IO3PKq~IkDN?)XEU$P~2 zzcXNaLO=i&=vZ$<>xKsHxL6Z=lp?5a>uzvZCA8EH`Y(n5xdGFK^o*eY`O^P;1uL|PSrs;K!<3T{v>4^&0Z zk5(E~YXvenP(krYWRqYfn27;%n2%HzuMGNue&i9tW)<1kDuqW2o7H49h7<}1%p_rR za=;9)8fT6(#|O*_!e$L@e8~_>twN?<^g%OF0M+zCxk|O=Cuc95Yv^SnUTUi*nUl=P zDKmUia9mLrAmzKbSxicW>k)+;+YpW^h+?gbVy)E}@TDT$sdl*8h{#Oq@}(odX$XKz z<+{U*0AkxBS829dZJ$2jXI(IZr^9o&ic%d0&+RDG_4qv8?89XtUlvMa1KcAh^)$F| zl&NpDerZRxu-nY;>h|R*GUZt8<(R(PcZyvt*UP^%8JPRq&CI|=ssUTDf50OWTXbuYOVIoj=xcY{# zdV~df&=((-F#^0m#$!Ehm*vw`meDxmcjTccUl0|3szQhZjlgcRUb0(DPj{EE3-vaVS1-I% zrQyN7+ct=RSZ^bL>J~bQ!(2KA@1`aw%&=3sH^gkGk8fxD5q}5ACjb7vBKTwQbw2AlN(s}`CI%|$qDeUJ5`b^4aT`h7~ISG1@P=v6kZ4*?)S?d>DG-F+PFC%^3V zEmgXxZ9}4|%U6yVKA~W~3RDNlTpS4cJPUVGjlTY z)9YJm0Rh{VKHJ|$FHl(xrHbOLfgi#j&R$DW5q6-0Y8f`o4m*8d*mM6^I=^Ht*4Vk2 zF(4P%2MsFt5ZXS%rM5`9$mISe)+m*nIHbM3aCh5rl((KS_81=>cX)EiSvgt9Uemkn zJsYGjSUvX9igjQG(H1AEAd%ag*mmlu7McO_kCE$vRh1qJCpJFy8tgKhcKlJuHWS>r z%{$I4&{p2@mj)K?B@+G|VWU7*0KL4vPG;peKY=y?M6-8n6tOrq3Bx6u1|9lrTIAoz z8ym%r1Sx)!i6P~|%CL`GhoPV{J*?u}u|Xtt4~2HLnEN=3@VHb-=3qIU4>j8Y4mgWo zkn^bd$P8iaoLS%$yQ}y(te>+ANgY&QNyDlzoAhV}{R2{0%Ph>##|k^6Fk(QT_&Lh# zu!=9pR0}e*T;i}SLXS+0a7Gb&EDs^U;;alyHn+jU3^g36uS^#(upWcQxDuezZkW)9 zjTP(|*F@%;0-F?r=NLTC-~|SsPWrL25aqKV!UuJCipv#^lQcEVa!KQq=xO4}Eh3errQ^xKlZht_Pd1)hJo$JE@yx(86VC}n zEUg&kY?e4I3}K z1=reC=$@2UH1>_q)!+C*K7=Qw8x~`whw$N?vWMzvl9E{R* zgwyCo94XA4i5dHZz|^-*=X3kId;Cr(nvr!Pdwl+ zL(y=Z1J}|(GGxzukpwSgXa+9iQ^C$7o`=;!-akp1_bnU8@H3t-APB65fRE4?S@Q`B z3>oVNF4%%9z(^^bY(JJ?rqOc~73m^bq`4?kAWi5?tR=`sm8(YY+2eCDl!Gq{cw@NB zycF__HTv#kw!6lG;$9Ri?iwxr1(bJrFEZv-@x^nIujN!yla-T5d-=)~Zk@FCZEGb` z+D9@nE^BqSEM%WYNtxQ!MUDcu1h%Fc{{f;~(~am{eW#|wacVlu9F{>pbZVN2M5OA* zt#!G2d4;yWb^cl$UOEw{Xa%hC=YFo8sI9xuA@w@wwa|(L7VhU3LNyBds9Wj4 z)mIA&fbXA`&Hc3Xol|H8D<>d;nfGOBaO&RR$Ra?!GU@E;-Qsu{U0* zQJPwIUS2`uz@~oGEomsJ&VU+%LYmN30K$jh;MLHC&a~mQF%4-IW*A&(rp3k|k2H8R zrg!MAg=`GRd_T(IqcN)+Jk8)42G248^UQM%o=>y7Hq$kehtX~-W>pXEv+7LKVmo8F zThrn@W8y$1cE%_g?qP=wSD0HH+Zl)737tu*Ti3M7oyp#b6g*-In>r0o3Z7Iv>3A~n zWaG)flZU4OPa&QeC$Om}!kh(=W^8UUH>P!+=HVhm!=9jrCUP~JCUTn2vE7F0To=>1 zLrmueb4JlbPSd#y(>cSABT3~TCQR#?EyKdYC<-l-Ms=;iztPp5ABU&zO!iS5q1#u(exoGjxCC4v>Mu?peZo?{tYqXX>(#EtHm~Agc%`Wq|{_~3pfDeur2^7RqPF{ z?G9zWTV(!is{t_}o^E8nF@U>2>T~k$4{o_QRqIp~l#}?GUn3_?#69Tyk`-*2Bq>cm zHZ^&Y$P9Lkks0Kq8$!!slV}`U2ZU3-8+C;s*6HLmHia@do_AOsnA`Ugu${}=(1Tq# zpl-R4fsWqi+V>M_hR6R2v-&3N9&zhe$b-v);<$~916zr7zk|T8&LpfW{7mGuv4}PV z0ct>)B79G;-{oni)Fwd{0k#a$c6w#A!Jc6+wt}}IJop(8#f`ne?w%U0%XFc1NaFiq zilatD72EbyR)~?>DD4Qs&2~Vhx8W8GZgYUK>=oEVB~%R~S?vt^k*tVj zQL@j*t$-BVkh>bEi(QQLx_Wz8qtRZeEG5ODZGtCJ6lHn(pcz00OtS+{hmIDx#IXZz z`(JHp$b77^^D*PFe1I`=)daKVs)M8u&V*ZAXhkOV`$U!F(7C=Xq{H2F_=lz+7Gu)% zq`@|!h?6FdPin%UeNqSX3MFM_CbhODwX}95`IFYQo&h;hFeuqmW*weJ+R+R1@GKmO zXL5xy7G<`!HTxm7X12nvJrlc>jfdG~X{Rn~Y~iP7^2SV$kOhGHrC=Zkp{(14kkNfs zALI}Ahi4|~|1tL+@NpDp-#c5csI02xF54$J z7OPidELqmsGVXH0V9DG`cb0;Rqhf55yb%V|i|Hkh$n@TOH3UKrD#50NKxiR^#7lsL z0QP$c^DdKofx3X>Q;hhu$G`v#8&}8(_oR{=h+)O^KaM)eWf4zuoaRMZMOF z?m#?!9Eoedap8&cAn)rDFH0|NIF;l=DijW{sW@`zYJ~&(wpO@SBKO{0@&}8a)tlg_ znYMDA9i3(2FnA}gv)9KN$RIw(O4L7X#IMNx^*XOc5)si#xuQ35sM*R;I0XNv^`XSB z))uO9ln|r_NvzvHylw|DZAr*=6$#^z$FGyx+8a6q3rg;>ql{wCV2;B&^}x4 z`(;i~n~^zbP9~S}A$rTR&796=9K0>|1HSBFF^A`K3-iF|mVnR2##1r**(xY3PzxZ? z!3C}cGa;u~g^35e&=1>^f&(n2sJOu3TT*anlnxngnQ0RZSvM4eHlNgZgQXcP-OxrE zGML$khL&l_lMH!^A^Qw@x*^XbcQUjE1!lFx&`SA6)NDgO%24MRGPa{C40)*m7ccS( z_i|>?))e$WAnz?1(0KMtlaxgK&FD50$4ePin6j{O{?l+F-jHB8 z@o~$s{>M=R?J7+In@Jl=8k=HI>GLz}GT6R;U)mkSRe`a?9+Gmi57u-yC*$0}o?0tg z?*1Oj)3XT0VymeS+`|ma-?Hjfwcp9e7{}*(S%NfsFH2-c;e1=JLhj01O(J{>|)$4v}c12dEGvW?{#o~=xA(2x%&LNLTJ9r;nUMT1~XLA z>oW#J=JonqgAbMTU^r>2d|H&XS^)e&6g}`XSSz2DL0K&V!$&WU{hVWn4btqz&_6YH z!XzR#YE}ZSQ(bQw8m1z&nqiVlU(6}Ma?~zU~ zHk>pGBKPB1+g>(a-i)SIPC|35Ti`!HI}^upiTYWL7+M$trWXDYNfY4sTfFS+c3Yn> z30CEA#0THh@6+SKLfh@Np0KCi?*(VS8BMXrKB>>=#S7u28x0A2POx-^f+rg%+b8$= z-27D`bmO*vidTi%CVJC7_Q^pPnuWh;#`|cNEkO;>FzbW{e+tjtU_epMfIp5wjDb$P z-NHOCx5bDjf4tNOlYAIL_Nf%Q5NF%GI%i^=lj@`6Oq(iXm`C#pWx38_#JBP)xkc-P zZN-OiJ9UEPeK#uMhPia{t#W#ZeGgT|Y zC&IBe27oDDNuPkx?|Au2#?QWCD-NZ}-A$PAoS?c!eh5`OQe+nM~ceC2ma4MAI(-dSU_21Q4c0%p=@c111p|#aGbS1I2 z+J}g=wu(C9%w9$Q*15DXUq2-=5bz9$4j3-C#~T-qrQ`WZN;Gy^Ozh_Woju%WQL~4N z!n#Pqu4$-U-ypymh@7{zo5N!G@{3*3wBNrU3rE8hHTfGh%-S5PPZ-LF{Hf|2AamW) z;o5*bMN(3T4|H|5Er)Mi?o!vYfh6ns5#f;E@}Uf3n$xqOGV1Koy&;-MX0(biEtwq+ zj8%~lXTL^UYYm*$hZ3SuR&rOr>LzmaOIi^oSpnNk%sv-rrqCBX>Xc2?$=mSnXRGO6`;!9=Ep^UYf#=waoV*!2E_Kt*T3(V^3Y-+~Z z6iR3Yylqn)J+uV^<{el^wX|(UZ`cS80BX8W1KZ-^C(>&I&0QfmoXfV#;XDmZb?iEg z*FfFcwzUlj$;EZzP}w}b3mf?ShPJqyxAI$!`;YZSD-%1;q6@@m`$k2-$Bq=)k#Ij` z&nC@Xw1(Ck2!@*B3wdLQ&TruoIadzmdGIMaLVmdT?R4?mYILl67L>#Ja=1V~b{#)= z(v~-EZtK)IIZEw6VQbDvWe(!HHZ`FClY{4# zAc34njCP1b#p+edHq@+Iww&lh#k|E;^G6*NQn8BkJPHQ08|t9hgScg_%V_di$@_i- z6~$>f4fd7}H}Cy4f~-1YjuN4ukYfD-H=*|$7r1eWj^c^ zVlZJ&<7Avjiq0uXhnFKl4TKWoj3KvScy)oC@nOHNVkaKB8o-?OQjo)%Xm2gU+%`x7CtCC z+)FBs-LR%&@#-qMvu*0(UP3f6k+W%six$%;W_@F*{=|xA?57BFc-TgYNqG3yjBUUf zhp$RZGam5+Vn*vZ)ayq0m>c*!!~>%7t;6MgU?X^ATwlivWmIR{NaCMF?5T_CMF`-D z2}j@^HQ1IA^r7TUO>%u$fd_fHzJ)fZ=p@$#DCl8;6G5m@@&QSBP9Z(jyqE=;Jg~im znQVwJ9STXP9;B8$Vi^50G-~iQhld&t_h8T_E9h#<2u?-94?7TsW=YmAw{MZ#x3W%tey&2Bu35(% z-_X_qU9+~f_N>7c8=)f&)%n;Zi5H3M@##HPxL=GZ zscTbeeJuTRY-J=i^JqLtD=b8);ilFG5JK9+SRY6tJ>O{ zYeJnUp%ol#CsFN%oh_gT=yq%qn48Ychb1O4vBHG~|k*Ay-@sExDW`rKA8FbH(`(^COKp?3Cu@6p+RoROE7V zpe&bPfJevxU<(xo{kf$D1#z+bwVDS_IyEm3vGQ|s^VEVIXwDTD6y>Ur56q*{#+ykk z$}23Ou}RaviZY8mL)?H`QVc~t1d54XEzQX#)w<5;M6Q;?k-S=32z9(tDCVV%FwLr^ zrNud;4mCNF0${0@n*)VDEjJG}(Q*s(;h#RYu%HC^!s3D={FW5w;kUFTN6RhB%PGNc zKE*FCC@j_Tu+y7MoMhJ~EiW&Z{Mi>mj4^AdKVw~qRbvc?IK(N(AP*BOX0$tftH-(tGY&87R?!aVvdDaLPJUJ?BkQG6&g(r*E(3#~|sUyz5~ zN(zc{CLX5hL_yRQU4e$EX_Hys6FH{tly=(pMRz!P)C66WehaAPg~jw+#Oqv?Pc<(p zqIW6IDOPEm(k;Feev9d)i%aQ+@TT;OZ;Ia%%B++(QfYp%oAW1&n>s0FDbK33v_#7* z&7sU8*IKG}VeHXuDO#%(eI38~#W|UWsXy<|Io}r{ra^cDrq_i-fDgZr9{9=UA zZvnm?YKNC8Ehq6&K@6p*I#DR)_|pv@l=Er>}}54oaQNUldxbl)8Y*EXdE# z&>#z&E~mRjxm<1%noaklFH66Yr9Z;bpJ1*Rnd=pn{sv2rFzsbI<7HXjr8gB@+C<%U*aDDw=t z(op6bN|mAb4P}9$2tCnqQc+coF_gumFzSKA=yF3@VJIs}b5w)o=xS0PRn{8Hv4*nF zP-2uvWhjqsFxUx(5*SH&v>B#nVAqCgk+yL~(jOa2yPn~9aGj0o0$e-LXqVu+6!(|mg2Jiy3Orwh`(NO?8u!=W`X#O&=H3Zy z$ZJUg>N@6zA%8b4h8yfg<{l@zZ^A8*Ifm zBP>Jt94T%D?hagc;kpOceYhTw4eb$JkKz6W*+_Z^@DG5W$cFcG-2Vfrs*1Z(b$eBJ zojOw-&AH5ORq~`rEYUNjJ55bYN=`|gbfy}IKc>hEDTxZ?)Zs{$m@>UPP2=%BrDtl< z1Rf71nIR{7Jaf;KyjT^Iw2k2|^-SEQNvSX{3pLntSa+HNWa{~>`!segJC8|;7xIu_vF?e;JoPTtT{w{? zDt7|{+$+F+0^Bda0|GnyJkrg34-aWb@Mj)&2Rl{n{tHtQQ`XNrNA8~Y8B3!! zlB8GYhpu;Vn3f0Jbx!J& z;3WZG72vl5ye2@e0DS`V3oszS?*w>VfZYP@5#S90-W1?10p1qij{>|ezy|_+D8NSo zd@R791o*Q6p9=670X`GpuLAr{fV~3P0{mToF9i5ffUgAjrvP6I@Gk+r6JVbJ`vr&y z(5>(ud5Qqr1UOZI(*)SAoUWkno*|yj6yPj@JX<`SBc9F`Pvg!z-YkpoRFmtfA3>1jNwk->p$G(W?4kKuaqp0VXpGW1Et z@vyjb9u|-DePo&-PWuy~U4kcbydS#l3QKALR1}sR0#p^20+$w23QWSK_QIL6%+h*U zB?MN}<4GW3)K!cm0y6plbT%3Stp*zd4HOp}JB376$N5Rke*6_k>17l85i5>O8~})C znZE-_V3S@4NMw_D1DI?|{X8h!`|2y9Y@f9Us1!E!4S-ZOZBzvufKG3%fWyxjCss(K z*vz&HDT5ucsX`jftd0t43_Egjg*2AUx)KS-vFtMd#KXiL&E#_F z4+vb_TrQmrcx+*XG?lHJm+T%TP4~>^)j4hs2gfhxVEqaXYM1hA)GZO|H!S1Xosh#T z5U9qJ*UN&71gw{&$%!ldECq%Y3Tyl_efXl)euX}K@hZQX0u7gvwSJ8{K~jYZxvF=5NXz6BmqE&u91&H!6=7>NXR5Z z9J1ji80g?1vJV=vJ`T8I$~sLdhSpHn-Ip>Chq1G{9fYIs%yr5ku?%+uTuxJ8jZ%Pf~*I-PH;yGyka4}? z@i+UVlvWZ8&eNJ9E}*wSrWp?6Cy;za3!S1Hbb5>v`a+}4ZbMMe2v4MH*_(o{aHb=( z;f0V8J)(I@N+=#>{TOHD!1yOgfys7D)Yn~5PrC;$hv^i(t1mN!tN@(U7oGqQkr0Tm zxAbwBN~VGPlZESeGMeBb{{o*=+d$MgvpZ=|W_Pl%XOBkGsgYomzl?;RXETy}rq`WA zUQv&dx3j%$jzX3a@>E!vgedehGzbJr(CsqFo&sQ+y&Xx$AYT%T4v(eG$&f-O+UiUK zW65--XcP?+CcWYG38P(1L@0v=#T7aUnC& zTK2^xnbPN>Q)lk zc9Wp{^CWZx69{N}ALQH%VRjhJ&2DEfgU}bAj1ELY>u%g<;?bXl&UX*QaOk_=59Cx~ z-+~)s)=-JQ@QlsLWK`t=N|70u38|63@Dbdl-@|MHWJLPHR%QxGmXntVi<|U#0>bP8 z%iaZq$Zu9^K7E2kGCZ|B1JmEg3ZCWq!r9>*e=b8sVLJhyx*)w~KMPX>(`cldU*qXF zgIVOIuEX;StTsQKPfmsl{Y5O9NXknwsA9a$%Se(rHBbVB3H%*1!=-)UvheJkcp|6C zW#KtH{YT?VzDnWK0wv}J$fck4C!YcMJ0RyK2XMC=cjep#IgOXTaD`94o^%)Z7umyl zq0^U6ErT4p=aEzp93OYj^Up`kX`s9r8v_9%2BPv9B&Gj03J}dxl|thQmKFNYBoq!| z6MRpP45D>5jU<>%!1q)zlzgN*kSF~KA2pwS!t4*w*+yT+KgWmo93P7z^C#+pAPcYC zpHR=-Z9XD8yZkA$Kc%pK>g#)8S7Cst0!a?i#~uhDA!N8D)*I29!40vFJy1D)ADk391# zq$V1MIc}I4Vf33PpNZczt7pshnMh8p1mEH^5l_v0io4G()XtUdb15*Wahjmp z=gA-s3wTR$;~IEch^J%&Z*jhC{+A-zJ9w17)EPisME7&~ymm3&;b zX=Gncj|=-!NmBDlx<^kzOv?6Z*_@_G=6#U3vTuOK#?(NyeItj9?3(~*bm6&FDc;R z;VG8dk3eyFf{*dZ;86r(0u4`uD~88pvxO2o$#JM7a8JqRI>J3Oh|95m?W8B-@hoMI zH*#KJw*8!JPNxJf#3XnzCc#UT0QIK?sQ*&?W!d~EwbgH(oCe$GwU|`B!;6_?_sQnd zlESh+^y~jZ)0 zgY=r@hT>I$%yW=&CUyA%ft>Cj<4y1%(`drWN-$;mbs1xy*dIwq+!u-cuih64?u-0n zU*wW~k>~bB-rN`Q?2pXeANleA2x4OdM-{XO(#qhV_ieH<9WO&8AGVkj`yEaflzRBB z3`_5T0Q`*6Z=U=v5d-Bt*?xDB7`(@cfl3N|#7U{|%l7-67^s{WX!ZvvE4-jD74pvZ zN4W0~)Y>1*W;VUIm+gInZL!~J3s8987Tt>74V^u_fYTPIK)jUN zf~M|mxbF{d2%KQ=k9kk>3VWJ@8kkgr03|@$zwPujPKQ?kBGCM6oKCLi8U2Dl<2PS9 z3+ioD2q(>FL17RrW|liOI7hM18CHXHsRnb2X#ztugVzRxnV6&Vs6O!daF#OE>W`o{ z7f@}IqBF^bsEmCvvNSN0B-5087S-`GprN-2WkISbCfzjYGR3|^0aI?+S0Vc7LLyZ?V-_Dy;Gw&Bw)9zI4J1H{SjTQ>JeV0OnOVBLN1@cza!zYk@cNcQGha${PMq}Cc z(QO%B;o1E?m_zO#Ld+THfjy`P2vJFw6XU@l1dqW7hQh!7CBT}BjU>Sm%a(>8Pd z(teJzNYk*AdzeJHpXbe+Od{Nzd(fs612Iv0o|=}uirC5oT=C)tw%^n>`yQvqSusJym72kt< zmb?q-iI9 zf;+qFb(0v)_Z6rxgqwQsY=3~3cHH-%&1m?0!P??0<8T}_(ws#H+&+pYxYB8!m>X>wP5Cuclke4Z7rwE^BR4o zU_Bhv{jFf0FGCSFe*jlNsK1F++TFexPS0WG{Hfe%aHhAPMy9P zvBuxV)U<7=rr*WXbYE;u@%f^3q(5yA=A2W=34FQ+-g6)Eo~Od2yTg0VBhpqVoeHus zkn=S)PcTmbD-TmlQ12DPWvo@>9Wrz z%;vyJ_BjHx#XgsAwgyhNcc}EaGw`w(!Nol19_@>9M;xbSQVU-0JgN2-P7KXFnmDUp z;nDfnscne36VJ3KkU9$w*Aa=Y7JDz(;~opd+4c>DTqKY;3gjF!2eEH;VpH$B4fnLv zDn)|Zodkrx!@(aF5NYm>NpqhQ_7kEZF=-xf@IM79c?h{?qx{*3^RRP22lz*ccA=(J z#$&jrRVBrFobaeD;h%8u6#pqFZ8fcWKoqEhS8oP$y~_z$6cey$b6}DE44g@7$n$6R zule1az<=4#s^%LsieHGS)r&E;dTB7t%Y$iNQO)Zq&1*4fdI#h6spjbv`n#CW*9Sv) zt7apGzUhQ62`sVSQU|OS)NILW7WldSwrct*#vfwRzw6x7d%x%0FAprY|LEMW2&}N* zA1vd8!J2-^@0JI;;RKD}t_YmM?2lFRLrfc-1^oqbmyg;sTkP2roe=Cq{9i++`%mINs)HnwuBUkN@JiI^h*8T{>>_1~MBX+qyRR{V5+n69z z>d*@PZ)kuD?55=5eQkap;Z*2zb)YsSoDx2j1x{m}a(_W%wE|D}mvmQ-qeJ_jDrl%q zG!&X>aCDi$9bJB{_7MsFM(raCijE9FkpuqI84=KLG0=&C(r(>%C@)Gs?R`XrMv*R4 zA&5`}M2JXFM72-R_%6>#{_`aK_VnU{oLjn{%>#ng$zD5)oT_JNZ-3pv3Et_zXDv zro?Ax_E{qF*#{*)N9&u4I-Z9-qMH@xW6afNrVz_@0SqYBVn6Cat=E4B!_7rhz-Zb^ z^`U@EoB}SGkf+?sHkahkE!Ys7@ODM6*9dub|yRbG6DhDDMT&_aswZ z0CoL93KT z>sJVw-5U;r-*Vaizyl^FiuO+)?WnGLH;?u&guvePMnrSl-%uFot;ZB^U*MgFvh z6w&&50hr{v;jA6m5%v_FV==wj+u%$+6NMr}zSDV{Zhk}_LeD^K)RAJJDPq%vd)81M zXA3M%x97y|2MSmIW?j_HDYk2m5^XouVGg0+%!UF5Ub!;qKL=o74T_ z=+^XoI<}@SMu`ug@TFK>(8zmG9}ovp=2kpCqz{CzVEiQIVI8J&mj=@KO!k=03HswY z2C|o^eO%BRi~|{tb9wD2z#*q|hW|+&{N0r>;u2o!zltd{_+G)T7-T$5>^+U>Gy%{s zc!t7^Kt24gn_jB-3p%_zhJS(P%JE;#7#{`pi+WJqoLovBb%42F*5OheBkLO4f&C@o z&{(iv(Sshb>UdR$bHOnF3xXc>9e)pfn%8vmHsTfg(N<-g2OMzj=D%2!@f9_#;;}m>zF#j-ZNrTydm1@P2HSBrM-j9GQ%_Z__g1~ z;fUCx2FaO0tCjFXICBo4#qPuL$W*k(AN3*U&Y&jm>p^V|6Nx|2FlvG2f65=`__@>0zwn3U{u?ReGybr`e-l0Y z6~$o&znR>TquQ_*IMd#%o1F}tQX8oFXBf&;p+);Q&Eb^1F&lxW>l|4V6iBfVc)mcc za*$#p@FIa+>mbEO;AH}Ntb-IAfmaFSY6mGc0)HuxYaFE52)tGx*EvYB5qP6O9_Jv% zM&KO+dAx%Z8-e!-K-7ba?r- zyo+Dwzm>7B-S*c`xF25DeKHJn?(Dy|Ymfb}krxpLchjS>LzRG#z9{mXWd_(ZRQPxKAzZV!or+ak%bD`mIkr$IQ^-R^P zYNvbgEiZ)!@XYQz_)L#oM0kA%RiI<#zcA@ifX^7a0^qMqz5(EGOu5mpFE?OG?M@cB z3lkA4b2r-#d-q2FX1+eW%IL*e0?rW{$JxK2i1#q-@9egK+rHW$Sp}MauR*GNDb+8d zseTnr6^OHY5PBbl?u>?Bi_l~G>3BwmxBI>@MEf3qDbgDaRMj=Gt=?_kgc%K*>8>gK zRlt_0HyiM8U#l!qB-$OdZ$aT$x%wX@I&&MWSk%JKMff3xiuQ&dX4eIp?Aw6_?h%Gv z*En3BHpDT^ucOFyKt5}j?^Bh26Ga{eWQ7A7jA&-Y`p_?&q#e4{e&GzF_glgUh#7XcQ?_{c(mjbZ`-r*gDZk`6jR(OSX5C$27 zvrdL5cn9G!gFpoAm!k-`xdMoCIDmIzcxboWT4MJ_5nei+u;#-byAvah&Zw;}cy4zP zBT!$@*bhK`pV$}a-xvAQzQ}j`B1!urQ~9CG^8Jy}{>aJuBNyzCT)#i^$o|N0_eT&L zUfOwgd|V8lx$x4?pPyiX1@O?0y^00I*{9M{@sD`S1o{I)&rNP75s-f}?OOwW*PWjJ z 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%0A~hZvn*kLTu!iUeK_jId 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

-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�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�lHrpq1dV@%d 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 z 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

MmWffA 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≪$3pOa!eEc%GX{1c+t_ZSy& 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�FsJU{1UncJxGr= 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 Mw*hj*8Z)`H`#^5d4W&cml=?dhmp%Fr(;%t}<8g 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.o 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�i)=5Uucx%)qQ9ouOT@yHmin<4S=zX{ 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 sourceWidth || top + height > sourceHeight) { + throw new Error("Crop rectangle does not fit within image data."); + } + + this.image = image; + this.left = left; + this.top = top; + } + + // These methods use an integer calculation for luminance derived from: + // Y = 0.299R + 0.587G + 0.114B + public override function getRow(y:int, row:Array):Array { + if (y < 0 || y >= image.height) { + throw new Error("Requested row is outside the image: " + y); + } + var width:int = image.width; + if (row == null || row.length < width) { + row = new Array(width); + } + + if (rgbData == null || rgbData.length < width) + { + rgbData = new Array(width); + } + this.getRGB(left, top + y, width, 1, rgbData, 0, image.width); + for (var x:int = 0; x < width; x++) { + var pixel:int = rgbData[x]; + var luminance:int = (306 * ((pixel >> 16) & 0xFF) + + 601 * ((pixel >> 8) & 0xFF) + + 117 * (pixel & 0xFF)) >> 10; + row[x] = luminance; + } + return row; + } + + public override function getMatrix():Array { + var width:int = image.width; + var height:int = image.height; + var area:int = width * height; + var matrix:Array = new Array(area); + + var rgb:Array = new Array(area); + this.getRGB(left, top, width, height, rgb, 0, image.width); + for (var y:int = 0; y < height; y++) { + var offset:int = y * width; + for (var x:int = 0; x < width; x++) { + var pixel:int = rgb[offset + x]; + var luminance:int = (306 * ((pixel >> 16) & 0xFF) + + 601 * ((pixel >> 8) & 0xFF) + + 117 * (pixel & 0xFF)) >> 10; + matrix[offset + x] = luminance; + } + } + return matrix; + } + + public override function isCropSupported():Boolean + { + return false; + } + + public override function crop(left:int, top:int, width:int, height:int):LuminanceSource + { + return new BufferedImageLuminanceSource(image, left, top, width, height); + } + + + + // Can't run AffineTransforms on images of unknown format. + public override function isRotateSupported():Boolean + { + return false; + //return image.getType() != BufferedImage.TYPE_CUSTOM; + } + + + public override function rotateCounterClockwise():LuminanceSource + { + if (!isRotateSupported()) + { + throw new Error("Rotate not supported"); + } + // todo + return null; + /* + var sourceWidth:int = image.getWidth(); + var sourceHeight:int = image.getHeight(); + + // Rotate 90 degrees counterclockwise. + var transform:AffineTransform = new AffineTransform(0.0, -1.0, 1.0, 0.0, 0.0, sourceWidth); + var op:BufferedImageOp = new AffineTransformOp(transform, AffineTransformOp.TYPE_NEAREST_NEIGHBOR); + + // Note width/height are flipped since we are rotating 90 degrees. + var rotatedImage:BufferedImage = new BufferedImage(sourceHeight, sourceWidth, image.getType()); + op.filter(image, rotatedImage); + + // Maintain the cropped region, but rotate it too. + var width:int = getWidth(); + return new BufferedImageLuminanceSource(rotatedImage, top, sourceWidth - (left + width), + getHeight(), width); + */ + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/ChecksumException.as b/FairyGUI-as3/src/com/google/zxing/ChecksumException.as new file mode 100644 index 0000000..d564a1b --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/ChecksumException.as @@ -0,0 +1,39 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing +{ + +/** + * Thrown when a barcode was successfully detected and decoded, but + * was not returned because its checksum feature failed. + * + * @author Sean Owen + */ +public class ChecksumException extends ReaderException { + + private static var instance:ChecksumException = new ChecksumException(); + + public function ChecksumException() { + // do nothing + } + + public static function getChecksumInstance():ChecksumException { + return instance; + } +} + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/ClassImportor.as b/FairyGUI-as3/src/com/google/zxing/ClassImportor.as new file mode 100644 index 0000000..575eddb --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/ClassImportor.as @@ -0,0 +1,77 @@ + +package com.google.zxing +{ + import com.google.zxing.qrcode.QRCodeWriter; + import com.google.zxing.MultiFormatWriter; + //-------------------------------------------------------------------------- + // + // Imports + // + //-------------------------------------------------------------------------- + + /** + * ClassImportor.as class. Force import classes to *.swc. + * @author yangboz + * @langVersion 3.0 + * @playerVersion 11.2+ + * @airVersion 3.2+ + * Created Apr 23, 2014 3:48:38 PM + * @history 12/30/13, + */ + public class ClassImportor + { + //-------------------------------------------------------------------------- + // + // Variables + // + //-------------------------------------------------------------------------- + MultiFormatWriter; + QRCodeWriter; + //---------------------------------- + // CONSTANTS + //---------------------------------- + + //-------------------------------------------------------------------------- + // + // Public properties + // + //-------------------------------------------------------------------------- + + + //-------------------------------------------------------------------------- + // + // Protected properties + // + //-------------------------------------------------------------------------- + + + //-------------------------------------------------------------------------- + // + // Constructor + // + //-------------------------------------------------------------------------- + public function ClassImportor() + { + MultiFormatWriter; + QRCodeWriter; + } + //-------------------------------------------------------------------------- + // + // Public methods + // + //-------------------------------------------------------------------------- + + //-------------------------------------------------------------------------- + // + // Protected methods + // + //-------------------------------------------------------------------------- + + //-------------------------------------------------------------------------- + // + // Private methods + // + //-------------------------------------------------------------------------- + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/DecodeHintType.as b/FairyGUI-as3/src/com/google/zxing/DecodeHintType.as new file mode 100644 index 0000000..9888888 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/DecodeHintType.as @@ -0,0 +1,83 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing +{ + /** + * Encapsulates a type of hint that a caller may pass to a barcode reader to help it + * more quickly or accurately decode it. It is up to implementations to decide what, + * if anything, to do with the information that is supplied. + * + * @author Sean Owen + * @author dswitkin@google.com (Daniel Switkin) + * @see Reader#decode(BinaryBitmap,java.util.Hashtable) + */ + + public class DecodeHintType + { + /** + * Unspecified, application-specific hint. Maps to an unspecified {@link Object}. + */ + public static var OTHER:DecodeHintType = new DecodeHintType("OTHER"); + + /** + * Image is a pure monochrome image of a barcode. Doesn't matter what it maps to; + * use {@link Boolean#TRUE}. + */ + public static var PURE_BARCODE:DecodeHintType = new DecodeHintType("PURE_BARCODE"); + + /** + * + * Image is known to be of one of a few possible formats. + * Maps to a {@link java.util.Vector} of {@link BarcodeFormat}s. + */ + public static var POSSIBLE_FORMATS:DecodeHintType = new DecodeHintType("POSSIBLE_FORMATS"); + + /** + * Spend more time to try to find a barcode; optimize for accuracy, not speed. + * Doesn't matter what it maps to; use {@link Boolean#TRUE}. + */ + public static var TRY_HARDER:DecodeHintType = new DecodeHintType("TRY_HARDER"); + + /** + * Specifies what character encoding to use when decoding, where applicable (type String) + */ + public static var CHARACTER_SET:DecodeHintType = new DecodeHintType("CHARACTER_SET"); + + /** + * Allowed lengths of encoded data -- reject anything else. Maps to an int[]. + */ + public static var ALLOWED_LENGTHS:DecodeHintType = new DecodeHintType("ALLOWED_LENGTHS"); + + /** + * Assume Code 39 codes employ a check digit. Maps to {@link Boolean}. + */ + public static var ASSUME_CODE_39_CHECK_DIGIT:DecodeHintType = new DecodeHintType("ASSUME_CODE_39_CHECK_DIGIT"); + + /** + * The caller needs to be notified via callback when a possible {@link ResultPoint} + * is found. Maps to a {@link ResultPointCallback}. + */ + public static var NEED_RESULT_POINT_CALLBACK:DecodeHintType = new DecodeHintType("NEED_RESULT_POINT_CALLBACK"); + + public var DHtype:String; + + public function DecodeHintType(aType:String) + { + DHtype = aType; + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/EncodeHintType.as b/FairyGUI-as3/src/com/google/zxing/EncodeHintType.as new file mode 100644 index 0000000..c5f115e --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/EncodeHintType.as @@ -0,0 +1,44 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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 com.google.zxing +{ + /** + * These are a set of hints that you may pass to Writers to specify their behavior. + * + * @author dswitkin@google.com (Daniel Switkin) + */ + + public class EncodeHintType + { + /** + * Specifies what degree of error correction to use, for example in QR Codes (type Integer). + */ + public static var ERROR_CORRECTION:EncodeHintType = new EncodeHintType(); + + /** + * Specifies what character encoding to use where applicable (type String) + */ + public static var CHARACTER_SET:EncodeHintType = new EncodeHintType(); + + + public function EncodeHintType() + { + } + + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/FormatException.as b/FairyGUI-as3/src/com/google/zxing/FormatException.as new file mode 100644 index 0000000..86390f7 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/FormatException.as @@ -0,0 +1,40 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing +{ + +/** + * Thrown when a barcode was successfully detected, but some aspect of + * the content did not conform to the barcode's format rules. This could have + * been due to a mis-detection. + * + * @author Sean Owen + */ +public class FormatException extends ReaderException { + + private static var instance:FormatException = new FormatException(); + + public function FormatException() { + // do nothing + } + + public static function getFormatInstance():FormatException { + return instance; + } +} + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/LuminanceSource.as b/FairyGUI-as3/src/com/google/zxing/LuminanceSource.as new file mode 100644 index 0000000..9bd5200 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/LuminanceSource.as @@ -0,0 +1,146 @@ +/* + * Copyright 2009 ZXing authors + * + * Licensed 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 com.google.zxing +{ + + import com.google.zxing.common.flexdatatypes.StringBuilder; + + public class LuminanceSource + { + /** + * The purpose of this class hierarchy is to abstract different bitmap implementations across + * platforms into a standard interface for requesting greyscale luminance values. The interface + * only provides immutable methods; therefore crop and rotation create copies. This is to ensure + * that one Reader does not modify the original luminance source and leave it in an unknown state + * for other Readers in the chain. + * + * @author dswitkin@google.com (Daniel Switkin) + */ + private var width:int; + private var height:int; + + public function LuminanceSource(width:int, height:int) + { + this.width = width; + this.height = height; + } + + /** + * Fetches one row of luminance data from the underlying platform's bitmap. Values range from + * 0 (black) to 255 (white). Because Java does not have an unsigned byte type, callers will have + * to bitwise and with 0xff for each value. It is preferrable for implementations of this method + * to only fetch this row rather than the whole image, since no 2D Readers may be installed and + * getMatrix() may never be called. + * + * @param y The row to fetch, 0 <= y < getHeight(). + * @param row An optional preallocated array. If null or too small, it will be ignored. + * Always use the returned object, and ignore the .length of the array. + * @return An array containing the luminance data. + */ + public function getRow(y:int, row:Array):Array{ return null}; + + /** + * Fetches luminance data for the underlying bitmap. Values should be fetched using: + * int luminance = array[y * width + x] & 0xff; + * + * @return A row-major 2D array of luminance values. Do not use result.length as it may be + * larger than width * height bytes on some platforms. Do not modify the contents + * of the result. + */ + public function getMatrix():Array{ return null}; + + /** + * @return The width of the bitmap. + */ + public final function getWidth():int { + return width; + } + + /** + * @return The height of the bitmap. + */ + public final function getHeight():int { + return height; + } + + /** + * @return Whether this subclass supports cropping. + */ + public function isCropSupported():Boolean { + return false; + } + + /** + * Returns a new object with cropped image data. Implementations may keep a reference to the + * original data rather than a copy. Only callable if isCropSupported() is true. + * + * @param left The left coordinate, 0 <= left < getWidth(). + * @param top The top coordinate, 0 <= top <= getHeight(). + * @param width The width of the rectangle to crop. + * @param height The height of the rectangle to crop. + * @return A cropped version of this object. + */ + public function crop(left:int , top:int , width:int , height:int ):LuminanceSource { + throw new Error("This luminance source does not support cropping."); + } + + /** + * @return Whether this subclass supports counter-clockwise rotation. + */ + public function isRotateSupported():Boolean { + return false; + } + + /** + * Returns a new object with rotated image data. Only callable if isRotateSupported() is true. + * + * @return A rotated version of this object. + */ + public function rotateCounterClockwise():LuminanceSource { + throw new Error("This luminance source does not support rotation."); + } + + public function toString():String + { + var row:Array = new Array(width); + var result:StringBuilder = new StringBuilder(height * (width + 1)); + for (var y:int = 0; y < height; y++) { + row = getRow(y, row); + for (var x:int = 0; x < width; x++) { + var luminance:int = row[x] & 0xFF; + var c:String; + if (luminance < 0x40) { + c = '#'; + } else if (luminance < 0x80) { + c = '+'; + } else if (luminance < 0xC0) { + c = '.'; + } else { + c = ' '; + } + result.Append(c); + } + result.Append('\n'); + } + return result.ToString(); + } + + + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/MultiFormatReader.as b/FairyGUI-as3/src/com/google/zxing/MultiFormatReader.as new file mode 100644 index 0000000..2014750 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/MultiFormatReader.as @@ -0,0 +1,197 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing +{ + import com.google.zxing.aztec.AztecReader; + import com.google.zxing.common.flexdatatypes.ArrayList; + import com.google.zxing.common.flexdatatypes.HashTable; + import com.google.zxing.datamatrix.DataMatrixReader; + import com.google.zxing.oned.MultiFormatOneDReader; + import com.google.zxing.pdf417.PDF417Reader; + import com.google.zxing.qrcode.QRCodeReader; + import com.google.zxing.maxicode.MaxiCodeReader; + import com.google.zxing.common.flexdatatypes.ArrayList; + + /** + * MultiFormatReader is a convenience class and the main entry point into the library for most uses. + * By default it attempts to decode all barcode formats that the library supports. Optionally, you + * can provide a hints object to request different behavior, for example only decoding QR codes. + * + * @author Sean Owen + * @author dswitkin@google.com (Daniel Switkin) + */ + public class MultiFormatReader implements Reader + { + + protected var hints:HashTable; + protected var readers:ArrayList; + + + /** + * Decode an image using the hints provided. Does not honor existing state. + * + * @param image The pixel data to decode + * @param hints The hints to use, clearing the previous state. + * @return The contents of the image + * @throws ReaderException Any errors which occurred + */ + public function decode( image:BinaryBitmap, hints:HashTable=null):Result + { + setHints(hints); + return decodeInternal(image); + } + + /** + * Decode an image using the state set up by calling setHints() previously. Continuous scan + * clients will get a large speed increase by using this instead of decode(). + * + * @param image The pixel data to decode + * @return The contents of the image + * @throws ReaderException Any errors which occurred + */ + public function decodeWithState(image:BinaryBitmap):Result{ + // Make sure to set up the default state so we don't crash + if (readers == null) { + setHints(null); + } + return decodeInternal(image); + } + + /** + * This method adds state to the MultiFormatReader. By setting the hints once, subsequent calls + * to decodeWithState(image) can reuse the same set of readers without reallocating memory. This + * is important for performance in continuous scan clients. + * + * @param hints The set of hints to use for subsequent calls to decode(image) + */ + public function setHints(hints:HashTable):void + { + this.hints = hints; + + var tryHarder:Boolean = hints != null && hints.ContainsKey(DecodeHintType.TRY_HARDER); + var formats:ArrayList = ((hints == null) ? null : hints.getValuesByKey(DecodeHintType.POSSIBLE_FORMATS)); + readers = new ArrayList(); + if (formats != null) + { + var addOneDReader:Boolean = + (formats.indexOf(BarcodeFormat.UPC_A) != -1)|| + (formats.indexOf(BarcodeFormat.UPC_E) != -1)|| + (formats.indexOf(BarcodeFormat.CODABAR) != -1)|| + (formats.indexOf(BarcodeFormat.ITF) != -1)|| + (formats.indexOf(BarcodeFormat.EAN_13) != -1)|| + (formats.indexOf(BarcodeFormat.EAN_8) != -1)|| + (formats.indexOf(BarcodeFormat.RSS_14) != -1)|| + (formats.indexOf(BarcodeFormat.RSS_EXPANDED) != -1)|| + (formats.indexOf(BarcodeFormat.CODE_39) != -1)|| + (formats.indexOf(BarcodeFormat.CODE_93) != -1)|| + (formats.indexOf(BarcodeFormat.CODE_128) != -1); + // Put 1D readers upfront in "normal" mode + + if (addOneDReader && !tryHarder) + { + readers.Add(new MultiFormatOneDReader(hints)); + } + + if (formats.indexOf(BarcodeFormat.QR_CODE) != -1) + { + readers.Add(new QRCodeReader()); + } + if (formats.indexOf(BarcodeFormat.PDF417) != -1) { + readers.addElement(new PDF417Reader()); + } + if (formats.indexOf(BarcodeFormat.AZTEC) != -1) { + readers.addElement(new AztecReader()); + } + // TODO re-enable once Data Matrix is ready + if (formats.indexOf(BarcodeFormat.DATAMATRIX) != -1) { + readers.Add(new DataMatrixReader()); + } + if (formats.Contains(BarcodeFormat.MAXICODE)) { + readers.addElement(new MaxiCodeReader()); + } + + // At end in "try harder" mode + if (addOneDReader && tryHarder) + { + readers.Add(new MultiFormatOneDReader(hints)); + } + } + + if (readers.Count == 0) + { + if (!tryHarder) + { + var reader:MultiFormatOneDReader = new MultiFormatOneDReader(hints); + readers.Add(reader); + } + readers.Add(new QRCodeReader()); + readers.Add(new DataMatrixReader()); + readers.Add(new AztecReader()); + readers.Add(new PDF417Reader()); + readers.Add(new MaxiCodeReader()); + + if (tryHarder) + { + readers.Add(new MultiFormatOneDReader(hints)); + } + } + + } + public function reset():void + { + var size:int = readers.size(); + for (var i:int = 0; i < size; i++) + { + var reader:Reader = Reader(readers.elementAt(i)); + reader.reset(); + } + } + + private function decodeInternal( image:BinaryBitmap):Result + { + var size:int = readers.Count; + for (var i:int = 0; i < size; i++) + { + var reader:Reader = (readers.getObjectByIndex(i)) as Reader; + try{ + try + { + var res:Result = reader.decode(image, hints); + return res; + } + catch ( re:ReaderException) + { + // continue + var a:int =3; + } + } + catch (e:Error) + { + var b:int = 4; + } + + + } + + // no decoder could decode the barcode + return null; + //throw new ReaderException("MultiFormatReader : decodeInternal :could not decode"); + } + + + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/MultiFormatWriter.as b/FairyGUI-as3/src/com/google/zxing/MultiFormatWriter.as new file mode 100644 index 0000000..a41ce96 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/MultiFormatWriter.as @@ -0,0 +1,58 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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 com.google.zxing +{ + public class MultiFormatWriter implements Writer + { + import com.google.zxing.common.ByteMatrix; + import com.google.zxing.common.flexdatatypes.HashTable; + import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + import com.google.zxing.qrcode.QRCodeWriter + import com.google.zxing.oned.Code128Writer; + import com.google.zxing.oned.Code39Writer; + import com.google.zxing.oned.EAN13Writer; + import com.google.zxing.oned.EAN8Writer; + import com.google.zxing.oned.ITFWriter; + import com.google.zxing.oned.UPCAWriter; + import com.google.zxing.pdf417.encoder.PDF417Writer; + + public function encode(contents:String, format:BarcodeFormat=null,width:int=0,height:int=0, hints:HashTable=null):Object{ + + var writer:Writer; + if (format == BarcodeFormat.EAN_8) { + writer = new EAN8Writer(); + } else if (format == BarcodeFormat.EAN_13) { + writer = new EAN13Writer(); + } else if (format == BarcodeFormat.UPC_A) { + writer = new UPCAWriter(); + } else if (format == BarcodeFormat.CODE_39) { + writer = new Code39Writer(); + } else if (format == BarcodeFormat.CODE_128) { + writer = new Code128Writer(); + } else if (format == BarcodeFormat.ITF) { + writer = new ITFWriter(); + } else if (format == BarcodeFormat.PDF417) { + writer = new PDF417Writer(); + } else if (format == BarcodeFormat.QR_CODE) { + writer = new QRCodeWriter(); + } else { + throw new IllegalArgumentException("No encoder available for format " + format); + } + return writer.encode(contents, format, width, height, hints); + } + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/NotFoundException.as b/FairyGUI-as3/src/com/google/zxing/NotFoundException.as new file mode 100644 index 0000000..9af0763 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/NotFoundException.as @@ -0,0 +1,39 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing +{ + +/** + * Thrown when a barcode was not found in the image. It might have been + * partially detected but could not be confirmed. + * + * @author Sean Owen + */ +public class NotFoundException extends ReaderException { + + private static var instance:NotFoundException = new NotFoundException(); + + public function NotFoundException() { + // do nothing + } + + public static function getNotFoundInstance():NotFoundException { + return instance; + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/Reader.as b/FairyGUI-as3/src/com/google/zxing/Reader.as new file mode 100644 index 0000000..7a90a16 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/Reader.as @@ -0,0 +1,50 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing +{ + /** + * Implementations of this interface can decode an image of a barcode in some format into + * the String it encodes. For example, {@link com.google.zxing.qrcode.QRCodeReader} can + * decode a QR code. The decoder may optionally receive hints from the caller which may help + * it decode more quickly or accurately. + * + * See {@link com.google.zxing.MultiFormatReader}, which attempts to determine what barcode + * format is present within the image as well, and then decodes it accordingly. + * + * @author Sean Owen + * @author dswitkin@google.com (Daniel Switkin) + */ + + public interface Reader + { + import com.google.zxing.common.flexdatatypes.HashTable; + + + /** + * Locates and decodes a barcode in some format within an image. This method also accepts + * hints, each possibly associated to some data, which may help the implementation decode. + * + * @param image image of barcode to decode + * @param hints passed as a {@link java.util.Hashtable} from {@link com.google.zxing.DecodeHintType} to aribtrary data. The + * meaning of the data depends upon the hint type. The implementation may or may not do + * anything with these hints. + * @return String which the barcode encodes + * @throws ReaderException if the barcode cannot be located or decoded for any reason + */ + function decode(image:BinaryBitmap, hints:HashTable=null):Result; + function reset():void; +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/ReaderException.as b/FairyGUI-as3/src/com/google/zxing/ReaderException.as new file mode 100644 index 0000000..46367a1 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/ReaderException.as @@ -0,0 +1,57 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing +{ +/** + * The general exception class throw when something goes wrong during decoding of a barcode. + * This includes, but is not limited to, failing checksums / error correction algorithms, being + * unable to locate finder timing patterns, and so on. + * + * @author Sean Owen + */ + + public class ReaderException extends Error + { + // TODO: Currently we throw up to 400 ReaderExceptions while scanning a single 240x240 image before + // rejecting it. This involves a lot of overhead and memory allocation, and affects both performance + // and latency on continuous scan clients. In the future, we should change all the decoders not to + // throw exceptions for routine events, like not finding a barcode on a given row. Instead, we + // should return error codes back to the callers, and simply delete this class. In the mean time, I + // have altered this class to be as lightweight as possible, by ignoring the exception string, and + // by disabling the generation of stack traces, which is especially time consuming. These are just + // temporary measures, pending the big cleanup. + + private static var instance:ReaderException = new ReaderException(); + + public function ReaderException(message:String=""):void { + super(message); + // do nothing + } + + public static function getInstance():ReaderException { + return instance; + } + + // Prevent stack traces from being taken + // srowen says: huh, my IDE is saying this is not an override. native methods can't be overridden? + // This, at least, does not hurt. Because we use a singleton pattern here, it doesn't matter anyhow. + /*public function fillInStackTrace():Throwable { + return null; + }*/ + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/Result.as b/FairyGUI-as3/src/com/google/zxing/Result.as new file mode 100644 index 0000000..652c668 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/Result.as @@ -0,0 +1,155 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing +{ + /** + *

Encapsulates the result of decoding a barcode within an image.

+ * + * @author Sean Owen + */ + public class Result + { + import com.google.zxing.common.flexdatatypes.HashTable; + import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + import com.google.zxing.common.flexdatatypes.Enumeration; + + protected var text:String; + protected var rawBytes:Array; + protected var resultPoints:Array; + protected var format:BarcodeFormat; + protected var resultMetadata:HashTable; + protected var timestamp:Number; + + public function Result( text:String, + rawBytes:Array, + resultPoints:Array, + format:BarcodeFormat, + timestamp:Number = 0) + { + if (text == null && rawBytes == null) { + throw new IllegalArgumentException("Result : Text and bytes are both null"); + } + + + if (timestamp == 0) { timestamp = Math.round((new Date()).getTime()/1000); } + this.text = text; + this.rawBytes = rawBytes; + this.resultPoints = resultPoints; + this.format = format; + this.resultMetadata = null; + this.timestamp = timestamp; + } + + /** + * @return raw text encoded by the barcode, if applicable, otherwise null + */ + public function getText():String { + return text; + } + + /** + * @return raw bytes encoded by the barcode, if applicable, otherwise null + */ + public function getRawBytes():Array { + return rawBytes; + } + + /** + * @return points related to the barcode in the image. These are typically points + * identifying finder patterns or the corners of the barcode. The exact meaning is + * specific to the type of barcode that was decoded. + */ + public function getResultPoints():Array { + return resultPoints; + } + + /** + * @return {@link BarcodeFormat} representing the format of the barcode that was recognized and decoded + */ + public function getBarcodeFormat():BarcodeFormat { + return format; + } + + /** + * @return {@link HashTable} mapping {@link ResultMetadataType} keys to values. May be null. + * This contains optional metadata about what was detected about the barcode, like orientation. + */ + public function getResultMetadata():HashTable { + return resultMetadata; + } + + public function putMetadata(type:ResultMetadataType, value:Object ):void { + if (resultMetadata == null) { + resultMetadata = new HashTable(3); + } + resultMetadata.Add(type, value); + } + + public function toString():String { + if (text == null) { + return "[" + rawBytes.length + " bytes]"; + } else { + return text; + } + } + + public function putAllMetadata(metadata:HashTable ):void + { + if (metadata != null) { + if (resultMetadata == null) { + resultMetadata = metadata; + } else { + var e:Enumeration = new Enumeration(metadata.keys()); + while (e.hasMoreElement()) { + var key:ResultMetadataType = (e.nextElement() as ResultMetadataType); + var value:Object = metadata._get(key); + resultMetadata._put(key, value); + } + } + } + } + + public function addResultPoints(newPoints:Array):void + { + if (resultPoints == null) { + resultPoints = newPoints; + } else if (newPoints != null && newPoints.length > 0) { + var allPoints:Array = new Array(resultPoints.length + newPoints.length); + //System.arraycopy(resultPoints, 0, allPoints, 0, resultPoints.length); + for (var i:int=0;i2D barcode formats typically encode text, but allow for a sort of 'byte mode' + * which is sometimes used to encode binary data. While {@link Result} makes available + * the complete raw bytes in the barcode for these formats, it does not offer the bytes + * from the byte segments alone.

+ * + *

This maps to a {@link java.util.Vector} of byte arrays corresponding to the + * raw bytes in the byte segments in the barcode, in order.

+ */ + public static var BYTE_SEGMENTS:ResultMetadataType = new ResultMetadataType("BYTE SEGMENTS"); + + /** + * Error correction level used, if applicable. The value type depends on the + * format, but is typically a String. + */ + public static var ERROR_CORRECTION_LEVEL:ResultMetadataType = new ResultMetadataType("ORIENTATION"); + + + /** + * For some periodicals, indicates the issue number as an {@link Integer}. + */ + public static var ISSUE_NUMBER:ResultMetadataType = new ResultMetadataType("ISSUE_NUMBER"); + + /** + * For some products, indicates the suggested retail price in the barcode as a + * formatted {@link String}. + */ + public static var SUGGESTED_PRICE:ResultMetadataType = new ResultMetadataType("SUGGESTED_PRICE"); + + /** + * For some products, the possible country of manufacture as a {@link String} denoting the + * ISO country code. Some map to multiple possible countries, like "US/CA". + */ + public static var POSSIBLE_COUNTRY:ResultMetadataType = new ResultMetadataType("POSSIBLE_COUNTRY"); + + private var name:String ; + + private static var VALUES:HashTable = new HashTable(); + + public function ResultMetadataType(name:String = "") { + this.name = name; + //VALUES.put(name, this); + } + + public function getName():String { + return name; + } + + public function toString():String { + return name; + } + + public static function valueOf(name:String):ResultMetadataType + { + if (name == null || name.length == 0) + { + throw new IllegalArgumentException(); + } + + var format:ResultMetadataType = ResultMetadataType(VALUES._get(name)); + if (format == null) + { + throw new IllegalArgumentException(); + } + return format; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/ResultPoint.as b/FairyGUI-as3/src/com/google/zxing/ResultPoint.as new file mode 100644 index 0000000..354879f --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/ResultPoint.as @@ -0,0 +1,149 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing +{ +/** + *

Encapsulates a point of interest in an image containing a barcode. Typically, this + * would be the location of a finder pattern or the corner of the barcode, for example.

+ * + * @author Sean Owen + */ + import com.google.zxing.common.flexdatatypes.StringBuilder; + + public class ResultPoint + { + protected var x:Number; + protected var y:Number; + + public function ResultPoint(x:Number, y:Number) + { + this.x = x; + this.y = y; + } + + public final function getX():Number + { + return x; + } + + public final function getY():Number + { + return y; + } + + public function equals(other:Object ):Boolean + { + if (other is ResultPoint) + { + var otherPoint:ResultPoint = other as ResultPoint; + return x == otherPoint.x && y == otherPoint.y; + } + return false; + } + + /* no default method to determine a hashcode for Number in Actionscript + + public function hashCode():int + { + return 31 * identityHashCode(x) + identityHashCode(y); + } + */ + public function toString():String + { + var result:StringBuilder = new StringBuilder(25); + result.Append('('); + result.Append(x); + result.Append(','); + result.Append(y); + result.Append(')'); + return result.toString(); + } + + /** + *

Orders an array of three ResultPoints in an order [A,B,C] such that AB < AC and + * BC < AC and the angle between BC and BA is less than 180 degrees. + */ + public static function orderBestPatterns(patterns:Array):void + { + + // Find distances between pattern centers + var zeroOneDistance:Number = distance(patterns[0], patterns[1]); + var oneTwoDistance:Number = distance(patterns[1], patterns[2]); + var zeroTwoDistance:Number = distance(patterns[0], patterns[2]); + + var pointA:ResultPoint; + var pointB:ResultPoint; + var pointC:ResultPoint; + // Assume one closest to other two is B; A and C will just be guesses at first + if (oneTwoDistance >= zeroOneDistance && oneTwoDistance >= zeroTwoDistance) + { + pointB = patterns[0]; + pointA = patterns[1]; + pointC = patterns[2]; + } + else if (zeroTwoDistance >= oneTwoDistance && zeroTwoDistance >= zeroOneDistance) + { + pointB = patterns[1]; + pointA = patterns[0]; + pointC = patterns[2]; + } + else + { + pointB = patterns[2]; + pointA = patterns[0]; + pointC = patterns[1]; + } + + // Use cross product to figure out whether A and C are correct or flipped. + // This asks whether BC x BA has a positive z component, which is the arrangement + // we want for A, B, C. If it's negative, then we've got it flipped around and + // should swap A and C. + if (crossProductZ(pointA, pointB, pointC) < 0.0) { + var temp:ResultPoint = pointA; + pointA = pointC; + pointC = temp; + } + + patterns[0] = pointA; + patterns[1] = pointB; + patterns[2] = pointC; + } + + + /** + * @return distance between two points + */ + public static function distance(pattern1:ResultPoint, pattern2:ResultPoint):Number + { + var xDiff:Number = pattern1.getX() - pattern2.getX(); + var yDiff:Number = pattern1.getY() - pattern2.getY(); + return Math.sqrt(xDiff * xDiff + yDiff * yDiff); + } + + /** + * Returns the z component of the cross product between vectors BC and BA. + */ + public static function crossProductZ(pointA:ResultPoint, pointB:ResultPoint, pointC:ResultPoint):Number + { + var bX:Number = pointB.x; + var bY:Number = pointB.y; + return ((pointC.x - bX) * (pointA.y - bY)) - ((pointC.y - bY) * (pointA.x - bX)); + } + + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/ResultPointCallback.as b/FairyGUI-as3/src/com/google/zxing/ResultPointCallback.as new file mode 100644 index 0000000..1f25be5 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/ResultPointCallback.as @@ -0,0 +1,31 @@ +/* + * Copyright 2009 ZXing authors + * + * Licensed 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 com.google.zxing +{ + +/** + * Callback which is invoked when a possible result point (significant + * point in the barcode image such as a corner) is found. + * + * @see DecodeHintType#NEED_RESULT_POINT_CALLBACK + */ +public interface ResultPointCallback { + + function foundPossibleResultPoint(point:ResultPoint ):void; + +} +} diff --git a/FairyGUI-as3/src/com/google/zxing/Writer.as b/FairyGUI-as3/src/com/google/zxing/Writer.as new file mode 100644 index 0000000..27daa24 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/Writer.as @@ -0,0 +1,40 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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 com.google.zxing +{ +/** + * The base class for all objects which encode/generate a barcode image. + * + * @author dswitkin@google.com (Daniel Switkin) + */ + public interface Writer + { + import com.google.zxing.common.ByteMatrix; + import com.google.zxing.common.flexdatatypes.HashTable; + /** + * + * @param contents The contents to encode in the barcode + * @param format The barcode format to generate + * @param width The preferred width in pixels + * @param height The preferred height in pixels + * @param hints Additional parameters to supply to the encoder + * @return The generated barcode as a Matrix of unsigned bytes (0 == black, 255 == white) + */ + function encode(contents:String, format:BarcodeFormat=null, width:int=0, height:int=0, hints:HashTable=null):Object; + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/WriterException.as b/FairyGUI-as3/src/com/google/zxing/WriterException.as new file mode 100644 index 0000000..98beeaa --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/WriterException.as @@ -0,0 +1,34 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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 com.google.zxing +{ +/** + * A base class which covers the range of exceptions which may occur when encoding a barcode using + * the Writer framework. + * + * @author dswitkin@google.com (Daniel Switkin) + */ + + public class WriterException extends Error + { + public function WriterException(message:String=undefined) + { + super(message); + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/aztec/AztecDetectorResult.as b/FairyGUI-as3/src/com/google/zxing/aztec/AztecDetectorResult.as new file mode 100644 index 0000000..c51ae8e --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/aztec/AztecDetectorResult.as @@ -0,0 +1,57 @@ +/* + * Copyright 2010 ZXing authors + * + * Licensed 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 com.google.zxing.aztec +{ + import com.google.zxing.common.DetectorResult; + + public final class AztecDetectorResult extends DetectorResult + { + + import com.google.zxing.ResultPoint; + import com.google.zxing.common.BitMatrix; + import com.google.zxing.common.DetectorResult; + + + private var compact:Boolean; + private var nbDatablocks:int; + private var nbLayers:int; + + public function AztecDetectorResult(bits:BitMatrix , points:Array, compact:Boolean, nbDatablocks:int, nbLayers:int) + { + super(bits, points); + this.compact = compact; + this.nbDatablocks = nbDatablocks; + this.nbLayers = nbLayers; + } + + public function getNbLayers():int + { + return nbLayers; + } + + public function getNbDatablocks():int + { + return nbDatablocks; + } + + public function isCompact():Boolean + { + return compact; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/aztec/AztecReader.as b/FairyGUI-as3/src/com/google/zxing/aztec/AztecReader.as new file mode 100644 index 0000000..0690bb1 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/aztec/AztecReader.as @@ -0,0 +1,101 @@ +/* + * Copyright 2010 ZXing authors + * + * Licensed 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 com.google.zxing.aztec +{ + import com.google.zxing.Reader; + import com.google.zxing.ResultPointCallback; + + public final class AztecReader implements Reader + { + + import com.google.zxing.BarcodeFormat; + import com.google.zxing.BinaryBitmap; + import com.google.zxing.ChecksumException; + import com.google.zxing.DecodeHintType; + import com.google.zxing.FormatException; + import com.google.zxing.NotFoundException; + import com.google.zxing.Reader; + import com.google.zxing.Result; + import com.google.zxing.ResultMetadataType; + import com.google.zxing.ResultPoint; + import com.google.zxing.common.DecoderResult; + import com.google.zxing.aztec.decoder.Decoder; + import com.google.zxing.aztec.detector.Detector; + + import com.google.zxing.common.BitArray; + import com.google.zxing.ResultPoint; + import com.google.zxing.common.flexdatatypes.StringBuilder; + import com.google.zxing.common.flexdatatypes.HashTable; + + /** + * This implementation can detect and decode Aztec codes in an image. + * + * @author David Olivier + */ + + + /** + * Locates and decodes a Data Matrix code in an image. + * + * @return a String representing the content encoded by the Data Matrix code + * @throws NotFoundException if a Data Matrix code cannot be found + * @throws FormatException if a Data Matrix code cannot be decoded + * @throws ChecksumException if error correction fails + */ + public function decode(image:BinaryBitmap, hints:HashTable=null ):Result + { + if (hints == null) {return decode(image, null);} + + var detectorResult:AztecDetectorResult = new Detector(image.getBlackMatrix()).detect(); + var points:Array = detectorResult.getPoints(); + + if ((hints != null) && (detectorResult.getPoints() != null)) + { + var rpcb:ResultPointCallback = hints._get(DecodeHintType.NEED_RESULT_POINT_CALLBACK) as ResultPointCallback; + if (rpcb != null) + { + for (var i:int = 0; i < detectorResult.getPoints().length; i++) + { + rpcb.foundPossibleResultPoint(detectorResult.getPoints()[i]); + } + } + } + + var decoderResult:DecoderResult = new Decoder().decode(detectorResult); + + var result:Result = new Result(decoderResult.getText(), decoderResult.getRawBytes(), points, BarcodeFormat.AZTEC); + + if (decoderResult.getByteSegments() != null) + { + result.putMetadata(ResultMetadataType.BYTE_SEGMENTS, decoderResult.getByteSegments()); + } + + if (decoderResult.getECLevel() != null) + { + result.putMetadata(ResultMetadataType.ERROR_CORRECTION_LEVEL, decoderResult.getECLevel().toString()); + } + + return result; + } + + public function reset():void + { + // do nothing + } + + } +} diff --git a/FairyGUI-as3/src/com/google/zxing/aztec/Point.as b/FairyGUI-as3/src/com/google/zxing/aztec/Point.as new file mode 100644 index 0000000..9d8a6ab --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/aztec/Point.as @@ -0,0 +1,34 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.aztec +{ + import com.google.zxing.ResultPoint; + + public class Point { + public var x:int; + public var y:int; + + public function toResultPoint():ResultPoint { + return new ResultPoint(x, y); + } + + public function Point( x:int, y:int) { + this.x = x; + this.y = y; + } + } +} diff --git a/FairyGUI-as3/src/com/google/zxing/aztec/decoder/Decoder.as b/FairyGUI-as3/src/com/google/zxing/aztec/decoder/Decoder.as new file mode 100644 index 0000000..6fbffc6 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/aztec/decoder/Decoder.as @@ -0,0 +1,469 @@ +/* + * Copyright 2010 ZXing authors + * + * Licensed 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 com.google.zxing.aztec.decoder +{ + + import com.google.zxing.FormatException; + import com.google.zxing.aztec.AztecDetectorResult; + import com.google.zxing.common.BitMatrix; + import com.google.zxing.common.DecoderResult; + import com.google.zxing.common.flexdatatypes.StringBuilder; + import com.google.zxing.common.reedsolomon.GenericGF; + import com.google.zxing.common.reedsolomon.ReedSolomonDecoder; + import com.google.zxing.common.reedsolomon.ReedSolomonException; + + /** + *

The main class which implements Aztec Code decoding -- as opposed to locating and extracting + * the Aztec Code from an image.

+ * + * @author David Olivier + */ + public class Decoder + { + + private static var UPPER:int = 0; + private static var LOWER:int = 1; + private static var MIXED:int = 2; + private static var DIGIT:int = 3; + private static var PUNCT:int = 4; + private static var BINARY:int = 5; + + private static var NB_BITS_COMPACT:Array = [0, 104, 240, 408, 608]; + + private static var NB_BITS:Array = [ + 0, 128, 288, 480, 704, 960, 1248, 1568, 1920, 2304, 2720, 3168, 3648, 4160, 4704, 5280, 5888, 6528, + 7200, 7904, 8640, 9408, 10208, 11040, 11904, 12800, 13728, 14688, 15680, 16704, 17760, 18848, 19968 + ]; + + private static var NB_DATABLOCK_COMPACT:Array = [ + 0, 17, 40, 51, 76 + ]; + + private static var NB_DATABLOCK:Array = [ + 0, 21, 48, 60, 88, 120, 156, 196, 240, 230, 272, 316, 364, 416, 470, 528, 588, 652, 720, 790, 864, + 940, 1020, 920, 992, 1066, 1144, 1224, 1306, 1392, 1480, 1570, 1664 + ]; + + private static var UPPER_TABLE:Array = [ + "CTRL_PS", " ", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", + "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "CTRL_LL", "CTRL_ML", "CTRL_DL", "CTRL_BS" + ]; + + private static var LOWER_TABLE:Array = [ + "CTRL_PS", " ", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", + "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "CTRL_US", "CTRL_ML", "CTRL_DL", "CTRL_BS" + ]; + + private static var MIXED_TABLE:Array = [ + "CTRL_PS", " ", "\1", "\2", "\3", "\4", "\5", "\6", "\7", "\b", "\t", "\n", + "\13", "\f", "\r", "\33", "\34", "\35", "\36", "\37", "@", "\\", "^", "_", + "`", "|", "~", "\177", "CTRL_LL", "CTRL_UL", "CTRL_PL", "CTRL_BS" + ]; + + private static var PUNCT_TABLE:Array = [ + "", "\r", "\r\n", ". ", ", ", ": ", "!", "\"", "#", "$", "%", "&", "'", "(", ")", + "*", "+", ",", "-", ".", "/", ":", ";", "<", "=", ">", "?", "[", "]", "{", "}", "CTRL_UL" + ]; + + private static var DIGIT_TABLE:Array = [ + "CTRL_PS", " ", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ",", ".", "CTRL_UL", "CTRL_US" + ]; + + private var numCodewords:int; + private var codewordSize:int; + private var ddata:AztecDetectorResult; + private var invertedBitCount:int; + + public function decode( detectorResult:AztecDetectorResult):DecoderResult { + ddata = detectorResult; + var matrix:BitMatrix = detectorResult.getBits(); + + if (!ddata.isCompact()) { + matrix = removeDashedLines(ddata.getBits()); + } + + var rawbits:Array = extractBits(matrix); + var rawbitsString:String = "";for(var k:int=0;k correctedBits.length) { + throw FormatException.getFormatInstance(); + } + + var lastTable:int = UPPER; + var table:int = UPPER; + var startIndex:int = 0; + var result:StringBuilder = new StringBuilder(20); + var end:Boolean = false; + var shift:Boolean = false; + var switchShift:Boolean = false; + + while (!end) { + + if (shift) { + // the table is for the next character only + switchShift = true; + } else { + // save the current table in case next one is a shift + lastTable = table; + } + + var code:int; + switch (table) { + case BINARY: + if (endIndex - startIndex < 8) { + end = true; + break; + } + code = readCode(correctedBits, startIndex, 8); + startIndex += 8; + + result.Append(String.fromCharCode(code)); + break; + + default: + var size:int = 5; + + if (table == DIGIT) { + size = 4; + } + + if (endIndex - startIndex < size) { + end = true; + break; + } + + code = readCode(correctedBits, startIndex, size); + startIndex += size; + + var str:String = getCharacter(table, code); + if (str.substr(0,5) == "CTRL_") { + // Table changes + table = getTable(str.charAt(5)); + + if (str.charAt(6) == 'S') { + shift = true; + } + } else { + result.Append(str); + } + + break; + } + + if (switchShift) { + table = lastTable; + shift = false; + switchShift = false; + } + + } + return result.ToString(); + } + + + /** + * gets the table corresponding to the char passed + */ + private static function getTable(t:String):int { + var table:int = UPPER; + + switch (t) { + case 'U': + table = UPPER; + break; + case 'L': + table = LOWER; + break; + case 'P': + table = PUNCT; + break; + case 'M': + table = MIXED; + break; + case 'D': + table = DIGIT; + break; + case 'B': + table = BINARY; + break; + } + + return table; + } + + /** + * + * Gets the character (or string) corresponding to the passed code in the given table + * + * @param table the table used + * @param code the code of the character + */ + private static function getCharacter(table:int, code:int):String { + switch (table) { + case UPPER: + return UPPER_TABLE[code]; + case LOWER: + return LOWER_TABLE[code]; + case MIXED: + return MIXED_TABLE[code]; + case PUNCT: + return PUNCT_TABLE[code]; + case DIGIT: + return DIGIT_TABLE[code]; + default: + return ""; + } + } + + /** + * + *

performs RS error correction on an array of bits

+ * + * @return the corrected array + * @throws FormatException if the input contains too many errors + */ + private function correctBits(rawbits:Array):Array { + var gf:GenericGF; + + if (ddata.getNbLayers() <= 2) { + codewordSize = 6; + gf = GenericGF.AZTEC_DATA_6; + } else if (ddata.getNbLayers() <= 8) { + codewordSize = 8; + gf = GenericGF.AZTEC_DATA_8; + } else if (ddata.getNbLayers() <= 22) { + codewordSize = 10; + gf = GenericGF.AZTEC_DATA_10; + } else { + codewordSize = 12; + gf = GenericGF.AZTEC_DATA_12; + + } + + var numDataCodewords:int = ddata.getNbDatablocks(); + var numECCodewords:int; + var offset:int; + + if (ddata.isCompact()) { + offset = NB_BITS_COMPACT[ddata.getNbLayers()] - numCodewords*codewordSize; + numECCodewords = NB_DATABLOCK_COMPACT[ddata.getNbLayers()] - numDataCodewords; + } else { + offset = NB_BITS[ddata.getNbLayers()] - numCodewords*codewordSize; + numECCodewords = NB_DATABLOCK[ddata.getNbLayers()] - numDataCodewords; + } + + var dataWords:Array = new Array(numCodewords); + for (var m:int=0;m= flag) { + // flag++; + //} + } + + try { + var rsDecoder:ReedSolomonDecoder = new ReedSolomonDecoder(gf); + rsDecoder.decode(dataWords, numECCodewords); + } catch (rse:ReedSolomonException ) { + throw FormatException.getFormatInstance(); + } + + offset = 0; + invertedBitCount = 0; + + var correctedBits:Array = new Array(numDataCodewords*codewordSize); + for(var z:int=0;z<(numDataCodewords*codewordSize);z++) {correctedBits[z] = 0; } + + for (var i:int = 0; i < numDataCodewords; i ++) { + + var seriesColor:Boolean = false; + var seriesCount:int = 0; + var _flag:int = 1 << (codewordSize - 1); + + for (var j:int = 0; j < codewordSize; j++) { + + var color:Boolean = (dataWords[i] & _flag) == _flag; + + if (seriesCount == codewordSize - 1) { + + if (color == seriesColor) { + //bit must be inverted + throw FormatException.getFormatInstance(); + } + + seriesColor = false; + seriesCount = 0; + offset++; + invertedBitCount++; + } else { + + if (seriesColor == color) { + seriesCount++; + } else { + seriesCount = 1; + seriesColor = color; + } + + correctedBits[i * codewordSize + j - offset] = color; + + } + + _flag >>>= 1; + } + } + + return correctedBits; + } + + /** + * + * Gets the array of bits from an Aztec Code matrix + * + * @return the array of bits + * @throws FormatException if the matrix is not a valid aztec code + */ + private function extractBits(matrix:BitMatrix ):Array { + + var rawbits:Array; + if (ddata.isCompact()) { + if (ddata.getNbLayers() > NB_BITS_COMPACT.length) { + throw FormatException.getFormatInstance(); + } + rawbits = new Array(NB_BITS_COMPACT[ddata.getNbLayers()]); + numCodewords = NB_DATABLOCK_COMPACT[ddata.getNbLayers()]; + } else { + if (ddata.getNbLayers() > NB_BITS.length) { + throw FormatException.getFormatInstance(); + } + rawbits = new Array(NB_BITS[ddata.getNbLayers()]); + numCodewords = NB_DATABLOCK[ddata.getNbLayers()]; + } + + var layer:int = ddata.getNbLayers(); + var size:int = matrix.getHeight(); + var rawbitsOffset:int = 0; + var matrixOffset:int = 0; + + while (layer != 0) { + + var flip:int = 0; + for (var i:int = 0; i < 2*size - 4; i++) + { + rawbits[rawbitsOffset+i] = matrix._get(matrixOffset + flip, matrixOffset + int(i/2)); + rawbits[rawbitsOffset+2*size - 4 + i] = matrix._get(matrixOffset + int(i/2), matrixOffset + size-1-flip); + flip = int((flip + 1)%2); + } + + flip = 0; + for (i = 2*size+1; i > 5; i--) { + rawbits[rawbitsOffset+4*size - 8 + (2*size-i) + 1] = matrix._get(matrixOffset + size-1-flip, matrixOffset + int(i/2) - 1); + rawbits[rawbitsOffset+6*size - 12 + (2*size-i) + 1] = matrix._get(matrixOffset + int(i/2) - 1, matrixOffset + flip); + flip = int((flip + 1)%2); + } + + matrixOffset += 2; + rawbitsOffset += 8*size-16; + layer--; + size -= 4; + } + + return rawbits; + } + + + /** + * Transforms an Aztec code matrix by removing the control dashed lines + */ + private static function removeDashedLines(matrix:BitMatrix):BitMatrix + { + + var nbDashed:int = 1+ 2* int(int((matrix.getWidth() - 1)/2) / 16); // Bas : int casts added to make calculation the same as Java + var newMatrix:BitMatrix = new BitMatrix(matrix.getWidth() - nbDashed, matrix.getHeight() - nbDashed); + + var nx:int = 0; + + for (var x:int = 0; x < matrix.getWidth(); x++) { + var term1:int = int(int((int(matrix.getWidth() / 2)) - x)%16); + if (term1 == 0) { + continue; + } + + var ny:int = 0; + for (var y:int = 0; y < matrix.getHeight(); y++) { + var term2:int = int(int((int(matrix.getWidth() / 2)) - y)%16); + if (term2 == 0) { + continue; + } + + if (matrix._get(x, y)) + { + newMatrix._set(nx, ny); + } + ny++; + } + nx++; + } + + return newMatrix; + } + + /** + * Reads a code of given length and at given index in an array of bits + */ + private static function readCode(rawbits:Array, startIndex:int, length:int):int { + var res:int = 0; + + for (var i:int = startIndex; i < startIndex + length; i++) { + res <<= 1; + if (rawbits[i]) { + res++; + } + } + + return res; + } + +} +} diff --git a/FairyGUI-as3/src/com/google/zxing/aztec/detector/Detector.as b/FairyGUI-as3/src/com/google/zxing/aztec/detector/Detector.as new file mode 100644 index 0000000..710ce4d --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/aztec/detector/Detector.as @@ -0,0 +1,655 @@ +/* + * Copyright 2010 ZXing authors + * + * Licensed 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 com.google.zxing.aztec.detector +{ + import com.google.zxing.common.detector.WhiteRectangleDetector; + + public class Detector + { + + import com.google.zxing.NotFoundException; + import com.google.zxing.ResultPoint; + import com.google.zxing.aztec.AztecDetectorResult; + import com.google.zxing.common.BitMatrix; + import com.google.zxing.common.GridSampler; + //import com.google.zxing.common.detector.WhiteRectangleDetector; + import com.google.zxing.common.reedsolomon.GenericGF; + import com.google.zxing.common.reedsolomon.GenericGFPoly; + import com.google.zxing.common.reedsolomon.ReedSolomonDecoder; + import com.google.zxing.common.reedsolomon.ReedSolomonException; + import com.google.zxing.aztec.Point; + + /** + *

Encapsulates logic that can detect an Aztec Code in an image, even if the Aztec Code + * is rotated or skewed, or partially obscured.

+ * + * @author David Olivier + */ + + + private var image:BitMatrix; + + private var compact:Boolean; + private var nbLayers:int; + private var nbDataBlocks:int; + private var nbCenterLayers:int; + private var shift:int; + + public function Detector(image:BitMatrix) + { + this.image = image; + } + + /** + *

Detects an Aztec Code in an image.

+ * + * @return {@link AztecDetectorResult} encapsulating results of detecting an Aztec Code + * @throws NotFoundException if no Aztec Code can be found + */ + public function detect():AztecDetectorResult + { + + // 1. Get the center of the aztec matrix + var pCenter:Point = getMatrixCenter(); + + // 2. Get the corners of the center bull's eye + var bullEyeCornerPoints:Array = getBullEyeCornerPoints(pCenter); + + // 3. Get the size of the matrix from the bull's eye + extractParameters(bullEyeCornerPoints); + + // 4. Get the corners of the matrix + var corners:Array = getMatrixCornerPoints(bullEyeCornerPoints); + + // 5. Sample the grid + var bits:BitMatrix = sampleGrid(image, corners[shift%4], corners[(shift+3)%4], corners[(shift+2)%4], corners[(shift+1)%4]); +// tot hier correct + return new AztecDetectorResult(bits, corners, compact, nbDataBlocks, nbLayers); + } + + /** + *

Extracts the number of data layers and data blocks from the layer around the bull's eye

+ * + * @param bullEyeCornerPoints the array of bull's eye corners + * @throws NotFoundException in case of too many errors or invalid parameters + */ + public function extractParameters(bullEyeCornerPoints:Array ):void + { + + // Get the bits around the bull's eye + var resab:Array = sampleLine(bullEyeCornerPoints[0], bullEyeCornerPoints[1], 2*nbCenterLayers+1); + var resbc:Array = sampleLine(bullEyeCornerPoints[1], bullEyeCornerPoints[2], 2*nbCenterLayers+1); + var rescd:Array = sampleLine(bullEyeCornerPoints[2], bullEyeCornerPoints[3], 2*nbCenterLayers+1); + var resda:Array = sampleLine(bullEyeCornerPoints[3], bullEyeCornerPoints[0], 2*nbCenterLayers+1); + + // Determine the orientation of the matrix + if (resab[0] && resab[2 * nbCenterLayers]) + { + shift = 0; + } + else if (resbc[0] && resbc[2 * nbCenterLayers]) + { + shift = 1; + } + else if (rescd[0] && rescd[2 * nbCenterLayers]) + { + shift = 2; + } + else if (resda[0] && resda[2 * nbCenterLayers]) + { + shift = 3; + } + else + { + throw NotFoundException.getNotFoundInstance(); + } + + //d a + // + //c b + + // Flatten the bits in a single array + var parameterData:Array; + var shiftedParameterData:Array; + if (compact) + { + shiftedParameterData = new Array(); + for (var i:int = 0; i < 7; i++) + { + shiftedParameterData[i] = resab[2+i]; + shiftedParameterData[i+7] = resbc[2+i]; + shiftedParameterData[i+14] = rescd[2+i]; + shiftedParameterData[i+21] = resda[2+i]; + } + + parameterData = new Array(); + for (var iiii:int = 0; iiii < 28; iiii++) + { + parameterData[iiii] = shiftedParameterData[(iiii+shift*7)%28]; + } + } + else + { + shiftedParameterData = new Array(); + for (var iii:int = 0; iii < 11; iii++) + { + if (iii < 5) + { + shiftedParameterData[iii] = resab[2+iii]; + shiftedParameterData[iii+10] = resbc[2+iii]; + shiftedParameterData[iii+20] = rescd[2+iii]; + shiftedParameterData[iii+30] = resda[2+iii]; + } + if (iii > 5) + { + shiftedParameterData[iii-1] = resab[2+iii]; + shiftedParameterData[iii+10-1] = resbc[2+iii]; + shiftedParameterData[iii+20-1] = rescd[2+iii]; + shiftedParameterData[iii+30-1] = resda[2+iii]; + } + } + + parameterData = new Array(); + for (var ij:int = 0; ij < 40; ij++) + { + parameterData[ij] = shiftedParameterData[int((ij+shift*10)%40)]; + } + } + + // corrects the error using RS algorithm + correctParameterData(parameterData, compact); + + // gets the parameters from the bit array + getParameters(parameterData); + } + + /** + * + *

Gets the Aztec code corners from the bull's eye corners and the parameters

+ * + * @param bullEyeCornerPoints the array of bull's eye corners + * @return the array of aztec code corners + * @throws NotFoundException if the corner points do not fit in the image + */ + private function getMatrixCornerPoints(bullEyeCornerPoints:Array):Array + { + + var ratio:Number = (2 * nbLayers + (nbLayers > 4 ? 1 : 0) + int((nbLayers - 4) / 8)) / (2.0 * nbCenterLayers);//BAS : added int cast in order to do the same calculation as Java + + var dx:int = bullEyeCornerPoints[0].x-bullEyeCornerPoints[2].x; + dx+=dx>0?1:-1; + var dy:int = bullEyeCornerPoints[0].y-bullEyeCornerPoints[2].y; + dy+=dy>0?1:-1; + + var targetcx:int = round(bullEyeCornerPoints[2].x-ratio*dx); + var targetcy:int = round(bullEyeCornerPoints[2].y-ratio*dy); + + var targetax:int = round(bullEyeCornerPoints[0].x+ratio*dx); + var targetay:int = round(bullEyeCornerPoints[0].y+ratio*dy); + + dx = bullEyeCornerPoints[1].x-bullEyeCornerPoints[3].x; + dx+=dx>0?1:-1; + dy = bullEyeCornerPoints[1].y-bullEyeCornerPoints[3].y; + dy+=dy>0?1:-1; + + var targetdx:int = round(bullEyeCornerPoints[3].x-ratio*dx); + var targetdy:int = round(bullEyeCornerPoints[3].y-ratio*dy); + var targetbx:int = round(bullEyeCornerPoints[1].x+ratio*dx); + var targetby:int = round(bullEyeCornerPoints[1].y+ratio*dy); + + if (!isValid(targetax, targetay) || !isValid(targetbx, targetby) || !isValid(targetcx, targetcy) || !isValid(targetdx, targetdy)) + { + throw NotFoundException.getNotFoundInstance(); + } + + return new Array(new ResultPoint(targetax, targetay), new ResultPoint(targetbx, targetby), new ResultPoint(targetcx, targetcy), new ResultPoint(targetdx, targetdy)); + } + + /** + * + *

Corrects the parameter bits using Reed-Solomon algorithm

+ * + * @param parameterData paremeter bits + * @param compact true if this is a compact Aztec code + * @throws NotFoundException if the array contains too many errors + */ + private static function correctParameterData(parameterData:Array, compact:Boolean):void + { + + var numCodewords:int; + var numDataCodewords:int; + + if (compact) { + numCodewords = 7; + numDataCodewords = 2; + } else { + numCodewords = 10; + numDataCodewords = 4; + } + + var numECCodewords:int = numCodewords - numDataCodewords; + var parameterWords:Array = new Array(numCodewords);//new int[numCodewords]; + for(var m:int=0;m Finds the corners of a bull-eye centered on the passed point

+ * + * @param pCenter Center point + * @return The corners of the bull-eye + * @throws NotFoundException If no valid bull-eye can be found + */ + private function getBullEyeCornerPoints(pCenter:Point ):Array + { + + var pina:Point = pCenter; + var pinb:Point = pCenter; + var pinc:Point = pCenter; + var pind:Point = pCenter; + + var color:Boolean = true; + + for (nbCenterLayers = 1; nbCenterLayers < 9; nbCenterLayers++) { + var pouta:Point = getFirstDifferent(pina, color, 1, -1); + var poutb:Point = getFirstDifferent(pinb, color, 1, 1); + var poutc:Point = getFirstDifferent(pinc, color, -1, 1); + var poutd:Point = getFirstDifferent(pind, color, -1, -1); + + //d a + // + //c b + + if (nbCenterLayers>2) { + var q:Number = distance(poutd, pouta)*nbCenterLayers/(distance(pind, pina)*(nbCenterLayers+2)); + if ( q < 0.75 || q > 1.25 || !isWhiteOrBlackRectangle(pouta, poutb, poutc, poutd)) { + break; + } + } + + pina = pouta; + pinb = poutb; + pinc = poutc; + pind = poutd; + + color = !color; + } + + if (nbCenterLayers != 5 && nbCenterLayers != 7) + { + throw NotFoundException.getNotFoundInstance(); + } + + compact = nbCenterLayers==5; + + var ratio:Number = 0.75*2/(2*nbCenterLayers-3); + + var dx:int = pina.x-pinc.x; + var dy:int = pina.y-pinc.y; + var targetcx:int = round(pinc.x-ratio*dx); + var targetcy:int = round(pinc.y-ratio*dy); + var targetax:int = round(pina.x+ratio*dx); + var targetay:int = round(pina.y+ratio*dy); + + dx = pinb.x-pind.x; + dy = pinb.y-pind.y; + + var targetdx:int = round(pind.x-ratio*dx); + var targetdy:int = round(pind.y-ratio*dy); + var targetbx:int = round(pinb.x+ratio*dx); + var targetby:int = round(pinb.y+ratio*dy); + + if (!isValid(targetax, targetay) || !isValid(targetbx, targetby) + || !isValid(targetcx, targetcy) || !isValid(targetdx, targetdy)) { + throw NotFoundException.getNotFoundInstance(); + } + + var pa:Point = new Point(targetax,targetay); + var pb:Point = new Point(targetbx,targetby); + var pc:Point = new Point(targetcx,targetcy); + var pd:Point = new Point(targetdx,targetdy); + + return new Array(pa, pb, pc, pd); + } + + /** + * + * Finds a candidate center point of an Aztec code from an image + * + * @return the center point + */ + private function getMatrixCenter():Point { + + var pointA:ResultPoint ; + var pointB:ResultPoint ; + var pointC:ResultPoint ; + var pointD:ResultPoint ; + + //Get a white rectangle that can be the border of the matrix in center bull's eye or + try { + + var cornerPoints:Array = new WhiteRectangleDetector(image).detect(); + pointA = cornerPoints[0]; + pointB = cornerPoints[1]; + pointC = cornerPoints[2]; + pointD = cornerPoints[3]; + + } catch (e:NotFoundException) { + + // This exception can be in case the initial rectangle is white + // In that case, surely in the bull's eye, we try to expand the rectangle. + var cx:int = int(image.getWidth()/2); + var cy:int = int(image.getHeight()/2); + pointA = getFirstDifferent(new Point(cx+int(15/2), cy-int(15/2)), false, 1, -1).toResultPoint(); + pointB = getFirstDifferent(new Point(cx+int(15/2), cy+int(15/2)), false, 1, 1).toResultPoint(); + pointC = getFirstDifferent(new Point(cx-int(15/2), cy+int(15/2)), false, -1, 1).toResultPoint(); + pointD = getFirstDifferent(new Point(cx-int(15/2), cy-int(15/2)), false, -1, -1).toResultPoint(); + + } + + //Compute the center of the rectangle + var cx2:int = round((pointA.getX() + pointD.getX() + pointB.getX() + pointC.getX())/4); + var cy2:int = round((pointA.getY() + pointD.getY() + pointB.getY() + pointC.getY())/4); + + // Redetermine the white rectangle starting from previously computed center. + // This will ensure that we end up with a white rectangle in center bull's eye + // in order to compute a more accurate center. + try { + var cornerPoints2:Array = new WhiteRectangleDetector(image, 15, cx2, cy2).detect(); + pointA = cornerPoints2[0]; + pointB = cornerPoints2[1]; + pointC = cornerPoints2[2]; + pointD = cornerPoints2[3]; + } catch (e:NotFoundException) { + + // This exception can be in case the initial rectangle is white + // In that case we try to expand the rectangle. + pointA = getFirstDifferent(new Point(cx2+int(15/2), cy2-int(15/2)), false, 1, -1).toResultPoint(); + pointB = getFirstDifferent(new Point(cx2+int(15/2), cy2+int(15/2)), false, 1, 1).toResultPoint(); + pointC = getFirstDifferent(new Point(cx2-int(15/2), cy2+int(15/2)), false, -1, 1).toResultPoint(); + pointD = getFirstDifferent(new Point(cx2-int(15/2), cy2-int(15/2)), false, -1, -1).toResultPoint(); + + } + + // Recompute the center of the rectangle + cx = round((pointA.getX() + pointD.getX() + pointB.getX() + pointC.getX())/4); + cy = round((pointA.getY() + pointD.getY() + pointB.getY() + pointC.getY())/4); + + return new Point(cx, cy); + } + + /** + * Samples an Aztec matrix from an image + */ + private function sampleGrid(image:BitMatrix , + topLeft:ResultPoint , + bottomLeft:ResultPoint , + bottomRight:ResultPoint , + topRight:ResultPoint ):BitMatrix { + + var dimension:int; + if (compact) { + dimension = 4*nbLayers+11; + } else { + if (nbLayers <= 4) { + dimension = 4*nbLayers + 15; + } else { + dimension = 4*nbLayers + 2*(int((nbLayers-4)/8) + 1) + 15 ; + } + } + + var sampler:GridSampler = GridSampler.getGridSamplerInstance(); + + return sampler.sampleGrid2(image, + dimension, + dimension, + 0.5, + 0.5, + dimension - 0.5, + 0.5, + dimension - 0.5, + dimension - 0.5, + 0.5, + dimension - 0.5, + topLeft.getX(), + topLeft.getY(), + topRight.getX(), + topRight.getY(), + bottomRight.getX(), + bottomRight.getY(), + bottomLeft.getX(), + bottomLeft.getY()); + } + + /** + * Sets number of layers and number of datablocks from parameter bits + */ + private function getParameters(parameterData:Array):void { + + var nbBitsForNbLayers:int; + var nbBitsForNbDatablocks:int; + + if (compact) { + nbBitsForNbLayers = 2; + nbBitsForNbDatablocks = 6; + } else { + nbBitsForNbLayers = 5; + nbBitsForNbDatablocks = 11; + } + + for (var i:int = 0; i < nbBitsForNbLayers; i++) { + nbLayers <<= 1; + if (parameterData[i]) { + nbLayers += 1; + } + } + + for (var i3:int = nbBitsForNbLayers; i3 < nbBitsForNbLayers + nbBitsForNbDatablocks; i3++) { + nbDataBlocks <<= 1; + if (parameterData[i3]) { + nbDataBlocks += 1; + } + } + + nbLayers ++; + nbDataBlocks ++; + + } + + /** + * + * Samples a line + * + * @param p1 first point + * @param p2 second point + * @param size number of bits + * @return the array of bits + */ + private function sampleLine(p1:Point, p2:Point,size:int):Array { + + var res:Array = new Array(size); + var d:Number = distance(p1,p2); + var moduleSize:Number = d/(size-1); + var dx:Number = moduleSize*(p2.x - p1.x)/d; + var dy:Number = moduleSize*(p2.y - p1.y)/d; + + var px:Number = p1.x; + var py:Number = p1.y; + + for (var i:int = 0; i < size; i++) { + res[i] = image._get(round(px), round(py)); + px+=dx; + py+=dy; + } + + return res; + } + + /** + * @return true if the border of the rectangle passed in parameter is compound of white points only + * or black points only + */ + private function isWhiteOrBlackRectangle(p1:Point, p2:Point, p3:Point, p4:Point):Boolean { + + var corr:int = 3; + + p1 = new Point(p1.x-corr, p1.y+corr); + p2 = new Point(p2.x-corr, p2.y-corr); + p3 = new Point(p3.x+corr, p3.y-corr); + p4 = new Point(p4.x+corr, p4.y+corr); + + var cInit:int = getColor(p4, p1); + + if (cInit == 0) { + return false; + } + + var c:int = getColor(p1, p2); + + if (c!=cInit || c == 0) { + return false; + } + + c = getColor(p2, p3); + + if (c!=cInit || c == 0) { + return false; + } + + c = getColor(p3, p4); + + return c == cInit && c != 0; + + } + + /** + * Gets the color of a segment + * + * @return 1 if segment more than 90% black, -1 if segment is more than 90% white, 0 else + */ + private function getColor( p1:Point, p2:Point):int { + var d:Number = distance(p1,p2); + var dx:Number = (p2.x - p1.x)/d; + var dy:Number = (p2.y - p1.y)/d; + var error:int = 0; + + var px:Number = p1.x; + var py:Number = p1.y; + + var colorModel:Boolean = image._get(p1.x, p1.y); + + for (var i:int = 0; i < d; i++) { + px+=dx; + py+=dy; + if (image._get(round(px), round(py)) != colorModel) { + error++; + } + } + + var errRatio:Number = Number(error/d); + + if (errRatio > 0.1 && errRatio < 0.9) { + return 0; + } + + if (errRatio <= 0.1) { + return colorModel?1:-1; + } else { + return colorModel?-1:1; + } + } + + /** + * Gets the coordinate of the first point with a different color in the given direction + */ + private function getFirstDifferent(init:Point, color:Boolean, dx:int, dy:int):Point { + var x:int = init.x+dx; + var y:int = init.y+dy; + + while(isValid(x,y) && image._get(x,y) == color) { + x+=dx; + y+=dy; + } + + x-=dx; + y-=dy; + + while(isValid(x,y) && image._get(x, y) == color) { + x+=dx; + } + x-=dx; + + while(isValid(x,y) && image._get(x, y) == color) { + y+=dy; + } + y-=dy; + + return new Point(x,y); + } + + + + private function isValid(x:int, y:int):Boolean { + return x >= 0 && x < image.getWidth() && y > 0 && y < image.getHeight(); + } + + /** + * Ends up being a bit faster than Math.round(). This merely rounds its + * argument to the nearest int, where x.5 rounds up. + */ + private static function round(d:Number):int { + return (int) (d + 0.5); + } + + // L2 distance + private static function distance(a:Point, b:Point ):Number + { + return Math.sqrt((a.x - b.x) + * (a.x - b.x) + (a.y - b.y) + * (a.y - b.y)); + } + } +} diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/AbstractDoCoMoResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/AbstractDoCoMoResultParser.as new file mode 100644 index 0000000..756c5a4 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/AbstractDoCoMoResultParser.as @@ -0,0 +1,43 @@ +package com.google.zxing.client.result +{ + /* + * Copyright 2007 ZXing authors + * + * Licensed 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. + */ + + +/** + *
+ * + *

Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + * on exception-based mechanisms during parsing.

+ * + * @author Sean Owen + */ + public class AbstractDoCoMoResultParser extends ResultParser + { + + public static function matchDoCoMoPrefixedField(prefix:String , rawText:String, trim:Boolean):Array { + return matchPrefixedField(prefix, rawText, ';', trim); + } + + public static function matchSingleDoCoMoPrefixedField(prefix:String, rawText:String, trim:Boolean):String { + return matchSinglePrefixedField(prefix, rawText, ';', trim); + } + + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/AddressBookDocomoResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/AddressBookDocomoResultParser.as new file mode 100644 index 0000000..2cd3537 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/AddressBookDocomoResultParser.as @@ -0,0 +1,74 @@ +package com.google.zxing.client.result +{ + /* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ + + import com.google.zxing.common.flexdatatypes.ArrayList; + import com.google.zxing.Result; + + /** + * Implements KDDI AU's address book format. See + * + * http://www.au.kddi.com/ezfactory/tec/two_dimensions/index.html. + * (Thanks to Yuzo for translating!) + * + * @author Sean Owen + */ + public final class AddressBookDocomoResultParser extends ResultParser { + + public static function parse(result:Result ):AddressBookParsedResult { + var rawText:String = result.getText(); + // MEMORY is mandatory; seems like a decent indicator, as does end-of-record separator CR/LF + if (rawText == null || rawText.indexOf("MEMORY") < 0 || rawText.indexOf("\r\n") < 0) { + return null; + } + + // NAME1 and NAME2 have specific uses, namely written name and pronunciation, respectively. + // Therefore we treat them specially instead of as an array of names. + var name:String = matchSinglePrefixedField("NAME1:", rawText, '\r', true); + var pronunciation:String = matchSinglePrefixedField("NAME2:", rawText, '\r', true); + + var phoneNumbers:Array = matchMultipleValuePrefix("TEL", 3, rawText, true); + var emails:Array = matchMultipleValuePrefix("MAIL", 3, rawText, true); + var note:String = matchSinglePrefixedField("MEMORY:", rawText, '\r', false); + var address:String = matchSinglePrefixedField("ADD:", rawText, '\r', true); + return new AddressBookParsedResult(maybeWrap(name), pronunciation, phoneNumbers, emails, note, + address, null, null, null, null); + } + + public static function matchMultipleValuePrefix(prefix:String , max:int , rawText:String , trim:Boolean ):Array + { + var values:ArrayList = null; + for (var i:int = 1; i <= max; i++) + { + var value:String = matchSinglePrefixedField(prefix + i + ':', rawText, '\r', trim); + if (value == null) { + break; + } + if (values == null) { + values = new ArrayList(max); // lazy init + } + values.addElement(value); + } + if (values == null) { + return null; + } + return toStringArray(values); + } + +} + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/AddressBookParsedResult.as b/FairyGUI-as3/src/com/google/zxing/client/result/AddressBookParsedResult.as new file mode 100644 index 0000000..87c3a72 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/AddressBookParsedResult.as @@ -0,0 +1,127 @@ +package com.google.zxing.client.result +{ + /* + * Copyright 2007 ZXing authors + * + * Licensed 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. + */ + +import com.google.zxing.common.flexdatatypes.StringBuilder; + +/** + * @author Sean Owen + */ +public final class AddressBookParsedResult extends ParsedResult +{ + + private var names:Array; + private var pronunciation:String; + private var phoneNumbers:Array; + private var emails:Array; + private var note:String; + private var address:String; + private var org:String; + private var birthday:String; + private var title:String; + private var url:String; + + public function AddressBookParsedResult(names:Array, + pronunciation:String, + phoneNumbers:Array, + emails:Array, + note:String, + address:String, + org:String, + birthday:String, + title:String, + url:String) { + super(ParsedResultType.ADDRESSBOOK); + this.names = names; + this.pronunciation = pronunciation; + this.phoneNumbers = phoneNumbers; + this.emails = emails; + this.note = note; + this.address = address; + this.org = org; + this.birthday = birthday; + this.title = title; + this.url = url; + } + + public function getNames():Array { + return names; + } + + /** + * In Japanese, the name is written in kanji, which can have multiple readings. Therefore a hint + * is often provided, called furigana, which spells the name phonetically. + * + * @return The pronunciation of the getNames() field, often in hiragana or katakana. + */ + public function getPronunciation():String { + return pronunciation; + } + + public function getPhoneNumbers():Array { + return phoneNumbers; + } + + public function getEmails():Array { + return emails; + } + + public function getNote():String { + return note; + } + + public function getAddress():String { + return address; + } + + public function getTitle():String { + return title; + } + + public function getOrg():String { + return org; + } + + public function getURL():String { + return url; + } + + /** + * @return birthday formatted as yyyyMMdd (e.g. 19780917) + */ + public function getBirthday():String { + return birthday; + } + + public override function getDisplayResult():String { + var result:StringBuilder = new StringBuilder(); + maybeAppend(names, result); + maybeAppend(pronunciation, result); + maybeAppend(title, result); + maybeAppend(org, result); + maybeAppend(address, result); + maybeAppend(phoneNumbers, result); + maybeAppend(emails, result); + maybeAppend(url, result); + maybeAppend(birthday, result); + maybeAppend(note, result); + return result.toString(); + } + +} + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/BizcardResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/BizcardResultParser.as new file mode 100644 index 0000000..a01c66f --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/BizcardResultParser.as @@ -0,0 +1,98 @@ +package com.google.zxing.client.result +{ + /* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ + + + import com.google.zxing.common.flexdatatypes.ArrayList; + import com.google.zxing.Result; + +/** + * Implements the "BIZCARD" address book entry format, though this has been + * largely reverse-engineered from examples observed in the wild -- still + * looking for a definitive reference. + * + * @author Sean Owen + */ +public final class BizcardResultParser extends AbstractDoCoMoResultParser +{ + + // Yes, we extend AbstractDoCoMoResultParser since the format is very much + // like the DoCoMo MECARD format, but this is not technically one of + // DoCoMo's proposed formats + + public static function parse(result:Result):AddressBookParsedResult { + var rawText:String = result.getText(); + if (rawText == null || !(rawText.substr(0,8) == "BIZCARD:")) { + return null; + } + var firstName:String = matchSingleDoCoMoPrefixedField("N:", rawText, true); + var lastName:String = matchSingleDoCoMoPrefixedField("X:", rawText, true); + var fullName:String = buildName(firstName, lastName); + var title:String = matchSingleDoCoMoPrefixedField("T:", rawText, true); + var org:String = matchSingleDoCoMoPrefixedField("C:", rawText, true); + var address:String = matchSingleDoCoMoPrefixedField("A:", rawText, true); + var phoneNumber1:String = matchSingleDoCoMoPrefixedField("B:", rawText, true); + var phoneNumber2:String = matchSingleDoCoMoPrefixedField("M:", rawText, true); + var phoneNumber3:String = matchSingleDoCoMoPrefixedField("F:", rawText, true); + var email:String = matchSingleDoCoMoPrefixedField("E:", rawText, true); + + return new AddressBookParsedResult(maybeWrap(fullName), + null, + buildPhoneNumbers(phoneNumber1, phoneNumber2, phoneNumber3), + maybeWrap(email), + null, + address, + org, + null, + title, + null); + } + + private static function buildPhoneNumbers(number1:String, number2:String, number3:String ):Array { + var numbers:ArrayList = new ArrayList(3); + if (number1 != null) { + numbers.addElement(number1); + } + if (number2 != null) { + numbers.addElement(number2); + } + if (number3 != null) { + numbers.addElement(number3); + } + var size:int = numbers.size(); + if (size == 0) { + return null; + } + var result:Array = new Array(size); + for (var i:int = 0; i < size; i++) { + result[i] = String(numbers.elementAt(i)); + } + return result; + } + + private static function buildName(firstName:String, lastName:String):String + { + if (firstName == null) { + return lastName; + } else { + return lastName == null ? firstName : firstName + ' ' + lastName; + } + } + +} + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/BookmarkDoCoMoResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/BookmarkDoCoMoResultParser.as new file mode 100644 index 0000000..0e1897e --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/BookmarkDoCoMoResultParser.as @@ -0,0 +1,49 @@ +package com.google.zxing.client.result +{ + /* + * Copyright 2007 ZXing authors + * + * Licensed 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. + */ + +import com.google.zxing.Result; + +/** + * @author Sean Owen + */ +public final class BookmarkDoCoMoResultParser extends AbstractDoCoMoResultParser +{ + + public function BookmarkDoCoMoResultParser() + { + } + + public static function parse(result:Result):URIParsedResult { + var rawText:String = result.getText(); + if (rawText == null || (rawText.substr(0,6) != "MEBKM:")) { + return null; + } + var title:String = matchSingleDoCoMoPrefixedField("TITLE:", rawText, true); + var rawUri:Array = matchDoCoMoPrefixedField("URL:", rawText, true); + if (rawUri == null) { + return null; + } + var uri:String = rawUri[0]; + if (!URIResultParser.isBasicallyValidURI(uri)) { + return null; + } + return new URIParsedResult(uri, title); + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/CalendarParsedResult.as b/FairyGUI-as3/src/com/google/zxing/client/result/CalendarParsedResult.as new file mode 100644 index 0000000..821e28c --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/CalendarParsedResult.as @@ -0,0 +1,143 @@ +package com.google.zxing.client.result +{ + +import com.google.zxing.common.flexdatatypes.StringBuilder; +import com.google.zxing.common.flexdatatypes.IllegalArgumentException; +import com.google.zxing.common.flexdatatypes.Utils; + + /* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ + +/** + * @author Sean Owen + */ +public final class CalendarParsedResult extends ParsedResult +{ + + private var summary:String; + private var start:String; + private var end:String; + private var location:String; + private var attendee:String; + private var title:String; + + public function CalendarParsedResult(summary:String, + start:String, + end:String, + location:String, + attendee:String, + title:String) + { + super(ParsedResultType.CALENDAR); + // Start is required, end is not + if (start == null) { + throw new IllegalArgumentException(); + } + validateDate(start); + validateDate(end); + this.summary = summary; + this.start = start; + this.end = end; + this.location = location; + this.attendee = attendee; + this.title = title; + } + + public function getSummary():String + { + return summary; + } + + /** + *

We would return the start and end date as a {@link java.util.Date} except that this code + * needs to work under JavaME / MIDP and there is no date parsing library available there, such + * as java.text.SimpleDateFormat.

See validateDate() for the return format. + * + * @return start time formatted as a RFC 2445 DATE or DATE-TIME.

+ */ + public function getStart():String + { + return start; + } + + /** + * @see #getStart(). May return null if the event has no duration. + */ + public function getEnd():String + { + return end; + } + + public function getLocation():String + { + return location; + } + + public function getAttendee():String { + return attendee; + } + + public function getTitle():String { + return title; + } + + public override function getDisplayResult():String { + var result:StringBuilder = new StringBuilder(); + maybeAppend(summary, result); + maybeAppend(start, result); + maybeAppend(end, result); + maybeAppend(location, result); + maybeAppend(attendee, result); + maybeAppend(title, result); + return result.toString(); + } + + /** + * RFC 2445 allows the start and end fields to be of type DATE (e.g. 20081021) or DATE-TIME + * (e.g. 20081021T123000 for local time, or 20081021T123000Z for UTC). + * + * @param date The string to validate + */ + private static function validateDate( date:String):void { + if (date != null) { + var length:int = date.length; + if (length != 8 && length != 15 && length != 16) { + throw new IllegalArgumentException(); + } + for (var i:int = 0; i < 8; i++) { + if (!Utils.isDigit(date.charAt(i))) { + throw new IllegalArgumentException(); + } + } + if (length > 8) { + if (date.charAt(8) != 'T') { + throw new IllegalArgumentException(); + } + for (var ii:int = 9; ii < 15; i++) { + if (!Utils.isDigit(date.charAt(ii))) { + throw new IllegalArgumentException(); + } + } + if (length == 16 && date.charAt(15) != 'Z') { + throw new IllegalArgumentException(); + } + } + } + } + +} + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/EmailAddressParsedResult.as b/FairyGUI-as3/src/com/google/zxing/client/result/EmailAddressParsedResult.as new file mode 100644 index 0000000..f84a16d --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/EmailAddressParsedResult.as @@ -0,0 +1,71 @@ +package com.google.zxing.client.result +{ + import com.google.zxing.common.flexdatatypes.StringBuilder; + +/* + * Copyright 2007 ZXing authors + * + * Licensed 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. + */ + + +/** + * @author Sean Owen + */ +public final class EmailAddressParsedResult extends ParsedResult +{ + + private var emailAddress:String; + private var subject:String; + private var body:String; + private var mailtoURI:String; + + public function EmailAddressParsedResult(emailAddress:String, subject:String, body:String , mailtoURI:String ) + { + super(ParsedResultType.EMAIL_ADDRESS); + this.emailAddress = emailAddress; + this.subject = subject; + this.body = body; + this.mailtoURI = mailtoURI; + } + + public function getEmailAddress():String + { + return emailAddress; + } + + public function getSubject():String + { + return subject; + } + + public function getBody():String + { + return body; + } + + public function getMailtoURI():String + { + return mailtoURI; + } + + public override function getDisplayResult():String + { + var result:StringBuilder = new StringBuilder(); + maybeAppend(emailAddress, result); + maybeAppend(subject, result); + maybeAppend(body, result); + return result.toString(); + } + +}} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/EmailAddressResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/EmailAddressResultParser.as new file mode 100644 index 0000000..c7b7cb6 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/EmailAddressResultParser.as @@ -0,0 +1,62 @@ +package com.google.zxing.client.result +{ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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. + */ +import com.google.zxing.Result; +import com.google.zxing.common.flexdatatypes.HashTable; + +/** + * Represents a result that encodes an e-mail address, either as a plain address + * like "joe(at)example.org" or a mailto: URL like "mailto:joe(at)example.org". + * + * @author Sean Owen + */ +public final class EmailAddressResultParser extends ResultParser { + + public static function parse(result:Result):EmailAddressParsedResult { + var rawText:String = result.getText(); + if (rawText == null) { + return null; + } + var emailAddress:String; + if ((rawText.substr(0,7) == "mailto:") || (rawText.substr(0,7) == "MAILTO:")) { + // If it starts with mailto:, assume it is definitely trying to be an email address + emailAddress = rawText.substring(7); + var queryStart:int = emailAddress.indexOf('?'); + if (queryStart >= 0) { + emailAddress = emailAddress.substring(0, queryStart); + } + var nameValues:HashTable = parseNameValuePairs(rawText); + var subject:String = null; + var body:String = null; + if (nameValues != null) { + if (emailAddress.length == 0) { + emailAddress = String( nameValues._get("to")); + } + subject = String(nameValues._get("subject")); + body = String(nameValues._get("body")); + } + return new EmailAddressParsedResult(emailAddress, subject, body, rawText); + } else { + if (!EmailDoCoMoResultParser.isBasicallyValidEmailAddress(rawText)) { + return null; + } + emailAddress = rawText; + return new EmailAddressParsedResult(emailAddress, null, null, "mailto:" + emailAddress); + } + } + +}} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/EmailDoCoMoResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/EmailDoCoMoResultParser.as new file mode 100644 index 0000000..965e2c5 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/EmailDoCoMoResultParser.as @@ -0,0 +1,88 @@ +package com.google.zxing.client.result +{ + /* + * Copyright 2007 ZXing authors + * + * Licensed 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. + */ + +import com.google.zxing.Result; +import com.google.zxing.common.flexdatatypes.Utils; + +/** + * Implements the "MATMSG" email message entry format. + * + * Supported keys: TO, SUB, BODY + * + * @author Sean Owen + */ +public final class EmailDoCoMoResultParser extends AbstractDoCoMoResultParser { + + private static var ATEXT_SYMBOLS:Array = ['@','.','!','#','$','%','&','\'','*','+','-','/','=','?','^','_','`','{','|','}','~']; + + public static function parse(result:Result):EmailAddressParsedResult { + var rawText:String = result.getText(); + if (rawText == null || !Utils.startsWith(rawText,"MATMSG:")) { + return null; + } + var rawTo:Array = matchDoCoMoPrefixedField("TO:", rawText, true); + if (rawTo == null) { + return null; + } + var _to:String = rawTo[0]; + if (!isBasicallyValidEmailAddress(_to)) { + return null; + } + var subject:String = matchSingleDoCoMoPrefixedField("SUB:", rawText, false); + var body:String = matchSingleDoCoMoPrefixedField("BODY:", rawText, false); + return new EmailAddressParsedResult(_to, subject, body, "mailto:" + _to); + } + + /** + * This implements only the most basic checking for an email address's validity -- that it contains + * an '@' contains no characters disallowed by RFC 2822. This is an overly lenient definition of + * validity. We want to generally be lenient here since this class is only intended to encapsulate what's + * in a barcode, not "judge" it. + */ + public static function isBasicallyValidEmailAddress(email:String):Boolean { + if (email == null) { + return false; + } + var atFound:Boolean = false; + for (var i:int = 0; i < email.length; i++) { + var c:String = email.charAt(i); + if ((c < 'a' || c > 'z') && (c < 'A' || c > 'Z') && (c < '0' || c > '9') && + !isAtextSymbol(c)) { + return false; + } + if (c == '@') { + if (atFound) { + return false; + } + atFound = true; + } + } + return atFound; + } + + private static function isAtextSymbol(c:String):Boolean { + for (var i:int = 0; i < ATEXT_SYMBOLS.length; i++) { + if (c == ATEXT_SYMBOLS[i]) { + return true; + } + } + return false; + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/GeoParsedResult.as b/FairyGUI-as3/src/com/google/zxing/client/result/GeoParsedResult.as new file mode 100644 index 0000000..e930c3c --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/GeoParsedResult.as @@ -0,0 +1,109 @@ +package com.google.zxing.client.result +{ + import com.google.zxing.common.flexdatatypes.StringBuilder; + +/* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ + +/** + * @author Sean Owen + */ +public final class GeoParsedResult extends ParsedResult { + + private var geoURI:String; + private var latitude:Number; + private var longitude:Number; + private var altitude:Number; + + public function GeoParsedResult(geoURI:String, latitude:Number, longitude:Number, altitude:Number ) { + super(ParsedResultType.GEO); + this.geoURI = geoURI; + this.latitude = latitude; + this.longitude = longitude; + this.altitude = altitude; + } + + public function getGeoURI():String { + return geoURI; + } + + /** + * @return latitude in degrees + */ + public function getLatitude():Number { + return latitude; + } + + /** + * @return longitude in degrees + */ + public function getLongitude():Number { + return longitude; + } + + /** + * @return altitude in meters. If not specified, in the geo URI, returns 0.0 + */ + public function getAltitude():Number { + return altitude; + } + + public override function getDisplayResult():String { + var result:StringBuilder = new StringBuilder(50); + result.Append(latitude); + result.Append(", "); + result.Append(longitude); + if (altitude > 0.0) { + result.Append(", "); + result.Append(altitude); + result.Append('m'); + } + return result.toString(); + } + + /** + * @return a URI link to Google Maps which display the point on the Earth described + * by this instance, and sets the zoom level in a way that roughly reflects the + * altitude, if specified + */ + /* + public String getGoogleMapsURI() { + StringBuffer result = new StringBuffer(50); + result.append("http://maps.google.com/?ll="); + result.append(latitude); + result.append(','); + result.append(longitude); + if (altitude > 0.0f) { + // Map altitude to zoom level, cleverly. Roughly, zoom level 19 is like a + // view from 1000ft, 18 is like 2000ft, 17 like 4000ft, and so on. + double altitudeInFeet = altitude * 3.28; + int altitudeInKFeet = (int) (altitudeInFeet / 1000.0); + // No Math.log() available here, so compute log base 2 the old fashioned way + // Here logBaseTwo will take on a value between 0 and 18 actually + int logBaseTwo = 0; + while (altitudeInKFeet > 1 && logBaseTwo < 18) { + altitudeInKFeet >>= 1; + logBaseTwo++; + } + int zoom = 19 - logBaseTwo; + result.append("&z="); + result.append(zoom); + } + return result.toString(); + } + */ + +}} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/GeoResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/GeoResultParser.as new file mode 100644 index 0000000..021de04 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/GeoResultParser.as @@ -0,0 +1,65 @@ +package com.google.zxing.client.result +{ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ + +import com.google.zxing.Result; + +/** + * Parses a "geo:" URI result, which specifices a location on the surface of + * the Earth as well as an optional altitude above the surface. See + * + * http://tools.ietf.org/html/draft-mayrhofer-geo-uri-00. + * + * @author Sean Owen + */ +public final class GeoResultParser extends ResultParser { + + public function GeoResultParser() { + } + + public static function parse(result:Result ):GeoParsedResult { + var rawText:String = result.getText(); + if (rawText == null || (!(rawText.substr(0,4) == "geo:") && !(rawText.substr(0,4) == "GEO:"))) { + return null; + } + // Drop geo, query portion + var queryStart:int = rawText.indexOf('?', 4); + var geoURIWithoutQuery:String = queryStart < 0 ? rawText.substring(4) : rawText.substring(4, queryStart); + var latitudeEnd:int = geoURIWithoutQuery.indexOf(','); + if (latitudeEnd < 0) { + return null; + } + var longitudeEnd:int = geoURIWithoutQuery.indexOf(',', latitudeEnd + 1); + var latitude:Number, longitude:Number, altitude:Number; + try { + latitude = Number(geoURIWithoutQuery.substring(0, latitudeEnd)); + if (longitudeEnd < 0) { + longitude = Number(geoURIWithoutQuery.substring(latitudeEnd + 1)); + altitude = 0.0; + } else { + longitude = Number(geoURIWithoutQuery.substring(latitudeEnd + 1, longitudeEnd)); + altitude = Number(geoURIWithoutQuery.substring(longitudeEnd + 1)); + } + } catch (nfe:Error) { + return null; + } + return new GeoParsedResult((rawText.substr(0,4) == "GEO:") ? "geo:" + rawText.substring(4) : rawText, + latitude, longitude, altitude); + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/ISBNParsedResult.as b/FairyGUI-as3/src/com/google/zxing/client/result/ISBNParsedResult.as new file mode 100644 index 0000000..44143df --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/ISBNParsedResult.as @@ -0,0 +1,42 @@ +package com.google.zxing.client.result +{ + /* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ + + +/** + * @author jbreiden@google.com (Jeff Breidenbach) + */ +public final class ISBNParsedResult extends ParsedResult { + + private var isbn:String; + + public function ISBNParsedResult(isbn:String) { + super(ParsedResultType.ISBN); + this.isbn = isbn; + } + + public function getISBN():String { + return isbn; + } + + public override function getDisplayResult():String { + return isbn; + } + +} + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/ISBNResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/ISBNResultParser.as new file mode 100644 index 0000000..a0ddd0a --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/ISBNResultParser.as @@ -0,0 +1,58 @@ +package com.google.zxing.client.result +{ + /* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.Result; +import com.google.zxing.common.flexdatatypes.Utils; + +/** + * Parses strings of digits that represent a ISBN. + * + * @author jbreiden@google.com (Jeff Breidenbach) + */ +public class ISBNResultParser extends ResultParser { + + public function ISBNResultParser() { + } + + // ISBN-13 For Dummies + // http://www.bisg.org/isbn-13/for.dummies.html + public static function parse(result:Result):ISBNParsedResult + { + var format:BarcodeFormat = result.getBarcodeFormat(); + if (BarcodeFormat.EAN_13 != format) { + return null; + } + var rawText:String = result.getText(); + if (rawText == null) { + return null; + } + var length:int = rawText.length; + if (length != 13) { + return null; + } + if (!Utils.startsWith(rawText,"978") && !Utils.startsWith(rawText,"979")) { + return null; + } + + return new ISBNParsedResult(rawText); + } + +} + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/ParsedResult.as b/FairyGUI-as3/src/com/google/zxing/client/result/ParsedResult.as new file mode 100644 index 0000000..635a09d --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/ParsedResult.as @@ -0,0 +1,69 @@ +package com.google.zxing.client.result +{/* + * Copyright 2007 ZXing authors + * + * Licensed 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. + */ + +import com.google.zxing.common.flexdatatypes.StringBuilder; + +/** + *

Abstract class representing the result of decoding a barcode, as more than + * a String -- as some type of structured data. This might be a subclass which represents + * a URL, or an e-mail address. {@link ResultParser#parseResult(Result)} will turn a raw + * decoded string into the most appropriate type of structured representation.

+ * + *

Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + * on exception-based mechanisms during parsing.

+ * + * @author Sean Owen + */ +public class ParsedResult { + + private var type:ParsedResultType; + + public function ParsedResult(type:ParsedResultType ) { + this.type = type; + } + + public function getType():ParsedResultType { + return type; + } + + public function getDisplayResult():String{return '';} + + public function toString():String + { + return getDisplayResult(); + } + + public static function maybeAppend(value1:Object, result:StringBuilder ):void + { + var value:Array; + if (value1 is Array) { value = value1 as Array; } + else if (value1 is String) { value = [value1]; } + if (value != null) { + for (var i:int = 0; i < value.length; i++) { + if (value[i] != null && value[i].length > 0) { + if (result.length > 0) { + result.Append('\n'); + } + result.Append(value[i]); + } + } + } + } + +} + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/ParsedResultType.as b/FairyGUI-as3/src/com/google/zxing/client/result/ParsedResultType.as new file mode 100644 index 0000000..60053d3 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/ParsedResultType.as @@ -0,0 +1,53 @@ +package com.google.zxing.client.result +{ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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. + */ + +/** + * Represents the type of data encoded by a barcode -- from plain text, to a + * URI, to an e-mail address, etc. + * + * @author Sean Owen + */ +public final class ParsedResultType { + + public static var ADDRESSBOOK:ParsedResultType = new ParsedResultType("ADDRESSBOOK"); + public static var EMAIL_ADDRESS:ParsedResultType = new ParsedResultType("EMAIL_ADDRESS"); + public static var PRODUCT:ParsedResultType = new ParsedResultType("PRODUCT"); + public static var URI:ParsedResultType = new ParsedResultType("URI"); + public static var TEXT:ParsedResultType = new ParsedResultType("TEXT"); + public static var ANDROID_INTENT:ParsedResultType = new ParsedResultType("ANDROID_INTENT"); + public static var GEO:ParsedResultType = new ParsedResultType("GEO"); + public static var TEL:ParsedResultType = new ParsedResultType("TEL"); + public static var SMS:ParsedResultType = new ParsedResultType("SMS"); + public static var CALENDAR:ParsedResultType = new ParsedResultType("CALENDAR"); + // "optional" types + public static var NDEF_SMART_POSTER:ParsedResultType = new ParsedResultType("NDEF_SMART_POSTER"); + public static var MOBILETAG_RICH_WEB:ParsedResultType = new ParsedResultType("MOBILETAG_RICH_WEB"); + public static var ISBN:ParsedResultType = new ParsedResultType("ISBN"); + + private var name:String; + + public function ParsedResultType(name:String) { + this.name = name; + } + + public function toString():String { + return name; + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/ProductParsedResult.as b/FairyGUI-as3/src/com/google/zxing/client/result/ProductParsedResult.as new file mode 100644 index 0000000..83a9aab --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/ProductParsedResult.as @@ -0,0 +1,58 @@ +package com.google.zxing.client.result +{ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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. + */ + +/** + * @author dswitkin@google.com (Daniel Switkin) + */ +public final class ProductParsedResult extends ParsedResult { + + public var productID:String; + public var normalizedProductID:String; + +/* + public function ProductParsedResult(productID:String) + { + this(productID, productID); + } +*/ + public function ProductParsedResult(productID:String, normalizedProductID:String='') + { + if (normalizedProductID == '') + { + normalizedProductID = productID + } + super(ParsedResultType.PRODUCT); + this.productID = productID; + this.normalizedProductID = normalizedProductID; + } + + public function getProductID():String { + return productID; + } + + public function getNormalizedProductID():String { + return normalizedProductID; + } + + public override function getDisplayResult():String { + return productID; + } + +} + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/ProductResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/ProductResultParser.as new file mode 100644 index 0000000..91a9bdf --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/ProductResultParser.as @@ -0,0 +1,67 @@ +package com.google.zxing.client.result +{ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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. + */ + + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.Result; +import com.google.zxing.oned.UPCEReader; + +/** + * Parses strings of digits that repesent a UPC code. + * + * @author dswitkin@google.com (Daniel Switkin) + */ +public final class ProductResultParser extends ResultParser { + + public function ProductResultParser() { + } + + // Treat all UPC and EAN variants as UPCs, in the sense that they are all product barcodes. + public static function parse(result:Result):ProductParsedResult { + var format:BarcodeFormat = result.getBarcodeFormat(); + if (!((BarcodeFormat.UPC_A == format) || (BarcodeFormat.UPC_E == format) || + (BarcodeFormat.EAN_8 == format) || (BarcodeFormat.EAN_13 == format))) { + return null; + } + // Really neither of these should happen: + var rawText:String = result.getText(); + if (rawText == null) { + return null; + } + + var length:int = rawText.length; + for (var x:int = 0; x < length; x++) { + var c:int = rawText.charCodeAt(x);//.charAt(x); + if (c < ('0').charCodeAt(0) || c > ('9').charCodeAt(0)) { + return null; + } + } + // Not actually checking the checksum again here + + var normalizedProductID:String; + // Expand UPC-E for purposes of searching + if (BarcodeFormat.UPC_E == format) { + normalizedProductID = UPCEReader.convertUPCEtoUPCA(rawText); + } else { + normalizedProductID = rawText; + } + + return new ProductParsedResult(rawText, normalizedProductID); + } + +}} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/ResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/ResultParser.as new file mode 100644 index 0000000..032ded0 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/ResultParser.as @@ -0,0 +1,292 @@ +package com.google.zxing.client.result +{ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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. + */ + + +import com.google.zxing.Result; +import com.google.zxing.common.flexdatatypes.HashTable; +import com.google.zxing.common.flexdatatypes.ArrayList; +import com.google.zxing.common.flexdatatypes.StringBuilder; +import com.google.zxing.common.flexdatatypes.Utils; +import mx.utils.StringUtil; + +/** + *

Abstract class representing the result of decoding a barcode, as more than + * a String -- as some type of structured data. This might be a subclass which represents + * a URL, or an e-mail address. {@link #parseResult(com.google.zxing.Result)} will turn a raw + * decoded string into the most appropriate type of structured representation.

+ * + *

Thanks to Jeff Griffin for proposing rewrite of these classes that relies less + * on exception-based mechanisms during parsing.

+ * + * @author Sean Owen + */ +public class ResultParser { + + public static function parseResult(theResult:Result):ParsedResult { + // This is a bit messy, but given limited options in MIDP / CLDC, this may well be the simplest + // way to go about this. For example, we have no reflection available, really. + // Order is important here. + var result:ParsedResult; + if ((result = BookmarkDoCoMoResultParser.parse(theResult)) != null) { + return result; + } else if ((result = AddressBookDocomoResultParser.parse(theResult)) != null) { + return result; + } else if ((result = EmailDoCoMoResultParser.parse(theResult)) != null) { + return result; + } else if ((result = AddressBookDocomoResultParser.parse(theResult)) != null) { + return result; + } else if ((result = VCardResultParser.parse(theResult)) != null) { + return result; + } else if ((result = BizcardResultParser.parse(theResult)) != null) { + return result; + } else if ((result = VEventResultParser.parse(theResult)) != null) { + return result; + } else if ((result = EmailAddressResultParser.parse(theResult)) != null) { + return result; + } else if ((result = TelResultParser.parse(theResult)) != null) { + return result; + } else if ((result = SMSMMSResultParser.parse(theResult)) != null) { + return result; + } else if ((result = GeoResultParser.parse(theResult)) != null) { + return result; + } else if ((result = URLTOResultParser.parse(theResult)) != null) { + return result; + } else if ((result = URIResultParser.parse(theResult)) != null) { + return result; + } else if ((result = ISBNResultParser.parse(theResult)) != null) { + // We depend on ISBN parsing coming before UPC, as it is a subset. + return result; + } else if ((result = ProductResultParser.parse(theResult)) != null) { + return result; + } + return new TextParsedResult(theResult.getText(), null); + } + + protected static function maybeAppend(value:String, result:StringBuilder):void { + if (value != null) { + result.Append('\n'); + result.Append(value); + } + } + + protected static function maybeWrap(value:String ):Array { + return value == null ? null : [ value ]; + } + + protected static function unescapeBackslash(escaped:String):String { + if (escaped != null) { + var backslash:int = escaped.indexOf('\\'); + if (backslash >= 0) { + var max:int = escaped.length; + var unescaped:StringBuilder = new StringBuilder(max - 1); + unescaped.Append(escaped.split(""), 0, backslash); + var nextIsEscaped:Boolean = false; + for (var i:int = backslash; i < max; i++) { + var c:String = escaped.charAt(i); + if (nextIsEscaped || c != '\\') { + unescaped.Append(c); + nextIsEscaped = false; + } else { + nextIsEscaped = true; + } + } + return unescaped.toString(); + } + } + return escaped; + } + + public static function urlDecode(escaped:String):String { + + // No we can't use java.net.URLDecoder here. JavaME doesn't have it. + if (escaped == null) { + return null; + } + var escapedArray:Array = escaped.split(""); + + var first:int = findFirstEscape(escapedArray); + if (first < 0) { + return escaped; + } + + var max:int = escapedArray.length; + // final length is at most 2 less than original due to at least 1 unescaping + var unescaped:StringBuilder = new StringBuilder(max - 2); + // Can append everything up to first escape character + unescaped.Append(escapedArray, 0, first); + + for (var i:int = first; i < max; i++) { + var c:String = escapedArray[i]; + if (c == '+') { + // + is translated directly into a space + unescaped.Append(' '); + } else if (c == '%') { + // Are there even two more chars? if not we will just copy the escaped sequence and be done + if (i >= max - 2) { + unescaped.Append('%'); // append that % and move on + } else { + var firstDigitValue:int = parseHexDigit(escapedArray[++i]); + var secondDigitValue:int = parseHexDigit(escapedArray[++i]); + if (firstDigitValue < 0 || secondDigitValue < 0) { + // bad digit, just move on + unescaped.Append('%'); + unescaped.Append(escapedArray[i-1]); + unescaped.Append(escapedArray[i]); + } + unescaped.Append(String.fromCharCode((firstDigitValue << 4) + secondDigitValue)); + } + } else { + unescaped.Append(c); + } + } + return unescaped.toString(); + } + + private static function findFirstEscape(escapedArray:Array):int { + var max:int = escapedArray.length; + for (var i:int = 0; i < max; i++) { + var c:String = escapedArray[i]; + if (c == '+' || c == '%') { + return i; + } + } + return -1; + } + + private static function parseHexDigit(c:String):int { + if (c.charCodeAt(0) >= ('a').charCodeAt(0)) { + if (c.charCodeAt(0) <= ('f').charCodeAt(0)) { + return 10 + (c.charCodeAt(0) - ('a').charCodeAt(0)); + } + } else if (c.charCodeAt(0) >= ('A').charCodeAt(0)) { + if (c.charCodeAt(0) <= ('F').charCodeAt(0)) { + return 10 + (c.charCodeAt(0) - ('A').charCodeAt(0)); + } + } else if (c.charCodeAt(0) >= ('0').charCodeAt(0)) { + if (c.charCodeAt(0) <= ('9').charCodeAt(0)) { + return c.charCodeAt(0) - ('0').charCodeAt(0); + } + } + return -1; + } + + protected static function isStringOfDigits(value:String,length:int):Boolean { + if (value == null) { + return false; + } + var stringLength:int = value.length; + if (length != stringLength) { + return false; + } + for (var i:int = 0; i < length; i++) { + var c:String = value.charAt(i); + if (c < '0' || c > '9') { + return false; + } + } + return true; + } + + public static function parseNameValuePairs(uri:String):HashTable { + var paramStart:int = uri.indexOf('?'); + if (paramStart < 0) { + return null; + } + var result:HashTable = new HashTable(3); + paramStart++; + var paramEnd:int; + while ((paramEnd = uri.indexOf('&', paramStart)) >= 0) { + appendKeyValue(uri, paramStart, paramEnd, result); + paramStart = paramEnd + 1; + } + appendKeyValue(uri, paramStart, uri.length, result); + return result; + } + + private static function appendKeyValue(uri:String , paramStart:int , paramEnd:int, result:HashTable):void { + var separator:int = uri.indexOf('=', paramStart); + if (separator >= 0) { + // key = value + var key:String = uri.substring(paramStart, separator); + var value:String = uri.substring(separator + 1, paramEnd); + value = urlDecode(value); + result._put(key, value); + } + // Can't put key, null into a hashtable + } + + public static function matchPrefixedField(prefix:String, rawText:String, endChar:String, trim:Boolean):Array { + var matches:ArrayList = null; + var i:int = 0; + var max:int = rawText.length; + while (i < max) { + i = rawText.indexOf(prefix, i); + if (i < 0) { + break; + } + i += prefix.length; // Skip past this prefix we found to start + var start:int = i; // Found the start of a match here + var done:Boolean = false; + while (!done) { + i = rawText.indexOf( endChar, i); + if (i < 0) { + // No terminating end character? uh, done. Set i such that loop terminates and break + i = rawText.length; + done = true; + } else if (rawText.charAt(i - 1) == '\\') { + // semicolon was escaped so continue + i++; + } else { + // found a match + if (matches == null) { + matches = new ArrayList(3); // lazy init + } + var element:String = unescapeBackslash(rawText.substring(start, i)); + if (trim) { + element = StringUtil.trim(element); + } + matches.addElement(element); + i++; + done = true; + } + } + } + if (matches == null || matches.isEmpty()) { + return null; + } + return toStringArray(matches); + } + + public static function matchSinglePrefixedField(prefix:String, rawText:String, endChar:String, trim:Boolean ):String + { + var matches:Array = matchPrefixedField(prefix, rawText, endChar, trim); + return matches == null ? null : matches[0]; + } + + public static function toStringArray(strings:ArrayList):Array { + var size:int = strings.size(); + var result:Array = new Array(size); + for (var j:int = 0; j < size; j++) { + result[j] = String(strings.elementAt(j)); + } + return result; + } + +} + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/SMSMMSResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/SMSMMSResultParser.as new file mode 100644 index 0000000..5a13d70 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/SMSMMSResultParser.as @@ -0,0 +1,104 @@ +package com.google.zxing.client.result +{ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ + + +import com.google.zxing.Result; +import com.google.zxing.common.flexdatatypes.HashTable; +import com.google.zxing.common.flexdatatypes.Utils; + +/** + *

Parses an "sms:" URI result, which specifies a number to SMS and optional + * "via" number. See + * the IETF draft on this.

+ * + *

This actually also parses URIs starting with "mms:", "smsto:", "mmsto:", "SMSTO:", and + * "MMSTO:", and treats them all the same way, and effectively converts them to an "sms:" URI + * for purposes of forwarding to the platform.

+ * + * @author Sean Owen + */ +public final class SMSMMSResultParser extends ResultParser { + + public function SMSMMSResultParser() { + } + + public static function parse(result:Result):SMSParsedResult { + var rawText:String = result.getText(); + if (rawText == null) { + return null; + } + var prefixLength:int; + if (Utils.startsWith(rawText,"sms:") || Utils.startsWith(rawText,"SMS:") || + Utils.startsWith(rawText,"mms:") || Utils.startsWith(rawText,"MMS:")) { + prefixLength = 4; + } else if (Utils.startsWith(rawText,"smsto:") || Utils.startsWith(rawText,"SMSTO:") || + Utils.startsWith(rawText,"mmsto:") || Utils.startsWith(rawText,"MMSTO:")) { + prefixLength = 6; + } else { + return null; + } + + // Check up front if this is a URI syntax string with query arguments + var nameValuePairs:HashTable = parseNameValuePairs(rawText); + var subject:String = null; + var body:String = null; + var querySyntax:Boolean = false; + if (nameValuePairs != null && !nameValuePairs.isEmpty()) { + subject = String(nameValuePairs._get("subject")); + body = String( nameValuePairs._get("body")); + querySyntax = true; + } + + // Drop sms, query portion + var queryStart:int = rawText.indexOf('?', prefixLength); + var smsURIWithoutQuery:String; + // If it's not query syntax, the question mark is part of the subject or message + if (queryStart < 0 || !querySyntax) { + smsURIWithoutQuery = rawText.substring(prefixLength); + } else { + smsURIWithoutQuery = rawText.substring(prefixLength, queryStart); + } + var numberEnd:int = smsURIWithoutQuery.indexOf(';'); + var number:String; + var via:String; + if (numberEnd < 0) { + number = smsURIWithoutQuery; + via = null; + } else { + number = smsURIWithoutQuery.substring(0, numberEnd); + var maybeVia:String = smsURIWithoutQuery.substring(numberEnd + 1); + if (Utils.startsWith(maybeVia,"via=")) { + via = maybeVia.substring(4); + } else { + via = null; + } + } + + // Thanks to dominik.wild for suggesting this enhancement to support + // smsto:number:body URIs + if (body == null) { + var bodyStart:int = number.indexOf(':'); + if (bodyStart >= 0) { + body = number.substring(bodyStart + 1); + number = number.substring(0, bodyStart); + } + } + return new SMSParsedResult("sms:" + number, number, via, subject, body, null); + } + +}} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/SMSParsedResult.as b/FairyGUI-as3/src/com/google/zxing/client/result/SMSParsedResult.as new file mode 100644 index 0000000..bb6efab --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/SMSParsedResult.as @@ -0,0 +1,77 @@ +package com.google.zxing.client.result +{ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ + +import com.google.zxing.common.flexdatatypes.StringBuilder; +/** + * @author Sean Owen + */ +public final class SMSParsedResult extends ParsedResult { + + private var smsURI:String; + private var number:String; + private var via:String; + private var subject:String; + private var body:String; + private var title:String; + + public function SMSParsedResult(smsURI:String ,number:String ,via:String,subject:String, body:String, title:String) { + super(ParsedResultType.SMS); + this.smsURI = smsURI; + this.number = number; + this.via = via; + this.subject = subject; + this.body = body; + this.title = title; + } + + public function getSMSURI():String { + return smsURI; + } + + public function getNumber():String { + return number; + } + + public function getVia():String { + return via; + } + + public function getSubject():String { + return subject; + } + + public function getBody():String { + return body; + } + + public function getTitle():String { + return title; + } + + public override function getDisplayResult():String { + var result:StringBuilder = new StringBuilder(); + maybeAppend(number, result); + maybeAppend(via, result); + maybeAppend(subject, result); + maybeAppend(body, result); + maybeAppend(title, result); + return result.toString(); + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/TelParsedResult.as b/FairyGUI-as3/src/com/google/zxing/client/result/TelParsedResult.as new file mode 100644 index 0000000..a3e30e2 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/TelParsedResult.as @@ -0,0 +1,54 @@ +package com.google.zxing.client.result +{ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ +import com.google.zxing.common.flexdatatypes.StringBuilder; +/** + * @author Sean Owen + */ +public final class TelParsedResult extends ParsedResult { + + private var number:String; + private var telURI:String; + private var title:String; + + public function TelParsedResult(number:String, telURI:String,title:String) { + super(ParsedResultType.TEL); + this.number = number; + this.telURI = telURI; + this.title = title; + } + + public function getNumber():String { + return number; + } + + public function getTelURI():String { + return telURI; + } + + public function getTitle():String { + return title; + } + + public override function getDisplayResult():String { + var result:StringBuilder = new StringBuilder(); + maybeAppend(number, result); + maybeAppend(title, result); + return result.toString(); + } + +}} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/TelResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/TelResultParser.as new file mode 100644 index 0000000..86591dd --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/TelResultParser.as @@ -0,0 +1,46 @@ +package com.google.zxing.client.result +{ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ + + +import com.google.zxing.Result; +import com.google.zxing.common.flexdatatypes.Utils; + +/** + * Parses a "tel:" URI result, which specifies a phone number. + * + * @author Sean Owen + */ +public final class TelResultParser extends ResultParser { + + public function TelResultParser() { + } + + public static function parse(result:Result):TelParsedResult { + var rawText:String = result.getText(); + if (rawText == null || (!Utils.startsWith(rawText,"tel:") && !Utils.startsWith(rawText,"TEL:"))) { + return null; + } + // Normalize "TEL:" to "tel:" + var telURI:String = Utils.startsWith(rawText,"TEL:") ? "tel:" + rawText.substring(4) : rawText; + // Drop tel, query portion + var queryStart:int = rawText.indexOf('?', 4); + var number:String = queryStart < 0 ? rawText.substring(4) : rawText.substring(4, queryStart); + return new TelParsedResult(number, telURI, null); + } + +}} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/TextParsedResult.as b/FairyGUI-as3/src/com/google/zxing/client/result/TextParsedResult.as new file mode 100644 index 0000000..b98bb9e --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/TextParsedResult.as @@ -0,0 +1,51 @@ +package com.google.zxing.client.result +{ + /* + * Copyright 2007 ZXing authors + * + * Licensed 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. + */ + + +/** + * A simple result type encapsulating a string that has no further + * interpretation. + * + * @author Sean Owen + */ +public final class TextParsedResult extends ParsedResult { + + private var text:String; + private var language:String; + + public function TextParsedResult(text:String, language:String) { + super(ParsedResultType.TEXT); + this.text = text; + this.language = language; + } + + public function getText():String { + return text; + } + + public function getLanguage():String { + return language; + } + + public override function getDisplayResult():String { + return text; + } + +} + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/URIParsedResult.as b/FairyGUI-as3/src/com/google/zxing/client/result/URIParsedResult.as new file mode 100644 index 0000000..673d684 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/URIParsedResult.as @@ -0,0 +1,114 @@ +package com.google.zxing.client.result +{ + /* + * Copyright 2007 ZXing authors + * + * Licensed 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. + */ +import com.google.zxing.common.flexdatatypes.StringBuilder; +/** + * @author Sean Owen + */ +public final class URIParsedResult extends ParsedResult { + + private var uri:String; + private var title:String; + + public function URIParsedResult(uri:String,title:String) { + super(ParsedResultType.URI); + this.uri = massageURI(uri); + this.title = title; + } + + public function getURI():String { + return uri; + } + + public function getTitle():String { + return title; + } + + /** + * @return true if the URI contains suspicious patterns that may suggest it intends to + * mislead the user about its true nature. At the moment this looks for the presence + * of user/password syntax in the host/authority portion of a URI which may be used + * in attempts to make the URI's host appear to be other than it is. Example: + * http://yourbank.com@phisher.com This URI connects to phisher.com but may appear + * to connect to yourbank.com at first glance. + */ + public function isPossiblyMaliciousURI():Boolean { + return containsUser(); + } + + private function containsUser():Boolean { + // This method is likely not 100% RFC compliant yet + var hostStart:int = uri.indexOf(':'); // we should always have scheme at this point + hostStart++; + // Skip slashes preceding host + var uriLength:int = uri.length; + while (hostStart < uriLength && uri.charAt(hostStart) == '/') { + hostStart++; + } + var hostEnd:int = uri.indexOf('/', hostStart); + if (hostEnd < 0) { + hostEnd = uriLength; + } + var at:int = uri.indexOf('@', hostStart); + return at >= hostStart && at < hostEnd; + } + + public override function getDisplayResult():String { + var result:StringBuilder = new StringBuilder(); + maybeAppend(title, result); + maybeAppend(uri, result); + return result.toString(); + } + + /** + * Transforms a string that represents a URI into something more proper, by adding or canonicalizing + * the protocol. + */ + private static function massageURI(uri:String):String { + var protocolEnd:int = uri.indexOf(':'); + if (protocolEnd < 0) { + // No protocol, assume http + uri = "http://" + uri; + } else if (isColonFollowedByPortNumber(uri, protocolEnd)) { + // Found a colon, but it looks like it is after the host, so the protocol is still missing + uri = "http://" + uri; + } else { + // Lowercase protocol to avoid problems + uri = uri.substring(0, protocolEnd).toLowerCase() + uri.substring(protocolEnd); + } + return uri; + } + + private static function isColonFollowedByPortNumber(uri:String, protocolEnd:int):Boolean { + var nextSlash:int = uri.indexOf('/', protocolEnd + 1); + if (nextSlash < 0) { + nextSlash = uri.length; + } + if (nextSlash <= protocolEnd + 1) { + return false; + } + for (var x:int = protocolEnd + 1; x < nextSlash; x++) { + if (uri.charAt(x) < '0' || uri.charAt(x) > '9') { + return false; + } + } + return true; + } + + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/URIResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/URIResultParser.as new file mode 100644 index 0000000..5e237a8 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/URIResultParser.as @@ -0,0 +1,60 @@ +package com.google.zxing.client.result +{ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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. + */ + +import com.google.zxing.Result; +import com.google.zxing.common.flexdatatypes.Utils; + +/** + * Tries to parse results that are a URI of some kind. + * + * @author Sean Owen + */ +public final class URIResultParser extends ResultParser { + + public function URIResultParser() { + } + + public static function parse(result:Result):URIParsedResult { + var rawText:String = result.getText(); + // We specifically handle the odd "URL" scheme here for simplicity + if (rawText != null && Utils.startsWith(rawText,"URL:")) { + rawText = rawText.substring(4); + } + if (!isBasicallyValidURI(rawText)) { + return null; + } + return new URIParsedResult(rawText, null); + } + + /** + * Determines whether a string is not obviously not a URI. This implements crude checks; this class does not + * intend to strictly check URIs as its only function is to represent what is in a barcode, but, it does + * need to know when a string is obviously not a URI. + */ + public static function isBasicallyValidURI(uri:String):Boolean { + + if (uri == null || uri.indexOf(' ') >= 0 || uri.indexOf('\n') >= 0) { + return false; + } + var period:int = uri.indexOf('.'); + // Look for period in a domain but followed by at least a two-char TLD + return period < uri.length - 2 && (period >= 0 || uri.indexOf(':') >= 0); + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/URLTOResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/URLTOResultParser.as new file mode 100644 index 0000000..88bbb69 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/URLTOResultParser.as @@ -0,0 +1,48 @@ +package com.google.zxing.client.result +{ + /* + * Copyright 2007 ZXing authors + * + * Licensed 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. + */ +import com.google.zxing.Result; +import com.google.zxing.common.flexdatatypes.Utils; + +/** + * Parses the "URLTO" result format, which is of the form "URLTO:[title]:[url]". + * This seems to be used sometimes, but I am not able to find documentation + * on its origin or official format? + * + * @author Sean Owen + */ +public final class URLTOResultParser { + + public function URLTOResultParser() { + } + + public static function parse(result:Result):URIParsedResult { + var rawText:String = result.getText(); + if (rawText == null || (!Utils.startsWith(rawText,"urlto:") && !Utils.startsWith(rawText,"URLTO:"))) { + return null; + } + var titleEnd:int = rawText.indexOf(':', 6); + if (titleEnd < 0) { + return null; + } + var title:String = titleEnd <= 6 ? null : rawText.substring(6, titleEnd); + var uri:String = rawText.substring(titleEnd + 1); + return new URIParsedResult(uri, title); + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/VCardResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/VCardResultParser.as new file mode 100644 index 0000000..9a4f2d7 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/VCardResultParser.as @@ -0,0 +1,173 @@ +package com.google.zxing.client.result +{ + /* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ + +import com.google.zxing.Result; +import com.google.zxing.common.flexdatatypes.ArrayList; +import com.google.zxing.common.flexdatatypes.StringBuilder; +import com.google.zxing.common.flexdatatypes.Utils; +import mx.utils.StringUtil; + +/** + * Parses contact information formatted according to the VCard (2.1) format. This is not a complete + * implementation but should parse information as commonly encoded in 2D barcodes. + * + * @author Sean Owen + */ +public final class VCardResultParser extends ResultParser { + + public function VCardResultParser() { + } + + public static function parse(result:Result):AddressBookParsedResult { + var rawText:String = result.getText(); + if (rawText == null || (Utils.startsWith(rawText,"BEGIN:VCARD")) || !Utils.endsWith(rawText,"END:VCARD")) { + return null; + } + var names:Array = matchVCardPrefixedField("FN", rawText, true); + if (names == null) { + // If no display names found, look for regular name fields and format them + names = matchVCardPrefixedField("N", rawText, true); + formatNames(names); + } + var phoneNumbers:Array = matchVCardPrefixedField("TEL", rawText, true); + var emails:Array = matchVCardPrefixedField("EMAIL", rawText, true); + var note:String = matchSingleVCardPrefixedField("NOTE", rawText, false); + var address:String = matchSingleVCardPrefixedField("ADR", rawText, true); + address = formatAddress(address); + var org:String = matchSingleVCardPrefixedField("ORG", rawText, true); + var birthday:String = matchSingleVCardPrefixedField("BDAY", rawText, true); + if (birthday != null && !isStringOfDigits(birthday, 8)) { + return null; + } + var title:String = matchSingleVCardPrefixedField("TITLE", rawText, true); + var url:String = matchSingleVCardPrefixedField("URL", rawText, true); + return new AddressBookParsedResult(names, null, phoneNumbers, emails, note, address, org, + birthday, title, url); + } + + private static function matchVCardPrefixedField(prefix:String, rawText:String, trim:Boolean):Array { + var matches:ArrayList = null; + var i:int = 0; + var max:int = rawText.length; + while (i < max) { + i = rawText.indexOf(prefix, i); + if (i < 0) { + break; + } + if (i > 0 && rawText.charAt(i - 1) != '\n') { + // then this didn't start a new token, we matched in the middle of something + i++; + continue; + } + i += prefix.length; // Skip past this prefix we found to start + if (rawText.charAt(i) != ':' && rawText.charAt(i) != ';') { + continue; + } + while (rawText.charAt(i) != ':') { // Skip until a colon + i++; + } + i++; // skip colon + var start:int = i; // Found the start of a match here + i = rawText.indexOf('\n', i); // Really, ends in \r\n + if (i < 0) { + // No terminating end character? uh, done. Set i such that loop terminates and break + i = max; + } else if (i > start) { + // found a match + if (matches == null) { + matches = new ArrayList(3); // lazy init + } + var element:String = rawText.substring(start, i); + if (trim) { + element = StringUtil.trim(element); + } + matches.addElement(element); + i++; + } else { + i++; + } + } + if (matches == null || matches.isEmpty()) { + return null; + } + return toStringArray(matches); + } + + public static function matchSingleVCardPrefixedField(prefix:String , rawText:String , trim:Boolean):String { + var values:Array = matchVCardPrefixedField(prefix, rawText, trim); + return values == null ? null : values[0]; + } + + private static function formatAddress(address:String):String { + if (address == null) { + return null; + } + var length:int = address.length; + var newAddress:StringBuilder = new StringBuilder(length); + for (var j:int = 0; j < length; j++) { + var c:String = address.charAt(j); + if (c == ';') { + newAddress.Append(' '); + } else { + newAddress.Append(c); + } + } + return StringUtil.trim(newAddress.toString()); + } + + /** + * Formats name fields of the form "Public;John;Q.;Reverend;III" into a form like + * "Reverend John Q. Public III". + * + * @param names name values to format, in place + */ + private static function formatNames(names:Array):void { + if (names != null) { + for (var i:int = 0; i < names.length; i++) { + var name:String = names[i]; + var components:Array = new Array(5); + var start:int = 0; + var end:int; + var componentIndex:int = 0; + while ((end = name.indexOf(';', start)) > 0) { + components[componentIndex] = name.substring(start, end); + componentIndex++; + start = end + 1; + } + components[componentIndex] = name.substring(start); + var newName:StringBuilder = new StringBuilder(); + maybeAppendComponent(components, 3, newName); + maybeAppendComponent(components, 1, newName); + maybeAppendComponent(components, 2, newName); + maybeAppendComponent(components, 0, newName); + maybeAppendComponent(components, 4, newName); + names[i] = StringUtil.trim(newName.toString()); + } + } + } + + private static function maybeAppendComponent(components:Array,i:int, newName:StringBuilder):void { + if (components[i] != null) { + newName.Append(' '); + newName.Append(components[i]); + } + } + +} + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/VEventResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/VEventResultParser.as new file mode 100644 index 0000000..12414af --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/VEventResultParser.as @@ -0,0 +1,59 @@ +package com.google.zxing.client.result +{ + /* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ + +import com.google.zxing.Result; +import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + +/** + * Partially implements the iCalendar format's "VEVENT" format for specifying a + * calendar event. See RFC 2445. This supports SUMMARY, DTSTART and DTEND fields. + * + * @author Sean Owen + */ +public final class VEventResultParser extends ResultParser { + + public function VEventResultParser() { + } + + public static function parse(result:Result):CalendarParsedResult { + var rawText:String = result.getText(); + if (rawText == null) { + return null; + } + var vEventStart:int = rawText.indexOf("BEGIN:VEVENT"); + if (vEventStart < 0) { + return null; + } + var vEventEnd:int = rawText.indexOf("END:VEVENT"); + if (vEventEnd < 0) { + return null; + } + + var summary:String = VCardResultParser.matchSingleVCardPrefixedField("SUMMARY", rawText, true); + var start:String = VCardResultParser.matchSingleVCardPrefixedField("DTSTART", rawText, true); + var end:String = VCardResultParser.matchSingleVCardPrefixedField("DTEND", rawText, true); + try { + return new CalendarParsedResult(summary, start, end, null, null, null); + } catch (iae:IllegalArgumentException) { + + } + return null; + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/optional/AbstractMobileTagResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/optional/AbstractMobileTagResultParser.as new file mode 100644 index 0000000..f06d7d4 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/optional/AbstractMobileTagResultParser.as @@ -0,0 +1,83 @@ +package com.google.zxing.client.result.optional +{ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ + +import com.google.zxing.client.result.ResultParser; +import com.google.zxing.common.flexdatatypes.Utils; +/** + *

Superclass for classes encapsulating reader results encoded according + * to the MobileTag Reader International Specification.

+ * + * @author Sean Owen + */ +public class AbstractMobileTagResultParser extends ResultParser { + + public static var ACTION_DO:int = 1; + public static var ACTION_EDIT:int = 2; + public static var ACTION_SAVE:int = 4; + + public static function matchDelimitedFields(rawText:String, maxItems:int):Array { + var result:Array = new Array(maxItems); + var item:int = 0; + var i:int = 0; + var max:int = rawText.length; + while (item < maxItems && i < max) { + var start:int = i; // Found the start of a match here + var done:Boolean = false; + while (!done) { + i = rawText.indexOf('|', i); + if (i < 0) { + // No terminating end character? done. Set i such that loop terminates and break + i = rawText.length; + done = true; + } else if (rawText.charAt(i - 1) == '\\') { + // semicolon was escaped so continue + i++; + } else { + // found a match + if (start != i) { + result[item] = unescapeBackslash(rawText.substring(start, i)); + } + item++; + i++; + done = true; + } + } + } + if (item < maxItems) { + return null; + } + return result; + } + + public static function isDigits(s:String, expectedLength:int):Boolean + { + if (s == null) { + return true; + } + if (s.length != expectedLength) { + return false; + } + for (var i:int = 0; i < expectedLength; i++) { + if (!Utils.isDigit(s.charAt(i))) { + return false; + } + } + return true; + } + +}} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/optional/AbstractNDEFResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/optional/AbstractNDEFResultParser.as new file mode 100644 index 0000000..73294c1 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/optional/AbstractNDEFResultParser.as @@ -0,0 +1,47 @@ +package com.google.zxing.client.result.optional +{ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ + + +import com.google.zxing.client.result.ResultParser; + +/** + *

Superclass for classes encapsulating results in the NDEF format. + * See http://www.nfc-forum.org/specs/.

+ * + *

This code supports a limited subset of NDEF messages, ones that are plausibly + * useful in 2D barcode formats. This generally includes 1-record messages, no chunking, + * "short record" syntax, no ID field.

+ * + * @author Sean Owen + */ +public class AbstractNDEFResultParser extends ResultParser { + + public static function bytesToString(bytes:Array, offset:int, length:int, encoding:String):String { + try { + // can't do this in Actionscript + //return new String(bytes, offset, length, encoding); + throw new Error("Platform does not support encoding"); + } catch (uee:Error) { + // This should only be used when 'encoding' is an encoding that must necessarily + // be supported by the JVM, like UTF-8 + throw new Error("Platform does not support required encoding: " + uee); + } + throw new Error("Platform does not support encoding"); + } + +}} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/optional/AddressBookAUResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/optional/AddressBookAUResultParser.as new file mode 100644 index 0000000..50733d6 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/optional/AddressBookAUResultParser.as @@ -0,0 +1,74 @@ +package com.google.zxing.client.result.optional +{ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ + +import com.google.zxing.Result; +import com.google.zxing.common.flexdatatypes.ArrayList; +import com.google.zxing.client.result.ParsedResult; +import com.google.zxing.client.result.ResultParser; +import com.google.zxing.client.result.AddressBookParsedResult; + +/** + * Implements KDDI AU's address book format. See + * + * http://www.au.kddi.com/ezfactory/tec/two_dimensions/index.html. + * (Thanks to Yuzo for translating!) + * + * @author Sean Owen + */ +public final class AddressBookAUResultParser extends ResultParser { + + public static function parse(result:Result):AddressBookParsedResult { + var rawText:String = result.getText(); + // MEMORY is mandatory; seems like a decent indicator, as does end-of-record separator CR/LF + if (rawText == null || rawText.indexOf("MEMORY") < 0 || rawText.indexOf("\r\n") < 0) { + return null; + } + + // NAME1 and NAME2 have specific uses, namely written name and pronunciation, respectively. + // Therefore we treat them specially instead of as an array of names. + var name:String = matchSinglePrefixedField("NAME1:", rawText, '\r', true); + var pronunciation:String = matchSinglePrefixedField("NAME2:", rawText, '\r', true); + + var phoneNumbers:Array = matchMultipleValuePrefix("TEL", 3, rawText, true); + var emails:Array = matchMultipleValuePrefix("MAIL", 3, rawText, true); + var note:String = matchSinglePrefixedField("MEMORY:", rawText, '\r', false); + var address:String = matchSinglePrefixedField("ADD:", rawText, '\r', true); + return new AddressBookParsedResult(maybeWrap(name), pronunciation, phoneNumbers, emails, note, + address, null, null, null, null); + } + + private static function matchMultipleValuePrefix(prefix:String, max:int, rawText:String, trim:Boolean):Array { + var values:ArrayList = null; + for (var i:int = 1; i <= max; i++) { + var value:String = matchSinglePrefixedField(prefix + i + ':', rawText, '\r', trim); + if (value == null) { + break; + } + if (values == null) { + values = new ArrayList(max); // lazy init + } + values.addElement(value); + } + if (values == null) { + return null; + } + return toStringArray(values); + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagMMSResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagMMSResultParser.as new file mode 100644 index 0000000..1a7cfca --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagMMSResultParser.as @@ -0,0 +1,54 @@ +package com.google.zxing.client.result.optional +{ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.Result; +import com.google.zxing.client.result.SMSParsedResult; + +/** + *

Represents a "MMS" result encoded according to section 4.7 of the + * MobileTag Reader International Specification.

+ * + * @author Sean Owen + */ +public final class MobileTagMMSResultParser extends AbstractMobileTagResultParser { + + public static var SERVICE_TYPE:String = "05"; + + public static function parse(result:Result):SMSParsedResult { + if (result.getBarcodeFormat() != BarcodeFormat.DATAMATRIX) { + return null; + } + var rawText:String = result.getText(); + if (rawText.substr(0,(SERVICE_TYPE).length) != SERVICE_TYPE) { + return null; + } + + var matches:Array = matchDelimitedFields(rawText.substring(2), 4); + if (matches == null) { + return null; + } + var _to:String = matches[0]; + var subject:String = matches[1]; + var body:String = matches[2]; + var title:String = matches[3]; + + return new SMSParsedResult("sms:" + _to, _to, null, subject, body, title); + } + +}} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagRichWebParsedResult.as b/FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagRichWebParsedResult.as new file mode 100644 index 0000000..08461dd --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagRichWebParsedResult.as @@ -0,0 +1,63 @@ +package com.google.zxing.client.result.optional +{ + /* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ + + +import com.google.zxing.client.result.ParsedResult; +import com.google.zxing.client.result.ParsedResultType; + +/** + * @author Sean Owen + */ +public final class MobileTagRichWebParsedResult extends ParsedResult { + + // Example: "http://www.tagserver.com/script.asp?id=" + public static var TAGSERVER_URI_PREFIX:String;// = System.getProperty("zxing.mobiletag.tagserver"); + + private var id:String; + private var action:int; + + public function MobileTagRichWebParsedResult(id:String, action:int, tagserver:String) + { + super(ParsedResultType.MOBILETAG_RICH_WEB); + this.id = id; + this.action = action; + MobileTagRichWebParsedResult.TAGSERVER_URI_PREFIX = tagserver; + } + + public static function getTagserverURIPrefix():String { + return MobileTagRichWebParsedResult.TAGSERVER_URI_PREFIX; + } + + public function getId():String { + return id; + } + + public function getAction():int { + return action; + } + + public function getTagserverURI():String { + return TAGSERVER_URI_PREFIX + id; + } + + public override function getDisplayResult():String { + return id; + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagRichWebResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagRichWebResultParser.as new file mode 100644 index 0000000..8bc714a --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagRichWebResultParser.as @@ -0,0 +1,64 @@ +package com.google.zxing.client.result.optional +{ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ +import com.google.zxing.common.flexdatatypes.Utils; +import com.google.zxing.Result; +import com.google.zxing.BarcodeFormat; + +/** + *

Represents a "rich web" result encoded according to section 5 of the + * MobileTag Reader International Specification.

+ * + * @author Sean Owen + */ +public final class MobileTagRichWebResultParser extends AbstractMobileTagResultParser { + + public static var SERVICE_TYPE:String = "54"; + private static var DEFAULT_ACTION:int = AbstractMobileTagResultParser.ACTION_DO; + + public static function parse(result:Result,tagserver:String):MobileTagRichWebParsedResult { + if (MobileTagRichWebParsedResult.TAGSERVER_URI_PREFIX == null) { + return null; + } + if (result.getBarcodeFormat() != BarcodeFormat.DATAMATRIX) { + return null; + } + var rawText:String = result.getText(); + if (!Utils.startsWith(rawText,SERVICE_TYPE)) { + return null; + } + + var length:int = rawText.length; + if (!isDigits(rawText, length)) { + return null; + } + var action:int; + var id:String; + if (length == 15) { + action = DEFAULT_ACTION; + id = rawText.substring(0, 2) + action + rawText.substring(2); + } else if (length == 16) { + action = rawText.charCodeAt(2) - ('0').charCodeAt(0); + id = rawText; + } else { + return null; + } + + return new MobileTagRichWebParsedResult(id, action,tagserver); + } + +}} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagSMSResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagSMSResultParser.as new file mode 100644 index 0000000..010d215 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagSMSResultParser.as @@ -0,0 +1,55 @@ +package com.google.zxing.client.result.optional +{ + /* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.Result; +import com.google.zxing.client.result.SMSParsedResult; +import com.google.zxing.common.flexdatatypes.Utils; + +/** + *

Represents a "SMS" result encoded according to section 4.6 of the + * MobileTag Reader International Specification.

+ * + * @author Sean Owen + */ +public final class MobileTagSMSResultParser extends AbstractMobileTagResultParser { + + public static var SERVICE_TYPE:String = "03"; + + public static function parse(result:Result):SMSParsedResult { + if (result.getBarcodeFormat() != BarcodeFormat.DATAMATRIX) { + return null; + } + var rawText:String = result.getText(); + if (!Utils.startsWith(rawText,SERVICE_TYPE)) { + return null; + } + + var matches:Array = matchDelimitedFields(rawText.substring(2), 3); + if (matches == null) { + return null; + } + var _to:String = matches[0]; + var body:String = matches[1]; + var title:String = matches[2]; + + return new SMSParsedResult("sms:" + _to, _to, null, null, body, title); + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagSimpleCalendarResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagSimpleCalendarResultParser.as new file mode 100644 index 0000000..0fa07bd --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagSimpleCalendarResultParser.as @@ -0,0 +1,70 @@ +package com.google.zxing.client.result.optional +{ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ +import com.google.zxing.BarcodeFormat; +import com.google.zxing.Result; +import com.google.zxing.client.result.CalendarParsedResult; +import com.google.zxing.common.flexdatatypes.IllegalArgumentException; +import com.google.zxing.common.flexdatatypes.Utils; + +/** + *

Represents a "simple calendar" result encoded according to section 4.9 of the + * MobileTag Reader International Specification.

+ * + * @author Sean Owen + */ +public final class MobileTagSimpleCalendarResultParser extends AbstractMobileTagResultParser { + + public static var SERVICE_TYPE:String = "07"; + + public static function parse(result:Result):CalendarParsedResult { + if (result.getBarcodeFormat() != BarcodeFormat.DATAMATRIX) { + return null; + } + var rawText:String = result.getText(); + if (!Utils.startsWith(rawText,SERVICE_TYPE)) { + return null; + } + + var matches:Array = matchDelimitedFields(rawText.substring(2), 6); + if (matches == null || !isDigits(matches[1], 10) || !isDigits(matches[2], 10)) { + return null; + } + var summary:String = matches[0]; + var start:String = expandDateString(matches[1]); + var end:String = expandDateString(matches[2]); + var location:String = matches[3]; + var attendee:String = matches[4]; + var title:String = matches[5]; + + try { + return new CalendarParsedResult(summary, start, end, location, attendee, title); + } catch ( iae:IllegalArgumentException) { + + } + return null; + } + + private static function expandDateString(date:String):String { + if (date == null) { + return null; + } + // Input is of form YYMMddHHmmss, and needs to be YYYYMMdd'T'HHmmss'Z' + return "20" + date.substring(0, 6) + 'T' + date.substring(6) + "00Z"; + } + +}} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagSimpleContactResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagSimpleContactResultParser.as new file mode 100644 index 0000000..59b3bbf --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagSimpleContactResultParser.as @@ -0,0 +1,71 @@ +package com.google.zxing.client.result.optional +{ + /* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ +import com.google.zxing.BarcodeFormat; +import com.google.zxing.Result; +import com.google.zxing.client.result.AddressBookParsedResult; +import com.google.zxing.common.flexdatatypes.Utils; +/** + *

Represents a "simple contact" result encoded according to section 4.8 of the + * MobileTag Reader International Specification.

+ * + * @author Sean Owen + */ +public final class MobileTagSimpleContactResultParser extends AbstractMobileTagResultParser { + + public static var SERVICE_TYPE:String = "02"; + + public static function parse(result:Result):AddressBookParsedResult { + if (result.getBarcodeFormat() != BarcodeFormat.DATAMATRIX) { + return null; + } + var rawText:String = result.getText(); + if (!Utils.startsWith(rawText,SERVICE_TYPE)) { + return null; + } + + var matches:Array = matchDelimitedFields(rawText.substring(2), 9); + if (matches == null || !isDigits(matches[7], 8)) { + return null; + } + var fullName:String = matches[0]; + var telephoneCell:String = matches[1]; + var telephone:String = matches[2]; + var email1:String = matches[3]; + var email2:String = matches[4]; + var address:String = matches[5]; + var org:String = matches[6]; + var birthday:String = matches[7]; + if (!isStringOfDigits(birthday, 8)) { + return null; + } + var title:String = matches[8]; + + return new AddressBookParsedResult([fullName], + null, + [telephoneCell, telephone], + [email1, email2], + null, + address, + org, + birthday, + title, + null); + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagSimpleWebResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagSimpleWebResultParser.as new file mode 100644 index 0000000..7c52ee9 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagSimpleWebResultParser.as @@ -0,0 +1,73 @@ +package com.google.zxing.client.result.optional +{ + + /* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ + import com.google.zxing.client.result.URIParsedResult; + import com.google.zxing.common.flexdatatypes.Utils; + import com.google.zxing.Result; + import com.google.zxing.BarcodeFormat; + +/** + *

Represents a "simple web" result encoded according to section 4.11 of the + * MobileTag Reader International Specification.

+ * + * @author Sean Owen + */ +public final class MobileTagSimpleWebResultParser extends AbstractMobileTagResultParser { + + public static var SERVICE_TYPE:String = "04"; + private static var URI_PREFIXES:Array = [ + null, + "http://", + "http://www.", + "https://", + "https://www.", + "rtsp://", + ]; + + public static function parse(result:Result):URIParsedResult { + if (result.getBarcodeFormat() != BarcodeFormat.DATAMATRIX) { + return null; + } + var rawText:String = result.getText(); + if (!Utils.startsWith(rawText,SERVICE_TYPE)) { + return null; + } + + var matches:Array = matchDelimitedFields(rawText.substring(2), 2); + if (matches == null) { + return null; + } + var uri:String = matches[0]; + var title:String = matches[1]; + + var maybePrefixChar:String = uri.charAt(2); + if (maybePrefixChar >= '0' && maybePrefixChar <= '9') { + var prefixIndex:int = (maybePrefixChar).charCodeAt(0) - ('0').charCodeAt(0); + // Note that '0' is reserved + if (prefixIndex >= 1 && prefixIndex < URI_PREFIXES.length) { + uri = URI_PREFIXES[prefixIndex] + uri.substring(1); + } else { + uri = uri.substring(1); + } + } + + return new URIParsedResult(uri, title); + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagTelResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagTelResultParser.as new file mode 100644 index 0000000..2ec2560 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/optional/MobileTagTelResultParser.as @@ -0,0 +1,53 @@ +package com.google.zxing.client.result.optional +{ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ +import com.google.zxing.BarcodeFormat; +import com.google.zxing.Result; +import com.google.zxing.client.result.TelParsedResult; +import com.google.zxing.common.flexdatatypes.Utils; + +/** + *

Represents a "TEL" result encoded according to section 4.4 of the + * MobileTag Reader International Specification.

+ * + * @author Sean Owen + */ +public final class MobileTagTelResultParser extends AbstractMobileTagResultParser { + + public static var SERVICE_TYPE:String = "01"; + + public static function parse(result:Result):TelParsedResult { + if (result.getBarcodeFormat() != BarcodeFormat.DATAMATRIX) { + return null; + } + var rawText:String = result.getText(); + if (!Utils.startsWith(rawText,SERVICE_TYPE)) { + return null; + } + + var matches:Array = matchDelimitedFields(rawText.substring(2), 2); + if (matches == null) { + return null; + } + var number:String = matches[0]; + var title:String = matches[1]; + + return new TelParsedResult(number, "tel:" + number, title); + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/optional/NDEFRecord.as b/FairyGUI-as3/src/com/google/zxing/client/result/optional/NDEFRecord.as new file mode 100644 index 0000000..e1cac56 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/optional/NDEFRecord.as @@ -0,0 +1,90 @@ +package com.google.zxing.client.result.optional +{ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ + +/** + *

Represents a record in an NDEF message. This class only supports certain types + * of records -- namely, non-chunked records, where ID length is omitted, and only + * "short records".

+ * + * @author Sean Owen + */ + + import com.google.zxing.common.flexdatatypes.Utils; +public final class NDEFRecord { + + private static var SUPPORTED_HEADER_MASK:int = 0x3F; // 0 0 1 1 1 111 (the bottom 6 bits matter) + private static var SUPPORTED_HEADER:int = 0x11; // 0 0 0 1 0 001 + + public static var TEXT_WELL_KNOWN_TYPE:String = "T"; + public static var URI_WELL_KNOWN_TYPE:String = "U"; + public static var SMART_POSTER_WELL_KNOWN_TYPE:String = "Sp"; + public static var ACTION_WELL_KNOWN_TYPE:String = "act"; + + private var header:int; + private var type:String; + private var payload:Array; + private var totalRecordLength:int; + + public function NDEFRecord(header:int, type:String, payload:Array, totalRecordLength:int) { + this.header = header; + this.type = type; + this.payload = payload; + this.totalRecordLength = totalRecordLength; + } + + public static function readRecord(bytes:Array, offset:int):NDEFRecord { + var header:int = bytes[offset] & 0xFF; + // Does header match what we support in the bits we care about? + // XOR figures out where we differ, and if any of those are in the mask, fail + if (((header ^ SUPPORTED_HEADER) & SUPPORTED_HEADER_MASK) != 0) { + return null; + } + var typeLength:int = bytes[offset + 1] & 0xFF; + + var payloadLength:int = bytes[offset + 2] & 0xFF; + + var type:String = AbstractNDEFResultParser.bytesToString(bytes, offset + 3, typeLength, "US-ASCII"); + + var payload:Array = new Array(payloadLength); + Utils.arraycopy(bytes, offset + 3 + typeLength, payload, 0, payloadLength); + + return new NDEFRecord(header, type, payload, 3 + typeLength + payloadLength); + } + + public function isMessageBegin():Boolean { + return (header & 0x80) != 0; + } + + public function isMessageEnd():Boolean { + return (header & 0x40) != 0; + } + + public function getType():String { + return type; + } + + public function getPayload():Array { + return payload; + } + + public function getTotalRecordLength():int { + return totalRecordLength; + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/optional/NDEFSmartPosterParsedResult.as b/FairyGUI-as3/src/com/google/zxing/client/result/optional/NDEFSmartPosterParsedResult.as new file mode 100644 index 0000000..fd12ffa --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/optional/NDEFSmartPosterParsedResult.as @@ -0,0 +1,65 @@ +package com.google.zxing.client.result.optional +{ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ + +import com.google.zxing.client.result.ParsedResultType; +import com.google.zxing.client.result.ParsedResult; + +/** + * @author Sean Owen + */ +public final class NDEFSmartPosterParsedResult extends ParsedResult +{ + + public static var ACTION_UNSPECIFIED:int = -1; + public static var ACTION_DO:int = 0; + public static var ACTION_SAVE:int = 1; + public static var ACTION_OPEN:int = 2; + + private var title:String; + private var uri:String; + private var action:int; + + public function NDEFSmartPosterParsedResult(action:int, uri:String, title:String) { + super(ParsedResultType.NDEF_SMART_POSTER); + this.action = action; + this.uri = uri; + this.title = title; + } + + public function getTitle():String { + return title; + } + + public function getURI():String { + return uri; + } + + public function getAction():int { + return action; + } + + public override function getDisplayResult():String { + if (title == null) { + return uri; + } else { + return title + '\n' + uri; + } + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/optional/NDEFSmartPosterResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/optional/NDEFSmartPosterResultParser.as new file mode 100644 index 0000000..8531c19 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/optional/NDEFSmartPosterResultParser.as @@ -0,0 +1,82 @@ +package com.google.zxing.client.result.optional +{ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ + +import com.google.zxing.Result; + +/** + *

Recognizes an NDEF message that encodes information according to the + * "Smart Poster Record Type Definition" specification.

+ * + *

This actually only supports some parts of the Smart Poster format: title, + * URI, and action records. Icon records are not supported because the size + * of these records are infeasibly large for barcodes. Size and type records + * are not supported. Multiple titles are not supported.

+ * + * @author Sean Owen + */ +public final class NDEFSmartPosterResultParser extends AbstractNDEFResultParser { + + public static function parse(result:Result):NDEFSmartPosterParsedResult { + var bytes:Array = result.getRawBytes(); + if (bytes == null) { + return null; + } + var headerRecord:NDEFRecord = NDEFRecord.readRecord(bytes, 0); + // Yes, header record starts and ends a message + if (headerRecord == null || !headerRecord.isMessageBegin() || !headerRecord.isMessageEnd()) { + return null; + } + if (headerRecord.getType() != NDEFRecord.SMART_POSTER_WELL_KNOWN_TYPE) { + return null; + } + + var offset:int = 0; + var recordNumber:int = 0; + var ndefRecord:NDEFRecord = null; + var payload:Array = headerRecord.getPayload(); + var action:int = NDEFSmartPosterParsedResult.ACTION_UNSPECIFIED; + var title:String = null; + var uri:String = null; + + while (offset < payload.length && (ndefRecord = NDEFRecord.readRecord(payload, offset)) != null) { + if (recordNumber == 0 && !ndefRecord.isMessageBegin()) { + return null; + } + + var type:String = ndefRecord.getType(); + if (NDEFRecord.TEXT_WELL_KNOWN_TYPE == type) { + var languageText:Array = NDEFTextResultParser.decodeTextPayload(ndefRecord.getPayload()); + title = languageText[1]; + } else if (NDEFRecord.URI_WELL_KNOWN_TYPE == type) { + uri = NDEFURIResultParser.decodeURIPayload(ndefRecord.getPayload()); + } else if (NDEFRecord.ACTION_WELL_KNOWN_TYPE == type) { + action = ndefRecord.getPayload()[0]; + } + recordNumber++; + offset += ndefRecord.getTotalRecordLength(); + } + + if (recordNumber == 0 || (ndefRecord != null && !ndefRecord.isMessageEnd())) { + return null; + } + + return new NDEFSmartPosterParsedResult(action, uri, title); + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/optional/NDEFTextResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/optional/NDEFTextResultParser.as new file mode 100644 index 0000000..e044fe1 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/optional/NDEFTextResultParser.as @@ -0,0 +1,57 @@ +package com.google.zxing.client.result.optional +{ + /* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ + import com.google.zxing.client.result.TextParsedResult; + import com.google.zxing.Result; + +/** + * Recognizes an NDEF message that encodes text according to the + * "Text Record Type Definition" specification. + * + * @author Sean Owen + */ +public final class NDEFTextResultParser extends AbstractNDEFResultParser { + + public static function parse(result:Result ):TextParsedResult { + var bytes:Array = result.getRawBytes(); + if (bytes == null) { + return null; + } + var ndefRecord:NDEFRecord = NDEFRecord.readRecord(bytes, 0); + if (ndefRecord == null || !ndefRecord.isMessageBegin() || !ndefRecord.isMessageEnd()) { + return null; + } + if (ndefRecord.getType() != NDEFRecord.TEXT_WELL_KNOWN_TYPE) { + return null; + } + var languageText:Array = decodeTextPayload(ndefRecord.getPayload()); + return new TextParsedResult(languageText[0], languageText[1]); + } + + public static function decodeTextPayload(payload:Array):Array { + var statusByte:int = payload[0]; + var isUTF16:Boolean = (statusByte & 0x80) != 0; + var languageLength:int = statusByte & 0x1F; + // language is always ASCII-encoded: + var language:String = bytesToString(payload, 1, languageLength, "US-ASCII"); + var encoding:String = isUTF16 ? "UTF-16" : "UTF8"; + var text:String = bytesToString(payload, 1 + languageLength, payload.length - languageLength - 1, encoding); + return new [language, text ]; + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/result/optional/NDEFURIResultParser.as b/FairyGUI-as3/src/com/google/zxing/client/result/optional/NDEFURIResultParser.as new file mode 100644 index 0000000..45275f0 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/result/optional/NDEFURIResultParser.as @@ -0,0 +1,96 @@ +package com.google.zxing.client.result.optional +{ + /* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ + +import com.google.zxing.Result; +import com.google.zxing.client.result.URIParsedResult; + +/** + * Recognizes an NDEF message that encodes a URI according to the + * "URI Record Type Definition" specification. + * + * @author Sean Owen + */ +public final class NDEFURIResultParser extends AbstractNDEFResultParser { + + private static var URI_PREFIXES:Array = [ + null, + "http://www.", + "https://www.", + "http://", + "https://", + "tel:", + "mailto:", + "ftp://anonymous:anonymous@", + "ftp://ftp.", + "ftps://", + "sftp://", + "smb://", + "nfs://", + "ftp://", + "dav://", + "news:", + "telnet://", + "imap:", + "rtsp://", + "urn:", + "pop:", + "sip:", + "sips:", + "tftp:", + "btspp://", + "btl2cap://", + "btgoep://", + "tcpobex://", + "irdaobex://", + "file://", + "urn:epc:id:", + "urn:epc:tag:", + "urn:epc:pat:", + "urn:epc:raw:", + "urn:epc:", + "urn:nfc:", + ]; + + public static function parse(result:Result ):URIParsedResult { + var bytes:Array = result.getRawBytes(); + if (bytes == null) { + return null; + } + var ndefRecord:NDEFRecord = NDEFRecord.readRecord(bytes, 0); + if (ndefRecord == null || !ndefRecord.isMessageBegin() || !ndefRecord.isMessageEnd()) { + return null; + } + if (ndefRecord.getType() != NDEFRecord.URI_WELL_KNOWN_TYPE) { + return null; + } + var fullURI:String = decodeURIPayload(ndefRecord.getPayload()); + return new URIParsedResult(fullURI, null); + } + + public static function decodeURIPayload(payload:Array):String { + var identifierCode:int = payload[0] & 0xFF; + var prefix:String = null; + if (identifierCode < URI_PREFIXES.length) { + prefix = URI_PREFIXES[identifierCode]; + } + var restOfURI:String = bytesToString(payload, 1, payload.length - 1, "UTF8"); + return prefix == null ? restOfURI : prefix + restOfURI; + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/client/testClass.as b/FairyGUI-as3/src/com/google/zxing/client/testClass.as new file mode 100644 index 0000000..637f645 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/client/testClass.as @@ -0,0 +1,1070 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.client +{ + import com.google.zxing.BarcodeFormat; + import com.google.zxing.common.flexdatatypes.HashTable; + + public class testClass + { + public var currentTestItem:int = 0; + public var baseDir:String = "http://localhost/zxing/core/test/data/blackbox/"; + public var testFiles:Array = [ + // filename format expected output,ignore (acknowledged decode failure) + ["aztec-1/7.png",BarcodeFormat.AZTEC,"Code 2D!",true], + ["aztec-1/abc-19x19C.png",BarcodeFormat.AZTEC,"abcdefghijklmnopqrstuvwxyz",true], + ["aztec-1/abc-37x37.png",BarcodeFormat.AZTEC,"abcdefghijklmnopstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",true], + ["aztec-1/lorem-075x075.png",BarcodeFormat.AZTEC,"In ut magna vel mauris malesuada dictum. Nulla ullamcorper metus quis diam cursus facilisis. Sed mollis quam id justo rutrum sagittis. Donec laoreet rutrum est, nec convallis mauris condimentum sit amet. Phasellus gravida, justo et congue auctor, nisi ipsum viverra erat, eget hendrerit felis turpis nec lorem. Nulla ultrices, elit pellentesque aliquet laoreet, justo erat pulvinar nisi, id elementum sapien dolor et diam. Donec ac nunc sodales elit placerat eleifend. Sed ornare luctus ornare. Vestibulum vehicula, massa at pharetra fringilla, risus justo faucibus erat, nec porttitor nibh tellus sed est. Ut justo diam, lobortis eu tristique ac, p",true], + ["aztec-1/lorem-105x105.png",BarcodeFormat.AZTEC,"In ut magna vel mauris malesuada dictum. Nulla ullamcorper metus quis diam cursus facilisis. Sed mollis quam id justo rutrum sagittis. Donec laoreet rutrum est, nec convallis mauris condimentum sit amet. Phasellus gravida, justo et congue auctor, nisi ipsum viverra erat, eget hendrerit felis turpis nec lorem. Nulla ultrices, elit pellentesque aliquet laoreet, justo erat pulvinar nisi, id elementum sapien dolor et diam. Donec ac nunc sodales elit placerat eleifend. Sed ornare luctus ornare. Vestibulum vehicula, massa at pharetra fringilla, risus justo faucibus erat, nec porttitor nibh tellus sed est. Ut justo diam, lobortis eu tristique ac, p.In ut magna vel mauris malesuada dictum. Nulla ullamcorper metus quis diam cursus facilisis. Sed mollis quam id justo rutrum sagittis. Donec laoreet rutrum est, nec convallis mauris condimentum sit amet. Phasellus gravida, justo et congue auctor, nisi ipsum viverra erat, eget hendrerit felis turpis nec lorem. Nulla ultrices, elit pellentesque aliquet laoreet, justo erat pulvinar nisi, id elementum sapien dolor et diam. Donec ac nunc sodales elit placerat eleifend. Sed ornare luctus ornare. Vestibulum vehicula, massa at pharetra fringilla, risus justo faucibus erat, nec porttitor nibh tellus sed est. Ut justo diam, lobortis eu tristique ac, p",true], + ["aztec-1/lorem-151x151.png",BarcodeFormat.AZTEC,"In ut magna vel mauris malesuada dictum. Nulla ullamcorper metus quis diam cursus facilisis. Sed mollis quam id justo rutrum sagittis. Donec laoreet rutrum est, nec convallis mauris condimentum sit amet. Phasellus gravida, justo et congue auctor, nisi ipsum viverra erat, eget hendrerit felis turpis nec lorem. Nulla ultrices, elit pellentesque aliquet laoreet, justo erat pulvinar nisi, id elementum sapien dolor et diam. Donec ac nunc sodales elit placerat eleifend. Sed ornare luctus ornare. Vestibulum vehicula, massa at pharetra fringilla, risus justo faucibus erat, nec porttitor nibh tellus sed est. Ut justo diam, lobortis eu tristique ac, p.In ut magna vel mauris malesuada dictum. Nulla ullamcorper metus quis diam cursus facilisis. Sed mollis quam id justo rutrum sagittis. Donec laoreet rutrum est, nec convallis mauris condimentum sit amet. Phasellus gravida, justo et congue auctor, nisi ipsum viverra erat, eget hendrerit felis turpis nec lorem. Nulla ultrices, elit pellentesque aliquet laoreet, justo erat pulvinar nisi, id elementum sapien dolor et diam. Donec ac nunc sodales elit placerat eleifend. Sed ornare luctus ornare. Vestibulum vehicula, massa at pharetra fringilla, risus justo faucibus erat, nec porttitor nibh tellus sed est. Ut justo diam, lobortis eu tristique ac, p. In ut magna vel mauris malesuada dictum. Nulla ullamcorper metus quis diam cursus facilisis. Sed mollis quam id justo rutrum sagittis. Donec laoreet rutrum est, nec convallis mauris condimentum sit amet. Phasellus gravida, justo et congue auctor, nisi ipsum viverra erat, eget hendrerit felis turpis nec lorem. Nulla ultrices, elit pellentesque aliquet laoreet, justo erat pulvinar nisi, id elementum sapien dolor et diam. Donec ac nunc sodales elit placerat eleifend. Sed ornare luctus ornare. Vestibulum vehicula, massa at pharetra fringilla, risus justo faucibus erat, nec porttitor nibh tellus sed est. Ut justo diam, lobortis eu tristique ac, p.In ut magna vel mauris malesuada dictum. Nulla ullamcorper metus quis diam cursus facilisis. Sed mollis quam id justo rutrum sagittis. Donec laoreet rutrum est, nec convallis mauris condimentum sit amet. Phasellus gravida, justo et congue auctor, nisi ipsum viverra erat, eget hendrerit felis turpis nec lorem. Nulla ultrices, elit pellentesque aliquet laoreet, justo erat pulvinar nisi, id elementum sapien dolor et diam. Donec ac nunc sodales elit placerat eleifend. Sed ornare luctus ornare. Vestibulum vehicula, massa at pharetra fringilla, risus justo faucibus erat, nec porttitor nibh tellus sed est. Ut justo diam, lobortis eu tris. In ut magna vel mauris malesuada dictum. Nulla ullamcorper metus quis diam cursus facilisis. Sed mollis quam id justo rutrum sagittis. Donec laoreet rutrum est, nec convallis mauris condimentum sit amet. Phasellus gravida, justo et congue auctor, nisi ipsum viverra erat, eget hendrerit felis turpis nec lorem.",true], + ["aztec-1/tableShifts.png",BarcodeFormat.AZTEC,"AhUUDgdy672;..:8KjHH776JHHn3g. 8lm/%22Nn873R2897ks4JKDJ9JJaza2323!::;09UJRrhDQSKJDKdSJSdskjdslkEdjseze:ze",true], + ["aztec-2/01.png",BarcodeFormat.AZTEC,"This is a real world Aztec barcode test.",false], + ["aztec-2/02.png",BarcodeFormat.AZTEC,"This is a real world Aztec barcode test.",true], + ["aztec-2/03.png",BarcodeFormat.AZTEC,"This is a real world Aztec barcode test.",false], + ["aztec-2/04.png",BarcodeFormat.AZTEC,"This is a real world Aztec barcode test.",false], + ["aztec-2/05.png",BarcodeFormat.AZTEC,"This is a real world Aztec barcode test.",false], + ["aztec-2/06.png",BarcodeFormat.AZTEC,"This is a real world Aztec barcode test.",false], + ["aztec-2/07.png",BarcodeFormat.AZTEC,"This is a real world Aztec barcode test.",false], + ["aztec-2/08.png",BarcodeFormat.AZTEC,"This is a real world Aztec barcode test.",false], + ["aztec-2/09.png",BarcodeFormat.AZTEC,"mailto:zxing@googlegroups.com",false], + ["aztec-2/10.png",BarcodeFormat.AZTEC,"mailto:zxing@googlegroups.com",false], + ["aztec-2/11.png",BarcodeFormat.AZTEC,"mailto:zxing@googlegroups.com",false], + ["aztec-2/12.png",BarcodeFormat.AZTEC,"mailto:zxing@googlegroups.com",false], + ["aztec-2/13.png",BarcodeFormat.AZTEC,"mailto:zxing@googlegroups.com",false], + ["aztec-2/14.png",BarcodeFormat.AZTEC,"mailto:zxing@googlegroups.com",false], + ["aztec-2/15.png",BarcodeFormat.AZTEC,"mailto:zxing@googlegroups.com",false], + ["aztec-2/16.png",BarcodeFormat.AZTEC,"http://code.google.com/p/zxing/source/browse/trunk/android/src/com/google/zxing/client/android/result/URIResultHandler.java",false], + ["aztec-2/17.png",BarcodeFormat.AZTEC,"http://code.google.com/p/zxing/source/browse/trunk/android/src/com/google/zxing/client/android/result/URIResultHandler.java",false], + ["aztec-2/18.png",BarcodeFormat.AZTEC,"http://code.google.com/p/zxing/source/browse/trunk/android/src/com/google/zxing/client/android/result/URIResultHandler.java",true], + ["aztec-2/19.png",BarcodeFormat.AZTEC,"http://code.google.com/p/zxing/source/browse/trunk/android/src/com/google/zxing/client/android/result/URIResultHandler.java",false], + ["aztec-2/20.png",BarcodeFormat.AZTEC,"http://code.google.com/p/zxing/source/browse/trunk/android/src/com/google/zxing/client/android/result/URIResultHandler.java",false], + ["aztec-2/21.png",BarcodeFormat.AZTEC,"http://code.google.com/p/zxing/source/browse/trunk/android/src/com/google/zxing/client/android/result/URIResultHandler.java",false], + ["aztec-2/22.png",BarcodeFormat.AZTEC,"http://code.google.com/p/zxing/source/browse/trunk/android/src/com/google/zxing/client/android/result/URIResultHandler.java",false], + ["codabar-1/01.png",BarcodeFormat.CODABAR,"1234567890",true], + ["codabar-1/02.png",BarcodeFormat.CODABAR,"1234567890",true], + ["codabar-1/03.gif",BarcodeFormat.CODABAR,"294/586",true], + ["codabar-1/04.png",BarcodeFormat.CODABAR,"123455",true], + ["codabar-1/09.jpg",BarcodeFormat.CODABAR,"12345",true], + ["codabar-1/10.jpg",BarcodeFormat.CODABAR,"123456",true], + ["codabar-1/11.gif",BarcodeFormat.CODABAR,"3419500",true], + ["codabar-1/12.png",BarcodeFormat.CODABAR,"31117013206375",true], + ["codabar-1/13.png",BarcodeFormat.CODABAR,"12345",true], + ["codabar-1/14.gif",BarcodeFormat.CODABAR,"123456789012",false], + ["codabar-1/15.gif",BarcodeFormat.CODABAR,"123456789012",true], + ["code128-1/1.GIF",BarcodeFormat.CODE_128,"168901",true], + ["code128-1/2.gif",BarcodeFormat.CODE_128,"Code 128",true], + ["code128-1/3.jpg",BarcodeFormat.CODE_128,"102030405060708090",true], + ["code128-1/4.jpg",BarcodeFormat.CODE_128,"123456",true], + ["code128-1/5.gif",BarcodeFormat.CODE_128,"8101054321120021123456",true], + ["code128-2/01.jpg",BarcodeFormat.CODE_128,"005-3379497200006",true], + ["code128-2/02.jpg",BarcodeFormat.CODE_128,"005-3379497200006",true], + ["code128-2/03.jpg",BarcodeFormat.CODE_128,"005-3379497200006",true], + ["code128-2/04.jpg",BarcodeFormat.CODE_128,"005-3379497200006",true], + ["code128-2/05.jpg",BarcodeFormat.CODE_128,"15182881",true], + ["code128-2/06.jpg",BarcodeFormat.CODE_128,"15182881",true], + ["code128-2/07.jpg",BarcodeFormat.CODE_128,"15182881",true], + ["code128-2/08.jpg",BarcodeFormat.CODE_128,"15182881",true], + ["code128-2/09.jpg",BarcodeFormat.CODE_128,"CNK8181G2C",true], + ["code128-2/10.jpg",BarcodeFormat.CODE_128,"CNK8181G2C",true], + ["code128-2/11.jpg",BarcodeFormat.CODE_128,"CNK8181G2C",true], + ["code128-2/12.jpg",BarcodeFormat.CODE_128,"CNK8181G2C",true], + ["code128-2/13.jpg",BarcodeFormat.CODE_128,"1PEF224A4",true], + ["code128-2/14.jpg",BarcodeFormat.CODE_128,"1PEF224A4",true], + ["code128-2/15.jpg",BarcodeFormat.CODE_128,"1PEF224A4",true], + ["code128-2/16.jpg",BarcodeFormat.CODE_128,"1PEF224A4",true], + ["code128-2/17.jpg",BarcodeFormat.CODE_128,"FW727",true], + ["code128-2/18.jpg",BarcodeFormat.CODE_128,"FW727",true], + ["code128-2/19.jpg",BarcodeFormat.CODE_128,"FW727",true], + ["code128-2/20.jpg",BarcodeFormat.CODE_128,"FW727",true], + ["code128-2/21.jpg",BarcodeFormat.CODE_128,"005-3354174500018",true], + ["code128-2/22.jpg",BarcodeFormat.CODE_128,"005-3354174500018",true], + ["code128-2/23.jpg",BarcodeFormat.CODE_128,"005-3354174500018",true], + ["code128-2/24.jpg",BarcodeFormat.CODE_128,"005-3354174500018",true], + ["code128-2/25.jpg",BarcodeFormat.CODE_128,"31001171800000017989625355702636",true], + ["code128-2/26.jpg",BarcodeFormat.CODE_128,"31001171800000017989625355702636",true], + ["code128-2/27.jpg",BarcodeFormat.CODE_128,"31001171800000017989625355702636",true], + ["code128-2/28.jpg",BarcodeFormat.CODE_128,"31001171800000017989625355702636",true], + ["code128-2/29.jpg",BarcodeFormat.CODE_128,"42094043",true], + ["code128-2/30.jpg",BarcodeFormat.CODE_128,"42094043",false], + ["code128-2/31.jpg",BarcodeFormat.CODE_128,"42094043",true], + ["code128-2/32.jpg",BarcodeFormat.CODE_128,"42094043",true], + ["code128-2/33.jpg",BarcodeFormat.CODE_128,"30885909173823",true], + ["code128-2/34.jpg",BarcodeFormat.CODE_128,"30885909173823",true], + ["code128-2/35.jpg",BarcodeFormat.CODE_128,"30885909173823",true], + ["code128-2/36.jpg",BarcodeFormat.CODE_128,"30885909173823",true], + ["code128-2/37.jpg",BarcodeFormat.CODE_128,"FGGQ6D1",true], + ["code128-2/38.jpg",BarcodeFormat.CODE_128,"FGGQ6D1",true], + ["code128-2/39.jpg",BarcodeFormat.CODE_128,"FGGQ6D1",true], + ["code128-2/40.jpg",BarcodeFormat.CODE_128,"FGGQ6D1",true], + ["code128-3/1.png",BarcodeFormat.CODE_128,"10064908",true], + ["code128-3/2.png",BarcodeFormat.CODE_128,"10068408",true], + ["code39-1/1.gif",BarcodeFormat.CODE_39,"TEST-SHEET",true], + ["code39-1/2.jpg",BarcodeFormat.CODE_39," WWW.CITRONSOFT.COM ",true], + ["code39-1/3.gif",BarcodeFormat.CODE_39,"MOROVIA",true], + ["code39-1/4.gif",BarcodeFormat.CODE_39,"ABC123",true], + ["code39-2/1.gif",BarcodeFormat.CODE_39,"Extended !?*#",true], + ["code39-2/2.gif",BarcodeFormat.CODE_39,"12ab",true], + ["code39-3/01.jpg",BarcodeFormat.CODE_39,"165627",true], + ["code39-3/02.jpg",BarcodeFormat.CODE_39,"165627",true], + ["code39-3/03.jpg",BarcodeFormat.CODE_39,"001EC947D49B",true], + ["code39-3/04.jpg",BarcodeFormat.CODE_39,"001EC947D49B",true], + ["code39-3/05.jpg",BarcodeFormat.CODE_39,"001EC947D49B",true], + ["code39-3/06.jpg",BarcodeFormat.CODE_39,"165340",true], + ["code39-3/07.jpg",BarcodeFormat.CODE_39,"165340",true], + ["code39-3/08.jpg",BarcodeFormat.CODE_39,"165340",true], + ["code39-3/09.jpg",BarcodeFormat.CODE_39,"165340",true], + ["code39-3/10.jpg",BarcodeFormat.CODE_39,"001EC94767E0",true], + ["code39-3/11.jpg",BarcodeFormat.CODE_39,"001EC94767E0",true], + ["code39-3/12.jpg",BarcodeFormat.CODE_39,"001EC94767E0",true], + ["code39-3/13.jpg",BarcodeFormat.CODE_39,"001EC94767E0",true], + ["code39-3/14.jpg",BarcodeFormat.CODE_39,"404785",true], + ["code39-3/15.jpg",BarcodeFormat.CODE_39,"404785",true], + ["code39-3/16.jpg",BarcodeFormat.CODE_39,"404785",true], + ["code39-3/17.jpg",BarcodeFormat.CODE_39,"404785",true], + ["code93-1/1.gif",BarcodeFormat.CODE_93,"1234567890",true], + ["code93-1/2.gif",BarcodeFormat.CODE_93,"CODE 93",true], + ["code93-1/3.jpg",BarcodeFormat.CODE_93,"DATA",true], + ["datamatrix-1/abcd-18x8.png",BarcodeFormat.DATAMATRIX,"abcde",true], + ["datamatrix-1/abcd-26x12.png",BarcodeFormat.DATAMATRIX,"abcdefghijklm",true], + ["datamatrix-1/abcd-32x8.png",BarcodeFormat.DATAMATRIX,"abcdef",true], + ["datamatrix-1/abcd-36x12.png",BarcodeFormat.DATAMATRIX,"abcdefghijklmnopq",true], + ["datamatrix-1/abcd-36x16.png",BarcodeFormat.DATAMATRIX,"abcdefghijklmnopqrstuvwxyz",true], + ["datamatrix-1/abcd-48x16.png",BarcodeFormat.DATAMATRIX,"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW",true], + ["datamatrix-1/abcd-52x52.png",BarcodeFormat.DATAMATRIX,"abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd",true], + ["datamatrix-1/abcdefg-64x64.png",BarcodeFormat.DATAMATRIX,"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*(),./\\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*(),./\\abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*(),./\\",true], + ["datamatrix-1/abcdefg.png",BarcodeFormat.DATAMATRIX,"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*(),./\\",true], + ["datamatrix-1/HelloWorld_Text_L_Kaywa.png",BarcodeFormat.DATAMATRIX,"Hello World",true], + ["datamatrix-1/HelloWorld_Text_L_Kaywa_1_error_byte.png",BarcodeFormat.DATAMATRIX,"Hello World",true], + ["datamatrix-1/HelloWorld_Text_L_Kaywa_2_error_byte.png",BarcodeFormat.DATAMATRIX,"Hello World",true], + ["datamatrix-1/HelloWorld_Text_L_Kaywa_3_error_byte.png",BarcodeFormat.DATAMATRIX,"Hello World",true], + ["datamatrix-1/HelloWorld_Text_L_Kaywa_4_error_byte.png",BarcodeFormat.DATAMATRIX,"Hello World",true], + ["datamatrix-1/zxing_URL_L_Kayway.png",BarcodeFormat.DATAMATRIX,"http://code.google.com/p/zxing/",true], + ["datamatrix-1/0123456789.gif",BarcodeFormat.DATAMATRIX,"0123456789",true], + ["datamatrix-1/abcd-52x52-IDAutomation.gif",BarcodeFormat.DATAMATRIX,"abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd",true], + ["datamatrix-1/GUID.jpg",BarcodeFormat.DATAMATRIX,"10f27ce-acb7-4e4e-a7ae-a0b98da6ed4a",true], + ["datamatrix-2/01.jpg",BarcodeFormat.DATAMATRIX,"http://google.com/m",false], + ["datamatrix-2/02.jpg",BarcodeFormat.DATAMATRIX,"http://google.com/m",false], + ["datamatrix-2/03.jpg",BarcodeFormat.DATAMATRIX,"http://google.com/m",false], + ["datamatrix-2/04.jpg",BarcodeFormat.DATAMATRIX,"http://google.com/m",false], + ["datamatrix-2/05.jpg",BarcodeFormat.DATAMATRIX,"http://google.com/m",false], + ["datamatrix-2/06.jpg",BarcodeFormat.DATAMATRIX,"http://google.com/m",false], + ["datamatrix-2/07.jpg",BarcodeFormat.DATAMATRIX,"http://google.com/m",false], + ["datamatrix-2/08.jpg",BarcodeFormat.DATAMATRIX,"http://google.com/m",false], + ["datamatrix-2/09.jpg",BarcodeFormat.DATAMATRIX,"http://google.com/m",false], + ["datamatrix-2/10.jpg",BarcodeFormat.DATAMATRIX,"http://google.com/m",false], + ["datamatrix-2/11.jpg",BarcodeFormat.DATAMATRIX,"http://google.com/m",false], + ["datamatrix-2/12.jpg",BarcodeFormat.DATAMATRIX,"http://google.com/m",false], + ["datamatrix-2/13.jpg",BarcodeFormat.DATAMATRIX,"http://google.com/m",false], + ["datamatrix-2/14.jpg",BarcodeFormat.DATAMATRIX,"http://google.com/m",false], + ["datamatrix-2/15.jpg",BarcodeFormat.DATAMATRIX,"http://google.com/m",false], + ["datamatrix-2/16.jpg",BarcodeFormat.DATAMATRIX,"http://google.com/m",false], + ["datamatrix-2/17.jpg",BarcodeFormat.DATAMATRIX,"http://google.com/m",false], + ["datamatrix-2/18.jpg",BarcodeFormat.DATAMATRIX,"http://google.com/m",false], + ["ean13-1/1.JPG",BarcodeFormat.EAN_13,"8413000065504",true], + ["ean13-1/2.JPG",BarcodeFormat.EAN_13,"8480010092271",true], + ["ean13-1/3.JPG",BarcodeFormat.EAN_13,"8480000823274",true], + ["ean13-1/4.JPG",BarcodeFormat.EAN_13,"5449000039231",true], + ["ean13-1/5.JPG",BarcodeFormat.EAN_13,"8410054010412",true], + ["ean13-1/6.JPG",BarcodeFormat.EAN_13,"8480010045062",true], + ["ean13-1/7.JPG",BarcodeFormat.EAN_13,"9788430532674",true], + ["ean13-1/8.JPG",BarcodeFormat.EAN_13,"8480017507990",true], + ["ean13-1/9.JPG",BarcodeFormat.EAN_13,"3166298099809",true], + ["ean13-1/10.JPG",BarcodeFormat.EAN_13,"8480010001136",true], + ["ean13-1/12.JPG",BarcodeFormat.EAN_13,"5201815331227",true], + ["ean13-1/13.JPG",BarcodeFormat.EAN_13,"8413600298517",true], + ["ean13-1/14.JPG",BarcodeFormat.EAN_13,"3560070169443",true], + ["ean13-1/15.JPG",BarcodeFormat.EAN_13,"4045787034318",true], + ["ean13-1/18.JPG",BarcodeFormat.EAN_13,"3086126100326",true], + ["ean13-1/19.JPG",BarcodeFormat.EAN_13,"4820024790635",true], + ["ean13-1/20.JPG",BarcodeFormat.EAN_13,"4000539017100",true], + ["ean13-1/21.JPG",BarcodeFormat.EAN_13,"7622200008018",true], + ["ean13-1/22.JPG",BarcodeFormat.EAN_13,"5603667020517",true], + ["ean13-1/23.JPG",BarcodeFormat.EAN_13,"7622400791949",true], + ["ean13-1/24.JPG",BarcodeFormat.EAN_13,"5709262942503",true], + ["ean13-1/25.JPG",BarcodeFormat.EAN_13,"9780140013993",true], + ["ean13-1/26.JPG",BarcodeFormat.EAN_13,"4901780188352",true], + ["ean13-1/28.JPG",BarcodeFormat.EAN_13,"9771699057002",true], + ["ean13-1/29.JPG",BarcodeFormat.EAN_13,"4007817327098",true], + ["ean13-1/30.JPG",BarcodeFormat.EAN_13,"5025121072311",true], + ["ean13-1/31.JPG",BarcodeFormat.EAN_13,"9780393058673",true], + ["ean13-1/32.JPG",BarcodeFormat.EAN_13,"9780393058673",true], + ["ean13-1/33.jpg",BarcodeFormat.EAN_13,"9781558604971",true], + ["ean13-1/34.jpg",BarcodeFormat.EAN_13,"9781558604971",false], + ["ean13-1/35.jpg",BarcodeFormat.EAN_13,"5030159003930",false], + ["ean13-1/36.jpg",BarcodeFormat.EAN_13,"5000213101025",false], + ["ean13-1/37.jpg",BarcodeFormat.EAN_13,"5000213002834",true], + ["ean13-1/38.jpg",BarcodeFormat.EAN_13,"9780201752847",true], + ["ean13-2/01.png",BarcodeFormat.EAN_13,"9780804816632",false], + ["ean13-2/02.png",BarcodeFormat.EAN_13,"9780804816632",false], + ["ean13-2/03.png",BarcodeFormat.EAN_13,"9780804816632",false], + ["ean13-2/04.png",BarcodeFormat.EAN_13,"9780804816632",false], + ["ean13-2/05.png",BarcodeFormat.EAN_13,"9780804816632",false], + ["ean13-2/06.png",BarcodeFormat.EAN_13,"9780804816632",false], + ["ean13-2/07.png",BarcodeFormat.EAN_13,"9780804816632",false], + ["ean13-2/08.png",BarcodeFormat.EAN_13,"9780345348036",false], + ["ean13-2/09.png",BarcodeFormat.EAN_13,"9780345348036",false], + ["ean13-2/10.png",BarcodeFormat.EAN_13,"9780345348036",false], + ["ean13-2/11.png",BarcodeFormat.EAN_13,"9780345348036",false], + ["ean13-2/12.png",BarcodeFormat.EAN_13,"9780345348036",false], + ["ean13-2/13.png",BarcodeFormat.EAN_13,"9784872348880",true], + ["ean13-2/14.png",BarcodeFormat.EAN_13,"9784872348880",true], + ["ean13-2/15.png",BarcodeFormat.EAN_13,"9784872348880",true], + ["ean13-2/16.png",BarcodeFormat.EAN_13,"9784872348880",true], + ["ean13-2/17.png",BarcodeFormat.EAN_13,"9784872348880",true], + ["ean13-2/18.png",BarcodeFormat.EAN_13,"9784872348880",true], + ["ean13-2/19.png",BarcodeFormat.EAN_13,"9784872348880",true], + ["ean13-2/20.png",BarcodeFormat.EAN_13,"9784872348880",true], + ["ean13-2/21.png",BarcodeFormat.EAN_13,"9784872348880",false], + ["ean13-2/22.png",BarcodeFormat.EAN_13,"9784872348880",false], + ["ean13-2/23.png",BarcodeFormat.EAN_13,"1920081045006",true], + ["ean13-2/24.png",BarcodeFormat.EAN_13,"1920081045006",true], + ["ean13-2/25.png",BarcodeFormat.EAN_13,"9784872348880",false], + ["ean13-2/26.png",BarcodeFormat.EAN_13,"9784872348880",false], + ["ean13-2/27.png",BarcodeFormat.EAN_13,"9784872348880",true], + ["ean13-2/28.png",BarcodeFormat.EAN_13,"1920081045006",false], + ["ean13-3/01.jpg",BarcodeFormat.EAN_13,"9780764544200",true], + ["ean13-3/02.jpg",BarcodeFormat.EAN_13,"9780764544200",true], + ["ean13-3/03.jpg",BarcodeFormat.EAN_13,"9780764544200",true], + ["ean13-3/04.jpg",BarcodeFormat.EAN_13,"9780764544200",true], + ["ean13-3/05.jpg",BarcodeFormat.EAN_13,"9780764544200",true], + ["ean13-3/06.jpg",BarcodeFormat.EAN_13,"9780764544200",true], + ["ean13-3/07.jpg",BarcodeFormat.EAN_13,"9780764544200",true], + ["ean13-3/08.jpg",BarcodeFormat.EAN_13,"9780764544200",true], + ["ean13-3/09.jpg",BarcodeFormat.EAN_13,"9780764544200",true], + ["ean13-3/10.jpg",BarcodeFormat.EAN_13,"9780596008574",true], + ["ean13-3/11.jpg",BarcodeFormat.EAN_13,"9780596008574",true], + ["ean13-3/12.jpg",BarcodeFormat.EAN_13,"9780596008574",true], + ["ean13-3/13.jpg",BarcodeFormat.EAN_13,"9780596008574",true], + ["ean13-3/14.jpg",BarcodeFormat.EAN_13,"9780596008574",true], + ["ean13-3/15.jpg",BarcodeFormat.EAN_13,"9780596008574",true], + ["ean13-3/16.jpg",BarcodeFormat.EAN_13,"9780596008574",true], + ["ean13-3/17.jpg",BarcodeFormat.EAN_13,"9780596008574",true], + ["ean13-3/18.jpg",BarcodeFormat.EAN_13,"9780596008574",true], + ["ean13-3/19.jpg",BarcodeFormat.EAN_13,"9780596008574",true], + ["ean13-3/20.jpg",BarcodeFormat.EAN_13,"9780596008574",true], + ["ean13-3/21.jpg",BarcodeFormat.EAN_13,"9780596008574",true], + ["ean13-3/22.jpg",BarcodeFormat.EAN_13,"9780201310054",true], + ["ean13-3/23.jpg",BarcodeFormat.EAN_13,"9780201310054",true], + ["ean13-3/24.jpg",BarcodeFormat.EAN_13,"9780201310054",true], + ["ean13-3/25.jpg",BarcodeFormat.EAN_13,"9780201310054",true], + ["ean13-3/26.jpg",BarcodeFormat.EAN_13,"9780201310054",true], + ["ean13-3/27.jpg",BarcodeFormat.EAN_13,"9780201310054",true], + ["ean13-3/28.jpg",BarcodeFormat.EAN_13,"9780201310054",true], + ["ean13-3/29.jpg",BarcodeFormat.EAN_13,"9780201310054",true], + ["ean13-3/30.jpg",BarcodeFormat.EAN_13,"9780201310054",true], + ["ean13-3/31.jpg",BarcodeFormat.EAN_13,"9780201310054",true], + ["ean13-3/32.jpg",BarcodeFormat.EAN_13,"9780201310054",true], + ["ean13-3/33.jpg",BarcodeFormat.EAN_13,"9780201310054",true], + ["ean13-3/34.jpg",BarcodeFormat.EAN_13,"9780201310054",true], + ["ean13-3/35.jpg",BarcodeFormat.EAN_13,"9780201310054",true], + ["ean13-3/36.jpg",BarcodeFormat.EAN_13,"9781585730575",true], + ["ean13-3/37.jpg",BarcodeFormat.EAN_13,"9781585730575",true], + ["ean13-3/38.jpg",BarcodeFormat.EAN_13,"9781585730575",true], + ["ean13-3/39.jpg",BarcodeFormat.EAN_13,"9781585730575",true], + ["ean13-3/40.jpg",BarcodeFormat.EAN_13,"9781585730575",true], + ["ean13-3/41.jpg",BarcodeFormat.EAN_13,"9781585730575",true], + ["ean13-3/42.jpg",BarcodeFormat.EAN_13,"9781585730575",true], + ["ean13-3/43.jpg",BarcodeFormat.EAN_13,"9781585730575",true], + ["ean13-3/44.jpg",BarcodeFormat.EAN_13,"9780735619937",true], + ["ean13-3/45.jpg",BarcodeFormat.EAN_13,"9780735619937",true], + ["ean13-3/46.jpg",BarcodeFormat.EAN_13,"9780735619937",true], + ["ean13-3/47.jpg",BarcodeFormat.EAN_13,"9780735619937",true], + ["ean13-3/48.jpg",BarcodeFormat.EAN_13,"9780735619937",true], + ["ean13-3/49.jpg",BarcodeFormat.EAN_13,"9780735619937",true], + ["ean13-3/50.jpg",BarcodeFormat.EAN_13,"9780735619937",true], + ["ean13-3/51.jpg",BarcodeFormat.EAN_13,"9780735619937",true], + ["ean13-3/52.jpg",BarcodeFormat.EAN_13,"9780735619937",true], + ["ean13-3/53.jpg",BarcodeFormat.EAN_13,"9780735619937",true], + ["ean13-3/54.jpg",BarcodeFormat.EAN_13,"9780735619937",true], + ["ean13-3/55.jpg",BarcodeFormat.EAN_13,"9780735619937",true], + ["ean13-4/01.jpg",BarcodeFormat.EAN_13,"9780441014989",true], + ["ean13-4/02.jpg",BarcodeFormat.EAN_13,"9780441014989",true], + ["ean13-4/03.jpg",BarcodeFormat.EAN_13,"9780441014989",false], + ["ean13-4/04.jpg",BarcodeFormat.EAN_13,"9780441014989",true], + ["ean13-4/05.jpg",BarcodeFormat.EAN_13,"9780441014989",true], + ["ean13-4/06.jpg",BarcodeFormat.EAN_13,"9780441014989",true], + ["ean13-4/07.jpg",BarcodeFormat.EAN_13,"9780441014989",true], + ["ean13-4/08.jpg",BarcodeFormat.EAN_13,"9780441014989",false], + ["ean13-4/09.jpg",BarcodeFormat.EAN_13,"9780441014989",true], + ["ean13-4/10.jpg",BarcodeFormat.EAN_13,"9780441014989",false], + ["ean13-4/11.jpg",BarcodeFormat.EAN_13,"9780441014989",true], + ["ean13-4/12.jpg",BarcodeFormat.EAN_13,"9780441014989",true], + ["ean13-4/13.jpg",BarcodeFormat.EAN_13,"9780441014989",true], + ["ean13-4/14.jpg",BarcodeFormat.EAN_13,"9780441014989",true], + ["ean13-4/15.jpg",BarcodeFormat.EAN_13,"9780441014989",true], + ["ean13-4/16.jpg",BarcodeFormat.EAN_13,"9780441014989",false], + ["ean13-4/17.jpg",BarcodeFormat.EAN_13,"9780441014989",false], + ["ean13-4/18.jpg",BarcodeFormat.EAN_13,"9780441014989",true], + ["ean13-4/19.jpg",BarcodeFormat.EAN_13,"9780441014989",false], + ["ean13-4/20.jpg",BarcodeFormat.EAN_13,"9780441014989",true], + ["ean13-4/21.jpg",BarcodeFormat.EAN_13,"9780441014989",false], + ["ean13-4/22.jpg",BarcodeFormat.EAN_13,"9780441014989",false], + ["ean13-5/01.png",BarcodeFormat.EAN_13,"9780679601050",false], + ["ean13-5/02.png",BarcodeFormat.EAN_13,"9780679601050",false], + ["ean13-5/03.png",BarcodeFormat.EAN_13,"9780679601050",false], + ["ean13-5/04.png",BarcodeFormat.EAN_13,"9780679601050",false], + ["ean13-5/05.png",BarcodeFormat.EAN_13,"9780679601050",false], + ["ean13-5/06.png",BarcodeFormat.EAN_13,"9780345460950",false], + ["ean13-5/07.png",BarcodeFormat.EAN_13,"9780345460950",false], + ["ean13-5/08.png",BarcodeFormat.EAN_13,"9780345460950",false], + ["ean13-5/09.png",BarcodeFormat.EAN_13,"9780345460950",false], + ["ean13-5/10.png",BarcodeFormat.EAN_13,"9780345460950",false], + ["ean13-5/11.png",BarcodeFormat.EAN_13,"9780345460950",false], + ["ean13-5/12.png",BarcodeFormat.EAN_13,"9780345460950",false], + ["ean13-5/13.png",BarcodeFormat.EAN_13,"9780446579803",false], + ["ean13-5/14.png",BarcodeFormat.EAN_13,"9780446579803",false], + ["ean13-5/15.png",BarcodeFormat.EAN_13,"9780446579803",false], + ["ean13-5/16.png",BarcodeFormat.EAN_13,"9780446579803",false], + ["ean13-5/17.png",BarcodeFormat.EAN_13,"9780446579803",false], + ["ean13-5/18.png",BarcodeFormat.EAN_13,"9780446579803",false], + ["ean8-1/1.gif",BarcodeFormat.EAN_8,"48512343",true], + ["ean8-1/2.gif",BarcodeFormat.EAN_8,"12345670",true], + ["ean8-1/3.gif",BarcodeFormat.EAN_8,"12345670",true], + ["ean8-1/4.jpg",BarcodeFormat.EAN_8,"67678983",true], + ["ean8-1/5.gif",BarcodeFormat.EAN_8,"80674313",true], + ["ean8-1/6.jpg",BarcodeFormat.EAN_8,"59001270",true], + ["ean8-1/7.jpg",BarcodeFormat.EAN_8,"50487066",true], + ["ean8-1/8.gif",BarcodeFormat.EAN_8,"55123457",true], + + ["itf-1/1.jpg",BarcodeFormat.ITF,"30712345000010",true], + ["itf-1/2.jpg",BarcodeFormat.ITF,"00012345678905",true], + ["itf-1/3.jpg",BarcodeFormat.ITF,"0053611912",true], + ["itf-1/5.jpg",BarcodeFormat.ITF,"0829220875",true], + ["itf-1/6.jpg",BarcodeFormat.ITF,"0829220874",true], + ["itf-1/7.jpg",BarcodeFormat.ITF,"0817605453",true], + ["itf-1/8.jpg",BarcodeFormat.ITF,"0829220874",true], + ["itf-1/9.jpg",BarcodeFormat.ITF,"0053611912",true], + ["itf-1/10.jpg",BarcodeFormat.ITF,"0053611912",false], + ["itf-1/13.jpg",BarcodeFormat.ITF,"0829220875",true], + ["itf-1/14.jpg",BarcodeFormat.ITF,"0829220875",true], + ["itf-1/15.jpg",BarcodeFormat.ITF,"0829220875",true], + ["itf-1/16.jpg",BarcodeFormat.ITF,"0829220874",true], + ["itf-2/01.jpg",BarcodeFormat.ITF,"070429",true], + ["itf-2/02.jpg",BarcodeFormat.ITF,"070429",false], + ["itf-2/03.jpg",BarcodeFormat.ITF,"070429",false], + ["itf-2/04.jpg",BarcodeFormat.ITF,"070429",true], + ["itf-2/05.jpg",BarcodeFormat.ITF,"070429",true], + ["itf-2/06.jpg",BarcodeFormat.ITF,"070429",false], + ["itf-2/07.jpg",BarcodeFormat.ITF,"070429",true], + ["itf-2/08.jpg",BarcodeFormat.ITF,"070429",true], + ["itf-2/09.jpg",BarcodeFormat.ITF,"070429",true], + ["itf-2/10.jpg",BarcodeFormat.ITF,"070429",true], + ["itf-2/11.jpg",BarcodeFormat.ITF,"070429",false], + ["itf-2/12.jpg",BarcodeFormat.ITF,"070429",true], + ["itf-2/13.jpg",BarcodeFormat.ITF,"070429",true], + ["pdf417/01.png",BarcodeFormat.PDF417,"This is PDF417",true], + ["pdf417/02.png",BarcodeFormat.PDF417,"12345678",true], + ["pdf417/03.png",BarcodeFormat.PDF417,"ActiveBarcode",true], + ["pdf417/04.png",BarcodeFormat.PDF417,"Unknown - change me!",false], + ["pdf417/05.png",BarcodeFormat.PDF417,"Unknown - change me!",false], + ["pdf417/06.png",BarcodeFormat.PDF417,"Unknown - change me!",false], + ["pdf417/07.png",BarcodeFormat.PDF417,"Unknown - change me!",false], + ["pdf417-2/01.png",BarcodeFormat.PDF417,"1234567890",true], + ["pdf417-2/02.png",BarcodeFormat.PDF417,"1234567890",true], + ["pdf417-2/03.png",BarcodeFormat.PDF417,"1234567890",true], + ["pdf417-2/04.png",BarcodeFormat.PDF417,"1234567890",true], + ["pdf417-2/05.png",BarcodeFormat.PDF417,"1234567890",true], + ["pdf417-2/06.png",BarcodeFormat.PDF417,"12345678900",false],// online works + ["pdf417-2/07.png",BarcodeFormat.PDF417,"1234567890",true], + ["pdf417-2/08.png",BarcodeFormat.PDF417,"A PDF 417 barcode with ASCII text",true], + ["pdf417-2/09.png",BarcodeFormat.PDF417,"A PDF 417 barcode with ASCII text",true], + ["pdf417-2/10.png",BarcodeFormat.PDF417,"A PDF 417 barcode with ASCII text",true], + ["pdf417-2/11.png",BarcodeFormat.PDF417,"A PDF 417 barcode with ASCII text",false], + ["pdf417-2/12.png",BarcodeFormat.PDF417,"A PDF 417 barcode with ASCII text",true], + ["pdf417-2/13.png",BarcodeFormat.PDF417,"A PDF 417 barcode with ASCII text",false], + ["pdf417-2/14.png",BarcodeFormat.PDF417,"A PDF 417 barcode with ASCII text",true], + ["pdf417-2/15.png",BarcodeFormat.PDF417,"A PDF 417 barcode with ASCII text",true], + ["pdf417-2/16.png",BarcodeFormat.PDF417,"A larger PDF 417 barcode with a greater amount of text. This is a more difficult test for mobile devices to resolve.",false], + ["pdf417-2/17.png",BarcodeFormat.PDF417,"A larger PDF 417 barcode with a greater amount of text. This is a more difficult test for mobile devices to resolve.",false],// online differs also + ["pdf417-2/18.png",BarcodeFormat.PDF417,"A larger PDF 417 barcode with a greater amount of text. This is a more difficult test for mobile devices to resolve.",true], + ["pdf417-2/19.png",BarcodeFormat.PDF417,"A larger PDF 417 barcode with a greater amount of text. This is a more difficult test for mobile devices to resolve.",true], + ["pdf417-2/20.png",BarcodeFormat.PDF417,"A larger PDF 417 barcode with a greater amount of text. This is a more difficult test for mobile devices to resolve.",false], + ["pdf417-2/21.png",BarcodeFormat.PDF417,"A larger PDF 417 barcode with a greater amount of text. This is a more difficult test for mobile devices to resolve.",false], + ["pdf417-2/22.png",BarcodeFormat.PDF417,"A larger PDF 417 barcode with a greater amount of text. This is a more difficult test for mobile devices to resolve.",false],//online works + ["pdf417-2/23.png",BarcodeFormat.PDF417,"A larger PDF 417 barcode with a greater amount of text. This is a more difficult test for mobile devices to resolve.",true], + ["qrcode-1/1.jpg",BarcodeFormat.QR_CODE,"MEBKM:URL:http\://en.wikipedia.org/wiki/Main_Page;;",false], + ["qrcode-1/2.jpg",BarcodeFormat.QR_CODE,"MEBKM:URL:http\://en.wikipedia.org/wiki/Main_Page;;",false], + ["qrcode-1/3.jpg",BarcodeFormat.QR_CODE,"MEBKM:URL:http\://en.wikipedia.org/wiki/Main_Page;;",false], + ["qrcode-1/4.jpg",BarcodeFormat.QR_CODE,"MEBKM:URL:http\://en.wikipedia.org/wiki/Main_Page;;",false], + ["qrcode-1/5.jpg",BarcodeFormat.QR_CODE,"MEBKM:URL:http\://en.wikipedia.org/wiki/Main_Page;;",false], + ["qrcode-1/6.jpg",BarcodeFormat.QR_CODE,"MEBKM:URL:http\://en.wikipedia.org/wiki/Main_Page;;",false], + ["qrcode-1/7.jpg",BarcodeFormat.QR_CODE,"MEBKM:URL:http\://en.wikipedia.org/wiki/Main_Page;;",false], + ["qrcode-1/8.jpg",BarcodeFormat.QR_CODE,"MEBKM:URL:http\://en.wikipedia.org/wiki/Main_Page;;",false], + ["qrcode-1/9.jpg",BarcodeFormat.QR_CODE,"MEBKM:URL:http\://en.wikipedia.org/wiki/Main_Page;;",false], + ["qrcode-1/10.jpg",BarcodeFormat.QR_CODE,"MEBKM:URL:http\://en.wikipedia.org/wiki/Main_Page;;",false], + ["qrcode-1/11.jpg",BarcodeFormat.QR_CODE,"MEBKM:URL:http\://en.wikipedia.org/wiki/Main_Page;;",false], + ["qrcode-1/12.jpg",BarcodeFormat.QR_CODE,"MEBKM:URL:http\://en.wikipedia.org/wiki/Main_Page;;",false], + ["qrcode-1/13.jpg",BarcodeFormat.QR_CODE,"http://google.com/gwt/n?u=bluenile.com",false], + ["qrcode-1/14.jpg",BarcodeFormat.QR_CODE,"http://google.com/gwt/n?u=bluenile.com",false], + ["qrcode-1/15.jpg",BarcodeFormat.QR_CODE,"http://google.com/gwt/n?u=bluenile.com",false], + ["qrcode-1/16.jpg",BarcodeFormat.QR_CODE,"Sean Owen\nsrowen@google.com\n917-364-2918\nhttp://awesome-thoughts.com",false], + ["qrcode-1/17.jpg",BarcodeFormat.QR_CODE,"Sean Owen\nsrowen@google.com\n917-364-2918\nhttp://awesome-thoughts.com",false], + ["qrcode-1/18.jpg",BarcodeFormat.QR_CODE,"Sean Owen\nsrowen@google.com\n917-364-2918\nhttp://awesome-thoughts.com",false], + ["qrcode-1/19.jpg",BarcodeFormat.QR_CODE,"Sean Owen\nsrowen@google.com\n917-364-2918\nhttp://awesome-thoughts.com",false], + ["qrcode-1/20.jpg",BarcodeFormat.QR_CODE,"Sean Owen\nsrowen@google.com\n917-364-2918\nhttp://awesome-thoughts.com",false], + ["qrcode-2/1.png",BarcodeFormat.QR_CODE,"When we at WRT talk about \"text,\" we are generally talking about a particular kind of readable information encoding - and readable is a complex proposition. Text may be stylized in a way we are unfamiliar with, as in blackletter - it may be interspersed with some markup we don\'t understand, such as HTML - it may be be a substitution system we aren\'t familiar with, such as braille or morse code - or it may be a system that, while technically human-readable, isn\'t particularly optimized for reading by humans, as with barcodes (although barcodes can be read).",false], + ["qrcode-2/2.png",BarcodeFormat.QR_CODE,"LANDBYASCARC PERCEPTIBLEC EEK,OOZI GITSWAYTHROU AWILDERNESSOFBESUPPOSED,I CANT,ORATL ASTDWARFISH.NO REESOFANYM NITUDEARETOBESOMEMISERA EFRAMEBUIL I GS,TENANTED, U INGSUMMER THEFUGITIVE;BUTTHEWHO ISLAND,WI H EXCEPTIONOFT W STERNPOI ,ANDALINEOFLLIAMLEGR .HEWASOF N ENTHUGUENOTF Y ANDHADON BEENWEALTHTIONCONSE ENTUPONH SD STERS,HELEFTNE LE NS,THEC OFHISFOREOUTHCARO A.THISISLA AVERYSINGULARO TCONSISTSO ITTLEELSEDSAQUART FAMILE. TI PARATEDFROMTHEMA AN BYASCAR YPERCEPTERESORT MARSH EN EVEGETATION,ASMIGH SU POSED, CANT,ORATREMITY, ORT OULTRIESTANDS,ANDWHEREARESOM MIS FRAMEBUIFEVER,MAYBE INDEED, TO;BUTT EISLAND,WITNYYEARSAGO,IC ACTED LLIAM AND.HEWASOFANNESHADREDUCEDHIM OWA IONC NSEQUENTUPONHISDSIDENCEATSULLIVA \'S HC ROLINA.THISISLANOUTTHR LESLON . THATN OINTE U RTEROF E.ITISTHROU ERNE DSANDSLI ,AFAVOR TOFT HEN.T",false], + ["qrcode-2/4.jpg",BarcodeFormat.QR_CODE,"http://wwws.keihin.ktr.mlit.go.jp/keitai/",true], + ["qrcode-2/5.jpg",BarcodeFormat.QR_CODE,"2021200000",false], + ["qrcode-2/6.jpg",BarcodeFormat.QR_CODE,"http://d.kaywa.com/20207100",false], + ["qrcode-2/7.gif",BarcodeFormat.QR_CODE,"BIZCARD:N:Todd;X:Ogasawara;T:Tech Geek;C:MobileViews.com;A:MobileTown USA;E:editor@mobileviews.com;;",false], + ["qrcode-2/8.gif",BarcodeFormat.QR_CODE,"http://staticrooster.com",false], + ["qrcode-2/9.png",BarcodeFormat.QR_CODE,"Morden",true], + ["qrcode-2/10.gif",BarcodeFormat.QR_CODE,"Google モバイル\nhttp://google.jp",false], + ["qrcode-2/11.gif",BarcodeFormat.QR_CODE,"BEGIN:VCARD\nN:Kennedy;Steve\nTEL:+44 (0)7775 755503\nADR;HOME:;;Flat 2, 43 Howitt Road, Belsize Park;London;;NW34LU;UK\nORG:NetTek Ltd;\nTITLE:Consultant\nEMAIL:steve@nettek.co.uk\nURL:www.nettek.co.uk\nEMAIL;IM:MSN:steve@gbnet.net\nNOTE:Testing 1 2 3\nBDAY:19611105\nEND:VCARD",false], + ["qrcode-2/12.jpg",BarcodeFormat.QR_CODE,"The 2005 USGS aerial photograph of the Washington Monument is censored.",false], + ["qrcode-2/13.jpg",BarcodeFormat.QR_CODE,"The 2005 USGS aerial photograph of the Washington Monument is censored.",false], + ["qrcode-2/14.gif",BarcodeFormat.QR_CODE,"http://bbc.co.uk/programmes",false], + ["qrcode-2/15.png",BarcodeFormat.QR_CODE,"In 25 words or less in the comments, below, tell us how QR codes will make the world less ordinary.",false], + ["qrcode-2/16.gif",BarcodeFormat.QR_CODE,"[外側QRコード]\n\n*ダブルQR*\nhttp://d-qr.net/ex/",false], + ["qrcode-2/17.gif",BarcodeFormat.QR_CODE,"デザインQR\nhttp://d-qr.net/ex/",false], + ["qrcode-2/18.jpg",BarcodeFormat.QR_CODE,"*デザインQR* \nhttp://d-qr.net/ex/ ",false], + ["qrcode-2/19.jpg",BarcodeFormat.QR_CODE,"*デザインQR* \nhttp://d-qr.net/ex/ ",false], + ["qrcode-2/20.jpg",BarcodeFormat.QR_CODE,"*デザインQR* \nhttp://d-qr.net/ex/ ",false], + ["qrcode-2/21.jpg",BarcodeFormat.QR_CODE,"*デザインQR* \nhttp://d-qr.net/ex/ ",false], + ["qrcode-2/22.jpg",BarcodeFormat.QR_CODE,"http://www.hotpepper.jp/mobile/cgi-bin/MBLC80100.cgi?SA=00&Z=AG&vos=hpp064&uid=NULLGWDOCOMO",false], + ["qrcode-2/23.jpg",BarcodeFormat.QR_CODE,"http://aniful.jp/pr/ ",false], + ["qrcode-2/24.png",BarcodeFormat.QR_CODE,"*デザインQR* \nhttp://d-qr.net/ex/ ",false], + ["qrcode-2/25.png",BarcodeFormat.QR_CODE,"MEBKM:TITLE:;URL:http://d.kaywa.com/2020400102;;",false], + ["qrcode-2/26.png",BarcodeFormat.QR_CODE,"<デザインQR> \nイラスト入りカラーQRコード\nhttp://d-qr.net/ex/ ",false], + ["qrcode-2/27.png",BarcodeFormat.QR_CODE,"*デザインQR* \nhttp://d-qr.net/ex/ ",false], + ["qrcode-2/28.jpg",BarcodeFormat.QR_CODE,"http://www.webtech.co.jp/k/",false], + ["qrcode-2/29.jpg",BarcodeFormat.QR_CODE,"http://live.fdgm.jp/u/event/hype/hype_top.html\n\n\nMEBKM:TITLE:hype????;URL:http\://live.fdgm.jp/u/event/hype/hype_top.html;;",false], + ["qrcode-2/30.png",BarcodeFormat.QR_CODE,"MECARD:N:測試;;",false], + ["qrcode-2/31.jpg",BarcodeFormat.QR_CODE,"今度のバージョンでは文章の暗号化ができます。",false], + ["qrcode-2/32.gif",BarcodeFormat.QR_CODE,"BEGIN:VCARD\nN:Kennedy;Steve\nTEL:+44 (0)7775 755503\nADR;HOME:;;Flat 2, 43 Howitt Road, Belsize Park;London;;NW34LU;UK\nORG:NetTek Ltd;\nTITLE:Consultant\nEMAIL:steve@nettek.co.uk\nURL:www.nettek.co.uk\nEMAIL;IM:MSN:steve@gbnet.net\nNOTE:Testing 1 2 3\nBDAY:19611105\nEND:VCARD",false], + ["qrcode-2/33.png",BarcodeFormat.QR_CODE,"AD:SUB:阿;;",false], + ["qrcode-2/34.png",BarcodeFormat.QR_CODE,"http://www.google.com/",false], + ["qrcode-2/35.png",BarcodeFormat.QR_CODE,"http://www.google.com/",false], + ["qrcode-3/01.jpg",BarcodeFormat.QR_CODE,"http://arnaud.sahuguet.com/graffiti/test.php?ll=-74.00309961503218,40.74102573163046,0",false], + ["qrcode-3/02.jpg",BarcodeFormat.QR_CODE,"http://arnaud.sahuguet.com/graffiti/test.php?ll=-74.00309961503218,40.74102573163046,0",false], + ["qrcode-3/03.jpg",BarcodeFormat.QR_CODE,"http://arnaud.sahuguet.com/graffiti/test.php?ll=-74.00309961503218,40.74102573163046,0",false], + ["qrcode-3/04.jpg",BarcodeFormat.QR_CODE,"http://arnaud.sahuguet.com/graffiti/test.php?ll=-74.00309961503218,40.74102573163046,0",false], + ["qrcode-3/05.jpg",BarcodeFormat.QR_CODE,"http://arnaud.sahuguet.com/graffiti/test.php?ll=-74.00309961503218,40.74102573163046,0",false], + ["qrcode-3/06.jpg",BarcodeFormat.QR_CODE,"http://arnaud.sahuguet.com/graffiti/test.php?ll=-74.00309961503218,40.74102573163046,0",false], + ["qrcode-3/07.jpg",BarcodeFormat.QR_CODE,"http://arnaud.sahuguet.com/graffiti/test.php?ll=-74.00309961503218,40.74102573163046,0",false], + ["qrcode-3/08.jpg",BarcodeFormat.QR_CODE,"http://arnaud.sahuguet.com/graffiti/test.php?ll=-74.00309961503218,40.74102573163046,0",false], + ["qrcode-3/09.jpg",BarcodeFormat.QR_CODE,"http://arnaud.sahuguet.com/graffiti/test.php?ll=-74.00309961503218,40.74102573163046,0",false], + ["qrcode-3/10.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Google 411,;TEL:18665881077;;",true], + ["qrcode-3/11.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Google 411,;TEL:18665881077;;",true], + ["qrcode-3/12.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Google 411,;TEL:18665881077;;",true], + ["qrcode-3/13.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Google 411,;TEL:18665881077;;",true], + ["qrcode-3/14.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Google 411,;TEL:18665881077;;",true], + ["qrcode-3/15.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Google 411,;TEL:18665881077;;",true], + ["qrcode-3/16.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Google 411,;TEL:18665881077;;",true], + ["qrcode-3/17.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Google 411,;TEL:18665881077;;",false], + ["qrcode-3/18.jpg",BarcodeFormat.QR_CODE,"UI office hours signup\nhttp://www.corp.google.com/sparrow/ui_office_hours/ ",false], + ["qrcode-3/19.jpg",BarcodeFormat.QR_CODE,"UI office hours signup\nhttp://www.corp.google.com/sparrow/ui_office_hours/ ",false], + ["qrcode-3/20.jpg",BarcodeFormat.QR_CODE,"UI office hours signup\nhttp://www.corp.google.com/sparrow/ui_office_hours/ ",false], + ["qrcode-3/21.jpg",BarcodeFormat.QR_CODE,"UI office hours signup\nhttp://www.corp.google.com/sparrow/ui_office_hours/ ",false], + ["qrcode-3/22.jpg",BarcodeFormat.QR_CODE,"UI office hours signup\nhttp://www.corp.google.com/sparrow/ui_office_hours/ ",false], + ["qrcode-3/23.jpg",BarcodeFormat.QR_CODE,"UI office hours signup\nhttp://www.corp.google.com/sparrow/ui_office_hours/ ",false], + ["qrcode-3/24.jpg",BarcodeFormat.QR_CODE,"UI office hours signup\nhttp://www.corp.google.com/sparrow/ui_office_hours/ ",false], + ["qrcode-3/25.jpg",BarcodeFormat.QR_CODE,"UI office hours signup\nhttp://www.corp.google.com/sparrow/ui_office_hours/ ",false], + ["qrcode-3/26.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-3/27.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-3/28.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-3/29.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-3/30.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-3/31.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",false], + ["qrcode-3/32.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-3/33.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-3/34.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",false], + ["qrcode-3/35.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-3/36.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-3/37.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",false], + ["qrcode-3/38.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-3/39.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-3/40.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",false], + ["qrcode-3/41.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-3/42.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-4/01.jpg",BarcodeFormat.QR_CODE,"Google Print Ads - T.G.I.A.F. - January 31, 2008",true], + ["qrcode-4/02.jpg",BarcodeFormat.QR_CODE,"Google Print Ads - T.G.I.A.F. - January 31, 2008",true], + ["qrcode-4/03.jpg",BarcodeFormat.QR_CODE,"Google Print Ads - T.G.I.A.F. - January 31, 2008",true], + ["qrcode-4/04.jpg",BarcodeFormat.QR_CODE,"Google Print Ads - T.G.I.A.F. - January 31, 2008",true], + ["qrcode-4/05.jpg",BarcodeFormat.QR_CODE,"Google Print Ads - T.G.I.A.F. - January 31, 2008",false], + ["qrcode-4/06.jpg",BarcodeFormat.QR_CODE,"Google Print Ads - T.G.I.A.F. - January 31, 2008",false], + ["qrcode-4/07.jpg",BarcodeFormat.QR_CODE,"Google Print Ads - T.G.I.A.F. - January 31, 2008",true], + ["qrcode-4/08.jpg",BarcodeFormat.QR_CODE,"Google Print Ads - T.G.I.A.F. - January 31, 2008",false], + ["qrcode-4/09.jpg",BarcodeFormat.QR_CODE,"Google Print Ads - T.G.I.A.F. - January 31, 2008",false], + ["qrcode-4/10.jpg",BarcodeFormat.QR_CODE,"Google Print Ads - T.G.I.A.F. - January 31, 2008",true], + ["qrcode-4/11.jpg",BarcodeFormat.QR_CODE,"Google Print Ads - T.G.I.A.F. - January 31, 2008",true], + ["qrcode-4/12.jpg",BarcodeFormat.QR_CODE,"Google Print Ads - T.G.I.A.F. - January 31, 2008",true], + ["qrcode-4/13.jpg",BarcodeFormat.QR_CODE,"Google Print Ads - T.G.I.A.F. - January 31, 2008",false], + ["qrcode-4/14.jpg",BarcodeFormat.QR_CODE,"Google Print Ads - T.G.I.A.F. - January 31, 2008",false], + ["qrcode-4/15.jpg",BarcodeFormat.QR_CODE,"http://code.google.com",false], + ["qrcode-4/16.jpg",BarcodeFormat.QR_CODE,"http://code.google.com",false], + ["qrcode-4/17.jpg",BarcodeFormat.QR_CODE,"http://code.google.com",false], + ["qrcode-4/18.jpg",BarcodeFormat.QR_CODE,"http://code.google.com",false], + ["qrcode-4/19.jpg",BarcodeFormat.QR_CODE,"http://code.google.com",false], + ["qrcode-4/20.jpg",BarcodeFormat.QR_CODE,"http://code.google.com",false], + ["qrcode-4/21.jpg",BarcodeFormat.QR_CODE,"http://code.google.com",false], + ["qrcode-4/22.jpg",BarcodeFormat.QR_CODE,"http://code.google.com",false], + ["qrcode-4/23.jpg",BarcodeFormat.QR_CODE,"http://code.google.com",false], + ["qrcode-4/24.jpg",BarcodeFormat.QR_CODE,"http://code.google.com",false], + ["qrcode-4/25.jpg",BarcodeFormat.QR_CODE,"http://code.google.com",false], + ["qrcode-4/26.jpg",BarcodeFormat.QR_CODE,"http://code.google.com",false], + ["qrcode-4/27.jpg",BarcodeFormat.QR_CODE,"http://code.google.com",false], + ["qrcode-4/28.jpg",BarcodeFormat.QR_CODE,"http://code.google.com",false], + ["qrcode-4/29.jpg",BarcodeFormat.QR_CODE,"http://code.google.com",false], + ["qrcode-4/30.jpg",BarcodeFormat.QR_CODE,"http://code.google.com",false], + ["qrcode-4/31.jpg",BarcodeFormat.QR_CODE,"http://code.google.com",false], + ["qrcode-4/32.jpg",BarcodeFormat.QR_CODE,"http://code.google.com",false], + ["qrcode-4/33.jpg",BarcodeFormat.QR_CODE,"http://code.google.com",false], + ["qrcode-4/34.jpg",BarcodeFormat.QR_CODE,"http://code.google.com",false], + ["qrcode-4/35.jpg",BarcodeFormat.QR_CODE,"http://code.google.com/p/zxing/",true], + ["qrcode-4/36.jpg",BarcodeFormat.QR_CODE,"http://code.google.com/p/zxing/",true], + ["qrcode-4/37.jpg",BarcodeFormat.QR_CODE,"http://code.google.com/p/zxing/",false], + ["qrcode-4/38.jpg",BarcodeFormat.QR_CODE,"http://code.google.com/p/zxing/",true], + ["qrcode-4/39.jpg",BarcodeFormat.QR_CODE,"http://code.google.com/p/zxing/",true], + ["qrcode-4/40.jpg",BarcodeFormat.QR_CODE,"http://code.google.com/p/zxing/",true], + ["qrcode-4/41.jpg",BarcodeFormat.QR_CODE,"http://code.google.com/p/zxing/",false], + ["qrcode-4/42.jpg",BarcodeFormat.QR_CODE,"http://code.google.com/p/zxing/",true], + ["qrcode-4/43.jpg",BarcodeFormat.QR_CODE,"http://code.google.com/p/zxing/",true], + ["qrcode-4/44.jpg",BarcodeFormat.QR_CODE,"http://code.google.com/p/zxing/",true], + ["qrcode-4/45.jpg",BarcodeFormat.QR_CODE,"http://code.google.com/p/zxing/",true], + ["qrcode-4/46.jpg",BarcodeFormat.QR_CODE,"http://code.google.com/p/zxing/",true], + ["qrcode-4/47.jpg",BarcodeFormat.QR_CODE,"http://code.google.com/p/zxing/",true], + ["qrcode-4/48.jpg",BarcodeFormat.QR_CODE,"http://code.google.com/p/zxing/",true], + ["qrcode-5/01.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",false], + ["qrcode-5/02.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-5/03.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-5/04.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-5/05.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-5/06.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-5/07.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-5/08.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-5/09.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-5/10.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-5/11.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-5/12.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-5/13.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-5/14.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-5/15.jpg",BarcodeFormat.QR_CODE,"MECARD:N:Sean Owen;TEL:+12125658770;EMAIL:srowen@google.com;;",true], + ["qrcode-5/16.png",BarcodeFormat.QR_CODE,"THROUGH THE LOOKING-GLASS\n\nBy Lewis Carroll\n\n\nCHAPTER I. Looking-Glass house\n\nOne thing was certain, that the WHITE kitten had had nothing to do with\nit:--it was the black kitten's fault entirely. For the white kitten had\nbeen having its face washed by the old cat for the last quarter of\nan hour (and bearing it pretty well, considering); so you see that it\nCOULDN'T have had any hand in the mischief.\n\nThe way Dinah washed her children's faces was this: first she held the\npoor thing down by its ear with one paw, and then with the other paw she\nrubbed its face all over, the wrong way, beginning at the nose: and\njust now, as I said, she was hard at work on the white kitten, which was\nlying quite still and trying to purr--no doubt feeling that it was all\nmeant for its good.\n\nBut the black kitten had been finished with earlier in the afternoon,\nand so, while Alice was sitting curled up in a corner of the great\narm-chair, half talking to herself and half asleep, the kitten had been\nhaving a grand game of romps with the ball of worsted Alice had been\ntrying to wind up, and had been rolling it up and down till it had all\ncome undone again; and there it was, spread over the hearth-rug, all\nknots and tangles, with the kitten running after its own tail in the\nmiddle.\n\n'Oh, you wicked little thing!' cried Alice, catching up the kitten, and\ngiving it a little kiss to make it understand that it was in disgrace.\n'Really, Dinah ought to have taught you better manners! You OUGHT,\nDinah, you know you ought!' she added, looking reproachfully at the old\ncat, and speaking in as cross a voice as she could manage--and then she\nscrambled back into the arm-chair, taking the kitten and the worsted\nwith her, and began winding up the ball again. But she didn't get on\nvery fast, as she was talking all the time, sometimes to the kitten, and\nsometimes to herself. Kitty sat very demurely on her knee, pretending to\nwatch the progress of the winding, and now and then putting out one\npaw and gently touching the ball, as if it would be glad to help, if it\nmight.\n\n'Do you know what to-morrow is, Kitty?' Alice began. 'You'd have guessed\nif you'd been up in the window with me--only Dinah was making you tidy,\nso you couldn't. I was watching the boys getting in sticks for the\nbonfire--and it wants plenty of sticks, Kitty! Only it got so cold, and\nit snowed so, they had to leave off. Never mind, Kitty, we'll go and\nsee the bonfire to-morrow.' Here Alice wound two or three turns of the\nworsted round the kitten's neck, just to see how it would look: this led\nto a scramble, in which the ball rolled down upon the floor, and yards\nand yards of it got unwound again.\n\n'Do you know, I was so angry, Kitty,' Alice went on as soon as they were\ncomfortably settled again, 'when I saw all the mischief you had been\ndoing, I was very nearly opening the window, and putting you out into\nthe snow! And you'd have deserved it, you little mischievous darling!\nWha\n",true], + ["qrcode-5/17.png",BarcodeFormat.QR_CODE,"THROUGH THE LOOKING-GLASS\n\nBy Lewis Carroll\n\n\nCHAPTER I. Looking-Glass house\n\nOne thing was certain, that the WHITE kitten had had nothing to do with\nit:--it was the black kitten's fault entirely. For the white kitten had\nbeen having its face washed by the old cat for the last quarter of\nan hour (and bearing it pretty well, considering); so you see that it\nCOULDN'T have had any hand in the mischief.\n\nThe way Dinah washed her children's faces was this: first she held the\npoor thing down by its ear with one paw, and then with the other paw she\nrubbed its face all over, the wrong way, beginning at the nose: and\njust now, as I said, she was hard at work on the white kitten, which was\nlying quite still and trying to purr--no doubt feeling that it was all\nmeant for its good.\n\nBut the black kitten had been finished with earlier in the afternoon,\nand so, while Alice was sitting curled up in a corner of the great\narm-chair, half talking to herself and half asleep, the kitten had been\nhaving a grand game of romps with the ball of worsted Alice had been\ntrying to wind up, and had been rolling it up and down till it had all\ncome undone again; and there it was, spread over the hearth-rug, all\nknots and tangles, with the kitten running after its own tail in the\nmiddle.\n\n'Oh, you wicked little thing!' cried Alice, catching up the kitten, and\ngiving it a little kiss to make it understand that it was in disgrace.\n'Really, Dinah ought to have taught you better manners! You OUGHT,\nDinah, you know you ought!' she added, looking reproachfully at the old\ncat, and speaking in as cross a voice as she could manage--and then she\nscrambled back into the arm-chair, taking the kitten and the worsted\nwith her, and began winding up the ball again. But she didn't get on\nvery fast, as she was talking all the time, sometimes to the kitten, and\nsometimes to herself. Kitty sat very demurely on her knee, pretending to\nwatch the progress of the winding, and now and then putting out one\npaw and gently touching the ball, as if it would be glad to help, if it\nmight.\n\n'Do you know what to-morrow is, Kitty?' Alice began. 'You'd have guessed\nif you'd been up in the window with me--only Dinah was making you tidy,\nso you couldn't. I was watching the boys getting in sticks for the\nbonfire--and it wants plenty of sticks, Kitty! Only it \n",true], + ["qrcode-5/18.png",BarcodeFormat.QR_CODE,"THROUGH THE LOOKING-GLASS\n\nBy Lewis Carroll\n\n\nCHAPTER I. Looking-Glass house\n\nOne thing was certain, that the WHITE kitten had had nothing to do with\nit:--it was the black kitten's fault entirely. For the white kitten had\nbeen having its face washed by the old cat for the last quarter of\nan hour (and bearing it pretty well, considering); so you see that it\nCOULDN'T have had any hand in the mischief.\n\nThe way Dinah washed her children's faces was this: first she held the\npoor thing down by its ear with one paw, and then with the other paw she\nrubbed its face all over, the wrong way, beginning at the nose: and\njust now, as I said, she was hard at work on the white kitten, which was\nlying quite still and trying to purr--no doubt feeling that it was all\nmeant for its good.\n\nBut the black kitten had been finished with earlier in the afternoon,\nand so, while Alice was sitting curled up in a corner of the great\narm-chair, half talking to herself and half asleep, the kitten had been\nhaving a grand game of romps with the ball of worsted Alice had been\ntrying to wind up, and had been rolling it up and down till it had all\ncome undone again; and there it was, spread over the hearth-rug, all\nknots and tangles, with the kitten running after its own tail in the\nmiddle.\n\n'Oh, you wicked little thing!' cried Alice, catching up the kitten, and\ngiving it a little kiss to make it understand that it was in disgrace.\n'Really, Dinah ought to have taught you better manners! You OUGHT,\nDinah, you know you ought!' she added, looking reproachfully at the old\ncat, and speaking in as cross a voice as she could manage--and then she\nscrambled back into the arm-ch\n\n",true], + ["qrcode-5/19.png",BarcodeFormat.QR_CODE,"THROUGH THE LOOKING-GLASS\n\nBy Lewis Carroll\n\n\nCHAPTER I. Looking-Glass house\n\nOne thing was certain, that the WHITE kitten had had nothing to do with\nit:--it was the black kitten's fault entirely. For the white kitten had\nbeen having its face washed by the old cat for the last quarter of\nan hour (and bearing it pretty well, considering); so you see that it\nCOULDN'T have had any hand in the mischief.\n\nThe way Dinah washed her children's faces was this: first she held the\npoor thing down by its ear with one paw, and then with the other paw she\nrubbed its face all over, the wrong way, beginning at the nose: and\njust now, as I said, she was hard at work on the white kitten, which was\nlying quite still and trying to purr--no doubt feeling that it was all\nmeant for its good.\n\nBut the black kitten had been finished with earlier in the afternoon,\nand so, while Alice was sitting curled up in a corner of the great\narm-chair, half talking to herself and half asleep, the kitten had been\nhaving a grand game of romps with the ball of worsted Alice had been\ntrying to wind up, and had been rolling it up and down till it had all\ncome undone again; and there it was, spread over the hearth-rug, all\nknots and tangles, with the kitten running after its own tail in the\nmidd\n",true], + ["qrcode-6/1.png",BarcodeFormat.QR_CODE,"1234567890",false], + ["qrcode-6/2.png",BarcodeFormat.QR_CODE,"1234567890",false], + ["qrcode-6/3.png",BarcodeFormat.QR_CODE,"1234567890",false], + ["qrcode-6/4.png",BarcodeFormat.QR_CODE,"1234567890",false], + ["qrcode-6/5.png",BarcodeFormat.QR_CODE,"1234567890",false], + ["qrcode-6/6.png",BarcodeFormat.QR_CODE,"1234567890",false], + ["qrcode-6/7.png",BarcodeFormat.QR_CODE,"1234567890",false], + ["qrcode-6/8.png",BarcodeFormat.QR_CODE,"1234567890",false], + ["qrcode-6/9.png",BarcodeFormat.QR_CODE,"1234567890",false], + ["qrcode-6/10.png",BarcodeFormat.QR_CODE,"1234567890",false], + ["qrcode-6/11.png",BarcodeFormat.QR_CODE,"1234567890",false], + ["qrcode-6/12.png",BarcodeFormat.QR_CODE,"1234567890",false], + ["qrcode-6/13.png",BarcodeFormat.QR_CODE,"1234567890",false], + ["qrcode-6/14.png",BarcodeFormat.QR_CODE,"1234567890",false], + ["RSS_14-1/1.png",BarcodeFormat.RSS_14,"04412345678909",true], + ["RSS_14-1/2.gif",BarcodeFormat.RSS_14,"00821935106427",true], + ["RSS_14-1/3.png",BarcodeFormat.RSS_14,"00075678164125",true], + ["RSS_14-1/4.jpg",BarcodeFormat.RSS_14,"20012345678909",true], + ["RSS_14-1/5.jpg",BarcodeFormat.RSS_14,"00034567890125",true], + ["RSS_14-1/6.jpg",BarcodeFormat.RSS_14,"00012345678905",true], + ["RSS_14-2/1.png",BarcodeFormat.RSS_14,"04412345678909",false], + ["RSS_14-2/2.png",BarcodeFormat.RSS_14,"04412345678909",false], + ["RSS_14-2/3.png",BarcodeFormat.RSS_14,"04412345678909",false], + ["RSS_14-2/4.png",BarcodeFormat.RSS_14,"04412345678909",false], + ["RSS_14-2/5.png",BarcodeFormat.RSS_14,"02001234567893",false], + ["RSS_14-2/6.png",BarcodeFormat.RSS_14,"02001234567893",true], + ["RSS_14-2/7.png",BarcodeFormat.RSS_14,"02001234567893",true], + ["RSS_14-2/8.png",BarcodeFormat.RSS_14,"02001234567893",true], + ["RSS_14-2/9.png",BarcodeFormat.RSS_14,"02001234567893",false], + ["RSS_14-2/10.png",BarcodeFormat.RSS_14,"02001234567893",false], + ["RSS_14-2/11.png",BarcodeFormat.RSS_14,"02001234567893",false], // online decoder can decode this one?! + ["RSS_14-2/12.png",BarcodeFormat.RSS_14,"02001234567893",false], + ["RSS_14-2/13.png",BarcodeFormat.RSS_14,"02001234567893",true], + ["RSS_14-2/14.png",BarcodeFormat.RSS_14,"02001234567893",true], + ["RSS_14-2/15.png",BarcodeFormat.RSS_14,"02001234567893",false], + ["RSS_14-2/16.png",BarcodeFormat.RSS_14,"02001234567893",false], + ["RSS_14-2/17.png",BarcodeFormat.RSS_14,"02001234567893",false], + ["RSS_14-2/18.png",BarcodeFormat.RSS_14,"02001234567893",false], + ["RSS_14-2/19.png",BarcodeFormat.RSS_14,"02001234567893",false], + ["RSS_14-2/20.png",BarcodeFormat.RSS_14,"00012345678905",true], + ["RSS_14-2/21.png",BarcodeFormat.RSS_14,"00012345678905",false], + ["RSS_14-2/22.png",BarcodeFormat.RSS_14,"00012345678905",false], + ["RSS_14-2/23.png",BarcodeFormat.RSS_14,"00012345678905",false], + ["RSS_14-2/24.png",BarcodeFormat.RSS_14,"00012345678905",false], + ["RSS_EXPANDED-1/1.jpg",BarcodeFormat.RSS_EXPANDED,"(11)100224(17)110224(3102)000100",true], + ["RSS_EXPANDED-1/2.jpg",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3103)001750",true], + ["RSS_EXPANDED-1/3.jpg",BarcodeFormat.RSS_EXPANDED,"(10)12A",true], + ["RSS_EXPANDED-1/4.jpg",BarcodeFormat.RSS_EXPANDED,"(01)98898765432106(3202)012345(15)991231",true], + ["RSS_EXPANDED-1/5.jpg",BarcodeFormat.RSS_EXPANDED,"(01)90614141000015(3202)000150",true], + ["RSS_EXPANDED-1/6.png",BarcodeFormat.RSS_EXPANDED,"(10)567(01)90012345678908(11)010101",true], + ["RSS_EXPANDED-1/7.png",BarcodeFormat.RSS_EXPANDED,"(10)567(11)010101",true], + ["RSS_EXPANDED-1/8.png",BarcodeFormat.RSS_EXPANDED,"(10)567(11)010101(13)010101",true], + ["RSS_EXPANDED-1/9.png",BarcodeFormat.RSS_EXPANDED,"(10)567(3102)123456",true], + ["RSS_EXPANDED-1/10.png",BarcodeFormat.RSS_EXPANDED,"(01)98898765432106(15)991231(3103)001750(10)12A(422)123(21)123456(423)012345678901",true], + ["RSS_EXPANDED-1/11.png",BarcodeFormat.RSS_EXPANDED,"(01)98898765432106(15)991231(3103)001750(10)12A(422)123(21)123456",true], + ["RSS_EXPANDED-1/12.jpg",BarcodeFormat.RSS_EXPANDED,"(01)98898765432106(3103)001750",true], + ["RSS_EXPANDED-1/13.png",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3922)795",true], + ["RSS_EXPANDED-1/14.png",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3932)0401234",true], + ["RSS_EXPANDED-1/15.jpg",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3102)001750(11)100312",true], + ["RSS_EXPANDED-1/16.jpg",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3202)001750(11)100312",true], + ["RSS_EXPANDED-1/17.jpg",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3102)001750(13)100312",true], + ["RSS_EXPANDED-1/18.jpg",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3202)001750(13)100312",true], + ["RSS_EXPANDED-1/19.jpg",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3102)001750(15)100312",true], + ["RSS_EXPANDED-1/20.jpg",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3202)001750(15)100312",true], + ["RSS_EXPANDED-1/21.jpg",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3102)001750(17)100312",true], + ["RSS_EXPANDED-1/22.jpg",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3202)001750(17)100312",true], + ["RSS_EXPANDED-1/23.png",BarcodeFormat.RSS_EXPANDED,"(10)56789(11)010101",true], + ["RSS_EXPANDED-1/24.png",BarcodeFormat.RSS_EXPANDED,"(10)567890(11)010101",true], + ["RSS_EXPANDED-1/25.png",BarcodeFormat.RSS_EXPANDED,"(10)123",true], + ["RSS_EXPANDED-1/26.png",BarcodeFormat.RSS_EXPANDED,"(10)5678(11)010101",true], + ["RSS_EXPANDED-1/27.png",BarcodeFormat.RSS_EXPANDED,"(10)1098-1234",true], + ["RSS_EXPANDED-1/28.png",BarcodeFormat.RSS_EXPANDED,"(10)1098/1234",true], + ["RSS_EXPANDED-1/29.png",BarcodeFormat.RSS_EXPANDED,"(10)1098.1234",true], + ["RSS_EXPANDED-1/30.png",BarcodeFormat.RSS_EXPANDED,"(10)1098*1234",true], + ["RSS_EXPANDED-1/31.png",BarcodeFormat.RSS_EXPANDED,"(10)1098,1234",true], + ["RSS_EXPANDED-1/32.png",BarcodeFormat.RSS_EXPANDED,"(15)991231(3103)001750(10)12A(422)123(21)123456(423)0123456789012",true], + ["RSS_EXPANDED-2/3_01.jpg",BarcodeFormat.RSS_EXPANDED,"(10)12A",true], + ["RSS_EXPANDED-2/3_02.jpg",BarcodeFormat.RSS_EXPANDED,"(10)12A",true], + ["RSS_EXPANDED-2/3_03.jpg",BarcodeFormat.RSS_EXPANDED,"(10)12A",true], + ["RSS_EXPANDED-2/3_04.jpg",BarcodeFormat.RSS_EXPANDED,"(10)12A",true], + ["RSS_EXPANDED-2/3_05.jpg",BarcodeFormat.RSS_EXPANDED,"(10)12A",true], + ["RSS_EXPANDED-2/3_06.jpg",BarcodeFormat.RSS_EXPANDED,"(10)12A",true], + ["RSS_EXPANDED-2/3_07.jpg",BarcodeFormat.RSS_EXPANDED,"(10)12A",true], + ["RSS_EXPANDED-2/3_09.jpg",BarcodeFormat.RSS_EXPANDED,"(10)12A",true], + ["RSS_EXPANDED-2/4_00.jpg",BarcodeFormat.RSS_EXPANDED,"(01)98898765432106(3202)012345(15)991231",true], + ["RSS_EXPANDED-2/4_01.jpg",BarcodeFormat.RSS_EXPANDED,"(01)98898765432106(3202)012345(15)991231",true], + ["RSS_EXPANDED-2/4_02.jpg",BarcodeFormat.RSS_EXPANDED,"(01)98898765432106(3202)012345(15)991231",true], + ["RSS_EXPANDED-2/4_03.jpg",BarcodeFormat.RSS_EXPANDED,"(01)98898765432106(3202)012345(15)991231",true], + ["RSS_EXPANDED-2/4_04.jpg",BarcodeFormat.RSS_EXPANDED,"(01)98898765432106(3202)012345(15)991231",true], + ["RSS_EXPANDED-2/4_05.jpg",BarcodeFormat.RSS_EXPANDED,"(01)98898765432106(3202)012345(15)991231",true], + ["RSS_EXPANDED-2/5.jpg",BarcodeFormat.RSS_EXPANDED,"(01)90614141000015(3202)000150",true], + ["RSS_EXPANDED-2/12.jpg",BarcodeFormat.RSS_EXPANDED,"(01)98898765432106(3103)001750",true], + ["RSS_EXPANDED-2/13.jpg",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3922)795",true], + ["RSS_EXPANDED-2/16.jpg",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3202)001750(11)100312",true], + ["RSS_EXPANDED-2/17.jpg",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3102)001750(13)100312",true], + ["RSS_EXPANDED-2/18.jpg",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3202)001750(13)100312",true], + ["RSS_EXPANDED-2/18b.jpg",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3202)001750(13)100312",true], + ["RSS_EXPANDED-2/19.jpg",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3102)001750(15)100312",true], + ["RSS_EXPANDED-2/21.jpg",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3102)001750(17)100312",true], + ["RSS_EXPANDED-3/1.png",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3103)012233(15)991231",true], + ["RSS_EXPANDED-3/2.png",BarcodeFormat.RSS_EXPANDED,"(01)91234567980129(3103)012233(15)991231",true], + ["RSS_EXPANDED-3/3.png",BarcodeFormat.RSS_EXPANDED,"(01)91234567980129(3102)012233(15)991231",true], + ["RSS_EXPANDED-3/4.png",BarcodeFormat.RSS_EXPANDED,"(01)91234567980129(3102)012233(15)00011",true], + ["RSS_EXPANDED-3/5.png",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3103)001750",true], + ["RSS_EXPANDED-3/6.png",BarcodeFormat.RSS_EXPANDED,"(01)92109876543213(3103)032767",true], + ["RSS_EXPANDED-3/7.png",BarcodeFormat.RSS_EXPANDED,"(01)92109876543213(3103)000000",true], + ["RSS_EXPANDED-3/8.png",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3202)000156",true], + ["RSS_EXPANDED-3/9.png",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3202)009999",true], + ["RSS_EXPANDED-3/10.png",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3203)010000",true], + ["RSS_EXPANDED-3/11.png",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3203)032767",true], + ["RSS_EXPANDED-3/12.png",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3922)795",true], + ["RSS_EXPANDED-3/13.png",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3922)795888888888888888888888888888888888888888888888888888",true], + ["RSS_EXPANDED-3/14.png",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3932)0401234",true], + ["RSS_EXPANDED-3/15.png",BarcodeFormat.RSS_EXPANDED,"(01)00012345678905(10)ABC123",true], + ["RSS_EXPANDED-3/16.png",BarcodeFormat.RSS_EXPANDED,"(01)12345678901231(10)UNIVERSITY-OF-DEUSTO",true], + ["RSS_EXPANDED-3/17.png",BarcodeFormat.RSS_EXPANDED,"(01)12345678901231(10)PIRAMIDE-PROJECT",true], + ["RSS_EXPANDED-3/18.png",BarcodeFormat.RSS_EXPANDED,"(01)12345678901231(10)TREELOGIC",true], + ["RSS_EXPANDED-3/19.png",BarcodeFormat.RSS_EXPANDED,"(10)5678(11)010101",true], + ["RSS_EXPANDED-3/20.png",BarcodeFormat.RSS_EXPANDED,"(10)5678(11)001010",true], + ["RSS_EXPANDED-3/21.png",BarcodeFormat.RSS_EXPANDED,"(10)567890(11)010101",true], + ["RSS_EXPANDED-3/22.png",BarcodeFormat.RSS_EXPANDED,"(10)567(11)010101",true], + ["RSS_EXPANDED-3/23.png",BarcodeFormat.RSS_EXPANDED,"(10)1098-1234",true], + ["RSS_EXPANDED-3/24.png",BarcodeFormat.RSS_EXPANDED,"(10)1098,1234",true], + ["RSS_EXPANDED-3/25.png",BarcodeFormat.RSS_EXPANDED,"(10)1098/1234",true], + ["RSS_EXPANDED-3/26.png",BarcodeFormat.RSS_EXPANDED,"(10)1098.1234",true], + ["RSS_EXPANDED-3/27.png",BarcodeFormat.RSS_EXPANDED,"(10)1098*1234",true], + ["RSS_EXPANDED-3/28.png",BarcodeFormat.RSS_EXPANDED,"(10)1098a1234",true], + ["RSS_EXPANDED-3/29.png",BarcodeFormat.RSS_EXPANDED,"(10)1098!1234",true], + ["RSS_EXPANDED-3/30.png",BarcodeFormat.RSS_EXPANDED,"(10)1098\"1234",true], + ["RSS_EXPANDED-3/31.png",BarcodeFormat.RSS_EXPANDED,"(10)1098%1234",true], + ["RSS_EXPANDED-3/32.png",BarcodeFormat.RSS_EXPANDED,"(10)1098&1234",true], + ["RSS_EXPANDED-3/33.png",BarcodeFormat.RSS_EXPANDED,"(10)1098'1234",true], + ["RSS_EXPANDED-3/34.png",BarcodeFormat.RSS_EXPANDED,"(10)1098+1234",true], + ["RSS_EXPANDED-3/35.png",BarcodeFormat.RSS_EXPANDED,"(10)1098:1234",true], + ["RSS_EXPANDED-3/36.png",BarcodeFormat.RSS_EXPANDED,"(10)1098;1234",true], + ["RSS_EXPANDED-3/37.png",BarcodeFormat.RSS_EXPANDED,"(10)1098<1234",true], + ["RSS_EXPANDED-3/38.png",BarcodeFormat.RSS_EXPANDED,"(10)1098=1234",true], + ["RSS_EXPANDED-3/39.png",BarcodeFormat.RSS_EXPANDED,"(10)1098>1234",true], + ["RSS_EXPANDED-3/40.png",BarcodeFormat.RSS_EXPANDED,"(10)1098?1234",true], + ["RSS_EXPANDED-3/41.png",BarcodeFormat.RSS_EXPANDED,"(10)1098_1234",true], + ["RSS_EXPANDED-3/42.png",BarcodeFormat.RSS_EXPANDED,"(10)1098 1234",true], + ["RSS_EXPANDED-3/43.png",BarcodeFormat.RSS_EXPANDED,"(10)123456A",true], + ["RSS_EXPANDED-3/44.png",BarcodeFormat.RSS_EXPANDED,"(10)123456A1234",true], + ["RSS_EXPANDED-3/45.png",BarcodeFormat.RSS_EXPANDED,"(10)123456A1234A",true], + ["RSS_EXPANDED-3/46.png",BarcodeFormat.RSS_EXPANDED,"(10)123456A123456",true], + ["RSS_EXPANDED-3/47.png",BarcodeFormat.RSS_EXPANDED,"(10)123456A12345678",true], + ["RSS_EXPANDED-3/48.png",BarcodeFormat.RSS_EXPANDED,"(10)1ABCDEF;:/1234567",true], + ["RSS_EXPANDED-3/49.png",BarcodeFormat.RSS_EXPANDED,"(10)1ABCDEF;:/ABCDEFG",true], + ["RSS_EXPANDED-3/50.png",BarcodeFormat.RSS_EXPANDED,"(10)1;:/ABCDEFGHIJKLM",true], + ["RSS_EXPANDED-3/51.png",BarcodeFormat.RSS_EXPANDED,"(10)1;:/0123456789012",true], + ["RSS_EXPANDED-3/52.png",BarcodeFormat.RSS_EXPANDED,"(10)1;:/0123",true], + ["RSS_EXPANDED-3/53.png",BarcodeFormat.RSS_EXPANDED,"(10)1;:/0123(15)991231",true], + ["RSS_EXPANDED-3/54.png",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3103)012233(15)991231",true], + ["RSS_EXPANDED-3/55.png",BarcodeFormat.RSS_EXPANDED,"(01)91234567980129(3103)012233(15)991231",true], + ["RSS_EXPANDED-3/56.png",BarcodeFormat.RSS_EXPANDED,"(01)91234567980129(3102)012233(15)991231",true], + ["RSS_EXPANDED-3/57.png",BarcodeFormat.RSS_EXPANDED,"(01)91234567980129(3102)012233(15)00011",true], + ["RSS_EXPANDED-3/58.png",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3103)001750",true], + ["RSS_EXPANDED-3/59.png",BarcodeFormat.RSS_EXPANDED,"(01)92109876543213(3103)032767",true], + ["RSS_EXPANDED-3/60.png",BarcodeFormat.RSS_EXPANDED,"(01)92109876543213(3103)000000",true], + ["RSS_EXPANDED-3/61.png",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3202)000156",true], + ["RSS_EXPANDED-3/62.png",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3202)009999",true], + ["RSS_EXPANDED-3/63.png",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3203)010000",true], + ["RSS_EXPANDED-3/64.png",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3203)032767",true], + ["RSS_EXPANDED-3/65.png",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3922)795",true], + ["RSS_EXPANDED-3/66.png",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3922)795888888888888888888888888888888888888888888888888888",true], + ["RSS_EXPANDED-3/67.png",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3932)0401234",true], + ["RSS_EXPANDED-3/68.png",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3932)040EUR",true], + ["RSS_EXPANDED-3/69.png",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3932)04055GBP",true], + ["RSS_EXPANDED-3/70.png",BarcodeFormat.RSS_EXPANDED,"(01)90012345678908(3932)04066USD778899",true], + ["RSS_EXPANDED-3/71.png",BarcodeFormat.RSS_EXPANDED,"(01)00012345678905(10)ABC123",true], + ["RSS_EXPANDED-3/72.png",BarcodeFormat.RSS_EXPANDED,"(01)12345678901231(10)UNIVERSITY-OF-DEUSTO",true], + ["RSS_EXPANDED-3/73.png",BarcodeFormat.RSS_EXPANDED,"(01)12345678901231(10)PIRAMIDE-PROJECT",true], + ["RSS_EXPANDED-3/74.png",BarcodeFormat.RSS_EXPANDED,"(01)12345678901231(10)TREELOGIC",true], + ["RSS_EXPANDED-3/75.png",BarcodeFormat.RSS_EXPANDED,"(01)98898765432106(15)991231(3103)001750(10)12A(422)123(21)123456(423)012345678901",true], + ["RSS_EXPANDED-3/76.png",BarcodeFormat.RSS_EXPANDED,"(15)991231(3103)001750(10)12A(422)123(21)123456(423)0123456789012",true], + ["RSS_EXPANDED-3/77.png",BarcodeFormat.RSS_EXPANDED,"(10)5678(11)010101",true], + ["RSS_EXPANDED-3/78.png",BarcodeFormat.RSS_EXPANDED,"(10)5678(11)001010",true], + ["RSS_EXPANDED-3/79.png",BarcodeFormat.RSS_EXPANDED,"(10)567890(11)010101",true], + ["RSS_EXPANDED-3/80.png",BarcodeFormat.RSS_EXPANDED,"(10)567(11)010101",true], + ["RSS_EXPANDED-3/81.png",BarcodeFormat.RSS_EXPANDED,"(10)1098-1234",true], + ["RSS_EXPANDED-3/82.png",BarcodeFormat.RSS_EXPANDED,"(10)1098,1234",true], + ["RSS_EXPANDED-3/83.png",BarcodeFormat.RSS_EXPANDED,"(10)1098/1234",true], + ["RSS_EXPANDED-3/84.png",BarcodeFormat.RSS_EXPANDED,"(10)1098.1234",true], + ["RSS_EXPANDED-3/85.png",BarcodeFormat.RSS_EXPANDED,"(10)1098*1234",true], + ["RSS_EXPANDED-3/86.png",BarcodeFormat.RSS_EXPANDED,"(10)1098a1234",true], + ["RSS_EXPANDED-3/87.png",BarcodeFormat.RSS_EXPANDED,"(10)1098!1234",true], + ["RSS_EXPANDED-3/88.png",BarcodeFormat.RSS_EXPANDED,"(10)1098\"1234",true], + ["RSS_EXPANDED-3/89.png",BarcodeFormat.RSS_EXPANDED,"(10)1098%1234",true], + ["RSS_EXPANDED-3/90.png",BarcodeFormat.RSS_EXPANDED,"(10)1098&1234",true], + ["RSS_EXPANDED-3/91.png",BarcodeFormat.RSS_EXPANDED,"(10)1098'1234",true], + ["RSS_EXPANDED-3/92.png",BarcodeFormat.RSS_EXPANDED,"(10)1098+1234",true], + ["RSS_EXPANDED-3/93.png",BarcodeFormat.RSS_EXPANDED,"(10)1098:1234",true], + ["RSS_EXPANDED-3/94.png",BarcodeFormat.RSS_EXPANDED,"(10)1098;1234",true], + ["RSS_EXPANDED-3/95.png",BarcodeFormat.RSS_EXPANDED,"(10)1098<1234",true], + ["RSS_EXPANDED-3/96.png",BarcodeFormat.RSS_EXPANDED,"(10)1098=1234",true], + ["RSS_EXPANDED-3/97.png",BarcodeFormat.RSS_EXPANDED,"(10)1098>1234",true], + ["RSS_EXPANDED-3/98.png",BarcodeFormat.RSS_EXPANDED,"(10)1098?1234",true], + ["RSS_EXPANDED-3/99.png",BarcodeFormat.RSS_EXPANDED,"(10)1098_1234",true], + + ["upca-1/1.jpg",BarcodeFormat.UPC_A,"036602301467",false], + ["upca-1/2.jpg",BarcodeFormat.UPC_A,"036602301467",true], + ["upca-1/3.jpg",BarcodeFormat.UPC_A,"070097025088",false], + ["upca-1/4.jpg",BarcodeFormat.UPC_A,"070097025088",false], + ["upca-1/5.jpg",BarcodeFormat.UPC_A,"070097025088",true], + ["upca-1/8.jpg",BarcodeFormat.UPC_A,"071831007995",true], + ["upca-1/9.jpg",BarcodeFormat.UPC_A,"071831007995",true], + ["upca-1/10.jpg",BarcodeFormat.UPC_A,"027011006951",true], + ["upca-1/11.jpg",BarcodeFormat.UPC_A,"027011006951",true], + ["upca-1/12.jpg",BarcodeFormat.UPC_A,"781735802045",false], + ["upca-1/13.jpg",BarcodeFormat.UPC_A,"781735802045",true], + ["upca-1/16.jpg",BarcodeFormat.UPC_A,"456314319671",true], + ["upca-1/17.jpg",BarcodeFormat.UPC_A,"434704791429",true], + ["upca-1/18.jpg",BarcodeFormat.UPC_A,"024543136538",true], + ["upca-1/19.jpg",BarcodeFormat.UPC_A,"024543136538",false], + ["upca-1/20.jpg",BarcodeFormat.UPC_A,"752919460009",false], + ["upca-1/21.jpg",BarcodeFormat.UPC_A,"752919460009",true], + ["upca-1/27.JPG",BarcodeFormat.UPC_A,"606949762520",true], + ["upca-1/28.JPG",BarcodeFormat.UPC_A,"061869053712",true], + ["upca-1/29.JPG",BarcodeFormat.UPC_A,"619659023935",true], + ["upca-1/35.jpg",BarcodeFormat.UPC_A,"045496442736",true], + ["upca-2/01.jpg",BarcodeFormat.UPC_A,"890444000335",false], //rounding error + ["upca-2/02.jpg",BarcodeFormat.UPC_A,"890444000335",true], + ["upca-2/03.jpg",BarcodeFormat.UPC_A,"890444000335",true], + ["upca-2/04.jpg",BarcodeFormat.UPC_A,"890444000335",false], + ["upca-2/05.jpg",BarcodeFormat.UPC_A,"890444000335",false], + ["upca-2/06.jpg",BarcodeFormat.UPC_A,"890444000335",false], + ["upca-2/07.jpg",BarcodeFormat.UPC_A,"890444000335",false], + ["upca-2/08.jpg",BarcodeFormat.UPC_A,"181497000879",false], + ["upca-2/09.jpg",BarcodeFormat.UPC_A,"181497000879",true], + ["upca-2/10.jpg",BarcodeFormat.UPC_A,"181497000879",false], + ["upca-2/11.jpg",BarcodeFormat.UPC_A,"181497000879",false], + ["upca-2/12.jpg",BarcodeFormat.UPC_A,"181497000879",false], + ["upca-2/13.jpg",BarcodeFormat.UPC_A,"181497000879",true], + ["upca-2/14.jpg",BarcodeFormat.UPC_A,"051000000675",true], + ["upca-2/15.jpg",BarcodeFormat.UPC_A,"051000000675",true], + ["upca-2/16.jpg",BarcodeFormat.UPC_A,"051000000675",true], + ["upca-2/17.jpg",BarcodeFormat.UPC_A,"051000000675",true], + ["upca-2/18.jpg",BarcodeFormat.UPC_A,"051000000675",true], + ["upca-2/19.jpg",BarcodeFormat.UPC_A,"051000000675",true], + ["upca-2/20.jpg",BarcodeFormat.UPC_A,"051000000675",true], + ["upca-2/21.jpg",BarcodeFormat.UPC_A,"051000000675",true], + ["upca-2/22.jpg",BarcodeFormat.UPC_A,"051000000675",true], + ["upca-2/23.jpg",BarcodeFormat.UPC_A,"752050200137",true], + ["upca-2/24.jpg",BarcodeFormat.UPC_A,"752050200137",true], + ["upca-2/25.jpg",BarcodeFormat.UPC_A,"752050200137",false], + ["upca-2/26.jpg",BarcodeFormat.UPC_A,"752050200137",true], + ["upca-2/27.jpg",BarcodeFormat.UPC_A,"752050200137",true], + ["upca-2/28.jpg",BarcodeFormat.UPC_A,"752050200137",false], + ["upca-2/29.jpg",BarcodeFormat.UPC_A,"752050200137",true], + ["upca-2/30.jpg",BarcodeFormat.UPC_A,"752050200137",true], + ["upca-2/31.jpg",BarcodeFormat.UPC_A,"899684001003",false], + ["upca-2/32.jpg",BarcodeFormat.UPC_A,"899684001003",true], + ["upca-2/33.jpg",BarcodeFormat.UPC_A,"899684001003",false], + ["upca-2/34.jpg",BarcodeFormat.UPC_A,"899684001003",false], + ["upca-2/35.jpg",BarcodeFormat.UPC_A,"899684001003",true], + ["upca-2/36.jpg",BarcodeFormat.UPC_A,"899684001003",true], + ["upca-2/37.jpg",BarcodeFormat.UPC_A,"899684001003",false], + ["upca-2/38.jpg",BarcodeFormat.UPC_A,"012546619592",false], + ["upca-2/39.jpg",BarcodeFormat.UPC_A,"012546619592",false], + ["upca-2/40.jpg",BarcodeFormat.UPC_A,"012546619592",false], + ["upca-2/41.jpg",BarcodeFormat.UPC_A,"012546619592",false], + ["upca-2/42.jpg",BarcodeFormat.UPC_A,"012546619592",false], + ["upca-2/43.jpg",BarcodeFormat.UPC_A,"012546619592",true], + ["upca-2/44.jpg",BarcodeFormat.UPC_A,"012546619592",false], + ["upca-2/45.jpg",BarcodeFormat.UPC_A,"075720003259",true], + ["upca-2/46.jpg",BarcodeFormat.UPC_A,"075720003259",false], + ["upca-2/47.jpg",BarcodeFormat.UPC_A,"075720003259",true], + ["upca-2/48.jpg",BarcodeFormat.UPC_A,"075720003259",false], + ["upca-2/49.jpg",BarcodeFormat.UPC_A,"075720003259",false], + ["upca-2/50.jpg",BarcodeFormat.UPC_A,"075720003259",false], + ["upca-2/51.jpg",BarcodeFormat.UPC_A,"075720003259",false], + ["upca-2/52.jpg",BarcodeFormat.UPC_A,"075720003259",false], + ["upca-3/01.jpg",BarcodeFormat.UPC_A,"049000042566",false], + ["upca-3/02.jpg",BarcodeFormat.UPC_A,"049000042566",false], + ["upca-3/03.jpg",BarcodeFormat.UPC_A,"049000042566",false], + ["upca-3/04.jpg",BarcodeFormat.UPC_A,"049000042566",false], + ["upca-3/05.jpg",BarcodeFormat.UPC_A,"049000042566",false], + ["upca-3/06.jpg",BarcodeFormat.UPC_A,"049000042566",false], + ["upca-3/07.jpg",BarcodeFormat.UPC_A,"049000042566",false], + ["upca-3/08.jpg",BarcodeFormat.UPC_A,"049000042566",false], + ["upca-3/09.jpg",BarcodeFormat.UPC_A,"049000042566",false], + ["upca-3/10.jpg",BarcodeFormat.UPC_A,"049000042566",false], + ["upca-3/11.jpg",BarcodeFormat.UPC_A,"854818000116",false], + ["upca-3/12.jpg",BarcodeFormat.UPC_A,"854818000116",false], + ["upca-3/13.jpg",BarcodeFormat.UPC_A,"854818000116",true], + ["upca-3/14.jpg",BarcodeFormat.UPC_A,"854818000116",false], + ["upca-3/15.jpg",BarcodeFormat.UPC_A,"854818000116",true], + ["upca-3/16.jpg",BarcodeFormat.UPC_A,"854818000116",false], + ["upca-3/17.jpg",BarcodeFormat.UPC_A,"854818000116",false], + ["upca-3/18.jpg",BarcodeFormat.UPC_A,"854818000116",true], + ["upca-3/19.jpg",BarcodeFormat.UPC_A,"854818000116",true], + ["upca-3/20.jpg",BarcodeFormat.UPC_A,"854818000116",true], + ["upca-3/21.jpg",BarcodeFormat.UPC_A,"854818000116",true], + ["upca-4/1.jpg",BarcodeFormat.UPC_A,"023942431015",false], + ["upca-4/2.jpg",BarcodeFormat.UPC_A,"023942431015",false], + ["upca-4/3.jpg",BarcodeFormat.UPC_A,"023942431015",false], + ["upca-4/4.jpg",BarcodeFormat.UPC_A,"023942431015",false], + ["upca-4/5.jpg",BarcodeFormat.UPC_A,"023942431015",false], + ["upca-4/6.jpg",BarcodeFormat.UPC_A,"023942431015",false], + ["upca-4/7.jpg",BarcodeFormat.UPC_A,"023942431015",false], + ["upca-4/8.jpg",BarcodeFormat.UPC_A,"060410049235",true], + ["upca-4/9.jpg",BarcodeFormat.UPC_A,"060410049235",false], + ["upca-4/10.jpg",BarcodeFormat.UPC_A,"066721010995",false], + ["upca-4/11.jpg",BarcodeFormat.UPC_A,"059290522143",true], + ["upca-4/12.jpg",BarcodeFormat.UPC_A,"057961000228",false], + ["upca-4/13.jpg",BarcodeFormat.UPC_A,"059290522143",false], + ["upca-4/14.jpg",BarcodeFormat.UPC_A,"066721017185",true], + ["upca-4/15.jpg",BarcodeFormat.UPC_A,"059290571110",false], + ["upca-4/16.jpg",BarcodeFormat.UPC_A,"067932000263",true], + ["upca-4/17.jpg",BarcodeFormat.UPC_A,"069000061015",true], + ["upca-4/18.jpg",BarcodeFormat.UPC_A,"071691155775",true], + ["upca-4/19.jpg",BarcodeFormat.UPC_A,"807648011401",true], + ["upca-5/01.png",BarcodeFormat.UPC_A,"312547701310",false], + ["upca-5/02.png",BarcodeFormat.UPC_A,"312547701310",false], + ["upca-5/03.png",BarcodeFormat.UPC_A,"312547701310",true], + ["upca-5/04.png",BarcodeFormat.UPC_A,"312547701310",true], + ["upca-5/05.png",BarcodeFormat.UPC_A,"312547701310",true], + ["upca-5/06.png",BarcodeFormat.UPC_A,"312547701310",false], + ["upca-5/07.png",BarcodeFormat.UPC_A,"312547701310",false], + ["upca-5/08.png",BarcodeFormat.UPC_A,"312547701310",true], + ["upca-5/09.png",BarcodeFormat.UPC_A,"312547701310",true], + ["upca-5/10.png",BarcodeFormat.UPC_A,"312547701310",true], + ["upca-5/11.png",BarcodeFormat.UPC_A,"312547701310",true], + ["upca-5/12.png",BarcodeFormat.UPC_A,"312547701310",true], + ["upca-5/13.png",BarcodeFormat.UPC_A,"312547701310",true], + ["upca-5/14.png",BarcodeFormat.UPC_A,"312547701310",true], + ["upca-5/15.png",BarcodeFormat.UPC_A,"312547701310",true], + ["upca-5/16.png",BarcodeFormat.UPC_A,"312547701310",false], + ["upca-5/17.png",BarcodeFormat.UPC_A,"312547701310",true], + ["upca-5/18.png",BarcodeFormat.UPC_A,"312547701310",true], + ["upca-5/19.png",BarcodeFormat.UPC_A,"625034201058",false], + ["upca-5/20.png",BarcodeFormat.UPC_A,"625034201058",true], + ["upca-5/21.png",BarcodeFormat.UPC_A,"625034201058",true], + ["upca-5/22.png",BarcodeFormat.UPC_A,"625034201058",true], + ["upca-5/23.png",BarcodeFormat.UPC_A,"625034201058",false], + ["upca-5/24.png",BarcodeFormat.UPC_A,"625034201058",true], + ["upca-5/25.png",BarcodeFormat.UPC_A,"625034201058",false], + ["upca-5/26.png",BarcodeFormat.UPC_A,"625034201058",false], + ["upca-5/27.png",BarcodeFormat.UPC_A,"625034201058",false], + ["upca-5/28.png",BarcodeFormat.UPC_A,"625034201058",true], + ["upca-5/29.png",BarcodeFormat.UPC_A,"625034201058",false], + ["upca-5/30.png",BarcodeFormat.UPC_A,"625034201058",true], + ["upca-5/31.png",BarcodeFormat.UPC_A,"625034201058",true], + ["upca-5/32.png",BarcodeFormat.UPC_A,"625034201058",false], + ["upca-5/33.png",BarcodeFormat.UPC_A,"625034201058",true], + ["upca-5/34.png",BarcodeFormat.UPC_A,"625034201058",true], + ["upca-5/35.png",BarcodeFormat.UPC_A,"625034201058",true], + ["upca-6/01.png",BarcodeFormat.UPC_A,"071831007995",false], + ["upca-6/02.png",BarcodeFormat.UPC_A,"071831007995",false], + ["upca-6/03.png",BarcodeFormat.UPC_A,"071831007995",false], + ["upca-6/04.png",BarcodeFormat.UPC_A,"071831007995",false], + ["upca-6/05.png",BarcodeFormat.UPC_A,"071831007995",false], + ["upca-6/06.png",BarcodeFormat.UPC_A,"071831007995",false], + ["upca-6/07.png",BarcodeFormat.UPC_A,"605482330012",false], + ["upca-6/08.png",BarcodeFormat.UPC_A,"605482330012",false], + ["upca-6/09.png",BarcodeFormat.UPC_A,"605482330012",false], + ["upca-6/10.png",BarcodeFormat.UPC_A,"605482330012",false], + ["upca-6/11.png",BarcodeFormat.UPC_A,"605482330012",false], + ["upca-6/12.png",BarcodeFormat.UPC_A,"605482330012",false], + ["upca-6/13.png",BarcodeFormat.UPC_A,"073333531084",false], + ["upca-6/14.png",BarcodeFormat.UPC_A,"073333531084",false], + ["upca-6/15.png",BarcodeFormat.UPC_A,"073333531084",false], + ["upca-6/16.png",BarcodeFormat.UPC_A,"073333531084",false], + ["upca-6/17.png",BarcodeFormat.UPC_A,"073333531084",false], + ["upca-6/18.png",BarcodeFormat.UPC_A,"073333531084",false], + ["upca-6/19.png",BarcodeFormat.UPC_A,"073333531084",false], + ["upce-1/1.gif",BarcodeFormat.UPC_E,"01234565",true], + ["upce-1/2.gif",BarcodeFormat.UPC_E,"00123457",true], + ["upce-1/4.jpg",BarcodeFormat.UPC_E,"01234531",true], + ["upce-2/01.jpg",BarcodeFormat.UPC_E,"05096893",true], + ["upce-2/02.jpg",BarcodeFormat.UPC_E,"05096893",false], + ["upce-2/03.jpg",BarcodeFormat.UPC_E,"05096893",true], + ["upce-2/04.jpg",BarcodeFormat.UPC_E,"05096893",true], + ["upce-2/05.jpg",BarcodeFormat.UPC_E,"05096893",true], + ["upce-2/06.jpg",BarcodeFormat.UPC_E,"05096893",true], + ["upce-2/07.jpg",BarcodeFormat.UPC_E,"05096893",true], + ["upce-2/08.jpg",BarcodeFormat.UPC_E,"04963406",true], + ["upce-2/09.jpg",BarcodeFormat.UPC_E,"04963406",true], + ["upce-2/10.jpg",BarcodeFormat.UPC_E,"04963406",true], + ["upce-2/11.jpg",BarcodeFormat.UPC_E,"04963406",true], + ["upce-2/12.jpg",BarcodeFormat.UPC_E,"04963406",true], + ["upce-2/13.jpg",BarcodeFormat.UPC_E,"04963406",true], + ["upce-2/14.jpg",BarcodeFormat.UPC_E,"04963406",true], + ["upce-2/15.jpg",BarcodeFormat.UPC_E,"04963406",true], + ["upce-2/16.jpg",BarcodeFormat.UPC_E,"04124498",true], + ["upce-2/17.jpg",BarcodeFormat.UPC_E,"04124498",true], + ["upce-2/18.jpg",BarcodeFormat.UPC_E,"04124498",true], + ["upce-2/19.jpg",BarcodeFormat.UPC_E,"04124498",true], + ["upce-2/20.jpg",BarcodeFormat.UPC_E,"04124498",false], + ["upce-2/21.jpg",BarcodeFormat.UPC_E,"04124498",true], + ["upce-2/22.jpg",BarcodeFormat.UPC_E,"04124498",true], + ["upce-2/23.jpg",BarcodeFormat.UPC_E,"04124498",true], + ["upce-2/24.jpg",BarcodeFormat.UPC_E,"04124498",true], + ["upce-2/25.jpg",BarcodeFormat.UPC_E,"04124498",true], + ["upce-2/26.jpg",BarcodeFormat.UPC_E,"04124498",false], + ["upce-2/27.jpg",BarcodeFormat.UPC_E,"04124498",true], + ["upce-2/28.jpg",BarcodeFormat.UPC_E,"04124498",true], + ["upce-2/29.jpg",BarcodeFormat.UPC_E,"04124498",true], + ["upce-2/30.jpg",BarcodeFormat.UPC_E,"01264904",true], + ["upce-2/31.jpg",BarcodeFormat.UPC_E,"01264904",true], + ["upce-2/32.jpg",BarcodeFormat.UPC_E,"01264904",true], + ["upce-2/33.jpg",BarcodeFormat.UPC_E,"01264904",true], + ["upce-2/34.jpg",BarcodeFormat.UPC_E,"01264904",true], + ["upce-2/35.jpg",BarcodeFormat.UPC_E,"01264904",false], + ["upce-2/36.jpg",BarcodeFormat.UPC_E,"01264904",true], + ["upce-2/37.jpg",BarcodeFormat.UPC_E,"01264904",true], + ["upce-2/38.jpg",BarcodeFormat.UPC_E,"01264904",false], + ["upce-2/39.jpg",BarcodeFormat.UPC_E,"01264904",true], + ["upce-2/40.jpg",BarcodeFormat.UPC_E,"01264904",true], + ["upce-2/41.jpg",BarcodeFormat.UPC_E,"01264904",false], + ["upce-3/01.jpg",BarcodeFormat.UPC_E,"04965802",false], + ["upce-3/02.jpg",BarcodeFormat.UPC_E,"04965802",false], + ["upce-3/03.jpg",BarcodeFormat.UPC_E,"04965802",true], + ["upce-3/04.jpg",BarcodeFormat.UPC_E,"04965802",false], + ["upce-3/05.jpg",BarcodeFormat.UPC_E,"04965802",false], + ["upce-3/06.jpg",BarcodeFormat.UPC_E,"04965802",false], + ["upce-3/07.jpg",BarcodeFormat.UPC_E,"04965802",true], + ["upce-3/08.jpg",BarcodeFormat.UPC_E,"04965802",false], + ["upce-3/09.jpg",BarcodeFormat.UPC_E,"04965802",true], + ["upce-3/10.jpg",BarcodeFormat.UPC_E,"04965802",false], + ["upce-3/11.jpg",BarcodeFormat.UPC_E,"04965802",false] + ]; + + public var testFilesCreate:Array; + + + public function getNext(filter:HashTable=null, useCreate:Boolean = false):Array + { + var index:int = this.currentTestItem; + var ta:Array; + if (useCreate == false) { ta = this.testFiles; } else { ta = this.testFilesCreate; } + var maxitems:int = ta.length; + while (index < maxitems) + { + var alloweditem:Boolean = true; + if ((filter != null) && (filter.getSize() > 0)) + { + // apply filter + alloweditem = false; + for(var i:int=0;iA simple, fast array of bits, represented compactly by an array of ints internally.

+ * + * @author Sean Owen + */ + public class BitArray + { + import com.google.zxing.common.flexdatatypes.StringBuilder; + import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + + // TODO: I have changed these members to be public so ProGuard can inline get() and set(). Ideally + // they'd be private and we'd use the -allowaccessmodification flag, but Dalvik rejects the + // resulting binary at runtime on Android. If we find a solution to this, these should be changed + // back to private. + public var bits:Array; + public var Size:int; + + public function BitArray(size:int) { + if (size < 1) { + throw new IllegalArgumentException("common : BitArray : size must be at least 1"); + } + this.Size = size; + this.bits = makeArray(size); + } + + public function getSize():int { + return Size; + } + + public function getSizeInBytes():int + { + return (this.Size + 7) >> 3; + } + + + private function ensureCapacity(size:int):void + { + if (size > bits.length << 5) + { + var newArray:Array = new Array(size); + if (bits != null) + { + //System.Array.Copy(bytes, 0, newArray, 0, bytes.length); + for (var i:int=0;i> 5] & (1 << (i & 0x1F))) != 0; + } + + /** + * Sets bit i. + * + * @param i bit to set + */ + public function _set(i:int):void { + bits[i >> 5] |= 1 << (i & 0x1F); + } + + /** + * Flips bit i. + * + * @param i bit to set + */ + public function flip(i:int):void { + bits[i >> 5] ^= 1 << (i & 0x1F); + } + /** + * Sets a block of 32 bits, starting at bit i. + * + * @param i first bit to set + * @param newBits the new value of the next 32 bits. Note again that the least-significant bit + * corresponds to bit i, the next-least-significant to i+1, and so on. + */ + public function setBulk(i:int, newBits:int):void { + bits[i >> 5] = newBits; + } + + /** + * Clears all bits (sets to false). + */ + public function clear():void { + var max:int = bits.length; + for (var i:int = 0; i < max; i++) { + bits[i] = 0; + } + } + + /** + * Efficient method to check if a range of bits is set, or not set. + * + * @param start start of range, inclusive. + * @param end end of range, exclusive + * @param value if true, checks that bits in range are set, otherwise checks that they are not set + * @return true iff all bits are set or not set in range, according to value argument + * @throws IllegalArgumentException if end is less than or equal to start + */ + public function isRange(start:int, end:int, value:Boolean):Boolean { + if (end < start) { + throw new IllegalArgumentException("common : BitArray isRange : end before start"); + } + if (end == start) { + return true; // empty range matches + } + end--; // will be easier to treat this as the last actually set bit -- inclusive + var firstInt:int = start >> 5; + var lastInt:int = end >> 5; + for (var i:int = firstInt; i <= lastInt; i++) { + var firstBit:int = i > firstInt ? 0 : start & 0x1F; + var lastBit:int = i < lastInt ? 31 : end & 0x1F; + var mask:int; + if (firstBit == 0 && lastBit == 31) { + mask = -1; + } else { + mask = 0; + for (var j:int = firstBit; j <= lastBit; j++) { + mask |= 1 << j; + } + } + + // Return false if we're looking for 1s and the masked bits[i] isn't all 1s (that is, + // equals the mask, or we're looking for 0s and the masked portion is not all 0s + if ((bits[i] & mask) != (value ? mask : 0)) { + return false; + } + } + return true; + } + + + /** + * @return underlying array of ints. The first element holds the first 32 bits, and the least + * significant bit is bit 0. + */ + public function getBitArray():Array { + return bits; + } + + private function setBitArray(a:Array):void { + bits = a; + } + public function setSize(siz:int):void { + Size = siz; + } + + /** + * Reverses all bits in the array. + */ + public function reverse():void { + var newBits:Array = makeArray(Size); + var max:int = Size; + for (var i:int = 0; i < max; i++) { newBits[i] = 0; }//Flex : makew + var size:int = this.Size; + for (var ii:int = 0; ii < size; ii++) { + if (this._get(size - ii - 1)) { + newBits[ii >> 5] |= 1 << (ii & 0x1F); + } + } + bits = newBits; + } + + private static function makeArray(size:int):Array { + var arraySize:int = size >> 5; + if ((size & 0x1F) != 0) { + arraySize++; + } + return new Array(arraySize); + } + + public function toString():String + { + var result:StringBuilder = new StringBuilder(this.Size); + for (var i:int = 0; i < this.Size; i++) + { + if ((i & 0x07) == 0) + { + result.Append(' '); + } + result.Append(_get(i) ? 'X' : '.'); + } + return result.ToString(); + } + + public function appendBit(bit:Boolean):void + { + this.ensureCapacity(this.Size + 1); + if (bit) + { + this.bits[this.Size >> 5] |= (1 << (this.Size & 0x1F)); + } + this.Size++; + } + + /** + * Appends the least-significant bits, from value, in order from most-significant to + * least-significant. For example, appending 6 bits from 0x000001E will append the bits + * 0, 1, 1, 1, 1, 0 in that order. + */ + public function appendBits(value:int, numBits:int):void { + if (numBits < 0 || numBits > 32) { + throw new IllegalArgumentException("Num bits must be between 0 and 32"); + } + this.ensureCapacity(this.Size + numBits); + for (var numBitsLeft:int = numBits; numBitsLeft > 0; numBitsLeft--) { + appendBit(((value >> (numBitsLeft - 1)) & 0x01) == 1); + } + } + + public function appendBitArray(other:BitArray):void { + var otherSize:int = other.getSize(); + this.ensureCapacity(this.Size + otherSize); + for (var i:int = 0; i < otherSize; i++) { + appendBit(other._get(i)); + } + } + + public function xor(other:BitArray):void { + if (bits.length != other.bits.length) { + throw new IllegalArgumentException("Sizes don't match"); + } + for (var i:int = 0; i < bits.length; i++) { + // The last byte could be incomplete (i.e. not have 8 bits in + // it) but there is no problem since 0 XOR 0 == 0. + bits[i] ^= other.bits[i]; + } + } + /* + private static function makeArray(size:int):Array { + return new Array((size + 31) >> 5); + } + * +/* + public function toString():String { + var result:StringBuffer = new StringBuffer(size); + for (var i:int = 0; i < size; i++) { + if ((i & 0x07) == 0) { + result.append(' '); + } + result.append(get(i) ? 'X' : '.'); + } + return result.toString(); + } + */ + /** + * + * @param bitOffset first bit to start writing + * @param array array to write into. Bytes are written most-significant byte first. This is the opposite + * of the internal representation, which is exposed by {@link #getBitArray()} + * @param offset position in array to start writing + * @param numBytes how many bytes to write + */ + public function toBytes(bitOffset:int, array:Array, offset:int, numBytes:int):void + { + for (var i:int = 0; i < numBytes; i++) { + var theByte:int = 0; + for (var j:int = 0; j < 8; j++) { + if (_get(bitOffset)) { + theByte |= 1 << (7 - j); + } + bitOffset++; + } + array[offset + i] = theByte; + } + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/common/BitMatrix.as b/FairyGUI-as3/src/com/google/zxing/common/BitMatrix.as new file mode 100644 index 0000000..6d82a79 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/common/BitMatrix.as @@ -0,0 +1,387 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing.common +{ + + /** + *

Represents a 2D matrix of bits. In function arguments below, and throughout the common + * module, x is the column position, and y is the row position. The ordering is always x, y. + * The origin is at the top-left.

+ * + *

Internally the bits are represented in a 1-D array of 32-bit ints. However, each row begins + * with a new int. This is done intentionally so that we can copy out a row into a BitArray very + * efficiently.

+ * + *

The ordering of bits is row-major. Within each int, the least significant bits are used first, + * meaning they represent lower x values. This is compatible with BitArray's implementation.

+ * + * @author Sean Owen + * @author dswitkin@google.com (Daniel Switkin) + */ + public class BitMatrix + { + import com.google.zxing.common.flexdatatypes.StringBuilder; + import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + + public var width:int; + public var height:int; + public var rowSize:int; + public var bits:Array; + + public function BitMatrix(width:int, o:Object = null) + { + var height:int; + if (o == null) + { + height = width; + } + else if (o is int) + { + height = (o as int); + } + + if (width < 1 || height < 1) + { + throw new IllegalArgumentException("common : BitMatrix : Both dimensions must be greater than 0"); + } + this.width = width; + this.height = height; + this.rowSize = (width + 31) >> 5; + bits = new Array(rowSize * height); + // initialize the array + for (var i:int = 0; i < bits.length; i++) + { + bits[i] = 0; + } + + } + + /** + *

Gets the requested bit, where true means black.

+ * + * @param x The horizontal component (i.e. which column) + * @param y The vertical component (i.e. which row) + * @return value of given bit in matrix + */ + public function _get(x:int, y:int):Boolean + { + var offset:int = y * rowSize + (x >> 5); + return ((bits[offset] >>> (x & 0x1f)) & 1) != 0; + } + + /** + *

Sets the given bit to true.

+ * + * @param x The horizontal component (i.e. which column) + * @param y The vertical component (i.e. which row) + */ + public function _set(x:int, y:int):void + { + var offset:int = y * rowSize + (x >> 5); + bits[offset] |= 1 << (x & 0x1f); + } + + /** + *

Flips the given bit.

+ * + * @param x The horizontal component (i.e. which column) + * @param y The vertical component (i.e. which row) + */ + public function flip(x:int, y:int):void + { + var offset:int = y * rowSize + (x >> 5); + bits[offset] ^= 1 << (x & 0x1f); + } + + /** + * Clears all bits (sets to false). + */ + public function clear():void + { + var max:int = bits.length; + for (var i:int = 0; i < max; i++) + { + bits[i] = 0; + } + } + + /** + *

Sets a square region of the bit matrix to true.

+ * + * @param left The horizontal position to begin at (inclusive) + * @param top The vertical position to begin at (inclusive) + * @param width The width of the region + * @param height The height of the region + */ + public function setRegion(left:int, top:int, width:int, height:int):void + { + if (top < 0 || left < 0) + { + throw new IllegalArgumentException("Common : BitMatrix : setRegion : Left and top must be nonnegative"); + } + if (height < 1 || width < 1) + { + throw new IllegalArgumentException("Common : BitMatrix : setRegion : Height and width must be at least 1"); + } + var right:int = left + width; + var bottom:int = top + height; + if (bottom > this.height || right > this.width) + { + throw new IllegalArgumentException("Common : BitMatrix : setRegion : The region must fit inside the matrix"); + } + for (var y:int = top; y < bottom; y++) + { + var offset:int = y * rowSize; + for (var x:int = left; x < right; x++) + { + bits[offset + (x >> 5)] |= 1 << (x & 0x1f); + } + } + } + + /** + * A fast method to retrieve one row of data from the matrix as a BitArray. + * + * @param y The row to retrieve + * @param row An optional caller-allocated BitArray, will be allocated if null or too small + * @return The resulting BitArray - this reference should always be used even when passing + * your own row + */ + public function getRow(y:int, row:BitArray):BitArray + { + if (row == null || row.getSize() < width) + { + row = new BitArray(width); + } + var offset:int = y * rowSize; + for (var x:int = 0; x < rowSize; x++) + { + row.setBulk(x << 5, bits[offset + x]); + } + return row; + } + + public function getTopLeftOnBit():Array + { + var bitsOffset:int = 0; + while (bitsOffset < bits.length && bits[bitsOffset] == 0) + { + bitsOffset++; + } + if (bitsOffset == bits.length) + { + return null; + } + var y:int = bitsOffset / rowSize; + var x:int = (bitsOffset % rowSize) << 5; + + var theBits:int = bits[bitsOffset]; + var bit:int = 0; + while ((theBits << (31 - bit)) == 0) + { + bit++; + } + x += bit; + return [x, y]; + } + + /** + * @return The width of the matrix + */ + public function getWidth():int + { + return width; + } + + public function getBottomRightOnBit():Array + { + var bitsOffset:int = bits.length - 1; + while (bitsOffset >= 0 && bits[bitsOffset] == 0) + { + bitsOffset--; + } + if (bitsOffset < 0) + { + return null; + } + + var y:int = bitsOffset / rowSize; + var x:int = (bitsOffset % rowSize) << 5; + + var theBits:int = bits[bitsOffset]; + var bit:int = 31; + while ((theBits >>> bit) == 0) + { + bit--; + } + x += bit; + + return [x, y]; + } + + /** + * @return The height of the matrix + */ + public function getHeight():int + { + return height; + } + + public function equals(o:Object):Boolean + { + if (!(o is BitMatrix)) + { + return false; + } + var other:BitMatrix = BitMatrix(o); + if (width != other.width || height != other.height || rowSize != other.rowSize || bits.length != other.bits.length) + { + return false; + } + for (var i:int = 0; i < bits.length; i++) + { + if (bits[i] != other.bits[i]) + { + return false; + } + } + return true; + } + + public function hashCode():int + { + var hash:int = width; + hash = 31 * hash + width; + hash = 31 * hash + height; + hash = 31 * hash + rowSize; + for (var i:int = 0; i < bits.length; i++) + { + hash = 31 * hash + bits[i]; + } + return hash; + } + + /** + * This is useful in detecting the enclosing rectangle of a 'pure' barcode. + * + * @return {left,top,width,height} enclosing rectangle of all 1 bits, or null if it is all white + */ + public function getEnclosingRectangle():Array + { + var left:int = this.width; + var top:int = this.height; + var right:int = -1; + var bottom:int = -1; + var bit:int; + + for (var y:int = 0; y < this.height; y++) + { + for (var x32:int = 0; x32 < rowSize; x32++) + { + var theBits:int = bits[y * rowSize + x32]; + if (theBits != 0) + { + if (y < top) + { + top = y; + } + if (y > bottom) + { + bottom = y; + } + if (x32 * 32 < left) + { + bit = 0; + while ((theBits << (31 - bit)) == 0) + { + bit++; + } + if ((x32 * 32 + bit) < left) + { + left = x32 * 32 + bit; + } + } + if (x32 * 32 + 31 > right) + { + bit = 31; + while ((theBits >>> bit) == 0) + { + bit--; + } + if ((x32 * 32 + bit) > right) + { + right = x32 * 32 + bit; + } + } + } + } + } + + var width:int = right - left; + var height:int = bottom - top; + + if (width < 0 || height < 0) + { + return null; + } + + return [left, top, width, height]; + } + + public function toString():String + { + var result:StringBuilder = new StringBuilder(height * (width + 1)); + for (var y:int = 0; y < height; y++) + { + for (var x:int = 0; x < width; x++) + { + result.Append(_get(x, y) ? "X " : " "); + } + result.Append('\n'); + } + return result.toString(); + } + + public function toString2():String + { + var totalbits:int = 0; + var result:StringBuilder = new StringBuilder(height * (width + 1)); + for (var y:int = 0; y < height; y++) + { + for (var x:int = 0; x < width; x++) + { + result.Append(_get(x, y) ? "1" : "0"); + if (_get(x, y)) + { + totalbits++; + } + } + } + result.Append("\nsize:" + (this.width * this.height)); + result.Append("\ntotalbits:" + totalbits); + return result.toString(); + } + + public function fromByteArray(width:int, height:int, arr:Array):void + { + this.bits = arr; + this.width = width; + this.height = height; + this.rowSize = (width + 31) >> 5; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/common/BitSource.as b/FairyGUI-as3/src/com/google/zxing/common/BitSource.as new file mode 100644 index 0000000..a6d2816 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/common/BitSource.as @@ -0,0 +1,122 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.common +{ + + /// A class which wraps a 2D array of bytes. The default usage is signed. If you want to use it as a + /// unsigned container, it's up to you to do byteValue & 0xff at each location. + /// * + /// JAVAPORT: I'm not happy about the argument ordering throughout the file, as I always like to have + /// the horizontal component first, but this is for compatibility with the C++ code. The original + /// code was a 2D array of ints, but since it only ever gets assigned -1, 0, and 1, I'm going to use + /// less memory and go with bytes. + /// * + /// + /// dswitkin@google.com (Daniel Switkin) + /// + /// + public class BitSource + { + + import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + + private var bytes:Array; + private var byteOffset:int; + private var bitOffset:int; + + /** + * @param bytes bytes from which this will read bits. Bits will be read from the first byte first. + * Bits are read within a byte from most-significant to least-significant bit. + */ + public function BitSource(bytes:Array) + { + this.bytes = bytes; + } + + /** + * @return index of next byte in input byte array which would be read by the next call to {@link #readBits(int)}. + */ + public function getByteOffset():int + { + return byteOffset; + } + + /** + * @param numBits number of bits to read + * @return int representing the bits read. The bits will appear as the least-significant + * bits of the int + * @throws IllegalArgumentException if numBits isn't in [1,32] + */ + public function readBits(numBits:int):int + { + if (numBits < 1 || numBits > 32) + { + throw new IllegalArgumentException("BitSource : numBits out of range"); + } + + var result:int = 0; + + // First, read remainder from current byte + if (bitOffset > 0) + { + var bitsLeft:int = 8 - bitOffset; + var toRead:int = numBits < bitsLeft ? numBits : bitsLeft; + var bitsToNotRead:int = bitsLeft - toRead; + var mask:int = (0xFF >> (8 - toRead)) << bitsToNotRead; + result = (bytes[byteOffset] & mask) >> bitsToNotRead; + numBits -= toRead; + bitOffset += toRead; + if (bitOffset == 8) + { + bitOffset = 0; + byteOffset++; + } + } + + // Next read whole bytes + if (numBits > 0) + { + while (numBits >= 8) + { + result = (result << 8) | (bytes[byteOffset] & 0xFF); + byteOffset++; + numBits -= 8; + } + + // Finally read a partial byte + if (numBits > 0) + { + var bitsToNotRead2:int = 8 - numBits; + var mask2:int = (0xFF >> bitsToNotRead2) << bitsToNotRead2; + result = (result << numBits) | ((bytes[byteOffset] & mask2) >> bitsToNotRead2); + bitOffset += numBits; + } + } + + return result; + } + + /** + * @return number of bits that can be read successfully + */ + public function available():int + { + var bits:int = 8 * (bytes.length - byteOffset) - bitOffset; + return bits; + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/common/ByteMatrix.as b/FairyGUI-as3/src/com/google/zxing/common/ByteMatrix.as new file mode 100644 index 0000000..8e7c748 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/common/ByteMatrix.as @@ -0,0 +1,156 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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 com.google.zxing.common +{ +/** + * A class which wraps a 2D array of bytes. The default usage is signed. If you want to use it as a + * unsigned container, it's up to you to do byteValue & 0xff at each location. + * + * JAVAPORT: The original code was a 2D array of ints, but since it only ever gets assigned + * -1, 0, and 1, I'm going to use less memory and go with bytes. + * + * @author dswitkin@google.com (Daniel Switkin) + */ + public class ByteMatrix + { + import com.google.zxing.common.flexdatatypes.StringBuilder; + private var bytes:Array; + private var Height:int; + private var Width:int; + + + public function ByteMatrix(height:int, width:int ) { + bytes = new Array(height); + for (var i:int = 0; i < height; i++) { + bytes[i] = new Array(width); + } + this.Height = height; + this.Width = width; + } + + public function height():int + { + return Height; + } + + public function width():int + { + return Width; + } + + public function _get(x:int, y:int):int + { + return bytes[y][x]; + } + + public function getArray():Array + { + return bytes; + } + + //public function _set(y:int,x:int, value:int) + //{ + // bytes[y][x] = value; + //} + + public function _set(x:int, y:int, value:Object ):void + { + if (value is int) + { + bytes[y][x] = value as int; + } + else + { + throw new Error('ByteMatrix : _set : unknown type of value'); + } + + } + + public function clear(value:int):void + { + for (var y:int = 0; y < Height; ++y) + { + for (var x:int = 0; x < Width; ++x) + { + bytes[y][x] = value; + } + } + } + + public function sum():int + { + var result:int = 0; + for (var y:int = 0; y < Height; ++y) + { + for (var x:int = 0; x < Width; ++x) + { + result += bytes[y][x]; + } + } + return result; + } + + public function toString():String + { + var result:StringBuilder = new StringBuilder(); + for (var y:int = 0; y < Height; ++y) + { + for (var x:int = 0; x < Width; ++x) + { + switch (bytes[y][x]) + { + case 0: + result.Append("0"); + break; + case 1: + result.Append("1"); + break; + default: + result.Append("."); + break; + } + } + result.Append('\n'); + } + return result.ToString(); + } + + public function toString2():String + { + var result:StringBuilder = new StringBuilder(); + for (var y:int = 0; y < Height; ++y) + { + for (var x:int = 0; x < Width; ++x) + { + switch (bytes[y][x]) + { + case 0: + result.Append("0"); + break; + case 1: + result.Append("1"); + break; + default: + result.Append("_"); + break; + } + } + } + return result.ToString(); + } + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/common/CharacterSetECI.as b/FairyGUI-as3/src/com/google/zxing/common/CharacterSetECI.as new file mode 100644 index 0000000..af01fb1 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/common/CharacterSetECI.as @@ -0,0 +1,115 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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 com.google.zxing.common +{ + /** + * Encapsulates a Character Set ECI, according to "Extended Channel Interpretations" 5.3.1.1 + * of ISO 18004. + * + * @author Sean Owen + */ + public class CharacterSetECI extends ECI + { + import com.google.zxing.common.flexdatatypes.HashTable; + import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + + private static var VALUE_TO_ECI:HashTable; + private static var NAME_TO_ECI:HashTable; + + private static function initialize():void { + VALUE_TO_ECI = new HashTable(29); + NAME_TO_ECI = new HashTable(29); + // TODO figure out if these values are even right! + addCharacterSet(0, "Cp437"); + addCharacterSet(1, ["ISO8859_1", "ISO-8859-1"]); + addCharacterSet(2, "Cp437"); + addCharacterSet(3, ["ISO8859_1", "ISO-8859-1"]); + addCharacterSet(4, "ISO8859_2"); + addCharacterSet(5, "ISO8859_3"); + addCharacterSet(6, "ISO8859_4"); + addCharacterSet(7, "ISO8859_5"); + addCharacterSet(8, "ISO8859_6"); + addCharacterSet(9, "ISO8859_7"); + addCharacterSet(10, "ISO8859_8"); + addCharacterSet(11, "ISO8859_9"); + addCharacterSet(12, "ISO8859_10"); + addCharacterSet(13, "ISO8859_11"); + addCharacterSet(15, "ISO8859_13"); + addCharacterSet(16, "ISO8859_14"); + addCharacterSet(17, "ISO8859_15"); + addCharacterSet(18, "ISO8859_16"); + addCharacterSet(20, ["SJIS", "Shift_JIS"]); + } + + private var encodingName:String; + + public function CharacterSetECI(value:int, encodingName:String) { + super(value); + this.encodingName = encodingName; + } + + public function getEncodingName():String { + return encodingName; + } + + private static function addCharacterSet(value:int, encodingNames:Object):void + { + var eci:CharacterSetECI; + if (encodingNames is String) + { + eci = new CharacterSetECI(value, encodingNames as String); + VALUE_TO_ECI._put(value, eci); + NAME_TO_ECI._put(encodingNames as String, eci); + } + else if (encodingNames is Array) + { + eci = new CharacterSetECI(value, encodingNames[0]); + VALUE_TO_ECI._put(value, eci); + for (var i:int = 0; i < encodingNames.length; i++) { NAME_TO_ECI._put(encodingNames[i], eci);} + } + } + + /** + * @param value character set ECI value + * @return {@link CharacterSetECI} representing ECI of given value, or null if it is legal but + * unsupported + * @throws IllegalArgumentException if ECI value is invalid + */ + public static function getCharacterSetECIByValue(value:int):CharacterSetECI { + if (VALUE_TO_ECI == null) + { + initialize(); + } + if (value < 0 || value >= 900) { + throw new IllegalArgumentException("COMMON : CharacterSetECI : getCharacterSetECIByValue : Bad ECI value: " + value); + } + return VALUE_TO_ECI.getValueByKey(value) as CharacterSetECI; + } + + /** + * @param name character set ECI encoding name + * @return {@link CharacterSetECI} representing ECI for character encoding, or null if it is legal + * but unsupported + */ + public static function getCharacterSetECIByName(name:String ):CharacterSetECI { + if (NAME_TO_ECI == null) { + initialize(); + } + return (NAME_TO_ECI.getValueByKey(name) as CharacterSetECI); + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/common/Collections.as b/FairyGUI-as3/src/com/google/zxing/common/Collections.as new file mode 100644 index 0000000..0f08598 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/common/Collections.as @@ -0,0 +1,59 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing.common +{ +/** + *

This is basically a substitute for java.util.Collections, which is not + * present in MIDP 2.0 / CLDC 1.1.

+ * + * @author Sean Owen + */ + public class Collections + { + + import com.google.zxing.common.flexdatatypes.ArrayList; + + public function Collections() + { + } + + /** + * Sorts its argument (destructively) using insert sort; in the context of this package + * insertion sort is simple and efficient given its relatively small inputs. + * + * @param vector vector to sort + * @param comparator comparator to define sort ordering + */ + public static function insertionSort( vector:ArrayList, comparator:Comparator ):void + { + var max:int = vector.Count; + for (var i:int = 1; i < max; i++) + { + var valueA:Object = vector[i]; + var j:int = i - 1; + var valueB:Object; + while (j >= 0 && comparator.compare((valueB = vector[j]), valueA) > 0) + { + vector[j + 1] = valueB; + j--; + } + vector[j + 1] = valueA; + } + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/common/Comparator.as b/FairyGUI-as3/src/com/google/zxing/common/Comparator.as new file mode 100644 index 0000000..9071d3f --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/common/Comparator.as @@ -0,0 +1,29 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing.common +{ +/** + * This is merely a clone of Comparator since it is not available in + * CLDC 1.1 / MIDP 2.0. + */ + public interface Comparator + { + + function compare(o1:Object, o2:Object):int; + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/common/DecoderResult.as b/FairyGUI-as3/src/com/google/zxing/common/DecoderResult.as new file mode 100644 index 0000000..5a7d941 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/common/DecoderResult.as @@ -0,0 +1,67 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing.common +{ + import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + import com.google.zxing.common.flexdatatypes.ArrayList; + + +/** + *

Encapsulates the result of decoding a matrix of bits. This typically + * applies to 2D barcode formats. For now it contains the raw bytes obtained, + * as well as a String interpretation of those bytes, if applicable.

+ * + * @author Sean Owen + */ public class DecoderResult + { + + private var rawBytes:Array; + private var text:String ; + private var byteSegments:ArrayList; + private var ecLevel:String; + + public function DecoderResult(rawBytes:Array, text:String, byteSegments:ArrayList, ecLevel:String) + { + if (rawBytes == null && text == null) + { + throw new IllegalArgumentException("common : DecoderResult : Constructor : rawBytes array contains no data and text == null"); + } + this.rawBytes = rawBytes; + this.text = text; + this.byteSegments = byteSegments; + this.ecLevel = ecLevel + } + + public function getRawBytes():Array { + return this.rawBytes; + } + + public function getText():String { + return text; + } + + public function getByteSegments():ArrayList + { + return byteSegments; + } + + public function getECLevel():String + { + return ecLevel; + } + } + } \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/common/DefaultGridSampler.as b/FairyGUI-as3/src/com/google/zxing/common/DefaultGridSampler.as new file mode 100644 index 0000000..ffb2a3e --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/common/DefaultGridSampler.as @@ -0,0 +1,90 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing.common +{ + +import com.google.zxing.NotFoundException; + +/** + * @author Sean Owen + */ +public class DefaultGridSampler extends GridSampler +{ + + + + override public function sampleGrid2(image:BitMatrix, + dimensionX:int, + dimensionY:int, + p1ToX:Number, + p1ToY:Number, + p2ToX:Number, p2ToY:Number, + p3ToX:Number, p3ToY:Number, + p4ToX:Number, p4ToY:Number, + p1FromX:Number, p1FromY:Number, + p2FromX:Number, p2FromY:Number, + p3FromX:Number, p3FromY:Number, + p4FromX:Number, p4FromY:Number):BitMatrix + { + var transform:PerspectiveTransform = PerspectiveTransform.quadrilateralToQuadrilateral( + p1ToX, p1ToY, p2ToX, p2ToY, p3ToX, p3ToY, p4ToX, p4ToY, + p1FromX, p1FromY, p2FromX, p2FromY, p3FromX, p3FromY, p4FromX, p4FromY); + return sampleGrid(image, dimensionX, dimensionY, transform); + } + + public override function sampleGrid(image:BitMatrix , + dimensionX:int, + dimensionY:int, + transform:PerspectiveTransform):BitMatrix { + if (dimensionX <= 0 || dimensionY <= 0) { + throw NotFoundException.getNotFoundInstance(); + } + var bits:BitMatrix = new BitMatrix(dimensionX, dimensionY); + var points:Array = new Array(dimensionX << 1); + for (var y:int = 0; y < dimensionY; y++) { + var max:int = points.length; + var iValue:Number = Number(y + 0.5); + for (var x:int = 0; x < max; x += 2) { + points[x] = Number(int(x >> 1) + 0.5); + points[x + 1] = iValue; + } + transform.transformPoints(points); + // Quick check to see if points transformed to something inside the image; + // sufficient to check the endpoints + checkAndNudgePoints(image, points); + try { + for (x = 0; x < max; x += 2) { + if (image._get(int(points[x]), int( points[x + 1]))) { + // Black(-ish) pixel + bits._set(x >> 1, y); + } + } + } catch (aioobe:Error) { + // This feels wrong, but, sometimes if the finder patterns are misidentified, the resulting + // transform gets "twisted" such that it maps a straight line of points to a set of points + // whose endpoints are in bounds, but others are not. There is probably some mathematical + // way to detect this about the transformation that I don't know yet. + // This results in an ugly runtime exception despite our clever checks above -- can't have + // that. We could check each point's coordinates but that feels duplicative. We settle for + // catching and wrapping ArrayIndexOutOfBoundsException. + throw NotFoundException.getNotFoundInstance(); + } + } + return bits; + } +} +} diff --git a/FairyGUI-as3/src/com/google/zxing/common/DetectorResult.as b/FairyGUI-as3/src/com/google/zxing/common/DetectorResult.as new file mode 100644 index 0000000..dee671a --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/common/DetectorResult.as @@ -0,0 +1,48 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing.common +{ + import com.google.zxing.ResultPoint; + +/** + *

Encapsulates the result of detecting a barcode in an image. This includes the raw + * matrix of black/white pixels corresponding to the barcode, and possibly points of interest + * in the image, like the location of finder patterns or corners of the barcode in the image.

+ * + * @author Sean Owen + */ + public class DetectorResult + { + private var bits:BitMatrix; + private var points:Array; + + public function DetectorResult( bits:BitMatrix, points:Array ) { + this.bits = bits; + this.points = points; + + } + + public function getBits():BitMatrix { + return bits; + } + + public function getPoints():Array { + return points; + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/common/ECI.as b/FairyGUI-as3/src/com/google/zxing/common/ECI.as new file mode 100644 index 0000000..aba7990 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/common/ECI.as @@ -0,0 +1,56 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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 com.google.zxing.common +{ +/** + * Superclass of classes encapsulating types ECIs, according to "Extended Channel Interpretations" + * 5.3 of ISO 18004. + * + * @author Sean Owen + */ + public class ECI + { + import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + + private var value:int; + + public function ECI( value:int) { + this.value = value; + } + + public function getValue():int { + return value; + } + + /** + * @param value ECI value + * @return {@link ECI} representing ECI of given value, or null if it is legal but unsupported + * @throws IllegalArgumentException if ECI value is invalid + */ + + public static function getECIByValue(value:int ):ECI { + if (value < 0 || value > 999999) { + throw new IllegalArgumentException("Bad ECI value: " + value); + } + if (value < 900) { // Character set ECIs use 000000 - 000899 + return CharacterSetECI.getCharacterSetECIByValue(value); + } + return null; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/common/GlobalHistogramBinarizer.as b/FairyGUI-as3/src/com/google/zxing/common/GlobalHistogramBinarizer.as new file mode 100644 index 0000000..6f37482 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/common/GlobalHistogramBinarizer.as @@ -0,0 +1,211 @@ +/* + * Copyright 2009 ZXing authors + * + * Licensed 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 com.google.zxing.common +{ + +import com.google.zxing.Binarizer; +import com.google.zxing.LuminanceSource; +import com.google.zxing.ReaderException; + +/** + * This Binarizer implementation uses the old ZXing global histogram approach. It is suitable + * for low-end mobile devices which don't have enough CPU or memory to use a local thresholding + * algorithm. However, because it picks a global black point, it cannot handle difficult shadows + * and gradients. + * + * @author dswitkin@google.com (Daniel Switkin) + * @author Sean Owen + */ +public class GlobalHistogramBinarizer extends Binarizer { + + + private static var LUMINANCE_BITS:int = 5; + private static var LUMINANCE_SHIFT:int = 8 - LUMINANCE_BITS; + private static var LUMINANCE_BUCKETS:int = 1 << LUMINANCE_BITS; + + private var luminances:Array = null; + private var buckets:Array = null; + + public function GlobalHistogramBinarizer(source:LuminanceSource ) { + super(source); + } + + // Applies simple sharpening to the row data to improve performance of the 1D Readers. + public override function getBlackRow(y:int , row:BitArray ):BitArray { + + var source:LuminanceSource = getLuminanceSource(); + var width:int = source.getWidth(); + if (row == null || row.getSize() < width) { + row = new BitArray(width); + } else { + row.clear(); + } + + initArrays(width); + var _localLuminances:Array = source.getRow(y, luminances); + var localBuckets:Array = buckets; + for (var x2:int = 0; x2 < width; x2++) + { + var pixel:int = _localLuminances[x2] & 0xff; + localBuckets[pixel >> LUMINANCE_SHIFT]++; + } + + var blackPoint:int = estimateBlackPoint(localBuckets); + + var left:int = _localLuminances[0] & 0xff; + var center:int = _localLuminances[1] & 0xff; + for (var x:int = 1; x < width - 1; x++) + { + var right:int = _localLuminances[x + 1] & 0xff; + // A simple -1 4 -1 box filter with a weight of 2. + var luminance:int = ((center << 2) - left - right) >> 1; + if (luminance < blackPoint) { + row._set(x); + } + left = center; + center = right; + } + return row; + } + + // Does not sharpen the data, as this call is intended to only be used by 2D Readers. + public override function getBlackMatrix():BitMatrix + { + var source:LuminanceSource = getLuminanceSource(); + var width:int = source.getWidth(); + var height:int = source.getHeight(); + var matrix:BitMatrix = new BitMatrix(width, height); + + // Quickly calculates the histogram by sampling four rows from the image. This proved to be + // more robust on the blackbox tests than sampling a diagonal as we used to do. + initArrays(width); + var _localLuminances:Array; + var localBuckets:Array = buckets;//assign empty array + for (var y2:int = 1; y2 < 5; y2++) + { + var row:int = int(height * y2 / 5); + _localLuminances = source.getRow(row, luminances); + var right:int = int((width << 2) / 5); + for (var x:int = int(width / 5); x < right; x++) + { + var pixel:int = _localLuminances[x] & 0xff; + var index:int = Math.floor(pixel >> LUMINANCE_SHIFT); + localBuckets[index]++; + } + } + + var blackPoint:int = estimateBlackPoint(localBuckets); + + // We delay reading the entire image luminance until the black point estimation succeeds. + // Although we end up reading four rows twice, it is consistent with our motto of + // "fail quickly" which is necessary for continuous scanning. + _localLuminances = source.getMatrix(); + for (var y:int = 0; y < height; y++) + { + var offset:int = y * width; + for (var x2:int = 0; x2< width; x2++) + { + var pixel2:int = _localLuminances[offset + x2] & 0xff; + if (pixel2 < blackPoint) + { + matrix._set(x2, y); + } + } + } + + return matrix; + } + + public override function createBinarizer(source:LuminanceSource):Binarizer { + return new GlobalHistogramBinarizer(source); + } + + private function initArrays(luminanceSize:int):void { + if (luminances == null || luminances.length < luminanceSize) + { + luminances = new Array(luminanceSize); + } + for (var i:int=0;i firstPeakSize) { + firstPeak = x; + firstPeakSize = buckets[x]; + } + if (buckets[x] > maxBucketCount) { + maxBucketCount = buckets[x]; + } + } + + // Find the second-tallest peak which is somewhat far from the tallest peak. + var secondPeak:int = 0; + var secondPeakScore:int = 0; + for (var x2:int = 0; x2 < numBuckets; x2++) { + var distanceToBiggest:int = x2 - firstPeak; + // Encourage more distant second peaks by multiplying by square of distance. + var score:int = buckets[x2] * distanceToBiggest * distanceToBiggest; + if (score > secondPeakScore) { + secondPeak = x2; + secondPeakScore = score; + } + } + + // Make sure firstPeak corresponds to the black peak. + if (firstPeak > secondPeak) { + var temp:int = firstPeak; + firstPeak = secondPeak; + secondPeak = temp; + } + + // If there is too little contrast in the image to pick a meaningful black point, throw rather + // than waste time trying to decode the image, and risk false positives. + // TODO: It might be worth comparing the brightest and darkest pixels seen, rather than the + // two peaks, to determine the contrast. + if (secondPeak - firstPeak <= numBuckets >> 4) { + throw new ReaderException("GlobalHistogramBinarizer : estimateBlackPoint"); + } + + // Find a valley between them that is low and closer to the white peak. + var bestValley:int = secondPeak - 1; + var bestValleyScore:int = -1; + for (var x3:int = secondPeak - 1; x3 > firstPeak; x3--) { + var fromFirst:int = x3 - firstPeak; + var score2:int = fromFirst * fromFirst * (secondPeak - x3) * (maxBucketCount - buckets[x3]); + if (score2 > bestValleyScore) { + bestValley = x3; + bestValleyScore = score2; + } + } + + return bestValley << LUMINANCE_SHIFT; + } + +} + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/common/GridSampler.as b/FairyGUI-as3/src/com/google/zxing/common/GridSampler.as new file mode 100644 index 0000000..b856935 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/common/GridSampler.as @@ -0,0 +1,233 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing.common +{ + /** + * Implementations of this class can, given locations of finder patterns for a QR code in an + * image, sample the right points in the image to reconstruct the QR code, accounting for + * perspective distortion. It is abstracted since it is relatively expensive and should be allowed + * to take advantage of platform-specific optimized implementations, like Sun's Java Advanced + * Imaging library, but which may not be available in other environments such as J2ME, and vice + * versa. + * + * The implementation used can be controlled by calling {@link #setGridSampler(GridSampler)} + * with an instance of a class which implements this interface. + * + * @author Sean Owen + * + */ + import com.google.zxing.ReaderException; + import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + import com.google.zxing.NotFoundException; + + public class GridSampler + { + + private static var gridSampler:GridSampler = new GridSampler(); + + /** + * Sets the implementation of {@link GridSampler} used by the library. One global + * instance is stored, which may sound problematic. But, the implementation provided + * ought to be appropriate for the entire platform, and all uses of this library + * in the whole lifetime of the JVM. For instance, an Android activity can swap in + * an implementation that takes advantage of native platform libraries. + * + * @param newGridSampler The platform-specific object to install. + */ + public static function setGridSampler(newGridSampler:GridSampler):void + { + if (newGridSampler == null) + { + throw new IllegalArgumentException("common : GridSampler : setGridSampler"); + ; + } + gridSampler = newGridSampler; + } + + /** + * @return the current implementation of {@link GridSampler} + */ + + public static function getGridSamplerInstance():GridSampler + { + return gridSampler; + } + + /** + *

Samples an image for a square matrix of bits of the given dimension. This is used to extract + * the black/white modules of a 2D barcode like a QR Code found in an image. Because this barcode + * may be rotated or perspective-distorted, the caller supplies four points in the source image + * that define known points in the barcode, so that the image may be sampled appropriately.

+ * + *

The last eight "from" parameters are four X/Y coordinate pairs of locations of points in + * the image that define some significant points in the image to be sample. For example, + * these may be the location of finder pattern in a QR Code.

+ * + *

The first eight "to" parameters are four X/Y coordinate pairs measured in the destination + * {@link BitMatrix}, from the top left, where the known points in the image given by the "from" + * parameters map to.

+ * + *

These 16 parameters define the transformation needed to sample the image.

+ * + * @param image image to sample + * @param dimension width/height of {@link BitMatrix} to sample from iamge + * @return {@link BitMatrix} representing a grid of points sampled from the image within a region + * defined by the "from" parameters + * @throws ReaderException if image can't be sampled, for example, if the transformation defined + * by the given points is invalid or results in sampling outside the image boundaries + */ + + public function sampleGrid(image:BitMatrix, dimensionX:int, dimensionY:int, transform:PerspectiveTransform):BitMatrix + { + // originally in DefaultGridSampler + if (dimensionX <= 0 || dimensionY <= 0) + { + throw NotFoundException.getNotFoundInstance(); + } + var bits:BitMatrix = new BitMatrix(dimensionX, dimensionY); + var points:Array = new Array(dimensionX << 1); + for (var y:int = 0; y < dimensionY; y++) + { + var max:int = points.length; + var iValue:Number = Number(y + 0.5); + for (var x:int = 0; x < max; x += 2) + { + points[x] = Number((x >> 1) + 0.5); + points[x + 1] = iValue; + } + transform.transformPoints(points); + // Quick check to see if points transformed to something inside the image; + // sufficient to check the endpoints + checkAndNudgePoints(image, points); + try + { + for (x = 0; x < max; x += 2) + { + if (image._get(int(points[x]), int(points[x + 1]))) + { + // Black(-ish) pixel + bits._set(x >> 1, y); + } + } + } + catch (aioobe:RangeError) + { + // This feels wrong, but, sometimes if the finder patterns are misidentified, the resulting + // transform gets "twisted" such that it maps a straight line of points to a set of points + // whose endpoints are in bounds, but others are not. There is probably some mathematical + // way to detect this about the transformation that I don't know yet. + // This results in an ugly runtime exception despite our clever checks above -- can't have + // that. We could check each point's coordinates but that feels duplicative. We settle for + // catching and wrapping ArrayIndexOutOfBoundsException. + throw NotFoundException.getNotFoundInstance(); + } + } + return bits; + } + + public function sampleGrid2(image:BitMatrix, dimensionX:int, dimensionY:int, p1ToX:Number, p1ToY:Number, p2ToX:Number, p2ToY:Number, p3ToX:Number, p3ToY:Number, p4ToX:Number, p4ToY:Number, p1FromX:Number, p1FromY:Number, p2FromX:Number, p2FromY:Number, p3FromX:Number, p3FromY:Number, p4FromX:Number, p4FromY:Number):BitMatrix + { + var transform:PerspectiveTransform = PerspectiveTransform.quadrilateralToQuadrilateral(p1ToX, p1ToY, p2ToX, p2ToY, p3ToX, p3ToY, p4ToX, p4ToY, p1FromX, p1FromY, p2FromX, p2FromY, p3FromX, p3FromY, p4FromX, p4FromY); + return sampleGrid(image, dimensionX, dimensionY, transform); + } + + /** + *

Checks a set of points that have been transformed to sample points on an image against + * the image's dimensions to see if the point are even within the image.

+ * + *

This method will actually "nudge" the endpoints back onto the image if they are found to be + * barely (less than 1 pixel) off the image. This accounts for imperfect detection of finder + * patterns in an image where the QR Code runs all the way to the image border.

+ * + *

For efficiency, the method will check points from either end of the line until one is found + * to be within the image. Because the set of points are assumed to be linear, this is valid.

+ * + * @param image image into which the points should map + * @param points actual points in x1,y1,...,xn,yn form + * @throws ReaderException if an endpoint is lies outside the image boundaries + */ + public static function checkAndNudgePoints(image:BitMatrix, points:Array):void + { + var width:int = image.getWidth(); + var height:int = image.getHeight(); + // Check and nudge points from start until we see some that are OK: + var nudged:Boolean = true; + for (var offset:int = 0; offset < points.length && nudged; offset += 2) + { + var x:int = int(points[offset]); + var y:int = int(points[offset + 1]); + if (x < -1 || x > width || y < -1 || y > height) + { + throw new ReaderException("common : GridSampler : checkAndNudgePoints : point out of range (" + x + "" + y + ") max:" + width + " - " + height); + } + nudged = false; + if (x == -1) + { + points[offset] = 0; + nudged = true; + } + else if (x == width) + { + points[offset] = width - 1; + nudged = true; + } + if (y == -1) + { + points[offset + 1] = 0; + nudged = true; + } + else if (y == height) + { + points[offset + 1] = height - 1; + nudged = true; + } + } + // Check and nudge points from end: + nudged = true; + for (var offset1:int = points.length - 2; offset >= 0 && nudged; offset -= 2) + { + var x1:int = int(points[offset1]); + var y1:int = int(points[offset1 + 1]); + if (x1 < -1 || x1 > width || y1 < -1 || y1 > height) + { + throw new ReaderException("common : GridSampler : checkAndNudgePoints : out of bounds"); + } + nudged = false; + if (x1 == -1) + { + points[offset1] = 0; + nudged = true; + } + else if (x1 == width) + { + points[offset1] = width - 1; + nudged = true; + } + if (y1 == -1) + { + points[offset1 + 1] = 0; + nudged = true; + } + else if (y1 == height) + { + points[offset1 + 1] = height - 1; + nudged = true; + } + } + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/common/HybridBinarizer.as b/FairyGUI-as3/src/com/google/zxing/common/HybridBinarizer.as new file mode 100644 index 0000000..1ba5326 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/common/HybridBinarizer.as @@ -0,0 +1,190 @@ +/* + * Copyright 2009 ZXing authors + * + * Licensed 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 com.google.zxing.common +{ + + + +/** + * This class implements a local thresholding algorithm, which while slower than the + * GlobalHistogramBinarizer, is fairly efficient for what it does. It is designed for + * high frequency images of barcodes with black data on white backgrounds. For this application, + * it does a much better job than a global blackpoint with severe shadows and gradients. + * However it tends to produce artifacts on lower frequency images and is therefore not + * a good general purpose binarizer for uses outside ZXing. + * + * NOTE: This class is still experimental and may not be ready for prime time yet. + * + * @author dswitkin@google.com (Daniel Switkin) + */ +import com.google.zxing.Binarizer; +import com.google.zxing.LuminanceSource; + +public class HybridBinarizer extends GlobalHistogramBinarizer { + + // This class uses 5x5 blocks to compute local luminance, where each block is 8x8 pixels. + // So this is the smallest dimension in each axis we can accept. + private static var MINIMUM_DIMENSION:int = 40; + private var matrix:BitMatrix = null; + + public function HybridBinarizer(source:LuminanceSource) { + super(source); + } + + public override function getBlackMatrix():BitMatrix + { + binarizeEntireImage(); + return matrix; + } + + public override function createBinarizer(source:LuminanceSource):Binarizer + { + return new HybridBinarizer(source); + } + + + // Calculates the final BitMatrix once for all requests. This could be called once from the + // constructor instead, but there are some advantages to doing it lazily, such as making + // profiling easier, and not doing heavy lifting when callers don't expect it. + private function binarizeEntireImage():void { + if (matrix == null) { + var source:LuminanceSource = getLuminanceSource(); + if (source.getWidth() >= MINIMUM_DIMENSION && source.getHeight() >= MINIMUM_DIMENSION) + { + var luminances:Array = source.getMatrix(); + var width:int = source.getWidth(); + var height:int = source.getHeight(); + var subWidth:int = width >> 3; + if ((width & 0x07) != 0) { + subWidth++; + } + var subHeight:int = height >> 3; + if ((height & 0x07) != 0) { + subHeight++; + } + var blackPoints:Array = calculateBlackPoints(luminances, subWidth, subHeight, width, height); + + matrix = new BitMatrix(width, height); + calculateThresholdForBlock(luminances, subWidth, subHeight, width, height, blackPoints, matrix); + } + else + { + // If the image is too small, fall back to the global histogram approach. + matrix = super.getBlackMatrix(); + } + } + } + + // For each 8x8 block in the image, calculate the average black point using a 5x5 grid + // of the blocks around it. Also handles the corner cases, but will ignore up to 7 pixels + // on the right edge and 7 pixels at the bottom of the image if the overall dimsions are not + // multiples of eight. In practice, leaving those pixels white does not seem to be a problem. + private static function calculateThresholdForBlock(luminances:Array , subWidth:int , subHeight:int , + width:int, height:int , blackPoints:Array , matrix:BitMatrix ):void { + for (var y:int = 0; y < subHeight; y++) { + var yoffset:int = y << 3; + if ((yoffset + 8) >= height) { + yoffset = height - 8; + } + for (var x:int = 0; x < subWidth; x++) { + var xoffset:int = x << 3; + if ((xoffset + 8) >= width) { + xoffset = width - 8; + } + var left:int = x > 1 ? x : 2; + left = left < subWidth - 2 ? left : subWidth - 3; + var top:int = y > 1 ? y : 2; + top = top < subHeight - 2 ? top : subHeight - 3; + var sum:int = 0; + for (var z:int = -2; z <= 2; z++) { + var blackRow:Array = blackPoints[top + z]; + sum += blackRow[left - 2]; + sum += blackRow[left - 1]; + sum += blackRow[left]; + sum += blackRow[left + 1]; + sum += blackRow[left + 2]; + } + var average:int = int(sum / 25); + threshold8x8Block(luminances, xoffset, yoffset, average, width, matrix); + } + } } + + // Applies a single threshold to an 8x8 block of pixels. + private static function threshold8x8Block(luminances:Array , xoffset:int , yoffset:int , threshold:int , + stride:int , matrix:BitMatrix ):void { + for (var y:int = 0; y < 8; y++) { + var offset:int = (yoffset + y) * stride + xoffset; + for (var x:int = 0; x < 8; x++) { + var pixel:int = luminances[offset + x] & 0xff; + if (pixel < threshold) { + matrix._set(xoffset + x, yoffset + y); + } + } + } + } + + // Calculates a single black point for each 8x8 block of pixels and saves it away. + private static function calculateBlackPoints(luminances:Array, subWidth:int, subHeight:int, + width:int, height:int):Array { +var blackPoints:Array = new Array(subHeight); +for(var i:int=0;i= height) { + yoffset = height - 8; + } + for (var x:int = 0; x < subWidth; x++) { + var xoffset:int = x << 3; + if ((xoffset + 8) >= width) { + xoffset = width - 8; + } + var sum:int = 0; + var min:int = 255; + var max:int = 0; + for (var yy:int = 0; yy < 8; yy++) { + var offset:int = (yoffset + yy) * width + xoffset; + for (var xx:int = 0; xx < 8; xx++) { + var pixel:int = luminances[offset + xx] & 0xff; + sum += pixel; + if (pixel < min) { + min = pixel; + } + if (pixel > max) { + max = pixel; + } + } + } + + // If the contrast is inadequate, use half the minimum, so that this block will be + // treated as part of the white background, but won't drag down neighboring blocks + // too much. + var average:int; + if (max - min > 24) { + average = sum >> 6; + } else { + // When min == max == 0, let average be 1 so all is black + average = max == 0 ? 1 : min >> 1; + } + blackPoints[y][x] = average; + } + } + return blackPoints; + } + + + } + +} diff --git a/FairyGUI-as3/src/com/google/zxing/common/LocalBlockBinarizer.as b/FairyGUI-as3/src/com/google/zxing/common/LocalBlockBinarizer.as new file mode 100644 index 0000000..f487640 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/common/LocalBlockBinarizer.as @@ -0,0 +1,179 @@ +/* + * Copyright 2009 ZXing authors + * + * Licensed 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 com.google.zxing.common +{ + + + +/** + * This class implements a local thresholding algorithm, which while slower than the + * GlobalHistogramBinarizer, is fairly efficient for what it does. It is designed for + * high frequency images of barcodes with black data on white backgrounds. For this application, + * it does a much better job than a global blackpoint with severe shadows and gradients. + * However it tends to produce artifacts on lower frequency images and is therefore not + * a good general purpose binarizer for uses outside ZXing. + * + * NOTE: This class is still experimental and may not be ready for prime time yet. + * + * @author dswitkin@google.com (Daniel Switkin) + */ +import com.google.zxing.Binarizer; +import com.google.zxing.LuminanceSource; + +public final class LocalBlockBinarizer extends Binarizer { + + + private var matrix:BitMatrix = null; + + public function LocalBlockBinarizer(source:LuminanceSource) { + super(source); + } + + // TODO: Consider a different strategy for 1D Readers. + public override function getBlackRow(y:int , row:BitArray ):BitArray { + binarizeEntireImage(); + return matrix.getRow(y, row); + } + + // TODO: If getBlackRow() calculates its own values, removing sharpening here. + public override function getBlackMatrix():BitMatrix { + binarizeEntireImage(); + return matrix; + } + + public override function createBinarizer(source:LuminanceSource ):Binarizer { + return new LocalBlockBinarizer(source); + } + + // Calculates the final BitMatrix once for all requests. This could be called once from the + // constructor instead, but there are some advantages to doing it lazily, such as making + // profiling easier, and not doing heavy lifting when callers don't expect it. + private function binarizeEntireImage():void { + if (matrix == null) { + var source:LuminanceSource = getLuminanceSource(); + var luminances:Array = source.getMatrix(); + var width:int = source.getWidth(); + var height:int = source.getHeight(); + sharpenRow(luminances, width, height); + + var subWidth:int = width >> 3; + var subHeight:int = height >> 3; + var blackPoints:Array = calculateBlackPoints(luminances, subWidth, subHeight, width); + + matrix = new BitMatrix(width, height); + calculateThresholdForBlock(luminances, subWidth, subHeight, width, blackPoints, matrix); + } + } + + // For each 8x8 block in the image, calculate the average black point using a 5x5 grid + // of the blocks around it. Also handles the corner cases, but will ignore up to 7 pixels + // on the right edge and 7 pixels at the bottom of the image if the overall dimsions are not + // multiples of eight. In practice, leaving those pixels white does not seem to be a problem. + private static function calculateThresholdForBlock(luminances:Array , subWidth:int , subHeight:int , + stride:int , blackPoints:Array , matrix:BitMatrix ):void { + for (var y:int = 0; y < subHeight; y++) { + for (var x:int = 0; x < subWidth; x++) { + var left:int = (x > 1) ? x : 2; + left = (left < subWidth - 2) ? left : subWidth - 3; + var top:int = (y > 1) ? y : 2; + top = (top < subHeight - 2) ? top : subHeight - 3; + var sum:int = 0; + for (var z:int = -2; z <= 2; z++) { + sum += blackPoints[top + z][left - 2]; + sum += blackPoints[top + z][left - 1]; + sum += blackPoints[top + z][left]; + sum += blackPoints[top + z][left + 1]; + sum += blackPoints[top + z][left + 2]; + } + var average:int = sum / 25; + threshold8x8Block(luminances, x << 3, y << 3, average, stride, matrix); + } + } + } + + // Applies a single threshold to an 8x8 block of pixels. + private static function threshold8x8Block(luminances:Array , xoffset:int , yoffset:int , threshold:int , + stride:int , matrix:BitMatrix ):void { + for (var y:int = 0; y < 8; y++) { + var offset:int = (yoffset + y) * stride + xoffset; + for (var x:int = 0; x < 8; x++) { + var pixel:int = luminances[offset + x] & 0xff; + if (pixel < threshold) { + matrix._set(xoffset + x, yoffset + y); + } + } + } + } + + // Calculates a single black point for each 8x8 block of pixels and saves it away. + private static function calculateBlackPoints(luminances:Array, subWidth:int, subHeight:int, + stride:int):Array { + //int[][] blackPoints = new int[subHeight][subWidth]; + var blackPoints:Array = new Array(); + for (var y:int = 0; y < subHeight; y++) { + for (var x:int = 0; x < subWidth; x++) { + var sum:int = 0; + var min:int = 255; + var max:int = 0; + for (var yy:int = 0; yy < 8; yy++) { + var offset:int = ((y << 3) + yy) * stride + (x << 3); + for (var xx:int = 0; xx < 8; xx++) { + var pixel:int = luminances[offset + xx] & 0xff; + sum += pixel; + if (pixel < min) { + min = pixel; + } + if (pixel > max) { + max = pixel; + } + } + } + + // If the contrast is inadequate, use half the minimum, so that this block will be + // treated as part of the white background, but won't drag down neighboring blocks + // too much. + var average:int = (max - min > 24) ? (sum >> 6) : (min >> 1); + blackPoints[y][x] = average; + } + } + return blackPoints; + } + + // Applies a simple -1 4 -1 box filter with a weight of 2 to each row. + private static function sharpenRow(luminances:Array, width:int, height:int):void { + for (var y:int = 0; y < height; y++) { + var offset:int = y * width; + var left:int = luminances[offset] & 0xff; + var center:int = luminances[offset + 1] & 0xff; + for (var x:int = 1; x < width - 1; x++) { + var right:int = luminances[offset + x + 1] & 0xff; + var pixel:int = ((center << 2) - left - right) >> 1; + // Must clamp values to 0..255 so they will fit in a byte. + if (pixel > 255) { + pixel = 255; + } else if (pixel < 0) { + pixel = 0; + } + luminances[offset + x] = pixel; + left = center; + center = right; + } + } + } + +} + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/common/PerspectiveTransform.as b/FairyGUI-as3/src/com/google/zxing/common/PerspectiveTransform.as new file mode 100644 index 0000000..7c8e6bf --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/common/PerspectiveTransform.as @@ -0,0 +1,135 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing.common +{ +/** + *

This class implements a perspective transform in two dimensions. Given four source and four + * destination points, it will compute the transformation implied between them. The code is based + * directly upon section 3.4.2 of George Wolberg's "Digital Image Warping"; see pages 54-56.

+ * + * @author Sean Owen + */ + public class PerspectiveTransform + { + private var a11:Number; + private var a12:Number; + private var a13:Number; + private var a21:Number; + private var a22:Number; + private var a23:Number; + private var a31:Number; + private var a32:Number; + private var a33:Number; + + public function PerspectiveTransform( a11:Number, a21:Number,a31:Number, a12:Number, a22:Number, a32:Number, a13:Number, a23:Number, a33:Number) + { + this.a11 = a11; + this.a12 = a12; + this.a13 = a13; + this.a21 = a21; + this.a22 = a22; + this.a23 = a23; + this.a31 = a31; + this.a32 = a32; + this.a33 = a33; + } + + public static function quadrilateralToQuadrilateral(x0:Number,y0:Number,x1:Number,y1:Number,x2:Number,y2:Number,x3:Number,y3:Number,x0p:Number,y0p:Number,x1p:Number,y1p:Number,x2p:Number, y2p:Number,x3p:Number,y3p:Number):PerspectiveTransform + { + + var qToS:PerspectiveTransform = quadrilateralToSquare(x0, y0, x1, y1, x2, y2, x3, y3); + var sToQ:PerspectiveTransform = squareToQuadrilateral(x0p, y0p, x1p, y1p, x2p, y2p, x3p, y3p); + return sToQ.times(qToS); + } + public function transformPoints(points:Array):Array + { + var max:int = points.length; + var a11:Number = this.a11; + var a12:Number = this.a12; + var a13:Number = this.a13; + var a21:Number = this.a21; + var a22:Number = this.a22; + var a23:Number = this.a23; + var a31:Number = this.a31; + var a32:Number = this.a32; + var a33:Number = this.a33; + for (var i:int = 0; i < max; i += 2) + { + var x:Number = points[i]; + var y:Number = points[i + 1]; + var denominator:Number = a13 * x + a23 * y + a33; + points[i] = (a11 * x + a21 * y + a31) / denominator; + points[i + 1] = (a12 * x + a22 * y + a32) / denominator; + } + return points; + } + + public static function squareToQuadrilateral(x0:Number,y0:Number,x1:Number,y1:Number,x2:Number,y2:Number,x3:Number,y3:Number):PerspectiveTransform + { + var dy2:Number = y3 - y2; + var dy3:Number = y0 - y1 + y2 - y3; + if (dy2 == 0 && dy3 == 0) + { + return new PerspectiveTransform(x1 - x0, x2 - x1, x0, y1 - y0, y2 - y1, y0, 0, 0, 1); + } + else + { + var dx1:Number = x1 - x2; + var dx2:Number = x3 - x2; + var dx3:Number = x0 - x1 + x2 - x3; + var dy1:Number = y1 - y2; + var denominator:Number = dx1 * dy2 - dx2 * dy1; + var a13:Number = (dx3 * dy2 - dx2 * dy3) / denominator; + var a23:Number = (dx1 * dy3 - dx3 * dy1) / denominator; + return new PerspectiveTransform(x1 - x0 + a13 * x1, x3 - x0 + a23 * x3, x0, y1 - y0 + a13 * y1, y3 - y0 + a23 * y3, y0, a13, a23, 1); + } + } + + public static function quadrilateralToSquare(x0:Number,y0:Number,x1:Number,y1:Number,x2:Number,y2:Number,x3:Number,y3:Number):PerspectiveTransform + { + // Here, the adjoint serves as the inverse: + return squareToQuadrilateral(x0, y0, x1, y1, x2, y2, x3, y3).buildAdjoint(); + } + + public function buildAdjoint():PerspectiveTransform + { + // Adjoint is the transpose of the cofactor matrix: + return new PerspectiveTransform(a22 * a33 - a23 * a32, + a23 * a31 - a21 * a33, + a21 * a32 - a22 * a31, + a13 * a32 - a12 * a33, + a11 * a33 - a13 * a31, + a12 * a31 - a11 * a32, + a12 * a23 - a13 * a22, + a13 * a21 - a11 * a23, + a11 * a22 - a12 * a21); + } + + private function times(other:PerspectiveTransform ):PerspectiveTransform + { + return new PerspectiveTransform(a11 * other.a11 + a21 * other.a12 + a31 * other.a13, + a11 * other.a21 + a21 * other.a22 + a31 * other.a23, + a11 * other.a31 + a21 * other.a32 + a31 * other.a33, + a12 * other.a11 + a22 * other.a12 + a32 * other.a13, + a12 * other.a21 + a22 * other.a22 + a32 * other.a23, + a12 * other.a31 + a22 * other.a32 + a32 * other.a33, + a13 * other.a11 + a23 * other.a12 + a33 * other.a13, + a13 * other.a21 + a23 * other.a22 + a33 * other.a23, + a13 * other.a31 + a23 * other.a32 + a33 * other.a33); + } + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/common/detector/MonochromeRectangleDetector.as b/FairyGUI-as3/src/com/google/zxing/common/detector/MonochromeRectangleDetector.as new file mode 100644 index 0000000..bc6ef66 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/common/detector/MonochromeRectangleDetector.as @@ -0,0 +1,217 @@ +/* + * Copyright 2009 ZXing authors + * + * Licensed 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 com.google.zxing.common.detector +{ + import com.google.zxing.common.BitMatrix; + import com.google.zxing.ResultPoint; + import com.google.zxing.ReaderException; + +/** + *

A somewhat generic detector that looks for a barcode-like rectangular region within an image. + * It looks within a mostly white region of an image for a region of black and white, but mostly + * black. It returns the four corners of the region, as best it can determine.

+ * + * @author Sean Owen + */ +public final class MonochromeRectangleDetector +{ + + private static var MAX_MODULES:int = 32; + + private var image:BitMatrix; + + public function MonochromeRectangleDetector(image:BitMatrix) + { + this.image = image; + } + + /** + *

Detects a rectangular region of black and white -- mostly black -- with a region of mostly + * white, in an image.

+ * + * @return {@link ResultPoint}[] describing the corners of the rectangular region. The first and + * last points are opposed on the diagonal, as are the second and third. The first point will be + * the topmost point and the last, the bottommost. The second point will be leftmost and the + * third, the rightmost + * @throws ReaderException if no Data Matrix Code can be found + */ + public function detect():Array + { + var height:int = image.getHeight(); + var width:int = image.getWidth(); + var halfHeight:int = height >> 1; + var halfWidth:int = width >> 1; + var deltaY:int = Math.max(1, height / (MAX_MODULES << 3)); + var deltaX:int = Math.max(1, width / (MAX_MODULES << 3)); + + var top:int = 0; + var bottom:int = height; + var left:int = 0; + var right:int = width; + var pointA:ResultPoint = findCornerFromCenter(halfWidth, 0, left, right, + halfHeight, -deltaY, top, bottom, halfWidth >> 1); + top = int(pointA.getY() - 1); + var pointB:ResultPoint = findCornerFromCenter(halfWidth, -deltaX, left, right, + halfHeight, 0, top, bottom, halfHeight >> 1); + left = int(pointB.getX() - 1); + var pointC:ResultPoint = findCornerFromCenter(halfWidth, deltaX, left, right, + halfHeight, 0, top, bottom, halfHeight >> 1); + right = int(pointC.getX() + 1); + var pointD:ResultPoint = findCornerFromCenter(halfWidth, 0, left, right, + halfHeight, deltaY, top, bottom, halfWidth >> 1); + bottom = int(pointD.getY() + 1); + + // Go try to find point A again with better information -- might have been off at first. + pointA = findCornerFromCenter(halfWidth, 0, left, right, + halfHeight, -deltaY, top, bottom, halfWidth >> 2); + + return [pointA, pointB, pointC, pointD ]; + } + + /** + * Attempts to locate a corner of the barcode by scanning up, down, left or right from a center + * point which should be within the barcode. + * + * @param centerX center's x component (horizontal) + * @param deltaX same as deltaY but change in x per step instead + * @param left minimum value of x + * @param right maximum value of x + * @param centerY center's y component (vertical) + * @param deltaY change in y per step. If scanning up this is negative; down, positive; + * left or right, 0 + * @param top minimum value of y to search through (meaningless when di == 0) + * @param bottom maximum value of y + * @param maxWhiteRun maximum run of white pixels that can still be considered to be within + * the barcode + * @return a {@link com.google.zxing.ResultPoint} encapsulating the corner that was found + * @throws com.google.zxing.ReaderException if such a point cannot be found + */ + private function findCornerFromCenter(centerX:int, deltaX:int, left:int, right:int, + centerY:int, deltaY:int, top:int, bottom:int, maxWhiteRun:int):ResultPoint + { + var lastRange:Array = null; + for (var y:int = centerY, x:int = centerX; + y < bottom && y >= top && x < right && x >= left; + y += deltaY, x += deltaX) { + var range:Array; + if (deltaX == 0) { + // horizontal slices, up and down + range = blackWhiteRange(y, maxWhiteRun, left, right, true); + } else { + // vertical slices, left and right + range = blackWhiteRange(x, maxWhiteRun, top, bottom, false); + } + if (range == null) { + if (lastRange == null) { + throw new ReaderException("MonochromeRectangleDetector : findCornerFromCenter : range and lastRange null"); + } + // lastRange was found + if (deltaX == 0) { + var lastY:int = y - deltaY; + if (lastRange[0] < centerX) { + if (lastRange[1] > centerX) { + // straddle, choose one or the other based on direction + return new ResultPoint(deltaY > 0 ? lastRange[0] : lastRange[1], lastY); + } + return new ResultPoint(lastRange[0], lastY); + } else { + return new ResultPoint(lastRange[1], lastY); + } + } else { + var lastX:int = x - deltaX; + if (lastRange[0] < centerY) { + if (lastRange[1] > centerY) { + return new ResultPoint(lastX, deltaX < 0 ? lastRange[0] : lastRange[1]); + } + return new ResultPoint(lastX, lastRange[0]); + } else { + return new ResultPoint(lastX, lastRange[1]); + } + } + } + lastRange = range; + } + throw new ReaderException("MonochromeRectangleDetector : findCornerFromCenter :generic error"); + } + + /** + * Computes the start and end of a region of pixels, either horizontally or vertically, that could + * be part of a Data Matrix barcode. + * + * @param fixedDimension if scanning horizontally, this is the row (the fixed vertical location) + * where we are scanning. If scanning vertically it's the colummn, the fixed horizontal location + * @param maxWhiteRun largest run of white pixels that can still be considered part of the + * barcode region + * @param minDim minimum pixel location, horizontally or vertically, to consider + * @param maxDim maximum pixel location, horizontally or vertically, to consider + * @param horizontal if true, we're scanning left-right, instead of up-down + * @return int[] with start and end of found range, or null if no such range is found + * (e.g. only white was found) + */ + private function blackWhiteRange(fixedDimension:int, maxWhiteRun:int, minDim:int, maxDim:int, + horizontal:Boolean):Array + { + + var center:int = (minDim + maxDim) >> 1; + + // Scan left/up first + var start:int = center; + var condition:Boolean; + var whiteRunStart:int; + while (start >= minDim) { + if (horizontal ? image._get(start, fixedDimension) : image._get(fixedDimension, start)) { + start--; + } else { + whiteRunStart = start; + + do { + start--; + condition = (horizontal ? image._get(start, fixedDimension) : image._get(fixedDimension, start)); + } while ((start >= minDim )&& !condition); + var whiteRunSize:int = whiteRunStart - start; + if (start < minDim || whiteRunSize > maxWhiteRun) { + start = whiteRunStart; + break; + } + } + } + start++; + + // Then try right/down + var end:int = center; + while (end < maxDim) { + if (horizontal ? image._get(end, fixedDimension) : image._get(fixedDimension, end)) { + end++; + } else { + whiteRunStart = end; + do { + end++; + condition = horizontal ? image._get(end, fixedDimension) : image._get(fixedDimension, end); + } while (end < maxDim && !condition ); + var whiteRunSize2:int = end - whiteRunStart; + if (end >= maxDim || whiteRunSize2 > maxWhiteRun) { + end = whiteRunStart; + break; + } + } + } + end--; + + return end > start ? [start, end] : null; + + } + } +} diff --git a/FairyGUI-as3/src/com/google/zxing/common/detector/WhiteRectangleDetector.as b/FairyGUI-as3/src/com/google/zxing/common/detector/WhiteRectangleDetector.as new file mode 100644 index 0000000..c815773 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/common/detector/WhiteRectangleDetector.as @@ -0,0 +1,354 @@ +/* + * Copyright 2010 ZXing authors + * + * Licensed 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 com.google.zxing.common.detector +{ + +import com.google.zxing.NotFoundException; +import com.google.zxing.ResultPoint; +import com.google.zxing.common.BitMatrix; + +/** + *

+ * Detects a candidate barcode-like rectangular region within an image. It + * starts around the center of the image, increases the size of the candidate + * region until it finds a white rectangular region. By keeping track of the + * last black points it encountered, it determines the corners of the barcode. + *

+ * + * @author David Olivier + */ +public final class WhiteRectangleDetector +{ + + private static var INIT_SIZE:int = 30; + private static var CORR:int = 1; + + private var image:BitMatrix ; + private var height:int; + private var width:int; + private var leftInit:int; + private var rightInit:int; + private var downInit:int; + private var upInit:int; + + /** + * @throws NotFoundException if image is too small + */ + public function WhiteRectangleDetector(image:BitMatrix , initSize:int=-1, x:int=-1, y:int=-1) + { + if ((initSize==-1)&&( x==-1)&&( y==-1)) + { + this.image = image; + height = image.getHeight(); + width = image.getWidth(); + leftInit = (width - INIT_SIZE) >> 1; + rightInit = (width + INIT_SIZE) >> 1; + upInit = (height - INIT_SIZE) >> 1; + downInit = (height + INIT_SIZE) >> 1; + if (upInit < 0 || leftInit < 0 || downInit >= height || rightInit >= width) { + throw NotFoundException.getNotFoundInstance(); + } + } + else + { + + this.image = image; + height = image.getHeight(); + width = image.getWidth(); + var halfsize:int = initSize >> 1; + leftInit = x - halfsize; + rightInit = x + halfsize; + upInit = y - halfsize; + downInit = y + halfsize; + if (upInit < 0 || leftInit < 0 || downInit >= height || rightInit >= width) { + throw NotFoundException.getNotFoundInstance(); + } + } + } + + /** + *

+ * Detects a candidate barcode-like rectangular region within an image. It + * starts around the center of the image, increases the size of the candidate + * region until it finds a white rectangular region. + *

+ * + * @return {@link ResultPoint}[] describing the corners of the rectangular + * region. The first and last points are opposed on the diagonal, as + * are the second and third. The first point will be the topmost + * point and the last, the bottommost. The second point will be + * leftmost and the third, the rightmost + * @throws NotFoundException if no Data Matrix Code can be found + */ + public function detect():Array { + + var left:int = leftInit; + var right:int = rightInit; + var up:int = upInit; + var down:int = downInit; + var sizeExceeded:Boolean = false; + var aBlackPointFoundOnBorder:Boolean = true; + var atLeastOneBlackPointFoundOnBorder:Boolean = false; + + while (aBlackPointFoundOnBorder) { + + aBlackPointFoundOnBorder = false; + + // ..... + // . | + // ..... + var rightBorderNotWhite:Boolean = true; + while (rightBorderNotWhite && right < width) { + rightBorderNotWhite = containsBlackPoint(up, down, right, false); + if (rightBorderNotWhite) { + right++; + aBlackPointFoundOnBorder = true; + } + } + + if (right >= width) { + sizeExceeded = true; + break; + } + + // ..... + // . . + // .___. + var bottomBorderNotWhite:Boolean = true; + while (bottomBorderNotWhite && down < height) { + bottomBorderNotWhite = containsBlackPoint(left, right, down, true); + if (bottomBorderNotWhite) { + down++; + aBlackPointFoundOnBorder = true; + } + } + + if (down >= height) { + sizeExceeded = true; + break; + } + + // ..... + // | . + // ..... + var leftBorderNotWhite:Boolean = true; + while (leftBorderNotWhite && left >= 0) { + leftBorderNotWhite = containsBlackPoint(up, down, left, false); + if (leftBorderNotWhite) { + left--; + aBlackPointFoundOnBorder = true; + } + } + + if (left < 0) { + sizeExceeded = true; + break; + } + + // .___. + // . . + // ..... + var topBorderNotWhite:Boolean = true; + while (topBorderNotWhite && up >= 0) { + topBorderNotWhite = containsBlackPoint(left, right, up, true); + if (topBorderNotWhite) { + up--; + aBlackPointFoundOnBorder = true; + } + } + + if (up < 0) { + sizeExceeded = true; + break; + } + + if (aBlackPointFoundOnBorder) { + atLeastOneBlackPointFoundOnBorder = true; + } + + } + + if (!sizeExceeded && atLeastOneBlackPointFoundOnBorder) { + + var maxSize:int = right - left; + + var z:ResultPoint = null; + for (var i:int = 1; i < maxSize; i++) + { + z = getBlackPointOnSegment(left, down - i, left + i, down); + + if (z != null) { + break; + } + } + + if (z == null) { + throw NotFoundException.getNotFoundInstance(); + } + + var t:ResultPoint = null; + //go down right + for (var i4:int = 1; i4 < maxSize; i4++) { + t = getBlackPointOnSegment(left, up + i4, left + i4, up); + if (t != null) { + break; + } + } + + if (t == null) { + throw NotFoundException.getNotFoundInstance(); + } + + var x:ResultPoint = null; + //go down left + for (var i5:int = 1; i5 < maxSize; i5++) { + x = getBlackPointOnSegment(right, up + i5, right - i5, up); + if (x != null) { + break; + } + } + + if (x == null) { + throw NotFoundException.getNotFoundInstance(); + } + + var y:ResultPoint = null; + //go up left + for (i = 1; i < maxSize; i++) { + y = getBlackPointOnSegment(right, down - i, right - i, down); + if (y != null) { + break; + } + } + + if (y == null) { + throw NotFoundException.getNotFoundInstance(); + } + + return centerEdges(y, z, x, t); + + } else { + throw NotFoundException.getNotFoundInstance(); + } + } + + /** + * Ends up being a bit faster than Math.round(). This merely rounds its + * argument to the nearest int, where x.5 rounds up. + */ + private static function round(d:Number):int { + return (int) (d + 0.5); + } + + private function getBlackPointOnSegment(aX:Number, aY:Number, bX:Number, bY:Number):ResultPoint { + var dist:int = distanceL2(aX, aY, bX, bY); + var xStep:Number = (bX - aX) / dist; + var yStep:Number = (bY - aY) / dist; + + for (var i:int = 0; i < dist; i++) { + var x:int = round(aX + i * xStep); + var y:int = round(aY + i * yStep); + if (image._get(x, y)) { + return new ResultPoint(x, y); + } + } + return null; + } + + private static function distanceL2(aX:Number, aY:Number, bX:Number, bY:Number):int { + var xDiff:Number = aX - bX; + var yDiff:Number = aY - bY; + return round(Math.sqrt(xDiff * xDiff + yDiff * yDiff)); + } + + /** + * recenters the points of a constant distance towards the center + * + * @param y bottom most point + * @param z left most point + * @param x right most point + * @param t top most point + * @return {@link ResultPoint}[] describing the corners of the rectangular + * region. The first and last points are opposed on the diagonal, as + * are the second and third. The first point will be the topmost + * point and the last, the bottommost. The second point will be + * leftmost and the third, the rightmost + */ + private function centerEdges(y:ResultPoint , z:ResultPoint, + x:ResultPoint, t:ResultPoint):Array { + + // + // t t + // z x + // x OR z + // y y + // + + var yi:Number = y.getX(); + var yj:Number = y.getY(); + var zi:Number = z.getX(); + var zj:Number = z.getY(); + var xi:Number = x.getX(); + var xj:Number = x.getY(); + var ti:Number = t.getX(); + var tj:Number = t.getY(); + + if (yi < width / 2) { + return [ + new ResultPoint(ti - CORR, tj + CORR), + new ResultPoint(zi + CORR, zj + CORR), + new ResultPoint(xi - CORR, xj - CORR), + new ResultPoint(yi + CORR, yj - CORR)]; + } else { + return [ + new ResultPoint(ti + CORR, tj + CORR), + new ResultPoint(zi + CORR, zj - CORR), + new ResultPoint(xi - CORR, xj + CORR), + new ResultPoint(yi - CORR, yj - CORR)]; + } + } + + /** + * Determines whether a segment contains a black point + * + * @param a min value of the scanned coordinate + * @param b max value of the scanned coordinate + * @param fixed value of fixed coordinate + * @param horizontal set to true if scan must be horizontal, false if vertical + * @return true if a black point has been found, else false. + */ + private function containsBlackPoint(a:int, b:int, fixed:int, horizontal:Boolean):Boolean { + + if (horizontal) { + for (var x:int = a; x <= b; x++) { + if (image._get(x, fixed)) { + return true; + } + } + } else { + for (var y:int = a; y <= b; y++) { + if (image._get(fixed, y)) { + return true; + } + } + } + + return false; + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/common/flexdatatypes/ArrayList.as b/FairyGUI-as3/src/com/google/zxing/common/flexdatatypes/ArrayList.as new file mode 100644 index 0000000..0d4bb6d --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/common/flexdatatypes/ArrayList.as @@ -0,0 +1,200 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.common.flexdatatypes +{ + // these comparators should reside in the classes but that didn's work for some reason. + import com.google.zxing.datamatrix.detector.ResultPointsAndTransitionsComparator; + import com.google.zxing.qrcode.detector.CenterComparator; + import com.google.zxing.qrcode.detector.FurthestFromAverageComparator; + + + public class ArrayList + { + private var _array:Array; + public function ArrayList(siz:int=0) + { + this._array = new Array(siz); + } + public function get Capacity():int + { + return this._array.length; + } + + public function getObjectByIndex(index:int):Object + { + var obj:Object = this._array[index]; + return obj; + } + + public function setObjectByIndex(index:int,obj:Object):void + { + this._array[index] = obj; + } + + + public function Contains(o:Object):Boolean + { + if (this._array.indexOf(o) != -1) + { + return true; + } + else + { + return false; + } + } + + + public function set Capacity(cap:int):void + { + // not needed; + } + + public function AddRange(itemsToAdd:Array):void + { + // add this number of items + var len:int = this._array.length; + for (var i:int=0;i size) + { + for (var i:int=0;i 0) { leftPart = this._string.substring(0,startIndex); } + if ((startIndex+length) < this._string.length) + { rightPart = this._string.substr(startIndex+length); } + this._string = leftPart + rightPart; + } + + public function toString():String + { + return this._string; + } + +public function toHexString():String +{ + var r:String=""; + var e:int=this._string.length; + var c:int=0; + var h:String; + while(cThis class contains utility methods for performing mathematical operations over + * the Galois Field GF(256). Operations use a given primitive polynomial in calculations.

+ * + *

Throughout this package, elements of GF(256) are represented as an int + * for convenience and speed (but at the cost of memory). + * Only the bottom 8 bits are really used.

+ * + * @author Sean Owen + */ + public class GF256 + { + import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + + public static var QR_CODE_FIELD:GF256 = new GF256(0x011D); // x^8 + x^4 + x^3 + x^2 + 1 + public static var DATA_MATRIX_FIELD:GF256 = new GF256(0x012D); // x^8 + x^5 + x^3 + x^2 + 1 + + public var expTable:Array; + public var logTable:Array; + private var zero:GF256Poly; + private var one:GF256Poly; + + /** + * Create a representation of GF(256) using the given primitive polynomial. + * + * @param primitive irreducible polynomial whose coefficients are represented by + * the bits of an int, where the least-significant bit represents the constant + * coefficient + */ + public function GF256(primitive:int) { + expTable = new Array(256); + logTable = new Array(256); + var x:int = 1; + for (var i:int = 0; i < 256; i++) { + expTable[i] = x; + x <<= 1; // x = x * 2; we're assuming the generator alpha is 2 + if (x >= 0x100) { + x ^= primitive; + } + } + for (var i2:int = 0; i2 < 255; i2++) { + logTable[expTable[i2]] = i2; + } + // logTable[0] == 0 but this should never be used + zero = new GF256Poly(this, [0]); + one = new GF256Poly(this, [1]); + } + + public function getZero():GF256Poly { + return zero; + } + + public function getOne():GF256Poly + { + return one; + } + + /** + * @return the monomial representing coefficient * x^degree + */ + public function buildMonomial(degree:int, coefficient:int):GF256Poly + { + if (degree < 0) { + throw new IllegalArgumentException("common : reedsolomon : gf256 : buildnominal"); + } + if (coefficient == 0) { + return zero; + } + var coefficients:Array = new Array(degree + 1); + coefficients[0] = coefficient; + return new GF256Poly(this, coefficients); + } + + /** + * Implements both addition and subtraction -- they are the same in GF(256). + * + * @return sum/difference of a and b + */ + public static function addOrSubtract(a:int, b:int):int { + return a ^ b; + } + + /** + * @return 2 to the power of a in GF(256) + */ + public function exp(a:int):int + { + return expTable[a]; + } + + /** + * @return base 2 log of a in GF(256) + */ + public function log(a:int):int + { + if (a == 0) { + throw new IllegalArgumentException("common : reedsolomon : gf256 : log : a == 0"); + } + return logTable[a]; + } + + /** + * @return multiplicative inverse of a + */ + public function inverse(a:int):int + { + if (a == 0) { + throw new IllegalArgumentException("GF256:inverse: a cannot be 0"); + } + return expTable[255 - logTable[a]]; + } + + /** + * @param a + * @param b + * @return product of a and b in GF(256) + */ + public function multiply(a:int, b:int):int + { + if (a == 0 || b == 0) { + return 0; + } + if (a == 1) { + return b; + } + if (b == 1) { + return a; + } + return expTable[(logTable[a] + logTable[b]) % 255]; + } + + + public function Equals(other:GF256):Boolean + { + if (expTable != other.expTable) { return false; } + if (logTable != other.logTable) { return false; } + if (zero != other.getZero()) { return false; } + if (one != other.getOne()) { return false; } + return true; + } + + + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/common/reedsolomon/GF256Poly.as b/FairyGUI-as3/src/com/google/zxing/common/reedsolomon/GF256Poly.as new file mode 100644 index 0000000..9a6808b --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/common/reedsolomon/GF256Poly.as @@ -0,0 +1,310 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing.common.reedsolomon +{ + /** + *

Represents a polynomial whose coefficients are elements of GF(256). + * Instances of this class are immutable.

+ * + *

Much credit is due to William Rucklidge since portions of this code are an indirect + * port of his C++ Reed-Solomon implementation.

+ * + * @author Sean Owen + */ + + public class GF256Poly + { + import com.google.zxing.common.flexdatatypes.StringBuilder; + import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + + private var field:GF256; + private var coefficients:Array ; + + /** + * @param field the {@link GF256} instance representing the field to use + * to perform computations + * @param coefficients coefficients as ints representing elements of GF(256), arranged + * from most significant (highest-power term) coefficient to least significant + * @throws Error if argument is null or empty, + * or if leading coefficient is 0 and this is not a + * constant polynomial (that is, it is not the monomial "0") + */ + public function GF256Poly( field:GF256, coefficients:Array) { + if (coefficients == null || coefficients.length == 0) { + throw new IllegalArgumentException("common : reedsolomon : GFPoly : constructor input parameters invalid"); + } + this.field = field; + var coefficientsLength:int = coefficients.length; + if (coefficientsLength > 1 && coefficients[0] == 0) { + // Leading term must be non-zero for anything except the constant polynomial "0" + var firstNonZero:int = 1; + while (firstNonZero < coefficientsLength && coefficients[firstNonZero] == 0) { + firstNonZero++; + } + if (firstNonZero == coefficientsLength) { + this.coefficients = field.getZero().coefficients; + } else { + this.coefficients = new Array(coefficientsLength - firstNonZero); + + //System.Array.Copy(coefficients,firstNonZero,this.coefficients,0,this.coefficients.length); + var ctr:int=0; + for (var i:int = firstNonZero;i largerCoefficients.length) { + var temp:Array = smallerCoefficients; + smallerCoefficients = largerCoefficients; + largerCoefficients = temp; + } + var sumDiff:Array = new Array(largerCoefficients.length); + var lengthDiff:int = largerCoefficients.length - smallerCoefficients.length; + // Copy high-order terms only found in higher-degree polynomial's coefficients + //System.Array.Copy(largerCoefficients, 0, sumDiff, 0, lengthDiff); + for (var ii:int=0;ii= other.getDegree() && !remainder.isZero()) { + var degreeDifference:int = remainder.getDegree() - other.getDegree(); + var scale:int = field.multiply(remainder.getCoefficient(remainder.getDegree()), inverseDenominatorLeadingTerm); + var term:GF256Poly = other.multiplyByMonomial(degreeDifference, scale); + var iterationQuotient:GF256Poly = field.buildMonomial(degreeDifference, scale); + quotient = quotient.addOrSubtract(iterationQuotient); + remainder = remainder.addOrSubtract(term); + } + + return [quotient, remainder]; + } + + public function toString():String { + var result:StringBuilder = new StringBuilder(8 * getDegree()); + for (var degree:int = getDegree(); degree >= 0; degree--) { + var coefficient:int = getCoefficient(degree); + if (coefficient != 0) { + if (coefficient < 0) { + result.Append(" - "); + coefficient = -coefficient; + } else { + if (result.length > 0) { + result.Append(" + "); + } + } + if (degree == 0 || coefficient != 1) { + var alphaPower:int = field.log(coefficient); + if (alphaPower == 0) { + result.Append('1'); + } else if (alphaPower == 1) { + result.Append('a'); + } else { + result.Append("a^"); + result.Append(alphaPower); + } + } + if (degree != 0) { + if (degree == 1) { + result.Append('x'); + } else { + result.Append("x^"); + result.Append(degree); + } + } + } + } + return result.ToString(); + } + public function Equals(other:GF256Poly):Boolean + { + var result:Boolean = false; + if (this.field == other.field) + { + if (this.coefficients.Equals(other.coefficients)) + { + result = true; + } + } + return result; + } + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/common/reedsolomon/GenericGF.as b/FairyGUI-as3/src/com/google/zxing/common/reedsolomon/GenericGF.as new file mode 100644 index 0000000..f764eb8 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/common/reedsolomon/GenericGF.as @@ -0,0 +1,199 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing.common.reedsolomon +{ + + import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + +/** + *

This class contains utility methods for performing mathematical operations over + * the Galois Fields. Operations use a given primitive polynomial in calculations.

+ * + *

Throughout this package, elements of the GF are represented as an int + * for convenience and speed (but at the cost of memory). + *

+ * + * @author Sean Owen + * @author David Olivier + */ +public class GenericGF +{ + + public static var AZTEC_DATA_12:GenericGF = new GenericGF(0x1069, 4096); // x^12 + x^6 + x^5 + x^3 + 1 + public static var AZTEC_DATA_10:GenericGF = new GenericGF(0x409, 1024); // x^10 + x^3 + 1 + public static var AZTEC_DATA_6:GenericGF = new GenericGF(0x43, 64); // x^6 + x + 1 + public static var AZTEC_PARAM:GenericGF = new GenericGF(0x13, 16); // x^4 + x + 1 + public static var QR_CODE_FIELD_256:GenericGF = new GenericGF(0x011D, 256); // x^8 + x^4 + x^3 + x^2 + 1 + public static var DATA_MATRIX_FIELD_256:GenericGF = new GenericGF(0x012D, 256); // x^8 + x^5 + x^3 + x^2 + 1 + public static var AZTEC_DATA_8:GenericGF = DATA_MATRIX_FIELD_256; + + private static var INITIALIZATION_THRESHOLD:int = 0; + + private var expTable:Array; + private var logTable:Array; + private var zero:GenericGFPoly; + private var one:GenericGFPoly; + public var size:int; + public var primitive:int; + private var initialized:Boolean = false; + + /** + * Create a representation of GF(size) using the given primitive polynomial. + * + * @param primitive irreducible polynomial whose coefficients are represented by + * the bits of an int, where the least-significant bit represents the constant + * coefficient + */ + public function GenericGF(primitive:int, size:int) { + this.primitive = primitive; + this.size = size; + + if (size <= INITIALIZATION_THRESHOLD){ + initialize(); + } + } + + private function initialize():void{ + expTable = new Array(size); + logTable = new Array(size); + var x:int = 1; + for (var i:int = 0; i < size; i++) { + expTable[i] = x; + x <<= 1; // x = x * 2; we're assuming the generator alpha is 2 + if (x >= size) { + x ^= primitive; + x &= size-1; + } + } + for (var ii:int = 0; ii < size-1; ii++) { + logTable[expTable[ii]] = ii; + } + // logTable[0] == 0 but this should never be used + zero = new GenericGFPoly(this, [0]); + one = new GenericGFPoly(this, [1]); + initialized = true; + } + + private function checkInit():void{ + if (!initialized) { + initialize(); + } + } + + public function getZero():GenericGFPoly { + checkInit(); + + return zero; + } + + public function getOne():GenericGFPoly { + checkInit(); + + return one; + } + + /** + * @return the monomial representing coefficient * x^degree + */ + public function buildMonomial(degree:int, coefficient:int):GenericGFPoly { + checkInit(); + + if (degree < 0) { + throw new IllegalArgumentException(); + } + if (coefficient == 0) { + return zero; + } + var coefficients:Array = new Array(degree + 1); + coefficients[0] = coefficient; + return new GenericGFPoly(this, coefficients); + } + + /** + * Implements both addition and subtraction -- they are the same in GF(size). + * + * @return sum/difference of a and b + */ + public static function addOrSubtract(a:int, b:int):int { + return a ^ b; + } + + /** + * @return 2 to the power of a in GF(size) + */ + public function exp(a:int):int { + checkInit(); + + return expTable[a]; + } + + /** + * @return base 2 log of a in GF(size) + */ + public function log(a:int):int { + checkInit(); + + if (a == 0) { + throw new IllegalArgumentException(); + } + return logTable[a]; + } + + /** + * @return multiplicative inverse of a + */ + public function inverse(a:int):int { + checkInit(); + + if (a == 0) { + throw new Error("arithmetic exception"); + } + return expTable[size - logTable[a] - 1]; + } + + /** + * @param a + * @param b + * @return product of a and b in GF(size) + */ + public function multiply(a:int, b:int):int { + checkInit(); + + if (a == 0 || b == 0) { + return 0; + } + + if (a<0 || b <0 || a>=size || b >=size){ + a++; + } + + var logSum:int = logTable[a] + logTable[b]; + var result:int = expTable[(logSum % size) + Math.floor(logSum / size)]; + return result; + } + + public function getSize():int{ + return size; + } + + public function Equals(other:GenericGF):Boolean + { + return ((this.primitive == other.primitive) && (this.size == other.size)); + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/common/reedsolomon/GenericGFPoly.as b/FairyGUI-as3/src/com/google/zxing/common/reedsolomon/GenericGFPoly.as new file mode 100644 index 0000000..352bb4d --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/common/reedsolomon/GenericGFPoly.as @@ -0,0 +1,295 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing.common.reedsolomon +{ + +import com.google.zxing.common.flexdatatypes.IllegalArgumentException; +import com.google.zxing.common.flexdatatypes.StringBuilder; +import com.google.zxing.common.flexdatatypes.Utils; +/** + *

Represents a polynomial whose coefficients are elements of a GF. + * Instances of this class are immutable.

+ * + *

Much credit is due to William Rucklidge since portions of this code are an indirect + * port of his C++ Reed-Solomon implementation.

+ * + * @author Sean Owen + */ +public class GenericGFPoly { + + public var field:GenericGF; + public var coefficients:Array; + + /** + * @param field the {@link GenericGF} instance representing the field to use + * to perform computations + * @param coefficients coefficients as ints representing elements of GF(size), arranged + * from most significant (highest-power term) coefficient to least significant + * @throws IllegalArgumentException if argument is null or empty, + * or if leading coefficient is 0 and this is not a + * constant polynomial (that is, it is not the monomial "0") + */ + public function GenericGFPoly(field:GenericGF, coefficients:Array) { + if (coefficients == null || coefficients.length == 0) { + throw new IllegalArgumentException(); + } + this.field = field; + var coefficientsLength:int = coefficients.length; + if (coefficientsLength > 1 && coefficients[0] == 0) { + // Leading term must be non-zero for anything except the constant polynomial "0" + var firstNonZero:int = 1; + while (firstNonZero < coefficientsLength && coefficients[firstNonZero] == 0) { + firstNonZero++; + } + if (firstNonZero == coefficientsLength) { + this.coefficients = field.getZero().coefficients; + } else { + this.coefficients = new Array(coefficientsLength - firstNonZero); + Utils.arraycopy(coefficients,firstNonZero,this.coefficients,0,this.coefficients.length); + } + } else + { + this.coefficients = coefficients; + } + } + + public function getCoefficients():Array { + return coefficients; + } + + /** + * @return degree of this polynomial + */ + public function getDegree():int { + return coefficients.length - 1; + } + + /** + * @return true iff this polynomial is the monomial "0" + */ + public function isZero():Boolean { + return coefficients[0] == 0; + } + + /** + * @return coefficient of x^degree term in this polynomial + */ + public function getCoefficient(degree:int):int + { + return coefficients[coefficients.length - 1 - degree]; + } + + /** + * @return evaluation of this polynomial at a given point + */ + public function evaluateAt(a:int):int { + if (a == 0) { + // Just return the x^0 coefficient + return getCoefficient(0); + } + var size:int = coefficients.length; + if (a == 1) { + // Just the sum of the coefficients + var result:int = 0; + for (var i:int = 0; i < size; i++) { + result = GenericGF.addOrSubtract(result, coefficients[i]); + } + return result; + } + result = coefficients[0]; + for (i = 1; i < size; i++) { + result = GenericGF.addOrSubtract(field.multiply(a, result), coefficients[i]); + } + return result; + } + + public function addOrSubtract(other:GenericGFPoly):GenericGFPoly { + if (!field.Equals(other.field)) { + throw new IllegalArgumentException("GenericGFPolys do not have same GenericGF field"); + } + if (isZero()) { + return other; + } + if (other.isZero()) { + return this; + } + + var smallerCoefficients:Array = this.coefficients; + var largerCoefficients:Array = other.coefficients; + if (smallerCoefficients.length > largerCoefficients.length) { + var temp:Array = smallerCoefficients; + smallerCoefficients = largerCoefficients; + largerCoefficients = temp; + } + var sumDiff:Array = new Array(largerCoefficients.length); + var lengthDiff:int = largerCoefficients.length - smallerCoefficients.length; + // Copy high-order terms only found in higher-degree polynomial's coefficients + Utils.arraycopy(largerCoefficients, 0, sumDiff, 0, lengthDiff); + + for (var i:int = lengthDiff; i < largerCoefficients.length; i++) { + sumDiff[i] = GenericGF.addOrSubtract(smallerCoefficients[i - lengthDiff], largerCoefficients[i]); + } + + return new GenericGFPoly(field, sumDiff); + } + + public function multiply(other:*):GenericGFPoly + { + if (other is int) { return this.multiply_scalar(other as int);} + other = (other as GenericGFPoly); + if (!field.Equals(other.field)) { + throw new IllegalArgumentException("GenericGFPolys do not have same GenericGF field"); + } + if (isZero() || other.isZero()) { + return field.getZero(); + } + var aCoefficients:Array = this.coefficients; + var aLength:int = aCoefficients.length; + var bCoefficients:Array = other.coefficients; + var bLength:int = bCoefficients.length; + var product:Array = new Array(aLength + bLength - 1); + for (var i:int = 0; i < aLength; i++) { + var aCoeff:int = aCoefficients[i]; + for (var j:int = 0; j < bLength; j++) { + product[i + j] = GenericGF.addOrSubtract(product[i + j], + field.multiply(aCoeff, bCoefficients[j])); + } + } + return new GenericGFPoly(field, product); + } + + public function multiply_scalar(scalar:int):GenericGFPoly { + if (scalar == 0) { + return field.getZero(); + } + if (scalar == 1) { + return this; + } + var size:int = coefficients.length; + var product:Array = new Array(size); + for (var i:int = 0; i < size; i++) { + product[i] = field.multiply(coefficients[i], scalar); + } + return new GenericGFPoly(field, product); + } + + public function multiplyByMonomial(degree:int, coefficient:int):GenericGFPoly { + if (degree < 0) { + throw new IllegalArgumentException(); + } + if (coefficient == 0) { + return field.getZero(); + } + var size:int = coefficients.length; + var product:Array = new Array(size + degree); + for (var i:int = 0; i < size; i++) + { + product[i] = field.multiply(coefficients[i], coefficient); + } + return new GenericGFPoly(field, product); + } + + public function divide(other:GenericGFPoly):Array + { + if (!field.Equals(other.field)) + { + throw new IllegalArgumentException("GenericGFPolys do not have same GenericGF field"); + } + if (other.isZero()) + { + throw new IllegalArgumentException("Divide by 0"); + } + + var quotient:GenericGFPoly = field.getZero(); + var remainder:GenericGFPoly = this; + + var denominatorLeadingTerm:int = other.getCoefficient(other.getDegree()); + var inverseDenominatorLeadingTerm:int = field.inverse(denominatorLeadingTerm); + + while (remainder.getDegree() >= other.getDegree() && !remainder.isZero()) { + var degreeDifference:int = remainder.getDegree() - other.getDegree(); + var scale:int = field.multiply(remainder.getCoefficient(remainder.getDegree()), inverseDenominatorLeadingTerm); + var term:GenericGFPoly = other.multiplyByMonomial(degreeDifference, scale); + var iterationQuotient:GenericGFPoly = field.buildMonomial(degreeDifference, scale); + quotient = quotient.addOrSubtract(iterationQuotient); + remainder = remainder.addOrSubtract(term); + } + + return [ quotient, remainder ]; + } + + public function toString():String + { + var result:StringBuilder = new StringBuilder(8 * getDegree()); + for (var degree:int = getDegree(); degree >= 0; degree--) { + var coefficient:int = getCoefficient(degree); + if (coefficient != 0) { + if (coefficient < 0) { + result.Append(" - "); + coefficient = -coefficient; + } else { + if (result.length > 0) { + result.Append(" + "); + } + } + if (degree == 0 || coefficient != 1) { + var alphaPower:int = field.log(coefficient); + if (alphaPower == 0) { + result.Append('1'); + } else if (alphaPower == 1) { + result.Append('a'); + } else { + result.Append("a^"); + result.Append(alphaPower); + } + } + if (degree != 0) { + if (degree == 1) { + result.Append('x'); + } else { + result.Append("x^"); + result.Append(degree); + } + } + } + } + return result.toString(); + } + + public function Equals(other:GenericGFPoly):Boolean + { + + if (this.field == other.field) + { + if (this.coefficients.length == other.coefficients.length) + { + for (var i:int=0;iImplements Reed-Solomon decoding, as the name implies.

+ * + *

The algorithm will not be explained here, but the following references were helpful + * in creating this implementation:

+ * + * + * + *

Much credit is due to William Rucklidge since portions of this code are an indirect + * port of his C++ Reed-Solomon implementation.

+ * + * @author Sean Owen + * @author William Rucklidge + * @author sanfordsquires + */ +public class ReedSolomonDecoder { + + private var field:GenericGF; + + public function ReedSolomonDecoder(field:GenericGF) + { + this.field = field; + } + + /** + *

Decodes given set of received codewords, which include both data and error-correction + * codewords. Really, this means it uses Reed-Solomon to detect and correct errors, in-place, + * in the input.

+ * + * @param received data and error-correction codewords + * @param twoS number of error-correction codewords available + * @throws ReedSolomonException if decoding fails for any reason + */ + public function decode(received:Array, twoS:int):void + { + /* debug */ + /*received = [66,102,135,71,71,3,162,242,246,118,246,246,118,198,82,230,54,246,210,246,119,119,66,246,227, + 247,83,214,38,199,86,86,230,150,198,82,230,54,246,208,236,17,236,17,236,17,236,17,236,17, + 236,17,236,17,236,69,165,146,99,159,55,25,86,244,208,192,209,50,8,174]; + twoS = 15; + */ + /* debug */ + + var poly:GenericGFPoly = new GenericGFPoly(field, received); + var syndromeCoefficients:Array = new Array(twoS); + var dataMatrix:Boolean = field.Equals(GenericGF.DATA_MATRIX_FIELD_256); + var noError:Boolean = true; + for (var i:int = 0; i < twoS; i++) { + // Thanks to sanfordsquires for this fix: + var eval:int = poly.evaluateAt(field.exp(dataMatrix ? i + 1 : i)); + syndromeCoefficients[syndromeCoefficients.length - 1 - i] = eval; + if (eval != 0) { + noError = false; + } + } + if (noError) { + return; + } + var syndrome:GenericGFPoly = new GenericGFPoly(field, syndromeCoefficients); + var sigmaOmega:Array = runEuclideanAlgorithm(field.buildMonomial(twoS, 1), syndrome, twoS); + var sigma:GenericGFPoly = sigmaOmega[0]; + var omega:GenericGFPoly = sigmaOmega[1]; + var errorLocations:Array = findErrorLocations(sigma); + var errorMagnitudes:Array = findErrorMagnitudes(omega, errorLocations, dataMatrix); + for (i = 0; i < errorLocations.length; i++) { + var position:int = received.length - 1 - field.log(errorLocations[i]); + if (position < 0) { + throw new ReedSolomonException("Bad error location"); + } + received[position] = GenericGF.addOrSubtract(received[position], errorMagnitudes[i]); + } + } + + private function runEuclideanAlgorithm(a:GenericGFPoly, b:GenericGFPoly, R:int):Array + { + // Assume a's degree is >= b's + if (a.getDegree() < b.getDegree()) { + var temp:GenericGFPoly = a; + a = b; + b = temp; + } + + var rLast:GenericGFPoly = a; + var r:GenericGFPoly = b; + var sLast:GenericGFPoly = field.getOne(); + var s:GenericGFPoly = field.getZero(); + var tLast:GenericGFPoly = field.getZero(); + var t:GenericGFPoly = field.getOne(); + + // Run Euclidean algorithm until r's degree is less than R/2 + while (r.getDegree() >= R / 2) { + var rLastLast:GenericGFPoly = rLast; + var sLastLast:GenericGFPoly = sLast; + var tLastLast:GenericGFPoly = tLast; + rLast = r; + sLast = s; + tLast = t; + + // Divide rLastLast by rLast, with quotient in q and remainder in r + if (rLast.isZero()) + { + // Oops, Euclidean algorithm already terminated? + throw new ReedSolomonException("r_{i-1} was zero"); + } + r = rLastLast; + var q:GenericGFPoly = field.getZero(); + var denominatorLeadingTerm:int = rLast.getCoefficient(rLast.getDegree()); + var dltInverse:int = field.inverse(denominatorLeadingTerm); + while (r.getDegree() >= rLast.getDegree() && !r.isZero()) { + var degreeDiff:int = r.getDegree() - rLast.getDegree(); + var scale:int = field.multiply(r.getCoefficient(r.getDegree()), dltInverse); + q = q.addOrSubtract(field.buildMonomial(degreeDiff, scale)); + r = r.addOrSubtract(rLast.multiplyByMonomial(degreeDiff, scale)); + } + + s = q.multiply(sLast).addOrSubtract(sLastLast); + t = q.multiply(tLast).addOrSubtract(tLastLast); + } + + var sigmaTildeAtZero:int = t.getCoefficient(0); + if (sigmaTildeAtZero == 0) { + throw new ReedSolomonException("sigmaTilde(0) was zero"); + } + + var inverse:int = field.inverse(sigmaTildeAtZero); + var sigma:GenericGFPoly = t.multiply(inverse); + var omega:GenericGFPoly = r.multiply(inverse); + return [sigma, omega]; + } + + private function findErrorLocations(errorLocator:GenericGFPoly ) :Array { + // This is a direct application of Chien's search + var numErrors:int = errorLocator.getDegree(); + if (numErrors == 1) + { // shortcut + return [errorLocator.getCoefficient(1) ]; + } + var result:Array = new Array(numErrors); + var e:int = 0; + for (var i:int = 1; i < field.getSize() && e < numErrors; i++) + { + if (errorLocator.evaluateAt(i) == 0) + { + result[e] = field.inverse(i); + e++; + } + } + if (e != numErrors) { + throw new ReedSolomonException("Error locator degree does not match number of roots"); + } + return result; + } + + private function findErrorMagnitudes(errorEvaluator:GenericGFPoly, errorLocations:Array, dataMatrix:Boolean):Array { + // This is directly applying Forney's Formula + var s:int = errorLocations.length; + var result:Array = new Array(s); + for (var i:int = 0; i < s; i++) { + var xiInverse:int = field.inverse(errorLocations[i]); + var denominator:int = 1; + for (var j:int = 0; j < s; j++) { + if (i != j) + { + //denominator = field.multiply(denominator, GenericGF.addOrSubtract(1, field.multiply(errorLocations[j], xiInverse))); + // Above should work but fails on some Apple and Linux JDKs due to a Hotspot bug. + // Below is a funny-looking workaround from Steven Parkes + var term:int = field.multiply(errorLocations[j], xiInverse); + var termPlus1:int = (term & 0x1) == 0 ? term | 1 : term & ~1; + denominator = field.multiply(denominator, termPlus1); + } + } + result[i] = field.multiply(errorEvaluator.evaluateAt(xiInverse),field.inverse(denominator)); + // Thanks to sanfordsquires for this fix: + if (dataMatrix) + { + result[i] = field.multiply(result[i], xiInverse); + } + } + return result; + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/common/reedsolomon/ReedSolomonEncoder.as b/FairyGUI-as3/src/com/google/zxing/common/reedsolomon/ReedSolomonEncoder.as new file mode 100644 index 0000000..100c786 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/common/reedsolomon/ReedSolomonEncoder.as @@ -0,0 +1,83 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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 com.google.zxing.common.reedsolomon +{ + +import com.google.zxing.common.flexdatatypes.ArrayList; +import com.google.zxing.common.flexdatatypes.IllegalArgumentException; +import com.google.zxing.common.flexdatatypes.Utils; +/** + *

Implements Reed-Solomon enbcoding, as the name implies.

+ * + * @author Sean Owen + * @author William Rucklidge + */ +public class ReedSolomonEncoder +{ + + private var field:GenericGF; + private var cachedGenerators:ArrayList; + + public function ReedSolomonEncoder(field:GenericGF ) { + if (!GenericGF.QR_CODE_FIELD_256.Equals(field)) { + throw new IllegalArgumentException("Only QR Code is supported at this time"); + } + this.field = field; + this.cachedGenerators = new ArrayList(); + cachedGenerators.addElement(new GenericGFPoly(field, [ 1 ])); + } + + private function buildGenerator(degree:int):GenericGFPoly { + if (degree >= cachedGenerators.size()) { + var lastGenerator:GenericGFPoly= (cachedGenerators.elementAt(cachedGenerators.size() - 1) as GenericGFPoly); + for (var d:int = cachedGenerators.size(); d <= degree; d++) { + var nextGenerator:GenericGFPoly = lastGenerator.multiply(new GenericGFPoly(field, [ 1, field.exp(d - 1) ])); + cachedGenerators.addElement(nextGenerator); + lastGenerator = nextGenerator; + } + } + return (cachedGenerators.elementAt(degree) as GenericGFPoly) + } + + public function encode(toEncode:Array, ecBytes:int):void + { + if (ecBytes == 0) + { + throw new IllegalArgumentException("No error correction bytes"); + } + var dataBytes:int = toEncode.length - ecBytes; + if (dataBytes <= 0) + { + throw new IllegalArgumentException("No data bytes provided"); + } + var generator:GenericGFPoly = buildGenerator(ecBytes); + var infoCoefficients:Array = new Array(dataBytes); + Utils.arraycopy(toEncode, 0, infoCoefficients, 0, dataBytes); + var info:GenericGFPoly = new GenericGFPoly(field, infoCoefficients); + info = info.multiplyByMonomial(ecBytes, 1); + var remainder:GenericGFPoly = info.divide(generator)[1]; + var coefficients:Array = remainder.getCoefficients(); + var numZeroCoefficients:int = ecBytes - coefficients.length; + for (var i:int = 0; i < numZeroCoefficients; i++) + { + toEncode[dataBytes + i] = 0; + } + Utils.arraycopy(coefficients, 0, toEncode, dataBytes + numZeroCoefficients, coefficients.length); + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/common/reedsolomon/ReedSolomonException.as b/FairyGUI-as3/src/com/google/zxing/common/reedsolomon/ReedSolomonException.as new file mode 100644 index 0000000..b5cbbe7 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/common/reedsolomon/ReedSolomonException.as @@ -0,0 +1,34 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing.common.reedsolomon +{ + + /** + *

Thrown when an exception occurs during Reed-Solomon decoding, such as when + * there are too many errors to correct.

+ * + * @author Sean Owen + */ + public class ReedSolomonException extends Error + { + public function ReedSolomonException(message:String) + { + super(message); + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/common/zxingByteArray.as b/FairyGUI-as3/src/com/google/zxing/common/zxingByteArray.as new file mode 100644 index 0000000..06caa2a --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/common/zxingByteArray.as @@ -0,0 +1,153 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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 com.google.zxing.common +{ +/** + * This class implements an array of unsigned bytes. + * + * @author dswitkin@google.com (Daniel Switkin) + */ public class zxingByteArray + { + + private static var INITIAL_SIZE:int = 32; + + private var bytes:Array; + private var Size:int; + + public function zxingByteArray(size:Object=null) + { + if (size == null) + { + bytes = null; + this.Size = 0; + } + else if (size is int) + { + bytes = new Array(int(size)); + this.Size = int(size); + } + else if (size is Array) + { + bytes = (size as Array); + this.Size = size.length; + + } + else + { + throw new Error("unknown type of size"); + } + + } + + /** + * Access an unsigned byte at location index. + * @param index The index in the array to access. + * @return The unsigned value of the byte as an int. + */ + public function at(index:int):int + { + return bytes[index] & 0xff; + } + + /*public function set(index:int, value:int):void + { + // Flex doesn't know bytes -> make it a byte + if (value > 127) { value = 256 - value); + bytes[index] = value; + }*/ + + public function setByte(index:int, value:int):void + { + // Flex doesn't know bytes -> make it a byte + if (value > 127) { value = (256 - value)*-1;} + bytes[index] = value; + } + + + public function getByte(index:int):int + { + return bytes[index]; + } + + public function size():int + { + return Size; + } + + public function empty():Boolean + { + return (Size == 0); + } + + public function appendByte(value:int):void + { + if (Size == 0 || Size >= bytes.length) + { + var newSize:int = Math.max(INITIAL_SIZE, Size << 1); + reserve(newSize); + } + // Flex doesn't know bytes -> make it a byte + if (value > 127) { value = (256 - value)*-1;} + bytes[Size] = value; + Size++; + } + + public function reserve(capacity:int):void + { + if (bytes == null || bytes.length < capacity) + { + var newArray:Array = new Array(capacity); + if (bytes != null) + { + //System.Array.Copy(bytes, 0, newArray, 0, bytes.length); + for (var i:int=0;i make it a byte + if (source[offset + x] > 127) + { + bytes[x] = (256-source[offset + x])*-1; + } + else + { + bytes[x] = source[offset + x]; + + } + } + } + } + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/datamatrix/DataMatrixReader.as b/FairyGUI-as3/src/com/google/zxing/datamatrix/DataMatrixReader.as new file mode 100644 index 0000000..55674ae --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/datamatrix/DataMatrixReader.as @@ -0,0 +1,172 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing.datamatrix +{ + import com.google.zxing.BarcodeFormat; + import com.google.zxing.DecodeHintType; + import com.google.zxing.BinaryBitmap; + import com.google.zxing.Reader; + import com.google.zxing.ReaderException; + import com.google.zxing.Result; + import com.google.zxing.ResultPoint; + import com.google.zxing.ResultMetadataType; + import com.google.zxing.common.BitMatrix; + import com.google.zxing.common.DecoderResult; + import com.google.zxing.common.DetectorResult; + import com.google.zxing.datamatrix.decoder.Decoder; + import com.google.zxing.datamatrix.detector.Detector; + import com.google.zxing.common.flexdatatypes.HashTable; + import com.google.zxing.NotFoundException; + + + + + public class DataMatrixReader implements Reader + { + + + public function reset():void { + // do nothing + } + /** + * This implementation can detect and decode Data Matrix codes in an image. + * + * @author bbrown@google.com (Brian Brown) + */ + + public function DataMatrixReader() + {} + + private static var NO_POINTS:Array = new Array(); + private var decoder:Decoder = new Decoder(); + + /** + * Locates and decodes a Data Matrix code in an image. + * + * @return a String representing the content encoded by the Data Matrix code + * @throws ReaderException if a Data Matrix code cannot be found, or cannot be decoded + */ +/* public function decode( image:MonochromeBitmapSource):Result { + return decode(image, null); + } +*/ + + public function decode( image:BinaryBitmap, hints:HashTable=null):Result + { + var decoderResult:DecoderResult ; + var points:Array; + if (hints != null && hints.ContainsKey(DecodeHintType.PURE_BARCODE)) + { + var bits:BitMatrix = extractPureBits(image.getBlackMatrix()); + decoderResult = decoder.decode(bits); + points = NO_POINTS; + } + else + { + var bm:BitMatrix = image.getBlackMatrix(); + var detectorResult:DetectorResult = new Detector(bm).detect(); + decoderResult = decoder.decode(detectorResult.getBits()); + points = detectorResult.getPoints(); + } + var result:Result = new Result(decoderResult.getText(), decoderResult.getRawBytes(), points, BarcodeFormat.DATAMATRIX); + if (decoderResult.getByteSegments() != null) { + result.putMetadata(ResultMetadataType.BYTE_SEGMENTS, decoderResult.getByteSegments()); + } + if (decoderResult.getECLevel() != null) + { + result.putMetadata(ResultMetadataType.ERROR_CORRECTION_LEVEL, decoderResult.getECLevel().toString()); + } + + return result; + } + + /** + * This method detects a Data Matrix code in a "pure" image -- that is, pure monochrome image + * which contains only an unrotated, unskewed, image of a Data Matrix code, with some white border + * around it. This is a specialized method that works exceptionally fast in this special + * case. + */ + private static function extractPureBits(image:BitMatrix):BitMatrix + { + var leftTopBlack:Array = image.getTopLeftOnBit(); + var rightBottomBlack:Array = image.getBottomRightOnBit(); + if (leftTopBlack == null || rightBottomBlack == null) + { + throw NotFoundException.getNotFoundInstance(); + } + + var moduleSize:int = moduleSize(leftTopBlack, image); + + var top:int = leftTopBlack[1]; + var bottom:int = rightBottomBlack[1]; + var left:int = leftTopBlack[0]; + var right:int = rightBottomBlack[0]; + + var matrixWidth:int = (right - left + 1) / moduleSize; + var matrixHeight:int = (bottom - top + 1) / moduleSize; + if (matrixWidth <= 0 || matrixHeight <= 0) + { + throw NotFoundException.getNotFoundInstance(); + } + + // Push in the "border" by half the module width so that we start + // sampling in the middle of the module. Just in case the image is a + // little off, this will help recover. + var nudge:int = moduleSize >> 1; + top += nudge; + left += nudge; + + // Now just read off the bits + var bits:BitMatrix = new BitMatrix(matrixWidth, matrixHeight); + for (var y:int = 0; y < matrixHeight; y++) + { + var iOffset:int = top + y * moduleSize; + for (var x:int = 0; x < matrixWidth; x++) + { + if (image._get(left + x * moduleSize, iOffset)) + { + bits._set(x, y); + } + } + } + + return bits; + } + + private static function moduleSize(leftTopBlack:Array, image:BitMatrix):int + { + var width:int = image.getWidth(); + var x:int = leftTopBlack[0]; + var y:int = leftTopBlack[1]; + while (x < width && image._get(x, y)) + { + x++; + } + if (x == width) + { + throw NotFoundException.getNotFoundInstance(); + } + + var moduleSize:int = x - leftTopBlack[0]; + if (moduleSize == 0) + { + throw NotFoundException.getNotFoundInstance(); + } + return moduleSize; + } + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/BitMatrixParser.as b/FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/BitMatrixParser.as new file mode 100644 index 0000000..7f31f40 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/BitMatrixParser.as @@ -0,0 +1,454 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing.datamatrix.decoder +{ + import com.google.zxing.common.BitMatrix; + import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + import com.google.zxing.ReaderException; + /** + * @author bbrown@google.com (Brian Brown) + */ + public class BitMatrixParser + { + + private var mappingBitMatrix:BitMatrix; + private var readMappingMatrix:BitMatrix; + private var version:Version; + + /** + * @param bitMatrix {@link BitMatrix} to parse + * @throws ReaderException if dimension is < 10 or > 144 or not 0 mod 2 + */ + public function BitMatrixParser(bitMatrix:BitMatrix) { + var dimension:int = bitMatrix.getHeight(); + if (dimension < 8 || dimension > 144 || (dimension & 0x01) != 0) { + throw new ReaderException("BitMatrixParser : Dimension out of range :"+dimension+" range 11~143 or uneven number"); + } + + version = readVersion(bitMatrix); + this.mappingBitMatrix = extractDataRegion(bitMatrix); + this.readMappingMatrix = new BitMatrix(this.mappingBitMatrix.getWidth(), this.mappingBitMatrix.getHeight()); + } + + /** + *

Creates the version object based on the dimension of the original bit matrix from + * the datamatrix code.

+ * + *

See ISO 16022:2006 Table 7 - ECC 200 symbol attributes

+ * + * @param bitMatrix Original {@link BitMatrix} including alignment patterns + * @return {@link Version} encapsulating the Data Matrix Code's "version" + * @throws ReaderException if the dimensions of the mapping matrix are not valid + * Data Matrix dimensions. + */ + public function readVersion(bitMatrix:BitMatrix ):Version + { + var numRows:int = bitMatrix.getHeight(); + var numColumns:int = bitMatrix.getWidth(); + return Version.getVersionForDimensions(numRows, numColumns); + } + + /** + *

Reads the bits in the {@link BitMatrix} representing the mapping matrix (No alignment patterns) + * in the correct order in order to reconstitute the codewords bytes contained within the + * Data Matrix Code.

+ * + * @return bytes encoded within the Data Matrix Code + * @throws ReaderException if the exact number of bytes expected is not read + */ + public function readCodewords():Array { + + var result:Array = new Array(version.getTotalCodewords()); + var resultOffset:int = 0; + + var row:int = 4; + var column:int = 0; + + var numRows:int = mappingBitMatrix.getHeight(); + var numColumns:int = mappingBitMatrix.getWidth(); + + var corner1Read:Boolean = false; + var corner2Read:Boolean = false; + var corner3Read:Boolean = false; + var corner4Read:Boolean = false; + + // Read all of the codewords + do { + // Check the four corner cases + if ((row == numRows) && (column == 0) && !corner1Read) { + result[resultOffset++] = int(readCorner1(numRows, numColumns)); + row -= 2; + column +=2; + corner1Read = true; + } else if ((row == numRows-2) && (column == 0) && ((numColumns & 0x03) != 0) && !corner2Read) { + result[resultOffset++] = int(readCorner2(numRows, numColumns)); + row -= 2; + column +=2; + corner2Read = true; + } else if ((row == numRows+4) && (column == 2) && ((numColumns & 0x07) == 0) && !corner3Read) { + result[resultOffset++] = int(readCorner3(numRows, numColumns)); + row -= 2; + column +=2; + corner3Read = true; + } else if ((row == numRows-2) && (column == 0) && ((numColumns & 0x07) == 4) && !corner4Read) { + result[resultOffset++] = int(readCorner4(numRows, numColumns)); + row -= 2; + column +=2; + corner4Read = true; + } else { + // Sweep upward diagonally to the right + do { + if ((row < numRows) && (column >= 0) && !readMappingMatrix._get(column,row)) { + result[resultOffset++] = readUtah(row, column, numRows, numColumns); + } + row -= 2; + column +=2; + } while ((row >= 0) && (column < numColumns)); + row += 1; + column +=3; + + // Sweep downward diagonally to the left + do { + if ((row >= 0) && (column < numColumns) && !readMappingMatrix._get(column,row)) { + result[resultOffset++] = readUtah(row, column, numRows, numColumns); + } + row += 2; + column -=2; + } while ((row < numRows) && (column >= 0)); + row += 3; + column +=1; + } + } while ((row < numRows) || (column < numColumns)); + + if (resultOffset != version.getTotalCodewords()) { + throw new ReaderException("BitMatrixParser : readCodewords : resultOffset != version.getTotalCodewords() : "+resultOffset +" - "+ version.getTotalCodewords()); + } + + // extra code for Flex : result should be a signed byte array (bit 7 = sign) + for (var jj:int=0;jj 0 ) + { + result[jj] = (result[jj] & 127) - 128 + } + } + return result; + } + + /** + *

Reads a bit of the mapping matrix accounting for boundary wrapping.

+ * + * @param row Row to read in the mapping matrix + * @param column Column to read in the mapping matrix + * @param numRows Number of rows in the mapping matrix + * @param numColumns Number of columns in the mapping matrix + * @return value of the given bit in the mapping matrix + */ + public function readModule(row:int , column:int , numRows:int , numColumns:int ):Boolean { + // Adjust the row and column indices based on boundary wrapping + if (row < 0) + { + row += numRows; + column += 4 - ((numRows + 4) & 0x07); + } + if (column < 0) + { + column += numColumns; + row += 4 - ((numColumns + 4) & 0x07); + } + readMappingMatrix._set(column,row); + return mappingBitMatrix._get(column,row); + } + + /** + *

Reads the 8 bits of the standard utah shaped pattern.

+ * + *

See ISO 16022:2006, 5.8.1 Figure 6

+ * + * @param row Current row in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + * @param column Current column in the mapping matrix, anchored at the 8th bit (LSB) of the pattern + * @param numRows Number of rows in the mapping matrix + * @param numColumns Number of columns in the mapping matrix + * @return byte from the utah shape + */ + public function readUtah(row:int , column:int , numRows:int , numColumns:int ):int + { + var currentByte:int = 0; + if (readModule(row - 2, column - 2, numRows, numColumns)) + { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(row - 2, column - 1, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(row - 1, column - 2, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(row - 1, column - 1, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(row - 1, column, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(row, column - 2, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(row, column - 1, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(row, column, numRows, numColumns)) { + currentByte |= 1; + } + return currentByte; + } + + /** + *

Reads the 8 bits of the special corner condition 1.

+ * + *

See ISO 16022:2006, Figure F.3

+ * + * @param numRows Number of rows in the mapping matrix + * @param numColumns Number of columns in the mapping matrix + * @return byte from the Corner condition 1 + */ + public function readCorner1(numRows:int, numColumns:int):int { + var currentByte:int = 0; + if (readModule(numRows - 1, 0, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(numRows - 1, 1, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(numRows - 1, 2, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(0, numColumns - 2, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(0, numColumns - 1, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(1, numColumns - 1, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(2, numColumns - 1, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(3, numColumns - 1, numRows, numColumns)) { + currentByte |= 1; + } + return currentByte; + } + + /** + *

Reads the 8 bits of the special corner condition 2.

+ * + *

See ISO 16022:2006, Figure F.4

+ * + * @param numRows Number of rows in the mapping matrix + * @param numColumns Number of columns in the mapping matrix + * @return byte from the Corner condition 2 + */ + public function readCorner2(numRows:int, numColumns:int):int { + var currentByte:int = 0; + if (readModule(numRows - 3, 0, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(numRows - 2, 0, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(numRows - 1, 0, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(0, numColumns - 4, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(0, numColumns - 3, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(0, numColumns - 2, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(0, numColumns - 1, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(1, numColumns - 1, numRows, numColumns)) { + currentByte |= 1; + } + return currentByte; + } + + /** + *

Reads the 8 bits of the special corner condition 3.

+ * + *

See ISO 16022:2006, Figure F.5

+ * + * @param numRows Number of rows in the mapping matrix + * @param numColumns Number of columns in the mapping matrix + * @return byte from the Corner condition 3 + */ + public function readCorner3(numRows:int, numColumns:int):int { + var currentByte:int = 0; + if (readModule(numRows - 1, 0, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(numRows - 1, numColumns - 1, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(0, numColumns - 3, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(0, numColumns - 2, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(0, numColumns - 1, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(1, numColumns - 3, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(1, numColumns - 2, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(1, numColumns - 1, numRows, numColumns)) { + currentByte |= 1; + } + return currentByte; + } + + /** + *

Reads the 8 bits of the special corner condition 4.

+ * + *

See ISO 16022:2006, Figure F.6

+ * + * @param numRows Number of rows in the mapping matrix + * @param numColumns Number of columns in the mapping matrix + * @return byte from the Corner condition 4 + */ + public function readCorner4(numRows:int, numColumns:int):int { + var currentByte:int = 0; + if (readModule(numRows - 3, 0, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(numRows - 2, 0, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(numRows - 1, 0, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(0, numColumns - 2, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(0, numColumns - 1, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(1, numColumns - 1, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(2, numColumns - 1, numRows, numColumns)) { + currentByte |= 1; + } + currentByte <<= 1; + if (readModule(3, numColumns - 1, numRows, numColumns)) { + currentByte |= 1; + } + return currentByte; + } + + /** + *

Extracts the data region from a {@link BitMatrix} that contains + * alignment patterns.

+ * + * @param bitMatrix Original {@link BitMatrix} with alignment patterns + * @return BitMatrix that has the alignment patterns removed + */ + public function extractDataRegion( bitMatrix:BitMatrix):BitMatrix { + var symbolSizeRows:int = version.getSymbolSizeRows(); + var symbolSizeColumns:int = version.getSymbolSizeColumns(); + + if (bitMatrix.getHeight() != symbolSizeRows) { + throw new IllegalArgumentException("Dimension of bitMarix must match the version size"); + } + + var dataRegionSizeRows:int = version.getDataRegionSizeRows(); + var dataRegionSizeColumns:int = version.getDataRegionSizeColumns(); + + var numDataRegionsRow:int = symbolSizeRows / dataRegionSizeRows; + var numDataRegionsColumn:int = symbolSizeColumns / dataRegionSizeColumns; + + var sizeDataRegionRow:int = numDataRegionsRow * dataRegionSizeRows; + var sizeDataRegionColumn:int = numDataRegionsColumn * dataRegionSizeColumns; + + // TODO(bbrown): Make this work with rectangular codes + var bitMatrixWithoutAlignment:BitMatrix = new BitMatrix(sizeDataRegionColumn,sizeDataRegionRow); + for (var dataRegionRow:int = 0; dataRegionRow < numDataRegionsRow; ++dataRegionRow) { + var dataRegionRowOffset:int = dataRegionRow * dataRegionSizeRows; + for (var dataRegionColumn:int = 0; dataRegionColumn < numDataRegionsColumn; ++dataRegionColumn) { + var dataRegionColumnOffset:int = dataRegionColumn * dataRegionSizeColumns; + for (var i:int = 0; i < dataRegionSizeRows; ++i) { + var readRowOffset:int = dataRegionRow * (dataRegionSizeRows + 2) + 1 + i; + var writeRowOffset:int = dataRegionRowOffset + i; + for (var j:int = 0; j < dataRegionSizeColumns; ++j) { + var readColumnOffset:int = dataRegionColumn * (dataRegionSizeColumns + 2) + 1 + j; + if (bitMatrix._get(readColumnOffset, readRowOffset)) { + var writeColumnOffset:int = dataRegionColumnOffset + j; + bitMatrixWithoutAlignment._set(writeColumnOffset, writeRowOffset); + } + } + } + } + } + + return bitMatrixWithoutAlignment; + } + + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/DataBlock.as b/FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/DataBlock.as new file mode 100644 index 0000000..d50cf90 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/DataBlock.as @@ -0,0 +1,121 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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 com.google.zxing.datamatrix.decoder +{ + /** + *

Encapsulates a block of data within a Data Matrix Code. Data Matrix Codes may split their data into + * multiple blocks, each of which is a unit of data and error-correction codewords. Each + * is represented by an instance of this class.

+ * + * @author bbrown@google.com (Brian Brown) + */ + public class DataBlock + { + import com.google.zxing.datamatrix.decoder.ECB; + import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + + private var numDataCodewords:int; + private var codewords:Array; + + public function DataBlock(numDataCodewords:int, codewords:Array) { + this.numDataCodewords = numDataCodewords; + this.codewords = codewords; + } + + /** + *

When Data Matrix Codes use multiple data blocks, they actually interleave the bytes of each of them. + * That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + * method will separate the data into original blocks.

+ * + * @param rawCodewords bytes as read directly from the Data Matrix Code + * @param version version of the Data Matrix Code + * @return {@link DataBlock}s containing original bytes, "de-interleaved" from representation in the + * Data Matrix Code + */ + public static function getDataBlocks(rawCodewords:Array, + version:Version):Array { + // Figure out the number and size of data blocks used by this version + var ecBlocks:ECBlocks = version.getECBlocks(); + + // First count the total number of data blocks + var totalBlocks:int = 0; + var ecBlockArray:Array = ecBlocks.getECBlocks(); + for (var i:int = 0; i < ecBlockArray.length; i++) { + totalBlocks += ecBlockArray[i].getCount(); + } + // Now establish DataBlocks of the appropriate size and number of data codewords + var result:Array = new Array(totalBlocks); + var numResultBlocks:int = 0; + for (var j:int = 0; j < ecBlockArray.length; j++) { + var ecBlock:ECB = ecBlockArray[j]; + for (var i3:int = 0; i3 < ecBlock.getCount(); i3++) { + var numDataCodewords:int = ecBlock.getDataCodewords(); + var numBlockCodewords:int = ecBlocks.getECCodewords() + numDataCodewords; + result[numResultBlocks++] = new DataBlock(numDataCodewords, new Array(numBlockCodewords)); + } + } + + // All blocks have the same amount of data, except that the last n + // (where n may be 0) have 1 less byte. Figure out where these start. + // TODO(bbrown): There is only one case where there is a difference for Data Matrix for size 144 + var longerBlocksTotalCodewords:int = result[0].codewords.length; + //int shorterBlocksTotalCodewords = longerBlocksTotalCodewords - 1; + + var longerBlocksNumDataCodewords:int = longerBlocksTotalCodewords - ecBlocks.getECCodewords(); + var shorterBlocksNumDataCodewords:int = longerBlocksNumDataCodewords - 1; + // The last elements of result may be 1 element shorter for 144 matrix + // first fill out as many elements as all of them have minus 1 + var rawCodewordsOffset:int = 0; + for (var i2:int = 0; i2 < shorterBlocksNumDataCodewords; i2++) { + for (var j2:int = 0; j2 < numResultBlocks; j2++) + { + result[j2].codewords[i2] = rawCodewords[rawCodewordsOffset++]; + } + } + + // Fill out the last data block in the longer ones + var specialVersion:Boolean = version.getVersionNumber() == 24; + var numLongerBlocks:int = specialVersion ? 8 : numResultBlocks; + for (var j3:int = 0; j3 < numLongerBlocks; j3++) { + result[j3].codewords[longerBlocksNumDataCodewords - 1] = rawCodewords[rawCodewordsOffset++]; + } + + // Now add in error correction blocks + var max:int = result[0].codewords.length; + for (var i4:int = longerBlocksNumDataCodewords; i4 < max; i4++) { + for (var j4:int = 0; j4 < numResultBlocks; j4++) { + var iOffset:int = (specialVersion && j4 > 7) ? i4 - 1 : i4; + result[j4].codewords[iOffset] = rawCodewords[rawCodewordsOffset++]; + } + } + + if (rawCodewordsOffset != rawCodewords.length) { + throw new IllegalArgumentException("DataBlock : getDataBlocks : rawCodewordsOffset != rawCodewords.length : "+rawCodewordsOffset +" - "+rawCodewords.length); + } + + return result; + } + + public function getNumDataCodewords():int { + return numDataCodewords; + } + + public function getCodewords():Array { + return codewords; + } + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/DecodedBitStreamParser.as b/FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/DecodedBitStreamParser.as new file mode 100644 index 0000000..904ba67 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/DecodedBitStreamParser.as @@ -0,0 +1,503 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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 com.google.zxing.datamatrix.decoder +{ + /** + *

Data Matrix Codes can encode text as bits in one of several modes, and can use multiple modes + * in one Data Matrix Code. This class decodes the bits back into text.

+ * + *

See ISO 16022:2006, 5.2.1 - 5.2.9.2

+ * + * @author bbrown@google.com (Brian Brown) + * @author Sean Owen + */ + + public class DecodedBitStreamParser + { + import com.google.zxing.common.flexdatatypes.ArrayList; + import com.google.zxing.common.BitMatrix; + import com.google.zxing.common.BitSource; + import com.google.zxing.common.DecoderResult; + import com.google.zxing.common.flexdatatypes.StringBuilder; + import com.google.zxing.common.zxingByteArray; + import com.google.zxing.ReaderException; + import com.google.zxing.FormatException; + /** + * See ISO 16022:2006, Annex C Table C.1 + * The C40 Basic Character Set (*'s used for placeholders for the shift values) + */ + private static var C40_BASIC_SET_CHARS:Array = [ + '*', '*', '*', ' ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', + 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' + ]; + + private static var C40_SHIFT2_SET_CHARS:Array = [ + '!', '"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', + '/', ':', ';', '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_' + ]; + + /** + * See ISO 16022:2006, Annex C Table C.2 + * The Text Basic Character Set (*'s used for placeholders for the shift values) + */ + private static var TEXT_BASIC_SET_CHARS:Array = [ + '*', '*', '*', ' ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', + 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' + ]; + + private static var TEXT_SHIFT3_SET_CHARS:Array = [ + '\'', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', + 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '{', '|', '}', '~', String.fromCharCode(0x127) + ]; + + public static const PAD_ENCODE:int = 0; // Not really an encoding + public static const ASCII_ENCODE:int = 1; + public static const C40_ENCODE:int = 2; + public static const TEXT_ENCODE:int = 3; + public static const ANSIX12_ENCODE:int = 4; + public static const EDIFACT_ENCODE:int = 5; + public static const BASE256_ENCODE:int = 6; + + public function DecodedBitStreamParser() { + } + + public static function decode(bytes:Array ):DecoderResult { + var bits:BitSource = new BitSource(bytes); + var result:StringBuilder = new StringBuilder(100); + var resultTrailer:StringBuilder = new StringBuilder(0); + var byteSegments:ArrayList = new ArrayList(1); + var mode:int = ASCII_ENCODE; + do { + if (mode == ASCII_ENCODE) { + mode = decodeAsciiSegment(bits, result, resultTrailer); + } else { + switch (mode) { + case C40_ENCODE: + decodeC40Segment(bits, result); + break; + case TEXT_ENCODE: + decodeTextSegment(bits, result); + break; + case ANSIX12_ENCODE: + decodeAnsiX12Segment(bits, result); + break; + case EDIFACT_ENCODE: + decodeEdifactSegment(bits, result); + break; + case BASE256_ENCODE: + decodeBase256Segment(bits, result, byteSegments); + break; + default: + throw new ReaderException("DecodedBitStreamParser : decode : unknown mode : "+mode); + } + mode = ASCII_ENCODE; + } + } while (mode != PAD_ENCODE && bits.available() > 0); + if (resultTrailer.length > 0) { + result.Append(resultTrailer); + } + return new DecoderResult(bytes, result.ToString(), (byteSegments.Count === 0) ? null : byteSegments, null); + } + + /** + * See ISO 16022:2006, 5.2.3 and Annex C, Table C.2 + */ + private static function decodeAsciiSegment(bits:BitSource, result:StringBuilder, resultTrailer:StringBuilder):int + { + var upperShift:Boolean = false; + do { + var oneByte:int = bits.readBits(8); + if (oneByte == 0) { + throw new ReaderException("DecodedBitStreamParser : decodeAsciiSegment : oneByte = 0"); + } else if (oneByte <= 128) { // ASCII data (ASCII value + 1) + oneByte = upperShift ? (oneByte + 128) : oneByte; + upperShift = false; + result.Append(String.fromCharCode(oneByte - 1)); + return ASCII_ENCODE; + } else if (oneByte == 129) { // Pad + return PAD_ENCODE; + } else if (oneByte <= 229) { // 2-digit data 00-99 (Numeric Value + 130) + var value:int = oneByte - 130; + if (value < 10) { // padd with '0' for single digit values + result.Append('0'); + } + result.Append(value); + } else if (oneByte == 230) { // Latch to C40 encodation + return C40_ENCODE; + } else if (oneByte == 231) { // Latch to Base 256 encodation + return BASE256_ENCODE; + } else if (oneByte == 232) { + // FNC1 + result.Append(String.fromCharCode(29));// translate as ASCII 29 + } else if ((oneByte == 233) || (oneByte == 234)) + { // Structured Append, Reader Programming + // Ignore these symbols for now + // throw new ReaderException("DecodedBitStreamParser : decodeAsciiSegment : oneByte = 234"); + } else if (oneByte == 235) { // Upper Shift (shift to Extended ASCII) + upperShift = true; + } else if (oneByte == 236) { // 05 Macro + result.Append("[)>\u001E05\u001D"); + resultTrailer.Insert(0, "\u001E\u0004"); + } else if (oneByte == 237) { // 06 Macro + result.Append("[)>\u001E06\u001D"); + resultTrailer.Insert(0, "\u001E\u0004"); + } else if (oneByte == 238) { // Latch to ANSI X12 encodation + return ANSIX12_ENCODE; + } else if (oneByte == 239) { // Latch to Text encodation + return TEXT_ENCODE; + } else if (oneByte == 240) { // Latch to EDIFACT encodation + return EDIFACT_ENCODE; + } else if (oneByte == 241) { // ECI Character + // TODO(bbrown): I think we need to support ECI + //throw ReaderException.getInstance(); + // Ignore this symbol for now + } else if (oneByte >= 242) { // Not to be used in ASCII encodation + // ... but work around encoders that end with 254, latch back to ASCII + if (oneByte == 254 && bits.available() == 0) { + // Ignore + } else { + throw FormatException.getFormatInstance(); + } + } + } while (bits.available() > 0); + return ASCII_ENCODE; + } + + /** + * See ISO 16022:2006, 5.2.5 and Annex C, Table C.1 + */ + private static function decodeC40Segment(bits:BitSource , result:StringBuilder ):void { + // Three C40 values are encoded in a 16-bit value as + // (1600 * C1) + (40 * C2) + C3 + 1 + // TODO(bbrown): The Upper Shift with C40 doesn't work in the 4 value scenario all the time + var upperShift:Boolean = false; + + var cValues:Array = new Array(3); + do { + // If there is only one byte left then it will be encoded as ASCII + if (bits.available() == 8) { + return; + } + var firstByte:int = bits.readBits(8); + if (firstByte == 254) { // Unlatch codeword + return; + } + + parseTwoBytes(firstByte, bits.readBits(8), cValues); + + var shift:int = 0; + for (var i:int = 0; i < 3; i++) { + var cValue:int = cValues[i]; + switch (shift) { + case 0: + if (cValue < 3) { + shift = cValue + 1; + } else { + if (upperShift) { + result.Append(C40_BASIC_SET_CHARS[cValue] + 128); + upperShift = false; + } else { + result.Append(C40_BASIC_SET_CHARS[cValue]); + } + } + break; + case 1: + if (upperShift) { + result.Append(cValue + 128); + upperShift = false; + } else { + result.Append(cValue); + } + shift = 0; + break; + case 2: + if (cValue < 27) { + if (upperShift) { + result.Append(C40_SHIFT2_SET_CHARS[cValue] + 128); + upperShift = false; + } else { + result.Append(C40_SHIFT2_SET_CHARS[cValue]); + } + } else if (cValue == 27) { // FNC1 + result.Append(String.fromCharCode(29)); // translate as ASCII 29 + } else if (cValue == 30) { // Upper Shift + upperShift = true; + } else { + throw new ReaderException("DecodedBitStreamParser : decodeC40Segment : cValue = no match:"+cValue); + } + shift = 0; + break; + case 3: + if (upperShift) { + result.Append(cValue + 224); + upperShift = false; + } else { + result.Append(cValue + 96); + } + shift = 0; + break; + default: + throw new ReaderException("DecodedBitStreamParser : decodeC40Segment : no match for shift:"+shift); + } + } + } while (bits.available() > 0); + } + + /** + * See ISO 16022:2006, 5.2.6 and Annex C, Table C.2 + */ + private static function decodeTextSegment(bits:BitSource , result:StringBuilder ):void { + // Three Text values are encoded in a 16-bit value as + // (1600 * C1) + (40 * C2) + C3 + 1 + // TODO(bbrown): The Upper Shift with Text doesn't work in the 4 value scenario all the time + var upperShift:Boolean = false; + + var cValues:Array = new Array(3); + do { + // If there is only one byte left then it will be encoded as ASCII + if (bits.available() == 8) { + return; + } + var firstByte:int = bits.readBits(8); + if (firstByte == 254) { // Unlatch codeword + return; + } + + parseTwoBytes(firstByte, bits.readBits(8), cValues); + + var shift:int = 0; + for (var i:int = 0; i < 3; i++) { + var cValue:int = cValues[i]; + switch (shift) { + case 0: + if (cValue < 3) { + shift = cValue + 1; + } else if (cValue < TEXT_BASIC_SET_CHARS.length) { + var textChar:String = TEXT_BASIC_SET_CHARS[cValue]; + if (upperShift) { + result.Append(String.fromCharCode(textChar.charCodeAt(0) + 128)); + upperShift = false; + } else { + result.Append(textChar); + } + } else { + throw FormatException.getFormatInstance(); + } + break; + case 1: + if (upperShift) { + result.Append(cValue + 128); + upperShift = false; + } else { + result.Append(cValue); + } + shift = 0; + break; + case 2: + // Shift 2 for Text is the same encoding as C40 + if (cValue < C40_SHIFT2_SET_CHARS.length) { + var c40char:String =C40_SHIFT2_SET_CHARS[cValue]; + if (upperShift) { + result.Append(c40char + 128); + upperShift = false; + } else { + result.Append(c40char); + } + } else if (cValue == 27) { // FNC1 + result.Append(String.fromCharCode(29)); // translate as ASCII 29 + } else if (cValue == 30) { // Upper Shift + upperShift = true; + } else { + throw new ReaderException("DecodedBitStreamParser : decodeTextSegment : no match for cValue:"+cValue); + } + shift = 0; + break; + case 3: + if (cValue < TEXT_SHIFT3_SET_CHARS.length) + { + var textChar2:String = TEXT_SHIFT3_SET_CHARS[cValue]; + if (upperShift) { + result.Append(textChar2 + 128); + upperShift = false; + } else { + result.Append(textChar2); + } + shift = 0; + + } + else + { + throw new ReaderException(); + } + break; + default: + throw new ReaderException("DecodedBitStreamParser : decodeTextSegment : no match for shift"+shift); + } + } + } while (bits.available() > 0); + } + + /** + * See ISO 16022:2006, 5.2.7 + */ + private static function decodeAnsiX12Segment(bits:BitSource, result:StringBuilder):void { + // Three ANSI X12 values are encoded in a 16-bit value as + // (1600 * C1) + (40 * C2) + C3 + 1 + + var cValues:Array = new Array(3); + do { + // If there is only one byte left then it will be encoded as ASCII + if (bits.available() == 8) { + return; + } + var firstByte:int = bits.readBits(8); + if (firstByte == 254) { // Unlatch codeword + return; + } + + parseTwoBytes(firstByte, bits.readBits(8), cValues); + + for (var i:int = 0; i < 3; i++) { + var cValue:int = cValues[i]; + if (cValue == 0) { // X12 segment terminator + result.Append('\r'); + } else if (cValue == 1) { // X12 segment separator * + result.Append('*'); + } else if (cValue == 2) { // X12 sub-element separator > + result.Append('>'); + } else if (cValue == 3) { // space + result.Append(' '); + } else if (cValue < 14) { // 0 - 9 + result.Append(cValue + 44); + } else if (cValue < 40) { // A - Z + result.Append(cValue + 51); + } else { + throw new ReaderException("DecodedBitStreamParser : decodeTextSegment : no match for cValue : "+ cValue); + } + } + } while (bits.available() > 0); + } + + private static function parseTwoBytes(firstByte:int, secondByte:int, result:Array):void { + var fullBitValue:int = (firstByte << 8) + secondByte - 1; + var temp:int = fullBitValue / 1600; + result[0] = temp; + fullBitValue -= temp * 1600; + temp = fullBitValue / 40; + result[1] = temp; + result[2] = fullBitValue - temp * 40; + } + + /** + * See ISO 16022:2006, 5.2.8 and Annex C Table C.3 + */ + private static function decodeEdifactSegment(bits:BitSource, result:StringBuilder):void { + var unlatch:Boolean = false; + do { + // If there is only two or less bytes left then it will be encoded as ASCII + if (bits.available() <= 16) { + return; + } + + for (var i:int = 0; i < 4; i++) { + var edifactValue:int = bits.readBits(6); + + // Check for the unlatch character + if (edifactValue == 0x2B67) { // 011111 + unlatch = true; + // If we encounter the unlatch code then continue reading because the Codeword triple + // is padded with 0's + } + + if (!unlatch) { + if ((edifactValue & 0x20) == 0) { // no 1 in the leading (6th) bit + edifactValue |= 0x40; // Add a leading 01 to the 6 bit binary value + } + result.Append(edifactValue); + } + } + } while (!unlatch && bits.available() > 0); + } + + /** + * See ISO 16022:2006, 5.2.9 and Annex B, B.2 + */ + private static function decodeBase256Segment(bits:BitSource, result:StringBuilder , byteSegments:ArrayList ):void + { + // Figure out how long the Base 256 Segment is. + // Figure out how long the Base 256 Segment is. + var codewordPosition:int = 1 + bits.getByteOffset(); // position is 1-indexed + var d1:int = unrandomize255State(bits.readBits(8), codewordPosition++); + var count:int; + if (d1 == 0) + { // Read the remainder of the symbol + count = bits.available() / 8; + } + else if (d1 < 250) + { + count = d1; + } + else + { + count = 250 * (d1 - 249) + unrandomize255State(bits.readBits(8), codewordPosition++); + } + + // We're seeing NegativeArraySizeException errors from users. + if (count < 0) + { + throw FormatException.getFormatInstance(); + } + + var bytes:Array = new Array(count); + for (var i:int = 0; i < count; i++) + { + // Have seen this particular error in the wild, such as at + // http://www.bcgen.com/demo/IDAutomationStreamingDataMatrix.aspx?MODE=3&D=Fred&PFMT=3&PT=F&X=0.3&O=0&LM=0.2 + if (bits.available() < 8) + { + throw FormatException.getFormatInstance(); + } + bytes[i] = unrandomize255State(bits.readBits(8), codewordPosition++); + } + byteSegments.addElement(bytes); + /*try + { + result.append(new String(bytes, "ISO8859_1")); + } catch (UnsupportedEncodingException uee) + { + throw new RuntimeException("Platform does not support required encoding: " + uee); + }*/ + for (var k:int=0;k= 0 ? tempVariable : (tempVariable + 256)); + return result; + } + } + +} diff --git a/FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/Decoder.as b/FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/Decoder.as new file mode 100644 index 0000000..ee9a386 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/Decoder.as @@ -0,0 +1,145 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing.datamatrix.decoder +{ + + /** + *

The main class which implements Data Matrix Code decoding -- as opposed to locating and extracting + * the Data Matrix Code from an image.

+ * + * @author bbrown@google.com (Brian Brown) + */ + public class Decoder + { + import com.google.zxing.common.BitMatrix; + import com.google.zxing.common.DecoderResult; + import com.google.zxing.common.reedsolomon.ReedSolomonDecoder; + import com.google.zxing.common.reedsolomon.ReedSolomonException; + import com.google.zxing.common.reedsolomon.GenericGF; + import com.google.zxing.ReaderException; + + + private var rsDecoder:ReedSolomonDecoder; + public function Decoder() { + rsDecoder = new ReedSolomonDecoder(GenericGF.DATA_MATRIX_FIELD_256); + } + + /** + *

Convenience method that can decode a Data Matrix Code represented as a 2D array of booleans. + * "true" is taken to mean a black module.

+ * + * @param image booleans representing white/black Data Matrix Code modules + * @return text and bytes encoded within the Data Matrix Code + * @throws ReaderException if the Data Matrix Code cannot be decoded + */ + public function decode (image:Object):DecoderResult + { + if (image is Array) { return decode_Array(image as Array); } + else if (image is BitMatrix) { return decode_BitMatrix(image as BitMatrix); } + else { throw new Error('Decoder : decode : unknown type of image'); } + } + + public function decode_Array(image:Array):DecoderResult { + var dimension:int = image.length; + var bits:BitMatrix = new BitMatrix(dimension); + for (var i:int = 0; i < dimension; i++) { + for (var j:int = 0; j < dimension; j++) { + if (image[i][j]) { + bits._set(j, i); + } + } + } + return decode(bits); + } + + /** + *

Decodes a Data Matrix Code represented as a {@link BitMatrix}. A 1 or "true" is taken + * to mean a black module.

+ * + * @param bits booleans representing white/black Data Matrix Code modules + * @return text and bytes encoded within the Data Matrix Code + * @throws ReaderException if the Data Matrix Code cannot be decoded + */ + public function decode_BitMatrix(bits:BitMatrix ):DecoderResult { + + // Construct a parser and read version, error-correction level + var parser:BitMatrixParser = new BitMatrixParser(bits); + var version:Version = parser.readVersion(bits); + + // Read codewords + var codewords:Array = parser.readCodewords(); + // Separate into data blocks + var dataBlocks:Array = DataBlock.getDataBlocks(codewords, version); + + // Count total number of data bytes + var totalBytes:int = 0; + for (var i:int = 0; i < dataBlocks.length; i++) { + totalBytes += dataBlocks[i].getNumDataCodewords(); + } + var resultBytes:Array = new Array(totalBytes); + var resultOffset:int = 0; + + // Error-correct and copy data blocks together into a stream of bytes + for (var j:int = 0; j < dataBlocks.length; j++) + { + var dataBlock:DataBlock = dataBlocks[j]; + var codewordBytes:Array = dataBlock.getCodewords(); + var numDataCodewords:int = dataBlock.getNumDataCodewords(); + correctErrors(codewordBytes, numDataCodewords); + for (var i5:int = 0; i5 < numDataCodewords; i5++) + { + // De-interlace data blocks. + resultBytes[i5 * dataBlocks.length + j] = codewordBytes[i5]; + } + } + // Decode the contents of that stream of bytes + return DecodedBitStreamParser.decode(resultBytes); + } + + /** + *

Given data and error-correction codewords received, possibly corrupted by errors, attempts to + * correct the errors in-place using Reed-Solomon error correction.

+ * + * @param codewordBytes data and error correction codewords + * @param numDataCodewords number of codewords that are data bytes + * @throws ReaderException if error correction fails + */ + private function correctErrors( codewordBytes:Array, numDataCodewords:int ):void { + var numCodewords:int = codewordBytes.length; + // First read into an array of ints + var codewordsInts:Array = new Array(numCodewords); + for (var i:int = 0; i < numCodewords; i++) { + codewordsInts[i] = codewordBytes[i] & 0xFF; + } + var numECCodewords:int = codewordBytes.length - numDataCodewords; + try { + rsDecoder.decode(codewordsInts, numECCodewords); + } catch (rse:ReedSolomonException) { + throw new ReaderException("Decoder : correctErrors : could not decode codewords"); + } + // Copy back into array of bytes -- only need to worry about the bytes that were data + // We don't care about errors in the error-correction codewords + for (var ii:int = 0; ii < numDataCodewords; ii++) + { + + codewordBytes[ii] = (codewordsInts[ii]>127)?codewordsInts[ii]-256:codewordsInts[ii]; + } + } + + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/ECB.as b/FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/ECB.as new file mode 100644 index 0000000..663f1c8 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/ECB.as @@ -0,0 +1,43 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.datamatrix.decoder +{ + /** + *

Encapsualtes the parameters for one error-correction block in one symbol version. + * This includes the number of data codewords, and the number of times a block with these + * parameters is used consecutively in the Data Matrix code version's format.

+ */ + public class ECB { + private var count:int; + private var dataCodewords:int; + + public function ECB(count:int, dataCodewords:int) { + this.count = count; + this.dataCodewords = dataCodewords; + } + + public function getCount():int { + return count; + } + + public function getDataCodewords():int { + return dataCodewords; + } + } + + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/ECBlocks.as b/FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/ECBlocks.as new file mode 100644 index 0000000..018c691 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/ECBlocks.as @@ -0,0 +1,55 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.datamatrix.decoder +{ + /** + *

Encapsulates a set of error-correction blocks in one symbol version. Most versions will + * use blocks of differing sizes within one version, so, this encapsulates the parameters for + * each set of blocks. It also holds the number of error-correction codewords per block since it + * will be the same across all blocks within one version.

+ */ + public class ECBlocks + { + + private var ecCodewords:int; + private var ecBlocks:Array; + + public function ECBlocks(ecCodewords:int, ecBlocks:ECB, ecBlocks2:ECB=null) + { + this.ecCodewords = ecCodewords; + + if (ecBlocks2 == null) + { + this.ecBlocks = [ecBlocks]; + } + else + { + this.ecBlocks = [ecBlocks, ecBlocks2]; + } + } + + public function getECCodewords():int { + return ecCodewords; + } + + public function getECBlocks():Array { + return ecBlocks; + } + } + + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/Version.as b/FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/Version.as new file mode 100644 index 0000000..9af7555 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/datamatrix/decoder/Version.as @@ -0,0 +1,192 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing.datamatrix.decoder +{ + import com.google.zxing.ReaderException; + /** + * The Version object encapsulates attributes about a particular + * size Data Matrix Code. + * + * @author bbrown@google.com (Brian Brown) + */ + + public class Version + { + private static var VERSIONS:Array = buildVersions(); + private var versionNumber:int; + private var symbolSizeRows:int; + private var symbolSizeColumns:int; + private var dataRegionSizeRows:int; + private var dataRegionSizeColumns:int; + private var ecBlocks:ECBlocks; + private var totalCodewords:int; + + public function Version(versionNumber:int, + symbolSizeRows:int, + symbolSizeColumns:int, + dataRegionSizeRows:int, + dataRegionSizeColumns:int, + ecBlocks:ECBlocks) { + this.versionNumber = versionNumber; + this.symbolSizeRows = symbolSizeRows; + this.symbolSizeColumns = symbolSizeColumns; + this.dataRegionSizeRows = dataRegionSizeRows; + this.dataRegionSizeColumns = dataRegionSizeColumns; + this.ecBlocks = ecBlocks; + + // Calculate the total number of codewords + var total:int = 0; + var ecCodewords:int = ecBlocks.getECCodewords(); + var ecbArray:Array = ecBlocks.getECBlocks(); + + for (var i:int = 0; i < ecbArray.length; i++) + { + var ecBlock:ECB = ecbArray[i]; + total += ecBlock.getCount() * (ecBlock.getDataCodewords() + ecCodewords); + } + + this.totalCodewords = total; + } + + public function getVersionNumber():int { + return versionNumber; + } + + public function getSymbolSizeRows():int { + return symbolSizeRows; + } + + public function getSymbolSizeColumns():int { + return symbolSizeColumns; + } + + public function getDataRegionSizeRows():int { + return dataRegionSizeRows; + } + + public function getDataRegionSizeColumns():int { + return dataRegionSizeColumns; + } + + public function getTotalCodewords():int { + return totalCodewords; + } + + public function getECBlocks():ECBlocks { + return ecBlocks; + } + + /** + *

Deduces version information from Data Matrix dimensions.

+ * + * @param numRows Number of rows in modules + * @param numColumns Number of columns in modules + * @return {@link Version} for a Data Matrix Code of those dimensions + * @throws ReaderException if dimensions do correspond to a valid Data Matrix size + */ + public static function getVersionForDimensions(numRows:int,numColumns:int):Version { + if ((numRows & 0x01) != 0 || (numColumns & 0x01) != 0) { + throw new ReaderException("Version : getVersionForDimensions : numColumns ("+numRows+") or numRows ("+numColumns+") uneven "); + } + + // TODO(bbrown): This is doing a linear search through the array of versions. + // If we interleave the rectangular versions with the square versions we could + // do a binary search. + var numVersions:int = VERSIONS.length; + for (var i:int = 0; i < numVersions; ++i){ + var version:Version = VERSIONS[i]; + if (version.symbolSizeRows == numRows && version.symbolSizeColumns == numColumns) { + return version; + } + } + + throw new ReaderException("Version : getVersionForDimensions : version could not be determined"); + } + + public function toString():String { + return versionNumber.toString(); + } + + /** + * See ISO 16022:2006 5.5.1 Table 7 + */ + private static function buildVersions():Array { + return [ + new Version(1, 10, 10, 8, 8, + new ECBlocks(5, new ECB(1, 3))), + new Version(2, 12, 12, 10, 10, + new ECBlocks(7, new ECB(1, 5))), + new Version(3, 14, 14, 12, 12, + new ECBlocks(10, new ECB(1, 8))), + new Version(4, 16, 16, 14, 14, + new ECBlocks(12, new ECB(1, 12))), + new Version(5, 18, 18, 16, 16, + new ECBlocks(14, new ECB(1, 18))), + new Version(6, 20, 20, 18, 18, + new ECBlocks(18, new ECB(1, 22))), + new Version(7, 22, 22, 20, 20, + new ECBlocks(20, new ECB(1, 30))), + new Version(8, 24, 24, 22, 22, + new ECBlocks(24, new ECB(1, 36))), + new Version(9, 26, 26, 24, 24, + new ECBlocks(28, new ECB(1, 44))), + new Version(10, 32, 32, 14, 14, + new ECBlocks(36, new ECB(1, 62))), + new Version(11, 36, 36, 16, 16, + new ECBlocks(42, new ECB(1, 86))), + new Version(12, 40, 40, 18, 18, + new ECBlocks(48, new ECB(1, 114))), + new Version(13, 44, 44, 20, 20, + new ECBlocks(56, new ECB(1, 144))), + new Version(14, 48, 48, 22, 22, + new ECBlocks(68, new ECB(1, 174))), + new Version(15, 52, 52, 24, 24, + new ECBlocks(42, new ECB(2, 102))), + new Version(16, 64, 64, 14, 14, + new ECBlocks(56, new ECB(2, 140))), + new Version(17, 72, 72, 16, 16, + new ECBlocks(36, new ECB(4, 92))), + new Version(18, 80, 80, 18, 18, + new ECBlocks(48, new ECB(4, 114))), + new Version(19, 88, 88, 20, 20, + new ECBlocks(56, new ECB(4, 144))), + new Version(20, 96, 96, 22, 22, + new ECBlocks(68, new ECB(4, 174))), + new Version(21, 104, 104, 24, 24, + new ECBlocks(56, new ECB(6, 136))), + new Version(22, 120, 120, 18, 18, + new ECBlocks(68, new ECB(6, 175))), + new Version(23, 132, 132, 20, 20, + new ECBlocks(62, new ECB(8, 163))), + new Version(24, 144, 144, 22, 22, + new ECBlocks(62, new ECB(8, 156), new ECB(2, 155))), + new Version(25, 8, 18, 6, 16, + new ECBlocks(7, new ECB(1, 5))), + new Version(26, 8, 32, 6, 14, + new ECBlocks(11, new ECB(1, 10))), + new Version(27, 12, 26, 10, 24, + new ECBlocks(14, new ECB(1, 16))), + new Version(28, 12, 36, 10, 16, + new ECBlocks(18, new ECB(1, 22))), + new Version(29, 16, 36, 14, 16, + new ECBlocks(24, new ECB(1, 32))), + new Version(30, 16, 48, 14, 22, + new ECBlocks(28, new ECB(1, 49)))]; + + } + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/datamatrix/detector/Detector.as b/FairyGUI-as3/src/com/google/zxing/datamatrix/detector/Detector.as new file mode 100644 index 0000000..de18bda --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/datamatrix/detector/Detector.as @@ -0,0 +1,451 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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 com.google.zxing.datamatrix.detector +{ + import com.google.zxing.ReaderException; + import com.google.zxing.ResultPoint; + import com.google.zxing.common.BitArray; + import com.google.zxing.common.BitMatrix; + import com.google.zxing.common.DetectorResult; + import com.google.zxing.common.GridSampler; + import com.google.zxing.common.detector.MonochromeRectangleDetector; + import com.google.zxing.common.detector.WhiteRectangleDetector; + import com.google.zxing.common.flexdatatypes.ArrayList; + import com.google.zxing.common.flexdatatypes.HashTable; + + /** + *

Encapsulates logic that can detect a Data Matrix Code in an image, even if the Data Matrix Code + * is rotated or skewed, or partially obscured.

+ * + * @author Sean Owen + */ + public class Detector + { + import com.google.zxing.common.flexdatatypes.HashTable; + import com.google.zxing.common.BitMatrix; + import com.google.zxing.common.DecoderResult; + import com.google.zxing.common.DetectorResult; + import com.google.zxing.common.flexdatatypes.ArrayList; + import com.google.zxing.common.BitArray; + import com.google.zxing.common.GridSampler; + import com.google.zxing.ResultPoint; + import com.google.zxing.datamatrix.detector.ResultPointsAndTransitionsComparator; + import com.google.zxing.common.detector.MonochromeRectangleDetector; + + + //private static var MAX_MODULES:int = 32; + + // Trick to avoid creating new int objects below -- a sort of crude copy of + // the int.valueOf(int) optimization added in Java 5, not in J2ME + private static var INTEGERS:Array =[ 0,1,2,3,4 ]; + + + private var image:BitMatrix ; + private var rectangleDetector:WhiteRectangleDetector; + + public function Detector(image:BitMatrix) + { + this.image = image; + rectangleDetector = new WhiteRectangleDetector(image); + } + + /** + *

Detects a Data Matrix Code in an image.

+ * + * @return {@link DetectorResult} encapsulating results of detecting a QR Code + * @throws ReaderException if no Data Matrix Code can be found + */ + public function detect():DetectorResult + { + + + var cornerPoints:Array = rectangleDetector.detect(); + var pointA:ResultPoint = cornerPoints[0] + var pointB:ResultPoint = cornerPoints[1] + var pointC:ResultPoint = cornerPoints[2] + var pointD:ResultPoint = cornerPoints[3] + + + // Point A and D are across the diagonal from one another, + // as are B and C. Figure out which are the solid black lines + // by counting transitions + var transitions:ArrayList = new ArrayList(4); + transitions.Add(transitionsBetween(pointA, pointB)); + transitions.Add(transitionsBetween(pointA, pointC)); + transitions.Add(transitionsBetween(pointB, pointD)); + transitions.Add(transitionsBetween(pointC, pointD)); + transitions.sort_ResultPointsAndTransitionsComparator(); + //Collections.insertionSort(transitions, new ResultPointsAndTransitionsComparator()); + + // Sort by number of transitions. First two will be the two solid sides; last two + // will be the two alternating black/white sides + var lSideOne:ResultPointsAndTransitions = ( transitions.getObjectByIndex(0) as ResultPointsAndTransitions); + var lSideTwo:ResultPointsAndTransitions = ( transitions.getObjectByIndex(1) as ResultPointsAndTransitions); + + // Figure out which point is their intersection by tallying up the number of times we see the + // endpoints in the four endpoints. One will show up twice. + var pointCount:HashTable = new HashTable(); + increment(pointCount, lSideOne.getFrom()); + increment(pointCount, lSideOne.getTo()); + increment(pointCount, lSideTwo.getFrom()); + increment(pointCount, lSideTwo.getTo()); + + var maybeTopLeft:ResultPoint = null; + var bottomLeft:ResultPoint = null; + var maybeBottomRight:ResultPoint = null; + var size:int = pointCount.getSize(); + for (var ii:int=0;ii= 7 * dimensionRight || 4 * dimensionRight >= 7 * dimensionTop) { + // The matrix is rectangular + + correctedTopRight = + correctTopRightRectangular(bottomLeft, bottomRight, topLeft, topRight, dimensionTop, dimensionRight); + if (correctedTopRight == null){ + correctedTopRight = topRight; + } + + dimensionTop = transitionsBetween(topLeft, correctedTopRight).getTransitions(); + dimensionRight = transitionsBetween(bottomRight, correctedTopRight).getTransitions(); + + if ((dimensionTop & 0x01) == 1) { + // it can't be odd, so, round... up? + dimensionTop++; + } + + if ((dimensionRight & 0x01) == 1) { + // it can't be odd, so, round... up? + dimensionRight++; + } + + bits = sampleGrid(image, topLeft, bottomLeft, bottomRight, correctedTopRight, dimensionTop, dimensionRight); + + } else { + // The matrix is square + + var dimension:int = Math.min(dimensionRight, dimensionTop); + // correct top right point to match the white module + correctedTopRight = correctTopRight(bottomLeft, bottomRight, topLeft, topRight, dimension); + if (correctedTopRight == null){ + correctedTopRight = topRight; + } + + // Redetermine the dimension using the corrected top right point + var dimensionCorrected:int = Math.max(transitionsBetween(topLeft, correctedTopRight).getTransitions(), + transitionsBetween(bottomRight, correctedTopRight).getTransitions()); + dimensionCorrected++; + if ((dimensionCorrected & 0x01) == 1) { + dimensionCorrected++; + } + + bits = sampleGrid(image, + topLeft, + bottomLeft, + bottomRight, + correctedTopRight, + dimensionCorrected, + dimensionCorrected); + } + return new DetectorResult(bits, [topLeft, bottomLeft, bottomRight, correctedTopRight]); + } + + + + + + + /** + * Calculates the position of the white top right module using the output of the rectangle detector + * for a rectangular matrix + */ + private function correctTopRightRectangular(bottomLeft:ResultPoint , + bottomRight:ResultPoint , topLeft:ResultPoint , topRight:ResultPoint , + dimensionTop:int , dimensionRight:int ):ResultPoint { + + var corr:Number = distance(bottomLeft, bottomRight) / dimensionTop; + var norm:int = distance(topLeft, topRight); + var cos:Number = (topRight.getX() - topLeft.getX()) / norm; + var sin:Number = (topRight.getY() - topLeft.getY()) / norm; + + var c1:ResultPoint = new ResultPoint(topRight.getX()+corr*cos, topRight.getY()+corr*sin); + + corr = distance(bottomLeft, topLeft) / dimensionRight; + norm = distance(bottomRight, topRight); + cos = (topRight.getX() - bottomRight.getX()) / norm; + sin = (topRight.getY() - bottomRight.getY()) / norm; + + var c2:ResultPoint = new ResultPoint(topRight.getX()+corr*cos, topRight.getY()+corr*sin); + + if (!isValid(c1)){ + if (isValid(c2)){ + return c2; + } + return null; + } else if (!isValid(c2)){ + return c1; + } + + var l1:int = Math.abs(dimensionTop - transitionsBetween(topLeft, c1).getTransitions()) + + Math.abs(dimensionRight - transitionsBetween(bottomRight, c1).getTransitions()); + var l2:int = Math.abs(dimensionTop - transitionsBetween(topLeft, c2).getTransitions()) + + Math.abs(dimensionRight - transitionsBetween(bottomRight, c2).getTransitions()); + + if (l1 <= l2){ + return c1; + } + + return c2; + } + + /** + * Calculates the position of the white top right module using the output of the rectangle detector + * for a square matrix + */ + private function correctTopRight(bottomLeft:ResultPoint , + bottomRight:ResultPoint, + topLeft:ResultPoint , + topRight:ResultPoint , + dimension:int ):ResultPoint { + + var corr:Number = distance(bottomLeft, bottomRight) / dimension; + var norm:int = distance(topLeft, topRight); + var cos:Number = (topRight.getX() - topLeft.getX()) / norm; + var sin:Number = (topRight.getY() - topLeft.getY()) / norm; + + var c1:ResultPoint = new ResultPoint(topRight.getX() + corr * cos, topRight.getY() + corr * sin); + + corr = distance(bottomLeft, bottomRight) / dimension; + norm = distance(bottomRight, topRight); + cos = (topRight.getX() - bottomRight.getX()) / norm; + sin = (topRight.getY() - bottomRight.getY()) / norm; + + var c2:ResultPoint = new ResultPoint(topRight.getX() + corr * cos, topRight.getY() + corr * sin); + + if (!isValid(c1)) { + if (isValid(c2)) { + return c2; + } + return null; + } else if (!isValid(c2)) { + return c1; + } + + var l1:int = Math.abs(transitionsBetween(topLeft, c1).getTransitions() - + transitionsBetween(bottomRight, c1).getTransitions()); + var l2:int = Math.abs(transitionsBetween(topLeft, c2).getTransitions() - + transitionsBetween(bottomRight, c2).getTransitions()); + + return l1 <= l2 ? c1 : c2; + } + + private function isValid(p:ResultPoint):Boolean { + return p.getX() >= 0 && p.getX() < image.getWidth() && p.getY() > 0 && p.getY() < image.getHeight(); + } + + private static function round(d:Number):int + { + return Math.ceil(d); + } + + // L2 distance + private static function distance(a:ResultPoint, b:ResultPoint):int { + return Detector.round( Math.sqrt((a.getX() - b.getX()) + * (a.getX() - b.getX()) + (a.getY() - b.getY()) + * (a.getY() - b.getY()))); + } + + /** + * Increments the int associated with a key by one. + */ + private static function increment(table:HashTable, key:ResultPoint):void + { + if (!table.ContainsKey(key)) + { + table.Add(key,1); + } + else + { + table.setValue(key,Math.floor(table.getValueByKey(key) as Number)+1); + } + } + + private static function sampleGrid(image:BitMatrix , + topLeft:ResultPoint , + bottomLeft:ResultPoint , + bottomRight:ResultPoint , + topRight:ResultPoint , + dimensionX:int , + dimensionY:int ):BitMatrix{ + + var sampler:GridSampler = GridSampler.getGridSamplerInstance(); + + return sampler.sampleGrid2(image, + dimensionX, + dimensionY, + 0.5, + 0.5, + dimensionX - 0.5, + 0.5, + dimensionX - 0.5, + dimensionY - 0.5, + 0.5, + dimensionY - 0.5, + topLeft.getX(), + topLeft.getY(), + topRight.getX(), + topRight.getY(), + bottomRight.getX(), + bottomRight.getY(), + bottomLeft.getX(), + bottomLeft.getY()); + } + + /** + * Counts the number of black/white transitions between two points, using something like Bresenham's algorithm. + */ + private function transitionsBetween( from:ResultPoint, _to:ResultPoint):ResultPointsAndTransitions + { + // See QR Code Detector, sizeOfBlackWhiteBlackRun() + var fromX:int = Math.floor(from.getX()); + var fromY:int = Math.floor( from.getY()); + var toX:int = Math.floor( _to.getX()); + var toY:int = Math.floor( _to.getY()); + var steep:Boolean = Math.abs(toY - fromY) > Math.abs(toX - fromX); + if (steep) { + var temp:int = fromX; + fromX = fromY; + fromY = temp; + temp = toX; + toX = toY; + toY = temp; + } + + var dx:int = Math.abs(toX - fromX); + var dy:int = Math.abs(toY - fromY); + var error:int = -dx >> 1; + var ystep:int = fromY < toY ? 1 : -1; + var xstep:int = fromX < toX ? 1 : -1; + var transitions:int = 0; + var inBlack:Boolean = image._get(steep ? fromY : fromX, steep ? fromX : fromY); + for (var x:int = fromX, y:int = fromY; x != toX; x += xstep) + { + var isBlack:Boolean = image._get(steep ? y : x, steep ? x : y); + + if (isBlack == !inBlack) + { + transitions++; + inBlack = isBlack; + } + error += dy; + if (error > 0) + { + if (y == toY) + { + break; + } + y += ystep; + error -= dx; + } + } + return new ResultPointsAndTransitions(from, _to, transitions); + } + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/datamatrix/detector/ResultPointsAndTransitions.as b/FairyGUI-as3/src/com/google/zxing/datamatrix/detector/ResultPointsAndTransitions.as new file mode 100644 index 0000000..55aedad --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/datamatrix/detector/ResultPointsAndTransitions.as @@ -0,0 +1,48 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.datamatrix.detector +{ + import com.google.zxing.ResultPoint; + /** + * Simply encapsulates two points and a number of transitions between them. + */ + public class ResultPointsAndTransitions + { + private var from:ResultPoint; + private var to:ResultPoint; + private var transitions:int; + + public function ResultPointsAndTransitions(from:ResultPoint, to:ResultPoint, transitions:int) { + this.from = from; + this.to = to; + this.transitions = transitions; + } + + public function getFrom():ResultPoint { + return from; + } + public function getTo():ResultPoint { + return to; + } + public function getTransitions():int { + return transitions; + } + public function toString():String { + return from + "/" + to + '/' + transitions; + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/datamatrix/detector/ResultPointsAndTransitionsComparator.as b/FairyGUI-as3/src/com/google/zxing/datamatrix/detector/ResultPointsAndTransitionsComparator.as new file mode 100644 index 0000000..caa5936 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/datamatrix/detector/ResultPointsAndTransitionsComparator.as @@ -0,0 +1,35 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.datamatrix.detector +{ + import com.google.zxing.common.Comparator; + /** + * Orders ResultPointsAndTransitions by number of transitions, ascending. + */ + public class ResultPointsAndTransitionsComparator + { + + public static function compare(o1:Object, o2:Object):int + { + var result:int = ((o1 as ResultPointsAndTransitions)).getTransitions() - ((o2 as ResultPointsAndTransitions)).getTransitions(); + if (result > 0) { return 1; } + else if (result < 0) { return -1; } + else {return 0;} + } + + } +} diff --git a/FairyGUI-as3/src/com/google/zxing/maxicode/MaxiCodeReader.as b/FairyGUI-as3/src/com/google/zxing/maxicode/MaxiCodeReader.as new file mode 100644 index 0000000..95919ed --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/maxicode/MaxiCodeReader.as @@ -0,0 +1,129 @@ +/* + * Copyright 2011 ZXing authors + * + * Licensed 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 com.google.zxing.maxicode +{ + + import com.google.zxing.BarcodeFormat; + import com.google.zxing.BinaryBitmap; + import com.google.zxing.ChecksumException; + import com.google.zxing.DecodeHintType; + import com.google.zxing.FormatException; + import com.google.zxing.NotFoundException; + import com.google.zxing.Reader; + import com.google.zxing.Result; + import com.google.zxing.ResultMetadataType; + import com.google.zxing.ResultPoint; + import com.google.zxing.common.BitMatrix; + import com.google.zxing.common.DecoderResult; + import com.google.zxing.maxicode.decoder.Decoder; + + import com.google.zxing.common.flexdatatypes.HashTable; + import com.google.zxing.NotFoundException; + + /** + * This implementation can detect and decode a MaxiCode in an image. + */ + public class MaxiCodeReader implements Reader + { + + private static var NO_POINTS:Array = new Array(0); + private static var MATRIX_WIDTH:int = 30; + private static var MATRIX_HEIGHT:int = 33; + + private var decoder:Decoder = new Decoder(); + + public function getDecoder():Decoder + { + return decoder; + } + + /** + * Locates and decodes a MaxiCode in an image. + * + * @return a String representing the content encoded by the MaxiCode + * @throws NotFoundException if a MaxiCode cannot be found + * @throws FormatException if a MaxiCode cannot be decoded + * @throws ChecksumException if error correction fails + */ + public function decode(image:BinaryBitmap, hints:HashTable=null):Result + { + var decoderResult:DecoderResult ; + if (hints != null && hints.containsKey(DecodeHintType.PURE_BARCODE)) + { + var bits:BitMatrix = extractPureBits(image.getBlackMatrix()); + decoderResult = decoder.decode(bits, hints); + } + else + { + throw NotFoundException.getNotFoundInstance(); + } + + var points:Array = NO_POINTS; + var result:Result = new Result(decoderResult.getText(), decoderResult.getRawBytes(), points, BarcodeFormat.MAXICODE); + + if (decoderResult.getECLevel() != null) + { + result.putMetadata(ResultMetadataType.ERROR_CORRECTION_LEVEL, decoderResult.getECLevel()); + } + return result; + } + + public function reset():void + { + // do nothing + } + + /** + * This method detects a code in a "pure" image -- that is, pure monochrome image + * which contains only an unrotated, unskewed, image of a code, with some white border + * around it. This is a specialized method that works exceptionally fast in this special + * case. + * + * @see com.google.zxing.pdf417.PDF417Reader#extractPureBits(BitMatrix) + * @see com.google.zxing.datamatrix.DataMatrixReader#extractPureBits(BitMatrix) + * @see com.google.zxing.qrcode.QRCodeReader#extractPureBits(BitMatrix) + */ + private static function extractPureBits(image:BitMatrix):BitMatrix + { + + var enclosingRectangle:Array = image.getEnclosingRectangle(); + if (enclosingRectangle == null) + { + throw NotFoundException.getNotFoundInstance(); + } + + var left:int = enclosingRectangle[0]; + var top:int = enclosingRectangle[1]; + var width:int = enclosingRectangle[2]; + var height:int = enclosingRectangle[3]; + + // Now just read off the bits + var bits:BitMatrix = new BitMatrix(MATRIX_WIDTH, MATRIX_HEIGHT); + for (var y:int = 0; y < MATRIX_HEIGHT; y++) { + var iy:int = top + (y * height + height / 2) / MATRIX_HEIGHT; + for (var x:int = 0; x < MATRIX_WIDTH; x++) { + var ix:int = left + (x * width + width / 2 + (y & 0x01) * width / 2) / MATRIX_WIDTH; + if (image._get(ix, iy)) { + bits._set(x, y); + } + } + } + return bits; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/maxicode/decoder/BitMatrixParser.as b/FairyGUI-as3/src/com/google/zxing/maxicode/decoder/BitMatrixParser.as new file mode 100644 index 0000000..912c95e --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/maxicode/decoder/BitMatrixParser.as @@ -0,0 +1,94 @@ +/* + * Copyright 2011 ZXing authors + * + * Licensed 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 com.google.zxing.maxicode.decoder +{ + + import com.google.zxing.FormatException; + import com.google.zxing.common.BitMatrix; + + /** + * @author mike32767 + * @author Manuel Kasten + */ + public class BitMatrixParser { + + private static var BITNR:Array = [ + [121,120,127,126,133,132,139,138,145,144,151,150,157,156,163,162,169,168,175,174,181,180,187,186,193,192,199,198, -2, -2], + [123,122,129,128,135,134,141,140,147,146,153,152,159,158,165,164,171,170,177,176,183,182,189,188,195,194,201,200,816, -3], + [125,124,131,130,137,136,143,142,149,148,155,154,161,160,167,166,173,172,179,178,185,184,191,190,197,196,203,202,818,817], + [283,282,277,276,271,270,265,264,259,258,253,252,247,246,241,240,235,234,229,228,223,222,217,216,211,210,205,204,819, -3], + [285,284,279,278,273,272,267,266,261,260,255,254,249,248,243,242,237,236,231,230,225,224,219,218,213,212,207,206,821,820], + [287,286,281,280,275,274,269,268,263,262,257,256,251,250,245,244,239,238,233,232,227,226,221,220,215,214,209,208,822, -3], + [289,288,295,294,301,300,307,306,313,312,319,318,325,324,331,330,337,336,343,342,349,348,355,354,361,360,367,366,824,823], + [291,290,297,296,303,302,309,308,315,314,321,320,327,326,333,332,339,338,345,344,351,350,357,356,363,362,369,368,825, -3], + [293,292,299,298,305,304,311,310,317,316,323,322,329,328,335,334,341,340,347,346,353,352,359,358,365,364,371,370,827,826], + [409,408,403,402,397,396,391,390, 79, 78, -2, -2, 13, 12, 37, 36, 2, -1, 44, 43,109,108,385,384,379,378,373,372,828, -3], + [411,410,405,404,399,398,393,392, 81, 80, 40, -2, 15, 14, 39, 38, 3, -1, -1, 45,111,110,387,386,381,380,375,374,830,829], + [413,412,407,406,401,400,395,394, 83, 82, 41, -3, -3, -3, -3, -3, 5, 4, 47, 46,113,112,389,388,383,382,377,376,831, -3], + [415,414,421,420,427,426,103,102, 55, 54, 16, -3, -3, -3, -3, -3, -3, -3, 20, 19, 85, 84,433,432,439,438,445,444,833,832], + [417,416,423,422,429,428,105,104, 57, 56, -3, -3, -3, -3, -3, -3, -3, -3, 22, 21, 87, 86,435,434,441,440,447,446,834, -3], + [419,418,425,424,431,430,107,106, 59, 58, -3, -3, -3, -3, -3, -3, -3, -3, -3, 23, 89, 88,437,436,443,442,449,448,836,835], + [481,480,475,474,469,468, 48, -2, 30, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, 0, 53, 52,463,462,457,456,451,450,837, -3], + [483,482,477,476,471,470, 49, -1, -2, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -2, -1,465,464,459,458,453,452,839,838], + [485,484,479,478,473,472, 51, 50, 31, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, 1, -2, 42,467,466,461,460,455,454,840, -3], + [487,486,493,492,499,498, 97, 96, 61, 60, -3, -3, -3, -3, -3, -3, -3, -3, -3, 26, 91, 90,505,504,511,510,517,516,842,841], + [489,488,495,494,501,500, 99, 98, 63, 62, -3, -3, -3, -3, -3, -3, -3, -3, 28, 27, 93, 92,507,506,513,512,519,518,843, -3], + [491,490,497,496,503,502,101,100, 65, 64, 17, -3, -3, -3, -3, -3, -3, -3, 18, 29, 95, 94,509,508,515,514,521,520,845,844], + [559,558,553,552,547,546,541,540, 73, 72, 32, -3, -3, -3, -3, -3, -3, 10, 67, 66,115,114,535,534,529,528,523,522,846, -3], + [561,560,555,554,549,548,543,542, 75, 74, -2, -1, 7, 6, 35, 34, 11, -2, 69, 68,117,116,537,536,531,530,525,524,848,847], + [563,562,557,556,551,550,545,544, 77, 76, -2, 33, 9, 8, 25, 24, -1, -2, 71, 70,119,118,539,538,533,532,527,526,849, -3], + [565,564,571,570,577,576,583,582,589,588,595,594,601,600,607,606,613,612,619,618,625,624,631,630,637,636,643,642,851,850], + [567,566,573,572,579,578,585,584,591,590,597,596,603,602,609,608,615,614,621,620,627,626,633,632,639,638,645,644,852, -3], + [569,568,575,574,581,580,587,586,593,592,599,598,605,604,611,610,617,616,623,622,629,628,635,634,641,640,647,646,854,853], + [727,726,721,720,715,714,709,708,703,702,697,696,691,690,685,684,679,678,673,672,667,666,661,660,655,654,649,648,855, -3], + [729,728,723,722,717,716,711,710,705,704,699,698,693,692,687,686,681,680,675,674,669,668,663,662,657,656,651,650,857,856], + [731,730,725,724,719,718,713,712,707,706,701,700,695,694,689,688,683,682,677,676,671,670,665,664,659,658,653,652,858, -3], + [733,732,739,738,745,744,751,750,757,756,763,762,769,768,775,774,781,780,787,786,793,792,799,798,805,804,811,810,860,859], + [735,734,741,740,747,746,753,752,759,758,765,764,771,770,777,776,783,782,789,788,795,794,801,800,807,806,813,812,861, -3], + [737,736,743,742,749,748,755,754,761,760,767,766,773,772,779,778,785,784,791,790,797,796,803,802,809,808,815,814,863,862] + ]; + + private var bitMatrix:BitMatrix; + + /** + * @param bitMatrix {@link BitMatrix} to parse + * @throws FormatException if height is not 33 or width is not 30 + */ + public function BitMatrixParser(bitMatrix:BitMatrix) + { + this.bitMatrix = bitMatrix; + } + + public function readCodewords():Array + { + var result:Array = new Array(144); + var height:int = bitMatrix.getHeight(); + var width:int = bitMatrix.getWidth(); + for (var y:int = 0; y < height; y++) { + var bitnrRow:Array = BITNR[y]; + for (var x:int = 0; x < width; x++) { + var bit:int = bitnrRow[x]; + if (bit >= 0 && bitMatrix._get(x, y)) { + result[bit / 6] |= int((1 << (5 - (bit % 6))) & 255) ; + } + } + } + return result; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/maxicode/decoder/DecodedBitStreamParser.as b/FairyGUI-as3/src/com/google/zxing/maxicode/decoder/DecodedBitStreamParser.as new file mode 100644 index 0000000..50c0551 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/maxicode/decoder/DecodedBitStreamParser.as @@ -0,0 +1,207 @@ +/* + * Copyright 2011 ZXing authors + * + * Licensed 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 com.google.zxing.maxicode.decoder +{ + + import com.google.zxing.common.DecoderResult; + import com.google.zxing.common.flexdatatypes.StringBuilder; + + /** + *

MaxiCodes can encode text or structured information as bits in one of several modes, + * with multiple character sets in one code. This class decodes the bits back into text.

+ * + * @author mike32767 + * @author Manuel Kasten + */ + public class DecodedBitStreamParser + { + + private static var SHIFTA:String = '\uFFF0'; + private static var SHIFTB:String = '\uFFF1'; + private static var SHIFTC:String = '\uFFF2'; + private static var SHIFTD:String = '\uFFF3'; + private static var SHIFTE:String = '\uFFF4'; + private static var TWOSHIFTA:String = '\uFFF5'; + private static var THREESHIFTA:String = '\uFFF6'; + private static var LATCHA:String = '\uFFF7'; + private static var LATCHB:String = '\uFFF8'; + private static var LOCK:String = '\uFFF9'; + private static var ECI:String = '\uFFFA'; + private static var NS:String = '\uFFFB'; + private static var PAD:String = '\uFFFC'; + private static var FS:String = '\u001C'; + private static var GS:String = '\u001D'; + private static var RS:String = '\u001E'; + private static var NINE_DIGITS:String = "000000000"; + private static var THREE_DIGITS:String = "000"; + + private static var SETS:Array = [ + "\nABCDEFGHIJKLMNOPQRSTUVWXYZ"+ECI+FS+GS+RS+NS+' '+PAD+"\"#$%&'()*+,-./0123456789:"+SHIFTB+SHIFTC+SHIFTD+SHIFTE+LATCHB, + "`abcdefghijklmnopqrstuvwxyz"+ECI+FS+GS+RS+NS+'{'+PAD+"}~\u007F;<=>?[\\]^_ ,./:@!|"+PAD+TWOSHIFTA+THREESHIFTA+PAD+SHIFTA+SHIFTC+SHIFTD+SHIFTE+LATCHA, + "\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA"+ECI+FS+GS+RS+"\u00DB\u00DC\u00DD\u00DE\u00DF\u00AA\u00AC\u00B1\u00B2\u00B3\u00B5\u00B9\u00BA\u00BC\u00BD\u00BE\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089"+LATCHA+' '+LOCK+SHIFTD+SHIFTE+LATCHB, + "\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA"+ECI+FS+GS+RS+NS+"\u00FB\u00FC\u00FD\u00FE\u00FF\u00A1\u00A8\u00AB\u00AF\u00B0\u00B4\u00B7\u00B8\u00BB\u00BF\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094"+LATCHA+' '+SHIFTC+LOCK+SHIFTE+LATCHB, + "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\u0009\n\u000B\u000C\r\u000E\u000F\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001A"+ECI+PAD+PAD+'\u001B'+NS+FS+GS+RS+"\u001F\u009F\u00A0\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A9\u00AD\u00AE\u00B6\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E"+LATCHA+' '+SHIFTC+SHIFTD+LOCK+LATCHB, + "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\u0009\n\u000B\u000C\r\u000E\u000F\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F\u0020\u0021\"\u0023\u0024\u0025\u0026\u0027\u0028\u0029\u002A\u002B\u002C\u002D\u002E\u002F\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037\u0038\u0039\u003A\u003B\u003C\u003D\u003E\u003F" + ]; + + + + public static function decode(bytes:Array, mode:int):DecoderResult + { + var result:StringBuilder = new StringBuilder(144); + switch (mode) + { + case 2: + case 3: + var postcode:String; + if (mode == 2) + { + postcode = NINE_DIGITS.substring(0,(getPostCode2(bytes).toString()).length) + getPostCode2(bytes).toString(); + } + else + { + postcode = getPostCode3(bytes); + } + + var country:String = THREE_DIGITS.substring(0,(getCountry(bytes).toString()).length) + getCountry(bytes).toString(); + var service:String = THREE_DIGITS.substring(0,(getServiceClass(bytes).toString()).length) + getServiceClass(bytes).toString(); + + result.Append(getMessage(bytes, 10, 84)); + var matchstring:String = "[)>"+RS+"01"+GS; + if (result.toString().substr(0,matchstring.length) == matchstring) + { + result.Insert(9, postcode + GS + country + GS + service + GS); + } + else + { + result.Insert(0, postcode + GS + country + GS + service + GS); + } + break; + case 4: + result.Append(getMessage(bytes, 1, 93)); + break; + case 5: + result.Append(getMessage(bytes, 1, 77)); + break; + } + return new DecoderResult(bytes, result.toString(), null, mode.toString()); + } + + private static function getBit(bit:int, bytes:Array):int + { + bit--; + return (bytes[bit / 6] & (1 << (5 - (bit % 6)))) == 0 ? 0 : 1; + } + + private static function getInt(bytes:Array, x:Array):int + { + var val:int = 0; + for (var i:int = 0; i < x.length; i++) + { + val += getBit(x[i], bytes) << (x.length - i - 1); + } + return val; + } + + private static function getCountry(bytes:Array):int + { + return getInt(bytes, [53, 54, 43, 44, 45, 46, 47, 48, 37, 38]); + } + + private static function getServiceClass(bytes:Array):int + { + return getInt(bytes, [55, 56, 57, 58, 59, 60, 49, 50, 51, 52]); + } + + private static function getPostCode2Length(bytes:Array):int + { + return getInt(bytes, [39, 40, 41, 42, 31, 32]); + } + + private static function getPostCode2(bytes:Array):int + { + return getInt(bytes, [33, 34, 35, 36, 25, 26, 27, 28, 29, 30, 19, + 20, 21, 22, 23, 24, 13, 14, 15, 16, 17, 18, 7, 8, 9, 10, 11, 12, 1, 2]); + } + + private static function getPostCode3(bytes:Array):String { + return (SETS[0] as String).charAt(getInt(bytes, [39, 40, 41, 42, 31, 32])) + + (SETS[0] as String).charAt(getInt(bytes, [33, 34, 35, 36, 25, 26])) + + (SETS[0] as String).charAt(getInt(bytes, [27, 28, 29, 30, 19, 20])) + + (SETS[0] as String).charAt(getInt(bytes, [21, 22, 23, 24, 13, 14])) + + (SETS[0] as String).charAt(getInt(bytes, [15, 16, 17, 18, 7, 8])) + + (SETS[0] as String).charAt(getInt(bytes, [ 9, 10, 11, 12, 1, 2])); + } + + private static function getMessage(bytes:Array, start:int, len:int):String + { + var sb:StringBuilder = new StringBuilder(); + var shift:int = -1; + var curset:int = 0; + var lastset:int = 0; + for (var i:int = start; i < start + len; i++) { + var c:String = SETS[curset].charAt(bytes[i]); + switch (c) { + case LATCHA: + curset = 0; + shift = -1; + break; + case LATCHB: + curset = 1; + shift = -1; + break; + case SHIFTA: + case SHIFTB: + case SHIFTC: + case SHIFTD: + case SHIFTE: + lastset = curset; + curset = c.charCodeAt(0) - SHIFTA.charCodeAt(0); + shift = 1; + break; + case TWOSHIFTA: + lastset = curset; + curset = 0; + shift = 2; + break; + case THREESHIFTA: + lastset = curset; + curset = 0; + shift = 3; + break; + case NS: + var nsval:int = (bytes[++i] << 24) + (bytes[++i] << 18) + (bytes[++i] << 12) + (bytes[++i] << 6) + bytes[++i]; + sb.Append(NINE_DIGITS.substring(0,NINE_DIGITS.length - (nsval.toString()).length) + nsval.toString()); + break; + case LOCK: + shift = -1; + break; + default: + sb.Append(c); + } + if (shift-- == 0) { + curset = lastset; + } + } + while (sb.length > 0 && sb.charAt(sb.length - 1) == PAD) { + sb.setLength(sb.length - 1); + } + return sb.toString(); + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/maxicode/decoder/Decoder.as b/FairyGUI-as3/src/com/google/zxing/maxicode/decoder/Decoder.as new file mode 100644 index 0000000..cc88655 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/maxicode/decoder/Decoder.as @@ -0,0 +1,123 @@ +/* + * Copyright 2011 ZXing authors + * + * Licensed 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 com.google.zxing.maxicode.decoder +{ + + import com.google.zxing.ChecksumException; + import com.google.zxing.FormatException; + import com.google.zxing.common.BitMatrix; + import com.google.zxing.common.DecoderResult; + import com.google.zxing.common.reedsolomon.GenericGFPoly; + import com.google.zxing.common.reedsolomon.ReedSolomonDecoder; + import com.google.zxing.common.reedsolomon.ReedSolomonException; + import com.google.zxing.common.flexdatatypes.HashTable; + + /** + *

The main class which implements MaxiCode decoding -- as opposed to locating and extracting + * the MaxiCode from an image.

+ * + * @author Manuel Kasten + */ + public class Decoder { + + private static var ALL:int = 0; + private static var EVEN:int = 1; + private static var ODD:int = 2; + + private var rsDecoder:ReedSolomonDecoder; + + public function Decoder() + { + //rsDecoder = new ReedSolomonDecoder(GF256.MAXICODE_FIELD_64); + } + + public function decode(bits:BitMatrix, hints:HashTable=null):DecoderResult { + var parser:BitMatrixParser = new BitMatrixParser(bits); + var codewords:Array = parser.readCodewords(); + + correctErrors(codewords, 0, 10, 10, ALL); + var mode:int = codewords[0] & 0x0F; + var datawords:Array; + switch (mode) { + case 2: + case 3: + case 4: + correctErrors(codewords, 20, 84, 40, EVEN); + correctErrors(codewords, 20, 84, 40, ODD); + datawords = new Array(94); + break; + case 5: + correctErrors(codewords, 20, 68, 56, EVEN); + correctErrors(codewords, 20, 68, 56, ODD); + datawords = new Array(78); + break; + default: + throw FormatException.getFormatInstance(); + } + + for (var i:int = 0; i < 10; i++) + { + datawords[i] = codewords[i]; + } + for (i = 20; i < datawords.length + 10; i++) + { + datawords[i - 10] = codewords[i]; + } + + return DecodedBitStreamParser.decode(datawords, mode); + } + + private function correctErrors(codewordBytes:Array, + start:int, + dataCodewords:int, + ecCodewords:int, + mode:int):void + { + var codewords:int = dataCodewords + ecCodewords; + + // in EVEN or ODD mode only half the codewords + var divisor:int = mode == ALL ? 1 : 2; + + // First read into an array of ints + var codewordsInts:Array = new Array(codewords / divisor); + for (var i:int = 0; i < codewords; i++) + { + if ((mode == ALL) || (i % 2 == (mode - 1))) { + codewordsInts[i / divisor] = codewordBytes[i + start] & 0xFF; + } + } + try + { + rsDecoder.decode(codewordsInts, ecCodewords / divisor); + } + catch (rse:ReedSolomonException) + { + throw ChecksumException.getChecksumInstance(); + } + // Copy back into array of bytes -- only need to worry about the bytes that were data + // We don't care about errors in the error-correction codewords + for (i = 0; i < dataCodewords; i++) + { + if ((mode == ALL) || (i % 2 == (mode - 1))) + { + codewordBytes[i + start] = (int(codewordsInts[i / divisor]) & 255); + } + } + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/multi/ByQuadrantReader.as b/FairyGUI-as3/src/com/google/zxing/multi/ByQuadrantReader.as new file mode 100644 index 0000000..8ae6815 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/multi/ByQuadrantReader.as @@ -0,0 +1,90 @@ +/* + * Copyright 2009 ZXing authors + * + * Licensed 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 com.google.zxing.multi +{ + +import com.google.zxing.BinaryBitmap; +import com.google.zxing.Reader; +import com.google.zxing.ReaderException; +import com.google.zxing.Result; +import com.google.zxing.common.flexdatatypes.HashTable; + +/** + * This class attempts to decode a barcode from an image, not by scanning the whole image, + * but by scanning subsets of the image. This is important when there may be multiple barcodes in + * an image, and detecting a barcode may find parts of multiple barcode and fail to decode + * (e.g. QR Codes). Instead this scans the four quadrants of the image -- and also the center + * 'quadrant' to cover the case where a barcode is found in the center. + * + * @see GenericMultipleBarcodeReader + */ +public final class ByQuadrantReader implements Reader { + + private var delegate:Reader; + + public function ByQuadrantReader(delegate:Reader ) { + this.delegate = delegate; + } + + public function decode( image:BinaryBitmap, hints:HashTable=null):Result + { + + var width:int = image.getWidth(); + var height:int = image.getHeight(); + var halfWidth:int = width / 2; + var halfHeight:int = height / 2; + + var topLeft:BinaryBitmap = image.crop(0, 0, halfWidth, halfHeight); + try { + return delegate.decode(topLeft, hints); + } catch (re:ReaderException) { + // continue + } + + var topRight:BinaryBitmap = image.crop(halfWidth, 0, width, halfHeight); + try { + return delegate.decode(topRight, hints); + } catch (re:ReaderException) { + // continue + } + + var bottomLeft:BinaryBitmap = image.crop(0, halfHeight, halfWidth, height); + try { + return delegate.decode(bottomLeft, hints); + } catch (re:ReaderException) { + // continue + } + + var bottomRight:BinaryBitmap = image.crop(halfWidth, halfHeight, width, height); + try { + return delegate.decode(bottomRight, hints); + } catch (re:ReaderException) { + // continue + } + + var quarterWidth:int = Math.floor(halfWidth / 2); + var quarterHeight:int = Math.floor(halfHeight / 2); + var center:BinaryBitmap = image.crop(quarterWidth, quarterHeight, halfWidth, halfHeight); + return delegate.decode(center, hints); + } + + public function reset():void { + delegate.reset(); + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/multi/GenericMultipleBarcodeReader.as b/FairyGUI-as3/src/com/google/zxing/multi/GenericMultipleBarcodeReader.as new file mode 100644 index 0000000..65742cf --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/multi/GenericMultipleBarcodeReader.as @@ -0,0 +1,137 @@ +/* + * Copyright 2009 ZXing authors + * + * Licensed 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 com.google.zxing.multi { + import com.google.zxing.BinaryBitmap; + import com.google.zxing.Reader; + import com.google.zxing.ReaderException; + import com.google.zxing.Result; + import com.google.zxing.ResultPoint; + import com.google.zxing.common.flexdatatypes.ArrayList; + import com.google.zxing.common.flexdatatypes.HashTable; + + /** + *

Attempts to locate multiple barcodes in an image by repeatedly decoding portion of the image. + * After one barcode is found, the areas left, above, right and below the barcode's + * {@link com.google.zxing.ResultPoint}s are scanned, recursively.

+ * + *

A caller may want to also employ {@link ByQuadrantReader} when attempting to find multiple + * 2D barcodes, like QR Codes, in an image, where the presence of multiple barcodes might prevent + * detecting any one of them.

+ * + *

That is, instead of passing a {@link Reader} a caller might pass + * new ByQuadrantReader(reader).

+ * + * @author Sean Owen + */ + public final class GenericMultipleBarcodeReader implements MultipleBarcodeReader { + + private static var MIN_DIMENSION_TO_RECUR:int = 30; + + private var delegate:Reader; + + public function GenericMultipleBarcodeReader(delegate:Reader) { + this.delegate = delegate; + } + + public function decodeMultiple(image:BinaryBitmap, hints:HashTable = null):Array { + var results:ArrayList = new ArrayList(); + doDecodeMultiple(image, hints, results, 0, 0); + if (results.isEmpty()) { + throw new ReaderException("multi : GenericMultipleBarcodeReader : decodeMultiple"); + } + var numResults:int = results.size(); + var resultArray:Array = new Array(numResults); + for (var i:int = 0; i < numResults; i++) { + resultArray[i] = (results.elementAt(i) as Result); + } + return resultArray; + } + + private function doDecodeMultiple(image:BinaryBitmap, hints:HashTable, results:ArrayList, + xOffset:int, yOffset:int):void { + var result:Result; + try { + result = delegate.decode(image, hints); + } catch (re:ReaderException) { + return; + } + var alreadyFound:Boolean = false; + for (var i:int = 0; i < results.size(); i++) { + var existingResult:Result = (results.elementAt(i) as Result); + if (existingResult.getText() == result.getText()) { + alreadyFound = true; + break; + } + } + if (alreadyFound) { + return; + } + results.addElement(translateResultPoints(result, xOffset, yOffset)); + var resultPoints:Array = result.getResultPoints(); + if (resultPoints == null || resultPoints.length == 0) { + return; + } + var width:int = image.getWidth(); + var height:int = image.getHeight(); + var minX:Number = width; + var minY:Number = height; + var maxX:Number = 0.0; + var maxY:Number = 0.0; + for (var i2:int = 0; i2 < resultPoints.length; i2++) { + var point:ResultPoint = resultPoints[i2]; + var x:Number = point.getX(); + var y:Number = point.getY(); + if (x < minX) { + minX = x; + } + if (y < minY) { + minY = y; + } + if (x > maxX) { + maxX = x; + } + if (y > maxY) { + maxY = y; + } + } + + if (minX > MIN_DIMENSION_TO_RECUR) { + doDecodeMultiple(image.crop(0, 0, int(minX), height), hints, results, 0, 0); + } + if (minY > MIN_DIMENSION_TO_RECUR) { + doDecodeMultiple(image.crop(0, 0, width, int(minY)), hints, results, 0, 0); + } + if (maxX < width - MIN_DIMENSION_TO_RECUR) { + doDecodeMultiple(image.crop(int(maxX), 0, width, height), hints, results, int(maxX), 0); + } + if (maxY < height - MIN_DIMENSION_TO_RECUR) { + doDecodeMultiple(image.crop(0, int(maxY), width, height), hints, results, 0, int(maxY)); + } + } + + private static function translateResultPoints(result:Result, xOffset:int, yOffset:int):Result { + var oldResultPoints:Array = result.getResultPoints(); + var newResultPoints:Array = new Array(oldResultPoints.length); + for (var i:int = 0; i < oldResultPoints.length; i++) { + var oldPoint:ResultPoint = oldResultPoints[i]; + newResultPoints[i] = new ResultPoint(oldPoint.getX() + xOffset, oldPoint.getY() + yOffset); + } + return new Result(result.getText(), result.getRawBytes(), newResultPoints, + result.getBarcodeFormat()); + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/multi/MultipleBarcodeReader.as b/FairyGUI-as3/src/com/google/zxing/multi/MultipleBarcodeReader.as new file mode 100644 index 0000000..28c88f7 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/multi/MultipleBarcodeReader.as @@ -0,0 +1,38 @@ +/* + * Copyright 2009 ZXing authors + * + * Licensed 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 com.google.zxing.multi +{ + + +import com.google.zxing.Result; +import com.google.zxing.BinaryBitmap; +import com.google.zxing.ReaderException; + +import com.google.zxing.common.flexdatatypes.HashTable; + +/** + * Implementation of this interface attempt to read several barcodes from one image. + * + * @see com.google.zxing.Reader + * @author Sean Owen + */ +public interface MultipleBarcodeReader +{ + function decodeMultiple(image:BinaryBitmap, hints:HashTable=null):Array; +} + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/multi/qrcode/QRCodeMultiReader.as b/FairyGUI-as3/src/com/google/zxing/multi/qrcode/QRCodeMultiReader.as new file mode 100644 index 0000000..08bede8 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/multi/qrcode/QRCodeMultiReader.as @@ -0,0 +1,76 @@ +/* + * Copyright 2009 ZXing authors + * + * Licensed 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 com.google.zxing.multi.qrcode { + + import com.google.zxing.BarcodeFormat; + import com.google.zxing.BinaryBitmap; + import com.google.zxing.ReaderException; + import com.google.zxing.Result; + import com.google.zxing.ResultMetadataType; + import com.google.zxing.common.DecoderResult; + import com.google.zxing.common.flexdatatypes.ArrayList; + import com.google.zxing.common.flexdatatypes.HashTable; + + import com.google.zxing.multi.MultipleBarcodeReader; + import com.google.zxing.multi.qrcode.detector.MultiDetector; + + import com.google.zxing.qrcode.QRCodeReader; + + /** + * This implementation can detect and decode multiple QR Codes in an image. + * + * @author Sean Owen + * @author Hannes Erven + */ + public final class QRCodeMultiReader extends QRCodeReader implements MultipleBarcodeReader { + + private static var EMPTY_RESULT_ARRAY:Array = new Array(0); + + public function decodeMultiple(image:BinaryBitmap, hints:HashTable = null):Array { + var results:ArrayList = new ArrayList(); + var detectorResult:Array = new MultiDetector(image.getBlackMatrix()).detectMulti(hints); + for (var i:int = 0; i < detectorResult.length; i++) { + try { + var decoderResult:DecoderResult = getDecoder().decode(detectorResult[i].getBits()); + var points:Array = detectorResult[i].getPoints(); + var result:Result = new Result(decoderResult.getText(), decoderResult.getRawBytes(), + points, + BarcodeFormat.QR_CODE); + if (decoderResult.getByteSegments() != null) { + result.putMetadata(ResultMetadataType.BYTE_SEGMENTS, decoderResult.getByteSegments()); + } + if (decoderResult.getECLevel() != null) { + result.putMetadata(ResultMetadataType.ERROR_CORRECTION_LEVEL, + decoderResult.getECLevel().toString()); + } + results.addElement(result); + } catch (re:ReaderException) { + // ignore and continue + } + } + if (results.isEmpty()) { + return EMPTY_RESULT_ARRAY; + } else { + var resultArray:Array = new Array(results.size()); + for (var i2:int = 0; i2 < results.size(); i2++) { + resultArray[i2] = (results.elementAt(i2) as Result); + } + return resultArray; + } + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/multi/qrcode/detector/ModuleSizeComparator.as b/FairyGUI-as3/src/com/google/zxing/multi/qrcode/detector/ModuleSizeComparator.as new file mode 100644 index 0000000..a5a8573 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/multi/qrcode/detector/ModuleSizeComparator.as @@ -0,0 +1,35 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.multi.qrcode.detector +{ + import com.google.zxing.common.Comparator; + import com.google.zxing.qrcode.detector.FinderPattern; + + public class ModuleSizeComparator implements Comparator + { + /** + * A comparator that orders FinderPatterns by their estimated module size. + */ + public function compare(center1:Object,center2:Object):int { + var value:Number = ( center2 as FinderPattern).getEstimatedModuleSize() - + ( center1 as FinderPattern).getEstimatedModuleSize(); + return value < 0.0 ? -1 : value > 0.0 ? 1 : 0; + } + + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/multi/qrcode/detector/MultiDetector.as b/FairyGUI-as3/src/com/google/zxing/multi/qrcode/detector/MultiDetector.as new file mode 100644 index 0000000..358da41 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/multi/qrcode/detector/MultiDetector.as @@ -0,0 +1,70 @@ +/* + * Copyright 2009 ZXing authors + * + * Licensed 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 com.google.zxing.multi.qrcode.detector +{ + +import com.google.zxing.common.BitMatrix; +import com.google.zxing.common.DetectorResult; +import com.google.zxing.common.flexdatatypes.ArrayList; +import com.google.zxing.common.flexdatatypes.HashTable; +import com.google.zxing.qrcode.detector.Detector; +import com.google.zxing.ReaderException; + +/** + *

Encapsulates logic that can detect one or more QR Codes in an image, even if the QR Code + * is rotated or skewed, or partially obscured.

+ * + * @author Sean Owen + * @author Hannes Erven + */ +public final class MultiDetector extends Detector { + + private static var EMPTY_DETECTOR_RESULTS:Array = new Array(0); + + public function MultiDetector(image:BitMatrix) { + super(image); + } + + public function detectMulti(hints:HashTable):Array { + var image:BitMatrix = getImage(); + var finder:MultiFinderPatternFinder = new MultiFinderPatternFinder(image, null); + var info:Array = finder.findMulti(hints); + + if (info == null || info.length == 0) { + throw new ReaderException("multi : qrcode : detector : MultiDetector : info contains no elements"); + } + + var result:ArrayList = new ArrayList(); + for (var i:int = 0; i < info.length; i++) { + try { + result.addElement(processFinderPatternInfo(info[i])); + } catch (e:ReaderException) { + // ignore + } + } + if (result.isEmpty()) { + return EMPTY_DETECTOR_RESULTS; + } else { + var resultArray:Array = new Array(result.size()); + for (var i3:int = 0; i3 < result.size(); i3++) { + resultArray[i3] = ( result.elementAt(i3) as DetectorResult); + } + return resultArray; + } + } +} +} diff --git a/FairyGUI-as3/src/com/google/zxing/multi/qrcode/detector/MultiFinderPatternFinder.as b/FairyGUI-as3/src/com/google/zxing/multi/qrcode/detector/MultiFinderPatternFinder.as new file mode 100644 index 0000000..bdffe1b --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/multi/qrcode/detector/MultiFinderPatternFinder.as @@ -0,0 +1,309 @@ + /* + * Copyright 2009 ZXing authors + * + * Licensed 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 com.google.zxing.multi.qrcode.detector +{ + +import com.google.zxing.DecodeHintType; +import com.google.zxing.ReaderException; +import com.google.zxing.ResultPoint; +import com.google.zxing.ResultPointCallback; +import com.google.zxing.common.BitMatrix; +import com.google.zxing.common.Collections; +import com.google.zxing.common.flexdatatypes.ArrayList; +import com.google.zxing.common.flexdatatypes.HashTable; +import com.google.zxing.qrcode.detector.FinderPattern; +import com.google.zxing.qrcode.detector.FinderPatternFinder; +import com.google.zxing.qrcode.detector.FinderPatternInfo; + +/** + *

This class attempts to find finder patterns in a QR Code. Finder patterns are the square + * markers at three corners of a QR Code.

+ * + *

This class is thread-safe but not reentrant. Each thread must allocate its own object. + * + *

In contrast to {@link FinderPatternFinder}, this class will return an array of all possible + * QR code locations in the image.

+ * + *

Use the TRY_HARDER hint to ask for a more thorough detection.

+ * + * @author Sean Owen + * @author Hannes Erven + */ +public final class MultiFinderPatternFinder extends FinderPatternFinder { + + private static var EMPTY_RESULT_ARRAY:Array = new Array(0); + + // TODO MIN_MODULE_COUNT and MAX_MODULE_COUNT would be great hints to ask the user for + // since it limits the number of regions to decode + + // max. legal count of modules per QR code edge (177) + private static var MAX_MODULE_COUNT_PER_EDGE:Number = 180; + // min. legal count per modules per QR code edge (11) + private static var MIN_MODULE_COUNT_PER_EDGE:Number = 9; + + /** + * More or less arbitrary cutoff point for determining if two finder patterns might belong + * to the same code if they differ less than DIFF_MODSIZE_CUTOFF_PERCENT percent in their + * estimated modules sizes. + */ + private static var DIFF_MODSIZE_CUTOFF_PERCENT:Number = 0.05; + + /** + * More or less arbitrary cutoff point for determining if two finder patterns might belong + * to the same code if they differ less than DIFF_MODSIZE_CUTOFF pixels/module in their + * estimated modules sizes. + */ + private static var DIFF_MODSIZE_CUTOFF:Number = 0.5; + + + + /** + *

Creates a finder that will search the image for three finder patterns.

+ * + * @param image image to search + */ + public function MultiFinderPatternFinder(image:BitMatrix, resultPointCallback:ResultPointCallback) { + super(image, resultPointCallback); + } + + /** + * @return the 3 best {@link FinderPattern}s from our list of candidates. The "best" are + * those that have been detected at least {@link #CENTER_QUORUM} times, and whose module + * size differs from the average among those patterns the least + * @throws ReaderException if 3 such finder patterns do not exist + */ + private function selectBestPatterns():Array { + var possibleCenters:ArrayList = getPossibleCenters(); + var size:int = possibleCenters.size(); + + if (size < 3) { + // Couldn't find enough finder patterns + throw new ReaderException("multi : qrcode : detector : MultiFinderPatternFinder : selectBestPatterns"); + } + + /* + * Begin HE modifications to safely detect multiple codes of equal size + */ + if (size == 3) { + return [ + possibleCenters.elementAt(0) as FinderPattern, + possibleCenters.elementAt(1) as FinderPattern, + possibleCenters.elementAt(2) as FinderPattern + ]; + } + + // Sort by estimated module size to speed up the upcoming checks + Collections.insertionSort(possibleCenters, new ModuleSizeComparator()); + + /* + * Now lets start: build a list of tuples of three finder locations that + * - feature similar module sizes + * - are placed in a distance so the estimated module count is within the QR specification + * - have similar distance between upper left/right and left top/bottom finder patterns + * - form a triangle with 90° angle (checked by comparing top right/bottom left distance + * with pythagoras) + * + * Note: we allow each point to be used for more than one code region: this might seem + * counterintuitive at first, but the performance penalty is not that big. At this point, + * we cannot make a good quality decision whether the three finders actually represent + * a QR code, or are just by chance layouted so it looks like there might be a QR code there. + * So, if the layout seems right, lets have the decoder try to decode. + */ + + var results:ArrayList = new ArrayList(); // holder for the results + + for (var i1:int = 0; i1 < (size - 2); i1++) { + var p1:FinderPattern = possibleCenters.elementAt(i1) as FinderPattern; + if (p1 == null) { + continue; + } + + for (var i2:int = i1 + 1; i2 < (size - 1); i2++) { + var p2:FinderPattern = possibleCenters.elementAt(i2) as FinderPattern; + if (p2 == null) { + continue; + } + + // Compare the expected module sizes; if they are really off, skip + var vModSize12:Number = (p1.getEstimatedModuleSize() - p2.getEstimatedModuleSize()) / + (Math.min(p1.getEstimatedModuleSize(), p2.getEstimatedModuleSize())); + var vModSize12A:Number = Math.abs(p1.getEstimatedModuleSize() - p2.getEstimatedModuleSize()); + if (vModSize12A > DIFF_MODSIZE_CUTOFF && vModSize12 >= DIFF_MODSIZE_CUTOFF_PERCENT) { + // break, since elements are ordered by the module size deviation there cannot be + // any more interesting elements for the given p1. + break; + } + + for (var i3:int = i2 + 1; i3 < size; i3++) { + var p3:FinderPattern = possibleCenters.elementAt(i3) as FinderPattern; + if (p3 == null) { + continue; + } + + // Compare the expected module sizes; if they are really off, skip + var vModSize23:Number = (p2.getEstimatedModuleSize() - p3.getEstimatedModuleSize()) / + (Math.min(p2.getEstimatedModuleSize(), p3.getEstimatedModuleSize())); + var vModSize23A:Number = Math.abs(p2.getEstimatedModuleSize() - p3.getEstimatedModuleSize()); + if (vModSize23A > DIFF_MODSIZE_CUTOFF && vModSize23 >= DIFF_MODSIZE_CUTOFF_PERCENT) { + // break, since elements are ordered by the module size deviation there cannot be + // any more interesting elements for the given p1. + break; + } + + var test:Array = [p1, p2, p3]; + ResultPoint.orderBestPatterns(test); + + // Calculate the distances: a = topleft-bottomleft, b=topleft-topright, c = diagonal + var info:FinderPatternInfo = new FinderPatternInfo(test); + var dA:Number = ResultPoint.distance(info.getTopLeft(), info.getBottomLeft()); + var dC:Number = ResultPoint.distance(info.getTopRight(), info.getBottomLeft()); + var dB:Number = ResultPoint.distance(info.getTopLeft(), info.getTopRight()); + + // Check the sizes + var estimatedModuleCount:Number = ((dA + dB) / p1.getEstimatedModuleSize()) / 2; + if (estimatedModuleCount > MAX_MODULE_COUNT_PER_EDGE || + estimatedModuleCount < MIN_MODULE_COUNT_PER_EDGE) { + continue; + } + + // Calculate the difference of the edge lengths in percent + var vABBC:Number = Math.abs(((dA - dB) / Math.min(dA, dB))); + if (vABBC >= 0.1) { + continue; + } + + // Calculate the diagonal length by assuming a 90° angle at topleft + var dCpy:Number = Math.sqrt(dA * dA + dB * dB); + // Compare to the real distance in % + var vPyC:Number = Math.abs(((dC - dCpy) / Math.min(dC, dCpy))); + + if (vPyC >= 0.1) { + continue; + } + + // All tests passed! + results.addElement(test); + } // end iterate p3 + } // end iterate p2 + } // end iterate p1 + + if (!results.isEmpty()) { + var resultArray:Array = new Array(results.size()); + for (var i:int = 0; i < results.size(); i++) { + resultArray[i] = results.elementAt(i) as Array; + } + return resultArray; + } + + // Nothing found! + throw new ReaderException("multi: qrcode : detector : Nothing found!"); + } + + public function findMulti(hints:HashTable ):Array { + var tryHarder:Boolean = hints != null && hints.containsKey(DecodeHintType.TRY_HARDER); + var image:BitMatrix = getImage(); + var maxI:int = image.getHeight(); + var maxJ:int = image.getWidth(); + // We are looking for black/white/black/white/black modules in + // 1:1:3:1:1 ratio; this tracks the number of such modules seen so far + + // Let's assume that the maximum version QR Code we support takes up 1/4 the height of the + // image, and then account for the center being 3 modules in size. This gives the smallest + // number of pixels the center could be, so skip this often. When trying harder, look for all + // QR versions regardless of how dense they are. + var iSkip:int = int((maxI / (MAX_MODULES * 4) * 3)); + if (iSkip < MIN_SKIP || tryHarder) { + iSkip = MIN_SKIP; + } + + var stateCount:Array = new Array(5); + for (var i:int = iSkip - 1; i < maxI; i += iSkip) { + // Get a row of black/white values + stateCount[0] = 0; + stateCount[1] = 0; + stateCount[2] = 0; + stateCount[3] = 0; + stateCount[4] = 0; + var currentState:int = 0; + for (var j:int = 0; j < maxJ; j++) { + if (image._get(j, i)) { + // Black pixel + if ((currentState & 1) == 1) { // Counting white pixels + currentState++; + } + stateCount[currentState]++; + } else { // White pixel + if ((currentState & 1) == 0) { // Counting black pixels + if (currentState == 4) { // A winner? + if (foundPatternCross(stateCount)) { // Yes + var confirmed:Boolean = handlePossibleCenter(stateCount, i, j); + if (!confirmed) { + do { // Advance to next black pixel + j++; + } while (j < maxJ && !image._get(j, i)); + j--; // back up to that last white pixel + } + // Clear state to start looking again + currentState = 0; + stateCount[0] = 0; + stateCount[1] = 0; + stateCount[2] = 0; + stateCount[3] = 0; + stateCount[4] = 0; + } else { // No, shift counts back by two + stateCount[0] = stateCount[2]; + stateCount[1] = stateCount[3]; + stateCount[2] = stateCount[4]; + stateCount[3] = 1; + stateCount[4] = 0; + currentState = 3; + } + } else { + stateCount[++currentState]++; + } + } else { // Counting white pixels + stateCount[currentState]++; + } + } + } // for j=... + + if (foundPatternCross(stateCount)) { + handlePossibleCenter(stateCount, i, maxJ); + } // end if foundPatternCross + } // for i=iSkip-1 ... + var patternInfo:Array = selectBestPatterns(); + var result:ArrayList = new ArrayList(); + for (var i2:int = 0; i2 < patternInfo.length; i2++) { + var pattern:Array = patternInfo[i2]; + ResultPoint.orderBestPatterns(pattern); + result.addElement(new FinderPatternInfo(pattern)); + } + + if (result.isEmpty()) { + return EMPTY_RESULT_ARRAY; + } else { + var resultArray:Array = new Array(result.size()); + for (var i3:int = 0; i3 < result.size(); i3++) { + resultArray[i3] = result.elementAt(i3) as FinderPatternInfo; + } + return resultArray; + } + } + +} + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/CodaBarReader.as b/FairyGUI-as3/src/com/google/zxing/oned/CodaBarReader.as new file mode 100644 index 0000000..2514e11 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/CodaBarReader.as @@ -0,0 +1,264 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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 com.google.zxing.oned +{ + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.NotFoundException; +import com.google.zxing.Result; +import com.google.zxing.ResultPoint; +import com.google.zxing.common.BitArray; +import com.google.zxing.common.flexdatatypes.IllegalArgumentException; +import com.google.zxing.common.flexdatatypes.StringBuilder; + +/** + *

Decodes Codabar barcodes.

+ * + * @author Bas Vijfwinkel + */ +public final class CodaBarReader extends OneDReader { + + public static var ALPHABET_STRING:String = "0123456789-$:/.+ABCDTN"; + public static var ALPHABET:Array = CodaBarReader.ALPHABET_STRING.split(""); + + /** + * These represent the encodings of characters, as patterns of wide and narrow bars. The 7 least-significant bits of + * each int correspond to the pattern of wide and narrow, with 1s representing "wide" and 0s representing narrow. NOTE + * : c is equal to the * pattern NOTE : d is equal to the e pattern + */ + private static var CHARACTER_ENCODINGS:Array = [ + 0x003, 0x006, 0x009, 0x060, 0x012, 0x042, 0x021, 0x024, 0x030, 0x048, // 0-9 + 0x00c, 0x018, 0x045, 0x051, 0x054, 0x015, 0x01A, 0x029, 0x00B, 0x00E, // -$:/.+ABCD + 0x01A, 0x029 //TN + ]; + + // minimal number of characters that should be present (inclusing start and stop characters) + // this check has been added to reduce the number of false positive on other formats + // until the cause for this behaviour has been determined + // under normal circumstances this should be set to 3 + private static var minCharacterLength:int = 6; + + // multiple start/end patterns + // official start and end patterns + private static var STARTEND_ENCODING:Array = ['E', '*', 'A', 'B', 'C', 'D', 'T', 'N']; + // some codabar generator allow the codabar string to be closed by every character + //private static final char[] STARTEND_ENCODING = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '$', ':', '/', '.', '+', 'A', 'B', 'C', 'D', 'T', 'N'}; + + // some industries use a checksum standard but this is not part of the original codabar standard + // for more information see : http://www.mecsw.com/specs/codabar.html + + public override function decodeRow(rowNumber:Object, row:BitArray, o:Object):Result + { + var start:Array = findAsteriskPattern(row); + start[1] = 0; // settings this to 0 improves the recognition rate somehow? + var nextStart:int = start[1]; + var end:int = row.getSize(); + + // Read off white space + while (nextStart < end && !row._get(nextStart)) { + nextStart++; + } + + var result:StringBuilder = new StringBuilder(); + //int[] counters = new int[7]; + var counters:Array; + var lastStart:int; + + do { + counters = [0, 0, 0, 0, 0, 0, 0]; // reset counters + recordPattern(row, nextStart, counters); + + var decodedChar:String = toNarrowWidePattern(counters); + if (decodedChar == '!') { + throw NotFoundException.getNotFoundInstance(); + } + result.Append(decodedChar); + lastStart = nextStart; + for (i = 0; i < counters.length; i++) { + nextStart += counters[i]; + } + + // Read off white space + while (nextStart < end && !row._get(nextStart)) { + nextStart++; + } + } while (nextStart < end); // no fixed end pattern so keep on reading while data is available + + // Look for whitespace after pattern: + var lastPatternSize:int = 0; + for (var i:int = 0; i < counters.length; i++) { + lastPatternSize += counters[i]; + } + + var whiteSpaceAfterEnd:int = nextStart - lastStart - lastPatternSize; + // If 50% of last pattern size, following last pattern, is not whitespace, fail + // (but if it's whitespace to the very end of the image, that's OK) + if (nextStart != end && (whiteSpaceAfterEnd / 2 < lastPatternSize)) { + throw NotFoundException.getNotFoundInstance(); + } + + // valid result? + if (result.length < 2) + { + throw NotFoundException.getNotFoundInstance(); + } + + var startchar:String = result.charAt(0); + if (!arrayContains(STARTEND_ENCODING,startchar)) + { + //invalid start character + throw NotFoundException.getNotFoundInstance(); + } + + // find stop character + for (var k:int = 1;k < result.length ;k++) + { + if (result.charAt(k) == startchar) + { + // found stop character -> discard rest of the string + if ((k+1) != result.length) + { + result.Remove(k+1,result.length-1); + k = result.length;// break out of loop + } + } + } + + // remove stop/start characters character and check if a string longer than 5 characters is contained + if (result.length > minCharacterLength) + { + result.deleteCharAt(result.length-1); + result.deleteCharAt(0); + } + else + { + // Almost surely a false positive ( start + stop + at least 1 character) + throw NotFoundException.getNotFoundInstance(); + } + + var left:Number = (start[1] + start[0]) / 2.0; + var right:Number = (nextStart + lastStart) / 2.0; + return new Result( + result.toString(), + null, + [new ResultPoint(left, Math.floor(rowNumber as Number)),new ResultPoint(right, Math.floor(rowNumber as Number))], + BarcodeFormat.CODABAR); + } + + private static function findAsteriskPattern(row:BitArray):Array { + var width:int = row.getSize(); + var rowOffset:int = 0; + while (rowOffset < width) { + if (row._get(rowOffset)) { + break; + } + rowOffset++; + } + + var counterPosition:int = 0; + var counters:Array = new Array(7); + for (var k:int = 0;k= 50% of width of start pattern + if (row.isRange(Math.max(0, patternStart - (i - patternStart) / 2), patternStart, false)) { + return [patternStart, i]; + } + } + } catch (re:IllegalArgumentException ) { + // no match, continue + } + patternStart += counters[0] + counters[1]; + for (var y:int = 2; y < patternLength; y++) { + counters[y - 2] = counters[y]; + } + counters[patternLength - 2] = 0; + counters[patternLength - 1] = 0; + counterPosition--; + } else { + counterPosition++; + } + counters[counterPosition] = 1; + if (isWhite) {isWhite = false; } else { isWhite = true;} // isWhite = !isWhite; + } + } + throw NotFoundException.getNotFoundInstance(); + } + + private static function arrayContains(array:Array, key:String):Boolean { + if (array != null) { + for (var i:int = 0; i < array.length; i++) { + if (array[i] == key) { + return true; + } + } + } + return false; + } + + private static function toNarrowWidePattern(counters:Array):String { + // BAS : I have changed the following part because some codabar images would fail with the original routine + // I took from the Code39Reader.java file + // ----------- change start + var numCounters:int = counters.length; + var maxNarrowCounter:int = 0; + + var minCounter:int = int.MAX_VALUE; + for (var i:int = 0; i < numCounters; i++) { + if (counters[i] < minCounter) { + minCounter = counters[i]; + } + if (counters[i] > maxNarrowCounter) { + maxNarrowCounter = counters[i]; + } + } + // ---------- change end + + + do { + var wideCounters:int = 0; + var pattern:int = 0; + for (i = 0; i < numCounters; i++) { + if (counters[i] > maxNarrowCounter) { + pattern |= 1 << (numCounters - 1 - i); + wideCounters++; + } + } + + if ((wideCounters == 2) || (wideCounters == 3)) { + for (i = 0; i < CHARACTER_ENCODINGS.length; i++) { + if (CHARACTER_ENCODINGS[i] == pattern) { + return ALPHABET[i]; + } + } + } + maxNarrowCounter--; + } while (maxNarrowCounter > minCounter); + return '!'; + } +} +} diff --git a/FairyGUI-as3/src/com/google/zxing/oned/Code128Reader.as b/FairyGUI-as3/src/com/google/zxing/oned/Code128Reader.as new file mode 100644 index 0000000..99d5e26 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/Code128Reader.as @@ -0,0 +1,481 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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 com.google.zxing.oned +{ + import com.google.zxing.ResultMetadataType; + + + public class Code128Reader extends OneDReader + { + import com.google.zxing.common.flexdatatypes.HashTable; + import com.google.zxing.common.flexdatatypes.StringBuilder; + import com.google.zxing.BarcodeFormat; + import com.google.zxing.ReaderException; + import com.google.zxing.Result; + import com.google.zxing.ResultPoint; + import com.google.zxing.common.BitArray; + import com.google.zxing.BinaryBitmap; + + + public static var CODE_PATTERNS:Array = [ + [2, 1, 2, 2, 2, 2], // 0 + [2, 2, 2, 1, 2, 2], + [2, 2, 2, 2, 2, 1], + [1, 2, 1, 2, 2, 3], + [1, 2, 1, 3, 2, 2], + [1, 3, 1, 2, 2, 2], // 5 + [1, 2, 2, 2, 1, 3], + [1, 2, 2, 3, 1, 2], + [1, 3, 2, 2, 1, 2], + [2, 2, 1, 2, 1, 3], + [2, 2, 1, 3, 1, 2], // 10 + [2, 3, 1, 2, 1, 2], + [1, 1, 2, 2, 3, 2], + [1, 2, 2, 1, 3, 2], + [1, 2, 2, 2, 3, 1], + [1, 1, 3, 2, 2, 2], // 15 + [1, 2, 3, 1, 2, 2], + [1, 2, 3, 2, 2, 1], + [2, 2, 3, 2, 1, 1], + [2, 2, 1, 1, 3, 2], + [2, 2, 1, 2, 3, 1], // 20 + [2, 1, 3, 2, 1, 2], + [2, 2, 3, 1, 1, 2], + [3, 1, 2, 1, 3, 1], + [3, 1, 1, 2, 2, 2], + [3, 2, 1, 1, 2, 2], // 25 + [3, 2, 1, 2, 2, 1], + [3, 1, 2, 2, 1, 2], + [3, 2, 2, 1, 1, 2], + [3, 2, 2, 2, 1, 1], + [2, 1, 2, 1, 2, 3], // 30 + [2, 1, 2, 3, 2, 1], + [2, 3, 2, 1, 2, 1], + [1, 1, 1, 3, 2, 3], + [1, 3, 1, 1, 2, 3], + [1, 3, 1, 3, 2, 1], // 35 + [1, 1, 2, 3, 1, 3], + [1, 3, 2, 1, 1, 3], + [1, 3, 2, 3, 1, 1], + [2, 1, 1, 3, 1, 3], + [2, 3, 1, 1, 1, 3], // 40 + [2, 3, 1, 3, 1, 1], + [1, 1, 2, 1, 3, 3], + [1, 1, 2, 3, 3, 1], + [1, 3, 2, 1, 3, 1], + [1, 1, 3, 1, 2, 3], // 45 + [1, 1, 3, 3, 2, 1], + [1, 3, 3, 1, 2, 1], + [3, 1, 3, 1, 2, 1], + [2, 1, 1, 3, 3, 1], + [2, 3, 1, 1, 3, 1], // 50 + [2, 1, 3, 1, 1, 3], + [2, 1, 3, 3, 1, 1], + [2, 1, 3, 1, 3, 1], + [3, 1, 1, 1, 2, 3], + [3, 1, 1, 3, 2, 1], // 55 + [3, 3, 1, 1, 2, 1], + [3, 1, 2, 1, 1, 3], + [3, 1, 2, 3, 1, 1], + [3, 3, 2, 1, 1, 1], + [3, 1, 4, 1, 1, 1], // 60 + [2, 2, 1, 4, 1, 1], + [4, 3, 1, 1, 1, 1], + [1, 1, 1, 2, 2, 4], + [1, 1, 1, 4, 2, 2], + [1, 2, 1, 1, 2, 4], // 65 + [1, 2, 1, 4, 2, 1], + [1, 4, 1, 1, 2, 2], + [1, 4, 1, 2, 2, 1], + [1, 1, 2, 2, 1, 4], + [1, 1, 2, 4, 1, 2], // 70 + [1, 2, 2, 1, 1, 4], + [1, 2, 2, 4, 1, 1], + [1, 4, 2, 1, 1, 2], + [1, 4, 2, 2, 1, 1], + [2, 4, 1, 2, 1, 1], // 75 + [2, 2, 1, 1, 1, 4], + [4, 1, 3, 1, 1, 1], + [2, 4, 1, 1, 1, 2], + [1, 3, 4, 1, 1, 1], + [1, 1, 1, 2, 4, 2], // 80 + [1, 2, 1, 1, 4, 2], + [1, 2, 1, 2, 4, 1], + [1, 1, 4, 2, 1, 2], + [1, 2, 4, 1, 1, 2], + [1, 2, 4, 2, 1, 1], // 85 + [4, 1, 1, 2, 1, 2], + [4, 2, 1, 1, 1, 2], + [4, 2, 1, 2, 1, 1], + [2, 1, 2, 1, 4, 1], + [2, 1, 4, 1, 2, 1], // 90 + [4, 1, 2, 1, 2, 1], + [1, 1, 1, 1, 4, 3], + [1, 1, 1, 3, 4, 1], + [1, 3, 1, 1, 4, 1], + [1, 1, 4, 1, 1, 3], // 95 + [1, 1, 4, 3, 1, 1], + [4, 1, 1, 1, 1, 3], + [4, 1, 1, 3, 1, 1], + [1, 1, 3, 1, 4, 1], + [1, 1, 4, 1, 3, 1], // 100 + [3, 1, 1, 1, 4, 1], + [4, 1, 1, 1, 3, 1], + [2, 1, 1, 4, 1, 2], + [2, 1, 1, 2, 1, 4], + [2, 1, 1, 2, 3, 2], // 105 + [2, 3, 3, 1, 1, 1, 2]]; + + + private static var MAX_AVG_VARIANCE:int = int(PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.25); + private static var MAX_INDIVIDUAL_VARIANCE:int = int(PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.7); + + private static var CODE_SHIFT:int = 98; + + private static var CODE_CODE_C:int = 99; + private static var CODE_CODE_B:int = 100; + private static var CODE_CODE_A:int = 101; + + private static var CODE_FNC_1:int = 102; + private static var CODE_FNC_2:int = 97; + private static var CODE_FNC_3:int = 96; + private static var CODE_FNC_4_A:int = 101; + private static var CODE_FNC_4_B:int = 100; + + private static var CODE_START_A:int = 103; + private static var CODE_START_B:int = 104; + private static var CODE_START_C:int = 105; + private static var CODE_STOP:int = 106; + + private static function findStartPattern(row:BitArray):Array + { + var width:int = row.getSize(); + var rowOffset:int = 0; + while (rowOffset < width) + { + if (row._get(rowOffset)) { + break; + } + rowOffset++; + } + + var counterPosition:int = 0; + var counters:Array = new Array(6); + var i:int; + for (i=0;i= 0) { + // Look for whitespace before start pattern, >= 50% of width of start pattern + if (row.isRange(Math.max(0, patternStart - (i - patternStart) / 2), patternStart, false)) + { + return [patternStart, i, bestMatch]; + } + } + patternStart += counters[0] + counters[1]; + for (var y:int = 2; y < patternLength; y++) { + counters[y - 2] = counters[y]; + } + counters[patternLength - 2] = 0; + counters[patternLength - 1] = 0; + counterPosition--; + } else { + counterPosition++; + } + counters[counterPosition] = 1; + isWhite = !isWhite; + } + } + throw new ReaderException("Code128Reader : findStartPattern : could not find pattern"); + } + + private static function decodeCode(row:BitArray, counters:Array, rowOffset:int):int + { + recordPattern(row, rowOffset, counters); + var bestVariance:int = MAX_AVG_VARIANCE; // worst variance we'll accept + var bestMatch:int = -1; + for (var d:int = 0; d < CODE_PATTERNS.length; d++) { + var pattern:Array = CODE_PATTERNS[d]; + var variance:int = patternMatchVariance(counters, pattern, MAX_INDIVIDUAL_VARIANCE); + if (variance < bestVariance) { + bestVariance = variance; + bestMatch = d; + } + } + // TODO We're overlooking the fact that the STOP pattern has 7 values, not 6 + if (bestMatch >= 0) { + return bestMatch; + } else { + throw new ReaderException("Code128Reader : decodeCode : no bestMatch found"); + } + } + + public override function decodeRow(rowNumber:Object, row:BitArray, hints:Object):Result { + + var startPatternInfo:Array = findStartPattern(row); + var startCode:int = startPatternInfo[2]; + var codeSet:int; + switch (startCode) { + case CODE_START_A: + codeSet = CODE_CODE_A; + break; + case CODE_START_B: + codeSet = CODE_CODE_B; + break; + case CODE_START_C: + codeSet = CODE_CODE_C; + break; + default: + throw new ReaderException("Code128Reader : decodeRow : startCode invalid : "+startCode); + } + + var done:Boolean = false; + var isNextShifted:Boolean = false; + + var result:StringBuilder = new StringBuilder(); + var lastStart:int = startPatternInfo[0]; + var nextStart:int = startPatternInfo[1]; + var counters:Array = new Array(6); + + var lastCode:int = 0; + var code:int = 0; + var checksumTotal:int = startCode; + var multiplier:int = 0; + var lastCharacterWasPrintable:Boolean = true; + + while (!done) { + + var unshift:Boolean = isNextShifted; + isNextShifted = false; + + // Save off last code + lastCode = code; + + // Decode another code from image + code = decodeCode(row, counters, nextStart); + + // Remember whether the last code was printable or not (excluding CODE_STOP) + if (code != CODE_STOP) { + lastCharacterWasPrintable = true; + } + + // Add to checksum computation (if not CODE_STOP of course) + if (code != CODE_STOP) { + multiplier++; + checksumTotal += multiplier * code; + } + + // Advance to where the next code will to start + lastStart = nextStart; + for (var i:int = 0; i < counters.length; i++) { + nextStart += counters[i]; + } + + // Take care of illegal start codes + switch (code) { + case CODE_START_A: + case CODE_START_B: + case CODE_START_C: + throw new ReaderException("Code128Reader : decodeRow : illegal startcode : "+code); + } + + switch (codeSet) { + case CODE_CODE_A: + if (code < 64) { + result.Append(String.fromCharCode(String(' ').charAt(0) + code)); + } else if (code < 96) { + result.Append(String.fromCharCode(code - 64)); + } else { + // Don't let CODE_STOP, which always appears, affect whether whether we think the last code + // was printable or not + if (code != CODE_STOP) { + lastCharacterWasPrintable = false; + } + switch (code) { + case CODE_FNC_1: + case CODE_FNC_2: + case CODE_FNC_3: + case CODE_FNC_4_A: + // do nothing? + break; + case CODE_SHIFT: + isNextShifted = true; + codeSet = CODE_CODE_B; + break; + case CODE_CODE_B: + codeSet = CODE_CODE_B; + break; + case CODE_CODE_C: + codeSet = CODE_CODE_C; + break; + case CODE_STOP: + done = true; + break; + } + } + break; + case CODE_CODE_B: + if (code < 96) { + result.Append(String.fromCharCode((' ').charCodeAt(0) + code)); + } else { + if (code != CODE_STOP) { + lastCharacterWasPrintable = false; + } + switch (code) { + case CODE_FNC_1: + case CODE_FNC_2: + case CODE_FNC_3: + case CODE_FNC_4_B: + // do nothing? + break; + case CODE_SHIFT: + isNextShifted = true; + codeSet = CODE_CODE_C; + break; + case CODE_CODE_A: + codeSet = CODE_CODE_A; + break; + case CODE_CODE_C: + codeSet = CODE_CODE_C; + break; + case CODE_STOP: + done = true; + break; + } + } + break; + case CODE_CODE_C: + if (code < 100) { + if (code < 10) { + result.Append('0'); + } + result.Append(code); + } else { + if (code != CODE_STOP) { + lastCharacterWasPrintable = false; + } + switch (code) { + case CODE_FNC_1: + // do nothing? + break; + case CODE_CODE_A: + codeSet = CODE_CODE_A; + break; + case CODE_CODE_B: + codeSet = CODE_CODE_B; + break; + case CODE_STOP: + done = true; + break; + } + } + break; + } + + // Unshift back to another code set if we were shifted + if (unshift) { + switch (codeSet) { + case CODE_CODE_A: + codeSet = CODE_CODE_B; + // codeSet = CODE_CODE_C; + break; + case CODE_CODE_B: + codeSet = CODE_CODE_A; + break; + // case CODE_CODE_C: + // codeSet = CODE_CODE_B; + // break; + } + } + + } + + // Check for ample whitespice following pattern, but, to do this we first need to remember that we + // fudged decoding CODE_STOP since it actually has 7 bars, not 6. There is a black bar left to read off. + // Would be slightly better to properly read. Here we just skip it: + while (row._get(nextStart)) { + nextStart++; + } + if (!row.isRange(nextStart, Math.min(row.getSize(), nextStart + (nextStart - lastStart) / 2), false)) { + throw new ReaderException("Code128Reader : decodeRow : no Range in row "); + } + + // Pull out from sum the value of the penultimate check code + checksumTotal -= multiplier * lastCode; + // lastCode is the checksum then: + if (checksumTotal % 103 != lastCode) { + throw new ReaderException("Code128Reader : decodeRow : lastCode is checksum"); + } + + // Need to pull out the check digits from string + var resultLength:int = result.length; + // Only bother if, well, the result had at least one character, and if the checksum digit happened + // to be a printable character. If it was just interpreted as a control code, nothing to remove + if (resultLength > 0 && lastCharacterWasPrintable) { + if (codeSet == CODE_CODE_C) { + result.Remove(resultLength - 2, resultLength); + } else { + result.Remove(resultLength - 1, resultLength); + } + } + + var resultString:String = result.ToString(); + + if (resultString.length == 0) { + // Almost surely a false positive + throw new ReaderException("Code128Reader : decodeRow : no resultstring could be found"); + } + + var left:Number = Number( (startPatternInfo[1] + startPatternInfo[0]) / 2); + var right:Number = Number( (nextStart + lastStart) / 2); + return new Result( + resultString, + null, + [new ResultPoint(left, Number(rowNumber)),new ResultPoint(right, Number( rowNumber))], + BarcodeFormat.CODE_128); + + } + + /* function decode(image:BinaryBitmap, hints:HashTable=null):Result + { + return super.decode(image,hints); + + }*/ + + } + + + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/Code128Writer.as b/FairyGUI-as3/src/com/google/zxing/oned/Code128Writer.as new file mode 100644 index 0000000..2bbcc25 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/Code128Writer.as @@ -0,0 +1,203 @@ +/* + * Copyright 2010 ZXing authors + * + * Licensed 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 com.google.zxing.oned +{ + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.common.flexdatatypes.HashTable; +import com.google.zxing.common.flexdatatypes.IllegalArgumentException; +import com.google.zxing.common.flexdatatypes.ArrayList; + +/** + * This object renders a CODE128 code as a {@link BitMatrix}. + * + * @author erik.barbara@gmail.com (Erik Barbara) + */ +public final class Code128Writer extends UPCEANWriter { + + private static var CODE_START_B:int = 104; + private static var CODE_START_C:int = 105; + private static var CODE_CODE_B:int = 100; + private static var CODE_CODE_C:int = 99; + private static var CODE_STOP:int = 106; + + // Dummy characters used to specify control characters in input + private static var ESCAPE_FNC_1:String = '\u00f1'; + private static var ESCAPE_FNC_2:String = '\u00f2'; + private static var ESCAPE_FNC_3:String = '\u00f3'; + private static var ESCAPE_FNC_4:String = '\u00f4'; + + private static var CODE_FNC_1:int = 102; // Code A, Code B, Code C + private static var CODE_FNC_2:int = 97; // Code A, Code B + private static var CODE_FNC_3:int = 96; // Code A, Code B + private static var CODE_FNC_4_B:int = 100; // Code B + + public override function encode(contents:String , + format:BarcodeFormat = null, + width:int = 0, + height:int = 0, + hints:HashTable = null):Object // either BitMatrix or String + { + if (format != null) + { + if (format != BarcodeFormat.CODE_128) { + throw new IllegalArgumentException("Can only encode CODE_128, but got " + format); + } + //returns a BitMatrix + return super.encode(contents, format, width, height, hints); + } + // this part will return a string + var length:int = contents.length; + // Check length + if (length < 1 || length > 80) {throw new IllegalArgumentException("Contents length should be between 1 and 80 characters, but got " + length); + } + // Check content + for (var i:int = 0; i < length; i++) { + var c:String = contents.charAt(i); + if (c < ' ' || c > '~') { + switch (c) { + case ESCAPE_FNC_1: + case ESCAPE_FNC_2: + case ESCAPE_FNC_3: + case ESCAPE_FNC_4: + break; + default: + throw new IllegalArgumentException("Bad character in input: " + c); + } + } + } + + var patterns:ArrayList = new ArrayList(); // temporary storage for patterns + var checkSum:int = 0; + var checkWeight:int = 1; + var codeSet:int = 0; // selected code (CODE_CODE_B or CODE_CODE_C) + var position:int = 0; // position in contents + + while (position < length) { + //Select code to use + var requiredDigitCount:int = codeSet == CODE_CODE_C ? 2 : 4; + var newCodeSet:int; + if (isDigits(contents, position, requiredDigitCount)) { + newCodeSet = CODE_CODE_C; + } else { + newCodeSet = CODE_CODE_B; + } + + //Get the pattern index + var patternIndex:int; + if (newCodeSet == codeSet) { + // Encode the current character + if (codeSet == CODE_CODE_B) { + patternIndex = contents.charCodeAt(position) - (' ').charCodeAt(0); + position += 1; + } else { // CODE_CODE_C + switch (contents.charAt(position)) { + case ESCAPE_FNC_1: + patternIndex = CODE_FNC_1; + position++; + break; + case ESCAPE_FNC_2: + patternIndex = CODE_FNC_2; + position++; + break; + case ESCAPE_FNC_3: + patternIndex = CODE_FNC_3; + position++; + break; + case ESCAPE_FNC_4: + patternIndex = CODE_FNC_4_B; // FIXME if this ever outputs Code A + position++; + break; + default: + patternIndex = parseInt(contents.substring(position, position + 2)); + position += 2; + break; + } + } + } else { + // Should we change the current code? + // Do we have a code set? + if (codeSet == 0) { + // No, we don't have a code set + if (newCodeSet == CODE_CODE_B) { + patternIndex = CODE_START_B; + } else { + // CODE_CODE_C + patternIndex = CODE_START_C; + } + } else { + // Yes, we have a code set + patternIndex = newCodeSet; + } + codeSet = newCodeSet; + } + + // Get the pattern + patterns.addElement(Code128Reader.CODE_PATTERNS[patternIndex]); + + // Compute checksum + checkSum += patternIndex * checkWeight; + if (position != 0) { + checkWeight++; + } + } + + // Compute and append checksum + checkSum %= 103; + patterns.addElement(Code128Reader.CODE_PATTERNS[checkSum]); + + // Append stop code + patterns.addElement(Code128Reader.CODE_PATTERNS[CODE_STOP]); + + // Compute code width + var codeWidth:int = 0; + for (var j:int=0;j '9') { + if (c != ESCAPE_FNC_1) { + return false; + } + end++; // ignore FNC_1 + } + } + return end <= last; // end > last if we've run out of string + } +} +} diff --git a/FairyGUI-as3/src/com/google/zxing/oned/Code39Reader.as b/FairyGUI-as3/src/com/google/zxing/oned/Code39Reader.as new file mode 100644 index 0000000..3734f99 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/Code39Reader.as @@ -0,0 +1,337 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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 com.google.zxing.oned +{ + public class Code39Reader extends OneDReader + { + + import com.google.zxing.common.BitArray; + import com.google.zxing.BarcodeFormat; + import com.google.zxing.ReaderException; + import com.google.zxing.Result; + import com.google.zxing.ResultPoint; + import com.google.zxing.common.flexdatatypes.HashTable; + import com.google.zxing.common.flexdatatypes.StringBuilder; + import com.google.zxing.BinaryBitmap; + + public static var ALPHABET_STRING:String = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%"; + public static var ALPHABET:Array = ALPHABET_STRING.split(""); + + /** + * These represent the encodings of characters, as patterns of wide and narrow bars. + * The 9 least-significant bits of each int correspond to the pattern of wide and narrow, + * with 1s representing "wide" and 0s representing narrow. + */ + public static var CHARACTER_ENCODINGS:Array = [ + 0x034, 0x121, 0x061, 0x160, 0x031, 0x130, 0x070, 0x025, 0x124, 0x064, // 0-9 + 0x109, 0x049, 0x148, 0x019, 0x118, 0x058, 0x00D, 0x10C, 0x04C, 0x01C, // A-J + 0x103, 0x043, 0x142, 0x013, 0x112, 0x052, 0x007, 0x106, 0x046, 0x016, // K-T + 0x181, 0x0C1, 0x1C0, 0x091, 0x190, 0x0D0, 0x085, 0x184, 0x0C4, 0x094, // U-* + 0x0A8, 0x0A2, 0x08A, 0x02A // $-% + ]; + + public static var ASTERISK_ENCODING:int = CHARACTER_ENCODINGS[39]; + + private var usingCheckDigit:Boolean; + private var extendedMode:Boolean; + + /** + * Creates a reader that assumes all encoded data is data, and does not treat the + * character as a check digit. It will not decoded "extended Code 39" sequences. + */ + + /** + * Creates a reader that can be configured to check the last character as a check digit. + * It will not decoded "extended Code 39" sequences. + * + * @param usingCheckDigit if true, treat the last data character as a check digit, not + * data, and verify that the checksum passes. + */ + + + // function decode(image:BinaryBitmap, hints:HashTable=null):Result { return null; } + + /** + * Creates a reader that can be configured to check the last character as a check digit, + * or optionally attempt to decode "extended Code 39" sequences that are used to encode + * the full ASCII character set. + * + * @param usingCheckDigit if true, treat the last data character as a check digit, not + * data, and verify that the checksum passes. + * @param extendedMode if true, will attempt to decode extended Code 39 sequences in the + * text. + */ + public function Code39Reader(usingCheckDigit:Boolean=false, extendedMode:Boolean=true):void { + if (usingCheckDigit == false) + { + //usingCheckDigit = false; + extendedMode = false; + + } + else + { + this.usingCheckDigit = usingCheckDigit; + if (extendedMode != true) + { + this.extendedMode = true;//textendedMode; + } + else + { + this.extendedMode = false; + } + } + } + + public override function decodeRow(rowNumber:Object, row:BitArray, hints:Object):Result { + + var start:Array = findAsteriskPattern(row); + var nextStart:int = start[1]; + var end:int = row.getSize(); + + // Read off white space + while (nextStart < end && !row._get(nextStart)) { + nextStart++; + } + + var result:StringBuilder = new StringBuilder(); + var counters:Array = new Array(9); + var decodedChar:String; + var lastStart:int; + do { + recordPattern(row, nextStart, counters); + var pattern:int = toNarrowWidePattern(counters); + decodedChar = patternToChar(pattern); + result.Append(decodedChar); + lastStart = nextStart; + for (var i2:int = 0; i2 < counters.length; i2++) { + nextStart += counters[i2]; + } + // Read off white space + while (nextStart < end && !row._get(nextStart)) { + nextStart++; + } + } while (decodedChar != '*'); + + result.Remove(result.length - 1, 1); // remove asterisk + + // Look for whitespace after pattern: + var lastPatternSize:int = 0; + for (var i:int = 0; i < counters.length; i++) { + lastPatternSize += counters[i]; + } + var whiteSpaceAfterEnd:int = nextStart - lastStart - lastPatternSize; + // If 50% of last pattern size, following last pattern, is not whitespace, fail + // (but if it's whitespace to the very end of the image, that's OK) + if (nextStart != end && whiteSpaceAfterEnd / 2 < lastPatternSize) { + throw new ReaderException("Code39Reader : decodeRow : 50% of last pattern size, following last pattern, is not whitespace"); + } + + if (usingCheckDigit) { + var max:int = result.length - 1; + var total:int = 0; + for (var i3:int = 0; i3 < max; i3++) { + total += ALPHABET_STRING.indexOf(result.charAt(i3)); + } + if (result.charAt(max) != ALPHABET[total % 43]) + { + throw new ReaderException("Code39Reader : decodeRow : checkDigit incorrect)"); + } + result.Remove(max,1); + } + + var resultString:String = result.toString(); + if (extendedMode) { + resultString = decodeExtended(resultString); + } + + if (resultString.length == 0) { + // Almost surely a false positive + throw new ReaderException("Code39Reader : decodeRow : no result string"); + } + + var left:Number = Number((start[1] + start[0]) / 2); + var right:Number = Number( (nextStart + lastStart) / 2); + return new Result( + resultString, + null, + [new ResultPoint(left, Number( rowNumber)),new ResultPoint(right, Number( rowNumber))], + BarcodeFormat.CODE_39); + + } + + private static function findAsteriskPattern(row:BitArray):Array { + var width:int = row.getSize(); + var rowOffset:int = 0; + while (rowOffset < width) { + if (row._get(rowOffset)) { + break; + } + rowOffset++; + } + + var counterPosition:int = 0; + var counters:Array = new Array(9); + var patternStart:int = rowOffset; + var isWhite:Boolean = false; + var patternLength:int = counters.length; + + for (var i:int = rowOffset; i < width; i++) { + var pixel:Boolean = row._get(i); + if (pixel != isWhite) + { + counters[counterPosition] = counters[counterPosition] + 1; + } + else { + if (counterPosition == patternLength - 1) { + try { + if (toNarrowWidePattern(counters) == ASTERISK_ENCODING) { + // Look for whitespace before start pattern, >= 50% of width of start pattern + if (row.isRange(Math.max(0, patternStart - (i - patternStart) / 2), patternStart, false)) + { + return [patternStart, i]; + } + } + } catch (re:ReaderException ) { + // no match, continue + } + patternStart += counters[0] + counters[1]; + for (var y:int = 2; y < patternLength; y++) { + counters[y - 2] = counters[y]; + } + counters[patternLength - 2] = 0; + counters[patternLength - 1] = 0; + counterPosition--; + } else { + counterPosition++; + } + counters[counterPosition] = 1; + isWhite= !isWhite; + } + } + throw new ReaderException("Code39Reader : findAsteriskPattern : could not find asterisk pattern"); + } + + private static function toNarrowWidePattern(counters:Array):int { + var numCounters:int = counters.length; + var maxNarrowCounter:int = 0; + var wideCounters:int; + do { + var minCounter:int = int.MAX_VALUE; + for (var i:int = 0; i < numCounters; i++) { + var counter:int = counters[i]; + if (counter < minCounter && counter > maxNarrowCounter) { + minCounter = counter; + } + } + maxNarrowCounter = minCounter; + wideCounters = 0; + var totalWideCountersWidth:int = 0; + var pattern:int = 0; + for (var i2:int = 0; i2 < numCounters; i2++) + { + var counter3:int = counters[i2]; + if (counters[i2] > maxNarrowCounter) { + pattern |= 1 << (numCounters - 1 - i2); + wideCounters++; + totalWideCountersWidth += counter3; + } + } + if (wideCounters == 3) { + // Found 3 wide counters, but are they close enough in width? + // We can perform a cheap, conservative check to see if any individual + // counter is more than 1.5 times the average: + for (var i4:int = 0; i4 < numCounters && wideCounters > 0; i4++) { + var counter5:int = counters[i4]; + if (counters[i4] > maxNarrowCounter) { + wideCounters--; + // totalWideCountersWidth = 3 * average, so this checks if counter >= 3/2 * average + if ((counter5 << 1) >= totalWideCountersWidth) { + throw new ReaderException("Code39Reader : toNarrowWidePattern : counter NOT >= 3/2 * average"); + } + } + } + return pattern; + } + } while (wideCounters > 3); + throw new ReaderException("Code39Reader : toNarrowWidePattern : could not convert pattern"); + } + + private static function patternToChar(pattern:int):String { + for (var i:int = 0; i < CHARACTER_ENCODINGS.length; i++) { + if (CHARACTER_ENCODINGS[i] == pattern) { + return ALPHABET[i]; + } + } + throw new ReaderException("Code39Reader : patternToChar : could not convert pattern to char"); + } + + private static function decodeExtended(encoded:String):String { + var Length:int = encoded.length; + var decoded:StringBuilder = new StringBuilder(Length); + for (var i:int = 0; i < Length; i++) { + var c:String = encoded.substr(i,1); + if (c == '+' || c == '$' || c == '%' || c == '/') { + var next:String= encoded.substr(i+1,1); + var decodedChar:String = '\0'; + switch (c) { + case '+': + // +A to +Z map to a to z + if (next >= 'A' && next <= 'Z') { + decodedChar = String.fromCharCode(next.charCodeAt(0) + 32); + } else { + throw new ReaderException("Code39Reader : decodeExtended : character is not part of the alphabet"); + } + break; + case '$': + // $A to $Z map to control codes SH to SB + if (next >= 'A' && next <= 'Z') { + decodedChar = String.fromCharCode(next.charCodeAt(0) - 64); + } else { + throw new ReaderException("Code39Reader : decodeExtended : character is no control code"); + } + break; + case '%': + // %A to %E map to control codes ESC to US + if (next >= 'A' && next <= 'E') { + decodedChar = String.fromCharCode(next.charCodeAt(0) - 38); + } else if (next >= 'F' && next <= 'W') { + decodedChar = String.fromCharCode(next.charCodeAt(0) - 11); + } else { + throw new ReaderException("Code39Reader : decodeExtended : character is no control code"); + } + break; + case '/': + // /A to /O map to ! to , and /Z maps to : + if (next >= 'A' && next <= 'O') { + decodedChar = String.fromCharCode(next.charCodeAt(0) - 32); + } else if (next == 'Z') { + decodedChar = ':'; + } else { + throw new ReaderException("Code39Reader : decodeExtended : failed to map escape strings"); + } + break; + } + decoded.Append(decodedChar); + // bump up i again since we read two characters + i++; + } else { + decoded.Append(c); + } + } + return decoded.ToString(); + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/Code39Writer.as b/FairyGUI-as3/src/com/google/zxing/oned/Code39Writer.as new file mode 100644 index 0000000..048ef83 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/Code39Writer.as @@ -0,0 +1,85 @@ +/* + * Copyright 2010 ZXing authors + * + * Licensed 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 com.google.zxing.oned{ + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.common.flexdatatypes.HashTable; +import com.google.zxing.common.flexdatatypes.IllegalArgumentException; +import com.google.zxing.oned.Code39Reader + +/** + * This object renders a CODE39 code as a {@link BitMatrix}. + * + * @author erik.barbara@gmail.com (Erik Barbara) + */ +public class Code39Writer extends UPCEANWriter { + + public override function encode(contents:String , + format:BarcodeFormat = null, + width:int = 0, + height:int = 0, + hints:HashTable = null):Object + { + if (format != null) + { + if (format != BarcodeFormat.CODE_39) { + throw new IllegalArgumentException("Can only encode CODE_39, but got " + format); + } + // returns a bitmatrix + return super.encode(contents, format, width, height, hints); + } + // this part returns an array + var length:int = contents.length; + if (length > 80) { + throw new IllegalArgumentException( + "Requested contents should be less than 80 digits long, but got " + length); + } + + var widths:Array = new Array(9); + var codeWidth:int = 24 + 1 + length; + for (var i:int = 0; i < length; i++) { + var indexInString:int = Code39Reader.ALPHABET_STRING.indexOf(contents.charAt(i)); + toIntArray(Code39Reader.CHARACTER_ENCODINGS[indexInString], widths); + for(var j:int = 0; j < widths.length; j++) { + codeWidth += widths[j]; + } + } + var result:Array = new Array(codeWidth); + toIntArray(Code39Reader.CHARACTER_ENCODINGS[39], widths); + var pos:int = appendPattern(result, 0, widths, 1); + var narrowWhite:Array = [1]; + pos += appendPattern(result, pos, narrowWhite, 0); + //append next character to bytematrix + for(i = length-1; i >= 0; i--) { + indexInString = Code39Reader.ALPHABET_STRING.indexOf(contents.charAt(i)); + toIntArray(Code39Reader.CHARACTER_ENCODINGS[indexInString], widths); + pos += appendPattern(result, pos, widths, 1); + pos += appendPattern(result, pos, narrowWhite, 0); + } + toIntArray(Code39Reader.CHARACTER_ENCODINGS[39], widths); + pos += appendPattern(result, pos, widths, 1); + return result; + } + + private static function toIntArray(a:int, toReturn:Array):void { + for (var i:int = 0; i < 9; i++) { + var temp:int = a & (1 << i); + toReturn[i] = temp == 0 ? 1 : 2; + } + } +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/Code93Reader.as b/FairyGUI-as3/src/com/google/zxing/oned/Code93Reader.as new file mode 100644 index 0000000..7251768 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/Code93Reader.as @@ -0,0 +1,276 @@ +/* + * Copyright 2010 ZXing authors + * + * Licensed 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 com.google.zxing.oned +{ + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.ChecksumException; +import com.google.zxing.FormatException; +import com.google.zxing.NotFoundException; +import com.google.zxing.Result; +import com.google.zxing.ResultPoint; +import com.google.zxing.common.BitArray; +import com.google.zxing.common.flexdatatypes.StringBuilder; + +/** + *

Decodes Code 93 barcodes.

+ * + * @author Sean Owen + * @see Code39Reader + */ +public final class Code93Reader extends OneDReader { + + // Note that 'abcd' are dummy characters in place of control characters. + private static var ALPHABET_STRING:String = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%abcd*"; + private static var ALPHABET:Array = ALPHABET_STRING.split(""); + + /** + * These represent the encodings of characters, as patterns of wide and narrow bars. + * The 9 least-significant bits of each int correspond to the pattern of wide and narrow. + */ + private static var CHARACTER_ENCODINGS:Array = [ + 0x114, 0x148, 0x144, 0x142, 0x128, 0x124, 0x122, 0x150, 0x112, 0x10A, // 0-9 + 0x1A8, 0x1A4, 0x1A2, 0x194, 0x192, 0x18A, 0x168, 0x164, 0x162, 0x134, // A-J + 0x11A, 0x158, 0x14C, 0x146, 0x12C, 0x116, 0x1B4, 0x1B2, 0x1AC, 0x1A6, // K-T + 0x196, 0x19A, 0x16C, 0x166, 0x136, 0x13A, // U-Z + 0x12E, 0x1D4, 0x1D2, 0x1CA, 0x16E, 0x176, 0x1AE, // - - % + 0x126, 0x1DA, 0x1D6, 0x132, 0x15E, // Control chars? $-* + ]; + private static var ASTERISK_ENCODING:int = CHARACTER_ENCODINGS[47]; + + public override function decodeRow(rowNumber:Object, row:BitArray, hints:Object):Result + { + + var start:Array = findAsteriskPattern(row); + var nextStart:int = start[1]; + var end:int = row.getSize(); + + // Read off white space + while (nextStart < end && !row._get(nextStart)) { + nextStart++; + } + + var result:StringBuilder = new StringBuilder(20); + var counters:Array = new Array(6); + var decodedChar:String; + var lastStart:int; + do { + recordPattern(row, nextStart, counters); + var pattern:int = toPattern(counters); + if (pattern < 0) { + throw NotFoundException.getNotFoundInstance(); + } + decodedChar = patternToChar(pattern); + result.Append(decodedChar); + lastStart = nextStart; + for (var i:int = 0; i < counters.length; i++) { + nextStart += counters[i]; + } + // Read off white space + while (nextStart < end && !row._get(nextStart)) { + nextStart++; + } + } while (decodedChar != '*'); + result.deleteCharAt(result.length - 1); // remove asterisk + + // Should be at least one more black module + if (nextStart == end || !row._get(nextStart)) { + throw NotFoundException.getNotFoundInstance(); + } + + if (result.length < 4) { + // Almost surely a false positive + throw NotFoundException.getNotFoundInstance(); + } + + checkChecksums(result); + // Remove checksum digits + result.setLength(result.length - 2); + + var resultString:String = decodeExtended(result); + + var left:Number = (start[1] + start[0]) / 2.0; + var right:Number = (nextStart + lastStart) / 2.0; + return new Result( + resultString, + null, + [ + new ResultPoint(left, Math.floor(rowNumber as Number)), + new ResultPoint(right, Math.floor(rowNumber as Number))], + BarcodeFormat.CODE_93); + + } + + private static function findAsteriskPattern(row:BitArray ):Array { + var width:int = row.getSize(); + var rowOffset:int = 0; + while (rowOffset < width) { + if (row._get(rowOffset)) { + break; + } + rowOffset++; + } + + var counterPosition:int = 0; + var counters:Array= new Array(6); + for(var k:int=0;k> INTEGER_MATH_SHIFT; + if ((scaledShifted & 0xFF) > 0x7F) { + scaledUnshifted++; + } + if (scaledUnshifted < 1 || scaledUnshifted > 4) { + return -1; + } + if ((i & 0x01) == 0) { + for (var j:int = 0; j < scaledUnshifted; j++) { + pattern = (pattern << 1) | 0x01; + } + } else { + pattern <<= scaledUnshifted; + } + } + return pattern; + } + + private static function patternToChar(pattern:int):String { + for (var i:int = 0; i < CHARACTER_ENCODINGS.length; i++) { + if (CHARACTER_ENCODINGS[i] == pattern) { + return ALPHABET[i]; + } + } + throw NotFoundException.getNotFoundInstance(); + } + + private static function decodeExtended(encoded:StringBuilder):String { + var length:int = encoded.length; + var decoded:StringBuilder = new StringBuilder(length); + for (var i:int = 0; i < length; i++) { + var c:String = encoded.charAt(i); + if (c >= 'a' && c <= 'd') { + var next:String = encoded.charAt(i + 1); + var decodedChar:String = '\0'; + switch (c) { + case 'd': + // +A to +Z map to a to z + if (next >= 'A' && next <= 'Z') { + decodedChar = String.fromCharCode(next.charCodeAt(0) + 32); + } else { + throw FormatException.getFormatInstance(); + } + break; + case 'a': + // $A to $Z map to control codes SH to SB + if (next >= 'A' && next <= 'Z') { + decodedChar = String.fromCharCode(next.charCodeAt(0) - 64); + } else { + throw FormatException.getFormatInstance(); + } + break; + case 'b': + // %A to %E map to control codes ESC to US + if (next >= 'A' && next <= 'E') { + decodedChar = String.fromCharCode(next.charCodeAt(0) - 38); + } else if (next >= 'F' && next <= 'W') { + decodedChar = String.fromCharCode(next.charCodeAt(0) - 11); + } else { + throw FormatException.getFormatInstance(); + } + break; + case 'c': + // /A to /O map to ! to , and /Z maps to : + if (next >= 'A' && next <= 'O') { + decodedChar = String.fromCharCode(next.charCodeAt(0) - 32); + } else if (next == 'Z') { + decodedChar = ':'; + } else { + throw FormatException.getFormatInstance(); + } + break; + } + decoded.Append(decodedChar); + // bump up i again since we read two characters + i++; + } else { + decoded.Append(c); + } + } + return decoded.toString(); + } + + + + private static function checkChecksums(result:StringBuilder):void { + var length:int = result.length; + checkOneChecksum(result, length - 2, 20); + checkOneChecksum(result, length - 1, 15); + } + + private static function checkOneChecksum(result:StringBuilder, checkPosition:int, weightMax:int):void + { + var weight:int = 1; + var total:int = 0; + for (var i:int = checkPosition - 1; i >= 0; i--) { + total += weight * ALPHABET_STRING.indexOf(result.charAt(i)); + if (++weight > weightMax) { + weight = 1; + } + } + if (result.charAt(checkPosition) != ALPHABET[total % 47]) { + throw ChecksumException.getChecksumInstance(); + } + } +} +} diff --git a/FairyGUI-as3/src/com/google/zxing/oned/EAN13Reader.as b/FairyGUI-as3/src/com/google/zxing/oned/EAN13Reader.as new file mode 100644 index 0000000..e3cf935 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/EAN13Reader.as @@ -0,0 +1,131 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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 com.google.zxing.oned +{ + + public class EAN13Reader extends UPCEANReader + { + import com.google.zxing.common.flexdatatypes.StringBuilder; + import com.google.zxing.ReaderException; + import com.google.zxing.BarcodeFormat; + import com.google.zxing.common.BitArray; + + // For an EAN-13 barcode, the first digit is represented by the parities used + // to encode the next six digits, according to the table below. For example, + // if the barcode is 5 123456 789012 then the value of the first digit is + // signified by using odd for '1', even for '2', even for '3', odd for '4', + // odd for '5', and even for '6'. See http://en.wikipedia.org/wiki/EAN-13 + // + // Parity of next 6 digits + // Digit 0 1 2 3 4 5 + // 0 Odd Odd Odd Odd Odd Odd + // 1 Odd Odd Even Odd Even Even + // 2 Odd Odd Even Even Odd Even + // 3 Odd Odd Even Even Even Odd + // 4 Odd Even Odd Odd Even Even + // 5 Odd Even Even Odd Odd Even + // 6 Odd Even Even Even Odd Odd + // 7 Odd Even Odd Even Odd Even + // 8 Odd Even Odd Even Even Odd + // 9 Odd Even Even Odd Even Odd + // + // Note that the encoding for '0' uses the same parity as a UPC barcode. Hence + // a UPC barcode can be converted to an EAN-13 barcode by prepending a 0. + // + // The encodong is represented by the following array, which is a bit pattern + // using Odd = 0 and Even = 1. For example, 5 is represented by: + // + // Odd Even Even Odd Odd Even + // in binary: + // 0 1 1 0 0 1 == 0x19 + // + public static var FIRST_DIGIT_ENCODINGS:Array = [0x00, 0x0B, 0x0D, 0xE, 0x13, 0x19, 0x1C, 0x15, 0x16, 0x1A]; + + private var decodeMiddleCounters:Array; + + public function EAN13Reader() + { + decodeMiddleCounters = new Array(4); + } + + protected override function decodeMiddle(row:BitArray, startRange:Array, resultString:StringBuilder):int { + var counters:Array = decodeMiddleCounters; + counters[0] = 0; + counters[1] = 0; + counters[2] = 0; + counters[3] = 0; + var end:int = row.getSize(); + var rowOffset:int = startRange[1]; + + var lgPatternFound:int = 0; + for (var x2:int = 0; (x2 < 6) && (rowOffset < end); x2++) { + var bestMatch2:int = decodeDigit(row, counters, rowOffset, L_AND_G_PATTERNS); + resultString.Append(String.fromCharCode(('0').charCodeAt(0) + (bestMatch2 % 10))); + for (var i:int = 0; i < counters.length; i++) { + rowOffset += counters[i]; + } + if (bestMatch2 >= 10) { + lgPatternFound |= 1 << (5 - x2); + } + } + + determineFirstDigit(resultString, lgPatternFound); + + var middleRange:Array = findGuardPattern(row, rowOffset, true, MIDDLE_PATTERN); + rowOffset = middleRange[1]; + + for (var x:int = 0; (x < 6) && (rowOffset) < end; x++) + { + var bestMatch:int = decodeDigit(row, counters, rowOffset, L_PATTERNS); + resultString.Append(String.fromCharCode(('0').charCodeAt(0) + bestMatch)); + for (var i2:int = 0; i2 < counters.length; i2++) + { + rowOffset += counters[i2]; + } + } + + return rowOffset; + } + + public override function getBarcodeFormat():BarcodeFormat { + return BarcodeFormat.EAN_13; + } + + /** + * Based on pattern of odd-even ('L' and 'G') patterns used to encoded the explicitly-encoded digits + * in a barcode, determines the implicitly encoded first digit and adds it to the result string. + * + * @param resultString string to insert decoded first digit into + * @param lgPatternFound int whose bits indicates the pattern of odd/even L/G patterns used to + * encode digits + * @throws ReaderException if first digit cannot be determined + */ + private static function determineFirstDigit( resultString:StringBuilder , lgPatternFound:int):void { + for (var d:int = 0; d < 10; d++) { + if (lgPatternFound == FIRST_DIGIT_ENCODINGS[d]) { + resultString.Insert(0, String.fromCharCode( ('0').charCodeAt(0) + d)); + return; + } + } + throw new ReaderException("EAN13Reader : determineFirstDigit : first digit not found"); + } + + + + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/EAN13Writer.as b/FairyGUI-as3/src/com/google/zxing/oned/EAN13Writer.as new file mode 100644 index 0000000..88037ca --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/EAN13Writer.as @@ -0,0 +1,98 @@ + /* + * Copyright 2009 ZXing authors + * + * Licensed 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 com.google.zxing.oned +{ + import com.google.zxing.common.BitMatrix; + +/** + * This object renders an EAN13 code as a ByteMatrix 2D array of greyscale + * values. + * + * @author aripollak@gmail.com (Ari Pollak) + */ +public final class EAN13Writer extends UPCEANWriter { + + import com.google.zxing.common.flexdatatypes.HashTable; + import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + import com.google.zxing.BarcodeFormat; + import com.google.zxing.WriterException; + import com.google.zxing.common.ByteMatrix; + + private static var codeWidth:int = 3 + // start guard + (7 * 6) + // left bars + 5 + // middle guard + (7 * 6) + // right bars + 3; // end guard + + + public override function encode(contents:String, format:BarcodeFormat=null, width:int=0, height:int=0, hints:HashTable=null):Object + { + if (format == null) + { + return (this.encode_simple(contents) as Array); + } + else + { + return (this.encode_extended(contents,format,width,height,hints) as BitMatrix); + } + } + + public function encode_extended(contents:String, format:BarcodeFormat, width:int, height:int, hints:HashTable):Object + { + if (format != BarcodeFormat.EAN_13) { + throw new IllegalArgumentException("oned : EAN13Writer : encode_extended : Can only encode EAN_13, but got " + format); + } + + return super.encode(contents, format, width, height, hints); + } + + public function encode_simple(contents:String):Array + { + if (contents.length != 13) { + throw new IllegalArgumentException("oned : EAN13Writer : encode_simple : Requested contents should be 13 digits long, but got " + contents.length); + } + + var firstDigit:int = parseInt(contents.substring(0, 1)); + var parities:int = EAN13Reader.FIRST_DIGIT_ENCODINGS[firstDigit]; + var result:Array = new Array(codeWidth); + var pos:int = 0; + + pos += appendPattern(result, pos,UPCEANReader.START_END_PATTERN, 1); + + // See {@link #EAN13Reader} for a description of how the first digit & left bars are encoded + for (var i:int = 1; i <= 6; i++) { + var digit:int = parseInt(contents.substring(i, i + 1)); + if ((parities >> (6 - i) & 1) == 1) { + digit += 10; + } + pos += appendPattern(result, pos, UPCEANReader.L_AND_G_PATTERNS[digit], 0); + } + + pos += appendPattern(result, pos, UPCEANReader.MIDDLE_PATTERN, 0); + + for (var i2:int = 7; i2 <= 12; i2++) { + var digit2:int = parseInt(contents.substring(i2, i2 + 1)); + pos += appendPattern(result, pos, UPCEANReader.L_PATTERNS[digit2], 1); + } + pos += appendPattern(result, pos, UPCEANReader.START_END_PATTERN, 1); + + return result; + } + +} + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/EAN8Reader.as b/FairyGUI-as3/src/com/google/zxing/oned/EAN8Reader.as new file mode 100644 index 0000000..a125178 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/EAN8Reader.as @@ -0,0 +1,69 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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 com.google.zxing.oned +{ + import com.google.zxing.common.BitArray; + import com.google.zxing.common.flexdatatypes.StringBuilder; + import com.google.zxing.BarcodeFormat; + + public class EAN8Reader extends UPCEANReader + { + + private var decodeMiddleCounters:Array; + + public function EAN8Reader() { + decodeMiddleCounters = new Array(4); + } + + protected override function decodeMiddle(row:BitArray, startRange:Array, result:StringBuilder):int + { + var counters:Array = decodeMiddleCounters; + counters[0] = 0; + counters[1] = 0; + counters[2] = 0; + counters[3] = 0; + var end:int = row.getSize(); + var rowOffset:int = startRange[1]; + + for (var x2:int = 0; x2 < 4 && rowOffset < end; x2++) { + var bestMatch2:int = decodeDigit(row, counters, rowOffset, L_PATTERNS); + result.Append(String.fromCharCode( ('0').charCodeAt(0) + bestMatch2)); + for (var i:int = 0; i < counters.length; i++) { + rowOffset += counters[i]; + } + } + + var middleRange:Array = findGuardPattern(row, rowOffset, true, MIDDLE_PATTERN); + rowOffset = middleRange[1]; + + for (var x:int = 0; x < 4 && rowOffset < end; x++) { + var bestMatch:int = decodeDigit(row, counters, rowOffset, L_PATTERNS); + result.Append(String.fromCharCode( ('0').charCodeAt(0) + bestMatch)); + for (var i2:int = 0; i2 < counters.length; i2++) { + rowOffset += counters[i2]; + } + } + + return rowOffset; + } + + public override function getBarcodeFormat():BarcodeFormat { + return BarcodeFormat.EAN_8; + } + + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/EAN8Writer.as b/FairyGUI-as3/src/com/google/zxing/oned/EAN8Writer.as new file mode 100644 index 0000000..d38d333 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/EAN8Writer.as @@ -0,0 +1,92 @@ + /* + * Copyright 2009 ZXing authors + * + * Licensed 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 com.google.zxing.oned +{ +/** + * This object renders an EAN8 code as a ByteMatrix 2D array of greyscale + * values. + * + * @author aripollak@gmail.com (Ari Pollak) + */ +public final class EAN8Writer extends UPCEANWriter { + +import com.google.zxing.common.flexdatatypes.HashTable; +import com.google.zxing.common.flexdatatypes.IllegalArgumentException; +import com.google.zxing.common.BitMatrix; + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.WriterException; + + + + private static var codeWidth:int = 3 + // start guard + (7 * 4) + // left bars + 5 + // middle guard + (7 * 4) + // right bars + 3; // end guard + + public override function encode(contents:String, format:BarcodeFormat=null, width:int=0, height:int=0, hints:HashTable=null):Object + { + if (format == null) + { + return (this.encode_simple(contents) as Array); + } + else + { + return (this.encode_extended(contents,format,width,height,hints) as BitMatrix); + } + + } + + + public function encode_extended(contents:String, format:BarcodeFormat, width:int , height:int, hints:HashTable):BitMatrix + { + if (format != BarcodeFormat.EAN_8) { + throw new IllegalArgumentException("Can only encode EAN_8, but got " + format); + } + + return (super.encode(contents, format, width, height, hints) as BitMatrix); + } + + /** @return a byte array of horizontal pixels (0 = white, 1 = black) */ + public function encode_simple(contents:String):Array { + if (contents.length != 8) { + throw new IllegalArgumentException( + "Requested contents should be 8 digits long, but got " + contents.length); + } + + var result:Array = new Array(codeWidth); + var pos:int = 0; + + pos += appendPattern(result, pos, UPCEANReader.START_END_PATTERN, 1); + + for (var i:int = 0; i <= 3; i++) { + var digit:int = parseInt(contents.substring(i, i + 1)); + pos += appendPattern(result, pos, UPCEANReader.L_PATTERNS[digit], 0); + } + + pos += appendPattern(result, pos, UPCEANReader.MIDDLE_PATTERN, 0); + + for (var i2:int = 4; i2 <= 7; i2++) { + var digit2:int = parseInt(contents.substring(i2, i2 + 1)); + pos += appendPattern(result, pos, UPCEANReader.L_PATTERNS[digit2], 1); + } + pos += appendPattern(result, pos, UPCEANReader.START_END_PATTERN, 1); + + return result; + } +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/EANManufacturerOrgSupport.as b/FairyGUI-as3/src/com/google/zxing/oned/EANManufacturerOrgSupport.as new file mode 100644 index 0000000..ade98d1 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/EANManufacturerOrgSupport.as @@ -0,0 +1,172 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed 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 com.google.zxing.oned +{ + +import com.google.zxing.common.flexdatatypes.ArrayList; + +/** + * Records EAN prefix to GS1 Member Organization, where the member organization + * correlates strongly with a country. This is an imperfect means of identifying + * a country of origin by EAN-13 barcode value. See + * + * http://en.wikipedia.org/wiki/List_of_GS1_country_codes. + * + * @author Sean Owen + */ +public class EANManufacturerOrgSupport { + + private var ranges:ArrayList = new ArrayList(); + private var countryIdentifiers:ArrayList = new ArrayList(); + + public function lookupCountryIdentifier(productCode:String):String { + initIfNeeded(); + var prefix:int = int(productCode.substring(0, 3)); + var max:int = ranges.size(); + for (var i:int = 0; i < max; i++) { + var range:Array = ranges.elementAt(i) as Array; + var start:int = range[0]; + if (prefix < start) { + return null; + } + var end:int = range.length == 1 ? start : range[1]; + if (prefix <= end) { + return (countryIdentifiers.elementAt(i) as String); + } + } + return null; + } + + private function add(range:Array, id:String):void { + ranges.addElement(range); + countryIdentifiers.addElement(id); + } + + private function initIfNeeded():void { + if (!ranges.isEmpty()) { + return; + } + add([0,19], "US/CA"); + add([30,39], "US"); + add([60,139], "US/CA"); + add([300,379],"FR"); + add([380],"BG"); + add([383],"SI"); + add([385],"HR"); + add([387],"BA"); + add([400,440],"DE"); + add([450,459],"JP"); + add([460,469],"RU"); + add([471],"TW"); + add([474],"EE"); + add([475],"LV"); + add([476],"AZ"); + add([477],"LT"); + add([478],"UZ"); + add([479],"LK"); + add([480],"PH"); + add([481],"BY"); + add([482],"UA"); + add([484],"MD"); + add([485],"AM"); + add([486],"GE"); + add([487],"KZ"); + add([489],"HK"); + add([490,499],"JP"); + add([500,509],"GB"); + add([520],"GR"); + add([528],"LB"); + add([529],"CY"); + add([531],"MK"); + add([535],"MT"); + add([539],"IE"); + add([540,549],"BE/LU"); + add([560],"PT"); + add([569],"IS"); + add([570,579],"DK"); + add([590],"PL"); + add([594],"RO"); + add([599],"HU"); + add([600,601],"ZA"); + add([603],"GH"); + add([608],"BH"); + add([609],"MU"); + add([611],"MA"); + add([613],"DZ"); + add([616],"KE"); + add([618],"CI"); + add([619],"TN"); + add([621],"SY"); + add([622],"EG"); + add([624],"LY"); + add([625],"JO"); + add([626],"IR"); + add([627],"KW"); + add([628],"SA"); + add([629],"AE"); + add([640,649],"FI"); + add([690,695],"CN"); + add([700,709],"NO"); + add([729],"IL"); + add([730,739],"SE"); + add([740],"GT"); + add([741],"SV"); + add([742],"HN"); + add([743],"NI"); + add([744],"CR"); + add([745],"PA"); + add([746],"DO"); + add([750],"MX"); + add([754,755],"CA"); + add([759],"VE"); + add([760,769],"CH"); + add([770],"CO"); + add([773],"UY"); + add([775],"PE"); + add([777],"BO"); + add([779],"AR"); + add([780],"CL"); + add([784],"PY"); + add([785],"PE"); + add([786],"EC"); + add([789,790],"BR"); + add([800,839],"IT"); + add([840,849],"ES"); + add([850],"CU"); + add([858],"SK"); + add([859],"CZ"); + add([860],"YU"); + add([865],"MN"); + add([867],"KP"); + add([868,869],"TR"); + add([870,879],"NL"); + add([880],"KR"); + add([885],"TH"); + add([888],"SG"); + add([890],"IN"); + add([893],"VN"); + add([896],"PK"); + add([899],"ID"); + add([900,919],"AT"); + add([930,939],"AU"); + add([940,949],"AZ"); + add([955],"MY"); + add([958],"MO"); + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/ITFReader.as b/FairyGUI-as3/src/com/google/zxing/oned/ITFReader.as new file mode 100644 index 0000000..d91e3d0 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/ITFReader.as @@ -0,0 +1,353 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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 com.google.zxing.oned +{ + + public class ITFReader extends OneDReader + { + import com.google.zxing.common.BitArray; + import com.google.zxing.ResultPoint; + import com.google.zxing.common.flexdatatypes.StringBuilder; + import com.google.zxing.common.flexdatatypes.HashTable; + + import com.google.zxing.BarcodeFormat; + import com.google.zxing.ReaderException; + import com.google.zxing.Result; + import com.google.zxing.DecodeHintType; + import com.google.zxing.BinaryBitmap; + + public static var MAX_AVG_VARIANCE:int = int(PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.42); + public static var MAX_INDIVIDUAL_VARIANCE:int = int(PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.8); + + public static var W:int = 3; // Pixel width of a wide line + public static var N:int = 1; // Pixed width of a narrow line + + // Stores the actual narrow line width of the image being decoded. + public var narrowLineWidth:int = -1; + + /** + * Start/end guard pattern. + * + * Note: The end pattern is reversed because the row is reversed before + * searching for the END_PATTERN + */ + public static var START_PATTERN:Array = [N, N, N, N]; + public static var END_PATTERN_REVERSED:Array = [N, N, W]; + + public static var DEFAULT_ALLOWED_LENGTHS:Array = [ 6, 10, 14 ]; + /** + * Patterns of Wide / Narrow lines to indicate each digit + */ + public static var PATTERNS:Array = [ + [N, N, W, W, N], // 0 + [W, N, N, N, W], // 1 + [N, W, N, N, W], // 2 + [W, W, N, N, N], // 3 + [N, N, W, N, W], // 4 + [W, N, W, N, N], // 5 + [N, W, W, N, N], // 6 + [N, N, N, W, W], // 7 + [W, N, N, W, N], // 8 + [N, W, N, W, N] // 9 + ]; + + //function decode(image:BinaryBitmap, hints:HashTable=null):Result { return null; } + + public override function decodeRow(rowNumber:Object, row:BitArray, hints:Object):Result + { + // Find out where the Middle section (payload) starts & ends + var startRange:Array = decodeStart(row); + var endRange:Array = decodeEnd(row); + + if (startRange == null) { throw new ReaderException("oned : ITFReader : decodeRow : startRange null"); } + if (endRange == null) { throw new ReaderException("oned : ITFReader : decodeRow : endRange null"); } + + + var result:StringBuilder = new StringBuilder(20); + decodeMiddle(row, startRange[1], endRange[0], result); + var resultString:String = result.ToString(); + + var allowedLengths:Array = null; + if (hints != null) + { + allowedLengths =hints.getValuesByKey(DecodeHintType.ALLOWED_LENGTHS) as Array; + } + + if (allowedLengths == null) + { + allowedLengths = DEFAULT_ALLOWED_LENGTHS; + } + + // To avoid false positives with 2D barcodes (and other patterns), make + // an assumption that the decoded string must be 6, 10 or 14 digits. + var length:int = resultString.length; + var lengthOK:Boolean = false; + for (var i:int = 0; i < allowedLengths.length; i++) { + if (length == allowedLengths[i]) { + lengthOK = true; + break; + } + + } + if (!lengthOK) { + throw new ReaderException("oned : ITFReader : decodeRow : Length not OK"); + } + + return new Result( + resultString, + null, // no natural byte representation for these barcodes + [ new ResultPoint(startRange[1], Number(rowNumber)), + new ResultPoint(startRange[0], Number(rowNumber))], + BarcodeFormat.ITF); + } + + /** + * @param row row of black/white values to search + * @param payloadStart offset of start pattern + * @param resultString {@link StringBuilder} to Append decoded chars to + * @throws ReaderException if decoding could not complete successfully + */ + public static function decodeMiddle( row:BitArray, payloadStart:int, payloadEnd:int, resultString:StringBuilder):void + { + + // Digits are interleaved in pairs - 5 black lines for one digit, and the + // 5 + // interleaved white lines for the second digit. + // Therefore, need to scan 10 lines and then + // split these into two arrays + var counterDigitPair:Array = new Array(10); + var counterBlack:Array = new Array(5); + var counterWhite:Array = new Array(5); + + while (payloadStart < payloadEnd) { + + // Get 10 runs of black/white. + recordPattern(row, payloadStart, counterDigitPair); + // Split them into each array + for (var k:int = 0; k < 5; k++) { + var twoK:int = k << 1; + counterBlack[k] = counterDigitPair[twoK]; + counterWhite[k] = counterDigitPair[twoK + 1]; + } + + var bestMatch:int = decodeDigit(counterBlack); + resultString.Append(String.fromCharCode(('0').charCodeAt(0) + bestMatch)); + bestMatch = decodeDigit(counterWhite); + resultString.Append(String.fromCharCode( ('0').charCodeAt(0) + bestMatch)); + + for (var i:int = 0; i < counterDigitPair.length; i++) { + payloadStart += counterDigitPair[i]; + } + } + } + + /** + * Identify where the start of the middle / payload section starts. + * + * @param row row of black/white values to search + * @return Array, containing index of start of 'start block' and end of + * 'start block' + * @throws ReaderException + */ + public function decodeStart( row:BitArray):Array { + var endStart:int = skipWhiteSpace(row); + var startPattern:Array = findGuardPattern(row, endStart, START_PATTERN); + + // Determine the width of a narrow line in pixels. We can do this by + // getting the width of the start pattern and dividing by 4 because its + // made up of 4 narrow lines. + this.narrowLineWidth = (startPattern[1] - startPattern[0]) >> 2; + + validateQuietZone(row, startPattern[0]); + + return startPattern; + } + + /** + * The start & end patterns must be pre/post fixed by a quiet zone. This + * zone must be at least 10 times the width of a narrow line. Scan back until + * we either get to the start of the barcode or match the necessary number of + * quiet zone pixels. + * + * Note: Its assumed the row is reversed when using this method to find + * quiet zone after the end pattern. + * + * ref: http://www.barcode-1.net/i25code.html + * + * @param row bit array representing the scanned barcode. + * @param startPattern index into row of the start or end pattern. + * @throws ReaderException if the quiet zone cannot be found, a ReaderException is thrown. + */ + private function validateQuietZone( row:BitArray, startPattern:int):void + { + + var quietCount:int = this.narrowLineWidth * 10; // expect to find this many pixels of quiet zone + + for (var i:int = startPattern - 1; quietCount > 0 && i >= 0; i--) { + if (row._get(i)) { + break; + } + quietCount--; + } + if (quietCount != 0) { + // Unable to find the necessary number of quiet zone pixels. + throw new ReaderException("ITFReader : validateQuietZone : Unable to find the necessary number of quiet zone pixels"); + } + } + + /** + * Skip all whitespace until we get to the first black line. + * + * @param row row of black/white values to search + * @return index of the first black line. + * @throws ReaderException Throws exception if no black lines are found in the row + */ + private function skipWhiteSpace( row:BitArray):int { + var width:int = row.getSize(); + var endStart:int = 0; + while (endStart < width) { + if (row._get(endStart)) { + break; + } + endStart++; + } + if (endStart == width) { + throw new ReaderException("ITFReader : skipWhiteSpace : endStart == width"); + } + + return endStart; + } + + /** + * Identify where the end of the middle / payload section ends. + * + * @param row row of black/white values to search + * @return Array, containing index of start of 'end block' and end of 'end + * block' + * @throws ReaderException + */ + + public function decodeEnd(row:BitArray):Array + { + var endPattern:Array = null; + // For convenience, reverse the row and then + // search from 'the start' for the end block + row.reverse(); + try { + var endStart:int = skipWhiteSpace(row); + endPattern = findGuardPattern(row, endStart, END_PATTERN_REVERSED); + + // The start & end patterns must be pre/post fixed by a quiet zone. This + // zone must be at least 10 times the width of a narrow line. + // ref: http://www.barcode-1.net/i25code.html + validateQuietZone(row, endPattern[0]); + + // Now recalc the indicies of where the 'endblock' starts & stops to + // accomodate + // the reversed nature of the search + var temp:int = endPattern[0]; + endPattern[0] = row.getSize() - endPattern[1]; + endPattern[1] = row.getSize() - temp; + + } + finally + { + // Put the row back the righ way. + row.reverse(); + } + return endPattern; + } + + /** + * @param row row of black/white values to search + * @param rowOffset position to start search + * @param pattern pattern of counts of number of black and white pixels that are + * being searched for as a pattern + * @return start/end horizontal offset of guard pattern, as an array of two + * ints + * @throws ReaderException if pattern is not found + */ + public function findGuardPattern( row:BitArray, rowOffset:int, pattern:Array):Array { + + // TODO: This is very similar to implementation in AbstractUPCEANReader. Consider if they can be merged to + // a single method. + + var patternLength:int = pattern.length; + var counters:Array = new Array(patternLength); + for (var i:int=0;i= 0) { + return bestMatch; + } else { + throw new ReaderException("ITFReader : decodeDigit : could not find best match"); + } + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/ITFWriter.as b/FairyGUI-as3/src/com/google/zxing/oned/ITFWriter.as new file mode 100644 index 0000000..43ddd89 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/ITFWriter.as @@ -0,0 +1,74 @@ +/* + * Copyright 2010 ZXing authors + * + * Licensed 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 com.google.zxing.oned +{ + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.WriterException; +import com.google.zxing.common.flexdatatypes.HashTable; +import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + +/** + * This object renders a ITF code as a {@link BitMatrix}. + * + * @author erik.barbara@gmail.com (Erik Barbara) + */ +public class ITFWriter extends UPCEANWriter +{ + + public override function encode(contents:String , + format:BarcodeFormat=null , + width:int=0, + height:int=0, + hints:HashTable=null ) : Object + { + + if (format != null) + { + if (format != BarcodeFormat.ITF) { + throw new IllegalArgumentException("Can only encode ITF, but got " + format); + } + + return super.encode(contents, format, width, height, hints); + } + + //public byte[] encode(String contents) { + var length:int = contents.length; + if (length > 80) { + throw new IllegalArgumentException( + "Requested contents should be less than 80 digits long, but got " + length); + } + var result:Array = new Array(9 + 9 * length); + var start:Array = [1, 1, 1, 1]; + var pos:int = appendPattern(result, 0, start, 1); + for (var i:int = 0; i < length; i += 2) { + var one:int = contents.charCodeAt(i) - 48 ; + var two:int = contents.charCodeAt(i+1) - 48; + var encoding:Array = new Array(18); + for (var j:int = 0; j < 5; j++) { + encoding[(j << 1)] = ITFReader.PATTERNS[one][j]; + encoding[(j << 1) + 1] = ITFReader.PATTERNS[two][j]; + } + pos += appendPattern(result, pos, encoding, 1); + } + var end:Array = [3, 1, 1]; + pos += appendPattern(result, pos, end, 1); + + return result; + } +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/MultiFormatOneDReader.as b/FairyGUI-as3/src/com/google/zxing/oned/MultiFormatOneDReader.as new file mode 100644 index 0000000..c89646b --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/MultiFormatOneDReader.as @@ -0,0 +1,110 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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 com.google.zxing.oned +{ + public class MultiFormatOneDReader extends OneDReader + { + import com.google.zxing.common.BitArray; + import com.google.zxing.common.flexdatatypes.ArrayList; + import com.google.zxing.common.flexdatatypes.HashTable; + import com.google.zxing.DecodeHintType; + import com.google.zxing.ReaderException; + import com.google.zxing.Result; + import com.google.zxing.BarcodeFormat; + import com.google.zxing.oned.rss.RSS14Reader; + import com.google.zxing.oned.rss.expanded.RSSExpandedReader; + + private var readers:ArrayList; + + public function MultiFormatOneDReader(hints:HashTable) + { + var possibleFormats:ArrayList = (hints == null ? null : hints.getValuesByKey(DecodeHintType.POSSIBLE_FORMATS)); + var useCode39CheckDigit:Boolean = hints != null && hints._get(DecodeHintType.ASSUME_CODE_39_CHECK_DIGIT) != null; + readers = new ArrayList(); + + if (possibleFormats != null) + { + if (possibleFormats.Contains(BarcodeFormat.EAN_13) || + possibleFormats.Contains(BarcodeFormat.UPC_A) || + possibleFormats.Contains(BarcodeFormat.EAN_8) || + possibleFormats.Contains(BarcodeFormat.UPC_E)) + { + readers.addElement(new MultiFormatUPCEANReader(hints)); + } + if (possibleFormats.Contains(BarcodeFormat.CODE_39)) + { + readers.addElement(new Code39Reader(useCode39CheckDigit)); + } + if (possibleFormats.Contains(BarcodeFormat.CODE_93)) + { + readers.addElement(new Code93Reader()); + } + if (possibleFormats.Contains(BarcodeFormat.CODE_128)) + { + readers.addElement(new Code128Reader()); + } + if (possibleFormats.Contains(BarcodeFormat.ITF)) + { + readers.addElement(new ITFReader()); + } + if (possibleFormats.Contains(BarcodeFormat.CODABAR)) + { + readers.addElement(new CodaBarReader()); + } + if (possibleFormats.Contains(BarcodeFormat.RSS_14)) + { + readers.addElement(new RSS14Reader()); + } + if (possibleFormats.Contains(BarcodeFormat.RSS_EXPANDED)) + { + readers.addElement(new RSSExpandedReader()); + } + } + if (readers.isEmpty()) + { + readers.addElement(new MultiFormatUPCEANReader(hints)); + readers.addElement(new Code39Reader()); + readers.addElement(new CodaBarReader()); + readers.addElement(new Code93Reader()); + readers.addElement(new Code128Reader()); + readers.addElement(new ITFReader()); + readers.addElement(new RSS14Reader()); + readers.addElement(new RSSExpandedReader()); + } + + } + + + public override function decodeRow(rowNumber:Object, row:BitArray, hints:Object):Result + { + var size:int = readers.Count; + for (var i:int = 0; i < size; i++) { + var reader:Object = readers.getObjectByIndex(i); + try { + var res:Result = reader.decodeRow(rowNumber as Number, row, hints); + return res; + } catch (re:Error) { + // continue + var a:int=0;//BAS :needed for debugging + } + } + + throw new ReaderException("MultiFormatOneDReader : decodeRow : could not decode row"); + } + + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/MultiFormatUPCEANReader.as b/FairyGUI-as3/src/com/google/zxing/oned/MultiFormatUPCEANReader.as new file mode 100644 index 0000000..d320129 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/MultiFormatUPCEANReader.as @@ -0,0 +1,94 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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 com.google.zxing.oned +{ + public class MultiFormatUPCEANReader extends OneDReader + { + import com.google.zxing.common.BitArray; + import com.google.zxing.common.flexdatatypes.ArrayList; + import com.google.zxing.common.flexdatatypes.HashTable; + import com.google.zxing.BarcodeFormat; + import com.google.zxing.DecodeHintType; + import com.google.zxing.ReaderException; + import com.google.zxing.Result; + + + private var readers:ArrayList; + public function MultiFormatUPCEANReader(hints:HashTable) + { + var possibleFormats:ArrayList = (hints == null ? null : hints.getValuesByKey(DecodeHintType.POSSIBLE_FORMATS)); + readers = new ArrayList(); + if (possibleFormats != null) { + if (possibleFormats.Contains(BarcodeFormat.EAN_13)) { + readers.Add(new EAN13Reader()); + } else if (possibleFormats.Contains(BarcodeFormat.UPC_A)) { + readers.Add(new UPCAReader()); + } + if (possibleFormats.Contains(BarcodeFormat.EAN_8)) { + readers.Add(new EAN8Reader()); + } + if (possibleFormats.Contains(BarcodeFormat.UPC_E)) { + readers.Add(new UPCEReader()); + } + } + if (readers.Count==0) { + readers.Add(new EAN13Reader()); + // UPC-A is covered by EAN-13 + readers.Add(new EAN8Reader()); + readers.Add(new UPCEReader()); + } + } + + public override function decodeRow(rowNumber:Object, row:BitArray,hints:Object):Result + { + // Compute this location once and reuse it on multiple implementations + + var startGuardPattern:Array = UPCEANReader.findStartGuardPattern(row); + var size:int = readers.Count; + for (var i:int = 0; i < size; i++) { + + var reader:Object = readers.getObjectByIndex(i); + + var result:Result; + try { + result = reader.decodeRow(rowNumber, row, startGuardPattern); + } + catch (re:ReaderException) + { + continue;// + } + // Special case: a 12-digit code encoded in UPC-A is identical to a "0" + // followed by those 12 digits encoded as EAN-13. Each will recognize such a code, + // UPC-A as a 12-digit string and EAN-13 as a 13-digit string starting with "0". + // Individually these are correct and their readers will both read such a code + // and correctly call it EAN-13, or UPC-A, respectively. + // + // In this case, if we've been looking for both types, we'd like to call it + // a UPC-A code. But for efficiency we only run the EAN-13 decoder to also read + // UPC-A. So we special case it here, and convert an EAN-13 result to a UPC-A + // result if appropriate. + if ((result.getBarcodeFormat() == BarcodeFormat.EAN_13) && + (result.getText()).charAt(0) == '0') { + return new Result(result.getText().substring(1), null, result.getResultPoints(), BarcodeFormat.UPC_A); + } + return result; + } + + throw new ReaderException("MultiFormatUPCEANReader : decodeRow : could not decode row"); + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/OneDReader.as b/FairyGUI-as3/src/com/google/zxing/oned/OneDReader.as new file mode 100644 index 0000000..0f13a4c --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/OneDReader.as @@ -0,0 +1,315 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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 com.google.zxing.oned +{ + +import com.google.zxing.BinaryBitmap; +import com.google.zxing.DecodeHintType; +import com.google.zxing.NotFoundException; +import com.google.zxing.Reader; +import com.google.zxing.ReaderException; +import com.google.zxing.Result; +import com.google.zxing.ResultMetadataType; +import com.google.zxing.ResultPoint; +import com.google.zxing.common.BitArray; +import com.google.zxing.common.flexdatatypes.Enumeration; +import com.google.zxing.common.flexdatatypes.HashTable; + + +/** + * Encapsulates functionality and implementation that is common to all families + * of one-dimensional barcodes. + * + * @author dswitkin@google.com (Daniel Switkin) + * @author Sean Owen + */ +public class OneDReader implements Reader +{ + + protected static var INTEGER_MATH_SHIFT:int = 8; + protected static var PATTERN_MATCH_RESULT_SCALE_FACTOR:int = (1 << INTEGER_MATH_SHIFT); + + // Note that we don't try rotation without the try harder flag, even if rotation was supported. + + public function decode(image:BinaryBitmap , hints:HashTable=null):Result { + try { + return doDecode(image, hints); + } + catch (nfe:NotFoundException ) { + var tryHarder:Boolean = hints != null && hints.containsKey(DecodeHintType.TRY_HARDER); + if (tryHarder && image.isRotateSupported()) { + var rotatedImage:BinaryBitmap = image.rotateCounterClockwise(); + var result:Result = doDecode(rotatedImage, hints); + // Record that we found it rotated 90 degrees CCW / 270 degrees CW + var metadata:HashTable = result.getResultMetadata(); + var orientation:int = 270; + if (metadata != null && metadata.containsKey(ResultMetadataType.ORIENTATION)) { + // But if we found it reversed in doDecode(), add in that result here: + orientation = (orientation + + (metadata._get(ResultMetadataType.ORIENTATION) as int)) % 360; + } + result.putMetadata(ResultMetadataType.ORIENTATION, orientation); + // Update result points + var points:Array = result.getResultPoints(); + var height:int = rotatedImage.getHeight(); + for (var i:int = 0; i < points.length; i++) { + points[i] = new ResultPoint(height - points[i].getY() - 1, points[i].getX()); + } + return result; + } else { + throw nfe; + } + } + return null; + } + + public function reset():void { + // do nothing + } + + /** + * We're going to examine rows from the middle outward, searching alternately above and below the + * middle, and farther out each time. rowStep is the number of rows between each successive + * attempt above and below the middle. So we'd scan row middle, then middle - rowStep, then + * middle + rowStep, then middle - (2 * rowStep), etc. + * rowStep is bigger as the image is taller, but is always at least 1. We've somewhat arbitrarily + * decided that moving up and down by about 1/16 of the image is pretty good; we try more of the + * image if "trying harder". + * + * @param image The image to decode + * @param hints Any hints that were requested + * @return The contents of the decoded barcode + * @throws NotFoundException Any spontaneous errors which occur + */ + private function doDecode(image:BinaryBitmap , hints:HashTable ):Result { + try + { + var width:int = image.getWidth(); + var height:int = image.getHeight(); + var row:BitArray = new BitArray(width); + + var middle:int = height >> 1; + var tryHarder:Boolean = hints != null && hints.containsKey(DecodeHintType.TRY_HARDER); + var rowStep:int = Math.max(1, height >> (tryHarder ? 8 : 5)); + var maxLines:int; + if (tryHarder) { + maxLines = height; // Look at the whole image, not just the center + } else { + maxLines = 15; // 15 rows spaced 1/32 apart is roughly the middle half of the image + } + + for (var x:int = 0; x < maxLines; x++) + { + + // Scanning from the middle out. Determine which row we're looking at next: + var rowStepsAboveOrBelow:int = (x + 1) >> 1; + var isAbove:Boolean = (x & 0x01) == 0; // i.e. is x even? + var rowNumber:int = middle + rowStep * (isAbove ? rowStepsAboveOrBelow : -rowStepsAboveOrBelow); + if (rowNumber < 0 || rowNumber >= height) { + // Oops, if we run off the top or bottom, stop + break; + } + + // Estimate black point for this row and load it: + try + { + row = image.getBlackRow(rowNumber, row); + } + catch (nfe:Error ) + { + continue; + } + + // While we have the image data in a BitArray, it's fairly cheap to reverse it in place to + // handle decoding upside down barcodes. + for (var attempt:int = 0; attempt < 2; attempt++) + { + if (attempt == 1) + { // trying again? + row.reverse(); // reverse the row and continue + // This means we will only ever draw result points *once* in the life of this method + // since we want to avoid drawing the wrong points after flipping the row, and, + // don't want to clutter with noise from every single row scan -- just the scans + // that start on the center line. + if (hints != null && hints.containsKey(DecodeHintType.NEED_RESULT_POINT_CALLBACK)) { + var newHints:HashTable = new HashTable(); // Can't use clone() in J2ME + var hintEnum:Enumeration = new Enumeration( hints.keys()); + while (hintEnum.hasMoreElement()) { + var key:Object = hintEnum.nextElement(); + if (key != DecodeHintType.NEED_RESULT_POINT_CALLBACK) + { + newHints._put(key, hints._get(key)); + } + } + hints = newHints; + } + } + try + { + // Look for a barcode + var result:Result = decodeRow(rowNumber, row, hints); + // We found our barcode + if (attempt == 1) { + // But it was upside down, so note that + //result.putMetadata(ResultMetadataType.ORIENTATION, new Array(180)); + result.putMetadata(ResultMetadataType.ORIENTATION,new Array(180)); + // And remember to flip the result points horizontally. + var points:Array = result.getResultPoints(); + points[0] = new ResultPoint(width - points[0].getX() - 1, points[0].getY()); + points[1] = new ResultPoint(width - points[1].getX() - 1, points[1].getY()); + } + return result; + } + catch (e:Error) + { + var g:int=5; + } + } + } + + + } + catch (e:Error) + { + var a:int=0; + } + throw NotFoundException.getNotFoundInstance(); + } + + /** + * Records the size of successive runs of white and black pixels in a row, starting at a given point. + * The values are recorded in the given array, and the number of runs recorded is equal to the size + * of the array. If the row starts on a white pixel at the given start point, then the first count + * recorded is the run of white pixels starting from that point; likewise it is the count of a run + * of black pixels if the row begin on a black pixels at that point. + * + * @param row row to count from + * @param start offset into row to start at + * @param counters array into which to record counts + * @throws NotFoundException if counters cannot be filled entirely from row before running out + * of pixels + */ + protected static function recordPattern(row:BitArray , start:int , counters:Array):void { + var numCounters:int = counters.length; + for (var i:int = 0; i < numCounters; i++) { + counters[i] = 0; + } + var end:int = row.getSize(); + if (start >= end) { + throw NotFoundException.getNotFoundInstance(); + } + var isWhite:Boolean = !row._get(start); + var counterPosition:int = 0; + i= start; + while (i < end) { + var pixel:Boolean = row._get(i); + if ((pixel && !isWhite) || (!pixel && isWhite)) + { // that is, exactly one is true + counters[counterPosition]++; + } else { + counterPosition++; + if (counterPosition == numCounters) { + break; + } else { + counters[counterPosition] = 1; + isWhite = !isWhite; + } + } + i++; + } + // If we read fully the last section of pixels and filled up our counters -- or filled + // the last counter but ran off the side of the image, OK. Otherwise, a problem. + if (!(counterPosition == numCounters || ((counterPosition == numCounters - 1) &&( i == end)))) { + throw NotFoundException.getNotFoundInstance(); + } + } + + protected static function recordPatternInReverse(row:BitArray , start:int, counters:Array):void { + // This could be more efficient I guess + var numTransitionsLeft:int = counters.length; + var last:Boolean = row._get(start); + while (start > 0 && numTransitionsLeft >= 0) { + if (row._get(--start) != last) { + numTransitionsLeft--; + last = !last; + } + } + if (numTransitionsLeft >= 0) { + throw NotFoundException.getNotFoundInstance(); + } + recordPattern(row, start + 1, counters); + } + + /** + * Determines how closely a set of observed counts of runs of black/white values matches a given + * target pattern. This is reported as the ratio of the total variance from the expected pattern + * proportions across all pattern elements, to the length of the pattern. + * + * @param counters observed counters + * @param pattern expected pattern + * @param maxIndividualVariance The most any counter can differ before we give up + * @return ratio of total variance between counters and pattern compared to total pattern size, + * where the ratio has been multiplied by 256. So, 0 means no variance (perfect match); 256 means + * the total variance between counters and patterns equals the pattern length, higher values mean + * even more variance + */ + protected static function patternMatchVariance(counters:Array, pattern:Array, maxIndividualVariance:int ):int { + var numCounters:int = counters.length; + var total:int = 0; + var patternLength:int = 0; + for (var i:int = 0; i < numCounters; i++) { + total += counters[i]; + patternLength += pattern[i]; + } + if (total < patternLength) { + // If we don't even have one pixel per unit of bar width, assume this is too small + // to reliably match, so fail: + return int.MAX_VALUE; + } + // We're going to fake floating-point math in integers. We just need to use more bits. + // Scale up patternLength so that intermediate values below like scaledCounter will have + // more "significant digits" + var unitBarWidth:int = (total << INTEGER_MATH_SHIFT) / patternLength; + maxIndividualVariance = (maxIndividualVariance * unitBarWidth) >> INTEGER_MATH_SHIFT; + + var totalVariance:int = 0; + for (var x:int = 0; x < numCounters; x++) { + var counter:int = counters[x] << INTEGER_MATH_SHIFT; + var scaledPattern:int = pattern[x] * unitBarWidth; + var variance:int = counter > scaledPattern ? counter - scaledPattern : scaledPattern - counter; + if (variance > maxIndividualVariance) { + return int.MAX_VALUE; + } + totalVariance += variance; + } + return totalVariance / total; + } + + /** + *

Attempts to decode a one-dimensional barcode format given a single row of + * an image.

+ * + * @param rowNumber row number from top of the row + * @param row the black/white pixel data of the row + * @param hints decode hints + * @return {@link Result} containing encoded string and start/end of barcode + * @throws NotFoundException if an error occurs or barcode cannot be found + */; + public function decodeRow(rowNumber:Object , row:BitArray , o:Object):Result { return null;} + +} +} diff --git a/FairyGUI-as3/src/com/google/zxing/oned/UPCAReader.as b/FairyGUI-as3/src/com/google/zxing/oned/UPCAReader.as new file mode 100644 index 0000000..633970d --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/UPCAReader.as @@ -0,0 +1,68 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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 com.google.zxing.oned +{ + + public class UPCAReader extends UPCEANReader + { + import com.google.zxing.common.BitArray; + import com.google.zxing.common.flexdatatypes.HashTable; + import com.google.zxing.BarcodeFormat; + import com.google.zxing.ReaderException; + import com.google.zxing.Result; + import com.google.zxing.BinaryBitmap; + + private var ean13Reader:EAN13Reader = new EAN13Reader(); + + public override function decodeRow(rowNumber:Object, row:BitArray, o:Object):Result + { + if (rowNumber is int) + { + if (o is Array) { return decodeRow_Array(rowNumber as int,row,o as Array);} + else if (o is HashTable) { return decodeRow_Hashtable(rowNumber as int, row, o as HashTable);} + } + else if (rowNumber is BinaryBitmap) + { + return this.decode_BinaryBitmap(rowNumber as BinaryBitmap); + } + else { throw new Error('UPCAReader : decodeRow : unknown type of o');} + return null; + } + + public override function decodeRow_Array(rowNumber:int, row:BitArray, startGuardRange:Array):Result { + return maybeReturnResult(ean13Reader.decodeRow(rowNumber, row, startGuardRange)); + } + + public function decodeRow_Hashtable(rowNumber:int, row:BitArray, hints:Object):Result { + return maybeReturnResult(ean13Reader.decodeRow(rowNumber, row, hints)); + } + + + public function decode_BinaryBitmap(image:BinaryBitmap, hints:HashTable=null):Result { + return maybeReturnResult(ean13Reader.decode(image, hints)); + } + + private static function maybeReturnResult(result:Result):Result { + var text:String = result.getText(); + if (text.substr(0,1) == '0') { + return new Result(text.substring(1), null, result.getResultPoints(), BarcodeFormat.UPC_A); + } else { + throw new ReaderException("UPCAReader : maybeReturnResult : first character ("+text[0]+") is not zero"); + } + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/UPCAWriter.as b/FairyGUI-as3/src/com/google/zxing/oned/UPCAWriter.as new file mode 100644 index 0000000..38cab26 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/UPCAWriter.as @@ -0,0 +1,71 @@ +/* + * Copyright 2010 ZXing authors + * + * Licensed 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 com.google.zxing.oned +{ + + import com.google.zxing.Writer; + import com.google.zxing.common.BitMatrix; + import com.google.zxing.common.flexdatatypes.HashTable; + import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + import com.google.zxing.BarcodeFormat; + + /** + * This object renders a UPC-A code as a {@link BitMatrix}. + * + * @author qwandor@google.com (Andrew Walbran) + */ + public class UPCAWriter implements Writer + { + + private var subWriter:EAN13Writer = new EAN13Writer(); + + + public function encode(contents:String, format:BarcodeFormat=null, width:int=0, height:int=0, hints:HashTable=null):Object + { + if (format != BarcodeFormat.UPC_A) + { + throw new IllegalArgumentException("Can only encode UPC-A, but got " + format); + } + return subWriter.encode(preencode(contents), BarcodeFormat.EAN_13, width, height, hints); + } + + /** + * Transform a UPC-A code into the equivalent EAN-13 code, and add a check digit if it is not + * already present. + */ + private static function preencode(contents:String):String + { + var length:int = contents.length; + if (length == 11) + { + // No check digit present, calculate it and add it + var sum:int = 0; + for (var i:int = 0; i < 11; ++i) + { + sum += (contents.charCodeAt(i) - ('0' as String).charCodeAt(0)) * (i % 2 == 0 ? 3 : 1); + } + contents += (1000 - sum) % 10; + } + else if (length != 12) + { + throw new IllegalArgumentException( + "Requested contents should be 11 or 12 digits long, but got " + contents.length); + } + return '0' + contents; + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/UPCEANExtensionSupport.as b/FairyGUI-as3/src/com/google/zxing/oned/UPCEANExtensionSupport.as new file mode 100644 index 0000000..db439f3 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/UPCEANExtensionSupport.as @@ -0,0 +1,197 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed 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 com.google.zxing.oned +{ + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.NotFoundException; +import com.google.zxing.Result; +import com.google.zxing.ResultMetadataType; +import com.google.zxing.ResultPoint; +import com.google.zxing.common.BitArray; +import com.google.zxing.common.flexdatatypes.HashTable; +import com.google.zxing.common.flexdatatypes.StringBuilder; + +public class UPCEANExtensionSupport { + + private var EXTENSION_START_PATTERN:Array = [1,1,2]; + private static var CHECK_DIGIT_ENCODINGS:Array = [ + 0x18, 0x14, 0x12, 0x11, 0x0C, 0x06, 0x03, 0x0A, 0x09, 0x05 + ]; + + private var decodeMiddleCounters:Array = new Array(4); + private var decodeRowStringBuffer:StringBuilder = new StringBuilder(); + + public function decodeRow(rowNumber:int, row:BitArray, rowOffset:int):Result { + + var extensionStartRange:Array = UPCEANReader.findGuardPattern(row, rowOffset, false, EXTENSION_START_PATTERN); + + var result:StringBuilder = decodeRowStringBuffer; + result.length = 0; + var end:int = decodeMiddle(row, extensionStartRange, result); + + var resultString:String = result.toString(); + var extensionData:HashTable = parseExtensionString(resultString); + + var extensionResult:Result = + new Result(resultString, + null, + [ + new ResultPoint((extensionStartRange[0] + extensionStartRange[1]) / 2.0, rowNumber), + new ResultPoint( end, rowNumber), + ], + BarcodeFormat.UPC_EAN_EXTENSION); + if (extensionData != null) { + extensionResult.putAllMetadata(extensionData); + } + return extensionResult; + } + + public function decodeMiddle(row:BitArray, startRange:Array, resultString:StringBuilder):int { + var counters:Array = decodeMiddleCounters; + counters[0] = 0; + counters[1] = 0; + counters[2] = 0; + counters[3] = 0; + var end:int = row.getSize(); + var rowOffset:int = startRange[1]; + + var lgPatternFound:int = 0; + + for (var x:int = 0; x < 5 && rowOffset < end; x++) { + var bestMatch:int = UPCEANReader.decodeDigit(row, counters, rowOffset, UPCEANReader.L_AND_G_PATTERNS); + resultString.Append((('0' as String).charCodeAt(0) + bestMatch % 10)); + for (var i:int = 0; i < counters.length; i++) { + rowOffset += counters[i]; + } + if (bestMatch >= 10) { + lgPatternFound |= 1 << (4 - x); + } + if (x != 4) { + // Read off separator if not last + while (rowOffset < end && !row._get(rowOffset)) { + rowOffset++; + } + while (rowOffset < end && row._get(rowOffset)) { + rowOffset++; + } + } + } + + if (resultString.length != 5) { + throw NotFoundException.getNotFoundInstance(); + } + + var checkDigit:int = determineCheckDigit(lgPatternFound); + if (extensionChecksum(resultString.toString()) != checkDigit) { + throw NotFoundException.getNotFoundInstance(); + } + + return rowOffset; + } + + private static function extensionChecksum(s:String):int { + var length:int = s.length; + var sum:int = 0; + for (var i:int = length - 2; i >= 0; i -= 2) { + sum += s.charAt(i).charCodeAt(0) - ('0' as String).charCodeAt(0); + } + sum *= 3; + for (i = length - 1; i >= 0; i -= 2) { + sum += s.charAt(i).charCodeAt(0) - ('0' as String).charCodeAt(0); + } + sum *= 3; + return sum % 10; + } + + private static function determineCheckDigit(lgPatternFound:int):int { + for (var d:int = 0; d < 10; d++) { + if (lgPatternFound == UPCEANExtensionSupport.CHECK_DIGIT_ENCODINGS[d]) { + return d; + } + } + throw NotFoundException.getNotFoundInstance(); + } + + /** + * @param raw raw content of extension + * @return formatted interpretation of raw content as a {@link Hashtable} mapping + * one {@link ResultMetadataType} to appropriate value, or null if not known + */ + private static function parseExtensionString(raw:String):HashTable { + var type:ResultMetadataType; + var value:Object ; + switch (raw.length) { + case 2: + type = ResultMetadataType.ISSUE_NUMBER; + value = parseExtension2String(raw); + break; + case 5: + type = ResultMetadataType.SUGGESTED_PRICE; + value = parseExtension5String(raw); + break; + default: + return null; + } + if (value == null) { + return null; + } + var result:HashTable = new HashTable(1); + result._put(type, value); + return result; + } + + private static function parseExtension2String(raw:String):int { + return int(raw); + } + + private static function parseExtension5String(raw:String):String { + var currency:String; + switch (raw.charAt(0)) { + case '0': + currency = "£"; + break; + case '5': + currency = "$"; + break; + case '9': + // Reference: http://www.jollytech.com + if (raw == "90000") { + // No suggested retail price + return null; + } else if (raw == "99991") { + // Complementary + return "0.00"; + } else if (raw == "99990") { + return "Used"; + } + // Otherwise... unknown currency? + currency = ""; + break; + default: + currency = ""; + break; + } + var rawAmount:int = int(raw.substring(1)); + var unitsString:String = (Number(rawAmount / 100)).toString(); + var hundredths:int = rawAmount % 100; + var hundredthsString:String = hundredths < 10 ? String.fromCharCode(("0" as String).charCodeAt(0)+ hundredths) : String(hundredths); + return currency + unitsString + '.' + hundredthsString; + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/UPCEANReader.as b/FairyGUI-as3/src/com/google/zxing/oned/UPCEANReader.as new file mode 100644 index 0000000..fc0789f --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/UPCEANReader.as @@ -0,0 +1,363 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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 com.google.zxing.oned +{ + + public class UPCEANReader extends OneDReader + { + + import com.google.zxing.common.flexdatatypes.HashTable; + import com.google.zxing.common.flexdatatypes.StringBuilder; + import com.google.zxing.common.BitArray; + import com.google.zxing.BarcodeFormat; + import com.google.zxing.ReaderException; + import com.google.zxing.Result; + import com.google.zxing.ResultPoint; + import com.google.zxing.ResultMetadataType; + + + public static var MAX_AVG_VARIANCE:int = int(PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.42); + public static var MAX_INDIVIDUAL_VARIANCE:int = int(PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.7); + + /** + * Start/end guard pattern. + */ + public static var START_END_PATTERN:Array = [1, 1, 1]; + + /** + * Pattern marking the middle of a UPC/EAN pattern, separating the two halves. + */ + public static var MIDDLE_PATTERN:Array = [1, 1, 1, 1, 1]; + + /** + * "Odd", or "L" patterns used to encode UPC/EAN digits. + */ + + public static var L_PATTERNS:Array = [ + [3, 2, 1, 1], // 0 + [2, 2, 2, 1], // 1 + [2, 1, 2, 2], // 2 + [1, 4, 1, 1], // 3 + [1, 1, 3, 2], // 4 + [1, 2, 3, 1], // 5 + [1, 1, 1, 4], // 6 + [1, 3, 1, 2], // 7 + [1, 2, 1, 3], // 8 + [3, 1, 1, 2]]; // 9 + + + /** + * As above but also including the "even", or "G" patterns used to encode UPC/EAN digits. + */ + //public static var L_AND_G_PATTERNS:Array = new Array(20); + public static var L_AND_G_PATTERNS:Array = [ + [3, 2, 1, 1], // 0 + [2, 2, 2, 1], // 1 + [2, 1, 2, 2], // 2 + [1, 4, 1, 1], // 3 + [1, 1, 3, 2], // 4 + [1, 2, 3, 1], // 5 + [1, 1, 1, 4], // 6 + [1, 3, 1, 2], // 7 + [1, 2, 1, 3], // 8 + [3, 1, 1, 2], // 9 + [1, 1, 2, 3], //R0 + [1, 2, 2, 2], //R1 + [2, 2, 1, 2], //R2 + [1, 1, 4, 1], //R3 + [2, 3, 1, 1], //R4 + [1, 3, 2, 1], //R5 + [4, 1, 1, 1], //R6 + [2, 1, 3, 1], //R7 + [3, 1, 2, 1], //R8 + [2, 1, 1, 3], //R9 + ]; + // create the inverse of the L patterns +/* static { + L_AND_G_PATTERNS = new int[20][]; + for (var i:int = 0; i < 10; i++) + { + L_AND_G_PATTERNS[i] = L_PATTERNS[i]; + } + for (int i = 10; i < 20; i++) + { + var widths:Array = L_PATTERNS[i - 10]; + var reversedWidths:Array = new Array(widths.length); + for (int j = 0; j < widths.length; j++) + { + reversedWidths[j] = widths[widths.length - j - 1]; + } + L_AND_G_PATTERNS[i] = reversedWidths; + } + } +*/ + private var decodeRowStringBuffer:StringBuilder; + private var extensionReader:UPCEANExtensionSupport; + private var eanManSupport:EANManufacturerOrgSupport; + + public function UPCEANReader():void + { + decodeRowStringBuffer = new StringBuilder(20); + extensionReader = new UPCEANExtensionSupport(); + eanManSupport = new EANManufacturerOrgSupport(); + } + + public static function findStartGuardPattern(row:BitArray):Array + { + var foundStart:Boolean = false; + var startRange:Array = null; + var nextStart:int = 0; + while (!foundStart) + { + startRange = findGuardPattern(row, nextStart, false, START_END_PATTERN); + var start:int = startRange[0]; + nextStart = startRange[1]; + // Make sure there is a quiet zone at least as big as the start pattern before the barcode. If + // this check would run off the left edge of the image, do not accept this barcode, as it is + // very likely to be a false positive. + var quietStart:int = start - (nextStart - start); + if (quietStart >= 0) + { + foundStart = row.isRange(quietStart, start, false); + } + } + return startRange; + } + + public override function decodeRow(rowNumber:Object, row:BitArray, o:Object):Result + { + if (o is HashTable){ return decodeRow_HashTable(rowNumber as int,row,o as HashTable); } + else if (o is Array) { return decodeRow_Array(rowNumber as int,row,o as Array); } + else {throw new Error('AbstractUPCEANReader : decodeRow : unknow type of object');} + + } + + public function decodeRow_HashTable(rowNumber:int, row:BitArray, hints:HashTable):Result + { + return decodeRow(rowNumber, row, findStartGuardPattern(row)); + } + + public function decodeRow_Array(rowNumber:int, row:BitArray, startGuardRange:Array):Result + { + var result:StringBuilder = decodeRowStringBuffer;// empty stringbuilder + result.length = 0; + var endStart:int = decodeMiddle(row, startGuardRange, result); + var endRange:Array = decodeEnd(row, endStart); + + // Make sure there is a quiet zone at least as big as the end pattern after the barcode. The + // spec might want more whitespace, but in practice this is the maximum we can count on. + var end:int = endRange[1]; + var quietEnd:int = end + (end - endRange[0]); + if (quietEnd >= row.getSize() || !row.isRange(end, quietEnd, false)) + { + throw new ReaderException("AbstractUPCEANReader : decodeRow_Array : ending white space is missing"); + } + + var resultString:String = result.toString(); + if (!checkChecksum(resultString)) { + throw new ReaderException("AbstractUPCEANReader : decodeRow_Array : checkChecksum failed"); + } + + var left:Number = (Number) (startGuardRange[1] + startGuardRange[0]) / 2; + var right:Number = (Number) (endRange[1] + endRange[0]) / 2; + var format:BarcodeFormat = getBarcodeFormat(); + var decodeResult:Result = new Result(resultString, + null, // no natural byte representation for these barcodes + [ + new ResultPoint(left, rowNumber), + new ResultPoint(right, rowNumber)], + format); + + try { + var extensionResult:Result = extensionReader.decodeRow(rowNumber, row, endRange[1]); + decodeResult.putAllMetadata(extensionResult.getResultMetadata()); + decodeResult.addResultPoints(extensionResult.getResultPoints()); + } catch (re:ReaderException) { + // continue + } + + if ((format == BarcodeFormat.EAN_13) || (format == BarcodeFormat.UPC_A)) { + var countryID:String = eanManSupport.lookupCountryIdentifier(resultString); + if (countryID != null) { + decodeResult.putMetadata(ResultMetadataType.POSSIBLE_COUNTRY, countryID); + } + } + + return decodeResult; + + } + + public function getBarcodeFormat():BarcodeFormat + { + return null; + } + + /** + * @return {@link #checkStandardUPCEANChecksum(String)} + */ + public function checkChecksum(s:String):Boolean { + return checkStandardUPCEANChecksum(s); + } + + /** + * Computes the UPC/EAN checksum on a string of digits, and reports + * whether the checksum is correct or not. + * + * @param s string of digits to check + * @return true iff string of digits passes the UPC/EAN checksum algorithm + * @throws ReaderException if the string does not contain only digits + */ + public static function checkStandardUPCEANChecksum(s:String):Boolean { + var length:int = s.length; + if (length == 0) + { + return false; + } + + var sum:int = 0; + for (var i:int = length - 2; i >= 0; i -= 2) { + var digit:int = s.charCodeAt(i) - ('0').charCodeAt(0); + if (digit < 0 || digit > 9) { + throw new ReaderException("AbstractUPCEANReader : checkStandardUPCEANChecksum : digit out of range ("+digit+")"); + } + sum += digit; + } + sum *= 3; + for (var i3:int = length - 1; i3 >= 0; i3 -= 2) { + var digit2:int = s.charCodeAt(i3) - ('0').charCodeAt(0); + if (digit2 < 0 || digit2 > 9) { + throw new ReaderException("AbstractUPCEANReader : checkStandardUPCEANChecksum : digit2 out of range ("+digit2+")"); + } + sum += digit2; + } + return sum % 10 == 0; + } + + /** + * Subclasses override this to decode the portion of a barcode between the start and end guard patterns. + * + * @param row row of black/white values to search + * @param startRange start/end offset of start guard pattern + * @param resultString {@link StringBuffer} to append decoded chars to + * @return horizontal offset of first pixel after the "middle" that was decoded + * @throws ReaderException if decoding could not complete successfully + */ + protected function decodeMiddle(row:BitArray, startRange:Array, resultString:StringBuilder):int{return -1;}; + + public function decodeEnd(row:BitArray, endStart:int):Array + { + return findGuardPattern(row, endStart, false, START_END_PATTERN); + } + + /** + * @param row row of black/white values to search + * @param rowOffset position to start search + * @param whiteFirst if true, indicates that the pattern specifies white/black/white/... + * pixel counts, otherwise, it is interpreted as black/white/black/... + * @param pattern pattern of counts of number of black and white pixels that are being + * searched for as a pattern + * @return start/end horizontal offset of guard pattern, as an array of two ints + * @throws ReaderException if pattern is not found + */ + public static function findGuardPattern( row:BitArray, rowOffset:int, whiteFirst:Boolean, pattern:Array):Array + { + var patternLength:int = pattern.length; + var counters:Array = new Array(patternLength); + for (var i:int=0;i= 0) { + return bestMatch; + } else { + throw new ReaderException("AbstractUPCEANReader : decodeDigit : not bestMatch found"); + } + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/UPCEANWriter.as b/FairyGUI-as3/src/com/google/zxing/oned/UPCEANWriter.as new file mode 100644 index 0000000..0232937 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/UPCEANWriter.as @@ -0,0 +1,103 @@ +/* + * Copyright 2009 ZXing authors + * + * Licensed 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 com.google.zxing.oned{ + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.Writer; +import com.google.zxing.common.BitMatrix; +import com.google.zxing.common.flexdatatypes.HashTable; +import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + +/** + *

Encapsulates functionality and implementation that is common to UPC and EAN families + * of one-dimensional barcodes.

+ * + * @author aripollak@gmail.com (Ari Pollak) + */ +public class UPCEANWriter implements Writer +{ + + + public function encode(contents:String , format:BarcodeFormat=null, width:int=0, height:int=0, hints:HashTable = null):Object + { + if (contents == null || contents.length == 0) { + throw new IllegalArgumentException("Found empty contents"); + } + + if (width < 0 || height < 0) { + throw new IllegalArgumentException("Requested dimensions are too small: " + + width + 'x' + height); + } + + var code:Array = encode(contents) as Array; + return renderResult(code, width, height); + } + + /** @return a byte array of horizontal pixels (0 = white, 1 = black) */ + private static function renderResult(code:Array, width:int , height:int ):BitMatrix { + var inputWidth:int = code.length; + // Add quiet zone on both sides + var fullWidth:int = inputWidth + (UPCEANReader.START_END_PATTERN.length << 1); + var outputWidth:int = Math.max(width, fullWidth); + var outputHeight:int = Math.max(1, height); + + var multiple:int = int(outputWidth / fullWidth); + var leftPadding:int = int((outputWidth - (inputWidth * multiple)) / 2); + + var output:BitMatrix = new BitMatrix(outputWidth, outputHeight); + var outputX:int = leftPadding; + for (var inputX:int = 0; inputX < inputWidth; inputX++, outputX += multiple) { + if (code[inputX] == 1) + { + output.setRegion(outputX, 0, multiple, outputHeight); + } + } + return output; + } + + + /** + * Appends the given pattern to the target array starting at pos. + * + * @param startColor + * starting color - 0 for white, 1 for black + * @return the number of elements added to target. + */ + protected static function appendPattern(target:Array, pos:int, pattern:Array, startColor:int):int + { + if (startColor != 0 && startColor != 1) + { + throw new IllegalArgumentException( + "startColor must be either 0 or 1, but got: " + startColor); + } + + var color:int = startColor; + var numAdded:int = 0; + for (var i:int = 0; i < pattern.length; i++) { + for (var j:int = 0; j < pattern[i]; j++) { + target[pos] = color; + pos += 1; + numAdded += 1; + } + color ^= 1; // flip color after each segment + } + return numAdded; + } + + +} +} diff --git a/FairyGUI-as3/src/com/google/zxing/oned/UPCEReader.as b/FairyGUI-as3/src/com/google/zxing/oned/UPCEReader.as new file mode 100644 index 0000000..b3492a0 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/UPCEReader.as @@ -0,0 +1,197 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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 com.google.zxing.oned +{ + + /** + *

Implements decoding of the UPC-E format.

+ *

+ *

This is a great reference for + * UPC-E information.

+ * + * @author Sean Owen + */ + + + public class UPCEReader extends UPCEANReader + { + + import com.google.zxing.common.flexdatatypes.StringBuilder; + import com.google.zxing.common.flexdatatypes.HashTable; + import com.google.zxing.common.BitArray; + import com.google.zxing.ReaderException; + import com.google.zxing.BarcodeFormat; + import com.google.zxing.Result; + import com.google.zxing.BinaryBitmap; + import com.google.zxing.NotFoundException; + + + /** + * The pattern that marks the middle, and end, of a UPC-E pattern. + * There is no "second half" to a UPC-E barcode. + */ + private var MIDDLE_END_PATTERN:Array = [1, 1, 1, 1, 1, 1]; + + /** + * See {@link #L_AND_G_PATTERNS}; these values similarly represent patterns of + * even-odd parity encodings of digits that imply both the number system (0 or 1) + * used, and the check digit. + */ + private static var NUMSYS_AND_CHECK_DIGIT_PATTERNS:Array = [ + [0x38, 0x34, 0x32, 0x31, 0x2C, 0x26, 0x23, 0x2A, 0x29, 0x25], + [0x07, 0x0B, 0x0D, 0x0E, 0x13, 0x19, 0x1C, 0x15, 0x16, 0x1A] + ]; + + private var decodeMiddleCounters:Array; + + // function decode(image:BinaryBitmap, hints:HashTable=null):Result { return null; } + + public function UPCEReader() { + decodeMiddleCounters = new Array(4); + } + + protected override function decodeMiddle( row:BitArray, startRange:Array, result:StringBuilder):int { + var counters:Array = decodeMiddleCounters; + counters[0] = 0; + counters[1] = 0; + counters[2] = 0; + counters[3] = 0; + var end:int = row.getSize(); + var rowOffset:int = startRange[1]; + + var lgPatternFound:int = 0; + + for (var x:int = 0; x < 6 && rowOffset < end; x++) { + var bestMatch:int = decodeDigit(row, counters, rowOffset, L_AND_G_PATTERNS); + result.Append(String.fromCharCode( ('0').charCodeAt(0) + (bestMatch % 10))); + for (var i:int = 0; i < counters.length; i++) { + rowOffset += counters[i]; + } + if (bestMatch >= 10) { + lgPatternFound |= 1 << (5 - x); + } + } + + determineNumSysAndCheckDigit(result, lgPatternFound); + + return rowOffset; + } + + public override function decodeEnd(row:BitArray, endStart:int):Array { + return findGuardPattern(row, endStart, true, MIDDLE_END_PATTERN); + } + + public override function checkChecksum(s:String):Boolean { + return super.checkChecksum(convertUPCEtoUPCA(s)); + } + + private static function determineNumSysAndCheckDigit(resultString:StringBuilder , lgPatternFound:int):void + { + + for (var numSys:int = 0; numSys <= 1; numSys++) { + for (var d:int = 0; d < 10; d++) { + if (lgPatternFound == NUMSYS_AND_CHECK_DIGIT_PATTERNS[numSys][d]) { + resultString.Insert(0, String.fromCharCode(('0').charCodeAt(0) + numSys)); + resultString.Append(String.fromCharCode( ('0').charCodeAt(0) + d)); + return; + } + } + } + throw new ReaderException("UPCEReader : determineNumSysAndCheckDigit : could not determine numsys"); + } + + public override function getBarcodeFormat():BarcodeFormat { + return BarcodeFormat.UPC_E; + } + + /** + * Expands a UPC-E value back into its full, equivalent UPC-A code value. + * + * @param upce UPC-E code as string of digits + * @return equivalent UPC-A code as string of digits + */ + public static function convertUPCEtoUPCA(upce:String):String { + var result:StringBuilder = new StringBuilder(12); + result.Append(upce.substr(0,1)); + var lastChar:String = upce.substr(6,1);//upceChars[5]; + switch (lastChar) { + case '0': + case '1': + case '2': + result.Append(upce.substr(1,2));//upceChars_String, 0, 2) + result.Append(lastChar); + result.Append("0000"); + result.Append(upce.substr(3,3));//upceChars_String, 2, 3); + break; + case '3': + result.Append(upce.substr(1,3));//upceChars_String, 0, 3); + result.Append("00000"); + result.Append(upce.substr(4,2));//upceChars_String, 3, 2); + break; + case '4': + result.Append(upce.substr(1,4));//upceChars_String, 0, 4); + result.Append("00000"); + result.Append(upce.substr(5,1));//upceChars[4]); + break; + default: + result.Append(upce.substr(1,5));//upceChars_String, 0, 5); + result.Append("0000"); + result.Append(lastChar); + break; + } + result.Append(upce.substr(7,1)); + return result.ToString(); + } + + + + + /** + * Attempts to decode a single UPC/EAN-encoded digit. + * + * @param row row of black/white values to decode + * @param counters the counts of runs of observed black/white/black/... values + * @param rowOffset horizontal offset to start decoding from + * @param patterns the set of patterns to use to decode -- sometimes different encodings + * for the digits 0-9 are used, and this indicates the encodings for 0 to 9 that should + * be used + * @return horizontal offset of first pixel beyond the decoded digit + * @throws NotFoundException if digit cannot be decoded + */ + public static function decodeDigit(row:BitArray , counters:Array, rowOffset:int,patterns:Array):int { + recordPattern(row, rowOffset, counters); + var bestVariance:int = MAX_AVG_VARIANCE; // worst variance we'll accept + var bestMatch:int = -1; + var max:int = patterns.length; + for (var i:int = 0; i < max; i++) { + var pattern:Array = patterns[i]; + var variance:int = patternMatchVariance(counters, pattern, MAX_INDIVIDUAL_VARIANCE); + if (variance < bestVariance) { + bestVariance = variance; + bestMatch = i; + } + } + if (bestMatch >= 0) { + return bestMatch; + } else { + throw NotFoundException.getNotFoundInstance(); + } + } + + } + + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/AbstractRSSReader.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/AbstractRSSReader.as new file mode 100644 index 0000000..3597068 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/AbstractRSSReader.as @@ -0,0 +1,112 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed 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 com.google.zxing.oned.rss +{ + +import com.google.zxing.NotFoundException; +import com.google.zxing.oned.OneDReader; + +public class AbstractRSSReader extends OneDReader { + + private static var MAX_AVG_VARIANCE:int = Math.round(PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.2); + private static var MAX_INDIVIDUAL_VARIANCE:int = Math.round(PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.4); + + private static var MIN_FINDER_PATTERN_RATIO:Number = 9.5 / 12.0; + private static var MAX_FINDER_PATTERN_RATIO:Number = 12.5 / 14.0; + + protected var decodeFinderCounters:Array; + protected var dataCharacterCounters:Array; + protected var oddRoundingErrors:Array; + protected var evenRoundingErrors:Array; + protected var oddCounts:Array; + protected var evenCounts:Array; + + public function AbstractRSSReader(){ + decodeFinderCounters = new Array(4); + dataCharacterCounters = new Array(8); + oddRoundingErrors = new Array(4); + evenRoundingErrors = new Array(4); + oddCounts = new Array(dataCharacterCounters.length / 2); + evenCounts = new Array(dataCharacterCounters.length / 2); + } + + + protected static function parseFinderValue(counters:Array, finderPatterns:Array):int { + for (var value:int = 0; value < finderPatterns.length; value++) { + if (patternMatchVariance(counters, finderPatterns[value], MAX_INDIVIDUAL_VARIANCE) < + MAX_AVG_VARIANCE) { + return value; + } + } + throw NotFoundException.getNotFoundInstance(); + } + + protected static function count(array:Array):int { + var count:int = 0; + for (var i:int = 0; i < array.length; i++) { + count += array[i]; + } + return count; + } + + protected static function increment(array:Array, errors:Array):void { + var index:int = 0; + var biggestError:Number = errors[0]; + for (var i:int = 1; i < array.length; i++) { + if (errors[i] > biggestError) { + biggestError = errors[i]; + index = i; + } + } + array[index]++; + } + + protected static function decrement(array:Array, errors:Array):void { + var index:int = 0; + var biggestError:Array = errors[0]; + for (var i:int = 1; i < array.length; i++) { + if (errors[i] < biggestError) { + biggestError = errors[i]; + index = i; + } + } + array[index]--; + } + + protected static function isFinderPattern(counters:Array):Boolean { + var firstTwoSum:int = counters[0] + counters[1]; + var sum:int = firstTwoSum + counters[2] + counters[3]; + var ratio:Number = firstTwoSum / sum; + if (ratio >= MIN_FINDER_PATTERN_RATIO && ratio <= MAX_FINDER_PATTERN_RATIO) { + // passes ratio test in spec, but see if the counts are unreasonable + var minCounter:int = int.MAX_VALUE; + var maxCounter:int = int.MIN_VALUE; + for (var i:int = 0; i < counters.length; i++) { + var counter:int = counters[i]; + if (counter > maxCounter) { + maxCounter = counter; + } + if (counter < minCounter) { + minCounter = counter; + } + } + return maxCounter < 10 * minCounter; + } + return false; + } +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/DataCharacter.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/DataCharacter.as new file mode 100644 index 0000000..a2ff13a --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/DataCharacter.as @@ -0,0 +1,39 @@ +/* + * Copyright 2009 ZXing authors + * + * Licensed 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 com.google.zxing.oned.rss +{ + +public class DataCharacter { + + private var value:int; + private var checksumPortion:int; + + public function DataCharacter(value:int, checksumPortion:int) { + this.value = value; + this.checksumPortion = checksumPortion; + } + + public function getValue():int { + return value; + } + + public function getChecksumPortion():int { + return checksumPortion; + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/FinderPattern.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/FinderPattern.as new file mode 100644 index 0000000..f5b68b1 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/FinderPattern.as @@ -0,0 +1,51 @@ +/* + * Copyright 2009 ZXing authors + * + * Licensed 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 com.google.zxing.oned.rss +{ + +import com.google.zxing.ResultPoint; + +public class FinderPattern { + + + protected var value:int; + protected var startEnd:Array; + protected var resultPoints:Array; + + public function FinderPattern( value:int, startEnd:Array, start:int, end:int, rowNumber:int) { + this.value = value; + this.startEnd = startEnd; + this.resultPoints = [ + new ResultPoint( start as Number, rowNumber as Number), + new ResultPoint( end as Number, rowNumber as Number), + ]; + } + + public function getValue():int { + return value; + } + + public function getStartEnd():Array { + return startEnd; + } + + public function getResultPoints():Array { + return resultPoints; + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/Pair.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/Pair.as new file mode 100644 index 0000000..b3cb0e3 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/Pair.as @@ -0,0 +1,42 @@ +/* + * Copyright 2009 ZXing authors + * + * Licensed 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 com.google.zxing.oned.rss +{ + +public class Pair extends DataCharacter { + + protected var finderPattern:FinderPattern; + protected var count:int; + + public function Pair(value:int, checksumPortion:int, finderPattern:FinderPattern) { + super(value, checksumPortion); + this.finderPattern = finderPattern; + } + + public function getFinderPattern():FinderPattern { + return finderPattern; + } + + public function getCount():int { + return count; + } + + public function incrementCount():void { + count++; + } +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/RSS14Reader.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/RSS14Reader.as new file mode 100644 index 0000000..d9a3cef --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/RSS14Reader.as @@ -0,0 +1,509 @@ +/* + * Copyright 2009 ZXing authors + * + * Licensed 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 com.google.zxing.oned.rss +{ + + import com.google.zxing.BarcodeFormat; + import com.google.zxing.DecodeHintType; + import com.google.zxing.NotFoundException; + import com.google.zxing.Result; + import com.google.zxing.ResultPoint; + import com.google.zxing.common.BitArray; + import com.google.zxing.ResultPointCallback; + import com.google.zxing.common.flexdatatypes.ArrayList; + import com.google.zxing.common.flexdatatypes.Enumeration; + import com.google.zxing.common.flexdatatypes.HashTable; + import com.google.zxing.common.flexdatatypes.StringBuilder; + + /** + * Decodes RSS-14, including truncated and stacked variants. See ISO/IEC 24724:2006. + */ + public class RSS14Reader extends AbstractRSSReader + { + + private static var OUTSIDE_EVEN_TOTAL_SUBSET:Array = [1,10,34,70,126]; + private static var INSIDE_ODD_TOTAL_SUBSET:Array = [4,20,48,81]; + private static var OUTSIDE_GSUM:Array = [0,161,961,2015,2715]; + private static var INSIDE_GSUM:Array = [0,336,1036,1516]; + private static var OUTSIDE_ODD_WIDEST:Array = [8,6,4,3,1]; + private static var INSIDE_ODD_WIDEST:Array = [2,4,6,8]; + + private static var FINDER_PATTERNS:Array = [ + [3,8,2,1], + [3,5,5,1], + [3,3,7,1], + [3,1,9,1], + [2,7,4,1], + [2,5,6,1], + [2,3,8,1], + [1,5,7,1], + [1,3,9,1], + ]; + + private var possibleLeftPairs:ArrayList; + private var possibleRightPairs:ArrayList; + + public function RSS14Reader() + { + possibleLeftPairs = new ArrayList(); + possibleRightPairs = new ArrayList(); + } + + public override function decodeRow(rowNumber:Object , row:BitArray , o:Object ):Result + { + var leftPair:Pair = decodePair(row, false, rowNumber as int, o as HashTable); + + addOrTally(possibleLeftPairs, leftPair); + row.reverse(); + var rightPair:Pair = decodePair(row, true, rowNumber as int, o as HashTable); + addOrTally(possibleRightPairs, rightPair); + row.reverse(); + var numLeftPairs:int = possibleLeftPairs.size(); + var numRightPairs:int = possibleRightPairs.size(); + for (var l:int = 0; l < numLeftPairs; l++) { + var left:Pair = possibleLeftPairs.elementAt(l) as Pair; + if (left.getCount() > 1) { + for (var r:int = 0; r < numRightPairs; r++) { + var right:Pair = possibleRightPairs.elementAt(r) as Pair; + if (right.getCount() > 1) { + if (checkChecksum(left, right)) { + return constructResult(left, right); + } + } + } + } + } + throw NotFoundException.getNotFoundInstance(); + } + + private static function addOrTally(possiblePairs:ArrayList, pair:Pair):void + { + if (pair != null) + { + //var e:Enumeration = new Enumeration(possiblePairs.elements()); + var found:Boolean = false; + var cntr:int = 0; + var max:int = possiblePairs.Count; + + for(var i:int=0;i 0; i--) { + buffer.Append('0'); + } + buffer.Append(text); + + var checkDigit:int = 0; + for (i = 0; i < 13; i++) { + var digit:int = (buffer.charAt(i)).charCodeAt(0) - ('0' as String).charCodeAt(0); + checkDigit += (i & 0x01) == 0 ? 3 * digit : digit; + } + checkDigit = 10 - (checkDigit % 10); + if (checkDigit == 10) { + checkDigit = 0; + } + buffer.Append(checkDigit); + + var leftPoints:Array = leftPair.getFinderPattern().getResultPoints(); + var rightPoints:Array = rightPair.getFinderPattern().getResultPoints(); + return new Result( + buffer.toString(), + null, + [ leftPoints[0], leftPoints[1], rightPoints[0], rightPoints[1], ], + BarcodeFormat.RSS_14); + } + + private static function checkChecksum(leftPair:Pair, rightPair:Pair):Boolean { + var leftFPValue:int = leftPair.getFinderPattern().getValue(); + var rightFPValue:int = rightPair.getFinderPattern().getValue(); + if ((leftFPValue == 0 && rightFPValue == 8) || + (leftFPValue == 8 && rightFPValue == 0)) { + } + var checkValue:int = (leftPair.getChecksumPortion() + 16 * rightPair.getChecksumPortion()) % 79; + var targetCheckValue:int = + 9 * leftPair.getFinderPattern().getValue() + rightPair.getFinderPattern().getValue(); + if (targetCheckValue > 72) { + targetCheckValue--; + } + if (targetCheckValue > 8) { + targetCheckValue--; + } + return checkValue == targetCheckValue; + } + + private function decodePair( row:BitArray, right:Boolean, rowNumber:int, hints:HashTable):Pair + { + try { + var startEnd:Array = findFinderPattern(row, 0, right); + var pattern:FinderPattern = parseFoundFinderPattern(row, rowNumber, right, startEnd); + + var resultPointCallback:ResultPointCallback = hints == null ? null : + (hints._get(DecodeHintType.NEED_RESULT_POINT_CALLBACK) as ResultPointCallback); + + if (resultPointCallback != null) { + var center:Number = (startEnd[0] + startEnd[1]) / 2.0; + if (right) { + // row is actually reversed + center = row.getSize() - 1 - center; + } + resultPointCallback.foundPossibleResultPoint(new ResultPoint(center, rowNumber)); + } + + var outside:DataCharacter = decodeDataCharacter(row, pattern, true); + var inside:DataCharacter = decodeDataCharacter(row, pattern, false); + return new Pair(1597 * outside.getValue() + inside.getValue(), + outside.getChecksumPortion() + 4 * inside.getChecksumPortion(), + pattern); + } catch (re:NotFoundException) { + return null; + } + return null;// + } + + private function decodeDataCharacter(row:BitArray, pattern:FinderPattern , outsideChar:Boolean ):DataCharacter { + + var counters:Array = dataCharacterCounters; + counters[0] = 0; + counters[1] = 0; + counters[2] = 0; + counters[3] = 0; + counters[4] = 0; + counters[5] = 0; + counters[6] = 0; + counters[7] = 0; + + if (outsideChar) { + recordPatternInReverse(row, pattern.getStartEnd()[0], counters); + } else { + recordPattern(row, pattern.getStartEnd()[1] + 1, counters); + // reverse it + var j:int; + for (i = 0, j = counters.length - 1; i < j; i++, j--) { + var temp:int = counters[i]; + counters[i] = counters[j]; + counters[j] = temp; + } + } + + var numModules:int = outsideChar ? 16 : 15; + var elementWidth:Number = count(counters) / numModules; + + var oddCounts:Array = this.oddCounts; + var evenCounts:Array = this.evenCounts; + var oddRoundingErrors:Array = this.oddRoundingErrors; + var evenRoundingErrors:Array = this.evenRoundingErrors; + + for (var i:int = 0; i < counters.length; i++) + { + var value:Number = counters[i] / elementWidth; + var count:int = int(value + 0.5); // Round + if (count < 1) { + count = 1; + } else if (count > 8) { + count = 8; + } + var offset:int = i >> 1; + if ((i & 0x01) == 0) { + oddCounts[offset] = count; + oddRoundingErrors[offset] = value - count; + } else { + evenCounts[offset] = count; + evenRoundingErrors[offset] = value - count; + } + } + + adjustOddEvenCounts(outsideChar, numModules); + + var oddSum:int = 0; + var oddChecksumPortion:int = 0; + for (i = oddCounts.length - 1; i >= 0; i--) { + oddChecksumPortion *= 9; + oddChecksumPortion += oddCounts[i]; + oddSum += oddCounts[i]; + } + var evenChecksumPortion:int = 0; + var evenSum:int = 0; + for (i = evenCounts.length - 1; i >= 0; i--) { + evenChecksumPortion *= 9; + evenChecksumPortion += evenCounts[i]; + evenSum += evenCounts[i]; + } + var checksumPortion:int = oddChecksumPortion + 3*evenChecksumPortion; + + if (outsideChar) { + if ((oddSum & 0x01) != 0 || oddSum > 12 || oddSum < 4) { + throw NotFoundException.getNotFoundInstance(); + } + var group:int = (12 - oddSum) / 2; + var oddWidest:int = OUTSIDE_ODD_WIDEST[group]; + var evenWidest:int = 9 - oddWidest; + var vOdd:int = RSSUtils.getRSSvalue(oddCounts, oddWidest, false); + var vEven:int = RSSUtils.getRSSvalue(evenCounts, evenWidest, true); + var tEven:int = OUTSIDE_EVEN_TOTAL_SUBSET[group]; + var gSum:int = OUTSIDE_GSUM[group]; + return new DataCharacter(vOdd * tEven + vEven + gSum, checksumPortion); + } else { + if ((evenSum & 0x01) != 0 || evenSum > 10 || evenSum < 4) { + throw NotFoundException.getNotFoundInstance(); + } + group = (10 - evenSum) / 2; + oddWidest = INSIDE_ODD_WIDEST[group]; + evenWidest = 9 - oddWidest; + vOdd = RSSUtils.getRSSvalue(oddCounts, oddWidest, true); + vEven = RSSUtils.getRSSvalue(evenCounts, evenWidest, false); + var tOdd:int = INSIDE_ODD_TOTAL_SUBSET[group]; + gSum = INSIDE_GSUM[group]; + return new DataCharacter(vEven * tOdd + vOdd + gSum, checksumPortion); + } + + } + + private function findFinderPattern(row:BitArray , rowOffset:int, rightFinderPattern:Boolean ):Array + { + + var counters:Array = decodeFinderCounters; + counters[0] = 0; + counters[1] = 0; + counters[2] = 0; + counters[3] = 0; + + var width:int = row.getSize(); + var isWhite:Boolean = false; + while (rowOffset < width) { + isWhite = !row._get(rowOffset); + if (rightFinderPattern == isWhite) { + // Will encounter white first when searching for right finder pattern + break; + } + rowOffset++; + } + + var counterPosition:int = 0; + var patternStart:int = rowOffset; + for (var x:int = rowOffset; x < width; x++) { + var pixel:Boolean = row._get(x); + if (pixel != isWhite) { + counters[counterPosition]++; + } else { + if (counterPosition == 3) { + if (isFinderPattern(counters)) { + return [patternStart, x]; + } + patternStart += counters[0] + counters[1]; + counters[0] = counters[2]; + counters[1] = counters[3]; + counters[2] = 0; + counters[3] = 0; + counterPosition--; + } else { + counterPosition++; + } + counters[counterPosition] = 1; + isWhite = !isWhite; + } + } + throw NotFoundException.getNotFoundInstance(); + + } + + private function parseFoundFinderPattern(row:BitArray, rowNumber:int, right:Boolean, startEnd:Array):FinderPattern { + // Actually we found elements 2-5 + var firstIsBlack:Boolean = row._get(startEnd[0]); + var firstElementStart:int = startEnd[0] - 1; + // Locate element 1 + while (firstElementStart >= 0 && (firstIsBlack != row._get(firstElementStart))) { + firstElementStart--; + } + firstElementStart++; + var firstCounter:int = startEnd[0] - firstElementStart; + // Make 'counters' hold 1-4 + var counters:Array = decodeFinderCounters; + for (var i:int = counters.length - 1; i > 0; i--) { + counters[i] = counters[i-1]; + } + counters[0] = firstCounter; + var value:int = parseFinderValue(counters, FINDER_PATTERNS); + var start :int= firstElementStart; + var end:int = startEnd[1]; + if (right) { + // row is actually reversed + start = row.getSize() - 1 - start; + end = row.getSize() - 1 - end; + } + return new FinderPattern(value, [firstElementStart, startEnd[1]], start, end, rowNumber); + } + + /* + private static int[] normalizeE2SEValues(int[] counters) { + int p = 0; + for (int i = 0; i < counters.length; i++) { + p += counters[i]; + } + int[] normalized = new int[counters.length - 2]; + for (int i = 0; i < normalized.length; i++) { + int e = counters[i] + counters[i+1]; + float eRatio = (float) e / (float) p; + float E = ((eRatio * 32.0f) + 1.0f) / 2.0f; + normalized[i] = (int) E; + } + return normalized; + } + */ + + private function adjustOddEvenCounts(outsideChar:Boolean, numModules:int):void { + + var oddSum:int = count(oddCounts); + var evenSum:int = count(evenCounts); + var mismatch:int = oddSum + evenSum - numModules; + var oddParityBad:Boolean = (oddSum & 0x01) == (outsideChar ? 1 : 0); + var evenParityBad:Boolean = (evenSum & 0x01) == 1; + + var incrementOdd:Boolean = false; + var decrementOdd:Boolean = false; + var incrementEven:Boolean = false; + var decrementEven:Boolean = false; + + if (outsideChar) { + if (oddSum > 12) { + decrementOdd = true; + } else if (oddSum < 4) { + incrementOdd = true; + } + if (evenSum > 12) { + decrementEven = true; + } else if (evenSum < 4) { + incrementEven = true; + } + } else { + if (oddSum > 11) { + decrementOdd = true; + } else if (oddSum < 5) { + incrementOdd = true; + } + if (evenSum > 10) { + decrementEven = true; + } else if (evenSum < 4) { + incrementEven = true; + } + } + + /*if (mismatch == 2) { + if (!(oddParityBad && evenParityBad)) { + throw ReaderException.getInstance(); + } + decrementOdd = true; + decrementEven = true; + } else if (mismatch == -2) { + if (!(oddParityBad && evenParityBad)) { + throw ReaderException.getInstance(); + } + incrementOdd = true; + incrementEven = true; + } else */ + if (mismatch == 1) { + if (oddParityBad) { + if (evenParityBad) { + throw NotFoundException.getNotFoundInstance(); + } + decrementOdd = true; + } else { + if (!evenParityBad) { + throw NotFoundException.getNotFoundInstance(); + } + decrementEven = true; + } + } else if (mismatch == -1) { + if (oddParityBad) { + if (evenParityBad) { + throw NotFoundException.getNotFoundInstance(); + } + incrementOdd = true; + } else { + if (!evenParityBad) { + throw NotFoundException.getNotFoundInstance(); + } + incrementEven = true; + } + } else if (mismatch == 0) { + if (oddParityBad) { + if (!evenParityBad) { + throw NotFoundException.getNotFoundInstance(); + } + // Both bad + if (oddSum < evenSum) { + incrementOdd = true; + decrementEven = true; + } else { + decrementOdd = true; + incrementEven = true; + } + } else { + if (evenParityBad) { + throw NotFoundException.getNotFoundInstance(); + } + // Nothing to do! + } + } else { + throw NotFoundException.getNotFoundInstance(); + } + + if (incrementOdd) { + if (decrementOdd) { + throw NotFoundException.getNotFoundInstance(); + } + increment(oddCounts, oddRoundingErrors); + } + if (decrementOdd) { + decrement(oddCounts, oddRoundingErrors); + } + if (incrementEven) { + if (decrementEven) { + throw NotFoundException.getNotFoundInstance(); + } + increment(evenCounts, oddRoundingErrors); + } + if (decrementEven) { + decrement(evenCounts, evenRoundingErrors); + } + + } + + } +} diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/RSSUtils.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/RSSUtils.as new file mode 100644 index 0000000..f9d9749 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/RSSUtils.as @@ -0,0 +1,159 @@ +/* + * Copyright 2009 ZXing authors + * + * Licensed 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 com.google.zxing.oned.rss +{ + +/** Adapted from listings in ISO/IEC 24724 Appendix B and Appendix G. */ +public class RSSUtils { + + public function RSSUtils() {} + + public static function getRSSwidths(val:int, n:int, elements:int,maxWidth:int, noNarrow:Boolean):Array + { + var widths:Array = new Array(elements); + var bar:int; + var narrowMask:int = 0; + for (bar = 0; bar < elements - 1; bar++) { + narrowMask |= (1 << bar); + var elmWidth:int = 1; + var subVal:int; + while (true) { + subVal = combins(n - elmWidth - 1, elements - bar - 2); + if (noNarrow && (narrowMask == 0) && + (n - elmWidth - (elements - bar - 1) >= elements - bar - 1)) { + subVal -= combins(n - elmWidth - (elements - bar), elements - bar - 2); + } + if (elements - bar - 1 > 1) { + var lessVal:int = 0; + for (var mxwElement:int = n - elmWidth - (elements - bar - 2); + mxwElement > maxWidth; + mxwElement--) { + lessVal += combins(n - elmWidth - mxwElement - 1, elements - bar - 3); + } + subVal -= lessVal * (elements - 1 - bar); + } else if (n - elmWidth > maxWidth) { + subVal--; + } + val -= subVal; + if (val < 0) { + break; + } + elmWidth++; + narrowMask &= ~(1 << bar); + } + val += subVal; + n -= elmWidth; + widths[bar] = elmWidth; + } + widths[bar] = n; + return widths; + } + + public static function getRSSvalue(widths:Array, maxWidth:int, noNarrow:Boolean):int { + var elements:int = widths.length; + var n:int = 0; + for (var i:int = 0; i < elements; i++) { + n += widths[i]; + } + var val:int = 0; + var narrowMask:int = 0; + for (var bar:int = 0; bar < elements - 1; bar++) { + var elmWidth:int; + for (elmWidth = 1, narrowMask |= (1 << bar); + elmWidth < widths[bar]; + elmWidth++, narrowMask &= ~(1 << bar)) { + var subVal:int = combins(n - elmWidth - 1, elements - bar - 2); + if (noNarrow && (narrowMask == 0) && + (n - elmWidth - (elements - bar - 1) >= elements - bar - 1)) { + subVal -= combins(n - elmWidth - (elements - bar), + elements - bar - 2); + } + if (elements - bar - 1 > 1) { + var lessVal:int = 0; + for (var mxwElement:int = n - elmWidth - (elements - bar - 2); + mxwElement > maxWidth; mxwElement--) { + lessVal += combins(n - elmWidth - mxwElement - 1, + elements - bar - 3); + } + subVal -= lessVal * (elements - 1 - bar); + } else if (n - elmWidth > maxWidth) { + subVal--; + } + val += subVal; + } + n -= elmWidth; + } + return val; + } + + public static function combins(n:int, r:int):int { + var maxDenom:int; + var minDenom:int; + if (n - r > r) { + minDenom = r; + maxDenom = n - r; + } else { + minDenom = n - r; + maxDenom = r; + } + var val:int = 1; + var j:int = 1; + for (var i:int = n; i > maxDenom; i--) { + val *= i; + if (j <= minDenom) { + val /= j; + j++; + } + } + while (j <= minDenom) { + val /= j; + j++; + } + return val; + } + + public static function elements(eDist:Array, N:int, K:int):Array { + var widths:Array = new Array(eDist.length + 2); + var twoK:int = K << 1; + widths[0] = 1; + var i:int; + var minEven:int = 10; + var barSum:int = 1; + for (i = 1; i < twoK - 2; i += 2) { + widths[i] = eDist[i - 1] - widths[i - 1]; + widths[i + 1] = eDist[i] - widths[i]; + barSum += widths[i] + widths[i + 1]; + if (widths[i] < minEven) { + minEven = widths[i]; + } + } + widths[twoK - 1] = N - barSum; + if (widths[twoK - 1] < minEven) { + minEven = widths[twoK - 1]; + } + if (minEven > 1) { + for (i = 0; i < twoK; i += 2) { + widths[i] += minEven - 1; + widths[i + 1] -= minEven - 1; + } + } + return widths; + } + + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/BitArrayBuilder.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/BitArrayBuilder.as new file mode 100644 index 0000000..6891dfc --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/BitArrayBuilder.as @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed 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. + */ + +/* + * These authors would like to acknowledge the Spanish Ministry of Industry, + * Tourism and Trade, for the support in the project TSI020301-2008-2 + * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled + * Mobile Dynamic Environments", led by Treelogic + * ( http://www.treelogic.com/ ): + * + * http://www.piramidepse.com/ + */ + +package com.google.zxing.oned.rss.expanded +{ + import com.google.zxing.common.BitArray; + import com.google.zxing.common.flexdatatypes.ArrayList; + +/** + * @author Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + * @author Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es) + */ +public class BitArrayBuilder { + + public function BitArrayBuilder() { + } + + public static function buildBitArray(pairs:ArrayList):BitArray { + var charNumber:int = (pairs.size() << 1) - 1; + if ((pairs.lastElement() as ExpandedPair).getRightChar() == null) { + charNumber -= 1; + } + + var size:int = 12 * charNumber; + + var binary:BitArray = new BitArray(size); + var accPos:int = 0; + + var firstPair:ExpandedPair = pairs.elementAt(0) as ExpandedPair; + var firstValue:int = firstPair.getRightChar().getValue(); + for(var i:int = 11; i >= 0; --i){ + if ((firstValue & (1 << i)) != 0) { + binary._set(accPos); + } + accPos++; + } + + for(i = 1; i < pairs.size(); ++i){ + var currentPair:ExpandedPair = pairs.elementAt(i) as ExpandedPair; + + var leftValue:int = currentPair.getLeftChar().getValue(); + for(var j:int = 11; j >= 0; --j){ + if ((leftValue & (1 << j)) != 0) { + binary._set(accPos); + } + accPos++; + } + + if(currentPair.getRightChar() != null){ + var rightValue:int = currentPair.getRightChar().getValue(); + for(j = 11; j >= 0; --j){ + if ((rightValue & (1 << j)) != 0) { + binary._set(accPos); + } + accPos++; + } + } + } + return binary; + } +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/ExpandedPair.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/ExpandedPair.as new file mode 100644 index 0000000..fb3993d --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/ExpandedPair.as @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed 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. + */ + +/* + * These authors would like to acknowledge the Spanish Ministry of Industry, + * Tourism and Trade, for the support in the project TSI020301-2008-2 + * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled + * Mobile Dynamic Environments", led by Treelogic + * ( http://www.treelogic.com/ ): + * + * http://www.piramidepse.com/ + */ + +package com.google.zxing.oned.rss.expanded +{ + +import com.google.zxing.oned.rss.DataCharacter; +import com.google.zxing.oned.rss.FinderPattern; + +/** + * @author Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + */ +public class ExpandedPair { + + protected var _mayBeLast:Boolean; + protected var leftChar:DataCharacter; + protected var rightChar:DataCharacter; + protected var finderPattern:FinderPattern; + + public function ExpandedPair(leftChar:DataCharacter, rightChar:DataCharacter, finderPattern:FinderPattern, mayBeLast:Boolean) + { + this.leftChar = leftChar; + this.rightChar = rightChar; + this.finderPattern = finderPattern; + this._mayBeLast = mayBeLast; + } + + public function mayBeLast():Boolean{ + return this._mayBeLast; + } + + public function getLeftChar():DataCharacter { + return this.leftChar; + } + + public function getRightChar():DataCharacter { + return this.rightChar; + } + + public function getFinderPattern():FinderPattern { + return this.finderPattern; + } + + public function mustBeLast():Boolean { + return this.rightChar == null; + } +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/RSSExpandedReader.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/RSSExpandedReader.as new file mode 100644 index 0000000..861a163 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/RSSExpandedReader.as @@ -0,0 +1,582 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed 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. + */ + +/* + * These authors would like to acknowledge the Spanish Ministry of Industry, + * Tourism and Trade, for the support in the project TSI020301-2008-2 + * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled + * Mobile Dynamic Environments", led by Treelogic + * ( http://www.treelogic.com/ ): + * + * http://www.piramidepse.com/ + */ + +package com.google.zxing.oned.rss.expanded +{ + + import com.google.zxing.BarcodeFormat; + import com.google.zxing.NotFoundException; + import com.google.zxing.Result; + import com.google.zxing.common.BitArray; + import com.google.zxing.common.flexdatatypes.ArrayList; + import com.google.zxing.oned.rss.AbstractRSSReader; + import com.google.zxing.oned.rss.DataCharacter; + import com.google.zxing.oned.rss.FinderPattern; + import com.google.zxing.oned.rss.RSSUtils; + import com.google.zxing.oned.rss.expanded.decoders.AbstractExpandedDecoder; +/** + * @author Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + * @author Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es) + */ +public class RSSExpandedReader extends AbstractRSSReader{ + + private static var SYMBOL_WIDEST:Array = [7, 5, 4, 3, 1]; + private static var EVEN_TOTAL_SUBSET:Array = [4, 20, 52, 104, 204]; + private static var GSUM:Array = [0, 348, 1388, 2948, 3988]; + + private static var FINDER_PATTERNS:Array = [ + [1,8,4,1], // A + [3,6,4,1], // B + [3,4,6,1], // C + [3,2,8,1], // D + [2,6,5,1], // E + [2,2,9,1] // F + ]; + + private static var WEIGHTS:Array = [ + [ 1, 3, 9, 27, 81, 32, 96, 77], + [ 20, 60, 180, 118, 143, 7, 21, 63], + [189, 145, 13, 39, 117, 140, 209, 205], + [193, 157, 49, 147, 19, 57, 171, 91], + [ 62, 186, 136, 197, 169, 85, 44, 132], + [185, 133, 188, 142, 4, 12, 36, 108], + [113, 128, 173, 97, 80, 29, 87, 50], + [150, 28, 84, 41, 123, 158, 52, 156], + [ 46, 138, 203, 187, 139, 206, 196, 166], + [ 76, 17, 51, 153, 37, 111, 122, 155], + [ 43, 129, 176, 106, 107, 110, 119, 146], + [ 16, 48, 144, 10, 30, 90, 59, 177], + [109, 116, 137, 200, 178, 112, 125, 164], + [ 70, 210, 208, 202, 184, 130, 179, 115], + [134, 191, 151, 31, 93, 68, 204, 190], + [148, 22, 66, 198, 172, 94, 71, 2], + [ 6, 18, 54, 162, 64, 192,154, 40], + [120, 149, 25, 75, 14, 42,126, 167], + [ 79, 26, 78, 23, 69, 207,199, 175], + [103, 98, 83, 38, 114, 131, 182, 124], + [161, 61, 183, 127, 170, 88, 53, 159], + [ 55, 165, 73, 8, 24, 72, 5, 15], + [ 45, 135, 194, 160, 58, 174, 100, 89] + ]; + + private static var FINDER_PAT_A:int = 0; + private static var FINDER_PAT_B:int = 1; + private static var FINDER_PAT_C:int = 2; + private static var FINDER_PAT_D:int = 3; + private static var FINDER_PAT_E:int = 4; + private static var FINDER_PAT_F:int = 5; + + private static var FINDER_PATTERN_SEQUENCES:Array = [ + [ FINDER_PAT_A, FINDER_PAT_A ], + [ FINDER_PAT_A, FINDER_PAT_B, FINDER_PAT_B ], + [ FINDER_PAT_A, FINDER_PAT_C, FINDER_PAT_B, FINDER_PAT_D ], + [ FINDER_PAT_A, FINDER_PAT_E, FINDER_PAT_B, FINDER_PAT_D, FINDER_PAT_C ], + [ FINDER_PAT_A, FINDER_PAT_E, FINDER_PAT_B, FINDER_PAT_D, FINDER_PAT_D, FINDER_PAT_F ], + [ FINDER_PAT_A, FINDER_PAT_E, FINDER_PAT_B, FINDER_PAT_D, FINDER_PAT_E, FINDER_PAT_F, FINDER_PAT_F ], + [ FINDER_PAT_A, FINDER_PAT_A, FINDER_PAT_B, FINDER_PAT_B, FINDER_PAT_C, FINDER_PAT_C, FINDER_PAT_D, FINDER_PAT_D ], + [ FINDER_PAT_A, FINDER_PAT_A, FINDER_PAT_B, FINDER_PAT_B, FINDER_PAT_C, FINDER_PAT_C, FINDER_PAT_D, FINDER_PAT_E, FINDER_PAT_E ], + [ FINDER_PAT_A, FINDER_PAT_A, FINDER_PAT_B, FINDER_PAT_B, FINDER_PAT_C, FINDER_PAT_C, FINDER_PAT_D, FINDER_PAT_E, FINDER_PAT_F, FINDER_PAT_F ], + [ FINDER_PAT_A, FINDER_PAT_A, FINDER_PAT_B, FINDER_PAT_B, FINDER_PAT_C, FINDER_PAT_D, FINDER_PAT_D, FINDER_PAT_E, FINDER_PAT_E, FINDER_PAT_F, FINDER_PAT_F ], + ]; + + private static var LONGEST_SEQUENCE_SIZE:int = FINDER_PATTERN_SEQUENCES[FINDER_PATTERN_SEQUENCES.length - 1].length; + + private static var MAX_PAIRS:int = 11; + private var pairs:ArrayList = new ArrayList(MAX_PAIRS); + private var startEnd:Array = new Array(2); + private var currentSequence:Array = new Array(LONGEST_SEQUENCE_SIZE); + + public override function decodeRow(rowNumber:Object , row:BitArray , o:Object ):Result { + this.reset(); + decodeRow2pairs(rowNumber as int, row); + return constructResult(this.pairs); + } + + public override function reset():void { + this.pairs.clearAll();//.setSize(0); + } + + // Not private for testing + public function decodeRow2pairs(rowNumber:int , row:BitArray ): ArrayList { + while(true){ + var nextPair:ExpandedPair = retrieveNextPair(row, this.pairs, rowNumber); + this.pairs.addElement(nextPair); + + if (nextPair.mayBeLast()) + { + if (checkChecksum()) { + return this.pairs; + } + if (nextPair.mustBeLast()) { + throw NotFoundException.getNotFoundInstance(); + } + } + } + throw NotFoundException.getNotFoundInstance + } + + + private static function constructResult(pairs:ArrayList):Result{ + var binary:BitArray = BitArrayBuilder.buildBitArray(pairs); + + var decoder:AbstractExpandedDecoder = AbstractExpandedDecoder.createDecoder(binary); + var resultingString:String = decoder.parseInformation(); + + var firstPoints:Array = (pairs.elementAt(0) as ExpandedPair).getFinderPattern().getResultPoints(); + var lastPoints:Array = (pairs.lastElement() as ExpandedPair).getFinderPattern().getResultPoints(); + + return new Result( + resultingString, + null, + [firstPoints[0], firstPoints[1], lastPoints[0], lastPoints[1]], + BarcodeFormat.RSS_EXPANDED + ); + } + + private function checkChecksum():Boolean + { + var firstPair:ExpandedPair = this.pairs.elementAt(0) as ExpandedPair; + var checkCharacter:DataCharacter = firstPair.getLeftChar(); + var firstCharacter:DataCharacter = firstPair.getRightChar(); + + var checksum:int = firstCharacter.getChecksumPortion(); + var S:int = 2; + + for(var i:int = 1; i < this.pairs.size(); ++i){ + var currentPair:ExpandedPair = this.pairs.elementAt(i) as ExpandedPair; + checksum += currentPair.getLeftChar().getChecksumPortion(); + S++; + if(currentPair.getRightChar() != null){ + checksum += currentPair.getRightChar().getChecksumPortion(); + S++; + } + } + + checksum %= 211; + + var checkCharacterValue:int = 211 * (S - 4) + checksum; + + return checkCharacterValue == checkCharacter.getValue(); + } + + private static function getNextSecondBar(row:BitArray, initialPos:int):int{ + var currentPos:int = initialPos; + var current:Boolean = row._get(currentPos); + + while(currentPos < row.Size && row._get(currentPos) == current) { + currentPos++; + } + + current = !current; + while(currentPos < row.Size && row._get(currentPos) == current) { + currentPos++; + } + + return currentPos; + } + + // not private for testing + public function retrieveNextPair(row:BitArray, previousPairs:ArrayList, rowNumber:int):ExpandedPair{ + var isOddPattern:Boolean = previousPairs.size() % 2 == 0; + + var pattern:FinderPattern; + + var keepFinding:Boolean = true; + var forcedOffset:int = -1; + do{ + this.findNextPair(row, previousPairs, forcedOffset); + pattern = parseFoundFinderPattern(row, rowNumber, isOddPattern); + if (pattern == null){ + forcedOffset = getNextSecondBar(row, this.startEnd[0]); + } else { + keepFinding = false; + } + }while(keepFinding); + + var mayBeLast:Boolean = checkPairSequence(previousPairs, pattern); + + var leftChar:DataCharacter = this.decodeDataCharacter(row, pattern, isOddPattern, true); + var rightChar:DataCharacter; + try{ + rightChar = this.decodeDataCharacter(row, pattern, isOddPattern, false); + }catch(nfe:NotFoundException){ + if(mayBeLast) { + rightChar = null; + } else { + throw nfe; + } + } + + return new ExpandedPair(leftChar, rightChar, pattern, mayBeLast); + } + + private function checkPairSequence(previousPairs:ArrayList, pattern:FinderPattern):Boolean{ + var currentSequenceLength:int = previousPairs.size() + 1; + if(currentSequenceLength > this.currentSequence.length) { + throw NotFoundException.getNotFoundInstance(); + } + + for(var pos:int = 0; pos < previousPairs.size(); ++pos) { + this.currentSequence[pos] = (previousPairs.elementAt(pos) as ExpandedPair).getFinderPattern().getValue(); + } + + this.currentSequence[currentSequenceLength - 1] = pattern.getValue(); + + for(var i:int = 0; i < FINDER_PATTERN_SEQUENCES.length; ++i){ + var validSequence:Array = FINDER_PATTERN_SEQUENCES[i]; + if(validSequence.length >= currentSequenceLength){ + var valid:Boolean = true; + for(pos = 0; pos < currentSequenceLength; ++pos) { + if (this.currentSequence[pos] != validSequence[pos]) { + valid = false; + break; + } + } + + if(valid) { + return currentSequenceLength == validSequence.length; + } + } + } + + throw NotFoundException.getNotFoundInstance(); + } + + private function findNextPair(row:BitArray, previousPairs:ArrayList, forcedOffset:int):void{ + var counters:Array = this.decodeFinderCounters; + counters[0] = 0; + counters[1] = 0; + counters[2] = 0; + counters[3] = 0; + + var width:int = row.getSize(); + + var rowOffset:int; + if (forcedOffset >= 0) { + rowOffset = forcedOffset; + } else if (previousPairs.isEmpty()) { + rowOffset = 0; + } else{ + var lastPair:ExpandedPair = previousPairs.lastElement() as ExpandedPair; + rowOffset = lastPair.getFinderPattern().getStartEnd()[1]; + } + var searchingEvenPair:Boolean = ((previousPairs.size() % 2) != 0); + + var isWhite:Boolean = false; + while (rowOffset < width) { + isWhite = !row._get(rowOffset); + if (!isWhite) { + break; + } + rowOffset++; + } + + var counterPosition:int = 0; + var patternStart:int = rowOffset; + for (var x:int = rowOffset; x < width; x++) { + var pixel:Boolean = row._get(x); + if (pixel != isWhite) { + counters[counterPosition]++; + } else { + if (counterPosition == 3) { + if (searchingEvenPair) { + reverseCounters(counters); + } + var ifp:Boolean = isFinderPattern(counters); + if (ifp) + { + this.startEnd[0] = patternStart; + this.startEnd[1] = x; + return; + } + + if (searchingEvenPair) { + reverseCounters(counters); + } + + patternStart += counters[0] + counters[1]; + counters[0] = counters[2]; + counters[1] = counters[3]; + counters[2] = 0; + counters[3] = 0; + counterPosition--; + } else { + counterPosition++; + } + counters[counterPosition] = 1; + isWhite = !isWhite; + } + } + throw NotFoundException.getNotFoundInstance(); + } + + private static function reverseCounters(counters:Array):void{ + var length:int = counters.length; + for(var i:int = 0; i < int(length / 2); ++i){ + var tmp:int = counters[i]; + counters[i] = counters[length - i - 1]; + counters[length - i - 1] = tmp; + } + } + + private function parseFoundFinderPattern(row:BitArray, rowNumber:int, oddPattern:Boolean):FinderPattern { + // Actually we found elements 2-5. + var firstCounter:int; + var start:int; + var end:int; + + if(oddPattern){ + // If pattern number is odd, we need to locate element 1 *before* the current block. + + var firstElementStart:int = this.startEnd[0] - 1; + // Locate element 1 + while (firstElementStart >= 0 && !row._get(firstElementStart)) { + firstElementStart--; + } + + firstElementStart++; + firstCounter = this.startEnd[0] - firstElementStart; + start = firstElementStart; + end = this.startEnd[1]; + + }else{ + // If pattern number is even, the pattern is reversed, so we need to locate element 1 *after* the current block. + + start = this.startEnd[0]; + + firstElementStart = this.startEnd[1] + 1; + while (firstElementStart < row.Size && row._get(firstElementStart)) { + firstElementStart++; + } + + end = firstElementStart; + firstCounter = end - this.startEnd[1]; + } + + // Make 'counters' hold 1-4 + var counters:Array = this.decodeFinderCounters; + for (var i:int = counters.length - 1; i > 0; i--) { + counters[i] = counters[i - 1]; + } + + counters[0] = firstCounter; + var value:int; + try { + value = parseFinderValue(counters, FINDER_PATTERNS); + } catch (nfe:NotFoundException) { + return null; + } + return new FinderPattern(value, [start, end], start, end, rowNumber); + } + + public function decodeDataCharacter(row:BitArray, pattern:FinderPattern, isOddPattern:Boolean, leftChar:Boolean):DataCharacter + { + var counters:Array = this.dataCharacterCounters; + counters[0] = 0; + counters[1] = 0; + counters[2] = 0; + counters[3] = 0; + counters[4] = 0; + counters[5] = 0; + counters[6] = 0; + counters[7] = 0; + + if (leftChar) { + recordPatternInReverse(row, pattern.getStartEnd()[0], counters); + } else { + recordPattern(row, pattern.getStartEnd()[1] + 1, counters); + // reverse it + var j:int = counters.length - 1; + for (var i:int = 0; i < j; i++, j--) { + var temp:int = counters[i]; + counters[i] = counters[j]; + counters[j] = temp; + } + }//counters[] has the pixels of the module + + var numModules:int = 17; //left and right data characters have all the same length + var elementWidth:Number = count(counters) / numModules; + + var oddCounts:Array = this.oddCounts; + var evenCounts:Array = this.evenCounts; + var oddRoundingErrors:Array = this.oddRoundingErrors; + var evenRoundingErrors:Array = this.evenRoundingErrors; + + for (i = 0; i < counters.length; i++) { + var value1:Number = 1.0 * counters[i] / elementWidth; + var count:int = int(value1 + 0.5); + if (count < 1) { + count = 1; + } else if (count > 8) { + count = 8; + } + var offset:int = i >> 1; + if ((i & 0x01) == 0) { + oddCounts[offset] = count; + oddRoundingErrors[offset] = value1 - count; + } else { + evenCounts[offset] = count; + evenRoundingErrors[offset] = value1 - count; + } + } + + adjustOddEvenCounts(numModules); + + var weightRowNumber:int = 4 * pattern.getValue() + (isOddPattern?0:2) + (leftChar?0:1) - 1; + + var oddSum:int = 0; + var oddChecksumPortion:int = 0; + for (i = oddCounts.length - 1; i >= 0; i--) { + if(isNotA1left(pattern, isOddPattern, leftChar)){ + var weight:int = WEIGHTS[weightRowNumber][2 * i]; + oddChecksumPortion += oddCounts[i] * weight; + } + oddSum += oddCounts[i]; + } + var evenChecksumPortion:int = 0; + var evenSum:int = 0; + for (i = evenCounts.length - 1; i >= 0; i--) { + if(isNotA1left(pattern, isOddPattern, leftChar)){ + weight = WEIGHTS[weightRowNumber][2 * i + 1]; + evenChecksumPortion += evenCounts[i] * weight; + } + evenSum += evenCounts[i]; + } + var checksumPortion:int = oddChecksumPortion + evenChecksumPortion; + + if ((oddSum & 0x01) != 0 || oddSum > 13 || oddSum < 4) { + throw NotFoundException.getNotFoundInstance(); + } + + var group:int = int((13 - oddSum) / 2); + var oddWidest:int = SYMBOL_WIDEST[group]; + var evenWidest:int = 9 - oddWidest; + var vOdd:int = RSSUtils.getRSSvalue(oddCounts, oddWidest, true); + var vEven:int = RSSUtils.getRSSvalue(evenCounts, evenWidest, false); + var tEven:int = EVEN_TOTAL_SUBSET[group]; + var gSum:int = GSUM[group]; + var value2:int = vOdd * tEven + vEven + gSum; + + return new DataCharacter(value2, checksumPortion); + } + + private static function isNotA1left(pattern:FinderPattern, isOddPattern:Boolean, leftChar:Boolean):Boolean { + // A1: pattern.getValue is 0 (A), and it's an oddPattern, and it is a left char + return !(pattern.getValue() == 0 && isOddPattern && leftChar); + } + + private function adjustOddEvenCounts(numModules:int):void { + + var oddSum:int = count(this.oddCounts); + var evenSum:int = count(this.evenCounts); + var mismatch:int = oddSum + evenSum - numModules; + var oddParityBad:Boolean = (oddSum & 0x01) == 1; + var evenParityBad:Boolean = (evenSum & 0x01) == 0; + + var incrementOdd:Boolean = false; + var decrementOdd:Boolean = false; + + if (oddSum > 13) { + decrementOdd = true; + } else if (oddSum < 4) { + incrementOdd = true; + } + var incrementEven:Boolean = false; + var decrementEven:Boolean = false; + if (evenSum > 13) { + decrementEven = true; + } else if (evenSum < 4) { + incrementEven = true; + } + + if (mismatch == 1) { + if (oddParityBad) { + if (evenParityBad) { + throw NotFoundException.getNotFoundInstance(); + } + decrementOdd = true; + } else { + if (!evenParityBad) { + throw NotFoundException.getNotFoundInstance(); + } + decrementEven = true; + } + } else if (mismatch == -1) { + if (oddParityBad) { + if (evenParityBad) { + throw NotFoundException.getNotFoundInstance(); + } + incrementOdd = true; + } else { + if (!evenParityBad) { + throw NotFoundException.getNotFoundInstance(); + } + incrementEven = true; + } + } else if (mismatch == 0) { + if (oddParityBad) { + if (!evenParityBad) { + throw NotFoundException.getNotFoundInstance(); + } + // Both bad + if (oddSum < evenSum) { + incrementOdd = true; + decrementEven = true; + } else { + decrementOdd = true; + incrementEven = true; + } + } else { + if (evenParityBad) { + throw NotFoundException.getNotFoundInstance(); + } + // Nothing to do! + } + } else { + throw NotFoundException.getNotFoundInstance(); + } + + if (incrementOdd) { + if (decrementOdd) { + throw NotFoundException.getNotFoundInstance(); + } + increment(this.oddCounts, this.oddRoundingErrors); + } + if (decrementOdd) { + decrement(this.oddCounts, this.oddRoundingErrors); + } + if (incrementEven) { + if (decrementEven) { + throw NotFoundException.getNotFoundInstance(); + } + increment(this.evenCounts, this.oddRoundingErrors); + } + if (decrementEven) { + decrement(this.evenCounts, this.evenRoundingErrors); + } + } +} +} diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI013103decoder.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI013103decoder.as new file mode 100644 index 0000000..0c479ad --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI013103decoder.as @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed 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. + */ + +/* + * These authors would like to acknowledge the Spanish Ministry of Industry, + * Tourism and Trade, for the support in the project TSI020301-2008-2 + * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled + * Mobile Dynamic Environments", led by Treelogic + * ( http://www.treelogic.com/ ): + * + * http://www.piramidepse.com/ + */ + +package com.google.zxing.oned.rss.expanded.decoders +{ + +import com.google.zxing.common.BitArray; +import com.google.zxing.common.flexdatatypes.StringBuilder; + +/** + * @author Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + */ +public class AI013103decoder extends AI013x0xDecoder { + + public function AI013103decoder(information:BitArray) { + super(information); + } + + protected override function addWeightCode(buf:StringBuilder, weight:int):void { + buf.Append("(3103)"); + } + + protected override function checkWeight(weight:int):int { + return weight; + } +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI01320xDecoder.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI01320xDecoder.as new file mode 100644 index 0000000..8f02b95 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI01320xDecoder.as @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed 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. + */ + +/* + * These authors would like to acknowledge the Spanish Ministry of Industry, + * Tourism and Trade, for the support in the project TSI020301-2008-2 + * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled + * Mobile Dynamic Environments", led by Treelogic + * ( http://www.treelogic.com/ ): + * + * http://www.piramidepse.com/ + */ + +package com.google.zxing.oned.rss.expanded.decoders +{ + +import com.google.zxing.common.BitArray; +import com.google.zxing.common.flexdatatypes.StringBuilder; + +/** + * @author Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + */ +public class AI01320xDecoder extends AI013x0xDecoder { + + public function AI01320xDecoder(information:BitArray) { + super(information); + } + + protected override function addWeightCode(buf:StringBuilder , weight:int):void { + if (weight < 10000) { + buf.Append("(3202)"); + } else { + buf.Append("(3203)"); + } + } + + protected override function checkWeight(weight:int):int { + if(weight < 10000) { + return weight; + } + return weight - 10000; + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI01392xDecoder.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI01392xDecoder.as new file mode 100644 index 0000000..cd9d809 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI01392xDecoder.as @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed 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. + */ + +/* + * These authors would like to acknowledge the Spanish Ministry of Industry, + * Tourism and Trade, for the support in the project TSI020301-2008-2 + * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled + * Mobile Dynamic Environments", led by Treelogic + * ( http://www.treelogic.com/ ): + * + * http://www.piramidepse.com/ + */ + +package com.google.zxing.oned.rss.expanded.decoders +{ + +import com.google.zxing.NotFoundException; +import com.google.zxing.common.BitArray; +import com.google.zxing.common.flexdatatypes.StringBuilder; + +/** + * @author Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + */ +public class AI01392xDecoder extends AI01decoder { + + private static var HEADER_SIZE:int = 5 + 1 + 2; + private static var LAST_DIGIT_SIZE:int = 2; + + public function AI01392xDecoder(information:BitArray) { + super(information); + } + + public override function parseInformation():String { + if (this.information.Size < HEADER_SIZE + GTIN_SIZE) { + throw NotFoundException.getNotFoundInstance(); + } + + var buf:StringBuilder = new StringBuilder(); + + encodeCompressedGtin(buf, HEADER_SIZE); + + var lastAIdigit:int = + this.generalDecoder.extractNumericValueFromBitArray2(HEADER_SIZE + GTIN_SIZE, LAST_DIGIT_SIZE); + buf.Append("(392"); + buf.Append(lastAIdigit); + buf.Append(')'); + + var decodedInformation:DecodedInformation = + this.generalDecoder.decodeGeneralPurposeField(HEADER_SIZE + GTIN_SIZE + LAST_DIGIT_SIZE, null); + buf.Append(decodedInformation.getNewString()); + + return buf.toString(); + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI01393xDecoder.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI01393xDecoder.as new file mode 100644 index 0000000..ac1d601 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI01393xDecoder.as @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed 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. + */ + +/* + * These authors would like to acknowledge the Spanish Ministry of Industry, + * Tourism and Trade, for the support in the project TSI020301-2008-2 + * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled + * Mobile Dynamic Environments", led by Treelogic + * ( http://www.treelogic.com/ ): + * + * http://www.piramidepse.com/ + */ +package com.google.zxing.oned.rss.expanded.decoders +{ + +import com.google.zxing.NotFoundException; +import com.google.zxing.common.BitArray; +import com.google.zxing.common.flexdatatypes.StringBuilder; +/** + * @author Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + */ +public class AI01393xDecoder extends AI01decoder { + + private static var HEADER_SIZE:int = 5 + 1 + 2; + private static var LAST_DIGIT_SIZE:int = 2; + private static var FIRST_THREE_DIGITS_SIZE:int = 10; + + public function AI01393xDecoder(information:BitArray) { + super(information); + } + + public override function parseInformation():String { + if(this.information.Size < HEADER_SIZE + GTIN_SIZE) { + throw NotFoundException.getNotFoundInstance(); + } + + var buf:StringBuilder = new StringBuilder(); + + encodeCompressedGtin(buf, HEADER_SIZE); + + var lastAIdigit:int = + this.generalDecoder.extractNumericValueFromBitArray2(HEADER_SIZE + GTIN_SIZE, LAST_DIGIT_SIZE); + + buf.Append("(393"); + buf.Append(lastAIdigit); + buf.Append(')'); + + var firstThreeDigits:int = + this.generalDecoder.extractNumericValueFromBitArray2(HEADER_SIZE + GTIN_SIZE + LAST_DIGIT_SIZE, FIRST_THREE_DIGITS_SIZE); + if(int(firstThreeDigits / 100) == 0) { + buf.Append('0'); + } + if(int(firstThreeDigits / 10) == 0) { + buf.Append('0'); + } + buf.Append(firstThreeDigits); + + var generalInformation:DecodedInformation = + this.generalDecoder.decodeGeneralPurposeField(HEADER_SIZE + GTIN_SIZE + LAST_DIGIT_SIZE + FIRST_THREE_DIGITS_SIZE, null); + buf.Append(generalInformation.getNewString()); + + return buf.toString(); + } +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI013x0x1xDecoder.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI013x0x1xDecoder.as new file mode 100644 index 0000000..965f9a6 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI013x0x1xDecoder.as @@ -0,0 +1,108 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed 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. + */ + +/* + * These authors would like to acknowledge the Spanish Ministry of Industry, + * Tourism and Trade, for the support in the project TSI020301-2008-2 + * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled + * Mobile Dynamic Environments", led by Treelogic + * ( http://www.treelogic.com/ ): + * + * http://www.piramidepse.com/ + */ + +package com.google.zxing.oned.rss.expanded.decoders +{ + +import com.google.zxing.NotFoundException; +import com.google.zxing.common.BitArray; +import com.google.zxing.common.flexdatatypes.StringBuilder; +/** + * @author Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + * @author Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es) + */ +public class AI013x0x1xDecoder extends AI01weightDecoder { + + private static var HEADER_SIZE:int = 7 + 1; + private static var WEIGHT_SIZE:int = 20; + private static var DATE_SIZE:int = 16; + + private var dateCode:String; + private var firstAIdigits:String; + + public function AI013x0x1xDecoder(information:BitArray, firstAIdigits:String, dateCode:String) { + super(information); + this.dateCode = dateCode; + this.firstAIdigits = firstAIdigits; + } + + public override function parseInformation():String { + if (this.information.Size != HEADER_SIZE + GTIN_SIZE + WEIGHT_SIZE + DATE_SIZE) { + throw NotFoundException.getNotFoundInstance(); + } + + var buf:StringBuilder = new StringBuilder(); + + encodeCompressedGtin(buf, HEADER_SIZE); + encodeCompressedWeight(buf, HEADER_SIZE + GTIN_SIZE, WEIGHT_SIZE); + encodeCompressedDate(buf, HEADER_SIZE + GTIN_SIZE + WEIGHT_SIZE); + + return buf.toString(); + } + + private function encodeCompressedDate(buf:StringBuilder, currentPos:int):void { + var numericDate:int = this.generalDecoder.extractNumericValueFromBitArray2(currentPos, DATE_SIZE); + if(numericDate == 38400) { + return; + } + + buf.Append('('); + buf.Append(this.dateCode); + buf.Append(')'); + + var day:int = numericDate % 32; + numericDate = int(numericDate / 32); + var month:int = numericDate % 12 + 1; + numericDate = int(numericDate / 12); + var year:int = numericDate; + + if (int(year / 10) == 0) { + buf.Append('0'); + } + buf.Append(year); + if (int(month / 10) == 0) { + buf.Append('0'); + } + buf.Append(month); + if (day / 10 == 0) { + buf.Append('0'); + } + buf.Append(day); + } + + protected override function addWeightCode(buf:StringBuilder, weight:int):void { + var lastAI:int = int(weight / 100000); + buf.Append('('); + buf.Append(this.firstAIdigits); + buf.Append(lastAI); + buf.Append(')'); + } + + protected override function checkWeight(weight:int):int { + return weight % 100000; + } +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI013x0xDecoder.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI013x0xDecoder.as new file mode 100644 index 0000000..c700db7 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI013x0xDecoder.as @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed 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. + */ + +/* + * These authors would like to acknowledge the Spanish Ministry of Industry, + * Tourism and Trade, for the support in the project TSI020301-2008-2 + * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled + * Mobile Dynamic Environments", led by Treelogic + * ( http://www.treelogic.com/ ): + * + * http://www.piramidepse.com/ + */ + +package com.google.zxing.oned.rss.expanded.decoders +{ + +import com.google.zxing.NotFoundException; +import com.google.zxing.common.BitArray; +import com.google.zxing.common.flexdatatypes.StringBuilder; + +/** + * @author Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + */ +public class AI013x0xDecoder extends AI01weightDecoder { + + private static var HEADER_SIZE:int = 4 + 1; + private static var WEIGHT_SIZE:int = 15; + + public function AI013x0xDecoder(information:BitArray) { + super(information); + } + + public override function parseInformation():String { + if (this.information.Size != HEADER_SIZE + GTIN_SIZE + WEIGHT_SIZE) { + throw NotFoundException.getNotFoundInstance(); + } + + var buf:StringBuilder = new StringBuilder(); + + encodeCompressedGtin(buf, HEADER_SIZE); + encodeCompressedWeight(buf, HEADER_SIZE + GTIN_SIZE, WEIGHT_SIZE); + + return buf.toString(); + } +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI01AndOtherAIs.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI01AndOtherAIs.as new file mode 100644 index 0000000..963ea9e --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI01AndOtherAIs.as @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed 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. + */ + +/* + * These authors would like to acknowledge the Spanish Ministry of Industry, + * Tourism and Trade, for the support in the project TSI020301-2008-2 + * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled + * Mobile Dynamic Environments", led by Treelogic + * ( http://www.treelogic.com/ ): + * + * http://www.piramidepse.com/ + */ + +package com.google.zxing.oned.rss.expanded.decoders +{ + +import com.google.zxing.NotFoundException; +import com.google.zxing.common.BitArray; +import com.google.zxing.common.flexdatatypes.StringBuilder; + +/** + * @author Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + * @author Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es) + */ +public class AI01AndOtherAIs extends AI01decoder { + + private static var HEADER_SIZE:int = 1 + 1 + 2; //first bit encodes the linkage flag, + //the second one is the encodation method, and the other two are for the variable length + public function AI01AndOtherAIs(information:BitArray) { + super(information); + } + + public override function parseInformation():String { + var buff:StringBuilder = new StringBuilder(); + + buff.Append("(01)"); + var initialGtinPosition:int = buff.length; + var firstGtinDigit:int = this.generalDecoder.extractNumericValueFromBitArray2(HEADER_SIZE, 4); + buff.Append(firstGtinDigit); + + this.encodeCompressedGtinWithoutAI(buff, HEADER_SIZE + 4, initialGtinPosition); + + return this.generalDecoder.decodeAllCodes(buff, HEADER_SIZE + 44); + } +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI01decoder.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI01decoder.as new file mode 100644 index 0000000..72ff95e --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI01decoder.as @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed 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. + */ + +/* + * These authors would like to acknowledge the Spanish Ministry of Industry, + * Tourism and Trade, for the support in the project TSI020301-2008-2 + * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled + * Mobile Dynamic Environments", led by Treelogic + * ( http://www.treelogic.com/ ): + * + * http://www.piramidepse.com/ + */ + +package com.google.zxing.oned.rss.expanded.decoders +{ + +import com.google.zxing.common.BitArray; +import com.google.zxing.common.flexdatatypes.StringBuilder; + +/** + * @author Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + * @author Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es) + */ +public class AI01decoder extends AbstractExpandedDecoder { + + protected static var GTIN_SIZE:int = 40; + + public function AI01decoder(information:BitArray) { + super(information); + } + + protected function encodeCompressedGtin(buf:StringBuilder, currentPos:int):void { + buf.Append("(01)"); + var initialPosition:int = buf.length; + buf.Append('9'); + + encodeCompressedGtinWithoutAI(buf, currentPos, initialPosition); + } + + protected function encodeCompressedGtinWithoutAI(buf:StringBuilder , currentPos:int, initialBufferPosition:int):void { + for(var i:int = 0; i < 4; ++i){ + var currentBlock:int = this.generalDecoder.extractNumericValueFromBitArray2(currentPos + 10 * i, 10); + if (int(currentBlock / 100) == 0) { + buf.Append('0'); + } + if (int(currentBlock / 10) == 0) { + buf.Append('0'); + } + buf.Append(currentBlock); + } + + appendCheckDigit(buf, initialBufferPosition); + } + + private static function appendCheckDigit(buf:StringBuilder, currentPos:int):void{ + var checkDigit:int = 0; + for (var i:int = 0; i < 13; i++) { + var digit:int = (buf.charAt(i + currentPos)).charCodeAt(0) - ('0' as String).charCodeAt(0); + checkDigit += (i & 0x01) == 0 ? 3 * digit : digit; + } + + checkDigit = 10 - (checkDigit % 10); + if (checkDigit == 10) { + checkDigit = 0; + } + + buf.Append(checkDigit); + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI01weightDecoder.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI01weightDecoder.as new file mode 100644 index 0000000..541064f --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AI01weightDecoder.as @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed 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. + */ + +/* + * These authors would like to acknowledge the Spanish Ministry of Industry, + * Tourism and Trade, for the support in the project TSI020301-2008-2 + * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled + * Mobile Dynamic Environments", led by Treelogic + * ( http://www.treelogic.com/ ): + * + * http://www.piramidepse.com/ + */ + +package com.google.zxing.oned.rss.expanded.decoders +{ + +import com.google.zxing.common.BitArray; +import com.google.zxing.common.flexdatatypes.StringBuilder; + +/** + * @author Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + */ +public class AI01weightDecoder extends AI01decoder { + + public function AI01weightDecoder(information:BitArray) { + super(information); + } + + protected function encodeCompressedWeight(buf:StringBuilder, currentPos:int, weightSize:int):void { + var originalWeightNumeric:int = this.generalDecoder.extractNumericValueFromBitArray2(currentPos, weightSize); + addWeightCode(buf, originalWeightNumeric); + + var weightNumeric:int = checkWeight(originalWeightNumeric); + + var currentDivisor:int = 100000; + for(var i:int = 0; i < 5; ++i){ + if (int(weightNumeric / currentDivisor) == 0) { + buf.Append('0'); + } + currentDivisor = int(currentDivisor / 10); + } + buf.Append(weightNumeric); + } + + protected function addWeightCode(buf:StringBuilder, weight:int):void{} + protected function checkWeight(weight:int):int{ return 0;} +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AbstractExpandedDecoder.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AbstractExpandedDecoder.as new file mode 100644 index 0000000..da8facf --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AbstractExpandedDecoder.as @@ -0,0 +1,87 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed 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. + */ + +/* + * These authors would like to acknowledge the Spanish Ministry of Industry, + * Tourism and Trade, for the support in the project TSI020301-2008-2 + * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled + * Mobile Dynamic Environments", led by Treelogic + * ( http://www.treelogic.com/ ): + * + * http://www.piramidepse.com/ + */ + +package com.google.zxing.oned.rss.expanded.decoders +{ + +import com.google.zxing.NotFoundException; +import com.google.zxing.common.BitArray; + +/** + * @author Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + * @author Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es) + */ +public class AbstractExpandedDecoder { + + protected var information:BitArray; + protected var generalDecoder:GeneralAppIdDecoder; + + public function AbstractExpandedDecoder(information:BitArray){ + this.information = information; + this.generalDecoder = new GeneralAppIdDecoder(information); + } + + public function parseInformation():String{ return '';} + + public static function createDecoder(information:BitArray):AbstractExpandedDecoder{ + if (information._get(1)) { + return new AI01AndOtherAIs(information); + } + if (!information._get(2)) { + return new AnyAIDecoder(information); + } + + var fourBitEncodationMethod:int = GeneralAppIdDecoder.extractNumericValueFromBitArray(information, 1, 4); + + switch(fourBitEncodationMethod){ + case 4: return new AI013103decoder(information); + case 5: return new AI01320xDecoder(information); + } + + var fiveBitEncodationMethod:int = GeneralAppIdDecoder.extractNumericValueFromBitArray(information, 1, 5); + switch(fiveBitEncodationMethod){ + case 12: return new AI01392xDecoder(information); + case 13: return new AI01393xDecoder(information); + } + + var sevenBitEncodationMethod:int = GeneralAppIdDecoder.extractNumericValueFromBitArray(information, 1, 7); + switch(sevenBitEncodationMethod){ + case 56: return new AI013x0x1xDecoder(information, "310", "11"); + case 57: return new AI013x0x1xDecoder(information, "320", "11"); + case 58: return new AI013x0x1xDecoder(information, "310", "13"); + case 59: return new AI013x0x1xDecoder(information, "320", "13"); + case 60: return new AI013x0x1xDecoder(information, "310", "15"); + case 61: return new AI013x0x1xDecoder(information, "320", "15"); + case 62: return new AI013x0x1xDecoder(information, "310", "17"); + case 63: return new AI013x0x1xDecoder(information, "320", "17"); + } + + throw new Error("unknown decoder: " + information); + } +} + + +} diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AnyAIDecoder.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AnyAIDecoder.as new file mode 100644 index 0000000..a9a735a --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/AnyAIDecoder.as @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed 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. + */ + +/* + * These authors would like to acknowledge the Spanish Ministry of Industry, + * Tourism and Trade, for the support in the project TSI020301-2008-2 + * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled + * Mobile Dynamic Environments", led by Treelogic + * ( http://www.treelogic.com/ ): + * + * http://www.piramidepse.com/ + */ + +package com.google.zxing.oned.rss.expanded.decoders +{ + +import com.google.zxing.NotFoundException; +import com.google.zxing.common.BitArray; +import com.google.zxing.common.flexdatatypes.StringBuilder; + +/** + * @author Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + * @author Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es) + */ +public class AnyAIDecoder extends AbstractExpandedDecoder { + + private static var HEADER_SIZE:int = 2 + 1 + 2; + + public function AnyAIDecoder(information:BitArray) { + super(information); + } + + public override function parseInformation():String { + var buf:StringBuilder = new StringBuilder(); + return this.generalDecoder.decodeAllCodes(buf, HEADER_SIZE); + } +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/BlockParsedResult.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/BlockParsedResult.as new file mode 100644 index 0000000..422dd11 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/BlockParsedResult.as @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed 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. + */ + +/* + * These authors would like to acknowledge the Spanish Ministry of Industry, + * Tourism and Trade, for the support in the project TSI020301-2008-2 + * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled + * Mobile Dynamic Environments", led by Treelogic + * ( http://www.treelogic.com/ ): + * + * http://www.piramidepse.com/ + */ + +package com.google.zxing.oned.rss.expanded.decoders +{ + +/** + * @author Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + * @author Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es) + * */ +public class BlockParsedResult { + protected var decodedInformation:DecodedInformation; + protected var finished:Boolean; +/* + public function BlockParsedResult(finished:Boolean) { + this(null, finished); + } +*/ + public function BlockParsedResult(information:DecodedInformation, finished:Boolean) { + this.finished = finished; + this.decodedInformation = information; + } + + public function getDecodedInformation():DecodedInformation { + return this.decodedInformation; + } + + public function isFinished():Boolean { + return this.finished; + } +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/CurrentParsingState.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/CurrentParsingState.as new file mode 100644 index 0000000..71843e7 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/CurrentParsingState.as @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed 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. + */ + +/* + * These authors would like to acknowledge the Spanish Ministry of Industry, + * Tourism and Trade, for the support in the project TSI020301-2008-2 + * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled + * Mobile Dynamic Environments", led by Treelogic + * ( http://www.treelogic.com/ ): + * + * http://www.piramidepse.com/ + */ + +package com.google.zxing.oned.rss.expanded.decoders +{ + +/** + * @author Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + */ +public class CurrentParsingState { + + public var position:int; + protected var encoding:int; + + public static var NUMERIC:int = 1; + public static var ALPHA:int = 2; + static public var ISO_IEC_646:int = 4; + + public function CurrentParsingState(){ + this.position = 0; + this.encoding = NUMERIC; + } + + public function isAlpha():Boolean{ + return this.encoding == ALPHA; + } + + public function isNumeric():Boolean{ + return this.encoding == NUMERIC; + } + + public function isIsoIec646():Boolean{ + return this.encoding == ISO_IEC_646; + } + + public function setNumeric():void{ + this.encoding = NUMERIC; + } + + public function setAlpha():void{ + this.encoding = ALPHA; + } + + public function setIsoIec646():void{ + this.encoding = ISO_IEC_646; + } +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/DecodedChar.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/DecodedChar.as new file mode 100644 index 0000000..32629fc --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/DecodedChar.as @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed 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. + */ + +/* + * These authors would like to acknowledge the Spanish Ministry of Industry, + * Tourism and Trade, for the support in the project TSI020301-2008-2 + * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled + * Mobile Dynamic Environments", led by Treelogic + * ( http://www.treelogic.com/ ): + * + * http://www.piramidepse.com/ + */ + +package com.google.zxing.oned.rss.expanded.decoders{ + +/** + * @author Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + * @author Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es) + */ +public class DecodedChar extends DecodedObject { + + protected var value:String; + + public static var FNC1:String = '$'; // It's not in Alphanumeric neither in ISO/IEC 646 charset + + public function DecodedChar(newPosition:int, value:String) { + super(newPosition); + this.value = value; + } + + public function getValue():String{ + return this.value; + } + + public function isFNC1():Boolean{ + return this.value == FNC1; + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/DecodedInformation.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/DecodedInformation.as new file mode 100644 index 0000000..f6b12f0 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/DecodedInformation.as @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed 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. + */ + +/* + * These authors would like to acknowledge the Spanish Ministry of Industry, + * Tourism and Trade, for the support in the project TSI020301-2008-2 + * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled + * Mobile Dynamic Environments", led by Treelogic + * ( http://www.treelogic.com/ ): + * + * http://www.piramidepse.com/ + */ + +package com.google.zxing.oned.rss.expanded.decoders +{ + +/** + * @author Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + * @author Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es) + */ +public class DecodedInformation extends DecodedObject { + + protected var newString:String; + protected var remainingValue:int; + protected var remaining:Boolean; + + + public function DecodedInformation(newPosition:int,newString:String, remainingValue:int=0){ + super(newPosition); + this.remainingValue = remainingValue; + if (remainingValue != 0) + { + this.remaining = true; + } + else + { + this.remaining = false; + } + this.newString = newString; + } + + public function getNewString():String{ + return this.newString; + } + + public function isRemaining():Boolean{ + return this.remaining; + } + + public function getRemainingValue():int{ + return this.remainingValue; + } +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/DecodedNumeric.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/DecodedNumeric.as new file mode 100644 index 0000000..646a90f --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/DecodedNumeric.as @@ -0,0 +1,81 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed 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. + */ + +/* + * These authors would like to acknowledge the Spanish Ministry of Industry, + * Tourism and Trade, for the support in the project TSI020301-2008-2 + * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled + * Mobile Dynamic Environments", led by Treelogic + * ( http://www.treelogic.com/ ): + * + * http://www.piramidepse.com/ + */ + +package com.google.zxing.oned.rss.expanded.decoders +{ + +import com.google.zxing.common.flexdatatypes.IllegalArgumentException; +/** + * @author Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + * @author Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es) + */ +public class DecodedNumeric extends DecodedObject { + protected var firstDigit:int; + protected var secondDigit:int; + + public static var FNC1:int = 10; + + public function DecodedNumeric(newPosition:int, firstDigit:int, secondDigit:int){ + super(newPosition); + + this.firstDigit = firstDigit; + this.secondDigit = secondDigit; + + if (this.firstDigit < 0 || this.firstDigit > 10) { + throw new IllegalArgumentException("Invalid firstDigit: " + firstDigit); + } + + if (this.secondDigit < 0 || this.secondDigit > 10) { + throw new IllegalArgumentException("Invalid secondDigit: " + secondDigit); + } + } + + public function getFirstDigit():int{ + return this.firstDigit; + } + + public function getSecondDigit():int{ + return this.secondDigit; + } + + public function getValue():int{ + return this.firstDigit * 10 + this.secondDigit; + } + + public function isFirstDigitFNC1():Boolean{ + return this.firstDigit == FNC1; + } + + public function isSecondDigitFNC1():Boolean{ + return this.secondDigit == FNC1; + } + + public function isAnyFNC1():Boolean{ + return this.firstDigit == FNC1 || this.secondDigit == FNC1; + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/DecodedObject.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/DecodedObject.as new file mode 100644 index 0000000..ab72d10 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/DecodedObject.as @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed 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. + */ + +/* + * These authors would like to acknowledge the Spanish Ministry of Industry, + * Tourism and Trade, for the support in the project TSI020301-2008-2 + * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled + * Mobile Dynamic Environments", led by Treelogic + * ( http://www.treelogic.com/ ): + * + * http://www.piramidepse.com/ + */ + +package com.google.zxing.oned.rss.expanded.decoders +{ + +/** + * @author Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + */ +public class DecodedObject { + protected var newPosition:int; + + public function DecodedObject(newPosition:int):void{ + this.newPosition = newPosition; + } + + public function getNewPosition():int { + return this.newPosition; + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/FieldParser.as b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/FieldParser.as new file mode 100644 index 0000000..36da505 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/oned/rss/expanded/decoders/FieldParser.as @@ -0,0 +1,304 @@ +/* + * Copyright (C) 2010 ZXing authors + * + * Licensed 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. + */ + +/* + * These authors would like to acknowledge the Spanish Ministry of Industry, + * Tourism and Trade, for the support in the project TSI020301-2008-2 + * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled + * Mobile Dynamic Environments", led by Treelogic + * ( http://www.treelogic.com/ ): + * + * http://www.piramidepse.com/ + */ + +package com.google.zxing.oned.rss.expanded.decoders +{ + +import com.google.zxing.NotFoundException; + +/** + * @author Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) + * @author Eduardo Castillejo, University of Deusto (eduardo.castillejo@deusto.es) + */ +public class FieldParser { + + protected static var VARIABLE_LENGTH:Object = new Object(); + + private static var TWO_DIGIT_DATA_LENGTH:Array = [ + // "DIGITS", new Integer(LENGTH) + // or + // "DIGITS", VARIABLE_LENGTH, new Integer(MAX_SIZE) + + [ "00", new Array(18) ], + [ "01", new Array(14) ], + [ "02", new Array(14) ], + + [ "10", VARIABLE_LENGTH, new Array(20) ], + [ "11", new Array(6) ], + [ "12", new Array(6) ], + [ "13", new Array(6) ], + [ "15", new Array(6) ], + [ "17", new Array(6) ], + + [ "20", new Array(2) ], + [ "21", VARIABLE_LENGTH, new Array(20) ], + [ "22", VARIABLE_LENGTH, new Array(29) ], + + [ "30", VARIABLE_LENGTH, new Array( 8) ], + [ "37", VARIABLE_LENGTH, new Array( 8) ], + + //internal company codes + [ "90", VARIABLE_LENGTH, new Array(30) ], + [ "91", VARIABLE_LENGTH, new Array(30) ], + [ "92", VARIABLE_LENGTH, new Array(30) ], + [ "93", VARIABLE_LENGTH, new Array(30) ], + [ "94", VARIABLE_LENGTH, new Array(30) ], + [ "95", VARIABLE_LENGTH, new Array(30) ], + [ "96", VARIABLE_LENGTH, new Array(30) ], + [ "97", VARIABLE_LENGTH, new Array(30) ], + [ "98", VARIABLE_LENGTH, new Array(30) ], + [ "99", VARIABLE_LENGTH, new Array(30) ], + ]; + + private static var THREE_DIGIT_DATA_LENGTH:Array = [ + // Same format as above + + [ "240", VARIABLE_LENGTH, new Array(30) ], + [ "241", VARIABLE_LENGTH, new Array(30) ], + [ "242", VARIABLE_LENGTH, new Array( 6) ], + [ "250", VARIABLE_LENGTH, new Array(30) ], + [ "251", VARIABLE_LENGTH, new Array(30) ], + [ "253", VARIABLE_LENGTH, new Array(17) ], + [ "254", VARIABLE_LENGTH, new Array(20) ], + + [ "400", VARIABLE_LENGTH, new Array(30) ], + [ "401", VARIABLE_LENGTH, new Array(30) ], + [ "402", new Array(17) ], + [ "403", VARIABLE_LENGTH, new Array(30) ], + [ "410", new Array(13) ], + [ "411", new Array(13) ], + [ "412", new Array(13) ], + [ "413", new Array(13) ], + [ "414", new Array(13) ], + [ "420", VARIABLE_LENGTH, new Array(20) ], + [ "421", VARIABLE_LENGTH, new Array(15) ], + [ "422", new Array( 3) ], + [ "423", VARIABLE_LENGTH, new Array(15) ], + [ "424", new Array(3) ], + [ "425", new Array(3) ], + [ "426", new Array(3) ], + ]; + + private static var THREE_DIGIT_PLUS_DIGIT_DATA_LENGTH:Array = [ + // Same format as above + + [ "310", new Array(6) ], + [ "311", new Array(6) ], + [ "312", new Array(6) ], + [ "313", new Array(6) ], + [ "314", new Array(6) ], + [ "315", new Array(6) ], + [ "316", new Array(6) ], + [ "320", new Array(6) ], + [ "321", new Array(6) ], + [ "322", new Array(6) ], + [ "323", new Array(6) ], + [ "324", new Array(6) ], + [ "325", new Array(6) ], + [ "326", new Array(6) ], + [ "327", new Array(6) ], + [ "328", new Array(6) ], + [ "329", new Array(6) ], + [ "330", new Array(6) ], + [ "331", new Array(6) ], + [ "332", new Array(6) ], + [ "333", new Array(6) ], + [ "334", new Array(6) ], + [ "335", new Array(6) ], + [ "336", new Array(6) ], + [ "340", new Array(6) ], + [ "341", new Array(6) ], + [ "342", new Array(6) ], + [ "343", new Array(6) ], + [ "344", new Array(6) ], + [ "345", new Array(6) ], + [ "346", new Array(6) ], + [ "347", new Array(6) ], + [ "348", new Array(6) ], + [ "349", new Array(6) ], + [ "350", new Array(6) ], + [ "351", new Array(6) ], + [ "352", new Array(6) ], + [ "353", new Array(6) ], + [ "354", new Array(6) ], + [ "355", new Array(6) ], + [ "356", new Array(6) ], + [ "357", new Array(6) ], + [ "360", new Array(6) ], + [ "361", new Array(6) ], + [ "362", new Array(6) ], + [ "363", new Array(6) ], + [ "364", new Array(6) ], + [ "365", new Array(6) ], + [ "366", new Array(6) ], + [ "367", new Array(6) ], + [ "368", new Array(6) ], + [ "369", new Array(6) ], + [ "390", VARIABLE_LENGTH, new Array(15) ], + [ "391", VARIABLE_LENGTH, new Array(18) ], + [ "392", VARIABLE_LENGTH, new Array(15) ], + [ "393", VARIABLE_LENGTH, new Array(18) ], + [ "703", VARIABLE_LENGTH, new Array(30) ] + ]; + + private static var FOUR_DIGIT_DATA_LENGTH:Array = [ + // Same format as above + + [ "7001", new Array(13) ], + [ "7002", VARIABLE_LENGTH, new Array(30) ], + [ "7003", new Array(10) ], + + [ "8001", new Array(14) ], + [ "8002", VARIABLE_LENGTH, new Array(20) ], + [ "8003", VARIABLE_LENGTH, new Array(30) ], + [ "8004", VARIABLE_LENGTH, new Array(30) ], + [ "8005", new Array(6) ], + [ "8006", new Array(18) ], + [ "8007", VARIABLE_LENGTH, new Array(30) ], + [ "8008", VARIABLE_LENGTH, new Array(12) ], + [ "8018", new Array(18) ], + [ "8020", VARIABLE_LENGTH, new Array(25) ], + [ "8100", new Array(6) ], + [ "8101", new Array(10) ], + [ "8102", new Array(2) ], + [ "8110", VARIABLE_LENGTH, new Array(30) ], + ]; + + public function FieldParser() { + } + + public static function parseFieldsInGeneralPurpose(rawInformation:String):String{ + if(rawInformation.length == 0) { + return null; + } + + // Processing 2-digit AIs + + if(rawInformation.length < 2) + { + throw NotFoundException.getNotFoundInstance(); + } + + var firstTwoDigits:String = rawInformation.substring(0, 2); + for (var i:int=0; i this.information.Size){ + return pos + 4 <= this.information.Size; + } + + for(var i:int = pos; i < pos + 3; ++i) { + if (this.information._get(i)) { + return true; + } + } + + return this.information._get(pos + 3); + } + + private function decodeNumeric(pos:int):DecodedNumeric { + if(pos + 7 > this.information.Size){ + var numeric:int = extractNumericValueFromBitArray2(pos, 4); + if(numeric == 0) { + return new DecodedNumeric(this.information.Size, DecodedNumeric.FNC1, DecodedNumeric.FNC1); + } + return new DecodedNumeric(this.information.Size, numeric - 1, DecodedNumeric.FNC1); + } + numeric = extractNumericValueFromBitArray2(pos, 7); + + var digit1:int = int((numeric - 8) / 11); + var digit2:int = (numeric - 8) % 11; + + return new DecodedNumeric(pos + 7, digit1, digit2); + } + + public function extractNumericValueFromBitArray2(pos:int, bits:int):int{ + return extractNumericValueFromBitArray(this.information, pos, bits); + } + + public static function extractNumericValueFromBitArray(information:BitArray, pos:int, bits:int):int { + + if(bits > 32) { + throw new IllegalArgumentException("extractNumberValueFromBitArray can't handle more than 32 bits"); + } + + var value:int = 0; + for(var i:int = 0; i < bits; ++i) { + if (information._get(pos + i)) { + value |= (1 << (bits - i - 1)); + } + } + + return value; + } + + public function decodeGeneralPurposeField(pos:int, remaining:String):DecodedInformation { + this.buffer.setLength(0); + + if(remaining != null) { + this.buffer.Append(remaining); + } + + this.current.position = pos; + + var lastDecoded:DecodedInformation = parseBlocks(); + if(lastDecoded != null && lastDecoded.isRemaining()) { + return new DecodedInformation(this.current.position, this.buffer.toString(), lastDecoded.getRemainingValue()); + } + return new DecodedInformation(this.current.position, this.buffer.toString()); + } + + private function parseBlocks():DecodedInformation { + var isFinished:Boolean; + var result:BlockParsedResult; + do{ + var initialPosition:int = current.position; + + if (current.isAlpha()){ + result = parseAlphaBlock(); + isFinished = result.isFinished(); + }else if (current.isIsoIec646()){ + result = parseIsoIec646Block(); + isFinished = result.isFinished(); + }else{ // it must be numeric + result = parseNumericBlock(); + isFinished = result.isFinished(); + } + + var positionChanged:Boolean = initialPosition != current.position; + if(!positionChanged && !isFinished) { + break; + } + } while (!isFinished); + + return result.getDecodedInformation(); + } + + private function parseNumericBlock():BlockParsedResult { + while(isStillNumeric(current.position)){ + var numeric:DecodedNumeric = decodeNumeric(current.position); + current.position = numeric.getNewPosition(); + + if(numeric.isFirstDigitFNC1()){ + var information:DecodedInformation; + if (numeric.isSecondDigitFNC1()) { + information = new DecodedInformation(current.position, buffer.toString()); + } else { + information = new DecodedInformation(current.position, buffer.toString(), numeric.getSecondDigit()); + } + return new BlockParsedResult(information, true); + } + buffer.Append(String.fromCharCode(48+numeric.getFirstDigit())); + + if(numeric.isSecondDigitFNC1()){ + information = new DecodedInformation(current.position, buffer.toString()); + return new BlockParsedResult(information, true); + } + buffer.Append(String.fromCharCode(48+numeric.getSecondDigit())); + } + + if(isNumericToAlphaNumericLatch(current.position)){ + current.setAlpha(); + current.position += 4; + } + return new BlockParsedResult(null,false); + } + + private function parseIsoIec646Block():BlockParsedResult { + while (isStillIsoIec646(current.position)) { + var iso:DecodedChar = decodeIsoIec646(current.position); + current.position = iso.getNewPosition(); + + if (iso.isFNC1()) { + var information:DecodedInformation = new DecodedInformation(current.position, buffer.toString()); + return new BlockParsedResult(information, true); + } + buffer.Append(iso.getValue()); + } + + if (isAlphaOr646ToNumericLatch(current.position)) { + current.position += 3; + current.setNumeric(); + } else if (isAlphaTo646ToAlphaLatch(current.position)) { + if (current.position + 5 < this.information.Size) { + current.position += 5; + } else { + current.position = this.information.Size; + } + + current.setAlpha(); + } + return new BlockParsedResult(null,false); + } + + private function parseAlphaBlock():BlockParsedResult { + while (isStillAlpha(current.position)) { + var alpha:DecodedChar = decodeAlphanumeric(current.position); + current.position = alpha.getNewPosition(); + + if(alpha.isFNC1()) { + var information:DecodedInformation = new DecodedInformation(current.position, buffer.toString()); + return new BlockParsedResult(information, true); //end of the char block + } + + buffer.Append(alpha.getValue()); + } + + if (isAlphaOr646ToNumericLatch(current.position)) { + current.position += 3; + current.setNumeric(); + } else if (isAlphaTo646ToAlphaLatch(current.position)) { + if (current.position + 5 < this.information.Size) { + current.position += 5; + } else { + current.position = this.information.Size; + } + + current.setIsoIec646(); + } + return new BlockParsedResult(null,false); + } + + private function isStillIsoIec646(pos:int):Boolean + { + if(pos + 5 > this.information.Size) { + return false; + } + + var fiveBitValue:int = extractNumericValueFromBitArray2(pos, 5); + if(fiveBitValue >= 5 && fiveBitValue < 16) { + return true; + } + + if(pos + 7 > this.information.Size) { + return false; + } + + var sevenBitValue:int = extractNumericValueFromBitArray2(pos, 7); + if(sevenBitValue >= 64 && sevenBitValue < 116) { + return true; + } + + if(pos + 8 > this.information.Size) { + return false; + } + + var eightBitValue:int = extractNumericValueFromBitArray2(pos, 8); + return eightBitValue >= 232 && eightBitValue < 253; + + } + + private function decodeIsoIec646(pos:int):DecodedChar { + var fiveBitValue:int = extractNumericValueFromBitArray2(pos, 5); + if(fiveBitValue == 15) { + return new DecodedChar(pos + 5, DecodedChar.FNC1); + } + + if(fiveBitValue >= 5 && fiveBitValue < 15) { + return new DecodedChar(pos + 5, String.fromCharCode((48 + fiveBitValue - 5) as int)); + } + + var sevenBitValue:int = extractNumericValueFromBitArray2(pos, 7); + + if(sevenBitValue >= 64 && sevenBitValue < 90) { + return new DecodedChar(pos + 7, (sevenBitValue + 1).toString()); + } + + if(sevenBitValue >= 90 && sevenBitValue < 116) { + return new DecodedChar(pos + 7, String.fromCharCode(sevenBitValue + 7)); + } + + var eightBitValue:int = extractNumericValueFromBitArray2(pos, 8); + switch (eightBitValue){ + case 232: return new DecodedChar(pos + 8, '!'); + case 233: return new DecodedChar(pos + 8, '"'); + case 234: return new DecodedChar(pos + 8, '%'); + case 235: return new DecodedChar(pos + 8, '&'); + case 236: return new DecodedChar(pos + 8, '\''); + case 237: return new DecodedChar(pos + 8, '('); + case 238: return new DecodedChar(pos + 8, ')'); + case 239: return new DecodedChar(pos + 8, '*'); + case 240: return new DecodedChar(pos + 8, '+'); + case 241: return new DecodedChar(pos + 8, ','); + case 242: return new DecodedChar(pos + 8, '-'); + case 243: return new DecodedChar(pos + 8, '.'); + case 244: return new DecodedChar(pos + 8, '/'); + case 245: return new DecodedChar(pos + 8, ':'); + case 246: return new DecodedChar(pos + 8, ';'); + case 247: return new DecodedChar(pos + 8, '<'); + case 248: return new DecodedChar(pos + 8, '='); + case 249: return new DecodedChar(pos + 8, '>'); + case 250: return new DecodedChar(pos + 8, '?'); + case 251: return new DecodedChar(pos + 8, '_'); + case 252: return new DecodedChar(pos + 8, ' '); + } + + throw new Error("Decoding invalid ISO/IEC 646 value: " + eightBitValue); + } + + private function isStillAlpha(pos:int):Boolean { + if(pos + 5 > this.information.Size) { + return false; + } + + // We now check if it's a valid 5-bit value (0..9 and FNC1) + var fiveBitValue:int = extractNumericValueFromBitArray2(pos, 5); + if(fiveBitValue >= 5 && fiveBitValue < 16) { + return true; + } + + if(pos + 6 > this.information.Size) { + return false; + } + + var sixBitValue:int = extractNumericValueFromBitArray2(pos, 6); + return sixBitValue >= 16 && sixBitValue < 63; // 63 not included + } + + private function decodeAlphanumeric(pos:int):DecodedChar { + var fiveBitValue:int = extractNumericValueFromBitArray2(pos, 5); + if(fiveBitValue == 15) { + return new DecodedChar(pos + 5, DecodedChar.FNC1); + } + + if(fiveBitValue >= 5 && fiveBitValue < 15) { + return new DecodedChar(pos + 5, String.fromCharCode((('0' as String).charCodeAt(0) + fiveBitValue - 5)as int)); + } + + var sixBitValue:int = extractNumericValueFromBitArray2(pos, 6); + + if(sixBitValue >= 32 && sixBitValue < 58) { + return new DecodedChar(pos + 6, String.fromCharCode(sixBitValue + 33)); + } + + switch(sixBitValue){ + case 58: return new DecodedChar(pos + 6, '*'); + case 59: return new DecodedChar(pos + 6, ','); + case 60: return new DecodedChar(pos + 6, '-'); + case 61: return new DecodedChar(pos + 6, '.'); + case 62: return new DecodedChar(pos + 6, '/'); + } + + throw new Error("Decoding invalid alphanumeric value: " + sixBitValue); + } + + private function isAlphaTo646ToAlphaLatch(pos:int):Boolean { + if(pos + 1 > this.information.Size) { + return false; + } + + for(var i:int = 0; i < 5 && i + pos < this.information.Size; ++i){ + if(i == 2){ + if(!this.information._get(pos + 2)) { + return false; + } + } else if(this.information._get(pos + i)) { + return false; + } + } + + return true; + } + + private function isAlphaOr646ToNumericLatch(pos:int):Boolean { + // Next is alphanumeric if there are 3 positions and they are all zeros + if (pos + 3 > this.information.Size) { + return false; + } + + for (var i:int = pos; i < pos + 3; ++i) { + if (this.information._get(i)) { + return false; + } + } + return true; + } + + private function isNumericToAlphaNumericLatch(pos:int):Boolean { + // Next is alphanumeric if there are 4 positions and they are all zeros, or + // if there is a subset of this just before the end of the symbol + if (pos + 1 > this.information.Size) { + return false; + } + + for (var i:int = 0; i < 4 && i + pos < this.information.Size; ++i) { + if (this.information._get(pos + i)) { + return false; + } + } + return true; + } +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/pdf417/PDF417Reader.as b/FairyGUI-as3/src/com/google/zxing/pdf417/PDF417Reader.as new file mode 100644 index 0000000..667203e --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/pdf417/PDF417Reader.as @@ -0,0 +1,196 @@ +/* + * Copyright 2009 ZXing authors + * + * Licensed 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 com.google.zxing.pdf417 +{ + + + +/** + * This implementation can detect and decode PDF417 codes in an image. + * + * @author SITA Lab (kevin.osullivan@sita.aero) + */ +import com.google.zxing.BarcodeFormat; +import com.google.zxing.BinaryBitmap; +import com.google.zxing.DecodeHintType; +import com.google.zxing.Reader; +import com.google.zxing.ReaderException; +import com.google.zxing.Result; +import com.google.zxing.ResultPoint; +import com.google.zxing.common.BitMatrix; +import com.google.zxing.common.DecoderResult; +import com.google.zxing.common.DetectorResult; +import com.google.zxing.pdf417.decoder.Decoder; +import com.google.zxing.pdf417.detector.Detector; +import com.google.zxing.common.flexdatatypes.HashTable; +import com.google.zxing.NotFoundException; + +public final class PDF417Reader implements Reader { + + + private static var NO_POINTS:Array = new Array(); + + private var decoder:Decoder = new Decoder(); + + /** + * Locates and decodes a PDF417 code in an image. + * + * @return a String representing the content encoded by the PDF417 code + * @throws ReaderException if a PDF417 code cannot be found, or cannot be decoded + */ + /* + public function decode(image:BinaryBitmap ):Result { + return decode(image, null); + } +*/ + + public function reset():void { + // do nothing + } + + public function decode(image:BinaryBitmap , hints:HashTable=null):Result + { + var decoderResult:DecoderResult ; + var points:Array ; + if (hints != null && hints.ContainsKey(DecodeHintType.PURE_BARCODE)) { + var bits:BitMatrix = extractPureBits(image.getBlackMatrix()); + decoderResult = decoder.decode(bits); + points = NO_POINTS; + } else { + var detectorResult:DetectorResult = new Detector(image).detect(); + decoderResult = decoder.decode(detectorResult.getBits()); + points = detectorResult.getPoints(); + } + return new Result(decoderResult.getText(), decoderResult.getRawBytes(), points,BarcodeFormat.PDF417,0); + } + + + + /** + * This method detects a barcode in a "pure" image -- that is, pure monochrome image + * which contains only an unrotated, unskewed, image of a barcode, with some white border + * around it. This is a specialized method that works exceptionally fast in this special + * case. + */ + private static function extractPureBits(image:BitMatrix):BitMatrix { + + var leftTopBlack:Array = image.getTopLeftOnBit(); + var rightBottomBlack:Array = image.getBottomRightOnBit(); + if (leftTopBlack == null || rightBottomBlack == null) { + throw NotFoundException.getNotFoundInstance(); + } + + var moduleSize:int = moduleSize(leftTopBlack, image); + + var top:int = leftTopBlack[1]; + var bottom:int = rightBottomBlack[1]; + var left:int = findPatternStart(leftTopBlack[0], top, image); + var right:int = findPatternEnd(leftTopBlack[0], top, image); + + var matrixWidth:int = (right - left + 1) / moduleSize; + var matrixHeight:int = (bottom - top + 1) / moduleSize; + if (matrixWidth <= 0 || matrixHeight <= 0) { + throw NotFoundException.getNotFoundInstance(); + } + + // Push in the "border" by half the module width so that we start + // sampling in the middle of the module. Just in case the image is a + // little off, this will help recover. + var nudge:int = moduleSize >> 1; + top += nudge; + left += nudge; + + // Now just read off the bits + var bits:BitMatrix = new BitMatrix(matrixWidth, matrixHeight); + for (var y:int = 0; y < matrixHeight; y++) { + var iOffset:int = top + y * moduleSize; + for (var x:int = 0; x < matrixWidth; x++) { + if (image._get(left + x * moduleSize, iOffset)) { + bits._set(x, y); + } + } + } + return bits; + } + + private static function moduleSize(leftTopBlack:Array , image:BitMatrix ):int + { + var x:int = leftTopBlack[0]; + var y:int = leftTopBlack[1]; + var width:int = image.getWidth(); + while (x < width && image._get(x, y)) { + x++; + } + if (x == width) { + throw NotFoundException.getNotFoundInstance(); + } + + var moduleSize:int = (x - leftTopBlack[0]) >>> 3; // We've crossed left first bar, which is 8x + if (moduleSize == 0) { + throw NotFoundException.getNotFoundInstance(); + } + + return moduleSize; + } + + private static function findPatternStart(x:int, y:int, image:BitMatrix):int { + var width:int = image.getWidth(); + var start:int = x; + // start should be on black + var transitions:int = 0; + var black:Boolean = true; + while (start < width - 1 && transitions < 8) { + start++; + var newBlack:Boolean = image._get(start, y); + if (black != newBlack) { + transitions++; + } + black = newBlack; + } + if (start == width - 1) { + throw NotFoundException.getNotFoundInstance(); + } + return start; + } + + private static function findPatternEnd(x:int, y:int, image:BitMatrix):int { + var width:int = image.getWidth(); + var end:int = width - 1; + // end should be on black + while (end > x && !image._get(end, y)) { + end--; + } + var transitions:int = 0; + var black:Boolean = true; + while (end > x && transitions < 9) { + end--; + var newBlack:Boolean = image._get(end, y); + if (black != newBlack) { + transitions++; + } + black = newBlack; + } + if (end == x) { + throw NotFoundException.getNotFoundInstance(); + } + return end; + } + + + + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/pdf417/decoder/BitMatrixParser.as b/FairyGUI-as3/src/com/google/zxing/pdf417/decoder/BitMatrixParser.as new file mode 100644 index 0000000..5b40349 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/pdf417/decoder/BitMatrixParser.as @@ -0,0 +1,1023 @@ +package com.google.zxing.pdf417.decoder +{ +/* + * Copyright 2009 ZXing authors + * + * Licensed 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. + */ + + + +/** + *

+ * This class parses the BitMatrix image into codewords. + *

+ * + * @author SITA Lab (kevin.osullivan@sita.aero) + */ +public final class BitMatrixParser { + +import com.google.zxing.ReaderException; +import com.google.zxing.common.BitMatrix; + + private static var MAX_ROW_DIFFERENCE:int = 6; + private static var MAX_ROWS:int = 90; + //private static final int MAX_COLUMNS = 30; + // Maximum Codewords (Data + Error) + private static var MAX_CW_CAPACITY:int = 929; + private static var MODULES_IN_SYMBOL:int = 17; + + private var bitMatrix:BitMatrix; + private var rows:int = 0; + //private int columns = 0; + + private var leftColumnECData:int = 0; + private var rightColumnECData:int = 0; + private var eraseCount:int = 0; + private var erasures:Array = null; + private var ecLevel:int = -1; + + public function BitMatrixParser(bitMatrix:BitMatrix) { + this.bitMatrix = bitMatrix; + } + + /** + * To ensure separability of rows, codewords of consecutive rows belong to + * different subsets of all possible codewords. This routine scans the + * symbols in the barcode. When it finds a number of consecutive rows which + * are the same, it assumes that this is a row of codewords and processes + * them into a codeword array. + * + * @return an array of codewords. + */ + public function readCodewords():Array + { + var width:int = bitMatrix.getWidth(); + var height:int = bitMatrix.getHeight(); + + erasures = new Array(MAX_CW_CAPACITY);for (var k:int=0;k= MAX_ROWS) { + // Something is wrong, since we have exceeded + // the maximum rows in the specification. + // TODO Maybe return error code + return null; + } + var rowDifference:int = 0; + // Scan a line of modules and check the + // difference between this and the previous line + for (var j:int = 0; j < width; j++) { + // Accumulate differences between this line and the + // previous line. + if (bitMatrix._get(j, i) != bitMatrix._get(j, i - 1)) { + rowDifference++; + } + } + if (rowDifference <= moduleWidth * MAX_ROW_DIFFERENCE) { + for (var j2:int = 0; j2 < width; j2++) { + // Accumulate the black pixels on this line + if (bitMatrix._get(j2, i)) { + rowCounters[j2]++; + } + } + // Increment the number of consecutive rows of pixels + // that are more or less the same + matchingConsecutiveScans++; + // Height of a row is a multiple of the module size in pixels + // Usually at least 3 times the module size + if (matchingConsecutiveScans >= moduleWidth * 2) { // MGMG + // We have some previous matches as well as a match here + // Set processing a unique row. + rowInProgress = true; + } + } else { + if (rowInProgress) { + // Process Row + next = processRow(rowCounters, rowNumber, rowHeight, codewords, next); + if (next == -1) { + // Something is wrong, since we have exceeded + // the maximum columns in the specification. + // TODO Maybe return error code + return null; + } + // Reinitialize the row counters. + for (var j3:int = 0; j3 < rowCounters.length; j3++) { + rowCounters[j3] = 0; + } + rowNumber++; + rowHeight = 0; + } + matchingConsecutiveScans = 0; + rowInProgress = false; + } + rowHeight++; + } + // Check for a row that was in progress before we exited above. + if (rowInProgress) { + // Process Row + if (rowNumber >= MAX_ROWS) { + // Something is wrong, since we have exceeded + // the maximum rows in the specification. + // TODO Maybe return error code + return null; + } + + next = processRow(rowCounters, rowNumber, rowHeight, codewords, next); + rowNumber++; + rows = rowNumber; + } + erasures = trimArray(erasures, eraseCount); + return trimArray(codewords, next); + } + + /** + * Trim the array to the required size. + * + * @param array the array + * @param size the size to trim it to + * @return the new trimmed array + */ + private static function trimArray(array:Array, size:int):Array { + if (size > 0) { + var a:Array = new Array(size); + for (var i:int = 0; i < size; i++) { + a[i] = array[i]; + } + return a; + } else { + return null; + } + } + + /** + * Convert the symbols in the row to codewords. + * Each PDF417 symbol character consists of four bar elements and four space + * elements, each of which can be one to six modules wide. The four bar and + * four space elements shall measure 17 modules in total. + * + * @param rowCounters an array containing the counts of black pixels for each column + * in the row. + * @param rowNumber the current row number of codewords. + * @param rowHeight the height of this row in pixels. + * @param codewords the codeword array to save codewords into. + * @param next the next available index into the codewords array. + * @return the next available index into the codeword array after processing + * this row. + */ + public function processRow(rowCounters:Array, rowNumber:int, rowHeight:int, codewords:Array, next:int):int { + var width:int = bitMatrix.getWidth(); + var columnNumber:int = 0; + var symbol:Number = 0; + for (var i:int = 0; i < width; i += MODULES_IN_SYMBOL) + { + for (var mask:int = MODULES_IN_SYMBOL - 1; mask >= 0; mask--) + { + if (rowCounters[i + (MODULES_IN_SYMBOL - 1 - mask)] >= (rowHeight >>> 1)) + { + symbol |= 1 << mask; + } + } + + var cw:int; + if (columnNumber > 0) { + cw = getCodeword(symbol); + // if (debug) System.out.println(" " + Long.toBinaryString(symbol) + + // " cw=" +cw + " ColumnNumber=" +columnNumber + "i=" +i); + if (cw < 0 && i < width - MODULES_IN_SYMBOL) + { + // Skip errors on the Right row indicator column + erasures[eraseCount] = next; + next++; + eraseCount++; + } + else + { + + codewords[next++] = cw; + } + } + else + { + // Left row indicator column + cw = getCodeword(symbol); + // if (debug) System.out.println(" " + Long.toBinaryString(symbol) + + // " cw=" +cw + " ColumnNumber=" +columnNumber + "i=" +i); + if (ecLevel < 0) { + switch (rowNumber % 3) { + case 0: + break; + case 1: + leftColumnECData = cw; + break; + case 2: + break; + } + } + } + symbol = 0; + //columns = columnNumber; + columnNumber++; + } + if (columnNumber > 1) + { + // Right row indicator column is in codeword[next] + //columns--; + // Overwrite the last codeword i.e. Right Row Indicator + --next; + if (ecLevel < 0) { + switch (rowNumber % 3) { + case 0: + break; + case 1: + break; + case 2: + rightColumnECData = codewords[next]; + if (rightColumnECData == leftColumnECData + && leftColumnECData != 0) + { + ecLevel = int(((rightColumnECData % 30) - rows % 3) / 3); + } + break; + } + } + codewords[next] = 0; + } + return next; + } + + /** + * Build a symbol from the pixels. + * Each symbol character is defined by an 8-digit bar-space sequence which + * represents the module widths of the eight elements of that symbol + * character. + * + * @param counters array of pixel counter corresponding to each Bar/Space pattern. + * @return the symbol + */ + /* + private static long getSymbol(int[] counters, float moduleWidth) { + int pixelsInSymbol = 0; + for (int j = 0; j < counters.length; j++) { + pixelsInSymbol += counters[j]; + } + float avgModuleWidth = (pixelsInSymbol / 17.0f); + boolean toggle = true; + int shift = 0; + int symbol = 0; + for (int j = 0; j < counters.length; j++) { + if (counters[j] < moduleWidth && counters[j] > 0) { + // Give a very narrow bar/space a chance + counters[j] = (int) moduleWidth; + } + // Calculate number of modules in the symbol. + // int modules = (int)(counters[j]/moduleWidth); + // int modules = round(counters[j]/moduleWidth); + int modules = round(counters[j] / avgModuleWidth); + if (modules > 6) { + // Maximum size is 6 modules + modules = 6; + } else if (modules < 1) { + modules = 1; + } + if (toggle) { + for (int k = 0; k < modules; k++) { + symbol |= 1 << (16 - k - shift); + } + toggle = false; + } else { + toggle = true; + } + shift += modules; + } + return symbol; + } + */ + + /** + * Translate the symbol into a codeword. + * + * @param symbol + * @return the codeword corresponding to the symbol. + */ + private static function getCodeword(symbol:Number):int { + var sym:Number = symbol; + sym &= 0x3ffff; + var i:int = findCodewordIndex(sym); + if (i == -1) { + return -1; + } else { + var cw:Number = CODEWORD_TABLE[i] - 1; + cw %= 929; + return int( cw); + } + } + + /** + * Use a binary search to find the index of the codeword corresponding to + * this symbol. + * + * @param symbol the symbol from the barcode. + * @return the index into the codeword table. + */ + private static function findCodewordIndex(symbol:Number):int { + var first:int = 0; + var upto:int = SYMBOL_TABLE.length; + while (first < upto) { + var mid:int = (first + upto) >>> 1; // Compute mid point. + if (symbol < SYMBOL_TABLE[mid]) { + upto = mid; // repeat search in bottom half. + } else if (symbol > SYMBOL_TABLE[mid]) { + first = mid + 1; // Repeat search in top half. + } else { + return mid; // Found it. return position + } + } + return -1; + // if (debug) System.out.println("Failed to find codeword for Symbol=" + + // symbol); + } + + /** + * Ends up being a bit faster than Math.round(). This merely rounds its + * argument to the nearest int, where x.5 rounds up. + */ + /* + private static int round(float d) { + return (int) (d + 0.5f); + } + */ + + /** + * Returns an array of locations representing the erasures. + */ + public function getErasures():Array { + return erasures; + } + + public function getECLevel():int { + return ecLevel; + } + + + + /** + * The sorted table of all possible symbols. Extracted from the PDF417 + * specification. The index of a symbol in this table corresponds to the + * index into the codeword table. + */ + private static var SYMBOL_TABLE:Array = [0x1025e, 0x1027a, 0x1029e, + 0x102bc, 0x102f2, 0x102f4, 0x1032e, 0x1034e, 0x1035c, 0x10396, + 0x103a6, 0x103ac, 0x10422, 0x10428, 0x10436, 0x10442, 0x10444, + 0x10448, 0x10450, 0x1045e, 0x10466, 0x1046c, 0x1047a, 0x10482, + 0x1049e, 0x104a0, 0x104bc, 0x104c6, 0x104d8, 0x104ee, 0x104f2, + 0x104f4, 0x10504, 0x10508, 0x10510, 0x1051e, 0x10520, 0x1053c, + 0x10540, 0x10578, 0x10586, 0x1058c, 0x10598, 0x105b0, 0x105be, + 0x105ce, 0x105dc, 0x105e2, 0x105e4, 0x105e8, 0x105f6, 0x1062e, + 0x1064e, 0x1065c, 0x1068e, 0x1069c, 0x106b8, 0x106de, 0x106fa, + 0x10716, 0x10726, 0x1072c, 0x10746, 0x1074c, 0x10758, 0x1076e, + 0x10792, 0x10794, 0x107a2, 0x107a4, 0x107a8, 0x107b6, 0x10822, + 0x10828, 0x10842, 0x10848, 0x10850, 0x1085e, 0x10866, 0x1086c, + 0x1087a, 0x10882, 0x10884, 0x10890, 0x1089e, 0x108a0, 0x108bc, + 0x108c6, 0x108cc, 0x108d8, 0x108ee, 0x108f2, 0x108f4, 0x10902, + 0x10908, 0x1091e, 0x10920, 0x1093c, 0x10940, 0x10978, 0x10986, + 0x10998, 0x109b0, 0x109be, 0x109ce, 0x109dc, 0x109e2, 0x109e4, + 0x109e8, 0x109f6, 0x10a08, 0x10a10, 0x10a1e, 0x10a20, 0x10a3c, + 0x10a40, 0x10a78, 0x10af0, 0x10b06, 0x10b0c, 0x10b18, 0x10b30, + 0x10b3e, 0x10b60, 0x10b7c, 0x10b8e, 0x10b9c, 0x10bb8, 0x10bc2, + 0x10bc4, 0x10bc8, 0x10bd0, 0x10bde, 0x10be6, 0x10bec, 0x10c2e, + 0x10c4e, 0x10c5c, 0x10c62, 0x10c64, 0x10c68, 0x10c76, 0x10c8e, + 0x10c9c, 0x10cb8, 0x10cc2, 0x10cc4, 0x10cc8, 0x10cd0, 0x10cde, + 0x10ce6, 0x10cec, 0x10cfa, 0x10d0e, 0x10d1c, 0x10d38, 0x10d70, + 0x10d7e, 0x10d82, 0x10d84, 0x10d88, 0x10d90, 0x10d9e, 0x10da0, + 0x10dbc, 0x10dc6, 0x10dcc, 0x10dd8, 0x10dee, 0x10df2, 0x10df4, + 0x10e16, 0x10e26, 0x10e2c, 0x10e46, 0x10e58, 0x10e6e, 0x10e86, + 0x10e8c, 0x10e98, 0x10eb0, 0x10ebe, 0x10ece, 0x10edc, 0x10f0a, + 0x10f12, 0x10f14, 0x10f22, 0x10f28, 0x10f36, 0x10f42, 0x10f44, + 0x10f48, 0x10f50, 0x10f5e, 0x10f66, 0x10f6c, 0x10fb2, 0x10fb4, + 0x11022, 0x11028, 0x11042, 0x11048, 0x11050, 0x1105e, 0x1107a, + 0x11082, 0x11084, 0x11090, 0x1109e, 0x110a0, 0x110bc, 0x110c6, + 0x110cc, 0x110d8, 0x110ee, 0x110f2, 0x110f4, 0x11102, 0x1111e, + 0x11120, 0x1113c, 0x11140, 0x11178, 0x11186, 0x11198, 0x111b0, + 0x111be, 0x111ce, 0x111dc, 0x111e2, 0x111e4, 0x111e8, 0x111f6, + 0x11208, 0x1121e, 0x11220, 0x11278, 0x112f0, 0x1130c, 0x11330, + 0x1133e, 0x11360, 0x1137c, 0x1138e, 0x1139c, 0x113b8, 0x113c2, + 0x113c8, 0x113d0, 0x113de, 0x113e6, 0x113ec, 0x11408, 0x11410, + 0x1141e, 0x11420, 0x1143c, 0x11440, 0x11478, 0x114f0, 0x115e0, + 0x1160c, 0x11618, 0x11630, 0x1163e, 0x11660, 0x1167c, 0x116c0, + 0x116f8, 0x1171c, 0x11738, 0x11770, 0x1177e, 0x11782, 0x11784, + 0x11788, 0x11790, 0x1179e, 0x117a0, 0x117bc, 0x117c6, 0x117cc, + 0x117d8, 0x117ee, 0x1182e, 0x11834, 0x1184e, 0x1185c, 0x11862, + 0x11864, 0x11868, 0x11876, 0x1188e, 0x1189c, 0x118b8, 0x118c2, + 0x118c8, 0x118d0, 0x118de, 0x118e6, 0x118ec, 0x118fa, 0x1190e, + 0x1191c, 0x11938, 0x11970, 0x1197e, 0x11982, 0x11984, 0x11990, + 0x1199e, 0x119a0, 0x119bc, 0x119c6, 0x119cc, 0x119d8, 0x119ee, + 0x119f2, 0x119f4, 0x11a0e, 0x11a1c, 0x11a38, 0x11a70, 0x11a7e, + 0x11ae0, 0x11afc, 0x11b08, 0x11b10, 0x11b1e, 0x11b20, 0x11b3c, + 0x11b40, 0x11b78, 0x11b8c, 0x11b98, 0x11bb0, 0x11bbe, 0x11bce, + 0x11bdc, 0x11be2, 0x11be4, 0x11be8, 0x11bf6, 0x11c16, 0x11c26, + 0x11c2c, 0x11c46, 0x11c4c, 0x11c58, 0x11c6e, 0x11c86, 0x11c98, + 0x11cb0, 0x11cbe, 0x11cce, 0x11cdc, 0x11ce2, 0x11ce4, 0x11ce8, + 0x11cf6, 0x11d06, 0x11d0c, 0x11d18, 0x11d30, 0x11d3e, 0x11d60, + 0x11d7c, 0x11d8e, 0x11d9c, 0x11db8, 0x11dc4, 0x11dc8, 0x11dd0, + 0x11dde, 0x11de6, 0x11dec, 0x11dfa, 0x11e0a, 0x11e12, 0x11e14, + 0x11e22, 0x11e24, 0x11e28, 0x11e36, 0x11e42, 0x11e44, 0x11e50, + 0x11e5e, 0x11e66, 0x11e6c, 0x11e82, 0x11e84, 0x11e88, 0x11e90, + 0x11e9e, 0x11ea0, 0x11ebc, 0x11ec6, 0x11ecc, 0x11ed8, 0x11eee, + 0x11f1a, 0x11f2e, 0x11f32, 0x11f34, 0x11f4e, 0x11f5c, 0x11f62, + 0x11f64, 0x11f68, 0x11f76, 0x12048, 0x1205e, 0x12082, 0x12084, + 0x12090, 0x1209e, 0x120a0, 0x120bc, 0x120d8, 0x120f2, 0x120f4, + 0x12108, 0x1211e, 0x12120, 0x1213c, 0x12140, 0x12178, 0x12186, + 0x12198, 0x121b0, 0x121be, 0x121e2, 0x121e4, 0x121e8, 0x121f6, + 0x12204, 0x12210, 0x1221e, 0x12220, 0x12278, 0x122f0, 0x12306, + 0x1230c, 0x12330, 0x1233e, 0x12360, 0x1237c, 0x1238e, 0x1239c, + 0x123b8, 0x123c2, 0x123c8, 0x123d0, 0x123e6, 0x123ec, 0x1241e, + 0x12420, 0x1243c, 0x124f0, 0x125e0, 0x12618, 0x1263e, 0x12660, + 0x1267c, 0x126c0, 0x126f8, 0x12738, 0x12770, 0x1277e, 0x12782, + 0x12784, 0x12790, 0x1279e, 0x127a0, 0x127bc, 0x127c6, 0x127cc, + 0x127d8, 0x127ee, 0x12820, 0x1283c, 0x12840, 0x12878, 0x128f0, + 0x129e0, 0x12bc0, 0x12c18, 0x12c30, 0x12c3e, 0x12c60, 0x12c7c, + 0x12cc0, 0x12cf8, 0x12df0, 0x12e1c, 0x12e38, 0x12e70, 0x12e7e, + 0x12ee0, 0x12efc, 0x12f04, 0x12f08, 0x12f10, 0x12f20, 0x12f3c, + 0x12f40, 0x12f78, 0x12f86, 0x12f8c, 0x12f98, 0x12fb0, 0x12fbe, + 0x12fce, 0x12fdc, 0x1302e, 0x1304e, 0x1305c, 0x13062, 0x13068, + 0x1308e, 0x1309c, 0x130b8, 0x130c2, 0x130c8, 0x130d0, 0x130de, + 0x130ec, 0x130fa, 0x1310e, 0x13138, 0x13170, 0x1317e, 0x13182, + 0x13184, 0x13190, 0x1319e, 0x131a0, 0x131bc, 0x131c6, 0x131cc, + 0x131d8, 0x131f2, 0x131f4, 0x1320e, 0x1321c, 0x13270, 0x1327e, + 0x132e0, 0x132fc, 0x13308, 0x1331e, 0x13320, 0x1333c, 0x13340, + 0x13378, 0x13386, 0x13398, 0x133b0, 0x133be, 0x133ce, 0x133dc, + 0x133e2, 0x133e4, 0x133e8, 0x133f6, 0x1340e, 0x1341c, 0x13438, + 0x13470, 0x1347e, 0x134e0, 0x134fc, 0x135c0, 0x135f8, 0x13608, + 0x13610, 0x1361e, 0x13620, 0x1363c, 0x13640, 0x13678, 0x136f0, + 0x1370c, 0x13718, 0x13730, 0x1373e, 0x13760, 0x1377c, 0x1379c, + 0x137b8, 0x137c2, 0x137c4, 0x137c8, 0x137d0, 0x137de, 0x137e6, + 0x137ec, 0x13816, 0x13826, 0x1382c, 0x13846, 0x1384c, 0x13858, + 0x1386e, 0x13874, 0x13886, 0x13898, 0x138b0, 0x138be, 0x138ce, + 0x138dc, 0x138e2, 0x138e4, 0x138e8, 0x13906, 0x1390c, 0x13930, + 0x1393e, 0x13960, 0x1397c, 0x1398e, 0x1399c, 0x139b8, 0x139c8, + 0x139d0, 0x139de, 0x139e6, 0x139ec, 0x139fa, 0x13a06, 0x13a0c, + 0x13a18, 0x13a30, 0x13a3e, 0x13a60, 0x13a7c, 0x13ac0, 0x13af8, + 0x13b0e, 0x13b1c, 0x13b38, 0x13b70, 0x13b7e, 0x13b88, 0x13b90, + 0x13b9e, 0x13ba0, 0x13bbc, 0x13bcc, 0x13bd8, 0x13bee, 0x13bf2, + 0x13bf4, 0x13c12, 0x13c14, 0x13c22, 0x13c24, 0x13c28, 0x13c36, + 0x13c42, 0x13c48, 0x13c50, 0x13c5e, 0x13c66, 0x13c6c, 0x13c82, + 0x13c84, 0x13c90, 0x13c9e, 0x13ca0, 0x13cbc, 0x13cc6, 0x13ccc, + 0x13cd8, 0x13cee, 0x13d02, 0x13d04, 0x13d08, 0x13d10, 0x13d1e, + 0x13d20, 0x13d3c, 0x13d40, 0x13d78, 0x13d86, 0x13d8c, 0x13d98, + 0x13db0, 0x13dbe, 0x13dce, 0x13ddc, 0x13de4, 0x13de8, 0x13df6, + 0x13e1a, 0x13e2e, 0x13e32, 0x13e34, 0x13e4e, 0x13e5c, 0x13e62, + 0x13e64, 0x13e68, 0x13e76, 0x13e8e, 0x13e9c, 0x13eb8, 0x13ec2, + 0x13ec4, 0x13ec8, 0x13ed0, 0x13ede, 0x13ee6, 0x13eec, 0x13f26, + 0x13f2c, 0x13f3a, 0x13f46, 0x13f4c, 0x13f58, 0x13f6e, 0x13f72, + 0x13f74, 0x14082, 0x1409e, 0x140a0, 0x140bc, 0x14104, 0x14108, + 0x14110, 0x1411e, 0x14120, 0x1413c, 0x14140, 0x14178, 0x1418c, + 0x14198, 0x141b0, 0x141be, 0x141e2, 0x141e4, 0x141e8, 0x14208, + 0x14210, 0x1421e, 0x14220, 0x1423c, 0x14240, 0x14278, 0x142f0, + 0x14306, 0x1430c, 0x14318, 0x14330, 0x1433e, 0x14360, 0x1437c, + 0x1438e, 0x143c2, 0x143c4, 0x143c8, 0x143d0, 0x143e6, 0x143ec, + 0x14408, 0x14410, 0x1441e, 0x14420, 0x1443c, 0x14440, 0x14478, + 0x144f0, 0x145e0, 0x1460c, 0x14618, 0x14630, 0x1463e, 0x14660, + 0x1467c, 0x146c0, 0x146f8, 0x1471c, 0x14738, 0x14770, 0x1477e, + 0x14782, 0x14784, 0x14788, 0x14790, 0x147a0, 0x147bc, 0x147c6, + 0x147cc, 0x147d8, 0x147ee, 0x14810, 0x14820, 0x1483c, 0x14840, + 0x14878, 0x148f0, 0x149e0, 0x14bc0, 0x14c30, 0x14c3e, 0x14c60, + 0x14c7c, 0x14cc0, 0x14cf8, 0x14df0, 0x14e38, 0x14e70, 0x14e7e, + 0x14ee0, 0x14efc, 0x14f04, 0x14f08, 0x14f10, 0x14f1e, 0x14f20, + 0x14f3c, 0x14f40, 0x14f78, 0x14f86, 0x14f8c, 0x14f98, 0x14fb0, + 0x14fce, 0x14fdc, 0x15020, 0x15040, 0x15078, 0x150f0, 0x151e0, + 0x153c0, 0x15860, 0x1587c, 0x158c0, 0x158f8, 0x159f0, 0x15be0, + 0x15c70, 0x15c7e, 0x15ce0, 0x15cfc, 0x15dc0, 0x15df8, 0x15e08, + 0x15e10, 0x15e20, 0x15e40, 0x15e78, 0x15ef0, 0x15f0c, 0x15f18, + 0x15f30, 0x15f60, 0x15f7c, 0x15f8e, 0x15f9c, 0x15fb8, 0x1604e, + 0x1605c, 0x1608e, 0x1609c, 0x160b8, 0x160c2, 0x160c4, 0x160c8, + 0x160de, 0x1610e, 0x1611c, 0x16138, 0x16170, 0x1617e, 0x16184, + 0x16188, 0x16190, 0x1619e, 0x161a0, 0x161bc, 0x161c6, 0x161cc, + 0x161d8, 0x161f2, 0x161f4, 0x1620e, 0x1621c, 0x16238, 0x16270, + 0x1627e, 0x162e0, 0x162fc, 0x16304, 0x16308, 0x16310, 0x1631e, + 0x16320, 0x1633c, 0x16340, 0x16378, 0x16386, 0x1638c, 0x16398, + 0x163b0, 0x163be, 0x163ce, 0x163dc, 0x163e2, 0x163e4, 0x163e8, + 0x163f6, 0x1640e, 0x1641c, 0x16438, 0x16470, 0x1647e, 0x164e0, + 0x164fc, 0x165c0, 0x165f8, 0x16610, 0x1661e, 0x16620, 0x1663c, + 0x16640, 0x16678, 0x166f0, 0x16718, 0x16730, 0x1673e, 0x16760, + 0x1677c, 0x1678e, 0x1679c, 0x167b8, 0x167c2, 0x167c4, 0x167c8, + 0x167d0, 0x167de, 0x167e6, 0x167ec, 0x1681c, 0x16838, 0x16870, + 0x168e0, 0x168fc, 0x169c0, 0x169f8, 0x16bf0, 0x16c10, 0x16c1e, + 0x16c20, 0x16c3c, 0x16c40, 0x16c78, 0x16cf0, 0x16de0, 0x16e18, + 0x16e30, 0x16e3e, 0x16e60, 0x16e7c, 0x16ec0, 0x16ef8, 0x16f1c, + 0x16f38, 0x16f70, 0x16f7e, 0x16f84, 0x16f88, 0x16f90, 0x16f9e, + 0x16fa0, 0x16fbc, 0x16fc6, 0x16fcc, 0x16fd8, 0x17026, 0x1702c, + 0x17046, 0x1704c, 0x17058, 0x1706e, 0x17086, 0x1708c, 0x17098, + 0x170b0, 0x170be, 0x170ce, 0x170dc, 0x170e8, 0x17106, 0x1710c, + 0x17118, 0x17130, 0x1713e, 0x17160, 0x1717c, 0x1718e, 0x1719c, + 0x171b8, 0x171c2, 0x171c4, 0x171c8, 0x171d0, 0x171de, 0x171e6, + 0x171ec, 0x171fa, 0x17206, 0x1720c, 0x17218, 0x17230, 0x1723e, + 0x17260, 0x1727c, 0x172c0, 0x172f8, 0x1730e, 0x1731c, 0x17338, + 0x17370, 0x1737e, 0x17388, 0x17390, 0x1739e, 0x173a0, 0x173bc, + 0x173cc, 0x173d8, 0x173ee, 0x173f2, 0x173f4, 0x1740c, 0x17418, + 0x17430, 0x1743e, 0x17460, 0x1747c, 0x174c0, 0x174f8, 0x175f0, + 0x1760e, 0x1761c, 0x17638, 0x17670, 0x1767e, 0x176e0, 0x176fc, + 0x17708, 0x17710, 0x1771e, 0x17720, 0x1773c, 0x17740, 0x17778, + 0x17798, 0x177b0, 0x177be, 0x177dc, 0x177e2, 0x177e4, 0x177e8, + 0x17822, 0x17824, 0x17828, 0x17836, 0x17842, 0x17844, 0x17848, + 0x17850, 0x1785e, 0x17866, 0x1786c, 0x17882, 0x17884, 0x17888, + 0x17890, 0x1789e, 0x178a0, 0x178bc, 0x178c6, 0x178cc, 0x178d8, + 0x178ee, 0x178f2, 0x178f4, 0x17902, 0x17904, 0x17908, 0x17910, + 0x1791e, 0x17920, 0x1793c, 0x17940, 0x17978, 0x17986, 0x1798c, + 0x17998, 0x179b0, 0x179be, 0x179ce, 0x179dc, 0x179e2, 0x179e4, + 0x179e8, 0x179f6, 0x17a04, 0x17a08, 0x17a10, 0x17a1e, 0x17a20, + 0x17a3c, 0x17a40, 0x17a78, 0x17af0, 0x17b06, 0x17b0c, 0x17b18, + 0x17b30, 0x17b3e, 0x17b60, 0x17b7c, 0x17b8e, 0x17b9c, 0x17bb8, + 0x17bc4, 0x17bc8, 0x17bd0, 0x17bde, 0x17be6, 0x17bec, 0x17c2e, + 0x17c32, 0x17c34, 0x17c4e, 0x17c5c, 0x17c62, 0x17c64, 0x17c68, + 0x17c76, 0x17c8e, 0x17c9c, 0x17cb8, 0x17cc2, 0x17cc4, 0x17cc8, + 0x17cd0, 0x17cde, 0x17ce6, 0x17cec, 0x17d0e, 0x17d1c, 0x17d38, + 0x17d70, 0x17d82, 0x17d84, 0x17d88, 0x17d90, 0x17d9e, 0x17da0, + 0x17dbc, 0x17dc6, 0x17dcc, 0x17dd8, 0x17dee, 0x17e26, 0x17e2c, + 0x17e3a, 0x17e46, 0x17e4c, 0x17e58, 0x17e6e, 0x17e72, 0x17e74, + 0x17e86, 0x17e8c, 0x17e98, 0x17eb0, 0x17ece, 0x17edc, 0x17ee2, + 0x17ee4, 0x17ee8, 0x17ef6, 0x1813a, 0x18172, 0x18174, 0x18216, + 0x18226, 0x1823a, 0x1824c, 0x18258, 0x1826e, 0x18272, 0x18274, + 0x18298, 0x182be, 0x182e2, 0x182e4, 0x182e8, 0x182f6, 0x1835e, + 0x1837a, 0x183ae, 0x183d6, 0x18416, 0x18426, 0x1842c, 0x1843a, + 0x18446, 0x18458, 0x1846e, 0x18472, 0x18474, 0x18486, 0x184b0, + 0x184be, 0x184ce, 0x184dc, 0x184e2, 0x184e4, 0x184e8, 0x184f6, + 0x18506, 0x1850c, 0x18518, 0x18530, 0x1853e, 0x18560, 0x1857c, + 0x1858e, 0x1859c, 0x185b8, 0x185c2, 0x185c4, 0x185c8, 0x185d0, + 0x185de, 0x185e6, 0x185ec, 0x185fa, 0x18612, 0x18614, 0x18622, + 0x18628, 0x18636, 0x18642, 0x18650, 0x1865e, 0x1867a, 0x18682, + 0x18684, 0x18688, 0x18690, 0x1869e, 0x186a0, 0x186bc, 0x186c6, + 0x186cc, 0x186d8, 0x186ee, 0x186f2, 0x186f4, 0x1872e, 0x1874e, + 0x1875c, 0x18796, 0x187a6, 0x187ac, 0x187d2, 0x187d4, 0x18826, + 0x1882c, 0x1883a, 0x18846, 0x1884c, 0x18858, 0x1886e, 0x18872, + 0x18874, 0x18886, 0x18898, 0x188b0, 0x188be, 0x188ce, 0x188dc, + 0x188e2, 0x188e4, 0x188e8, 0x188f6, 0x1890c, 0x18930, 0x1893e, + 0x18960, 0x1897c, 0x1898e, 0x189b8, 0x189c2, 0x189c8, 0x189d0, + 0x189de, 0x189e6, 0x189ec, 0x189fa, 0x18a18, 0x18a30, 0x18a3e, + 0x18a60, 0x18a7c, 0x18ac0, 0x18af8, 0x18b1c, 0x18b38, 0x18b70, + 0x18b7e, 0x18b82, 0x18b84, 0x18b88, 0x18b90, 0x18b9e, 0x18ba0, + 0x18bbc, 0x18bc6, 0x18bcc, 0x18bd8, 0x18bee, 0x18bf2, 0x18bf4, + 0x18c22, 0x18c24, 0x18c28, 0x18c36, 0x18c42, 0x18c48, 0x18c50, + 0x18c5e, 0x18c66, 0x18c7a, 0x18c82, 0x18c84, 0x18c90, 0x18c9e, + 0x18ca0, 0x18cbc, 0x18ccc, 0x18cf2, 0x18cf4, 0x18d04, 0x18d08, + 0x18d10, 0x18d1e, 0x18d20, 0x18d3c, 0x18d40, 0x18d78, 0x18d86, + 0x18d98, 0x18dce, 0x18de2, 0x18de4, 0x18de8, 0x18e2e, 0x18e32, + 0x18e34, 0x18e4e, 0x18e5c, 0x18e62, 0x18e64, 0x18e68, 0x18e8e, + 0x18e9c, 0x18eb8, 0x18ec2, 0x18ec4, 0x18ec8, 0x18ed0, 0x18efa, + 0x18f16, 0x18f26, 0x18f2c, 0x18f46, 0x18f4c, 0x18f58, 0x18f6e, + 0x18f8a, 0x18f92, 0x18f94, 0x18fa2, 0x18fa4, 0x18fa8, 0x18fb6, + 0x1902c, 0x1903a, 0x19046, 0x1904c, 0x19058, 0x19072, 0x19074, + 0x19086, 0x19098, 0x190b0, 0x190be, 0x190ce, 0x190dc, 0x190e2, + 0x190e8, 0x190f6, 0x19106, 0x1910c, 0x19130, 0x1913e, 0x19160, + 0x1917c, 0x1918e, 0x1919c, 0x191b8, 0x191c2, 0x191c8, 0x191d0, + 0x191de, 0x191e6, 0x191ec, 0x191fa, 0x19218, 0x1923e, 0x19260, + 0x1927c, 0x192c0, 0x192f8, 0x19338, 0x19370, 0x1937e, 0x19382, + 0x19384, 0x19390, 0x1939e, 0x193a0, 0x193bc, 0x193c6, 0x193cc, + 0x193d8, 0x193ee, 0x193f2, 0x193f4, 0x19430, 0x1943e, 0x19460, + 0x1947c, 0x194c0, 0x194f8, 0x195f0, 0x19638, 0x19670, 0x1967e, + 0x196e0, 0x196fc, 0x19702, 0x19704, 0x19708, 0x19710, 0x19720, + 0x1973c, 0x19740, 0x19778, 0x19786, 0x1978c, 0x19798, 0x197b0, + 0x197be, 0x197ce, 0x197dc, 0x197e2, 0x197e4, 0x197e8, 0x19822, + 0x19824, 0x19842, 0x19848, 0x19850, 0x1985e, 0x19866, 0x1987a, + 0x19882, 0x19884, 0x19890, 0x1989e, 0x198a0, 0x198bc, 0x198cc, + 0x198f2, 0x198f4, 0x19902, 0x19908, 0x1991e, 0x19920, 0x1993c, + 0x19940, 0x19978, 0x19986, 0x19998, 0x199ce, 0x199e2, 0x199e4, + 0x199e8, 0x19a08, 0x19a10, 0x19a1e, 0x19a20, 0x19a3c, 0x19a40, + 0x19a78, 0x19af0, 0x19b18, 0x19b3e, 0x19b60, 0x19b9c, 0x19bc2, + 0x19bc4, 0x19bc8, 0x19bd0, 0x19be6, 0x19c2e, 0x19c34, 0x19c4e, + 0x19c5c, 0x19c62, 0x19c64, 0x19c68, 0x19c8e, 0x19c9c, 0x19cb8, + 0x19cc2, 0x19cc8, 0x19cd0, 0x19ce6, 0x19cfa, 0x19d0e, 0x19d1c, + 0x19d38, 0x19d70, 0x19d7e, 0x19d82, 0x19d84, 0x19d88, 0x19d90, + 0x19da0, 0x19dcc, 0x19df2, 0x19df4, 0x19e16, 0x19e26, 0x19e2c, + 0x19e46, 0x19e4c, 0x19e58, 0x19e74, 0x19e86, 0x19e8c, 0x19e98, + 0x19eb0, 0x19ebe, 0x19ece, 0x19ee2, 0x19ee4, 0x19ee8, 0x19f0a, + 0x19f12, 0x19f14, 0x19f22, 0x19f24, 0x19f28, 0x19f42, 0x19f44, + 0x19f48, 0x19f50, 0x19f5e, 0x19f6c, 0x19f9a, 0x19fae, 0x19fb2, + 0x19fb4, 0x1a046, 0x1a04c, 0x1a072, 0x1a074, 0x1a086, 0x1a08c, + 0x1a098, 0x1a0b0, 0x1a0be, 0x1a0e2, 0x1a0e4, 0x1a0e8, 0x1a0f6, + 0x1a106, 0x1a10c, 0x1a118, 0x1a130, 0x1a13e, 0x1a160, 0x1a17c, + 0x1a18e, 0x1a19c, 0x1a1b8, 0x1a1c2, 0x1a1c4, 0x1a1c8, 0x1a1d0, + 0x1a1de, 0x1a1e6, 0x1a1ec, 0x1a218, 0x1a230, 0x1a23e, 0x1a260, + 0x1a27c, 0x1a2c0, 0x1a2f8, 0x1a31c, 0x1a338, 0x1a370, 0x1a37e, + 0x1a382, 0x1a384, 0x1a388, 0x1a390, 0x1a39e, 0x1a3a0, 0x1a3bc, + 0x1a3c6, 0x1a3cc, 0x1a3d8, 0x1a3ee, 0x1a3f2, 0x1a3f4, 0x1a418, + 0x1a430, 0x1a43e, 0x1a460, 0x1a47c, 0x1a4c0, 0x1a4f8, 0x1a5f0, + 0x1a61c, 0x1a638, 0x1a670, 0x1a67e, 0x1a6e0, 0x1a6fc, 0x1a702, + 0x1a704, 0x1a708, 0x1a710, 0x1a71e, 0x1a720, 0x1a73c, 0x1a740, + 0x1a778, 0x1a786, 0x1a78c, 0x1a798, 0x1a7b0, 0x1a7be, 0x1a7ce, + 0x1a7dc, 0x1a7e2, 0x1a7e4, 0x1a7e8, 0x1a830, 0x1a860, 0x1a87c, + 0x1a8c0, 0x1a8f8, 0x1a9f0, 0x1abe0, 0x1ac70, 0x1ac7e, 0x1ace0, + 0x1acfc, 0x1adc0, 0x1adf8, 0x1ae04, 0x1ae08, 0x1ae10, 0x1ae20, + 0x1ae3c, 0x1ae40, 0x1ae78, 0x1aef0, 0x1af06, 0x1af0c, 0x1af18, + 0x1af30, 0x1af3e, 0x1af60, 0x1af7c, 0x1af8e, 0x1af9c, 0x1afb8, + 0x1afc4, 0x1afc8, 0x1afd0, 0x1afde, 0x1b042, 0x1b05e, 0x1b07a, + 0x1b082, 0x1b084, 0x1b088, 0x1b090, 0x1b09e, 0x1b0a0, 0x1b0bc, + 0x1b0cc, 0x1b0f2, 0x1b0f4, 0x1b102, 0x1b104, 0x1b108, 0x1b110, + 0x1b11e, 0x1b120, 0x1b13c, 0x1b140, 0x1b178, 0x1b186, 0x1b198, + 0x1b1ce, 0x1b1e2, 0x1b1e4, 0x1b1e8, 0x1b204, 0x1b208, 0x1b210, + 0x1b21e, 0x1b220, 0x1b23c, 0x1b240, 0x1b278, 0x1b2f0, 0x1b30c, + 0x1b33e, 0x1b360, 0x1b39c, 0x1b3c2, 0x1b3c4, 0x1b3c8, 0x1b3d0, + 0x1b3e6, 0x1b410, 0x1b41e, 0x1b420, 0x1b43c, 0x1b440, 0x1b478, + 0x1b4f0, 0x1b5e0, 0x1b618, 0x1b660, 0x1b67c, 0x1b6c0, 0x1b738, + 0x1b782, 0x1b784, 0x1b788, 0x1b790, 0x1b79e, 0x1b7a0, 0x1b7cc, + 0x1b82e, 0x1b84e, 0x1b85c, 0x1b88e, 0x1b89c, 0x1b8b8, 0x1b8c2, + 0x1b8c4, 0x1b8c8, 0x1b8d0, 0x1b8e6, 0x1b8fa, 0x1b90e, 0x1b91c, + 0x1b938, 0x1b970, 0x1b97e, 0x1b982, 0x1b984, 0x1b988, 0x1b990, + 0x1b99e, 0x1b9a0, 0x1b9cc, 0x1b9f2, 0x1b9f4, 0x1ba0e, 0x1ba1c, + 0x1ba38, 0x1ba70, 0x1ba7e, 0x1bae0, 0x1bafc, 0x1bb08, 0x1bb10, + 0x1bb20, 0x1bb3c, 0x1bb40, 0x1bb98, 0x1bbce, 0x1bbe2, 0x1bbe4, + 0x1bbe8, 0x1bc16, 0x1bc26, 0x1bc2c, 0x1bc46, 0x1bc4c, 0x1bc58, + 0x1bc72, 0x1bc74, 0x1bc86, 0x1bc8c, 0x1bc98, 0x1bcb0, 0x1bcbe, + 0x1bcce, 0x1bce2, 0x1bce4, 0x1bce8, 0x1bd06, 0x1bd0c, 0x1bd18, + 0x1bd30, 0x1bd3e, 0x1bd60, 0x1bd7c, 0x1bd9c, 0x1bdc2, 0x1bdc4, + 0x1bdc8, 0x1bdd0, 0x1bde6, 0x1bdfa, 0x1be12, 0x1be14, 0x1be22, + 0x1be24, 0x1be28, 0x1be42, 0x1be44, 0x1be48, 0x1be50, 0x1be5e, + 0x1be66, 0x1be82, 0x1be84, 0x1be88, 0x1be90, 0x1be9e, 0x1bea0, + 0x1bebc, 0x1becc, 0x1bef4, 0x1bf1a, 0x1bf2e, 0x1bf32, 0x1bf34, + 0x1bf4e, 0x1bf5c, 0x1bf62, 0x1bf64, 0x1bf68, 0x1c09a, 0x1c0b2, + 0x1c0b4, 0x1c11a, 0x1c132, 0x1c134, 0x1c162, 0x1c164, 0x1c168, + 0x1c176, 0x1c1ba, 0x1c21a, 0x1c232, 0x1c234, 0x1c24e, 0x1c25c, + 0x1c262, 0x1c264, 0x1c268, 0x1c276, 0x1c28e, 0x1c2c2, 0x1c2c4, + 0x1c2c8, 0x1c2d0, 0x1c2de, 0x1c2e6, 0x1c2ec, 0x1c2fa, 0x1c316, + 0x1c326, 0x1c33a, 0x1c346, 0x1c34c, 0x1c372, 0x1c374, 0x1c41a, + 0x1c42e, 0x1c432, 0x1c434, 0x1c44e, 0x1c45c, 0x1c462, 0x1c464, + 0x1c468, 0x1c476, 0x1c48e, 0x1c49c, 0x1c4b8, 0x1c4c2, 0x1c4c8, + 0x1c4d0, 0x1c4de, 0x1c4e6, 0x1c4ec, 0x1c4fa, 0x1c51c, 0x1c538, + 0x1c570, 0x1c57e, 0x1c582, 0x1c584, 0x1c588, 0x1c590, 0x1c59e, + 0x1c5a0, 0x1c5bc, 0x1c5c6, 0x1c5cc, 0x1c5d8, 0x1c5ee, 0x1c5f2, + 0x1c5f4, 0x1c616, 0x1c626, 0x1c62c, 0x1c63a, 0x1c646, 0x1c64c, + 0x1c658, 0x1c66e, 0x1c672, 0x1c674, 0x1c686, 0x1c68c, 0x1c698, + 0x1c6b0, 0x1c6be, 0x1c6ce, 0x1c6dc, 0x1c6e2, 0x1c6e4, 0x1c6e8, + 0x1c712, 0x1c714, 0x1c722, 0x1c728, 0x1c736, 0x1c742, 0x1c744, + 0x1c748, 0x1c750, 0x1c75e, 0x1c766, 0x1c76c, 0x1c77a, 0x1c7ae, + 0x1c7d6, 0x1c7ea, 0x1c81a, 0x1c82e, 0x1c832, 0x1c834, 0x1c84e, + 0x1c85c, 0x1c862, 0x1c864, 0x1c868, 0x1c876, 0x1c88e, 0x1c89c, + 0x1c8b8, 0x1c8c2, 0x1c8c8, 0x1c8d0, 0x1c8de, 0x1c8e6, 0x1c8ec, + 0x1c8fa, 0x1c90e, 0x1c938, 0x1c970, 0x1c97e, 0x1c982, 0x1c984, + 0x1c990, 0x1c99e, 0x1c9a0, 0x1c9bc, 0x1c9c6, 0x1c9cc, 0x1c9d8, + 0x1c9ee, 0x1c9f2, 0x1c9f4, 0x1ca38, 0x1ca70, 0x1ca7e, 0x1cae0, + 0x1cafc, 0x1cb02, 0x1cb04, 0x1cb08, 0x1cb10, 0x1cb20, 0x1cb3c, + 0x1cb40, 0x1cb78, 0x1cb86, 0x1cb8c, 0x1cb98, 0x1cbb0, 0x1cbbe, + 0x1cbce, 0x1cbdc, 0x1cbe2, 0x1cbe4, 0x1cbe8, 0x1cbf6, 0x1cc16, + 0x1cc26, 0x1cc2c, 0x1cc3a, 0x1cc46, 0x1cc58, 0x1cc72, 0x1cc74, + 0x1cc86, 0x1ccb0, 0x1ccbe, 0x1ccce, 0x1cce2, 0x1cce4, 0x1cce8, + 0x1cd06, 0x1cd0c, 0x1cd18, 0x1cd30, 0x1cd3e, 0x1cd60, 0x1cd7c, + 0x1cd9c, 0x1cdc2, 0x1cdc4, 0x1cdc8, 0x1cdd0, 0x1cdde, 0x1cde6, + 0x1cdfa, 0x1ce22, 0x1ce28, 0x1ce42, 0x1ce50, 0x1ce5e, 0x1ce66, + 0x1ce7a, 0x1ce82, 0x1ce84, 0x1ce88, 0x1ce90, 0x1ce9e, 0x1cea0, + 0x1cebc, 0x1cecc, 0x1cef2, 0x1cef4, 0x1cf2e, 0x1cf32, 0x1cf34, + 0x1cf4e, 0x1cf5c, 0x1cf62, 0x1cf64, 0x1cf68, 0x1cf96, 0x1cfa6, + 0x1cfac, 0x1cfca, 0x1cfd2, 0x1cfd4, 0x1d02e, 0x1d032, 0x1d034, + 0x1d04e, 0x1d05c, 0x1d062, 0x1d064, 0x1d068, 0x1d076, 0x1d08e, + 0x1d09c, 0x1d0b8, 0x1d0c2, 0x1d0c4, 0x1d0c8, 0x1d0d0, 0x1d0de, + 0x1d0e6, 0x1d0ec, 0x1d0fa, 0x1d11c, 0x1d138, 0x1d170, 0x1d17e, + 0x1d182, 0x1d184, 0x1d188, 0x1d190, 0x1d19e, 0x1d1a0, 0x1d1bc, + 0x1d1c6, 0x1d1cc, 0x1d1d8, 0x1d1ee, 0x1d1f2, 0x1d1f4, 0x1d21c, + 0x1d238, 0x1d270, 0x1d27e, 0x1d2e0, 0x1d2fc, 0x1d302, 0x1d304, + 0x1d308, 0x1d310, 0x1d31e, 0x1d320, 0x1d33c, 0x1d340, 0x1d378, + 0x1d386, 0x1d38c, 0x1d398, 0x1d3b0, 0x1d3be, 0x1d3ce, 0x1d3dc, + 0x1d3e2, 0x1d3e4, 0x1d3e8, 0x1d3f6, 0x1d470, 0x1d47e, 0x1d4e0, + 0x1d4fc, 0x1d5c0, 0x1d5f8, 0x1d604, 0x1d608, 0x1d610, 0x1d620, + 0x1d640, 0x1d678, 0x1d6f0, 0x1d706, 0x1d70c, 0x1d718, 0x1d730, + 0x1d73e, 0x1d760, 0x1d77c, 0x1d78e, 0x1d79c, 0x1d7b8, 0x1d7c2, + 0x1d7c4, 0x1d7c8, 0x1d7d0, 0x1d7de, 0x1d7e6, 0x1d7ec, 0x1d826, + 0x1d82c, 0x1d83a, 0x1d846, 0x1d84c, 0x1d858, 0x1d872, 0x1d874, + 0x1d886, 0x1d88c, 0x1d898, 0x1d8b0, 0x1d8be, 0x1d8ce, 0x1d8e2, + 0x1d8e4, 0x1d8e8, 0x1d8f6, 0x1d90c, 0x1d918, 0x1d930, 0x1d93e, + 0x1d960, 0x1d97c, 0x1d99c, 0x1d9c2, 0x1d9c4, 0x1d9c8, 0x1d9d0, + 0x1d9e6, 0x1d9fa, 0x1da0c, 0x1da18, 0x1da30, 0x1da3e, 0x1da60, + 0x1da7c, 0x1dac0, 0x1daf8, 0x1db38, 0x1db82, 0x1db84, 0x1db88, + 0x1db90, 0x1db9e, 0x1dba0, 0x1dbcc, 0x1dbf2, 0x1dbf4, 0x1dc22, + 0x1dc42, 0x1dc44, 0x1dc48, 0x1dc50, 0x1dc5e, 0x1dc66, 0x1dc7a, + 0x1dc82, 0x1dc84, 0x1dc88, 0x1dc90, 0x1dc9e, 0x1dca0, 0x1dcbc, + 0x1dccc, 0x1dcf2, 0x1dcf4, 0x1dd04, 0x1dd08, 0x1dd10, 0x1dd1e, + 0x1dd20, 0x1dd3c, 0x1dd40, 0x1dd78, 0x1dd86, 0x1dd98, 0x1ddce, + 0x1dde2, 0x1dde4, 0x1dde8, 0x1de2e, 0x1de32, 0x1de34, 0x1de4e, + 0x1de5c, 0x1de62, 0x1de64, 0x1de68, 0x1de8e, 0x1de9c, 0x1deb8, + 0x1dec2, 0x1dec4, 0x1dec8, 0x1ded0, 0x1dee6, 0x1defa, 0x1df16, + 0x1df26, 0x1df2c, 0x1df46, 0x1df4c, 0x1df58, 0x1df72, 0x1df74, + 0x1df8a, 0x1df92, 0x1df94, 0x1dfa2, 0x1dfa4, 0x1dfa8, 0x1e08a, + 0x1e092, 0x1e094, 0x1e0a2, 0x1e0a4, 0x1e0a8, 0x1e0b6, 0x1e0da, + 0x1e10a, 0x1e112, 0x1e114, 0x1e122, 0x1e124, 0x1e128, 0x1e136, + 0x1e142, 0x1e144, 0x1e148, 0x1e150, 0x1e166, 0x1e16c, 0x1e17a, + 0x1e19a, 0x1e1b2, 0x1e1b4, 0x1e20a, 0x1e212, 0x1e214, 0x1e222, + 0x1e224, 0x1e228, 0x1e236, 0x1e242, 0x1e248, 0x1e250, 0x1e25e, + 0x1e266, 0x1e26c, 0x1e27a, 0x1e282, 0x1e284, 0x1e288, 0x1e290, + 0x1e2a0, 0x1e2bc, 0x1e2c6, 0x1e2cc, 0x1e2d8, 0x1e2ee, 0x1e2f2, + 0x1e2f4, 0x1e31a, 0x1e332, 0x1e334, 0x1e35c, 0x1e362, 0x1e364, + 0x1e368, 0x1e3ba, 0x1e40a, 0x1e412, 0x1e414, 0x1e422, 0x1e428, + 0x1e436, 0x1e442, 0x1e448, 0x1e450, 0x1e45e, 0x1e466, 0x1e46c, + 0x1e47a, 0x1e482, 0x1e484, 0x1e490, 0x1e49e, 0x1e4a0, 0x1e4bc, + 0x1e4c6, 0x1e4cc, 0x1e4d8, 0x1e4ee, 0x1e4f2, 0x1e4f4, 0x1e502, + 0x1e504, 0x1e508, 0x1e510, 0x1e51e, 0x1e520, 0x1e53c, 0x1e540, + 0x1e578, 0x1e586, 0x1e58c, 0x1e598, 0x1e5b0, 0x1e5be, 0x1e5ce, + 0x1e5dc, 0x1e5e2, 0x1e5e4, 0x1e5e8, 0x1e5f6, 0x1e61a, 0x1e62e, + 0x1e632, 0x1e634, 0x1e64e, 0x1e65c, 0x1e662, 0x1e668, 0x1e68e, + 0x1e69c, 0x1e6b8, 0x1e6c2, 0x1e6c4, 0x1e6c8, 0x1e6d0, 0x1e6e6, + 0x1e6fa, 0x1e716, 0x1e726, 0x1e72c, 0x1e73a, 0x1e746, 0x1e74c, + 0x1e758, 0x1e772, 0x1e774, 0x1e792, 0x1e794, 0x1e7a2, 0x1e7a4, + 0x1e7a8, 0x1e7b6, 0x1e812, 0x1e814, 0x1e822, 0x1e824, 0x1e828, + 0x1e836, 0x1e842, 0x1e844, 0x1e848, 0x1e850, 0x1e85e, 0x1e866, + 0x1e86c, 0x1e87a, 0x1e882, 0x1e884, 0x1e888, 0x1e890, 0x1e89e, + 0x1e8a0, 0x1e8bc, 0x1e8c6, 0x1e8cc, 0x1e8d8, 0x1e8ee, 0x1e8f2, + 0x1e8f4, 0x1e902, 0x1e904, 0x1e908, 0x1e910, 0x1e920, 0x1e93c, + 0x1e940, 0x1e978, 0x1e986, 0x1e98c, 0x1e998, 0x1e9b0, 0x1e9be, + 0x1e9ce, 0x1e9dc, 0x1e9e2, 0x1e9e4, 0x1e9e8, 0x1e9f6, 0x1ea04, + 0x1ea08, 0x1ea10, 0x1ea20, 0x1ea40, 0x1ea78, 0x1eaf0, 0x1eb06, + 0x1eb0c, 0x1eb18, 0x1eb30, 0x1eb3e, 0x1eb60, 0x1eb7c, 0x1eb8e, + 0x1eb9c, 0x1ebb8, 0x1ebc2, 0x1ebc4, 0x1ebc8, 0x1ebd0, 0x1ebde, + 0x1ebe6, 0x1ebec, 0x1ec1a, 0x1ec2e, 0x1ec32, 0x1ec34, 0x1ec4e, + 0x1ec5c, 0x1ec62, 0x1ec64, 0x1ec68, 0x1ec8e, 0x1ec9c, 0x1ecb8, + 0x1ecc2, 0x1ecc4, 0x1ecc8, 0x1ecd0, 0x1ece6, 0x1ecfa, 0x1ed0e, + 0x1ed1c, 0x1ed38, 0x1ed70, 0x1ed7e, 0x1ed82, 0x1ed84, 0x1ed88, + 0x1ed90, 0x1ed9e, 0x1eda0, 0x1edcc, 0x1edf2, 0x1edf4, 0x1ee16, + 0x1ee26, 0x1ee2c, 0x1ee3a, 0x1ee46, 0x1ee4c, 0x1ee58, 0x1ee6e, + 0x1ee72, 0x1ee74, 0x1ee86, 0x1ee8c, 0x1ee98, 0x1eeb0, 0x1eebe, + 0x1eece, 0x1eedc, 0x1eee2, 0x1eee4, 0x1eee8, 0x1ef12, 0x1ef22, + 0x1ef24, 0x1ef28, 0x1ef36, 0x1ef42, 0x1ef44, 0x1ef48, 0x1ef50, + 0x1ef5e, 0x1ef66, 0x1ef6c, 0x1ef7a, 0x1efae, 0x1efb2, 0x1efb4, + 0x1efd6, 0x1f096, 0x1f0a6, 0x1f0ac, 0x1f0ba, 0x1f0ca, 0x1f0d2, + 0x1f0d4, 0x1f116, 0x1f126, 0x1f12c, 0x1f13a, 0x1f146, 0x1f14c, + 0x1f158, 0x1f16e, 0x1f172, 0x1f174, 0x1f18a, 0x1f192, 0x1f194, + 0x1f1a2, 0x1f1a4, 0x1f1a8, 0x1f1da, 0x1f216, 0x1f226, 0x1f22c, + 0x1f23a, 0x1f246, 0x1f258, 0x1f26e, 0x1f272, 0x1f274, 0x1f286, + 0x1f28c, 0x1f298, 0x1f2b0, 0x1f2be, 0x1f2ce, 0x1f2dc, 0x1f2e2, + 0x1f2e4, 0x1f2e8, 0x1f2f6, 0x1f30a, 0x1f312, 0x1f314, 0x1f322, + 0x1f328, 0x1f342, 0x1f344, 0x1f348, 0x1f350, 0x1f35e, 0x1f366, + 0x1f37a, 0x1f39a, 0x1f3ae, 0x1f3b2, 0x1f3b4, 0x1f416, 0x1f426, + 0x1f42c, 0x1f43a, 0x1f446, 0x1f44c, 0x1f458, 0x1f46e, 0x1f472, + 0x1f474, 0x1f486, 0x1f48c, 0x1f498, 0x1f4b0, 0x1f4be, 0x1f4ce, + 0x1f4dc, 0x1f4e2, 0x1f4e4, 0x1f4e8, 0x1f4f6, 0x1f506, 0x1f50c, + 0x1f518, 0x1f530, 0x1f53e, 0x1f560, 0x1f57c, 0x1f58e, 0x1f59c, + 0x1f5b8, 0x1f5c2, 0x1f5c4, 0x1f5c8, 0x1f5d0, 0x1f5de, 0x1f5e6, + 0x1f5ec, 0x1f5fa, 0x1f60a, 0x1f612, 0x1f614, 0x1f622, 0x1f624, + 0x1f628, 0x1f636, 0x1f642, 0x1f644, 0x1f648, 0x1f650, 0x1f65e, + 0x1f666, 0x1f67a, 0x1f682, 0x1f684, 0x1f688, 0x1f690, 0x1f69e, + 0x1f6a0, 0x1f6bc, 0x1f6cc, 0x1f6f2, 0x1f6f4, 0x1f71a, 0x1f72e, + 0x1f732, 0x1f734, 0x1f74e, 0x1f75c, 0x1f762, 0x1f764, 0x1f768, + 0x1f776, 0x1f796, 0x1f7a6, 0x1f7ac, 0x1f7ba, 0x1f7d2, 0x1f7d4, + 0x1f89a, 0x1f8ae, 0x1f8b2, 0x1f8b4, 0x1f8d6, 0x1f8ea, 0x1f91a, + 0x1f92e, 0x1f932, 0x1f934, 0x1f94e, 0x1f95c, 0x1f962, 0x1f964, + 0x1f968, 0x1f976, 0x1f996, 0x1f9a6, 0x1f9ac, 0x1f9ba, 0x1f9ca, + 0x1f9d2, 0x1f9d4, 0x1fa1a, 0x1fa2e, 0x1fa32, 0x1fa34, 0x1fa4e, + 0x1fa5c, 0x1fa62, 0x1fa64, 0x1fa68, 0x1fa76, 0x1fa8e, 0x1fa9c, + 0x1fab8, 0x1fac2, 0x1fac4, 0x1fac8, 0x1fad0, 0x1fade, 0x1fae6, + 0x1faec, 0x1fb16, 0x1fb26, 0x1fb2c, 0x1fb3a, 0x1fb46, 0x1fb4c, + 0x1fb58, 0x1fb6e, 0x1fb72, 0x1fb74, 0x1fb8a, 0x1fb92, 0x1fb94, + 0x1fba2, 0x1fba4, 0x1fba8, 0x1fbb6, 0x1fbda]; + + /** + * This table contains to codewords for all symbols. + */ + private static var CODEWORD_TABLE:Array = [2627, 1819, 2622, 2621, 1813, + 1812, 2729, 2724, 2723, 2779, 2774, 2773, 902, 896, 908, 868, 865, + 861, 859, 2511, 873, 871, 1780, 835, 2493, 825, 2491, 842, 837, 844, + 1764, 1762, 811, 810, 809, 2483, 807, 2482, 806, 2480, 815, 814, 813, + 812, 2484, 817, 816, 1745, 1744, 1742, 1746, 2655, 2637, 2635, 2626, + 2625, 2623, 2628, 1820, 2752, 2739, 2737, 2728, 2727, 2725, 2730, + 2785, 2783, 2778, 2777, 2775, 2780, 787, 781, 747, 739, 736, 2413, + 754, 752, 1719, 692, 689, 681, 2371, 678, 2369, 700, 697, 694, 703, + 1688, 1686, 642, 638, 2343, 631, 2341, 627, 2338, 651, 646, 643, 2345, + 654, 652, 1652, 1650, 1647, 1654, 601, 599, 2322, 596, 2321, 594, + 2319, 2317, 611, 610, 608, 606, 2324, 603, 2323, 615, 614, 612, 1617, + 1616, 1614, 1612, 616, 1619, 1618, 2575, 2538, 2536, 905, 901, 898, + 909, 2509, 2507, 2504, 870, 867, 864, 860, 2512, 875, 872, 1781, 2490, + 2489, 2487, 2485, 1748, 836, 834, 832, 830, 2494, 827, 2492, 843, 841, + 839, 845, 1765, 1763, 2701, 2676, 2674, 2653, 2648, 2656, 2634, 2633, + 2631, 2629, 1821, 2638, 2636, 2770, 2763, 2761, 2750, 2745, 2753, + 2736, 2735, 2733, 2731, 1848, 2740, 2738, 2786, 2784, 591, 588, 576, + 569, 566, 2296, 1590, 537, 534, 526, 2276, 522, 2274, 545, 542, 539, + 548, 1572, 1570, 481, 2245, 466, 2242, 462, 2239, 492, 485, 482, 2249, + 496, 494, 1534, 1531, 1528, 1538, 413, 2196, 406, 2191, 2188, 425, + 419, 2202, 415, 2199, 432, 430, 427, 1472, 1467, 1464, 433, 1476, + 1474, 368, 367, 2160, 365, 2159, 362, 2157, 2155, 2152, 378, 377, 375, + 2166, 372, 2165, 369, 2162, 383, 381, 379, 2168, 1419, 1418, 1416, + 1414, 385, 1411, 384, 1423, 1422, 1420, 1424, 2461, 802, 2441, 2439, + 790, 786, 783, 794, 2409, 2406, 2403, 750, 742, 738, 2414, 756, 753, + 1720, 2367, 2365, 2362, 2359, 1663, 693, 691, 684, 2373, 680, 2370, + 702, 699, 696, 704, 1690, 1687, 2337, 2336, 2334, 2332, 1624, 2329, + 1622, 640, 637, 2344, 634, 2342, 630, 2340, 650, 648, 645, 2346, 655, + 653, 1653, 1651, 1649, 1655, 2612, 2597, 2595, 2571, 2568, 2565, 2576, + 2534, 2529, 2526, 1787, 2540, 2537, 907, 904, 900, 910, 2503, 2502, + 2500, 2498, 1768, 2495, 1767, 2510, 2508, 2506, 869, 866, 863, 2513, + 876, 874, 1782, 2720, 2713, 2711, 2697, 2694, 2691, 2702, 2672, 2670, + 2664, 1828, 2678, 2675, 2647, 2646, 2644, 2642, 1823, 2639, 1822, + 2654, 2652, 2650, 2657, 2771, 1855, 2765, 2762, 1850, 1849, 2751, + 2749, 2747, 2754, 353, 2148, 344, 342, 336, 2142, 332, 2140, 345, + 1375, 1373, 306, 2130, 299, 2128, 295, 2125, 319, 314, 311, 2132, + 1354, 1352, 1349, 1356, 262, 257, 2101, 253, 2096, 2093, 274, 273, + 267, 2107, 263, 2104, 280, 278, 275, 1316, 1311, 1308, 1320, 1318, + 2052, 202, 2050, 2044, 2040, 219, 2063, 212, 2060, 208, 2055, 224, + 221, 2066, 1260, 1258, 1252, 231, 1248, 229, 1266, 1264, 1261, 1268, + 155, 1998, 153, 1996, 1994, 1991, 1988, 165, 164, 2007, 162, 2006, + 159, 2003, 2000, 172, 171, 169, 2012, 166, 2010, 1186, 1184, 1182, + 1179, 175, 1176, 173, 1192, 1191, 1189, 1187, 176, 1194, 1193, 2313, + 2307, 2305, 592, 589, 2294, 2292, 2289, 578, 572, 568, 2297, 580, + 1591, 2272, 2267, 2264, 1547, 538, 536, 529, 2278, 525, 2275, 547, + 544, 541, 1574, 1571, 2237, 2235, 2229, 1493, 2225, 1489, 478, 2247, + 470, 2244, 465, 2241, 493, 488, 484, 2250, 498, 495, 1536, 1533, 1530, + 1539, 2187, 2186, 2184, 2182, 1432, 2179, 1430, 2176, 1427, 414, 412, + 2197, 409, 2195, 405, 2193, 2190, 426, 424, 421, 2203, 418, 2201, 431, + 429, 1473, 1471, 1469, 1466, 434, 1477, 1475, 2478, 2472, 2470, 2459, + 2457, 2454, 2462, 803, 2437, 2432, 2429, 1726, 2443, 2440, 792, 789, + 785, 2401, 2399, 2393, 1702, 2389, 1699, 2411, 2408, 2405, 745, 741, + 2415, 758, 755, 1721, 2358, 2357, 2355, 2353, 1661, 2350, 1660, 2347, + 1657, 2368, 2366, 2364, 2361, 1666, 690, 687, 2374, 683, 2372, 701, + 698, 705, 1691, 1689, 2619, 2617, 2610, 2608, 2605, 2613, 2593, 2588, + 2585, 1803, 2599, 2596, 2563, 2561, 2555, 1797, 2551, 1795, 2573, + 2570, 2567, 2577, 2525, 2524, 2522, 2520, 1786, 2517, 1785, 2514, + 1783, 2535, 2533, 2531, 2528, 1788, 2541, 2539, 906, 903, 911, 2721, + 1844, 2715, 2712, 1838, 1836, 2699, 2696, 2693, 2703, 1827, 1826, + 1824, 2673, 2671, 2669, 2666, 1829, 2679, 2677, 1858, 1857, 2772, + 1854, 1853, 1851, 1856, 2766, 2764, 143, 1987, 139, 1986, 135, 133, + 131, 1984, 128, 1983, 125, 1981, 138, 137, 136, 1985, 1133, 1132, + 1130, 112, 110, 1974, 107, 1973, 104, 1971, 1969, 122, 121, 119, 117, + 1977, 114, 1976, 124, 1115, 1114, 1112, 1110, 1117, 1116, 84, 83, + 1953, 81, 1952, 78, 1950, 1948, 1945, 94, 93, 91, 1959, 88, 1958, 85, + 1955, 99, 97, 95, 1961, 1086, 1085, 1083, 1081, 1078, 100, 1090, 1089, + 1087, 1091, 49, 47, 1917, 44, 1915, 1913, 1910, 1907, 59, 1926, 56, + 1925, 53, 1922, 1919, 66, 64, 1931, 61, 1929, 1042, 1040, 1038, 71, + 1035, 70, 1032, 68, 1048, 1047, 1045, 1043, 1050, 1049, 12, 10, 1869, + 1867, 1864, 1861, 21, 1880, 19, 1877, 1874, 1871, 28, 1888, 25, 1886, + 22, 1883, 982, 980, 977, 974, 32, 30, 991, 989, 987, 984, 34, 995, + 994, 992, 2151, 2150, 2147, 2146, 2144, 356, 355, 354, 2149, 2139, + 2138, 2136, 2134, 1359, 343, 341, 338, 2143, 335, 2141, 348, 347, 346, + 1376, 1374, 2124, 2123, 2121, 2119, 1326, 2116, 1324, 310, 308, 305, + 2131, 302, 2129, 298, 2127, 320, 318, 316, 313, 2133, 322, 321, 1355, + 1353, 1351, 1357, 2092, 2091, 2089, 2087, 1276, 2084, 1274, 2081, + 1271, 259, 2102, 256, 2100, 252, 2098, 2095, 272, 269, 2108, 266, + 2106, 281, 279, 277, 1317, 1315, 1313, 1310, 282, 1321, 1319, 2039, + 2037, 2035, 2032, 1203, 2029, 1200, 1197, 207, 2053, 205, 2051, 201, + 2049, 2046, 2043, 220, 218, 2064, 215, 2062, 211, 2059, 228, 226, 223, + 2069, 1259, 1257, 1254, 232, 1251, 230, 1267, 1265, 1263, 2316, 2315, + 2312, 2311, 2309, 2314, 2304, 2303, 2301, 2299, 1593, 2308, 2306, 590, + 2288, 2287, 2285, 2283, 1578, 2280, 1577, 2295, 2293, 2291, 579, 577, + 574, 571, 2298, 582, 581, 1592, 2263, 2262, 2260, 2258, 1545, 2255, + 1544, 2252, 1541, 2273, 2271, 2269, 2266, 1550, 535, 532, 2279, 528, + 2277, 546, 543, 549, 1575, 1573, 2224, 2222, 2220, 1486, 2217, 1485, + 2214, 1482, 1479, 2238, 2236, 2234, 2231, 1496, 2228, 1492, 480, 477, + 2248, 473, 2246, 469, 2243, 490, 487, 2251, 497, 1537, 1535, 1532, + 2477, 2476, 2474, 2479, 2469, 2468, 2466, 2464, 1730, 2473, 2471, + 2453, 2452, 2450, 2448, 1729, 2445, 1728, 2460, 2458, 2456, 2463, 805, + 804, 2428, 2427, 2425, 2423, 1725, 2420, 1724, 2417, 1722, 2438, 2436, + 2434, 2431, 1727, 2444, 2442, 793, 791, 788, 795, 2388, 2386, 2384, + 1697, 2381, 1696, 2378, 1694, 1692, 2402, 2400, 2398, 2395, 1703, + 2392, 1701, 2412, 2410, 2407, 751, 748, 744, 2416, 759, 757, 1807, + 2620, 2618, 1806, 1805, 2611, 2609, 2607, 2614, 1802, 1801, 1799, + 2594, 2592, 2590, 2587, 1804, 2600, 2598, 1794, 1793, 1791, 1789, + 2564, 2562, 2560, 2557, 1798, 2554, 1796, 2574, 2572, 2569, 2578, + 1847, 1846, 2722, 1843, 1842, 1840, 1845, 2716, 2714, 1835, 1834, + 1832, 1830, 1839, 1837, 2700, 2698, 2695, 2704, 1817, 1811, 1810, 897, + 862, 1777, 829, 826, 838, 1760, 1758, 808, 2481, 1741, 1740, 1738, + 1743, 2624, 1818, 2726, 2776, 782, 740, 737, 1715, 686, 679, 695, + 1682, 1680, 639, 628, 2339, 647, 644, 1645, 1643, 1640, 1648, 602, + 600, 597, 595, 2320, 593, 2318, 609, 607, 604, 1611, 1610, 1608, 1606, + 613, 1615, 1613, 2328, 926, 924, 892, 886, 899, 857, 850, 2505, 1778, + 824, 823, 821, 819, 2488, 818, 2486, 833, 831, 828, 840, 1761, 1759, + 2649, 2632, 2630, 2746, 2734, 2732, 2782, 2781, 570, 567, 1587, 531, + 527, 523, 540, 1566, 1564, 476, 467, 463, 2240, 486, 483, 1524, 1521, + 1518, 1529, 411, 403, 2192, 399, 2189, 423, 416, 1462, 1457, 1454, + 428, 1468, 1465, 2210, 366, 363, 2158, 360, 2156, 357, 2153, 376, 373, + 370, 2163, 1410, 1409, 1407, 1405, 382, 1402, 380, 1417, 1415, 1412, + 1421, 2175, 2174, 777, 774, 771, 784, 732, 725, 722, 2404, 743, 1716, + 676, 674, 668, 2363, 665, 2360, 685, 1684, 1681, 626, 624, 622, 2335, + 620, 2333, 617, 2330, 641, 635, 649, 1646, 1644, 1642, 2566, 928, 925, + 2530, 2527, 894, 891, 888, 2501, 2499, 2496, 858, 856, 854, 851, 1779, + 2692, 2668, 2665, 2645, 2643, 2640, 2651, 2768, 2759, 2757, 2744, + 2743, 2741, 2748, 352, 1382, 340, 337, 333, 1371, 1369, 307, 300, 296, + 2126, 315, 312, 1347, 1342, 1350, 261, 258, 250, 2097, 246, 2094, 271, + 268, 264, 1306, 1301, 1298, 276, 1312, 1309, 2115, 203, 2048, 195, + 2045, 191, 2041, 213, 209, 2056, 1246, 1244, 1238, 225, 1234, 222, + 1256, 1253, 1249, 1262, 2080, 2079, 154, 1997, 150, 1995, 147, 1992, + 1989, 163, 160, 2004, 156, 2001, 1175, 1174, 1172, 1170, 1167, 170, + 1164, 167, 1185, 1183, 1180, 1177, 174, 1190, 1188, 2025, 2024, 2022, + 587, 586, 564, 559, 556, 2290, 573, 1588, 520, 518, 512, 2268, 508, + 2265, 530, 1568, 1565, 461, 457, 2233, 450, 2230, 446, 2226, 479, 471, + 489, 1526, 1523, 1520, 397, 395, 2185, 392, 2183, 389, 2180, 2177, + 410, 2194, 402, 422, 1463, 1461, 1459, 1456, 1470, 2455, 799, 2433, + 2430, 779, 776, 773, 2397, 2394, 2390, 734, 728, 724, 746, 1717, 2356, + 2354, 2351, 2348, 1658, 677, 675, 673, 670, 667, 688, 1685, 1683, + 2606, 2589, 2586, 2559, 2556, 2552, 927, 2523, 2521, 2518, 2515, 1784, + 2532, 895, 893, 890, 2718, 2709, 2707, 2689, 2687, 2684, 2663, 2662, + 2660, 2658, 1825, 2667, 2769, 1852, 2760, 2758, 142, 141, 1139, 1138, + 134, 132, 129, 126, 1982, 1129, 1128, 1126, 1131, 113, 111, 108, 105, + 1972, 101, 1970, 120, 118, 115, 1109, 1108, 1106, 1104, 123, 1113, + 1111, 82, 79, 1951, 75, 1949, 72, 1946, 92, 89, 86, 1956, 1077, 1076, + 1074, 1072, 98, 1069, 96, 1084, 1082, 1079, 1088, 1968, 1967, 48, 45, + 1916, 42, 1914, 39, 1911, 1908, 60, 57, 54, 1923, 50, 1920, 1031, + 1030, 1028, 1026, 67, 1023, 65, 1020, 62, 1041, 1039, 1036, 1033, 69, + 1046, 1044, 1944, 1943, 1941, 11, 9, 1868, 7, 1865, 1862, 1859, 20, + 1878, 16, 1875, 13, 1872, 970, 968, 966, 963, 29, 960, 26, 23, 983, + 981, 978, 975, 33, 971, 31, 990, 988, 985, 1906, 1904, 1902, 993, 351, + 2145, 1383, 331, 330, 328, 326, 2137, 323, 2135, 339, 1372, 1370, 294, + 293, 291, 289, 2122, 286, 2120, 283, 2117, 309, 303, 317, 1348, 1346, + 1344, 245, 244, 242, 2090, 239, 2088, 236, 2085, 2082, 260, 2099, 249, + 270, 1307, 1305, 1303, 1300, 1314, 189, 2038, 186, 2036, 183, 2033, + 2030, 2026, 206, 198, 2047, 194, 216, 1247, 1245, 1243, 1240, 227, + 1237, 1255, 2310, 2302, 2300, 2286, 2284, 2281, 565, 563, 561, 558, + 575, 1589, 2261, 2259, 2256, 2253, 1542, 521, 519, 517, 514, 2270, + 511, 533, 1569, 1567, 2223, 2221, 2218, 2215, 1483, 2211, 1480, 459, + 456, 453, 2232, 449, 474, 491, 1527, 1525, 1522, 2475, 2467, 2465, + 2451, 2449, 2446, 801, 800, 2426, 2424, 2421, 2418, 1723, 2435, 780, + 778, 775, 2387, 2385, 2382, 2379, 1695, 2375, 1693, 2396, 735, 733, + 730, 727, 749, 1718, 2616, 2615, 2604, 2603, 2601, 2584, 2583, 2581, + 2579, 1800, 2591, 2550, 2549, 2547, 2545, 1792, 2542, 1790, 2558, 929, + 2719, 1841, 2710, 2708, 1833, 1831, 2690, 2688, 2686, 1815, 1809, + 1808, 1774, 1756, 1754, 1737, 1736, 1734, 1739, 1816, 1711, 1676, + 1674, 633, 629, 1638, 1636, 1633, 1641, 598, 1605, 1604, 1602, 1600, + 605, 1609, 1607, 2327, 887, 853, 1775, 822, 820, 1757, 1755, 1584, + 524, 1560, 1558, 468, 464, 1514, 1511, 1508, 1519, 408, 404, 400, + 1452, 1447, 1444, 417, 1458, 1455, 2208, 364, 361, 358, 2154, 1401, + 1400, 1398, 1396, 374, 1393, 371, 1408, 1406, 1403, 1413, 2173, 2172, + 772, 726, 723, 1712, 672, 669, 666, 682, 1678, 1675, 625, 623, 621, + 618, 2331, 636, 632, 1639, 1637, 1635, 920, 918, 884, 880, 889, 849, + 848, 847, 846, 2497, 855, 852, 1776, 2641, 2742, 2787, 1380, 334, + 1367, 1365, 301, 297, 1340, 1338, 1335, 1343, 255, 251, 247, 1296, + 1291, 1288, 265, 1302, 1299, 2113, 204, 196, 192, 2042, 1232, 1230, + 1224, 214, 1220, 210, 1242, 1239, 1235, 1250, 2077, 2075, 151, 148, + 1993, 144, 1990, 1163, 1162, 1160, 1158, 1155, 161, 1152, 157, 1173, + 1171, 1168, 1165, 168, 1181, 1178, 2021, 2020, 2018, 2023, 585, 560, + 557, 1585, 516, 509, 1562, 1559, 458, 447, 2227, 472, 1516, 1513, + 1510, 398, 396, 393, 390, 2181, 386, 2178, 407, 1453, 1451, 1449, + 1446, 420, 1460, 2209, 769, 764, 720, 712, 2391, 729, 1713, 664, 663, + 661, 659, 2352, 656, 2349, 671, 1679, 1677, 2553, 922, 919, 2519, + 2516, 885, 883, 881, 2685, 2661, 2659, 2767, 2756, 2755, 140, 1137, + 1136, 130, 127, 1125, 1124, 1122, 1127, 109, 106, 102, 1103, 1102, + 1100, 1098, 116, 1107, 1105, 1980, 80, 76, 73, 1947, 1068, 1067, 1065, + 1063, 90, 1060, 87, 1075, 1073, 1070, 1080, 1966, 1965, 46, 43, 40, + 1912, 36, 1909, 1019, 1018, 1016, 1014, 58, 1011, 55, 1008, 51, 1029, + 1027, 1024, 1021, 63, 1037, 1034, 1940, 1939, 1937, 1942, 8, 1866, 4, + 1863, 1, 1860, 956, 954, 952, 949, 946, 17, 14, 969, 967, 964, 961, + 27, 957, 24, 979, 976, 972, 1901, 1900, 1898, 1896, 986, 1905, 1903, + 350, 349, 1381, 329, 327, 324, 1368, 1366, 292, 290, 287, 284, 2118, + 304, 1341, 1339, 1337, 1345, 243, 240, 237, 2086, 233, 2083, 254, + 1297, 1295, 1293, 1290, 1304, 2114, 190, 187, 184, 2034, 180, 2031, + 177, 2027, 199, 1233, 1231, 1229, 1226, 217, 1223, 1241, 2078, 2076, + 584, 555, 554, 552, 550, 2282, 562, 1586, 507, 506, 504, 502, 2257, + 499, 2254, 515, 1563, 1561, 445, 443, 441, 2219, 438, 2216, 435, 2212, + 460, 454, 475, 1517, 1515, 1512, 2447, 798, 797, 2422, 2419, 770, 768, + 766, 2383, 2380, 2376, 721, 719, 717, 714, 731, 1714, 2602, 2582, + 2580, 2548, 2546, 2543, 923, 921, 2717, 2706, 2705, 2683, 2682, 2680, + 1771, 1752, 1750, 1733, 1732, 1731, 1735, 1814, 1707, 1670, 1668, + 1631, 1629, 1626, 1634, 1599, 1598, 1596, 1594, 1603, 1601, 2326, + 1772, 1753, 1751, 1581, 1554, 1552, 1504, 1501, 1498, 1509, 1442, + 1437, 1434, 401, 1448, 1445, 2206, 1392, 1391, 1389, 1387, 1384, 359, + 1399, 1397, 1394, 1404, 2171, 2170, 1708, 1672, 1669, 619, 1632, 1630, + 1628, 1773, 1378, 1363, 1361, 1333, 1328, 1336, 1286, 1281, 1278, 248, + 1292, 1289, 2111, 1218, 1216, 1210, 197, 1206, 193, 1228, 1225, 1221, + 1236, 2073, 2071, 1151, 1150, 1148, 1146, 152, 1143, 149, 1140, 145, + 1161, 1159, 1156, 1153, 158, 1169, 1166, 2017, 2016, 2014, 2019, 1582, + 510, 1556, 1553, 452, 448, 1506, 1500, 394, 391, 387, 1443, 1441, + 1439, 1436, 1450, 2207, 765, 716, 713, 1709, 662, 660, 657, 1673, + 1671, 916, 914, 879, 878, 877, 882, 1135, 1134, 1121, 1120, 1118, + 1123, 1097, 1096, 1094, 1092, 103, 1101, 1099, 1979, 1059, 1058, 1056, + 1054, 77, 1051, 74, 1066, 1064, 1061, 1071, 1964, 1963, 1007, 1006, + 1004, 1002, 999, 41, 996, 37, 1017, 1015, 1012, 1009, 52, 1025, 1022, + 1936, 1935, 1933, 1938, 942, 940, 938, 935, 932, 5, 2, 955, 953, 950, + 947, 18, 943, 15, 965, 962, 958, 1895, 1894, 1892, 1890, 973, 1899, + 1897, 1379, 325, 1364, 1362, 288, 285, 1334, 1332, 1330, 241, 238, + 234, 1287, 1285, 1283, 1280, 1294, 2112, 188, 185, 181, 178, 2028, + 1219, 1217, 1215, 1212, 200, 1209, 1227, 2074, 2072, 583, 553, 551, + 1583, 505, 503, 500, 513, 1557, 1555, 444, 442, 439, 436, 2213, 455, + 451, 1507, 1505, 1502, 796, 763, 762, 760, 767, 711, 710, 708, 706, + 2377, 718, 715, 1710, 2544, 917, 915, 2681, 1627, 1597, 1595, 2325, + 1769, 1749, 1747, 1499, 1438, 1435, 2204, 1390, 1388, 1385, 1395, + 2169, 2167, 1704, 1665, 1662, 1625, 1623, 1620, 1770, 1329, 1282, + 1279, 2109, 1214, 1207, 1222, 2068, 2065, 1149, 1147, 1144, 1141, 146, + 1157, 1154, 2013, 2011, 2008, 2015, 1579, 1549, 1546, 1495, 1487, + 1433, 1431, 1428, 1425, 388, 1440, 2205, 1705, 658, 1667, 1664, 1119, + 1095, 1093, 1978, 1057, 1055, 1052, 1062, 1962, 1960, 1005, 1003, + 1000, 997, 38, 1013, 1010, 1932, 1930, 1927, 1934, 941, 939, 936, 933, + 6, 930, 3, 951, 948, 944, 1889, 1887, 1884, 1881, 959, 1893, 1891, 35, + 1377, 1360, 1358, 1327, 1325, 1322, 1331, 1277, 1275, 1272, 1269, 235, + 1284, 2110, 1205, 1204, 1201, 1198, 182, 1195, 179, 1213, 2070, 2067, + 1580, 501, 1551, 1548, 440, 437, 1497, 1494, 1490, 1503, 761, 709, + 707, 1706, 913, 912, 2198, 1386, 2164, 2161, 1621, 1766, 2103, 1208, + 2058, 2054, 1145, 1142, 2005, 2002, 1999, 2009, 1488, 1429, 1426, + 2200, 1698, 1659, 1656, 1975, 1053, 1957, 1954, 1001, 998, 1924, 1921, + 1918, 1928, 937, 934, 931, 1879, 1876, 1873, 1870, 945, 1885, 1882, + 1323, 1273, 1270, 2105, 1202, 1199, 1196, 1211, 2061, 2057, 1576, + 1543, 1540, 1484, 1481, 1478, 1491, 1700]; +} + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/pdf417/decoder/DecodedBitStreamParser.as b/FairyGUI-as3/src/com/google/zxing/pdf417/decoder/DecodedBitStreamParser.as new file mode 100644 index 0000000..8798b7f --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/pdf417/decoder/DecodedBitStreamParser.as @@ -0,0 +1,663 @@ +package com.google.zxing.pdf417.decoder +{ +/* + * Copyright 2009 ZXing authors + * + * Licensed 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. + */ + + + +/** + *

This class contains the methods for decoding the PDF417 codewords.

+ * + * @author SITA Lab (kevin.osullivan@sita.aero) + */ +public class DecodedBitStreamParser { + +import com.google.zxing.ReaderException; +import com.google.zxing.common.DecoderResult; +import com.google.zxing.common.flexdatatypes.StringBuilder; + + private static var TEXT_COMPACTION_MODE_LATCH:int = 900; + private static var BYTE_COMPACTION_MODE_LATCH:int = 901; + private static var NUMERIC_COMPACTION_MODE_LATCH:int = 902; + private static var BYTE_COMPACTION_MODE_LATCH_6:int = 924; + private static var BEGIN_MACRO_PDF417_CONTROL_BLOCK:int = 928; + private static var BEGIN_MACRO_PDF417_OPTIONAL_FIELD:int = 923; + private static var MACRO_PDF417_TERMINATOR:int = 922; + private static var MODE_SHIFT_TO_BYTE_COMPACTION_MODE:int = 913; + private static var MAX_NUMERIC_CODEWORDS:int = 15; + + private static var ALPHA:int = 0; + private static var LOWER:int = 1; + private static var MIXED:int = 2; + private static var PUNCT:int = 3; + private static var ALPHA_SHIFT:int = 4; + private static var PUNCT_SHIFT:int = 5; + + + private static var PL:int = 25; + private static var LL:int = 27; + private static var AS:int = 27; + private static var ML:int = 28; + private static var AL:int = 28; + private static var PS:int = 29; + private static var PAL:int = 29; + + private static var PUNCT_CHARS:Array = [';', '<', '>', '@', '[', String.fromCharCode(92), '}', '_', String.fromCharCode(96), '~', '!', + String.fromCharCode(13), String.fromCharCode(9), ',', ':', String.fromCharCode(10), '-', '.', '$', '/', String.fromCharCode(34), '|', '*', + '(', ')', '?', '{', '}', String.fromCharCode(39)]; + + private static var MIXED_CHARS:Array = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '&', + String.fromCharCode(13), String.fromCharCode(9), ',', ':', '#', '-', '.', '$', '/', '+', '%', '*', + '=', '^']; + + // Table containing values for the exponent of 900. + // This is used in the numeric compaction decode algorithm. + private static var EXP900:Array = + [ "000000000000000000000000000000000000000000001", + "000000000000000000000000000000000000000000900", + "000000000000000000000000000000000000000810000", + "000000000000000000000000000000000000729000000", + "000000000000000000000000000000000656100000000", + "000000000000000000000000000000590490000000000", + "000000000000000000000000000531441000000000000", + "000000000000000000000000478296900000000000000", + "000000000000000000000430467210000000000000000", + "000000000000000000387420489000000000000000000", + "000000000000000348678440100000000000000000000", + "000000000000313810596090000000000000000000000", + "000000000282429536481000000000000000000000000", + "000000254186582832900000000000000000000000000", + "000228767924549610000000000000000000000000000", + "205891132094649000000000000000000000000000000"]; + + public function DecodedBitStreamParser() { + } + + public static function decode(codewords:Array ):DecoderResult { + var result:StringBuilder = new StringBuilder(100); + // Get compaction mode + var codeIndex:int = 1; + var code:int = codewords[codeIndex++]; + while (codeIndex < codewords[0]) + { + switch (code) { + case TEXT_COMPACTION_MODE_LATCH: { + codeIndex = textCompaction(codewords, codeIndex, result); + break; + } + case BYTE_COMPACTION_MODE_LATCH: { + codeIndex = byteCompaction(code, codewords, codeIndex, result); + break; + } + case NUMERIC_COMPACTION_MODE_LATCH: { + codeIndex = numericCompaction(codewords, codeIndex, result); + break; + } + case MODE_SHIFT_TO_BYTE_COMPACTION_MODE: { + codeIndex = byteCompaction(code, codewords, codeIndex, result); + break; + } + case BYTE_COMPACTION_MODE_LATCH_6: { + codeIndex = byteCompaction(code, codewords, codeIndex, result); + break; + } + default: { + // Default to text compaction. During testing numberous barcodes + // appeared to be missing the starting mode. In these cases defaulting + // to text compaction seems to work. + codeIndex--; + codeIndex = textCompaction(codewords, codeIndex, result); + break; + } + } + if (codeIndex < codewords.length) { + code = codewords[codeIndex++]; + } else { + throw new ReaderException("DecoedBitStreamParser : decode"); + } + } + return new DecoderResult(null, result.toString(), null, null); + } + + /** + * Text Compaction mode (see 5.4.1.5) permits all printable ASCII characters to be + * encoded, i.e. values 32 - 126 inclusive in accordance with ISO/IEC 646 (IRV), as + * well as selected control characters. + * + * @param codewords The array of codewords (data + error) + * @param codeIndex The current index into the codeword array. + * @param result The decoded data is appended to the result. + * @return The next index into the codeword array. + */ + private static function textCompaction(codewords:Array, codeIndex:int, result:StringBuilder):int + { + + // 2 character per codeword + var textCompactionData:Array = new Array(codewords[0] << 1); + // Used to hold the byte compaction value if there is a mode shift + var byteCompactionData:Array = new Array(codewords[0] << 1); + for (var k:int=0;k 0)) + { + // Decode every 5 codewords + // Convert to Base 256 + for (var j:int = 0; j < 6; ++j) + { + var chcode:int = value - Math.floor(value / 256) * 256; // BAS : Actionscript can't handle modulo for values > int.MAX_VALUE + decodedData[5 - j] = String.fromCharCode(chcode); + value = Math.floor(value / 256); + } + result.Append(decodedData); + count = 0; + } + } + // If Byte Compaction mode is invoked with codeword 901, + // the group of codewords is interpreted directly + // as one byte per codeword, without compaction. + for (var i:int = (int(count / 5) * 5); i < count; i++) + { + result.Append( byteCompactedCodewords[i]); + } + + } + else if (mode == BYTE_COMPACTION_MODE_LATCH_6) + { + // Total number of Byte Compaction characters to be encoded + // is an integer multiple of 6 + count = 0; + value = 0; + code = 0; + end = false; + while ((codeIndex < codewords[0]) && !end) + { + code = codewords[codeIndex++]; + if (code < TEXT_COMPACTION_MODE_LATCH) { + count += 1; + // Base 900 + value = value * 900 + code; + } else { + if ((code == TEXT_COMPACTION_MODE_LATCH) || + (code == BYTE_COMPACTION_MODE_LATCH) || + (code == NUMERIC_COMPACTION_MODE_LATCH) || + (code == BYTE_COMPACTION_MODE_LATCH_6) || + (code == BEGIN_MACRO_PDF417_CONTROL_BLOCK) || + (code == BEGIN_MACRO_PDF417_OPTIONAL_FIELD) || + (code == MACRO_PDF417_TERMINATOR)) { + } + codeIndex--; + end = true; + } + if ((count % 5 == 0) && (count > 0)) + { + // Decode every 5 codewords + // Convert to Base 256 + var decodedData2:Array = new Array(6); for (var kk:int=0;kk int.MAX_VALUE + decodedData2[5 - j2] = String.fromCharCode(chcode2);// BAS : Actionscript can't handle modulo for values > int.MAX_VALUE + value >>= 8; + } + result.Append(decodedData2); + } + } + } + return codeIndex; + } + + /** + * Numeric Compaction mode (see 5.4.4) permits efficient encoding of numeric data strings. + * + * @param codewords The array of codewords (data + error) + * @param codeIndex The current index into the codeword array. + * @param result The decoded data is appended to the result. + * @return The next index into the codeword array. + */ + private static function numericCompaction(codewords:Array, codeIndex:int, result:StringBuilder):int { + var count:int = 0; + var end:Boolean = false; + + var numericCodewords:Array = new Array(MAX_NUMERIC_CODEWORDS);for (var kk:int=0;kk Result is 000213298174000 + + As there are huge numbers involved here we must use fake out the maths using string + tokens for the numbers. + BigDecimal is not supported by J2ME. + */ + private static function decodeBase900toBase10(codewords:Array, count:int):String { + var accum:StringBuilder = null; + var value:StringBuilder = null; + for (var i:int = 0; i < count; i++) { + value = multiply(EXP900[count - i - 1], codewords[i]); + if (accum == null) { + // First time in accum=0 + accum = value; + } else { + accum = add(accum.toString(), value.toString()); + } + } + var result:String = null; + // Remove leading '1' which was inserted to preserce + // leading zeros + for (var i2:int = 0; i2 < accum.length; i2++) { + if (accum.charAt(i2) == '1') { + //result = accum.substring(i + 1); + result = accum.toString().substring(i2 + 1); + break; + } + } + if (result == null) { + // No leading 1 => just write the converted number. + result = accum.toString(); + } + return result; + } + + /** + * Multiplies two String numbers + * + * @param value1 Any number represented as a string. + * @param value2 A number <= 999. + * @return the result of value1 * value2. + */ + private static function multiply(value1:String , value2:int ):StringBuilder { + var result:StringBuilder = new StringBuilder(value1.length); + for (var i:int = 0; i < value1.length; i++) { + // Put zeros into the result. + result.Append('0'); + } + var hundreds:int = int(value2 / 100); + var tens:int = int(int(value2 / 10) % 10); + var ones:int = int(value2 % 10); + // Multiply by ones + for (var j:int = 0; j < ones; j++) { + result = add(result.toString(), value1); + } + // Multiply by tens + for (var j2:int = 0; j2 < tens; j2++) { + result = add(result.toString(), (value1 + '0').substring(1)); + } + // Multiply by hundreds + for (var j3:int = 0; j3 < hundreds; j3++) { + result = add(result.toString(), (value1 + "00").substring(2)); + } + return result; + } + + /** + * Add two numbers which are represented as strings. + * + * @param value1 + * @param value2 + * @return the result of value1 + value2 + */ + private static function add(value1:String, value2:String):StringBuilder { + var temp1:StringBuilder = new StringBuilder(5); + var temp2:StringBuilder = new StringBuilder(5); + var result:StringBuilder = new StringBuilder(value1.length); + for (var i2:int = 0; i2 < value1.length; i2++) { + // Put zeros into the result. + result.Append('0'); + } + var carry:int = 0; + for (var i:int = value1.length - 3; i > -1; i -= 3) { + + temp1.setLength(0); + temp1.Append(value1.charAt(i)); + temp1.Append(value1.charAt(i + 1)); + temp1.Append(value1.charAt(i + 2)); + + temp2.setLength(0); + temp2.Append(value2.charAt(i)); + temp2.Append(value2.charAt(i + 1)); + temp2.Append(value2.charAt(i + 2)); + + var intValue1:int = parseInt(temp1.toString()); + var intValue2:int = parseInt(temp2.toString()); + + var sumval:int = int((intValue1 + intValue2 + carry) % 1000); + carry = int((intValue1 + intValue2 + carry) / 1000); + + result.setCharAt(i + 2, String.fromCharCode( (int(sumval % 10) + 0x30))); + result.setCharAt(i + 1, String.fromCharCode( (int(int(sumval / 10) % 10) + 0x30))); + result.setCharAt(i, String.fromCharCode( (int(sumval / 100) + 0x30))); + } + return result; + } + + +} + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/pdf417/decoder/Decoder.as b/FairyGUI-as3/src/com/google/zxing/pdf417/decoder/Decoder.as new file mode 100644 index 0000000..a0d381b --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/pdf417/decoder/Decoder.as @@ -0,0 +1,161 @@ +package com.google.zxing.pdf417.decoder +{ + +/* + * Copyright 2009 ZXing authors + * + * Licensed 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. + */ + + + +/** + *

The main class which implements PDF417 Code decoding -- as + * opposed to locating and extracting the PDF417 Code from an image.

+ * + * @author SITA Lab (kevin.osullivan@sita.aero) + */ +public class Decoder +{ + import com.google.zxing.ReaderException; + import com.google.zxing.common.BitMatrix; + import com.google.zxing.common.DecoderResult; + //import com.google.zxing.pdf417.reedsolomon.ReedSolomonDecoder; + + private static var MAX_ERRORS:int = 3; + private static var MAX_EC_CODEWORDS:int = 512; + //private ReedSolomonDecoder rsDecoder; + + public function Decoder() { + // TODO MGMG + //rsDecoder = new ReedSolomonDecoder(); + } + + public function decode(o:Object):DecoderResult + { + if (o is Array) { return this.decode_Array(o as Array); } + else if (o is BitMatrix) { return this.decode_BitMatrix(o as BitMatrix); } + else { throw new ReaderException("pdf417 : Decoder : decode : unknown input parameter type"); } + } + + /** + *

Convenience method that can decode a PDF417 Code represented as a 2D array of booleans. + * "true" is taken to mean a black module.

+ * + * @param image booleans representing white/black PDF417 modules + * @return text and bytes encoded within the PDF417 Code + * @throws ReaderException if the PDF417 Code cannot be decoded + */ + public function decode_Array(image:Array):DecoderResult { + var dimension:int = image.length; + var bits:BitMatrix = new BitMatrix(dimension); + for (var i:int = 0; i < dimension; i++) { + for (var j:int = 0; j < dimension; j++) { + if (image[j][i]) { + bits._set(j, i); + } + } + } + return decode(bits); + } + + /** + *

Decodes a PDF417 Code represented as a {@link BitMatrix}. + * A 1 or "true" is taken to mean a black module.

+ * + * @param bits booleans representing white/black PDF417 Code modules + * @return text and bytes encoded within the PDF417 Code + * @throws ReaderException if the PDF417 Code cannot be decoded + */ + public function decode_BitMatrix(bits:BitMatrix ):DecoderResult { + // Construct a parser to read the data codewords and error-correction level + + var parser:BitMatrixParser = new BitMatrixParser(bits); + var codewords:Array = parser.readCodewords(); + + if (codewords == null || codewords.length == 0) { + throw new ReaderException("Decoder : decode"); + } + + var ecLevel:int = parser.getECLevel(); + var numECCodewords:int = 1 << (ecLevel + 1); + var erasures:Array = parser.getErasures(); + + correctErrors(codewords, erasures, numECCodewords); + verifyCodewordCount(codewords, numECCodewords); + + // Decode the codewords + return DecodedBitStreamParser.decode(codewords); + } + + /** + * Verify that all is OK with the codeword array. + * + * @param codewords + * @return an index to the first data codeword. + * @throws ReaderException + */ + private static function verifyCodewordCount(codewords:Array, numECCodewords:int) :int { + if (codewords.length < 4) { + // Codeword array size should be at least 4 allowing for + // Count CW, At least one Data CW, Error Correction CW, Error Correction CW + throw new ReaderException("pfd417 : decoder : verifyCodewordCount : 1"); + } + // The first codeword, the Symbol Length Descriptor, shall always encode the total number of data + // codewords in the symbol, including the Symbol Length Descriptor itself, data codewords and pad + // codewords, but excluding the number of error correction codewords. + var numberOfCodewords:int = codewords[0]; + if (numberOfCodewords > codewords.length) { + throw new ReaderException("pfd417 : decoder : verifyCodewordCount : 2"); + } + if (numberOfCodewords == 0) { + // Reset to the length of the array - 8 (Allow for at least level 3 Error Correction (8 Error Codewords) + if (numECCodewords < codewords.length) { + codewords[0] = codewords.length - numECCodewords; + } else { + throw new ReaderException("pfd417 : decoder : verifyCodewordCount : 3"); + } + } + return 1; // Index to first data codeword + } + + /** + *

Given data and error-correction codewords received, possibly corrupted by errors, attempts to + * correct the errors in-place using Reed-Solomon error correction.

+ * + * @param codewords data and error correction codewords + * @throws ReaderException if error correction fails + */ + private static function correctErrors(codewords:Array, erasures:Array, numECCodewords:int):int { + if ((erasures != null && erasures.length > numECCodewords / 2 + MAX_ERRORS) || + (numECCodewords < 0 || numECCodewords > MAX_EC_CODEWORDS)) { + // Too many errors or EC Codewords is corrupted + throw new ReaderException("pdf417 : Decoder : correctErrors : 1"); + } + // Try to correct the errors + var result:int = 0; // rsDecoder.correctErrors(codewords, numECCodewords); + if (erasures != null) { + var numErasures:int = erasures.length; + if (result > 0) { + numErasures -= result; + } + if (numErasures > MAX_ERRORS) { + // Still too many errors + throw new ReaderException("pdf417 : Decoder : correctErrors : 2"); + } + } + return result; + } +} + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/pdf417/detector/Detector.as b/FairyGUI-as3/src/com/google/zxing/pdf417/detector/Detector.as new file mode 100644 index 0000000..77a5d5c --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/pdf417/detector/Detector.as @@ -0,0 +1,513 @@ +package com.google.zxing.pdf417.detector +{ +/* + * Copyright 2009 ZXing authors + * + * Licensed 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. + */ + + + +/** + *

Encapsulates logic that can detect a PDF417 Code in an image, even if the + * PDF417 Code is rotated or skewed, or partially obscured.

+ * + * @author SITA Lab (kevin.osullivan@sita.aero) + * @author dswitkin@google.com (Daniel Switkin) + */ +public class Detector { + +import com.google.zxing.BinaryBitmap; +import com.google.zxing.ReaderException; +import com.google.zxing.ResultPoint; +import com.google.zxing.common.BitMatrix; +import com.google.zxing.common.DetectorResult; +import com.google.zxing.common.GridSampler; +import com.google.zxing.common.flexdatatypes.HashTable; + + private static var MAX_AVG_VARIANCE:int = int( ((1 << 8) * 0.42)); + private static var MAX_INDIVIDUAL_VARIANCE:int = int((1 << 8) * 0.8); + private static var SKEW_THRESHOLD:int = 2; + + // B S B S B S B S Bar/Space pattern + // 11111111 0 1 0 1 0 1 000 + private static var START_PATTERN:Array = [8, 1, 1, 1, 1, 1, 1, 3]; + + // 11111111 0 1 0 1 0 1 000 + private static var START_PATTERN_REVERSE:Array = [3, 1, 1, 1, 1, 1, 1, 8]; + + // 1111111 0 1 000 1 0 1 00 1 + private static var STOP_PATTERN:Array = [7, 1, 1, 3, 1, 1, 1, 2, 1]; + + // B S B S B S B S B Bar/Space pattern + // 1111111 0 1 000 1 0 1 00 1 + private static var STOP_PATTERN_REVERSE:Array = [1, 2, 1, 1, 1, 3, 1, 1, 7]; + + private var image:BinaryBitmap; + + public function Detector(image:BinaryBitmap) { + this.image = image; + } + + /** + *

Detects a PDF417 Code in an image, simply.

+ * + * @return {@link DetectorResult} encapsulating results of detecting a PDF417 Code + * @throws ReaderException if no QR Code can be found + */ + /* + public function detect():DetectorResult { + return detect(null); + }*/ + + /** + *

Detects a PDF417 Code in an image. Only checks 0 and 180 degree rotations.

+ * + * @param hints optional hints to detector + * @return {@link DetectorResult} encapsulating results of detecting a PDF417 Code + * @throws ReaderException if no PDF417 Code can be found + */ + public function detect(hints:HashTable=null ):DetectorResult { + // Fetch the 1 bit matrix once up front. + var matrix:BitMatrix = image.getBlackMatrix(); + + // Try to find the vertices assuming the image is upright. + var vertices:Array = findVertices(matrix); + if (vertices == null) { + // Maybe the image is rotated 180 degrees? + vertices = findVertices180(matrix); + if (vertices != null) { + correctCodeWordVertices(vertices, true); + } + } else { + correctCodeWordVertices(vertices, false); + } + + if (vertices == null) + { + throw new ReaderException("pdf417 : Detector : detect : no vertices"); + } + + var moduleWidth:Number = computeModuleWidth(vertices); + if (moduleWidth < 1) { + throw new ReaderException("pdf417 : Detector : detect : module width < 1"); + } + + var dimension:int = computeDimension(vertices[4], vertices[6],vertices[5], vertices[7], moduleWidth); + + // Deskew and sample image. + var bits:BitMatrix = sampleGrid(matrix, vertices[4], vertices[5],vertices[6], vertices[7], dimension); + return new DetectorResult(bits, [vertices[4],vertices[5], vertices[6], vertices[7]]); + + } + + /** + * Locate the vertices and the codewords area of a black blob using the Start + * and Stop patterns as locators. Assumes that the barcode begins in the left half + * of the image, and ends in the right half. + * TODO: Fix this assumption, allowing the barcode to be anywhere in the image. + * TODO: Scanning every row is very expensive. We should only do this for TRY_HARDER. + * + * @param matrix the scanned barcode image. + * @return an array containing the vertices: + * vertices[0] x, y top left barcode + * vertices[1] x, y bottom left barcode + * vertices[2] x, y top right barcode + * vertices[3] x, y bottom right barcode + * vertices[4] x, y top left codeword area + * vertices[5] x, y bottom left codeword area + * vertices[6] x, y top right codeword area + * vertices[7] x, y bottom right codeword area + */ + private static function findVertices(matrix:BitMatrix):Array { + var height:int = matrix.getHeight(); + var width:int = matrix.getWidth(); + var halfWidth:int = width >> 1; + + var result:Array = new Array(8); for(var kk:int=0;kk 0; i2--) { + loc = findGuardPattern(matrix, 0, i2, width, false, START_PATTERN); + if (loc != null) { + result[1] = new ResultPoint(loc[0], i2); + result[5] = new ResultPoint(loc[1], i2); + found = true; + break; + } + } + } + // Top right + if (found) { // Found the Bottom Left vertex + found = false; + for (var i3:int = 0; i3 < height; i3++) { + loc = findGuardPattern(matrix, 0, i3, width, false, STOP_PATTERN); + if (loc != null) { + result[2] = new ResultPoint(loc[1], i3); + result[6] = new ResultPoint(loc[0], i3); + found = true; + break; + } + } + } + // Bottom right + if (found) { // Found the Top right vertex + found = false; + for (var i4:int = height - 1; i4 > 0; i4--) { + loc = findGuardPattern(matrix, 0, i4, width, false, STOP_PATTERN); + if (loc != null) { + result[3] = new ResultPoint(loc[1], i4); + result[7] = new ResultPoint(loc[0], i4); + found = true; + break; + } + } + } + return found ? result : null; + } + + /** + * Locate the vertices and the codewords area of a black blob using the Start + * and Stop patterns as locators. This assumes that the image is rotated 180 + * degrees and if it locates the start and stop patterns at it will re-map + * the vertices for a 0 degree rotation. + * TODO: Change assumption about barcode location. + * TODO: Scanning every row is very expensive. We should only do this for TRY_HARDER. + * + * @param matrix the scanned barcode image. + * @return an array containing the vertices: + * vertices[0] x, y top left barcode + * vertices[1] x, y bottom left barcode + * vertices[2] x, y top right barcode + * vertices[3] x, y bottom right barcode + * vertices[4] x, y top left codeword area + * vertices[5] x, y bottom left codeword area + * vertices[6] x, y top right codeword area + * vertices[7] x, y bottom right codeword area + */ + private static function findVertices180(matrix:BitMatrix):Array { + var height:int = matrix.getHeight(); + var width:int = matrix.getWidth(); + var halfWidth:int = width >> 1; + + var result:Array = new Array(8);for(var kk:int=0;kk 0; i--) { + loc = findGuardPattern(matrix, halfWidth, i, halfWidth, true, START_PATTERN_REVERSE); + if (loc != null) { + result[0] = new ResultPoint(loc[1], i); + result[4] = new ResultPoint(loc[0], i); + found = true; + break; + } + } + // Bottom Left + if (found) { // Found the Top Left vertex + found = false; + for (var i5:int = 0; i5 < height; i5++) { + loc = findGuardPattern(matrix, halfWidth, i5, halfWidth, true, START_PATTERN_REVERSE); + if (loc != null) { + result[1] = new ResultPoint(loc[1], i5); + result[5] = new ResultPoint(loc[0], i5); + found = true; + break; + } + } + } + // Top Right + if (found) { // Found the Bottom Left vertex + found = false; + for (var i6:int = height - 1; i6 > 0; i6--) { + loc = findGuardPattern(matrix, 0, i6, halfWidth, false, STOP_PATTERN_REVERSE); + if (loc != null) { + result[2] = new ResultPoint(loc[0], i6); + result[6] = new ResultPoint(loc[1], i6); + found = true; + break; + } + } + } + // Bottom Right + if (found) { // Found the Top Right vertex + found = false; + for (var i7:int = 0; i7 < height; i7++) { + loc = findGuardPattern(matrix, 0, i7, halfWidth, false, STOP_PATTERN_REVERSE); + if (loc != null) { + result[3] = new ResultPoint(loc[0], i7); + result[7] = new ResultPoint(loc[1], i7); + found = true; + break; + } + } + } + return found ? result : null; + } + + /** + * Because we scan horizontally to detect the start and stop patterns, the vertical component of + * the codeword coordinates will be slightly wrong if there is any skew or rotation in the image. + * This method moves those points back onto the edges of the theoretically perfect bounding + * quadrilateral if needed. + * + * @param vertices The eight vertices located by findVertices(). + */ + private static function correctCodeWordVertices(vertices:Array , upsideDown:Boolean):void { + var length:Number; + var deltax:Number; + var deltay:Number; + var correction:Number; + + var skew:Number = vertices[4].getY() - vertices[6].getY(); + if (upsideDown) { + skew = -skew; + } + if (skew > SKEW_THRESHOLD) { + // Fix v4 + length = vertices[4].getX() - vertices[0].getX(); + deltax = vertices[6].getX() - vertices[0].getX(); + deltay = vertices[6].getY() - vertices[0].getY(); + correction = length * deltay / deltax; + vertices[4] = new ResultPoint(vertices[4].getX(), vertices[4].getY() + correction); + } else if (-skew > SKEW_THRESHOLD) { + // Fix v6 + length = vertices[2].getX() - vertices[6].getX(); + deltax = vertices[2].getX() - vertices[4].getX(); + deltay = vertices[2].getY() - vertices[4].getY(); + correction = length * deltay / deltax; + vertices[6] = new ResultPoint(vertices[6].getX(), vertices[6].getY() - correction); + } + + skew = vertices[7].getY() - vertices[5].getY(); + if (upsideDown) { + skew = -skew; + } + if (skew > SKEW_THRESHOLD) { + // Fix v5 + length = vertices[5].getX() - vertices[1].getX(); + deltax = vertices[7].getX() - vertices[1].getX(); + deltay = vertices[7].getY() - vertices[1].getY(); + correction = length * deltay / deltax; + vertices[5] = new ResultPoint(vertices[5].getX(), vertices[5].getY() + correction); + } else if (-skew > SKEW_THRESHOLD) { + // Fix v7 + length = vertices[3].getX() - vertices[7].getX(); + deltax = vertices[3].getX() - vertices[5].getX(); + deltay = vertices[3].getY() - vertices[5].getY(); + correction = length * deltay / deltax; + vertices[7] = new ResultPoint(vertices[7].getX(), vertices[7].getY() - correction); + } + } + + /** + *

Estimates module size (pixels in a module) based on the Start and End + * finder patterns.

+ * + * @param vertices an array of vertices: + * vertices[0] x, y top left barcode + * vertices[1] x, y bottom left barcode + * vertices[2] x, y top right barcode + * vertices[3] x, y bottom right barcode + * vertices[4] x, y top left codeword area + * vertices[5] x, y bottom left codeword area + * vertices[6] x, y top right codeword area + * vertices[7] x, y bottom right codeword area + * @return the module size. + */ + private static function computeModuleWidth(vertices:Array):Number { + var pixels1:Number = ResultPoint.distance(vertices[0], vertices[4]); + var pixels2:Number = ResultPoint.distance(vertices[1], vertices[5]); + var moduleWidth1:Number = (pixels1 + pixels2) / (17 * 2.0); + var pixels3:Number = ResultPoint.distance(vertices[6], vertices[2]); + var pixels4:Number = ResultPoint.distance(vertices[7], vertices[3]); + var moduleWidth2:Number = (pixels3 + pixels4) / (18 * 2.0); + return (moduleWidth1 + moduleWidth2) / 2.0; + } + + /** + * Computes the dimension (number of modules in a row) of the PDF417 Code + * based on vertices of the codeword area and estimated module size. + * + * @param topLeft of codeword area + * @param topRight of codeword area + * @param bottomLeft of codeword area + * @param bottomRight of codeword are + * @param moduleWidth estimated module size + * @return the number of modules in a row. + */ + private static function computeDimension(topLeft:ResultPoint, topRight:ResultPoint,bottomLeft:ResultPoint, bottomRight:ResultPoint, moduleWidth:Number):int + { + var topRowDimension:int = Math.round((ResultPoint.distance(topLeft, topRight) / moduleWidth)); + var bottomRowDimension:int = Math.round(ResultPoint.distance(bottomLeft, bottomRight) / moduleWidth); + return int((((topRowDimension + bottomRowDimension) >> 1) + 8) / 17) * 17; + /* + * int topRowDimension = round(ResultPoint.distance(topLeft, + * topRight)); //moduleWidth); int bottomRowDimension = + * round(ResultPoint.distance(bottomLeft, bottomRight)); // + * moduleWidth); int dimension = ((topRowDimension + bottomRowDimension) + * >> 1); // Round up to nearest 17 modules i.e. there are 17 modules per + * codeword //int dimension = ((((topRowDimension + bottomRowDimension) >> + * 1) + 8) / 17) * 17; return dimension; + */ + } + + private static function sampleGrid(matrix:BitMatrix , topLeft:ResultPoint , + bottomLeft:ResultPoint , topRight:ResultPoint , bottomRight:ResultPoint , dimension:int ):BitMatrix + { + + // Note that unlike the QR Code sampler, we didn't find the center of modules, but the + // very corners. So there is no 0.5f here; 0.0f is right. + var sampler:GridSampler = GridSampler.getGridSamplerInstance(); + + return sampler.sampleGrid2( + matrix, + dimension, + dimension, + 0, // p1ToX + 0, // p1ToY + dimension, // p2ToX + 0, // p2ToY + dimension, // p3ToX + dimension, // p3ToY + 0, // p4ToX + dimension, // p4ToY + topLeft.getX(), // p1FromX + topLeft.getY(), // p1FromY + topRight.getX(), // p2FromX + topRight.getY(), // p2FromY + bottomRight.getX(), // p3FromX + bottomRight.getY(), // p3FromY + bottomLeft.getX(), // p4FromX + bottomLeft.getY()); // p4FromY + } + + /** + * Ends up being a bit faster than Math.round(). This merely rounds its + * argument to the nearest int, where x.5 rounds up. + */ + private static function round(d:Number):int { + return int(d + 0.5); + } + + /** + * @param matrix row of black/white values to search + * @param column x position to start search + * @param row y position to start search + * @param width the number of pixels to search on this row + * @param pattern pattern of counts of number of black and white pixels that are + * being searched for as a pattern + * @return start/end horizontal offset of guard pattern, as an array of two ints. + */ + public static function findGuardPattern( matrix:BitMatrix, column:int, row:int, width:int, + whiteFirst:Boolean, pattern:Array):Array { + var patternLength:int = pattern.length; + // TODO: Find a way to cache this array, as this method is called hundreds of times + // per image, and we want to allocate as seldom as possible. + var counters:Array = new Array(patternLength);for (var k:int=0;k> 8; + + var totalVariance:int = 0; + for (var x:int = 0; x < numCounters; x++) { + var counter:int = counters[x] << 8; + var scaledPattern:int = pattern[x] * unitBarWidth; + var variance:int = counter > scaledPattern ? counter - scaledPattern : scaledPattern - counter; + if (variance > maxIndividualVariance) { + return int.MAX_VALUE; + } + totalVariance += variance; + } + return int(totalVariance / total); + } + +} +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/pdf417/encoder/BarcodeMatrix.as b/FairyGUI-as3/src/com/google/zxing/pdf417/encoder/BarcodeMatrix.as new file mode 100644 index 0000000..d535d85 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/pdf417/encoder/BarcodeMatrix.as @@ -0,0 +1,96 @@ +/* + * Copyright 2011 ZXing authors + * + * Licensed 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 com.google.zxing.pdf417.encoder +{ + +/** + * Holds all of the information for a barcode in a format where it can be easily accessable + * + * @author Jacob Haynes + */ +public final class BarcodeMatrix { + + private var matrix:Array; + private var currentRow:int; + private var height:int; + private var width:int; + + /** + * @param height the height of the matrix (Rows) + * @param width the width of the matrix (Cols) + */ + public function BarcodeMatrix(height:int,width:int) + { + matrix = new Array(height + 2); + //Initializes the array to the correct width + var matrixLength:int = matrix.length; + var al:int = (width + 4) * 17 + 1; + for (var i:int = 0; i < matrixLength; i++) + { + matrix[i] = new BarcodeRow(al); + + } + this.width = width * 17; + this.height = height + 2; + this.currentRow = 0; + } + + public function set_value(x:int, y:int, value:*):void { + matrix[y].set_value(x, value); + } + + public function setMatrix(x:int, y:int, black:Boolean):void { + set_value(x, y, (black ? 1 : 0)); + } + + public function startRow():void { + ++currentRow; + } + + public function getCurrentRow():BarcodeRow { + return (matrix[currentRow] as BarcodeRow); + } + + public function getMatrix():Array { + return getScaledMatrix(1, 1); + } + + public function getScaledMatrix( xScale:int, yScale:int =-1):Array + { + if (yScale == -1) { yScale = xScale; } + var matrixOut:Array = new Array();//height * yScale)[width * xScale]; + var yMax:int = height * yScale; + for (var ii:int = 0; ii < yMax; ii++) + { + var temp:Array = matrix[int(ii / yScale)].getScaledRow(xScale); + matrixOut[yMax - ii - 1] = temp + } + return matrixOut; + } + + public function toString():String + { + var resultString:String = ""; + for (var i:int=0;i 90) { + throw new WriterException( + "The message doesn't fit in the configured symbol size." + + " The resultant number of rows for this barcode exceeds 90." + + " Please increase the number of columns or decrease the error correction" + + " level to reduce the number of rows."); + } + if (r < 2) { + throw new WriterException( + "The message is too short for the configured symbol size." + + " The resultant number of rows is less than 3." + + " Please decrease the number of columns or increase the error correction" + + " level to increase the number of rows."); + } + return r; + } + + /** + * Calculates the necessary number of rows as described in annex Q of ISO/IEC 15438:2001(E). + * + * @param m the number of source codewords prior to the additional of the Symbol Length + * Descriptor and any pad codewords + * @param k the number of error correction codewords + * @param c the number of columns in the symbol in the data region (excluding start, stop and + * row indicator codewords) + * @return the number of rows in the symbol (r) + */ + private static function calculateNumberOfRows(m:int, k:int, c:int):int { + var r:int = int((m + 1 + k) / c) + 1; + if (c * r >= (m + 1 + k + c)) { + r--; + } + return r; + } + + /** + * Calculates the number of pad codewords as described in 4.9.2 of ISO/IEC 15438:2001(E). + * + * @param m the number of source codewords prior to the additional of the Symbol Length + * Descriptor and any pad codewords + * @param k the number of error correction codewords + * @param c the number of columns in the symbol in the data region (excluding start, stop and + * row indicator codewords) + * @param r the number of rows in the symbol + * @return the number of pad codewords + */ + private static function getNumberOfPadCodewords(m:int, k:int, c:int, r:int):int { + var n:int = c * r - k; + return n > m + 1 ? n - m - 1 : 0; + } + + /** + * Calculates the number of data codewords (equals the Symbol Length Descriptor). + * + * @param m the number of source codewords prior to the additional of the Symbol Length + * Descriptor and any pad codewords + * @param errorCorrectionLevel the error correction level (value between 0 and 8) + * @param c the number of columns in the symbol in the data region (excluding start, stop and + * row indicator codewords) + * @return the number of data codewords + */ + private static function getNumberOfDataCodewords(m:int, errorCorrectionLevel:int, c:int):int { + var k:int = PDF417ErrorCorrection.getErrorCorrectionCodewordCount(errorCorrectionLevel); + var r:int = getNumberOfRows(m, k, c); + return c * r - k; + } + + private static function encodeChar(pattern:int, len:int, logic:BarcodeRow):void { + var map:int = 1 << len - 1; + var last:Boolean = (pattern & map) != 0; //Initialize to inverse of first bit + var width:int = 0; + for (var i:int = 0; i < len; i++) { + var black:Boolean = (pattern & map) != 0; + if (last == black) { + width++; + } else { + logic.addBar(last, width); + + last = black; + width = 1; + } + map >>= 1; + } + logic.addBar(last, width); + } + + private function encodeLowLevel(fullCodewords:String, c:int, r:int, errorCorrectionLevel:int, logic:BarcodeMatrix ):void { + + this.errorCorrectionLevel = errorCorrectionLevel; + + var idx:int = 0; + for (var y:int = 0; y < r; y++) { + var cluster:int = y % 3; + logic.startRow(); + var bcr:BarcodeRow = logic.getCurrentRow(); + encodeChar(START_PATTERN, 17, bcr ); + + var left:int; + var right:int; + if (cluster == 0) { + left = (30 * int(y / 3)) + int((r - 1) / 3); + right = (30 * int(y / 3)) + (c - 1); + } else if (cluster == 1) { + left = (30 * int(y / 3)) + (errorCorrectionLevel * 3) + int((r - 1) % 3); + right = (30 * int(y / 3)) + int((r - 1) / 3); + } else { + left = (30 * int(y / 3)) + (c - 1); + right = (30 * int(y / 3)) + (errorCorrectionLevel * 3) + int((r - 1) % 3); + } + + var pattern:int = CODEWORD_TABLE[cluster][left]; + encodeChar(pattern, 17, logic.getCurrentRow()); + + for (var x:int = 0; x < c; x++) { + pattern = CODEWORD_TABLE[cluster][fullCodewords.charCodeAt(idx)]; + encodeChar(pattern, 17, logic.getCurrentRow()); + idx++; + } + + pattern = CODEWORD_TABLE[cluster][right]; + encodeChar(pattern, 17, logic.getCurrentRow()); + + encodeChar(STOP_PATTERN, 18, logic.getCurrentRow()); + } + } + + /** + * Generates the barcode logic. + * + * @param msg the message to encode + */ + public function generateBarcodeLogic(msg:String, errorCorrectionLevel:int):void { + + //1. step: High-level encoding + var errorCorrectionCodeWords:int = PDF417ErrorCorrection.getErrorCorrectionCodewordCount(errorCorrectionLevel); + + // actionscript does not allow static code parts so we need an instance of the PDF417HighLevelEncoder + var phe:PDF417HighLevelEncoder = new PDF417HighLevelEncoder(); + var highLevel:String = phe.encodeHighLevel(msg); + var sourceCodeWords:int = highLevel.length; + + var dimension:Array = determineDimensions(sourceCodeWords); + + if (dimension == null) { + throw new WriterException("Unable to fit message in columns"); + } + + var cols:int = dimension[0]; + var rows:int = dimension[1]; + + var pad:int = getNumberOfPadCodewords(sourceCodeWords, errorCorrectionCodeWords, cols, rows); + + //2. step: construct data codewords + var n:int = getNumberOfDataCodewords(sourceCodeWords, errorCorrectionLevel, cols); + if (n > 929) { + throw new WriterException( + "Encoded message contains to many code words, message to big (" + msg.length + " bytes)"); + } + + var sb:StringBuilder = new StringBuilder(n); + sb.Append(String.fromCharCode(n)); + sb.Append(highLevel); + for (var i:int = 0; i < pad; i++) { + sb.Append("900"); //PAD characters + } + var dataCodewords:String = sb.toString(); + + + //3. step: Error correction + var ec:String = PDF417ErrorCorrection.generateErrorCorrection(dataCodewords, errorCorrectionLevel); + var fullCodewords:String = dataCodewords + ec; + + //4. step: low-level encoding + barcodeMatrix = new BarcodeMatrix(rows, cols); + encodeLowLevel(fullCodewords, cols, rows, errorCorrectionLevel, barcodeMatrix); + + } + + /** + * Determine optimal nr of columns and rows for the specified number of + * codewords. + * + * @param sourceCodeWords number of code words + * @return dimension object containing cols as width and rows as height + */ + public function determineDimensions(sourceCodeWords:int):Array { + + var ratio:Number = 0.0; + var dimension:Array = null; + var errorCorrectionCodeWords:int = PDF417ErrorCorrection.getErrorCorrectionCodewordCount(errorCorrectionLevel); + + for (var cols:int = MIN_COLS; cols <= MAX_COLS; cols++) { + + var rows:int = calculateNumberOfRows(sourceCodeWords, errorCorrectionCodeWords, cols); + + if (rows < MIN_ROWS) { + break; + } + + if (rows > MAX_ROWS) { + continue; + } + + var newRatio:Number = ((17 * cols + 69) * DEFAULT_MODULE_WIDTH) / (rows * HEIGHT); + + // ignore if previous ratio is closer to preferred ratio + var preferredRatio:Number = 3.0; + if (dimension != null && Math.abs(newRatio - preferredRatio) > Math.abs(ratio - preferredRatio)) { + continue; + } + + ratio = newRatio; + dimension = [cols, rows]; + } + + return dimension; + } + + +} +} + diff --git a/FairyGUI-as3/src/com/google/zxing/pdf417/encoder/PDF417ErrorCorrection.as b/FairyGUI-as3/src/com/google/zxing/pdf417/encoder/PDF417ErrorCorrection.as new file mode 100644 index 0000000..3865a22 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/pdf417/encoder/PDF417ErrorCorrection.as @@ -0,0 +1,211 @@ +/* + * Copyright 2006 Jeremias Maerki in part, and ZXing Authors in part + * + * Licensed 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. + */ + +/* + * This file has been modified from its original form in Barcode4J. + */ + +package com.google.zxing.pdf417.encoder +{ + +import com.google.zxing.WriterException; +import com.google.zxing.common.flexdatatypes.IllegalArgumentException; +import com.google.zxing.common.flexdatatypes.StringBuilder; + +/** + * PDF417 error correction code following the algorithm described in ISO/IEC 15438:2001(E) in + * chapter 4.10. + */ +public class PDF417ErrorCorrection { + + /** + * Tables of coefficients for calculating error correction words + * (see annex F, ISO/IEC 15438:2001(E)) + */ + private static var EC_COEFFICIENTS:Array = [ + [27, 917], + [522, 568, 723, 809], + [237, 308, 436, 284, 646, 653, 428, 379], + [274, 562, 232, 755, 599, 524, 801, 132, 295, 116, 442, 428, 295, + 42, 176, 65], + [361, 575, 922, 525, 176, 586, 640, 321, 536, 742, 677, 742, 687, + 284, 193, 517, 273, 494, 263, 147, 593, 800, 571, 320, 803, + 133, 231, 390, 685, 330, 63, 410], + [539, 422, 6, 93, 862, 771, 453, 106, 610, 287, 107, 505, 733, + 877, 381, 612, 723, 476, 462, 172, 430, 609, 858, 822, 543, + 376, 511, 400, 672, 762, 283, 184, 440, 35, 519, 31, 460, + 594, 225, 535, 517, 352, 605, 158, 651, 201, 488, 502, 648, + 733, 717, 83, 404, 97, 280, 771, 840, 629, 4, 381, 843, + 623, 264, 543], + [521, 310, 864, 547, 858, 580, 296, 379, 53, 779, 897, 444, 400, + 925, 749, 415, 822, 93, 217, 208, 928, 244, 583, 620, 246, + 148, 447, 631, 292, 908, 490, 704, 516, 258, 457, 907, 594, + 723, 674, 292, 272, 96, 684, 432, 686, 606, 860, 569, 193, + 219, 129, 186, 236, 287, 192, 775, 278, 173, 40, 379, 712, + 463, 646, 776, 171, 491, 297, 763, 156, 732, 95, 270, 447, + 90, 507, 48, 228, 821, 808, 898, 784, 663, 627, 378, 382, + 262, 380, 602, 754, 336, 89, 614, 87, 432, 670, 616, 157, + 374, 242, 726, 600, 269, 375, 898, 845, 454, 354, 130, 814, + 587, 804, 34, 211, 330, 539, 297, 827, 865, 37, 517, 834, + 315, 550, 86, 801, 4, 108, 539], + [524, 894, 75, 766, 882, 857, 74, 204, 82, 586, 708, 250, 905, + 786, 138, 720, 858, 194, 311, 913, 275, 190, 375, 850, 438, + 733, 194, 280, 201, 280, 828, 757, 710, 814, 919, 89, 68, + 569, 11, 204, 796, 605, 540, 913, 801, 700, 799, 137, 439, + 418, 592, 668, 353, 859, 370, 694, 325, 240, 216, 257, 284, + 549, 209, 884, 315, 70, 329, 793, 490, 274, 877, 162, 749, + 812, 684, 461, 334, 376, 849, 521, 307, 291, 803, 712, 19, + 358, 399, 908, 103, 511, 51, 8, 517, 225, 289, 470, 637, + 731, 66, 255, 917, 269, 463, 830, 730, 433, 848, 585, 136, + 538, 906, 90, 2, 290, 743, 199, 655, 903, 329, 49, 802, + 580, 355, 588, 188, 462, 10, 134, 628, 320, 479, 130, 739, + 71, 263, 318, 374, 601, 192, 605, 142, 673, 687, 234, 722, + 384, 177, 752, 607, 640, 455, 193, 689, 707, 805, 641, 48, + 60, 732, 621, 895, 544, 261, 852, 655, 309, 697, 755, 756, + 60, 231, 773, 434, 421, 726, 528, 503, 118, 49, 795, 32, + 144, 500, 238, 836, 394, 280, 566, 319, 9, 647, 550, 73, + 914, 342, 126, 32, 681, 331, 792, 620, 60, 609, 441, 180, + 791, 893, 754, 605, 383, 228, 749, 760, 213, 54, 297, 134, + 54, 834, 299, 922, 191, 910, 532, 609, 829, 189, 20, 167, + 29, 872, 449, 83, 402, 41, 656, 505, 579, 481, 173, 404, + 251, 688, 95, 497, 555, 642, 543, 307, 159, 924, 558, 648, + 55, 497, 10], + [352, 77, 373, 504, 35, 599, 428, 207, 409, 574, 118, 498, 285, + 380, 350, 492, 197, 265, 920, 155, 914, 299, 229, 643, 294, + 871, 306, 88, 87, 193, 352, 781, 846, 75, 327, 520, 435, + 543, 203, 666, 249, 346, 781, 621, 640, 268, 794, 534, 539, + 781, 408, 390, 644, 102, 476, 499, 290, 632, 545, 37, 858, + 916, 552, 41, 542, 289, 122, 272, 383, 800, 485, 98, 752, + 472, 761, 107, 784, 860, 658, 741, 290, 204, 681, 407, 855, + 85, 99, 62, 482, 180, 20, 297, 451, 593, 913, 142, 808, + 684, 287, 536, 561, 76, 653, 899, 729, 567, 744, 390, 513, + 192, 516, 258, 240, 518, 794, 395, 768, 848, 51, 610, 384, + 168, 190, 826, 328, 596, 786, 303, 570, 381, 415, 641, 156, + 237, 151, 429, 531, 207, 676, 710, 89, 168, 304, 402, 40, + 708, 575, 162, 864, 229, 65, 861, 841, 512, 164, 477, 221, + 92, 358, 785, 288, 357, 850, 836, 827, 736, 707, 94, 8, + 494, 114, 521, 2, 499, 851, 543, 152, 729, 771, 95, 248, + 361, 578, 323, 856, 797, 289, 51, 684, 466, 533, 820, 669, + 45, 902, 452, 167, 342, 244, 173, 35, 463, 651, 51, 699, + 591, 452, 578, 37, 124, 298, 332, 552, 43, 427, 119, 662, + 777, 475, 850, 764, 364, 578, 911, 283, 711, 472, 420, 245, + 288, 594, 394, 511, 327, 589, 777, 699, 688, 43, 408, 842, + 383, 721, 521, 560, 644, 714, 559, 62, 145, 873, 663, 713, + 159, 672, 729, 624, 59, 193, 417, 158, 209, 563, 564, 343, + 693, 109, 608, 563, 365, 181, 772, 677, 310, 248, 353, 708, + 410, 579, 870, 617, 841, 632, 860, 289, 536, 35, 777, 618, + 586, 424, 833, 77, 597, 346, 269, 757, 632, 695, 751, 331, + 247, 184, 45, 787, 680, 18, 66, 407, 369, 54, 492, 228, + 613, 830, 922, 437, 519, 644, 905, 789, 420, 305, 441, 207, + 300, 892, 827, 141, 537, 381, 662, 513, 56, 252, 341, 242, + 797, 838, 837, 720, 224, 307, 631, 61, 87, 560, 310, 756, + 665, 397, 808, 851, 309, 473, 795, 378, 31, 647, 915, 459, + 806, 590, 731, 425, 216, 548, 249, 321, 881, 699, 535, 673, + 782, 210, 815, 905, 303, 843, 922, 281, 73, 469, 791, 660, + 162, 498, 308, 155, 422, 907, 817, 187, 62, 16, 425, 535, + 336, 286, 437, 375, 273, 610, 296, 183, 923, 116, 667, 751, + 353, 62, 366, 691, 379, 687, 842, 37, 357, 720, 742, 330, + 5, 39, 923, 311, 424, 242, 749, 321, 54, 669, 316, 342, + 299, 534, 105, 667, 488, 640, 672, 576, 540, 316, 486, 721, + 610, 46, 656, 447, 171, 616, 464, 190, 531, 297, 321, 762, + 752, 533, 175, 134, 14, 381, 433, 717, 45, 111, 20, 596, + 284, 736, 138, 646, 411, 877, 669, 141, 919, 45, 780, 407, + 164, 332, 899, 165, 726, 600, 325, 498, 655, 357, 752, 768, + 223, 849, 647, 63, 310, 863, 251, 366, 304, 282, 738, 675, + 410, 389, 244, 31, 121, 303, 263]]; + + public function PDF417ErrorCorrection():void { + } + + /** + * Determines the number of error correction codewords for a specified error correction + * level. + * + * @param errorCorrectionLevel the error correction level (0-8) + * @return the number of codewords generated for error correction + */ + public static function getErrorCorrectionCodewordCount(errorCorrectionLevel:int):int { + if (errorCorrectionLevel < 0 || errorCorrectionLevel > 8) { + throw new IllegalArgumentException("Error correction level must be between 0 and 8!"); + } + return 1 << (errorCorrectionLevel + 1); + } + + /** + * Returns the recommended minimum error correction level as described in annex E of + * ISO/IEC 15438:2001(E). + * + * @param n the number of data codewords + * @return the recommended minimum error correction level + */ + public static function getRecommendedMinimumErrorCorrectionLevel(n:int):int { + if (n <= 0) { + throw new IllegalArgumentException("n must be > 0"); + } + if (n <= 40) { + return 2; + } + if (n <= 160) { + return 3; + } + if (n <= 320) { + return 4; + } + if (n <= 863) { + return 5; + } + throw new WriterException("No recommendation possible"); + } + + /** + * Generates the error correction codewords according to 4.10 in ISO/IEC 15438:2001(E). + * + * @param dataCodewords the data codewords + * @param errorCorrectionLevel the error correction level (0-8) + * @return the String representing the error correction codewords + */ + public static function generateErrorCorrection(dataCodewords:String, errorCorrectionLevel:int):String { + var k:int = getErrorCorrectionCodewordCount(errorCorrectionLevel); + var e:Array = new Array(k);for(var i1:int=0;i1= 1; j--) + { + t2 = (t1 * EC_COEFFICIENTS[errorCorrectionLevel][j]) % 929; + t3 = 929 - t2; + e[j] = ((e[j - 1] + t3) % 929); + } + t2 = (t1 * EC_COEFFICIENTS[errorCorrectionLevel][0]) % 929; + t3 = 929 - t2; + e[0] = (t3 % 929); + + } + var sb:StringBuilder = new StringBuilder(k); + for (var j:int = k - 1; j >= 0; j--) { + if (e[j] != 0) + { + e[j] = 929 - (e[j]); + } + sb.Append(String.fromCharCode(e[j])); + } + return sb.ToString(); + } +} +} diff --git a/FairyGUI-as3/src/com/google/zxing/pdf417/encoder/PDF417HighLevelEncoder.as b/FairyGUI-as3/src/com/google/zxing/pdf417/encoder/PDF417HighLevelEncoder.as new file mode 100644 index 0000000..6f2ba38 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/pdf417/encoder/PDF417HighLevelEncoder.as @@ -0,0 +1,591 @@ +/* + * Copyright 2006 Jeremias Maerki in part, and ZXing Authors in part + * + * Licensed 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. + */ + +/* + * This file has been modified from its original form in Barcode4J. + */ + +package com.google.zxing.pdf417.encoder +{ + +import com.google.zxing.WriterException; +import com.google.zxing.common.flexdatatypes.StringBuilder; + +/** + * PDF417 high-level encoder following the algorithm described in ISO/IEC 15438:2001(E) in + * annex P. + */ +public class PDF417HighLevelEncoder +{ + + /** + * code for Text compaction + */ + private static var TEXT_COMPACTION:int = 0; + + /** + * code for Byte compaction + */ + private static var BYTE_COMPACTION:int = 1; + + /** + * code for Numeric compaction + */ + private static var NUMERIC_COMPACTION:int = 2; + + /** + * Text compaction submode Alpha + */ + private static var SUBMODE_ALPHA:int = 0; + + /** + * Text compaction submode Lower + */ + private static var SUBMODE_LOWER:int = 1; + + /** + * Text compaction submode Mixed + */ + private static var SUBMODE_MIXED:int = 2; + + /** + * Text compaction submode Punctuation + */ + private static var SUBMODE_PUNCTUATION:int = 3; + + /** + * mode latch to Text Compaction mode + */ + private static var LATCH_TO_TEXT:int = 900; + + /** + * mode latch to Byte Compaction mode (number of characters NOT a multiple of 6) + */ + private static var LATCH_TO_BYTE_PADDED:int = 901; + + /** + * mode latch to Numeric Compaction mode + */ + private static var LATCH_TO_NUMERIC:int = 902; + + /** + * mode shift to Byte Compaction mode + */ + private static var SHIFT_TO_BYTE:int = 913; + + /** + * mode latch to Byte Compaction mode (number of characters a multiple of 6) + */ + private static var LATCH_TO_BYTE:int = 924; + + /** + * Raw code table for text compaction Mixed sub-mode + */ + private static var TEXT_MIXED_RAW:Array = [ + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 38, 13, 9, 44, 58, + 35, 45, 46, 36, 47, 43, 37, 42, 61, 94, 0, 32, 0, 0, 0]; + + /** + * Raw code table for text compaction: Punctuation sub-mode + */ + private static var TEXT_PUNCTUATION_RAW:Array = [ + 59, 60, 62, 64, 91, 92, 93, 95, 96, 126, 33, 13, 9, 44, 58, + 10, 45, 46, 36, 47, 34, 124, 42, 40, 41, 63, 123, 125, 39, 0]; + + private static var MIXED:Array = new Array(128); + private static var PUNCTUATION:Array = new Array(128); + + public function PDF417HighLevelEncoder():void + { + + for (var i:int = 0; i < MIXED.length; i++) { + MIXED[i] = -1; + } + for (i = 0; i < TEXT_MIXED_RAW.length; i++) { + var b:int = TEXT_MIXED_RAW[i]; + if (b > 0) { + MIXED[b] = i; + } + } + for (i = 0; i < PUNCTUATION.length; i++) { + PUNCTUATION[i] = -1; + } + for (i = 0; i < TEXT_PUNCTUATION_RAW.length; i++) { + b = TEXT_PUNCTUATION_RAW[i]; + if (b > 0) { + PUNCTUATION[b] = i; + } + } + } + + /** + * Converts the message to a byte array using the default encoding (cp437) as defined by the + * specification + * + * @param msg the message + * @return the byte array of the message + */ + private static function getBytesForMessage(msg:String):Array { + return msg.split(""); + } + + /** + * Performs high-level encoding of a PDF417 message using the algorithm described in annex P + * of ISO/IEC 15438:2001(E). + * + * @param msg the message + * @return the encoded message (the char values range from 0 to 928) + */ + public function encodeHighLevel(msg:String):String { + var bytes:Array = null; //Fill later and only if needed + + //the codewords 0..928 are encoded as Unicode characters + var sb:StringBuilder = new StringBuilder(msg.length); + + var len:int = msg.length; + var p:int = 0; + var encodingMode:int = TEXT_COMPACTION; //Default mode, see 4.4.2.1 + var textSubMode:int = SUBMODE_ALPHA; + while (p < len) { + var n:int = determineConsecutiveDigitCount(msg, p); + if (n >= 13) { + sb.Append(String.fromCharCode(LATCH_TO_NUMERIC)); + encodingMode = NUMERIC_COMPACTION; + textSubMode = SUBMODE_ALPHA; //Reset after latch + encodeNumeric(msg, p, n, sb); + p += n; + } else { + var t:int = determineConsecutiveTextCount(msg, p); + if (t >= 5 || n == len) { + if (encodingMode != TEXT_COMPACTION) { + sb.Append(String.fromCharCode(LATCH_TO_TEXT)); + encodingMode = TEXT_COMPACTION; + textSubMode = SUBMODE_ALPHA; //start with submode alpha after latch + } + textSubMode = encodeText(msg, p, t, sb, textSubMode); + p += t; + } else { + if (bytes == null) { + bytes = getBytesForMessage(msg); + } + var b:int = determineConsecutiveBinaryCount(msg, bytes, p); + if (b == 0) { + b = 1; + } + if (b == 1 && encodingMode == TEXT_COMPACTION) { + //Switch for one byte (instead of latch) + encodeBinary(bytes, p, 1, TEXT_COMPACTION, sb); + } else { + //Mode latch performed by encodeBinary() + encodeBinary(bytes, p, b, encodingMode, sb); + encodingMode = BYTE_COMPACTION; + textSubMode = SUBMODE_ALPHA; //Reset after latch + } + p += b; + } + } + } + + return sb.toString(); + } + /* + public static function toHexString(_string:String):String + + { + var r=""; + var e=_string.length; + var c=0; + var h; + while(c= count) { + break; + } + } + var h:String = ""; + var len:int = tmp.length; + + + for (var i:int = 0; i < len; i++) { + var odd:Boolean = (i % 2) != 0; + if (odd) { + + h = String.fromCharCode((h.charCodeAt(0) * 30) + (tmp.charAt(i)).charCodeAt(0)); + var code:int = h.charCodeAt(0); + sb.Append(h); + } else { + h = tmp.charAt(i); + } + } + if ((len % 2) != 0) { + sb.Append(String.fromCharCode(((h.charCodeAt(0) * 30) + 29))); //ps + } + + return submode; + } + + /** + * Encode parts of the message using Byte Compaction as described in ISO/IEC 15438:2001(E), + * chapter 4.4.3. The Unicode characters will be converted to binary using the cp437 + * codepage. + * + * @param bytes the message converted to a byte array + * @param startpos the start position within the message + * @param count the number of bytes to encode + * @param startmode the mode from which this method starts + * @param sb receives the encoded codewords + */ + private function encodeBinary(bytes:Array, startpos:int , count:int , startmode:int, sb:StringBuilder):void { + if (count == 1 && startmode == TEXT_COMPACTION) { + sb.Append(String.fromCharCode(SHIFT_TO_BYTE)); + } else { + var sixpack:Boolean = (count % 6) == 0; + if (sixpack) { + sb.Append(String.fromCharCode(LATCH_TO_BYTE)); + } else { + sb.Append(String.fromCharCode(LATCH_TO_BYTE_PADDED)); + } + } + + var chars:Array = new Array(5); + var idx:int = startpos; + while ((startpos + count - idx) >= 6) { + var t:Number = 0; + for (i = 0; i < 6; i++) { + t <<= 8; + t += bytes[idx + i] & 0xff; + } + for (i = 0; i < 5; i++) { + chars[i] = (t % 900).toString(); + t /= 900; + } + for (i = chars.length - 1; i >= 0; i--) { + sb.Append(chars[i]); + } + idx += 6; + } + //Encode rest (remaining n<5 bytes if any) + for (var i:int = idx; i < startpos + count; i++) { + var ch:int = bytes[i] & 0xff; + sb.Append(String.fromCharCode(ch)); + } + } + + /* + private static void encodeNumeric(String msg, int startpos, int count, StringBuffer sb) { + int idx = 0; + StringBuffer tmp = new StringBuffer(count / 3 + 1); + BigInteger num900 = BigInteger.valueOf(900); + BigInteger num0 = BigInteger.valueOf(0); + while (idx < count - 1) { + tmp.setLength(0); + int len = Math.min(44, count - idx); + String part = '1' + msg.substring(startpos + idx, startpos + idx + len); + BigInteger bigint = new BigInteger(part); + do { + BigInteger c = bigint.mod(num900); + tmp.append((char) c.intValue()); + bigint = bigint.divide(num900); + } while (!bigint.equals(num0)); + + //Reverse temporary string + for (int i = tmp.length() - 1; i >= 0; i--) { + sb.append(tmp.charAt(i)); + } + idx += len; + } + } + */ + + // TODO either this needs to reimplement BigInteger's functionality to properly handle very + // large numeric strings, even in Java ME, or, we give up Java ME and use the version above + // with BigInteger + + private function encodeNumeric(msg:String, startpos:int, count:int, sb:StringBuilder ):void { + var idx:int = 0; + var tmp:StringBuilder = new StringBuilder(count / 3 + 1); + while (idx < count - 1) { + tmp.setLength(0); + var len:int = Math.min(44, count - idx); + var part:String = '1' + msg.substring(startpos + idx, startpos + idx + len); + var bigint:Number = parseFloat(part); + do { + var c:Number = Math.round((bigint % 900)+0.5); // cast to long + tmp.Append(String.fromCharCode(c)); + bigint = Math.round((bigint / 900)+0.5); // bigint /= 900 + } while (bigint != 0); + + //Reverse temporary string + for (var i:int = tmp.length - 1; i >= 0; i--) { + sb.Append(tmp.charAt(i)); + } + idx += len; + } + } + + private function isDigit(ch:String):Boolean { + return ch.charCodeAt(0) >= 48 && ch.charCodeAt(0) <= 57; + } + + private function isAlphaUpper(ch:String):Boolean { + return ch == ' ' || (ch.charCodeAt(0) >= 65 && ch.charCodeAt(0) <= 90); + } + + private function isAlphaLower(ch:String):Boolean { + return ch == ' ' || (ch.charCodeAt(0) >= 97 && ch.charCodeAt(0) <= 122); + } + + private function isMixed(ch:String):Boolean { + return MIXED[ch.charCodeAt(0)] != -1; + } + + private function isPunctuation(ch:String):Boolean { + return PUNCTUATION[ch.charCodeAt(0)] != -1; + } + + private function isText(ch:String):Boolean { + return ch == "\t" || ch == "\n" || ch == "\r" || (ch.charCodeAt(0) >= 32 && ch.charCodeAt(0) <= 126); + } + + /** + * Determines the number of consecutive characters that are encodable using numeric compaction. + * + * @param msg the message + * @param startpos the start position within the message + * @return the requested character count + */ + private function determineConsecutiveDigitCount(msg:String, startpos:int):int { + var count:int = 0; + var len:int = msg.length; + var idx:int = startpos; + if (idx < len) { + var ch:String = msg.charAt(idx); + while (isDigit(ch) && idx < len) { + count++; + idx++; + if (idx < len) { + ch = msg.charAt(idx); + } + } + } + return count; + } + + /** + * Determines the number of consecutive characters that are encodable using text compaction. + * + * @param msg the message + * @param startpos the start position within the message + * @return the requested character count + */ + private function determineConsecutiveTextCount(msg:String, startpos:int):int { + var len:int = msg.length; + var idx:int = startpos; + while (idx < len) { + var ch:String = msg.charAt(idx); + var numericCount:int = 0; + while (numericCount < 13 && isDigit(ch) && idx < len) { + numericCount++; + idx++; + if (idx < len) { + ch = msg.charAt(idx); + } + } + if (numericCount >= 13) { + return idx - startpos - numericCount; + } + if (numericCount > 0) { + //Heuristic: All text-encodable chars or digits are binary encodable + continue; + } + ch = msg.charAt(idx); + + //Check if character is encodable + if (!isText(ch)) { + break; + } + idx++; + } + return idx - startpos; + } + + /** + * Determines the number of consecutive characters that are encodable using binary compaction. + * + * @param msg the message + * @param bytes the message converted to a byte array + * @param startpos the start position within the message + * @return the requested character count + */ + private function determineConsecutiveBinaryCount(msg:String, bytes:Array, startpos:int):int { + var len:int = msg.length; + var idx:int = startpos; + while (idx < len) { + var ch:String = msg.charAt(idx); + var numericCount:int = 0; + + while (numericCount < 13 && isDigit(ch)) { + numericCount++; + //textCount++; + var i:int = idx + numericCount; + if (i >= len) { + break; + } + ch = msg.charAt(i); + } + if (numericCount >= 13) { + return idx - startpos; + } + var textCount:int = 0; + while (textCount < 5 && isText(ch)) { + textCount++; + i = idx + textCount; + if (i >= len) { + break; + } + ch = msg.charAt(i); + } + if (textCount >= 5) { + return idx - startpos; + } + ch = msg.charAt(idx); + + //Check if character is encodable + //Sun returns a ASCII 63 (?) for a character that cannot be mapped. Let's hope all + //other VMs do the same + if (bytes[idx] == 63 && ch != '?') { + throw new WriterException("Non-encodable character detected: " + ch + " (Unicode: " + ch.toString() + ')'); + } + idx++; + } + return idx - startpos; + } + + + +} + +} diff --git a/FairyGUI-as3/src/com/google/zxing/pdf417/encoder/PDF417Writer.as b/FairyGUI-as3/src/com/google/zxing/pdf417/encoder/PDF417Writer.as new file mode 100644 index 0000000..80c71b9 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/pdf417/encoder/PDF417Writer.as @@ -0,0 +1,123 @@ +/* + * Copyright 2011 ZXing authors + * + * Licensed 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 com.google.zxing.pdf417.encoder{ + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.Writer; +import com.google.zxing.common.BitMatrix; +import com.google.zxing.common.flexdatatypes.HashTable; +import com.google.zxing.common.flexdatatypes.IllegalArgumentException; +/** + * @author Jacob Haynes + */ +public class PDF417Writer implements Writer +{ + + public function encode(contents:String, format:BarcodeFormat=null, width:int=0, height:int=0, hints:HashTable=null):Object + { + if (format != BarcodeFormat.PDF417) { + throw new IllegalArgumentException("Can only encode PDF_417, but got " + format); + } + + var encoder:PDF417 = new PDF417(); + + //No error correction at the moment + var errorCorrectionLevel:int = 3; + encoder.generateBarcodeLogic(contents, errorCorrectionLevel); + + // Give it data to be encoded + //encoderExt.setData(content.getBytes()); + // Find the Error correction level automatically + + //encoderExt.encode(); + //encoderExt.createArray(); + var lineThickness:int = 3; + var aspectRatio:int = 8; + var originalScale:Array = encoder.getBarcodeMatrix().getScaledMatrix(lineThickness, aspectRatio * lineThickness); + + var rotated:Boolean = false; + var val1:Boolean = (height > width)?true:false; + var val2:Boolean = (originalScale[0].length < originalScale.length)?true:false; + if ((val1 && !val2) || (!val1 && val2)) + { + originalScale = rotateArray(originalScale); + rotated = true; + } + + var scaleX:int = width / originalScale[0].length; + var scaleY:int = height / originalScale.length; + + var scale:int; + if (scaleX < scaleY) { + scale = scaleX; + } else { + scale = scaleY; + } + + if (scale > 1) { + var scaledMatrix:Array = + encoder.getBarcodeMatrix().getScaledMatrix(scale * lineThickness, scale * aspectRatio * lineThickness); + if (rotated) { + scaledMatrix = rotateArray(scaledMatrix); + } + return bitMatrixFrombitArray(scaledMatrix); + } + return bitMatrixFrombitArray(originalScale); + } + + /** + * This takes an array holding the values of the PDF 417 + * + * @param input a byte array of information with 0 is black, and 1 is white + * @return BitMatrix of the input + */ + private static function bitMatrixFrombitArray(input:Array):BitMatrix { + //Creates a small whitespace boarder around the barcode + var whiteSpace:int = 30; + + //Creates the bitmatrix with extra space for whitespace + var output:BitMatrix = new BitMatrix(input.length + 2 * whiteSpace, input[0].length + 2 * whiteSpace); + output.clear(); + for (var ii:int = 0; ii < input.length; ii++) { + for (var jj:int = 0; jj < input[0].length; jj++) { + // Zero is white in the bytematrix + if (input[ii][jj] == 1) { + output._set(ii + whiteSpace, jj + whiteSpace); + } + } + } + var result:String = output.toString2(); + return output; + } + + /** + * Takes and rotates the it 90 degrees + */ + private static function rotateArray(bitarray:Array):Array { + var temp:Array = new Array();//byte[bitarray[0].length][bitarray.length]; + for (var ii:int = 0; ii < bitarray.length; ii++) { + // This makes the direction consistent on screen when rotating the + // screen; + var inverseii:int = bitarray.length - ii - 1; + for (var jj:int = 0; jj < bitarray[0].length; jj++) { + temp[jj][inverseii] = bitarray[ii][jj]; + } + } + return temp; + } +} +} diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/QRCodeReader.as b/FairyGUI-as3/src/com/google/zxing/qrcode/QRCodeReader.as new file mode 100644 index 0000000..c0f55f4 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/QRCodeReader.as @@ -0,0 +1,181 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode +{ + import com.google.zxing.BarcodeFormat; + import com.google.zxing.BinaryBitmap; + import com.google.zxing.DecodeHintType; + import com.google.zxing.NotFoundException; + import com.google.zxing.Reader; + import com.google.zxing.Result; + import com.google.zxing.ResultMetadataType; + import com.google.zxing.common.BitMatrix; + import com.google.zxing.common.DecoderResult; + import com.google.zxing.common.DetectorResult; + import com.google.zxing.common.flexdatatypes.HashTable; + import com.google.zxing.qrcode.decoder.Decoder; + import com.google.zxing.qrcode.detector.Detector; + + public class QRCodeReader implements Reader + { + + private static var NO_POINTS:Array = new Array(0); + private var decoder:Decoder = new Decoder(); + + public function reset():void + { + // do nothing + } + + protected function getDecoder():Decoder + { + return decoder; + } + + /** + * Locates and decodes a QR code in an image. + * + * @return a String representing the content encoded by the QR code + * @throws ReaderException if a QR code cannot be found, or cannot be decoded + */ + + //public function decode(image:MonochromeBitmapSource):Result + //{ + // try + // { + // return decode(image, null); + // } + // catch(e:Exception) + // { + // throw new ReaderException(e.message); + // } + // + //} + + public function decode(image:BinaryBitmap, hints:HashTable = null):Result + { + var decoderResult:DecoderResult; + var points:Array; + if (hints != null && hints.ContainsKey(DecodeHintType.PURE_BARCODE)) + { + var bits:BitMatrix = extractPureBits(image.getBlackMatrix()); + decoderResult = decoder.decode(bits); + points = NO_POINTS; + } + else + { + var imageres:BitMatrix = image.getBlackMatrix(); + //imageres.fromByteArray(imageres.width,imageres.height,[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119422972, 524287, 0, 0, 0, 0, -262144, -470285825, -118374385, 524287, 0, 0, 0, 0, -262144, -470285825, -118374385, 524287, 0, 0, 0, 0, -131072, -470285825, -127811569, 491520, 0, 0, 0, 0, 1835008, -470285856, 939525104, 491520, 0, 0, 0, 0, 1835008, -470285856, 939525104, 491520, 0, 0, 0, 0, 786432, -470285888, 939525104, 491520, 0, 0, 0, 0, 1835008, -1635835422, 954205127, 495612, 0, 0, 0, 0, -15990784, 473952707, 955253647, 495612, 0, 0, 0, 0, -15990784, 473952707, 955253647, 495612, 0, 0, 0, 0, -14942208, 473952739, 955253711, 495612, 0, 0, 0, 0, -14942208, -67046973, 955253744, 495614, 0, 0, 0, 0, -15990784, -67079709, 955253744, 495612, 0, 0, 0, 0, -15990784, -67079709, 955253752, 495614, 0, 0, 0, 0, -15990784, -470257181, 955382799, 495612, 0, 0, 0, 0, -15990784, -470257181, 955382799, 495614, 0, 0, 0, 0, -15990784, -470257213, 955382799, 495612, 0, 0, 0, 0, -31719424, -536088125, 955254777, 491520, 0, 0, 0, 0, 1835008, -536350272, 955253752, 491520, 0, 0, 0, 0, 1835008, -536350272, 955253744, 491520, 0, 0, 0, 0, 1835008, -536350240, -118488072, 524287, 0, 0, 0, 0, -262144, 473494015, -118373489, 524287, 0, 0, 0, 0, -262144, 473461247, -118373497, 524287, 0, 0, 0, 0, -262144, 473461247, -118373489, 262143, 0, 0, 0, 0, 0, 473952256, 1033103, 0, 0, 0, 0, 0, 0, 473952256, 1033095, 0, 0, 0, 0, 0, 0, 473952256, 1033103, 0, 0, 0, 0, 0, 0, 507502592, -266345594, 2047, 0, 0, 0, 0, -14942208, 532677119, -117440528, 4095, 0, 0, 0, 0, -14942208, 532677119, -117440528, 4095, 0, 0, 0, 0, -14942208, 532677119, -117440528, 4095, 0, 0, 0, 0, 253493248, -533200836, -15844352, 28703, 0, 0, 0, 0, 119275520, -533200868, -15852544, 28703, 0, 0, 0, 0, 119275520, -533200836, -15852544, 28703, 0, 0, 0, 0, 251658240, -524160, -1073611713, 227, 0, 0, 0, 0, 2145386496, -523840, -1073611649, 227, 0, 0, 0, 0, 2145386496, -523840, -1073611649, 227, 0, 0, 0, 0, 2145386496, -261952, -805183361, 65763, 0, 0, 0, 0, 14680064, -532709376, -118366088, 491747, 0, 0, 0, 0, 14680064, -532709376, -118374288, 491747, 0, 0, 0, 0, 14680064, -532742144, -126754696, 229601, 0, 0, 0, 0, -253755392, 3735551, 1048575, 28896, 0, 0, 0, 0, -119537664, 3702783, 1048575, 28896, 0, 0, 0, 0, -119537664, 3702783, 1048575, 28896, 0, 0, 0, 0, -101711872, 29389119, -15859712, 28703, 0, 0, 0, 0, -262144, 29388863, -15859712, 28703, 0, 0, 0, 0, -262144, 29388863, -15859712, 28703, 0, 0, 0, 0, -262144, 29421599, -15859712, 14367, 0, 0, 0, 0, -2147483648, 470286275, -118373392, 3843, 0, 0, 0, 0, -2147483648, 470286275, -118365192, 3843, 0, 0, 0, 0, -2147483648, 503840707, -118373384, 3843, 0, 0, 0, 0, -2147483648, 3993663, -956301185, 227, 0, 0, 0, 0, -2147483648, 3698751, -956301185, 227, 0, 0, 0, 0, -2147483648, 3698751, -956301185, 227, 0, 0, 0, 0, -2147483648, 3993661, 52431098, 193, 0, 0, 0, 0, 133955584, 473956348, 15859696, 0, 0, 0, 0, 0, 133955584, 507510780, 15859704, 0, 0, 0, 0, 0, 133955584, 473956348, 15859704, 0, 0, 0, 0, 0, -119537664, -33062909, -15852529, 28927, 0, 0, 0, 0, -119537664, -33062909, -15852529, 28927, 0, 0, 0, 0, -119537664, -66617341, -15852529, 28927, 0, 0, 0, 0, 132120576, -532709184, -1059004353, 3, 0, 0, 0, 0, 132120576, -532708928, -1057890177, 3, 0, 0, 0, 0, 132120576, -532708928, -1057890177, 3, 0, 0, 0, 0, 132120576, -532709184, -1071521665, 7, 0, 0, 0, 0, -2015363072, -532680673, -1073618824, 31, 0, 0, 0, 0, -2015363072, -532680641, -1073618832, 31, 0, 0, 0, 0, -2015363072, -532680641, -1073618832, 31, 0, 0, 0, 0, -2015363072, 536842239, -917625, 233471, 0, 0, 0, 0, -2015363072, 536842239, -917625, 495615, 0, 0, 0, 0, -2015363072, 536809471, -917617, 495615, 0, 0, 0, 0, 0, 507502592, 16646144, 245566, 0, 0, 0, 0, 0, 507506688, 16646144, 32540, 0, 0, 0, 0, 0, 507506688, 16646144, 32540, 0, 0, 0, 0, 0, 205512704, 16646144, 32540, 0, 0, 0, 0, -262144, 29360639, 956177520, 3868, 0, 0, 0, 0, -262144, 29360639, 956177528, 3868, 0, 0, 0, 0, -262144, 29360639, 956177528, 3868, 0, 0, 0, 0, 1835008, 507507136, 15851647, 260348, 0, 0, 0, 0, 1835008, 507507136, 15851647, 520444, 0, 0, 0, 0, 1835008, 507507136, 15851647, 520444, 0, 0, 0, 0, -31719424, 101183939, 15851522, 258302, 0, 0, 0, 0, -14942208, 29880771, -917632, 31, 0, 0, 0, 0, -14942208, 29880771, -917632, 31, 0, 0, 0, 0, -14942208, 63435203, -983168, 31, 0, 0, 0, 0, -14942208, 533197251, 117440519, 262142, 0, 0, 0, 0, -14942208, 533197251, 117440519, 524284, 0, 0, 0, 0, -14942208, 533197251, 117440519, 524286, 0, 0, 0, 0, -14942208, 3699139, -15851536, 196383, 0, 0, 0, 0, -14942208, 3699139, -15851528, 32543, 0, 0, 0, 0, -14942208, 3699139, -15851528, 32543, 0, 0, 0, 0, 1835008, -536378944, 262084603, 32287, 0, 0, 0, 0, 1835008, -536378944, 134210559, 28672, 0, 0, 0, 0, 1835008, -536378944, 134210559, 28672, 0, 0, 0, 0, -262144, -536673824, 134210559, 28672, 0, 0, 0, 0, -262144, -63409665, 117571583, 4064, 0, 0, 0, 0, -262144, -63409665, 117571583, 4064, 0, 0, 0, 0, -262144, -63409665, 117571583, 4064, 0, 0, 0, 0, 0, 0, 0, 960, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]); + var wop:String = imageres.toString2(); + var detector:Detector = new Detector(imageres); + var result2:DetectorResult = detector.detect(hints); + var detectRes:BitMatrix = result2.getBits(); + var a:String = detectRes.toString2(); + decoderResult = decoder.decode(detectRes, hints); + points = result2.getPoints(); + } + + var result:Result = new Result(decoderResult.getText(), decoderResult.getRawBytes(), points, BarcodeFormat.QR_CODE); + if (decoderResult.getByteSegments() != null) + { + result.putMetadata(ResultMetadataType.BYTE_SEGMENTS, decoderResult.getByteSegments()); + } + return result; + } + + /** + * This method detects a barcode in a "pure" image -- that is, pure monochrome image + * which contains only an unrotated, unskewed, image of a barcode, with some white border + * around it. This is a specialized method that works exceptionally fast in this special + * case. + */ + private static function extractPureBits(image:BitMatrix):BitMatrix + { + var leftTopBlack:Array = image.getTopLeftOnBit(); + var rightBottomBlack:Array = image.getBottomRightOnBit(); + if (leftTopBlack == null || rightBottomBlack == null) + { + throw NotFoundException.getNotFoundInstance(); + } + + var moduleSize:int = moduleSize(leftTopBlack, image); + var top:int = leftTopBlack[1]; + var bottom:int = rightBottomBlack[1]; + var left:int = leftTopBlack[0]; + var right:int = rightBottomBlack[0]; + + var matrixWidth:int = int((right - left + 1) / moduleSize); + var matrixHeight:int = int((bottom - top + 1) / moduleSize); + if (matrixWidth <= 0 || matrixHeight <= 0) + { + throw NotFoundException.getNotFoundInstance(); + } + if (matrixHeight != matrixWidth) + { + // Only possibly decode square regions + throw NotFoundException.getNotFoundInstance(); + } + + // Push in the "border" by half the module width so that we start + // sampling in the middle of the module. Just in case the image is a + // little off, this will help recover. + var nudge:int = moduleSize >> 1; + top += nudge; + left += nudge; + + // Now just read off the bits + var bits:BitMatrix = new BitMatrix(matrixWidth, matrixHeight); + for (var y:int = 0; y < matrixHeight; y++) + { + var iOffset:int = top + y * moduleSize; + for (var x:int = 0; x < matrixWidth; x++) + { + if (image._get(left + x * moduleSize, iOffset)) + { + bits._set(x, y); + } + } + } + return bits; + + } + + private static function moduleSize(leftTopBlack:Array, image:BitMatrix):int + { + var height:int = image.getHeight(); + var width:int = image.getWidth(); + var x:int = leftTopBlack[0]; + var y:int = leftTopBlack[1]; + while (x < width && y < height && image._get(x, y)) + { + x++; + y++; + } + if (x == width || y == height) + { + throw NotFoundException.getNotFoundInstance(); + } + + var moduleSize:int = x - leftTopBlack[0]; + if (moduleSize == 0) + { + throw NotFoundException.getNotFoundInstance(); + } + return moduleSize; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/QRCodeWriter.as b/FairyGUI-as3/src/com/google/zxing/qrcode/QRCodeWriter.as new file mode 100644 index 0000000..7484cea --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/QRCodeWriter.as @@ -0,0 +1,111 @@ +/* + * Copyright 2008 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode +{ + import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; + import com.google.zxing.common.flexdatatypes.HashTable; + import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + import com.google.zxing.common.ByteMatrix; + import com.google.zxing.qrcode.encoder.QRCode; + import com.google.zxing.qrcode.encoder.Encoder; + import com.google.zxing.BarcodeFormat; + import com.google.zxing.EncodeHintType; + import com.google.zxing.Writer; + import com.google.zxing.common.BitMatrix; + + public class QRCodeWriter implements Writer + { + + private static var QUIET_ZONE_SIZE:int = 0; + + public function encode(contents:String, format:BarcodeFormat = null, width:int = 0, height:int = 0, hints:HashTable = null):Object + { + if (contents == null || contents.length == 0) + { + throw new IllegalArgumentException("Found empty contents"); + } + + if (format != BarcodeFormat.QR_CODE) + { + throw new IllegalArgumentException("Can only encode QR_CODE, but got " + format); + } + + if (width < 0 || height < 0) + { + throw new IllegalArgumentException("Requested dimensions are too small: " + width + 'x' + height); + } + + var errorCorrectionLevel:ErrorCorrectionLevel = ErrorCorrectionLevel.L; + if (hints != null) + { + var requestedECLevel:ErrorCorrectionLevel = (hints.getValueByKey(EncodeHintType.ERROR_CORRECTION) as ErrorCorrectionLevel); + if (requestedECLevel != null) + { + errorCorrectionLevel = requestedECLevel; + } + } + + var code:QRCode = new QRCode(); + Encoder.encode(contents, errorCorrectionLevel, code, hints); + return renderResult(code, width, height); + } + + // Note that the input matrix uses 0 == white, 1 == black, while the output matrix uses + // 0 == black, 255 == white (i.e. an 8 bit greyscale bitmap). + private static function renderResult(code:QRCode, width:int, height:int):BitMatrix + { + var input:ByteMatrix = code.getMatrix(); + var inputWidth:int = input.width(); + var inputHeight:int = input.height(); + var qrWidth:int = inputWidth + (QUIET_ZONE_SIZE << 1); + var qrHeight:int = inputHeight + (QUIET_ZONE_SIZE << 1); + var outputWidth:int = Math.max(width, qrWidth); + var outputHeight:int = Math.max(height, qrHeight); + + var multiple:int = Math.min(outputWidth / qrWidth, outputHeight / qrHeight); + // Padding includes both the quiet zone and the extra white pixels to accomodate the requested + // dimensions. For example, if input is 25x25 the QR will be 33x33 including the quiet zone. + // If the requested size is 200x160, the multiple will be 4, for a QR of 132x132. These will + // handle all the padding from 100x100 (the actual QR) up to 200x160. + var leftPadding:int = (outputWidth - (inputWidth * multiple)) / 2; + var topPadding:int = (outputHeight - (inputHeight * multiple)) / 2; + var output:BitMatrix = new BitMatrix(outputHeight, outputWidth); + + for (var inputY:int = 0, outputY:int = topPadding; inputY < inputHeight; inputY++, outputY += multiple) + { + // Write the contents of this row of the barcode + for (var inputX:int = 0, outputX:int = leftPadding; inputX < inputWidth; inputX++, outputX += multiple) + { + if (input._get(inputX, inputY) == 1) + { + output.setRegion(outputX, outputY, multiple, multiple); + } + } + } + return output; + } + + private static function setRowColor(row:Array, value:int):void + { + for (var x:int = 0; x < row.length; x++) + { + row[x] = value; + } + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/BitMatrixParser.as b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/BitMatrixParser.as new file mode 100644 index 0000000..e9b0f1b --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/BitMatrixParser.as @@ -0,0 +1,234 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.decoder +{ + + public class BitMatrixParser + { + import com.google.zxing.common.BitMatrix; + import com.google.zxing.common.zxingByteArray; + import com.google.zxing.ReaderException; + + private var bitMatrix:BitMatrix; + private var parsedVersion:Version; + private var parsedFormatInfo:FormatInformation; + + /** + * @param bitMatrix {@link BitMatrix} to parse + * @throws ReaderException if dimension is not >= 21 and 1 mod 4 + */ + public function BitMatrixParser(bitMatrix:BitMatrix) + { + var dimension:int = bitMatrix.getHeight(); + if ((dimension < 21) || ((dimension & 0x03) != 1)) + { + throw new ReaderException("BitMatrixParser : BitMatrixParser : dimension (" + dimension + " less than 21 or not a power of 3)"); + } + this.bitMatrix = bitMatrix; + } + + /** + *

Reads format information from one of its two locations within the QR Code.

+ * + * @return {@link FormatInformation} encapsulating the QR Code's format info + * @throws ReaderException if both format information locations cannot be parsed as + * the valid encoding of format information + */ + public function readFormatInformation():FormatInformation + { + + if (parsedFormatInfo != null) + { + return parsedFormatInfo; + } + + // Read top-left format info bits + var formatInfoBits1:int = 0; + for (var j:int = 0; j < 6; j++) + { + formatInfoBits1 = copyBit(j, 8, formatInfoBits1); + } + // .. and skip a bit in the timing pattern ... + formatInfoBits1 = copyBit(7, 8, formatInfoBits1); + formatInfoBits1 = copyBit(8, 8, formatInfoBits1); + formatInfoBits1 = copyBit(8, 7, formatInfoBits1); + // .. and skip a bit in the timing pattern ... + for (var i:int = 5; i >= 0; i--) + { + formatInfoBits1 = copyBit(8, i, formatInfoBits1); + } + + var dimension:int = bitMatrix.getHeight(); + var formatInfoBits2:int = 0; + var jMin:int = dimension - 7; + for (var j1:int = dimension - 1; j1 >= jMin; j1--) + { + formatInfoBits2 = copyBit(8, j1, formatInfoBits2); + } + for (var i1:int = dimension - 8; i1 < dimension; i1++) + { + formatInfoBits2 = copyBit(i1, 8, formatInfoBits2); + } + + parsedFormatInfo = FormatInformation.decodeFormatInformation(formatInfoBits1, formatInfoBits2); + if (parsedFormatInfo != null) + { + return parsedFormatInfo; + } + throw new ReaderException("BitMatrixParser : readFormatInformation : parsedFormatInfo == null"); + } + + /** + *

Reads version information from one of its two locations within the QR Code.

+ * + * @return {@link Version} encapsulating the QR Code's version + * @throws ReaderException if both version information locations cannot be parsed as + * the valid encoding of version information + */ + public function readVersion():Version + { + + if (parsedVersion != null) + { + return parsedVersion; + } + + var dimension:int = bitMatrix.getHeight(); + + var provisionalVersion:int = (dimension - 17) >> 2; + if (provisionalVersion <= 6) + { + return Version.getVersionForNumber(provisionalVersion); + } + + // Read top-right version info: 3 wide by 6 tall + var versionBits:int = 0; + var jMin:int = dimension - 11; + for (var i:int = 5; i >= 0; i--) + { + for (var j2:int = dimension - 9; j2 >= jMin; j2--) + { + versionBits = copyBit(j2, i, versionBits); + } + } + + parsedVersion = Version.decodeVersionInformation(versionBits); + if (parsedVersion != null && parsedVersion.getDimensionForVersion() == dimension) + { + return parsedVersion; + } + + // Hmm, failed. Try bottom left: 6 wide by 3 tall + versionBits = 0; + var iMin:int = dimension - 11; + for (var j:int = 5; j >= 0; j--) + { + for (var i2:int = dimension - 9; i2 >= iMin; i2--) + { + versionBits = copyBit(j, i2, versionBits); + } + } + + parsedVersion = Version.decodeVersionInformation(versionBits); + if (parsedVersion != null && parsedVersion.getDimensionForVersion() == dimension) + { + return parsedVersion; + } + throw new ReaderException("BitMatrixParser : readVersion : could not read version"); + } + + private function copyBit(i:int, j:int, versionBits:int):int + { + return bitMatrix._get(i, j) ? (versionBits << 1) | 0x1 : versionBits << 1; + } + + /** + *

Reads the bits in the {@link BitMatrix} representing the finder pattern in the + * correct order in order to reconstitute the codewords bytes contained within the + * QR Code.

+ * + * @return bytes encoded within the QR Code + * @throws ReaderException if the exact number of bytes expected is not read + */ + public function readCodewords():zxingByteArray + { + + var formatInfo:FormatInformation = readFormatInformation(); + var version:Version = readVersion(); + + // Get the data mask for the format used in this QR Code. This will exclude + // some bits from reading as we wind through the bit matrix. + var dataMask:DataMaskBase; + var ref:int = formatInfo.getDataMask(); + dataMask = DataMask.forReference(ref); + var dimension:int = bitMatrix.getHeight(); + dataMask.unmaskBitMatrix(bitMatrix, dimension); + + var functionPattern:BitMatrix = version.buildFunctionPattern(); + + var readingUp:Boolean = true; + var result:zxingByteArray = new zxingByteArray(version.getTotalCodewords()); + var resultOffset:int = 0; + var currentByte:int = 0; + var bitsRead:int = 0; + // Read columns in pairs, from right to left + for (var j:int = dimension - 1; j > 0; j -= 2) + { + if (j == 6) + { + // Skip whole column with vertical alignment pattern; + // saves time and makes the other code proceed more cleanly + j--; + } + // Read alternatingly from bottom to top then top to bottom + for (var count:int = 0; count < dimension; count++) + { + var i:int = readingUp ? dimension - 1 - count : count; + for (var col:int = 0; col < 2; col++) + { + // Ignore bits covered by the function pattern + if (!functionPattern._get(j - col, i)) + { + // Read a bit + bitsRead++; + currentByte <<= 1; + if (bitMatrix._get(j - col, i)) + { + currentByte |= 1; + } + // If we've made a whole byte, save it off + if (bitsRead == 8) + { + result.setByte(resultOffset, currentByte); + resultOffset++; + bitsRead = 0; + currentByte = 0; + } + } + } + } + readingUp = !readingUp; // switch directions + } + + if (resultOffset != version.getTotalCodewords()) + { + throw new ReaderException("BitMatrixParser : readCodewords : resultOffset (" + resultOffset + ") != totalcodewords (" + version.getTotalCodewords() + ")"); + } + return result; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataBlock.as b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataBlock.as new file mode 100644 index 0000000..c6accaa --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataBlock.as @@ -0,0 +1,138 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.decoder +{ + public class DataBlock + { + import com.google.zxing.common.zxingByteArray; + + //debug + public function get NumDataCodewords():int + { + return numDataCodewords; + } + + public function get Codewords():Array + { + return codewords; + } + + //UPGRADE_NOTE: Final was removed from the declaration of 'numDataCodewords '. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1003'" + private var numDataCodewords:int; + //UPGRADE_NOTE: Final was removed from the declaration of 'codewords '. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1003'" + private var codewords:Array; + + public function DataBlock(numDataCodewords:int, codewords:Array) + { + this.numDataCodewords = numDataCodewords; + this.codewords = codewords; + } + + ///

When QR Codes use multiple data blocks, they are actually interleave the bytes of each of them. + /// That is, the first byte of data block 1 to n is written, then the second bytes, and so on. This + /// method will separate the data into original blocks.

+ /// + ///
+ /// bytes as read directly from the QR Code + /// + /// version of the QR Code + /// + /// error-correction level of the QR Code + /// + /// {@link DataBlock}s containing original bytes, "de-interleaved" from representation in the + /// QR Code + /// + public static function getDataBlocks( rawCodewords:zxingByteArray, version:Version, ecLevel:ErrorCorrectionLevel):Array + { + // Figure out the number and size of data blocks used by this version and + // error correction level + var ecBlocks:ECBlocks = version.getECBlocksForLevel(ecLevel); + + // First count the total number of data blocks + var totalBlocks:int = 0; + var ecBlockArray:Array = ecBlocks.getECBlocks(); + for (var i:int = 0; i < ecBlockArray.length; i++) + { + totalBlocks += ecBlockArray[i].getCount(); + } + + // Now establish DataBlocks of the appropriate size and number of data codewords + var result:Array = new Array(totalBlocks); + var numResultBlocks:int = 0; + for (var j:int = 0; j < ecBlockArray.length; j++) + { + var ecBlock:ECB = ecBlockArray[j]; + for (var i3:int = 0; i3 < ecBlock.getCount(); i3++) + { + var numDataCodewords:int = ecBlock.getDataCodewords(); + //var numBlockCodewords:int = ecBlocks.getTotalECCodewords() + numDataCodewords; + var numBlockCodewords:int = ecBlocks.getECCodewordsPerBlock() + numDataCodewords; + result[numResultBlocks] = new DataBlock(numDataCodewords, new Array(numBlockCodewords)); + numResultBlocks++; + } + } + + // All blocks have the same amount of data, except that the last n + // (where n may be 0) have 1 more byte. Figure out where these start. + var shorterBlocksTotalCodewords:int = result[0].codewords.length; + var longerBlocksStartAt:int = result.length - 1; + while (longerBlocksStartAt >= 0) + { + var numCodewords:int = result[longerBlocksStartAt].codewords.length; + if (numCodewords == shorterBlocksTotalCodewords) + { + break; + } + if (numCodewords != shorterBlocksTotalCodewords + 1) + { + throw new Error("Data block sizes differ by more than 1"); + } + longerBlocksStartAt--; + } + longerBlocksStartAt++; + + var shorterBlocksNumDataCodewords:int = shorterBlocksTotalCodewords - ecBlocks.getECCodewordsPerBlock(); + // The last elements of result may be 1 element longer; + // first fill out as many elements as all of them have + var rawCodewordsOffset:int = 0; + for (var i2:int = 0; i2 < shorterBlocksNumDataCodewords; i2++) + { + for (var j2:int = 0; j2 < numResultBlocks; j2++) + { + result[j2].codewords[i2] = rawCodewords.getByte(rawCodewordsOffset++); + } + } + // Fill out the last data block in the longer ones + for (var j3:int = longerBlocksStartAt; j3 < numResultBlocks; j3++) + { + result[j3].codewords[shorterBlocksNumDataCodewords] = rawCodewords.getByte(rawCodewordsOffset++); + } + // Now add in error correction blocks + var max:int = result[0].codewords.length; + for (var i4 :int= shorterBlocksNumDataCodewords; i4 < max; i4++) + { + for (var j4:int = 0; j4 < numResultBlocks; j4++) + { + var iOffset:int = j4 < longerBlocksStartAt ? i4 : i4 + 1; + result[j4].codewords[iOffset] = rawCodewords.getByte(rawCodewordsOffset++); + } + } + + return result; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask.as b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask.as new file mode 100644 index 0000000..4e83574 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask.as @@ -0,0 +1,62 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.decoder +{ + import com.google.zxing.qrcode.decoder.DataMaskBase; + import com.google.zxing.qrcode.decoder.DataMask000; + import com.google.zxing.qrcode.decoder.DataMask001; + import com.google.zxing.qrcode.decoder.DataMask010; + import com.google.zxing.qrcode.decoder.DataMask011; + import com.google.zxing.qrcode.decoder.DataMask100; + import com.google.zxing.qrcode.decoder.DataMask101; + import com.google.zxing.qrcode.decoder.DataMask110; + import com.google.zxing.qrcode.decoder.DataMask111; + import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + +public class DataMask +{ + public function DataMask() {} + + private static var DATA_MASKS:Array = [ + new DataMask000(), + new DataMask001(), + new DataMask010(), + new DataMask011(), + new DataMask100(), + new DataMask101(), + new DataMask110(), + new DataMask111(), + ]; + + + + + /** + * @param reference a value between 0 and 7 indicating one of the eight possible + * data mask patterns a QR Code may use + * @return {@link DataMask} encapsulating the data mask pattern + */ + public static function forReference(reference:int):DataMaskBase + { + if (reference < 0 || reference > 7) + { + throw new IllegalArgumentException("QRCode : Decoder : DataMask : forReference : reference invalid"); + } + return DATA_MASKS[reference]; + } +} +} diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask000.as b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask000.as new file mode 100644 index 0000000..d64fb97 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask000.as @@ -0,0 +1,30 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.decoder +{ + import com.google.zxing.qrcode.decoder.DataMaskBase; + /// 000: mask bits for which (i + j) mod 2 == 0 + public class DataMask000 extends DataMaskBase + { + + public override function isMasked(i:int, j:int):Boolean + { + return ((i + j) & 0x01) == 0; + } + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask001.as b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask001.as new file mode 100644 index 0000000..52a6b69 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask001.as @@ -0,0 +1,32 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.decoder +{ + import com.google.zxing.qrcode.decoder.DataMask; + + /** + * 001: mask bits for which x mod 2 == 0 + */ + public class DataMask001 extends DataMaskBase + { + + public override function isMasked(i:int, j:int):Boolean + { + return (i & 0x01) == 0; + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask010.as b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask010.as new file mode 100644 index 0000000..411ef7f --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask010.as @@ -0,0 +1,35 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.decoder +{ + import com.google.zxing.qrcode.decoder.DataMaskBase; + /** + * 010: mask bits for which y mod 3 == 0 + */ + public class DataMask010 extends DataMaskBase + { + + + public override function isMasked(i:int, j:int):Boolean + { + return j % 3 == 0; + } + } + + + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask011.as b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask011.as new file mode 100644 index 0000000..00b656a --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask011.as @@ -0,0 +1,31 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.decoder +{ + import com.google.zxing.qrcode.decoder.DataMaskBase; + + /** + * 011: mask bits for which (x + y) mod 3 == 0 + */ + public class DataMask011 extends DataMaskBase + { + public override function isMasked(i:int, j:int):Boolean { + return int((i + j) % 3) == 0; + } + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask100.as b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask100.as new file mode 100644 index 0000000..fb000ff --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask100.as @@ -0,0 +1,33 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.decoder +{ + import com.google.zxing.qrcode.decoder.DataMaskBase; + + /** + * 100: mask bits for which (x/2 + y/3) mod 2 == 0 + */ + public class DataMask100 extends DataMaskBase { + + public override function isMasked(i:int, j:int):Boolean { + return (((i >>> 1) + (int(j /3))) & 0x01) == 0; + } + } + + + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask101.as b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask101.as new file mode 100644 index 0000000..bfafe7f --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask101.as @@ -0,0 +1,35 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.decoder +{ + import com.google.zxing.qrcode.decoder.DataMaskBase; + + /** + * 101: mask bits for which xy mod 2 + xy mod 3 == 0 + */ + public class DataMask101 extends DataMaskBase + { + + public override function isMasked(i:int, j:int):Boolean + { + var temp:int = i * j; + return (temp & 0x01) + (int(temp % 3)) == 0; + } + } + + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask110.as b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask110.as new file mode 100644 index 0000000..44f458e --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask110.as @@ -0,0 +1,35 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.decoder +{ + import com.google.zxing.qrcode.decoder.DataMaskBase; + + /** + * 110: mask bits for which (xy mod 2 + xy mod 3) mod 2 == 0 + */ + public class DataMask110 extends DataMaskBase + { + + public override function isMasked(i:int, j:int):Boolean + { + var temp:int = i * j; + return (((temp & 0x01) + (int(temp % 3))) & 0x01) == 0; + } + } + + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask111.as b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask111.as new file mode 100644 index 0000000..2cdd0ed --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMask111.as @@ -0,0 +1,32 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.decoder +{ + import com.google.zxing.qrcode.decoder.DataMaskBase; + + /** + * 111: mask bits for which ((x+y)mod 2 + xy mod 3) mod 2 == 0 + */ + public class DataMask111 extends DataMaskBase + { + + public override function isMasked(i:int, j:int):Boolean { + return ((((i + j) & 0x01) + (int((i * j) % 3))) & 0x01) == 0; + } + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMaskBase.as b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMaskBase.as new file mode 100644 index 0000000..d7cea6f --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DataMaskBase.as @@ -0,0 +1,44 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.decoder +{ + import com.google.zxing.common.BitMatrix; + import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + + public class DataMaskBase + { + /** + *

Implementations of this method reverse the data masking process applied to a QR Code and + * make its bits ready to read.

+ * + * @param bits representation of QR Code bits + * @param dimension dimension of QR Code, represented by bits, being unmasked + */ + public function unmaskBitMatrix(bits:BitMatrix , dimension:int):void { + for (var i:int = 0; i < dimension; i++) { + for (var j:int = 0; j < dimension; j++) { + if (isMasked(i, j)) { + bits.flip(j, i); + } + } + } + } + + public function isMasked(i:int, j:int):Boolean {return false;} + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DecodedBitStreamParser.as b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DecodedBitStreamParser.as new file mode 100644 index 0000000..dcd7ba1 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/DecodedBitStreamParser.as @@ -0,0 +1,411 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.decoder +{ + import com.google.zxing.DecodeHintType; + import com.google.zxing.FormatException; + import com.google.zxing.common.BitSource; + import com.google.zxing.common.CharacterSetECI; + import com.google.zxing.common.DecoderResult; + import com.google.zxing.common.flexdatatypes.ArrayList; + import com.google.zxing.common.flexdatatypes.HashTable; + import com.google.zxing.common.flexdatatypes.StringBuilder; + import flash.utils.ByteArray; + + ///

QR Codes can encode text as bits in one of several modes, and can use multiple modes + /// in one QR Code. This class decodes the bits back into text.

+ /// + ///

See ISO 18004:2006, 6.4.3 - 6.4.7

+ /// + ///
+ /// srowen@google.com (Sean Owen) + /// + public class DecodedBitStreamParser + { + import com.google.zxing.common.BitSource; + import com.google.zxing.common.flexdatatypes.StringBuilder; + import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + import com.google.zxing.ReaderException; + import com.google.zxing.common.CharacterSetECI; + import com.google.zxing.common.DecoderResult; + import com.google.zxing.common.flexdatatypes.ArrayList; + + /** + *

QR Codes can encode text as bits in one of several modes, and can use multiple modes + * in one QR Code. This class decodes the bits back into text.

+ * + *

See ISO 18004:2006, 6.4.3 - 6.4.7

+ * + * @author Sean Owen + */ + private static var ALPHANUMERIC_CHARS:Array = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ' ', '$', '%', '*', '+', '-', '.', '/', ':']; + private static const GB2312_SUBSET:int = 1; + + public function DecodedBitStreamParser() + { + } + + public static function decode(bytes:Array, version:Version, ecLevel:ErrorCorrectionLevel, hints:HashTable):DecoderResult + { + var bits:BitSource = new BitSource(bytes); + var result:StringBuilder = new StringBuilder(50); + var currentCharacterSetECI:CharacterSetECI = null; + var fc1InEffect:Boolean = false; + var byteSegments:ArrayList = new ArrayList(1); + var mode:Mode; + do + { + // While still another segment to read... + if (bits.available() < 4) + { + // OK, assume we're done. Really, a TERMINATOR mode should have been recorded here + mode = Mode.TERMINATOR; + } + else + { + try + { + mode = Mode.forBits(bits.readBits(4)); // mode is encoded by 4 bits + } + catch (iae:IllegalArgumentException) + { + throw FormatException.getFormatInstance(); + } + } + if (!mode.Equals(Mode.TERMINATOR)) + { + if (mode.Equals(Mode.FNC1_FIRST_POSITION) || mode.Equals(Mode.FNC1_SECOND_POSITION)) + { + // We do little with FNC1 except alter the parsed result a bit according to the spec + fc1InEffect = true; + } + else if (mode.Equals(Mode.STRUCTURED_APPEND)) + { + // not really supported; all we do is ignore it + // Read next 8 bits (symbol sequence #) and 8 bits (parity data), then continue + bits.readBits(16); + } + else if (mode.Equals(Mode.ECI)) + { + // Count doesn't apply to ECI + var value:int = parseECIValue(bits); + currentCharacterSetECI = CharacterSetECI.getCharacterSetECIByValue(value); + if (currentCharacterSetECI == null) + { + throw FormatException.getFormatInstance(); + } + } + else + { + // First handle Hanzi mode which does not start with character count + if (mode.Equals(Mode.HANZI)) + { + //chinese mode contains a sub set indicator right after mode indicator + var subset:int = bits.readBits(4); + var countHanzi:int = bits.readBits(mode.getCharacterCountBits(version)); + if (subset == GB2312_SUBSET) + { + decodeHanziSegment(bits, result, countHanzi); + } + } + else + { + // "Normal" QR code modes: + // How many characters will follow, encoded in this mode? + var count:int = bits.readBits(mode.getCharacterCountBits(version)); + if (mode.Equals(Mode.NUMERIC)) + { + decodeNumericSegment(bits, result, count); + } + else if (mode.Equals(Mode.ALPHANUMERIC)) + { + decodeAlphanumericSegment(bits, result, count, fc1InEffect); + } + else if (mode.Equals(Mode.BYTE)) + { + decodeByteSegment(bits, result, count, currentCharacterSetECI, byteSegments, hints); + } + else if (mode.Equals(Mode.KANJI)) + { + decodeKanjiSegment(bits, result, count); + } + else + { + throw FormatException.getFormatInstance(); + } + } + } + } + } while (!mode.Equals(Mode.TERMINATOR)); + + return new DecoderResult(bytes, result.toString(), byteSegments.isEmpty() ? null : byteSegments, ecLevel == null ? null : ecLevel.toString()); + } + + /** + * See specification GBT 18284-2000 + */ + private static function decodeHanziSegment(bits:BitSource, result:StringBuilder, count:int):void + { + // Don't crash trying to read more bits than we have available. + if (count * 13 > bits.available()) + { + throw FormatException.getFormatInstance(); + } + + // Each character will require 2 bytes. Read the characters as 2-byte pairs + // and decode as GB2312 afterwards + var buffer:Array = new Array(2 * count); + var offset:int = 0; + while (count > 0) + { + // Each 13 bits encodes a 2-byte character + var twoBytes:int = bits.readBits(13); + var assembledTwoBytes:int = (int(twoBytes / 0x060) << 8) | int(twoBytes % 0x060); + if (assembledTwoBytes < 0x003BF) + { + // In the 0xA1A1 to 0xAAFE range + assembledTwoBytes += 0x0A1A1; + } + else + { + // In the 0xB0A1 to 0xFAFE range + assembledTwoBytes += 0x0A6A1; + } + buffer[offset] = int(((assembledTwoBytes >> 8) & 0xFF)); + buffer[offset + 1] = int(assembledTwoBytes & 0xFF); + offset += 2; + count--; + } + + //try { + //result.Append(new String(buffer, StringUtils.GB2312)); + result.Append(buffer); + //} catch (uee:UnsupportedEncodingException) { + // throw FormatException.getFormatInstance(); + // } + } + + private static function decodeKanjiSegment(bits:BitSource, result:StringBuilder, count:int):void + { + // Don't crash trying to read more bits than we have available. + if (count * 13 > bits.available()) + { + throw FormatException.getFormatInstance(); + } + + // Each character will require 2 bytes. Read the characters as 2-byte pairs + // and decode as Shift_JIS afterwards + var buffer:Array = new Array(2 * count); + var offset:int = 0; + while (count > 0) + { + // Each 13 bits encodes a 2-byte character + var twoBytes:int = bits.readBits(13); + var assembledTwoBytes:int = (int(twoBytes / 0x0C0) << 8) | int(twoBytes % 0x0C0); + if (assembledTwoBytes < 0x01F00) + { + // In the 0x8140 to 0x9FFC range + assembledTwoBytes += 0x08140; + } + else + { + // In the 0xE040 to 0xEBBF range + assembledTwoBytes += 0x0C140; + } + buffer[offset] = int(assembledTwoBytes >> 8); + buffer[offset + 1] = int(assembledTwoBytes); + offset += 2; + count--; + } + // Shift_JIS may not be supported in some environments: + //try { + ///result.Append(new String(buffer, StringUtils.SHIFT_JIS)); + result.Append(buffer); + //} catch (uee:UnsupportedEncodingException) { + // throw FormatException.getFormatInstance(); + //} + } + + private static function decodeByteSegment(bits:BitSource, result:StringBuilder, count:int, currentCharacterSetECI:CharacterSetECI, byteSegments:ArrayList, hints:HashTable):void + { + // Don't crash trying to read more bits than we have available. + if (count << 3 > bits.available()) + { + throw FormatException.getFormatInstance(); + } + + var encoding:String = 'iso-8859-1'; + if (hints.containsKey(DecodeHintType.CHARACTER_SET)) { + encoding = String(hints.getValueByKey(DecodeHintType.CHARACTER_SET)); + } + /*if (currentCharacterSetECI == null) + { + // The spec isn't clear on this mode; see + // section 6.4.5: t does not say which encoding to assuming + // upon decoding. I have seen ISO-8859-1 used as well as + // Shift_JIS -- without anything like an ECI designator to + // give a hint. + encoding = StringUtils.guessEncoding(readBytes, hints); + } + else + { + encoding = currentCharacterSetECI.getEncodingName(); + }*/ + + var readBytes:Array = new Array(count); + var bytes:ByteArray = new ByteArray(); + var bit:int; + for (var i:int = 0; i < count; i++) + { + bit = bits.readBits(8); + bytes.writeByte(bit); + readBytes[i] = String.fromCharCode(bit); + } + bytes.position = 0; + //try { + //result.Append(new String(readBytes, encoding)); + //trace(readBytes); + result.Append(bytes.readMultiByte(bytes.length,encoding)); + //} catch (uce:UnsupportedEncodingException) { + // throw FormatException.getFormatInstance(); + //} + byteSegments.addElement(readBytes); + } + + private static function toAlphaNumericChar(value:int):String + { + if (value >= ALPHANUMERIC_CHARS.length) + { + throw FormatException.getFormatInstance(); + } + return ALPHANUMERIC_CHARS[value]; + } + + private static function decodeAlphanumericSegment(bits:BitSource, result:StringBuilder, count:int, fc1InEffect:Boolean):void + { + // Read two characters at a time + var start:int = result.length; + while (count > 1) + { + var nextTwoCharsBits:int = bits.readBits(11); + result.Append(toAlphaNumericChar(int(nextTwoCharsBits / 45))); + result.Append(toAlphaNumericChar(int(nextTwoCharsBits % 45))); + count -= 2; + } + if (count == 1) + { + // special case: one character left + result.Append(toAlphaNumericChar(bits.readBits(6))); + } + // See section 6.4.8.1, 6.4.8.2 + if (fc1InEffect) + { + // We need to massage the result a bit if in an FNC1 mode: + for (var i:int = start; i < result.length; i++) + { + if (result.charAt(i) == '%') + { + if (i < result.length - 1 && result.charAt(i + 1) == '%') + { + // %% is rendered as % + result.deleteCharAt(i + 1); + } + else + { + // In alpha mode, % should be converted to FNC1 separator 0x1D + result.setCharAt(i, String.fromCharCode(0x1D)); + } + } + } + } + } + + private static function decodeNumericSegment(bits:BitSource, result:StringBuilder, count:int):void + { + // Read three digits at a time + while (count >= 3) + { + // Each 10 bits encodes three digits + if (bits.available() < 10) + { + throw FormatException.getFormatInstance(); + } + var threeDigitsBits:int = bits.readBits(10); + if (threeDigitsBits >= 1000) + { + throw FormatException.getFormatInstance(); + } + result.Append(toAlphaNumericChar(int(threeDigitsBits / 100))); + result.Append(toAlphaNumericChar(int(int(threeDigitsBits / 10) % 10))); + result.Append(toAlphaNumericChar(int(threeDigitsBits % 10))); + count -= 3; + } + if (count == 2) + { + // Two digits left over to read, encoded in 7 bits + if (bits.available() < 7) + { + throw FormatException.getFormatInstance(); + } + var twoDigitsBits:int = bits.readBits(7); + if (twoDigitsBits >= 100) + { + throw FormatException.getFormatInstance(); + } + result.Append(toAlphaNumericChar(int(twoDigitsBits / 10))); + result.Append(toAlphaNumericChar(int(twoDigitsBits % 10))); + } + else if (count == 1) + { + // One digit left over to read + if (bits.available() < 4) + { + throw FormatException.getFormatInstance(); + } + var digitBits:int = bits.readBits(4); + if (digitBits >= 10) + { + throw FormatException.getFormatInstance(); + } + result.Append(toAlphaNumericChar(digitBits)); + } + } + + private static function parseECIValue(bits:BitSource):int + { + var firstByte:int = bits.readBits(8); + if ((firstByte & 0x80) == 0) + { + // just one byte + return firstByte & 0x7F; + } + if ((firstByte & 0xC0) == 0x80) + { + // two bytes + var secondByte:int = bits.readBits(8); + return ((firstByte & 0x3F) << 8) | secondByte; + } + if ((firstByte & 0xE0) == 0xC0) + { + // three bytes + var secondThirdBytes:int = bits.readBits(16); + return ((firstByte & 0x1F) << 16) | secondThirdBytes; + } + throw new IllegalArgumentException("Bad ECI bits starting with byte " + firstByte); + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/Decoder.as b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/Decoder.as new file mode 100644 index 0000000..c2200e5 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/Decoder.as @@ -0,0 +1,181 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.decoder +{ + import com.google.zxing.common.flexdatatypes.HashTable; + + public class Decoder + { + import com.google.zxing.common.BitMatrix; + import com.google.zxing.common.DecoderResult; + import com.google.zxing.common.reedsolomon.ReedSolomonDecoder; + import com.google.zxing.common.reedsolomon.ReedSolomonException; + import com.google.zxing.common.reedsolomon.GenericGF; + import com.google.zxing.common.zxingByteArray; + import com.google.zxing.ReaderException; + + /** + *

The main class which implements QR Code decoding -- as opposed to locating and extracting + * the QR Code from an image.

+ * + * @author Sean Owen + */ + + private var rsDecoder:ReedSolomonDecoder; + + public function Decoder() + { + rsDecoder = new ReedSolomonDecoder(GenericGF.QR_CODE_FIELD_256); + } + + /** + *

Convenience method that can decode a QR Code represented as a 2D array of booleans. + * "true" is taken to mean a black module.

+ * + * @param image booleans representing white/black QR Code modules + * @return text and bytes encoded within the QR Code + * @throws ReaderException if the QR Code cannot be decoded + */ + + public function decode(image:Object, hints:HashTable = null):DecoderResult + { + if (image is Array) + { + return decode_Array(image as Array, hints); + } + else if (image is BitMatrix) + { + return decode_BitMatrix(image as BitMatrix, hints); + } + else + { + throw new Error('Decoder : decode : unknown type of image'); + } + } + + public function decode_Array(image:Array, hints:HashTable):DecoderResult + { + var dimension:int = image.length; + var bits:BitMatrix = new BitMatrix(dimension); + for (var i:int = 0; i < dimension; i++) + { + for (var j:int = 0; j < dimension; j++) + { + if (image[i][j]) + { + bits._set(j, i); + } + } + } + return decode(bits, hints); + } + + /** + *

Decodes a QR Code represented as a {@link BitMatrix}. A 1 or "true" is taken to mean a black module.

+ * + * @param bits booleans representing white/black QR Code modules + * @return text and bytes encoded within the QR Code + * @throws ReaderException if the QR Code cannot be decoded + */ + public function decode_BitMatrix(bits:BitMatrix, hints:HashTable):DecoderResult + { + try + { + // Construct a parser and read version, error-correction level + var parser:BitMatrixParser = new BitMatrixParser(bits); + var version:Version = parser.readVersion(); + var ecLevel:ErrorCorrectionLevel = parser.readFormatInformation().getErrorCorrectionLevel(); + + // Read codewords + var codewords:zxingByteArray = parser.readCodewords(); + // Separate into data blocks + var dataBlocks:Array = DataBlock.getDataBlocks(codewords, version, ecLevel); + + // Count total number of data bytes + var totalBytes:int = 0; + for (var i:int = 0; i < dataBlocks.length; i++) + { + totalBytes += dataBlocks[i].NumDataCodewords; + } + + var resultBytes:Array = new Array(totalBytes); + var resultOffset:int = 0; + + // Error-correct and copy data blocks together into a stream of bytes + for (var j:int = 0; j < dataBlocks.length; j++) + { + var dataBlock:DataBlock = dataBlocks[j]; + var codewordBytes:Array = dataBlock.Codewords; + var numDataCodewords:int = dataBlock.NumDataCodewords; + correctErrors(codewordBytes, numDataCodewords); + for (var i2:int = 0; i2 < numDataCodewords; i2++) + { + resultBytes[resultOffset++] = codewordBytes[i2]; + } + } + + // Decode the contents of that stream of bytes + return DecodedBitStreamParser.decode(resultBytes, version, ecLevel, hints); + } + catch (e:ReedSolomonException) + { + throw new ReaderException(e.message); + } + + return null; + } + + /** + *

Given data and error-correction codewords received, possibly corrupted by errors, attempts to + * correct the errors in-place using Reed-Solomon error correction.

+ * + * @param codewordBytes data and error correction codewords + * @param numDataCodewords number of codewords that are data bytes + * @throws ReaderException if error correction fails + */ + private function correctErrors(codewordBytes:Array, numDataCodewords:int):void + { + var numCodewords:int = codewordBytes.length; + // First read into an array of ints + var codewordsInts:Array = new Array(numCodewords); + for (var i:int = 0; i < numCodewords; i++) + { + codewordsInts[i] = codewordBytes[i] & 0xFF; + } + var numECCodewords:int = codewordBytes.length - numDataCodewords; + try + { + rsDecoder.decode(codewordsInts, numECCodewords); + } + catch (rse:ReedSolomonException) + { + throw new ReaderException(rse.message); + } + // Copy back into array of bytes -- only need to worry about the bytes that were data + // We don't care about errors in the error-correction codewords + for (var i3:int = 0; i3 < numDataCodewords; i3++) + { + codewordBytes[i3] = Math.floor(codewordsInts[i3]); + // Flex : make bytes + if (codewordBytes[i3] > 127) + { + codewordBytes[i3] = (256 - (Math.floor(codewordBytes[i3]))) * -1; + } + } + } + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/ECB.as b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/ECB.as new file mode 100644 index 0000000..8f0727a --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/ECB.as @@ -0,0 +1,46 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.decoder +{ + /** + *

Encapsualtes the parameters for one error-correction block in one symbol version. + * This includes the number of data codewords, and the number of times a block with these + * parameters is used consecutively in the QR code version's format.

+ */ + public class ECB + { + protected var count:int; + protected var dataCodewords:int; + + public function ECB(count:int, dataCodewords:int) + { + this.count = count; + this.dataCodewords = dataCodewords; + } + + public function getCount():int + { + return count; + } + + public function getDataCodewords():int + { + return dataCodewords; + } + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/ECBlocks.as b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/ECBlocks.as new file mode 100644 index 0000000..295b90f --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/ECBlocks.as @@ -0,0 +1,70 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.decoder +{ + public class ECBlocks + { + + protected var ecCodewordsPerBlock:int; + protected var ecBlocks:Array; + + //public function ECBlocks(ecCodewordsPerBlock, ECB ecBlocks) + //{ + // this.ecCodewordsPerBlock = ecCodewordsPerBlock; + // this.ecBlocks = new ECBArray([ecBlocks]); + //} + + public function ECBlocks(ecCodewordsPerBlock:int, ecBlocks1:ECB, ecBlocks2:ECB=null) + { + this.ecCodewordsPerBlock = ecCodewordsPerBlock; + if (ecBlocks2 != null) + { + this.ecBlocks = [ecBlocks1, ecBlocks2]; + } + else + { + this.ecBlocks = [ecBlocks1]; + } + } + + public function getECCodewordsPerBlock():int + { + return ecCodewordsPerBlock; + } + + public function getNumBlocks():int + { + var total:int = 0; + for (var i:int = 0; i < ecBlocks.length; i++) + { + total += ecBlocks[i].getCount(); + } + return total; + } + + public function getTotalECCodewords():int + { + return ecCodewordsPerBlock * getNumBlocks(); + } + + public function getECBlocks():Array + { + return ecBlocks; + } + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/ErrorCorrectionLevel.as b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/ErrorCorrectionLevel.as new file mode 100644 index 0000000..34b49ce --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/ErrorCorrectionLevel.as @@ -0,0 +1,79 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.decoder +{ + public class ErrorCorrectionLevel + { + import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + + // No, we can't use an enum here. J2ME doesn't support it. + /** + * L = ~7% correction + */ + public static var L:ErrorCorrectionLevel = new ErrorCorrectionLevel(0, 0x01, "L"); + /** + * M = ~15% correction + */ + public static var M:ErrorCorrectionLevel = new ErrorCorrectionLevel(1, 0x00, "M"); + /** + * Q = ~25% correction + */ + public static var Q:ErrorCorrectionLevel = new ErrorCorrectionLevel(2, 0x03, "Q"); + /** + * H = ~30% correction + */ + public static var H:ErrorCorrectionLevel = new ErrorCorrectionLevel(3, 0x02, "H"); + + private static var FOR_BITS:Array = [M, L, H, Q]; + protected var Ordinal:int; + protected var bits:int; + protected var name:String; + + public function ErrorCorrectionLevel(ordinal:int, bits:int, name:String) { + this.Ordinal = ordinal; + this.bits = bits; + this.name = name; + } + + public function ordinal():int { + return Ordinal; + } + + public function getBits():int { + return bits; + } + + public function getName():String { + return name; + } + + public function toString():String { + return name; + } + + /** + * @param bits int containing the two bits encoding a QR Code's error correction level + * @return {@link ErrorCorrectionLevel} representing the encoded error correction level + */ + public static function forBits(bits:int):ErrorCorrectionLevel { + if (bits < 0 || bits >= FOR_BITS.length) { + throw new IllegalArgumentException("ErrorCorrectionLevel : forBits : bits out of range (0 - " +FOR_BITS.length+ "):"+bits); + } + return FOR_BITS[bits]; + } + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/FormatInformation.as b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/FormatInformation.as new file mode 100644 index 0000000..a4cce1e --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/FormatInformation.as @@ -0,0 +1,167 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.decoder +{ + /** + *

Encapsulates a QR Code's format information, including the data mask used and + * error correction level.

+ * + * @author Sean Owen + * @see DataMask + * @see ErrorCorrectionLevel + */ + + public class FormatInformation + { + + private static var FORMAT_INFO_MASK_QR:int = 0x5412; + /** + * See ISO 18004:2006, Annex C, Table C.1 + */ + private static var FORMAT_INFO_DECODE_LOOKUP:Array = [[ 0x5412, 0x00], + [0x5125, 0x01], + [0x5E7C, 0x02], + [0x5B4B, 0x03], + [0x45F9, 0x04], + [0x40CE, 0x05], + [0x4F97, 0x06], + [0x4AA0, 0x07], + [0x77C4, 0x08], + [0x72F3, 0x09], + [0x7DAA, 0x0A], + [0x789D, 0x0B], + [0x662F, 0x0C], + [0x6318, 0x0D], + [0x6C41, 0x0E], + [0x6976, 0x0F], + [0x1689, 0x10], + [0x13BE, 0x11], + [0x1CE7, 0x12], + [0x19D0, 0x13], + [0x0762, 0x14], + [0x0255, 0x15], + [0x0D0C, 0x16], + [0x083B, 0x17], + [0x355F, 0x18], + [0x3068, 0x19], + [0x3F31, 0x1A], + [0x3A06, 0x1B], + [0x24B4, 0x1C], + [0x2183, 0x1D], + [0x2EDA, 0x1E], + [0x2BED, 0x1F]]; + + /** + * Offset i holds the number of 1 bits in the binary representation of i + */ + private static var BITS_SET_IN_HALF_BYTE:Array = [0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4]; + + private var errorCorrectionLevel:ErrorCorrectionLevel; + private var dataMask:uint; + + public function FormatInformation(formatInfo:int) { + // Bits 3,4 + errorCorrectionLevel = ErrorCorrectionLevel.forBits((formatInfo >> 3) & 0x03); + // Bottom 3 bits + dataMask = uint( (formatInfo & 0x07)); + } + + public static function numBitsDiffering(a:int, b:int):int { + a ^= b; // a now has a 1 bit exactly where its bit differs with b's + // Count bits set quickly with a series of lookups: + return BITS_SET_IN_HALF_BYTE[a & 0x0F] + + BITS_SET_IN_HALF_BYTE[(a >>> 4 & 0x0F)] + + BITS_SET_IN_HALF_BYTE[(a >>> 8 & 0x0F)] + + BITS_SET_IN_HALF_BYTE[(a >>> 12 & 0x0F)] + + BITS_SET_IN_HALF_BYTE[(a >>> 16 & 0x0F)] + + BITS_SET_IN_HALF_BYTE[(a >>> 20 & 0x0F)] + + BITS_SET_IN_HALF_BYTE[(a >>> 24 & 0x0F)] + + BITS_SET_IN_HALF_BYTE[(a >>> 28 & 0x0F)]; + } + + /** + * @param rawFormatInfo + * @return + */ + public static function decodeFormatInformation(maskedFormatInfo1:int, maskedFormatInfo2:int):FormatInformation + { + var formatInfo:FormatInformation = doDecodeFormatInformation(maskedFormatInfo1, maskedFormatInfo2); + if (formatInfo != null) { + return formatInfo; + } + // Should return null, but, some QR codes apparently + // do not mask this info. Try again by actually masking the pattern + // first + return doDecodeFormatInformation(maskedFormatInfo1 ^ FORMAT_INFO_MASK_QR, + maskedFormatInfo2 ^ FORMAT_INFO_MASK_QR); + } + + private static function doDecodeFormatInformation(maskedFormatInfo1:int, maskedFormatInfo2:int):FormatInformation + { + // Find the int in FORMAT_INFO_DECODE_LOOKUP with fewest bits differing + var bestDifference:int = int.MAX_VALUE; + var bestFormatInfo:int = 0; + for (var i:int = 0; i < FORMAT_INFO_DECODE_LOOKUP.length; i++) { + var decodeInfo:Array = FORMAT_INFO_DECODE_LOOKUP[i]; + var targetInfo:int = decodeInfo[0]; + if (targetInfo == maskedFormatInfo1 || targetInfo == maskedFormatInfo2) { + // Found an exact match + return new FormatInformation(decodeInfo[1]); + } + var bitsDifference:int = numBitsDiffering(maskedFormatInfo1, targetInfo); + if (bitsDifference < bestDifference) { + bestFormatInfo = decodeInfo[1]; + bestDifference = bitsDifference; + } + if (maskedFormatInfo1 != maskedFormatInfo2) { + // also try the other option + bitsDifference = numBitsDiffering(maskedFormatInfo2, targetInfo); + if (bitsDifference < bestDifference) { + bestFormatInfo = decodeInfo[1]; + bestDifference = bitsDifference; + } + } + } + // Hamming distance of the 32 masked codes is 7, by construction, so <= 3 bits + // differing means we found a match + if (bestDifference <= 3) { + return new FormatInformation(bestFormatInfo); + } + return null; + } + + public function getErrorCorrectionLevel():ErrorCorrectionLevel { + return errorCorrectionLevel; + } + + public function getDataMask():int { + return dataMask; + } + + public function hashCode():int { + return (errorCorrectionLevel.ordinal() << 3) | int( dataMask); + } + + public function equals(o:Object):Boolean { + if (!(o.GetType() == typeof(FormatInformation))){ + return false; + } + var other:FormatInformation = FormatInformation(o); + return this.errorCorrectionLevel == other.errorCorrectionLevel && + this.dataMask == other.dataMask; + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/Mode.as b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/Mode.as new file mode 100644 index 0000000..bc425a3 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/Mode.as @@ -0,0 +1,162 @@ +/* + * Copyright 2007 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.decoder +{ + + /** + *

See ISO 18004:2006, 6.4.1, Tables 2 and 3. This enum encapsulates the various modes in which + * data can be encoded to bits in the QR code standard.

+ * + * @author Sean Owen + */ + + public class Mode + { + + import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + + // No, we can't use an enum here. J2ME doesn't support it. + public static var TERMINATOR:Mode = new Mode([0, 0, 0], 0x00, "TERMINATOR"); // Not really a mode... + public static var NUMERIC:Mode = new Mode([10, 12, 14], 0x01, "NUMERIC"); + public static var ALPHANUMERIC:Mode = new Mode([9, 11, 13], 0x02, "ALPHANUMERIC"); + public static var STRUCTURED_APPEND:Mode = new Mode([0, 0, 0], 0x03, "STRUCTURED_APPEND"); // Not supported + public static var BYTE:Mode = new Mode([8, 16, 16], 0x04, "BYTE"); + public static var ECI:Mode = new Mode(null, 0x07, "ECI"); // character counts don't apply + public static var KANJI:Mode = new Mode([8, 10, 12], 0x08, "KANJI"); + public static var FNC1_FIRST_POSITION:Mode = new Mode(null, 0x05, "FNC1_FIRST_POSITION"); + public static var FNC1_SECOND_POSITION:Mode = new Mode(null, 0x09, "FNC1_SECOND_POSITION"); + /** See GBT 18284-2000; "Hanzi" is a transliteration of this mode name. */ + public static var HANZI:Mode = new Mode([8, 10, 12], 0x0D, "HANZI"); + + protected var characterCountBitsForVersions:Array; + protected var bits:int; + protected var name:String; + + public function Mode(characterCountBitsForVersions:Array, bits:int, name:String) + { + this.characterCountBitsForVersions = characterCountBitsForVersions; + this.bits = bits; + this.name = name; + } + + /** + * @param bits four bits encoding a QR Code data mode + * @return {@link Mode} encoded by these bits + * @throws ArgumentException if bits do not correspond to a known mode + */ + public static function forBits(bits:int):Mode + { + + switch (bits) + { + case 0x0: + return TERMINATOR; + case 0x1: + return NUMERIC; + case 0x2: + return ALPHANUMERIC; + case 0x4: + return BYTE; + case 0x5: + return FNC1_FIRST_POSITION; + case 0x7: + return ECI; + case 0x8: + return KANJI; + case 0x9: + return FNC1_SECOND_POSITION; + case 0xD: + // 0xD is defined in GBT 18284-2000, may not be supported in foreign country + return HANZI; + default: + throw new IllegalArgumentException("Mode : forBits : bits does not match any format : " + bits); + } + } + + /** + * @param version version in question + * @return number of bits used, in this QR Code symbol {@link Version}, to encode the + * count of characters that will follow encoded in this {@link Mode} + */ + public function getCharacterCountBits(version:Version):int + { + if (characterCountBitsForVersions == null) + { + throw new IllegalArgumentException("Character count doesn't apply to this mode"); + } + var number:int = version.getVersionNumber(); + var offset:int; + if (number <= 9) + { + offset = 0; + } + else if (number <= 26) + { + offset = 1; + } + else + { + offset = 2; + } + return characterCountBitsForVersions[offset]; + } + + public function getBits():int + { + return bits; + } + + public function getName():String + { + return name; + } + + public function toString():String + { + return name; + } + + public function getCharacterCountBitsForVersions():Array + { + return characterCountBitsForVersions; + } + + public function Equals(other:Mode):Boolean + { + if (this.name != other.getName()) + { + return false; + } + if (this.bits != other.getBits()) + { + return false; + } + var t:Array = other.getCharacterCountBitsForVersions() + if (this.characterCountBitsForVersions.length != t.length) + { + return false; + } + for (var i:int = 0; i < t.length; i++) + { + if (t[i] != this.characterCountBitsForVersions[i]) + { + return false; + } + } + return true; + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/Version.as b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/Version.as new file mode 100644 index 0000000..e59b9b8 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/decoder/Version.as @@ -0,0 +1,549 @@ +/* +* Copyright 2007 ZXing authors +* +* Licensed 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 com.google.zxing.qrcode.decoder +{ +/** + * See ISO 18004:2006 Annex D + * + * @author Sean Owen + */ + + public class Version + { + import com.google.zxing.common.BitMatrix; + import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + import com.google.zxing.ReaderException; + + /** + * See ISO 18004:2006 Annex D. + * Element i represents the raw version bits that specify version i + 7 + */ + private static var VERSION_DECODE_INFO:Array = [ + 0x07C94, 0x085BC, 0x09A99, 0x0A4D3, 0x0BBF6, + 0x0C762, 0x0D847, 0x0E60D, 0x0F928, 0x10B78, + 0x1145D, 0x12A17, 0x13532, 0x149A6, 0x15683, + 0x168C9, 0x177EC, 0x18EC4, 0x191E1, 0x1AFAB, + 0x1B08E, 0x1CC1A, 0x1D33F, 0x1ED75, 0x1F250, + 0x209D5, 0x216F0, 0x228BA, 0x2379F, 0x24B0B, + 0x2542E, 0x26A64, 0x27541, 0x28C69 + ]; + + private static var VERSIONS:Array = buildVersions(); + protected var versionNumber:int; + protected var alignmentPatternCenters:Array; + protected var ecBlocks:Array; + protected var totalCodewords:int; + + public function Version(versionNumber:int, + alignmentPatternCenters:Array, + ecBlocks1:ECBlocks, + ecBlocks2:ECBlocks, + ecBlocks3:ECBlocks, + ecBlocks4:ECBlocks) + { + this.versionNumber = versionNumber; + this.alignmentPatternCenters = alignmentPatternCenters; + this.ecBlocks = [ecBlocks1, ecBlocks2, ecBlocks3, ecBlocks4]; + var total:int = 0; + var ecCodewords:int = ecBlocks1.getECCodewordsPerBlock(); + var ecbArray:Array = ecBlocks1.getECBlocks(); + for (var i:int = 0; i < ecbArray.length; i++) + { + var ecBlock:ECB = ecbArray[i]; + total += ecBlock.getCount() * (ecBlock.getDataCodewords() + ecCodewords); + } + this.totalCodewords = total; + } + + public function getVersionNumber():int + { + return versionNumber; + } + + public function getAlignmentPatternCenters():Array + { + return alignmentPatternCenters; + } + + public function getTotalCodewords():int + { + return totalCodewords; + } + + public function getDimensionForVersion():int + { + return 17 + 4 * versionNumber; + } + + public function getECBlocksForLevel(ecLevel:ErrorCorrectionLevel):ECBlocks + { + return ecBlocks[ecLevel.ordinal()]; + } + + /** + *

Deduces version information purely from QR Code dimensions.

+ * + * @param dimension dimension in modules + * @return {@link Version} for a QR Code of that dimension + * @throws ReaderException if dimension is not 1 mod 4 + */ + public static function getProvisionalVersionForDimension(dimension:int):Version + { + if ((dimension % 4) != 1) + { + throw new ReaderException("Version : getProvisionalVersionForDimension : dimension is not a power of 4"); + } + return getVersionForNumber((dimension - 17) >> 2); + } + + public static function getVersionForNumber(versionNumber:int):Version + { + if ((versionNumber < 1) || (versionNumber > 40)) + { + throw new IllegalArgumentException("Version : getVersionForNumber : versionNumber out of range (1-39) : "+versionNumber); + } + return VERSIONS[versionNumber - 1]; + } + + public static function decodeVersionInformation(versionBits:int ):Version + { + + var bestDifference:int = int.MAX_VALUE; + var bestVersion:int = 0; + for (var i:int = 0; i < VERSION_DECODE_INFO.length; i++) + { + var targetVersion:int = VERSION_DECODE_INFO[i]; + // Do the version info bits match exactly? done. + if (targetVersion == versionBits) + { + return getVersionForNumber(i + 7); + } + // Otherwise see if this is the closest to a real version info bit string + // we have seen so far + var bitsDifference:int = FormatInformation.numBitsDiffering(versionBits, targetVersion); + if (bitsDifference < bestDifference) + { + bestVersion = i + 7; + } + } + // We can tolerate up to 3 bits of error since no two version info codewords will + // differ in less than 4 bits. + if (bestDifference <= 3) { + return getVersionForNumber(bestVersion); + } + // If we didn't find a close enough match, fail + return null; + } + + /** + * See ISO 18004:2006 Annex E + */ + public function buildFunctionPattern():BitMatrix + { + var dimension:int = getDimensionForVersion(); + var bitMatrix:BitMatrix = new BitMatrix(dimension); + + // Top left finder pattern + separator + format + bitMatrix.setRegion(0, 0, 9, 9); + // Top right finder pattern + separator + format + bitMatrix.setRegion(dimension - 8, 0, 8, 9); + // Bottom left finder pattern + separator + format + bitMatrix.setRegion(0, dimension - 8, 9, 8); // bas : hier zat een fout + + // Alignment patterns + var max:int = alignmentPatternCenters.length; + for (var x:int = 0; x < max; x++) + { + var i:int = alignmentPatternCenters[x] - 2; + for (var y:int = 0; y < max; y++) { + if ((x == 0 && (y == 0 || y == max - 1)) || (x == max - 1 && y == 0)) + { + // No alignment patterns near the three finder paterns + continue; + } + bitMatrix.setRegion(alignmentPatternCenters[y] - 2, i, 5, 5); + } + } + + // Vertical timing pattern + bitMatrix.setRegion(6, 9, 1,dimension - 17); + // Horizontal timing pattern + bitMatrix.setRegion(9, 6, dimension - 17,1); + + if (versionNumber > 6) { + // Version info, top right + bitMatrix.setRegion(dimension - 11, 0,3,6); + // Version info, bottom left + bitMatrix.setRegion(0, dimension - 11, 6,3); + } + + return bitMatrix; + } + + /** + *

Encapsulates a set of error-correction blocks in one symbol version. Most versions will + * use blocks of differing sizes within one version, so, this encapsulates the parameters for + * each set of blocks. It also holds the number of error-correction codewords per block since it + * will be the same across all blocks within one version.

+ */ + + + public function toString():String + { + return versionNumber.toString(); + //return String.valueOf(versionNumber); + } + + /** + * See ISO 18004:2006 6.5.1 Table 9 + */ + private static function buildVersions():Array + { + return [ + new Version(1, [], + new ECBlocks(7, new ECB(1, 19)), + new ECBlocks(10, new ECB(1, 16)), + new ECBlocks(13, new ECB(1, 13)), + new ECBlocks(17, new ECB(1, 9))), + new Version(2, [6, 18], + new ECBlocks(10, new ECB(1, 34)), + new ECBlocks(16, new ECB(1, 28)), + new ECBlocks(22, new ECB(1, 22)), + new ECBlocks(28, new ECB(1, 16))), + new Version(3, [6, 22], + new ECBlocks(15, new ECB(1, 55)), + new ECBlocks(26, new ECB(1, 44)), + new ECBlocks(18, new ECB(2, 17)), + new ECBlocks(22, new ECB(2, 13))), + new Version(4, [6, 26], + new ECBlocks(20, new ECB(1, 80)), + new ECBlocks(18, new ECB(2, 32)), + new ECBlocks(26, new ECB(2, 24)), + new ECBlocks(16, new ECB(4, 9))), + new Version(5, [6, 30], + new ECBlocks(26, new ECB(1, 108)), + new ECBlocks(24, new ECB(2, 43)), + new ECBlocks(18, new ECB(2, 15), + new ECB(2, 16)), + new ECBlocks(22, new ECB(2, 11), + new ECB(2, 12))), + new Version(6, [6, 34], + new ECBlocks(18, new ECB(2, 68)), + new ECBlocks(16, new ECB(4, 27)), + new ECBlocks(24, new ECB(4, 19)), + new ECBlocks(28, new ECB(4, 15))), + new Version(7, [6, 22, 38], + new ECBlocks(20, new ECB(2, 78)), + new ECBlocks(18, new ECB(4, 31)), + new ECBlocks(18, new ECB(2, 14), + new ECB(4, 15)), + new ECBlocks(26, new ECB(4, 13), + new ECB(1, 14))), + new Version(8, [6, 24, 42], + new ECBlocks(24, new ECB(2, 97)), + new ECBlocks(22, new ECB(2, 38), + new ECB(2, 39)), + new ECBlocks(22, new ECB(4, 18), + new ECB(2, 19)), + new ECBlocks(26, new ECB(4, 14), + new ECB(2, 15))), + new Version(9, [6, 26, 46], + new ECBlocks(30, new ECB(2, 116)), + new ECBlocks(22, new ECB(3, 36), + new ECB(2, 37)), + new ECBlocks(20, new ECB(4, 16), + new ECB(4, 17)), + new ECBlocks(24, new ECB(4, 12), + new ECB(4, 13))), + new Version(10, [6, 28, 50], + new ECBlocks(18, new ECB(2, 68), + new ECB(2, 69)), + new ECBlocks(26, new ECB(4, 43), + new ECB(1, 44)), + new ECBlocks(24, new ECB(6, 19), + new ECB(2, 20)), + new ECBlocks(28, new ECB(6, 15), + new ECB(2, 16))), + new Version(11, [6, 30, 54], + new ECBlocks(20, new ECB(4, 81)), + new ECBlocks(30, new ECB(1, 50), + new ECB(4, 51)), + new ECBlocks(28, new ECB(4, 22), + new ECB(4, 23)), + new ECBlocks(24, new ECB(3, 12), + new ECB(8, 13))), + new Version(12, [6, 32, 58], + new ECBlocks(24, new ECB(2, 92), + new ECB(2, 93)), + new ECBlocks(22, new ECB(6, 36), + new ECB(2, 37)), + new ECBlocks(26, new ECB(4, 20), + new ECB(6, 21)), + new ECBlocks(28, new ECB(7, 14), + new ECB(4, 15))), + new Version(13, [6, 34, 62], + new ECBlocks(26, new ECB(4, 107)), + new ECBlocks(22, new ECB(8, 37), + new ECB(1, 38)), + new ECBlocks(24, new ECB(8, 20), + new ECB(4, 21)), + new ECBlocks(22, new ECB(12, 11), + new ECB(4, 12))), + new Version(14, [6, 26, 46, 66], + new ECBlocks(30, new ECB(3, 115), + new ECB(1, 116)), + new ECBlocks(24, new ECB(4, 40), + new ECB(5, 41)), + new ECBlocks(20, new ECB(11, 16), + new ECB(5, 17)), + new ECBlocks(24, new ECB(11, 12), + new ECB(5, 13))), + new Version(15, [6, 26, 48, 70], + new ECBlocks(22, new ECB(5, 87), + new ECB(1, 88)), + new ECBlocks(24, new ECB(5, 41), + new ECB(5, 42)), + new ECBlocks(30, new ECB(5, 24), + new ECB(7, 25)), + new ECBlocks(24, new ECB(11, 12), + new ECB(7, 13))), + new Version(16, [6, 26, 50, 74], + new ECBlocks(24, new ECB(5, 98), + new ECB(1, 99)), + new ECBlocks(28, new ECB(7, 45), + new ECB(3, 46)), + new ECBlocks(24, new ECB(15, 19), + new ECB(2, 20)), + new ECBlocks(30, new ECB(3, 15), + new ECB(13, 16))), + new Version(17, [6, 30, 54, 78], + new ECBlocks(28, new ECB(1, 107), + new ECB(5, 108)), + new ECBlocks(28, new ECB(10, 46), + new ECB(1, 47)), + new ECBlocks(28, new ECB(1, 22), + new ECB(15, 23)), + new ECBlocks(28, new ECB(2, 14), + new ECB(17, 15))), + new Version(18, [6, 30, 56, 82], + new ECBlocks(30, new ECB(5, 120), + new ECB(1, 121)), + new ECBlocks(26, new ECB(9, 43), + new ECB(4, 44)), + new ECBlocks(28, new ECB(17, 22), + new ECB(1, 23)), + new ECBlocks(28, new ECB(2, 14), + new ECB(19, 15))), + new Version(19, [6, 30, 58, 86], + new ECBlocks(28, new ECB(3, 113), + new ECB(4, 114)), + new ECBlocks(26, new ECB(3, 44), + new ECB(11, 45)), + new ECBlocks(26, new ECB(17, 21), + new ECB(4, 22)), + new ECBlocks(26, new ECB(9, 13), + new ECB(16, 14))), + new Version(20, [6, 34, 62, 90], + new ECBlocks(28, new ECB(3, 107), + new ECB(5, 108)), + new ECBlocks(26, new ECB(3, 41), + new ECB(13, 42)), + new ECBlocks(30, new ECB(15, 24), + new ECB(5, 25)), + new ECBlocks(28, new ECB(15, 15), + new ECB(10, 16))), + new Version(21, [6, 28, 50, 72, 94], + new ECBlocks(28, new ECB(4, 116), + new ECB(4, 117)), + new ECBlocks(26, new ECB(17, 42)), + new ECBlocks(28, new ECB(17, 22), + new ECB(6, 23)), + new ECBlocks(30, new ECB(19, 16), + new ECB(6, 17))), + new Version(22, [6, 26, 50, 74, 98], + new ECBlocks(28, new ECB(2, 111), + new ECB(7, 112)), + new ECBlocks(28, new ECB(17, 46)), + new ECBlocks(30, new ECB(7, 24), + new ECB(16, 25)), + new ECBlocks(24, new ECB(34, 13))), + new Version(23,[6, 30, 54, 74, 102], + new ECBlocks(30, new ECB(4, 121), + new ECB(5, 122)), + new ECBlocks(28, new ECB(4, 47), + new ECB(14, 48)), + new ECBlocks(30, new ECB(11, 24), + new ECB(14, 25)), + new ECBlocks(30, new ECB(16, 15), + new ECB(14, 16))), + new Version(24,[6, 28, 54, 80, 106], + new ECBlocks(30, new ECB(6, 117), + new ECB(4, 118)), + new ECBlocks(28, new ECB(6, 45), + new ECB(14, 46)), + new ECBlocks(30, new ECB(11, 24), + new ECB(16, 25)), + new ECBlocks(30, new ECB(30, 16), + new ECB(2, 17))), + new Version(25,[6, 32, 58, 84, 110], + new ECBlocks(26, new ECB(8, 106), + new ECB(4, 107)), + new ECBlocks(28, new ECB(8, 47), + new ECB(13, 48)), + new ECBlocks(30, new ECB(7, 24), + new ECB(22, 25)), + new ECBlocks(30, new ECB(22, 15), + new ECB(13, 16))), + new Version(26,[6, 30, 58, 86, 114], + new ECBlocks(28, new ECB(10, 114), + new ECB(2, 115)), + new ECBlocks(28, new ECB(19, 46), + new ECB(4, 47)), + new ECBlocks(28, new ECB(28, 22), + new ECB(6, 23)), + new ECBlocks(30, new ECB(33, 16), + new ECB(4, 17))), + new Version(27,[6, 34, 62, 90, 118], + new ECBlocks(30, new ECB(8, 122), + new ECB(4, 123)), + new ECBlocks(28, new ECB(22, 45), + new ECB(3, 46)), + new ECBlocks(30, new ECB(8, 23), + new ECB(26, 24)), + new ECBlocks(30, new ECB(12, 15), + new ECB(28, 16))), + new Version(28,[6, 26, 50, 74, 98, 122], + new ECBlocks(30, new ECB(3, 117), + new ECB(10, 118)), + new ECBlocks(28, new ECB(3, 45), + new ECB(23, 46)), + new ECBlocks(30, new ECB(4, 24), + new ECB(31, 25)), + new ECBlocks(30, new ECB(11, 15), + new ECB(31, 16))), + new Version(29,[6, 30, 54, 78, 102, 126], + new ECBlocks(30, new ECB(7, 116), + new ECB(7, 117)), + new ECBlocks(28, new ECB(21, 45), + new ECB(7, 46)), + new ECBlocks(30, new ECB(1, 23), + new ECB(37, 24)), + new ECBlocks(30, new ECB(19, 15), + new ECB(26, 16))), + new Version(30,[6, 26, 52, 78, 104, 130], + new ECBlocks(30, new ECB(5, 115), + new ECB(10, 116)), + new ECBlocks(28, new ECB(19, 47), + new ECB(10, 48)), + new ECBlocks(30, new ECB(15, 24), + new ECB(25, 25)), + new ECBlocks(30, new ECB(23, 15), + new ECB(25, 16))), + new Version(31,[6, 30, 56, 82, 108, 134], + new ECBlocks(30, new ECB(13, 115), + new ECB(3, 116)), + new ECBlocks(28, new ECB(2, 46), + new ECB(29, 47)), + new ECBlocks(30, new ECB(42, 24), + new ECB(1, 25)), + new ECBlocks(30, new ECB(23, 15), + new ECB(28, 16))), + new Version(32,[6, 34, 60, 86, 112, 138], + new ECBlocks(30, new ECB(17, 115)), + new ECBlocks(28, new ECB(10, 46), + new ECB(23, 47)), + new ECBlocks(30, new ECB(10, 24), + new ECB(35, 25)), + new ECBlocks(30, new ECB(19, 15), + new ECB(35, 16))), + new Version(33,[6, 30, 58, 86, 114, 142], + new ECBlocks(30, new ECB(17, 115), + new ECB(1, 116)), + new ECBlocks(28, new ECB(14, 46), + new ECB(21, 47)), + new ECBlocks(30, new ECB(29, 24), + new ECB(19, 25)), + new ECBlocks(30, new ECB(11, 15), + new ECB(46, 16))), + new Version(34,[6, 34, 62, 90, 118, 146], + new ECBlocks(30, new ECB(13, 115), + new ECB(6, 116)), + new ECBlocks(28, new ECB(14, 46), + new ECB(23, 47)), + new ECBlocks(30, new ECB(44, 24), + new ECB(7, 25)), + new ECBlocks(30, new ECB(59, 16), + new ECB(1, 17))), + new Version(35,[6, 30, 54, 78, 102, 126, 150], + new ECBlocks(30, new ECB(12, 121), + new ECB(7, 122)), + new ECBlocks(28, new ECB(12, 47), + new ECB(26, 48)), + new ECBlocks(30, new ECB(39, 24), + new ECB(14, 25)), + new ECBlocks(30, new ECB(22, 15), + new ECB(41, 16))), + new Version(36,[6, 24, 50, 76, 102, 128, 154], + new ECBlocks(30, new ECB(6, 121), + new ECB(14, 122)), + new ECBlocks(28, new ECB(6, 47), + new ECB(34, 48)), + new ECBlocks(30, new ECB(46, 24), + new ECB(10, 25)), + new ECBlocks(30, new ECB(2, 15), + new ECB(64, 16))), + new Version(37,[6, 28, 54, 80, 106, 132, 158], + new ECBlocks(30, new ECB(17, 122), + new ECB(4, 123)), + new ECBlocks(28, new ECB(29, 46), + new ECB(14, 47)), + new ECBlocks(30, new ECB(49, 24), + new ECB(10, 25)), + new ECBlocks(30, new ECB(24, 15), + new ECB(46, 16))), + new Version(38,[6, 32, 58, 84, 110, 136, 162], + new ECBlocks(30, new ECB(4, 122), + new ECB(18, 123)), + new ECBlocks(28, new ECB(13, 46), + new ECB(32, 47)), + new ECBlocks(30, new ECB(48, 24), + new ECB(14, 25)), + new ECBlocks(30, new ECB(42, 15), + new ECB(32, 16))), + new Version(39,[6, 26, 54, 82, 110, 138, 166], + new ECBlocks(30, new ECB(20, 117), + new ECB(4, 118)), + new ECBlocks(28, new ECB(40, 47), + new ECB(7, 48)), + new ECBlocks(30, new ECB(43, 24), + new ECB(22, 25)), + new ECBlocks(30, new ECB(10, 15), + new ECB(67, 16))), + new Version(40,[6, 30, 58, 86, 114, 142, 170], + new ECBlocks(30, new ECB(19, 118), + new ECB(6, 119)), + new ECBlocks(28, new ECB(18, 47), + new ECB(31, 48)), + new ECBlocks(30, new ECB(34, 24), + new ECB(34, 25)), + new ECBlocks(30, new ECB(20, 15), + new ECB(61, 16))) + ]; + + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/detector/AlignmentPattern.as b/FairyGUI-as3/src/com/google/zxing/qrcode/detector/AlignmentPattern.as new file mode 100644 index 0000000..058778e --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/detector/AlignmentPattern.as @@ -0,0 +1,62 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.detector +{ + import com.google.zxing.ResultPoint; + + public class AlignmentPattern extends ResultPoint + { + private var estimatedModuleSize:Number; + + + public function AlignmentPattern(posX:Number, posY:Number, estimatedModuleSize:Number) + { + super(posX,posY); + this.estimatedModuleSize = estimatedModuleSize; + } + + /** + *

Determines if this alignment pattern "about equals" an alignment pattern at the stated + * position and size -- meaning, it is at nearly the same center with nearly the same size.

+ */ + public function aboutEquals(moduleSize:Number, i:Number, j:Number):Boolean + { + if (Math.abs(i - getY()) <= moduleSize && Math.abs(j - getX()) <= moduleSize) + { + var moduleSizeDiff:Number = Math.abs(moduleSize - estimatedModuleSize); + return moduleSizeDiff <= 1 || moduleSizeDiff <= estimatedModuleSize; + } + return false; + } + + + /** + * Combines this object's current estimate of a finder pattern position and module size + * with a new estimate. It returns a new {@code FinderPattern} containing an average of the two. + */ + public function combineEstimate(i:Number, j:Number, newModuleSize:Number ):AlignmentPattern { + var combinedX:Number = (getX() + j) / 2; + var combinedY:Number = (getY() + i) / 2; + var combinedModuleSize:Number = (estimatedModuleSize + newModuleSize) / 2; + return new AlignmentPattern(combinedX, combinedY, combinedModuleSize); + } + + + } + + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/detector/AlignmentPatternFinder.as b/FairyGUI-as3/src/com/google/zxing/qrcode/detector/AlignmentPatternFinder.as new file mode 100644 index 0000000..4ac668f --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/detector/AlignmentPatternFinder.as @@ -0,0 +1,297 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.detector +{ + import com.google.zxing.ResultPointCallback; + + public class AlignmentPatternFinder + { + + import com.google.zxing.common.flexdatatypes.ArrayList; + import com.google.zxing.common.BitArray; + import com.google.zxing.common.BitMatrix; + import com.google.zxing.ReaderException; + import com.google.zxing.ResultPoint; + + + private var image:BitMatrix; + private var possibleCenters:ArrayList; + private var startX:int; + private var startY:int; + private var width:int; + private var height:int; + private var moduleSize:Number; + private var crossCheckStateCount:Array; + private var resultPointCallback:ResultPointCallback; + + + /** + *

Creates a finder that will look in a portion of the whole image.

+ * + * @param image image to search + * @param startX left column from which to start searching + * @param startY top row from which to start searching + * @param width width of region to search + * @param height height of region to search + * @param moduleSize estimated module size so far + */ + public function AlignmentPatternFinder(image:BitMatrix , + startX:int, + startY:int, + width:int, + height:int, + moduleSize:Number, + resultPointCallback:ResultPointCallback) { + this.image = image; + this.possibleCenters = new ArrayList(); // no fixed length : was 5 + this.startX = startX; + this.startY = startY; + this.width = width; + this.height = height; + this.moduleSize = moduleSize; + this.crossCheckStateCount = new Array(3); + this.resultPointCallback = resultPointCallback; + } + + /** + *

This method attempts to find the bottom-right alignment pattern in the image. It is a bit messy since + * it's pretty performance-critical and so is written to be fast foremost.

+ * + * @return {@link AlignmentPattern} if found + * @throws ReaderException if not found + */ + public function find():AlignmentPattern { + var startX:int = this.startX; + var height:int = this.height; + var maxJ:int = startX + width; + var middleI:int = startY + (height >> 1); + // We are looking for black/white/black modules in 1:1:1 ratio; + // this tracks the number of black/white/black modules seen so far + var stateCount:Array = new Array(3); + for (var iGen:int = 0; iGen < height; iGen++) + { + + // Search from middle outwards + var i:int = middleI + ((iGen & 0x01) == 0 ? ((iGen + 1) >> 1) : -((iGen + 1) >> 1)); + stateCount[0] = 0; + stateCount[1] = 0; + stateCount[2] = 0; + var j:int = startX; + // Burn off leading white pixels before anything else; if we start in the middle of + // a white run, it doesn't make sense to count its length, since we don't know if the + // white run continued to the left of the start point + while (j < maxJ && !image._get(j,i)) { + j++; + } + var currentState:int = 0; + while (j < maxJ) + { + /* +if (i==140 && j==210) +{ + var wop:int=0; +} +*/ + if (image._get(j,i)) + { + // Black pixel + if (currentState == 1) + { + // Counting black pixels + stateCount[currentState] = stateCount[currentState] + 1; + } + else + { // Counting white pixels + if (currentState == 2) + { // A winner? + if (foundPatternCross(stateCount)) + { // Yes + var confirmed:AlignmentPattern = handlePossibleCenter(stateCount, i, j); + if (confirmed != null) + { + return confirmed; + } + } + stateCount[0] = stateCount[2]; + stateCount[1] = 1; + stateCount[2] = 0; + currentState = 1; + } + else + { + stateCount[++currentState]++; + } + } + } + else { // White pixel + if (currentState == 1) { // Counting black pixels + currentState++; + } + stateCount[currentState]++; + } + j++; + } + if (foundPatternCross(stateCount)) { + var confirmed2:AlignmentPattern = handlePossibleCenter(stateCount, i, maxJ); + if (confirmed2 != null) { + return confirmed2; + } + } + + } + + // Hmm, nothing we saw was observed and confirmed twice. If we had + // any guess at all, return it. + if (!(possibleCenters.Count==0)) { + return AlignmentPattern(possibleCenters.getObjectByIndex(0)); + } + + throw new ReaderException("AlignmentPatternFinder : find : could not find pattern"); + } + + /** + * Given a count of black/white/black pixels just seen and an end position, + * figures the location of the center of this black/white/black run. + */ + private static function centerFromEnd(stateCount:Array, end:int):Number + { + return (end - stateCount[2]) - stateCount[1] / 2; + } + + /** + * @param stateCount count of black/white/black pixels just read + * @return true iff the proportions of the counts is close enough to the 1/1/1 ratios + * used by alignment patterns to be considered a match + */ + private function foundPatternCross(stateCount:Array):Boolean { + var moduleSize:Number = this.moduleSize; + var maxVariance:Number = moduleSize / 2; + for (var i:int = 0; i < 3; i++) { + if (Math.abs(moduleSize - stateCount[i]) >= maxVariance) { + return false; + } + } + return true; + } + + /** + *

After a horizontal scan finds a potential alignment pattern, this method + * "cross-checks" by scanning down vertically through the center of the possible + * alignment pattern to see if the same proportion is detected.

+ * + * @param startI row where an alignment pattern was detected + * @param centerJ center of the section that appears to cross an alignment pattern + * @param maxCount maximum reasonable number of modules that should be + * observed in any reading state, based on the results of the horizontal scan + * @return vertical center of alignment pattern, or {@link Float#NaN} if not found + */ + private function crossCheckVertical(startI:int, centerJ:int, maxCount:int, originalStateCountTotal:int):Number { + var image:BitMatrix = this.image; + + var maxI:int = image.getHeight(); + var stateCount:Array = crossCheckStateCount; + stateCount[0] = 0; + stateCount[1] = 0; + stateCount[2] = 0; + + // Start counting up from center + var i:int = startI; + while (i >= 0 && image._get(centerJ, i) && stateCount[1] <= maxCount) { + stateCount[1]++; + i--; + } + // If already too many modules in this state or ran off the edge: + if (i < 0 || stateCount[1] > maxCount) { + return Number.NaN; + } + while (i >= 0 && !image._get(centerJ, i) && stateCount[0] <= maxCount) { + stateCount[0] = stateCount[0] + 1; + i--; + } + if (stateCount[0] > maxCount) { + return Number.NaN; + } + + // Now also count down from center + i = startI + 1; + while (i < maxI && image._get(centerJ, i) && stateCount[1] <= maxCount) { + stateCount[1]++; + i++; + } + if (i == maxI || stateCount[1] > maxCount) { + return Number.NaN; + } + while (i < maxI && !image._get(centerJ, i) && stateCount[2] <= maxCount) { + stateCount[2]++; + i++; + } + if (stateCount[2] > maxCount) { + return Number.NaN; + } + + var stateCountTotal:int = stateCount[0] + stateCount[1] + stateCount[2]; + if (5 * Math.abs(stateCountTotal - originalStateCountTotal) >= 2*originalStateCountTotal) { + return Number.NaN; + } + + return foundPatternCross(stateCount) ? centerFromEnd(stateCount, i) : Number.NaN; + } + + /** + *

This is called when a horizontal scan finds a possible alignment pattern. It will + * cross check with a vertical scan, and if successful, will see if this pattern had been + * found on a previous horizontal scan. If so, we consider it confirmed and conclude we have + * found the alignment pattern.

+ * + * @param stateCount reading state module counts from horizontal scan + * @param i row where alignment pattern may be found + * @param j end of possible alignment pattern in row + * @return {@link AlignmentPattern} if we have found the same pattern twice, or null if not + */ + private function handlePossibleCenter(stateCount:Array, i:int, j:int):AlignmentPattern + { + var stateCountTotal:int = stateCount[0] + stateCount[1] + stateCount[2]; + var centerJ:Number = centerFromEnd(stateCount, j); + var centerI:Number = crossCheckVertical(i, int(centerJ), 2 * stateCount[1], stateCountTotal); + if (!(isNaN(centerI))) + { + var estimatedModuleSize:Number = Number((stateCount[0] + stateCount[1] + stateCount[2]) / 3); + var max:int = possibleCenters.Count; + for (var index:int = 0; index < max; index++) + { + var center:AlignmentPattern = (possibleCenters.getObjectByIndex(index) as AlignmentPattern); + // Look for about the same center and module size: + if ((center != null) && (center.aboutEquals(estimatedModuleSize, centerI, centerJ))) { + return center.combineEstimate(centerI, centerJ, estimatedModuleSize); + } + } + // Hadn't found this before; save it + var point:ResultPoint = new AlignmentPattern(centerJ, centerI, estimatedModuleSize); + possibleCenters.addElement(point); + if (resultPointCallback != null) + { + resultPointCallback.foundPossibleResultPoint(point); + } + } + return null; + } + + + + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/detector/CenterComparator.as b/FairyGUI-as3/src/com/google/zxing/qrcode/detector/CenterComparator.as new file mode 100644 index 0000000..5d81bf1 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/detector/CenterComparator.as @@ -0,0 +1,79 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.detector +{ + import com.google.zxing.common.Comparator; + /** + *

Orders by {@link FinderPattern#getCount()}, descending.

+ */ + public class CenterComparator + { + public static var average:Number = 0; + /* + public static function compare(center1:Object, center2:Object):int + { + var res:int = FinderPattern(center2).getCount() - (FinderPattern( center1)).getCount(); + if (res > 0) + { + return 1; + } + else if (res < 0) + { + return -1; + } + else + { + return 0; + } + } + */ + public static function compare(center1:Object, center2:Object):int + { + if (((center2 as FinderPattern).getCount()) == ((center1 as FinderPattern).getCount())) + { + var dA:Number = Math.abs((center2 as FinderPattern).getEstimatedModuleSize() - CenterComparator.average); + var dB:Number = Math.abs((center1 as FinderPattern).getEstimatedModuleSize() - CenterComparator.average); + return dA < dB ? 1 : dA == dB ? 0 : -1; + } + else + { + return ((center2 as FinderPattern).getCount()) - ((center1 as FinderPattern).getCount()); + } + + } + + public static function setAverage(average:Number):void + { + CenterComparator.average = average; + } + /** + *

Orders by furthest from average

+ */ + /* + private static class FurthestFromAverageComparator implements Comparator { + private final float average; + private FurthestFromAverageComparator(float f) { + average = f; + } + public int compare(Object center1, Object center2) { + float dA = Math.abs(((FinderPattern) center2).getEstimatedModuleSize() - average); + float dB = Math.abs(((FinderPattern) center1).getEstimatedModuleSize() - average); + return dA < dB ? -1 : dA == dB ? 0 : 1; + } + }*/ + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/detector/ClosestToAverageComparator.as b/FairyGUI-as3/src/com/google/zxing/qrcode/detector/ClosestToAverageComparator.as new file mode 100644 index 0000000..f6f7e0a --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/detector/ClosestToAverageComparator.as @@ -0,0 +1,37 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.detector +{ + import com.google.zxing.common.Comparator; + /** + *

Orders by variance from average module size, ascending.

+ */ + public class ClosestToAverageComparator implements Comparator + { + private var averageModuleSize:Number; + + public function ClosestToAverageComparator(averageModuleSize:Number) + { + this.averageModuleSize = averageModuleSize; + } + + public function compare(center1:Object, center2:Object):int + { + return (Math.abs(FinderPattern( center1).getEstimatedModuleSize() - averageModuleSize) < Math.abs(FinderPattern( center2).getEstimatedModuleSize() - averageModuleSize)) ? -1 : 1; + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/detector/Detector.as b/FairyGUI-as3/src/com/google/zxing/qrcode/detector/Detector.as new file mode 100644 index 0000000..14fc37d --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/detector/Detector.as @@ -0,0 +1,404 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.detector +{ + import com.google.zxing.ResultPointCallback; + import com.google.zxing.common.BitMatrix; + import com.google.zxing.common.flexdatatypes.HashTable; + import com.google.zxing.common.DetectorResult; + import com.google.zxing.common.GridSampler; + import com.google.zxing.common.PerspectiveTransform; + import com.google.zxing.qrcode.decoder.Version; + import com.google.zxing.ResultPoint; + import com.google.zxing.common.BitMatrix; + import com.google.zxing.ReaderException; + import com.google.zxing.DecodeHintType; + import com.google.zxing.NotFoundException; + + public class Detector + { + + private var image:BitMatrix; + private var resultPointCallback:ResultPointCallback; + + protected function getImage():BitMatrix + { + return image; + } + + public function Detector(image:BitMatrix) + { + this.image = image; + } + + public function getResultPointCallback():ResultPointCallback + { + return resultPointCallback; + } + + /** + *

Detects a QR Code in an image, simply.

+ * + * @return {@link DetectorResult} encapsulating results of detecting a QR Code + * @throws ReaderException if no QR Code can be found + */ + //public function detect():DetectorResult{ + // try{ + // return detect(null); + // }catch(e:Exception){ + // throw new ReaderException(e.message); + // } + //} + + /** + *

Detects a QR Code in an image, simply.

+ * + * @param hints optional hints to detector + * @return {@link DetectorResult} encapsulating results of detecting a QR Code + * @throws ReaderException if no QR Code can be found + */ + public function detect(hints:HashTable = null):DetectorResult + { + var resultPointCallback:ResultPointCallback = hints == null ? null : (hints._get(DecodeHintType.NEED_RESULT_POINT_CALLBACK) as ResultPointCallback); + + var finder:FinderPatternFinder = new FinderPatternFinder(image, resultPointCallback); + var info:FinderPatternInfo = finder.find(hints); + + var result:DetectorResult = processFinderPatternInfo(info); + return result; + } + + public function processFinderPatternInfo(info:FinderPatternInfo):DetectorResult + { + + var topLeft:FinderPattern = info.getTopLeft(); + var topRight:FinderPattern = info.getTopRight(); + var bottomLeft:FinderPattern = info.getBottomLeft(); + + var moduleSize:Number = calculateModuleSize(topLeft, topRight, bottomLeft); + if (moduleSize < 1) + { + throw new ReaderException(); + } + var dimension:int = computeDimension(topLeft, topRight, bottomLeft, moduleSize); + var provisionalVersion:Version = Version.getProvisionalVersionForDimension(dimension); + var modulesBetweenFPCenters:int = provisionalVersion.getDimensionForVersion() - 7; + + var alignmentPattern:AlignmentPattern = null; + // Anything above version 1 has an alignment pattern + if (provisionalVersion.getAlignmentPatternCenters().length > 0) + { + + // Guess where a "bottom right" finder pattern would have been + var bottomRightX:Number = topRight.getX() - topLeft.getX() + bottomLeft.getX(); + var bottomRightY:Number = topRight.getY() - topLeft.getY() + bottomLeft.getY(); + + // Estimate that alignment pattern is closer by 3 modules + // from "bottom right" to known top left location + var correctionToTopLeft:Number = 1 - 3 / modulesBetweenFPCenters; + var estAlignmentX:int = int((topLeft.getX() + correctionToTopLeft * (bottomRightX - topLeft.getX()))); + var estAlignmentY:int = int((topLeft.getY() + correctionToTopLeft * (bottomRightY - topLeft.getY()))); + + // Kind of arbitrary -- expand search radius before giving up + for (var i:int = 4; i <= 16; i <<= 1) + { + try + { + alignmentPattern = findAlignmentInRegion(moduleSize, estAlignmentX, estAlignmentY, i); + break; + } + catch (re:ReaderException) + { + // try next round + } + } + // If we didn't find alignment pattern... well try anyway without it + } + + var transform:PerspectiveTransform = createTransform(topLeft, topRight, bottomLeft, alignmentPattern, dimension); + + var bits:BitMatrix = sampleGrid(image, transform, dimension); + + var points:Array; + if (alignmentPattern == null) + { + points = [bottomLeft, topLeft, topRight]; + } + else + { + points = [bottomLeft, topLeft, topRight, alignmentPattern]; + } + + return new DetectorResult(bits, points); + } + + private static function sampleGrid(image:BitMatrix, transform:PerspectiveTransform, dimension:int):BitMatrix + { + + var sampler:GridSampler = GridSampler.getGridSamplerInstance(); + return sampler.sampleGrid(image, dimension, dimension, transform); + } + + /** + *

Computes the dimension (number of modules on a size) of the QR Code based on the position + * of the finder patterns and estimated module size.

+ */ + private static function computeDimension(topLeft:ResultPoint, topRight:ResultPoint, bottomLeft:ResultPoint, moduleSize:Number):int + { +// note : check custom round function at the bottom + var tltrCentersDimension:int = round(ResultPoint.distance(topLeft, topRight) / moduleSize); + var tlblCentersDimension:int = round(ResultPoint.distance(topLeft, bottomLeft) / moduleSize); + var dimension:int = ((tltrCentersDimension + tlblCentersDimension) >> 1) + 7; + switch (dimension & 0x03) + { // mod 4 + case 0: + dimension++; + break; + // 1? do nothing + case 2: + dimension--; + break; + case 3: + throw new ReaderException("Detector : detect : dimension not recognized"); + } + return dimension; + } + + /** + *

Computes an average estimated module size based on estimated derived from the positions + * of the three finder patterns.

+ */ + private function calculateModuleSize(topLeft:ResultPoint, topRight:ResultPoint, bottomLeft:ResultPoint):Number + { + // Take the average + var num1:Number = calculateModuleSizeOneWay(topLeft, topRight); + var num2:Number = calculateModuleSizeOneWay(topLeft, bottomLeft); + var res:Number = (num1 + num2) / 2; + return res; + } + + /** + *

Estimates module size based on two finder patterns -- it uses + * {@link #sizeOfBlackWhiteBlackRunBothWays(int, int, int, int)} to figure the + * width of each, measuring along the axis between their centers.

+ */ + private function calculateModuleSizeOneWay(pattern:ResultPoint, otherPattern:ResultPoint):Number + { + var moduleSizeEst1:Number = sizeOfBlackWhiteBlackRunBothWays(int(pattern.getX()), int(pattern.getY()), int(otherPattern.getX()), int(otherPattern.getY())); + var moduleSizeEst2:Number = sizeOfBlackWhiteBlackRunBothWays(int(otherPattern.getX()), int(otherPattern.getY()), int(pattern.getX()), int(pattern.getY())); + + if (isNaN(moduleSizeEst1)) + { + return moduleSizeEst2 / 7; + } + if (isNaN(moduleSizeEst2)) + { + return moduleSizeEst1 / 7; + } + // Average them, and divide by 7 since we've counted the width of 3 black modules, + // and 1 white and 1 black module on either side. Ergo, divide sum by 14. + return (moduleSizeEst1 + moduleSizeEst2) / 14; + } + + /** + * See {@link #sizeOfBlackWhiteBlackRun(int, int, int, int)}; computes the total width of + * a finder pattern by looking for a black-white-black run from the center in the direction + * of another point (another finder pattern center), and in the opposite direction too.

+ */ + private function sizeOfBlackWhiteBlackRunBothWays(fromX:int, fromY:int, toX:int, toY:int):Number + { + + var result:Number = sizeOfBlackWhiteBlackRun(fromX, fromY, toX, toY); + + // Now count other way -- don't run off image though of course + var scale:Number = 1; + var otherToX:int = fromX - (toX - fromX); + if (otherToX < 0) + { + // "to" should the be the first value not included, so, the first value off + // the edge is -1 + scale = fromX / (fromX - otherToX); + otherToX = 0; + } + else if (otherToX >= image.getWidth()) + { + scale = (image.getWidth() - 1 - fromX) / (otherToX - fromX); + otherToX = image.getWidth() - 1; + } + var otherToY:int = int(fromY - (toY - fromY) * scale); + + scale = 1; + if (otherToY < 0) + { + scale = fromY / (fromY - otherToY); + otherToY = 0; + } + else if (otherToY >= image.getHeight()) + { + scale = (image.getHeight() - 1 - fromY) / (otherToY - fromY); + otherToY = image.getHeight() - 1; + } + otherToX = int(fromX + (otherToX - fromX) * scale); + + result += sizeOfBlackWhiteBlackRun(fromX, fromY, otherToX, otherToY); + return result - 1; // -1 because we counted the middle pixel twice + } + + /** + *

This method traces a line from a point in the image, in the direction towards another point. + * It begins in a black region, and keeps going until it finds white, then black, then white again. + * It reports the distance from the start to this point.

+ * + *

This is used when figuring out how wide a finder pattern is, when the finder pattern + * may be skewed or rotated.

+ */ + private function sizeOfBlackWhiteBlackRun(fromX:int, fromY:int, toX:int, toY:int):Number + { + // Mild variant of Bresenham's algorithm; + // see http://en.wikipedia.org/wiki/Bresenham's_line_algorithm + var steep:Boolean = Math.abs(toY - fromY) > Math.abs(toX - fromX); + if (steep) + { + var temp:int = fromX; + fromX = fromY; + fromY = temp; + temp = toX; + toX = toY; + toY = temp; + } + + var dx:int = Math.abs(toX - fromX); + var dy:int = Math.abs(toY - fromY); + var error:int = -dx >> 1; + var ystep:int = fromY < toY ? 1 : -1; + var xstep:int = fromX < toX ? 1 : -1; + // In black pixels, looking for white, first or second time. + var state:int = 0; + // Loop up until x == toX, but not beyond + var xLimit:int = toX + xstep; + for (var x:int = fromX, y:int = fromY; x != xLimit; x += xstep) + { + var realX:int = steep ? y : x; + var realY:int = steep ? x : y; + + // Does current pixel mean we have moved white to black or vice versa? + var pixl:Boolean = image._get(realX, realY); + if (((state == 0) && !pixl) || ((state == 1) && pixl) || ((state == 2) && !pixl)) + { + if (state == 2) + { + var diffX:int = x - fromX; + var diffY:int = y - fromY; + return Math.sqrt(diffX * diffX + diffY * diffY); + } + state++; + } + + error += dy; + if (error > 0) + { + if (y == toY) + { + break; + } + y += ystep; + error -= dx; + } + } + // Found black-white-black; give the benefit of the doubt that the next pixel outside the image + // is "white" so this last point at (toX+xStep,toY) is the right ending. This is really a + // small approximation; (toX+xStep,toY+yStep) might be really correct. Ignore this. + if (state == 2) + { + var diffX1:int = toX + xstep - fromX; + var diffY1:int = toY - fromY; + return Math.sqrt(diffX1 * diffX1 + diffY1 * diffY1); + } + // else we didn't find even black-white-black; no estimate is really possible + return NaN; + } + + /** + *

Attempts to locate an alignment pattern in a limited region of the image, which is + * guessed to contain it. This method uses {@link AlignmentPattern}.

+ * + * @param overallEstModuleSize estimated module size so far + * @param estAlignmentX x coordinate of center of area probably containing alignment pattern + * @param estAlignmentY y coordinate of above + * @param allowanceFactor number of pixels in all directons to search from the center + * @return {@link AlignmentPattern} if found, or null otherwise + * @throws ReaderException if an unexpected error occurs during detection + */ + private function findAlignmentInRegion(overallEstModuleSize:Number, estAlignmentX:int, estAlignmentY:int, allowanceFactor:Number):AlignmentPattern + { + // Look for an alignment pattern (3 modules in size) around where it + // should be + + var allowance:int = int((allowanceFactor * overallEstModuleSize)); + var alignmentAreaLeftX:int = Math.max(0, estAlignmentX - allowance); + var alignmentAreaRightX:int = Math.min(image.getWidth() - 1, estAlignmentX + allowance); + if (alignmentAreaRightX - alignmentAreaLeftX < overallEstModuleSize * 3) + { + throw new ReaderException("Detector : findAlignmentInRegion : area smaller than 3 times overallEstModuleSize"); + } + + var alignmentAreaTopY:int = Math.max(0, estAlignmentY - allowance); + var alignmentAreaBottomY:int = Math.min(image.getHeight() - 1, estAlignmentY + allowance); + if (alignmentAreaBottomY - alignmentAreaTopY < overallEstModuleSize * 3) + { + throw NotFoundException.getNotFoundInstance(); + } + + var alignmentFinder:AlignmentPatternFinder = new AlignmentPatternFinder(image, alignmentAreaLeftX, alignmentAreaTopY, alignmentAreaRightX - alignmentAreaLeftX, alignmentAreaBottomY - alignmentAreaTopY, overallEstModuleSize, resultPointCallback); + return alignmentFinder.find(); + } + + /** + * Ends up being a bit faster than Math.round(). This merely rounds its argument to the nearest int, + * where x.5 rounds up. + */ + private static function round(d:Number):int + { + return int(d + 0.5); + } + + public static function createTransform(topLeft:ResultPoint, topRight:ResultPoint, bottomLeft:ResultPoint, alignmentPattern:ResultPoint, dimension:int):PerspectiveTransform + { + var dimMinusThree:Number = dimension - 3.5; + var bottomRightX:Number; + var bottomRightY:Number; + var sourceBottomRightX:Number; + var sourceBottomRightY:Number; + if (alignmentPattern != null) + { + bottomRightX = alignmentPattern.getX(); + bottomRightY = alignmentPattern.getY(); + sourceBottomRightX = sourceBottomRightY = dimMinusThree - 3.0; + } + else + { + // Don't have an alignment pattern, just make up the bottom-right point + bottomRightX = (topRight.getX() - topLeft.getX()) + bottomLeft.getX(); + bottomRightY = (topRight.getY() - topLeft.getY()) + bottomLeft.getY(); + sourceBottomRightX = sourceBottomRightY = dimMinusThree; + } + + return PerspectiveTransform.quadrilateralToQuadrilateral(3.5, 3.5, dimMinusThree, 3.5, sourceBottomRightX, sourceBottomRightY, 3.5, dimMinusThree, topLeft.getX(), topLeft.getY(), topRight.getX(), topRight.getY(), bottomRightX, bottomRightY, bottomLeft.getX(), bottomLeft.getY()); + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/detector/FinderPattern.as b/FairyGUI-as3/src/com/google/zxing/qrcode/detector/FinderPattern.as new file mode 100644 index 0000000..9c79b5f --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/detector/FinderPattern.as @@ -0,0 +1,78 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.detector +{ + import com.google.zxing.ResultPoint; + + public class FinderPattern extends ResultPoint + { + protected var estimatedModuleSize:Number; + protected var count:int; + + public function FinderPattern(posX:Number, posY:Number, estimatedModuleSize:Number, count:int = 1) { + super(posX,posY); + this.estimatedModuleSize = estimatedModuleSize; + this.count = count; + } + + public function getEstimatedModuleSize():Number + { + return estimatedModuleSize; + } + + public function getCount():int + { + return count; + } + + public function incrementCount():void + { + this.count++; + } + + /** + *

Determines if this finder pattern "about equals" a finder pattern at the stated + * position and size -- meaning, it is at nearly the same center with nearly the same size.

+ */ + public function aboutEquals(moduleSize:Number, i:Number, j:Number):Boolean + { + if (Math.abs(i - getY()) <= moduleSize && Math.abs(j - getX()) <= moduleSize) + { + var moduleSizeDiff:Number = Math.abs(moduleSize - estimatedModuleSize); + var result:Boolean = moduleSizeDiff <= 1 || moduleSizeDiff / estimatedModuleSize <= 1; + return result; + } + return false; + } + + /** + * Combines this object's current estimate of a finder pattern position and module size + * with a new estimate. It returns a new {@code FinderPattern} containing a weighted average + * based on count. + */ + public function combineEstimate(i:Number,j:Number,newModuleSize:Number):FinderPattern + { + var combinedCount:int = count + 1; + var combinedX:Number = (count * getX() + j) / combinedCount; + var combinedY:Number = (count * getY() + i) / combinedCount; + var combinedModuleSize:Number = (count * getEstimatedModuleSize() + newModuleSize) / combinedCount; + return new FinderPattern(combinedX, combinedY, combinedModuleSize, combinedCount); + } + + } + +} diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/detector/FinderPatternFinder.as b/FairyGUI-as3/src/com/google/zxing/qrcode/detector/FinderPatternFinder.as new file mode 100644 index 0000000..52238d7 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/detector/FinderPatternFinder.as @@ -0,0 +1,678 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.detector +{ + import com.google.zxing.DecodeHintType; + import com.google.zxing.NotFoundException; + import com.google.zxing.ReaderException; + import com.google.zxing.ResultPoint; + import com.google.zxing.common.BitArray; + import com.google.zxing.common.BitMatrix; + import com.google.zxing.ResultPointCallback; + import com.google.zxing.common.flexdatatypes.ArrayList; + import com.google.zxing.common.flexdatatypes.HashTable; + + public class FinderPatternFinder + { + + private static var CENTER_QUORUM:int = 2; + protected static var MIN_SKIP:int = 3; // 1 pixel/module times 3 modules/center + protected static var MAX_MODULES:int = 57; // support up to version 10 for mobile clients + private static var INTEGER_MATH_SHIFT:int = 8; + + private var image:BitMatrix; + private var possibleCenters:ArrayList; + private var hasSkipped:Boolean; + private var crossCheckStateCount:Array; + private var resultPointCallback:ResultPointCallback; + + protected function getImage():BitMatrix + { + return image; + } + + protected function getPossibleCenters():ArrayList + { + return possibleCenters; + } + + /** + *

Creates a finder that will search the image for three finder patterns.

+ * + * @param image image to search + */ + public function FinderPatternFinder(image:BitMatrix, resultPointCallback:ResultPointCallback) + { + this.image = image; + this.possibleCenters = new ArrayList(); + this.crossCheckStateCount = new Array(5); + this.resultPointCallback = resultPointCallback; + } + + public function find(hints:HashTable):FinderPatternInfo + { + var tryHarder:Boolean = hints != null && hints.ContainsKey(DecodeHintType.TRY_HARDER); + var maxI:int = image.getHeight(); + var maxJ:int = image.getWidth(); + // We are looking for black/white/black/white/black modules in + // 1:1:3:1:1 ratio; this tracks the number of such modules seen so far + + // Let's assume that the maximum version QR Code we support takes up 1/4 the height of the + // image, and then account for the center being 3 modules in size. This gives the smallest + // number of pixels the center could be, so skip this often. When trying harder, look for all + // QR versions regardless of how dense they are. + var iSkip:int = int((3 * maxI) / (4 * MAX_MODULES)); + if (iSkip < MIN_SKIP || tryHarder) + { + iSkip = MIN_SKIP; + } + + var done:Boolean = false; + var stateCount:Array = new Array(5); + // Get a row of black/white values + + for (var i:int = iSkip - 1; i < maxI && !done; i += iSkip) + { + + stateCount[0] = 0; + stateCount[1] = 0; + stateCount[2] = 0; + stateCount[3] = 0; + stateCount[4] = 0; + var currentState:int = 0; + //var a:String = "line:"+i+";line="; + //for (var j1:int = 0; j1 < maxJ; j1++) {if (image._get(j1, i)) { a+="0"; } else { a+="1"; }} + //var ajsdgsfd:int=3; + for (var j:int = 0; j < maxJ; j++) + { + if (i == 68 && j == 105) + { + var c:int = 45; + } + if (image._get(j, i)) + { + // Black pixel + if ((currentState & 1) == 1) + { // Counting white pixels + currentState++; + } + stateCount[currentState]++; + } + else + { // White pixel + if ((currentState & 1) == 0) + { // Counting black pixels + if (currentState == 4) + { // A winner? + var fpc:Boolean = foundPatternCross(stateCount); + + if (fpc) + { + // Yes + var confirmed:Boolean = handlePossibleCenter(stateCount, i, j); + if (confirmed) + { + // Start examining every other line. Checking each line turned out to be too + // expensive and didn't improve performance. + iSkip = 2; + if (hasSkipped) + { + done = haveMultiplyConfirmedCenters(); + } + else + { + var rowSkip:int = findRowSkip(); + if (rowSkip > stateCount[2]) + { + // Skip rows between row of lower confirmed center + // and top of presumed third confirmed center + // but back up a bit to get a full chance of detecting + // it, entire width of center of finder pattern + + // Skip by rowSkip, but back off by stateCount[2] (size of last center + // of pattern we saw) to be conservative, and also back off by iSkip which + // is about to be re-added + i += rowSkip - stateCount[2] - iSkip; + j = maxJ - 1; + } + } + } + else + { + stateCount[0] = stateCount[2]; + stateCount[1] = stateCount[3]; + stateCount[2] = stateCount[4]; + stateCount[3] = 1; + stateCount[4] = 0; + currentState = 3; + continue; + } + // Clear state to start looking again + currentState = 0; + stateCount[0] = 0; + stateCount[1] = 0; + stateCount[2] = 0; + stateCount[3] = 0; + stateCount[4] = 0; + } + else + { // No, shift counts back by two + stateCount[0] = stateCount[2]; + stateCount[1] = stateCount[3]; + stateCount[2] = stateCount[4]; + stateCount[3] = 1; + stateCount[4] = 0; + currentState = 3; + } + } + else + { + stateCount[++currentState]++; + } + } + else + { // Counting white pixels + stateCount[currentState]++; + } + } + } + if (foundPatternCross(stateCount)) + { + var confirmed2:Boolean = handlePossibleCenter(stateCount, i, maxJ); + if (confirmed2) + { + iSkip = stateCount[0]; + if (hasSkipped) + { + // Found a third one + done = haveMultiplyConfirmedCenters(); + } + } + } + + } + + var patternInfo:Array = selectBestPatterns(); + ResultPoint.orderBestPatterns(patternInfo); + + return new FinderPatternInfo(patternInfo); + + } + + /** + * Given a count of black/white/black/white/black pixels just seen and an end position, + * figures the location of the center of this run. + */ + private static function centerFromEnd(stateCount:Array, end:int):Number + { + return (end - stateCount[4] - stateCount[3]) - stateCount[2] / 2; + } + + /** + * @param stateCount count of black/white/black/white/black pixels just read + * @return true iff the proportions of the counts is close enough to the 1/1/3/1/1 ratios + * used by finder patterns to be considered a match + */ + public static function foundPatternCross(stateCount:Array):Boolean + { + var totalModuleSize:int = 0; + for (var i:int = 0; i < 5; i++) + { + var count:int = stateCount[i]; + if (count == 0) + { + return false; + } + totalModuleSize += count; + } + if (totalModuleSize < 7) + { + return false; + } + var moduleSize:int = int((totalModuleSize << INTEGER_MATH_SHIFT) / 7); + var maxVariance:int = int(moduleSize / 2); + // Allow less than 50% variance from 1-1-3-1-1 proportions + var res:Boolean = Math.abs(moduleSize - (stateCount[0] << INTEGER_MATH_SHIFT)) < maxVariance && Math.abs(moduleSize - (stateCount[1] << INTEGER_MATH_SHIFT)) < maxVariance && Math.abs(3 * moduleSize - (stateCount[2] << INTEGER_MATH_SHIFT)) < 3 * maxVariance && Math.abs(moduleSize - (stateCount[3] << INTEGER_MATH_SHIFT)) < maxVariance && Math.abs(moduleSize - (stateCount[4] << INTEGER_MATH_SHIFT)) < maxVariance; + + return res; + } + + private function getCrossCheckStateCount():Array + { + crossCheckStateCount[0] = 0; + crossCheckStateCount[1] = 0; + crossCheckStateCount[2] = 0; + crossCheckStateCount[3] = 0; + crossCheckStateCount[4] = 0; + return crossCheckStateCount; + } + + /** + *

After a horizontal scan finds a potential finder pattern, this method + * "cross-checks" by scanning down vertically through the center of the possible + * finder pattern to see if the same proportion is detected.

+ * + * @param startI row where a finder pattern was detected + * @param centerJ center of the section that appears to cross a finder pattern + * @param maxCount maximum reasonable number of modules that should be + * observed in any reading state, based on the results of the horizontal scan + * @return vertical center of finder pattern, or {@link Float#NaN} if not found + */ + private function crossCheckVertical(startI:int, centerJ:int, maxCount:int, originalStateCountTotal:int):Number + { + var image:BitMatrix = this.image; + + var maxI:int = image.getHeight(); + var stateCount:Array = getCrossCheckStateCount(); + + // Start counting up from center + var i:int = startI; + while (i >= 0 && image._get(centerJ, i)) + { + stateCount[2] = stateCount[2] + 1; + i--; + } + if (i < 0) + { + return Number.NaN; + } + while (i >= 0 && !image._get(centerJ, i) && stateCount[1] <= maxCount) + { + stateCount[1] = stateCount[1] + 1; + i--; + } + // If already too many modules in this state or ran off the edge: + if (i < 0 || stateCount[1] > maxCount) + { + return Number.NaN; + } + while (i >= 0 && image._get(centerJ, i) && stateCount[0] <= maxCount) + { + stateCount[0] = stateCount[0] + 1; + i--; + } + if (stateCount[0] > maxCount) + { + return Number.NaN; + } + + // Now also count down from center + i = startI + 1; + while (i < maxI && image._get(centerJ, i)) + { + stateCount[2] = stateCount[2] + 1; + i++; + } + if (i == maxI) + { + return Number.NaN; + } + while (i < maxI && !image._get(centerJ, i) && stateCount[3] < maxCount) + { + stateCount[3] = stateCount[3] + 1; + i++; + } + if (i == maxI || stateCount[3] >= maxCount) + { + return Number.NaN; + } + while (i < maxI && image._get(centerJ, i) && stateCount[4] < maxCount) + { + stateCount[4] = stateCount[4] + 1; + i++; + } + if (stateCount[4] >= maxCount) + { + return Number.NaN; + } + + // If we found a finder-pattern-like section, but its size is more than 20% different than + // the original, assume it's a false positive + var stateCountTotal:int = stateCount[0] + stateCount[1] + stateCount[2] + stateCount[3] + stateCount[4]; + if (5 * Math.abs(stateCountTotal - originalStateCountTotal) >= 2 * originalStateCountTotal) + { + return Number.NaN; + } + + return foundPatternCross(stateCount) ? centerFromEnd(stateCount, i) : Number.NaN; + } + + /** + *

Like {@link #crossCheckVertical(int, int, int, int)}, and in fact is basically identical, + * except it reads horizontally instead of vertically. This is used to cross-cross + * check a vertical cross check and locate the real center of the alignment pattern.

+ */ + private function crossCheckHorizontal(startJ:int, centerI:int, maxCount:int, originalStateCountTotal:int):Number + { + var image:BitMatrix = this.image; + + var maxJ:int = image.getWidth(); + var stateCount:Array = getCrossCheckStateCount(); + + var j:int = startJ; + while (j >= 0 && image._get(j, centerI)) + { + stateCount[2] = stateCount[2] + 1; + j--; + } + if (j < 0) + { + return Number.NaN; + } + while (j >= 0 && !image._get(j, centerI) && stateCount[1] <= maxCount) + { + stateCount[1] = stateCount[1] + 1; + j--; + } + if (j < 0 || stateCount[1] > maxCount) + { + return Number.NaN; + } + while (j >= 0 && image._get(j, centerI) && stateCount[0] <= maxCount) + { + stateCount[0] = stateCount[0] + 1; + j--; + } + if (stateCount[0] > maxCount) + { + return Number.NaN; + } + + j = startJ + 1; + while (j < maxJ && image._get(j, centerI)) + { + stateCount[2] = stateCount[2] + 1; + j++; + } + if (j == maxJ) + { + return Number.NaN; + } + while (j < maxJ && !image._get(j, centerI) && stateCount[3] < maxCount) + { + stateCount[3] = stateCount[3] + 1; + j++; + } + if (j == maxJ || stateCount[3] >= maxCount) + { + return Number.NaN; + } + while (j < maxJ && image._get(j, centerI) && stateCount[4] < maxCount) + { + stateCount[4] = stateCount[4] + 1; + j++; + } + if (stateCount[4] >= maxCount) + { + return Number.NaN; + } + + // If we found a finder-pattern-like section, but its size is significantly different than + // the original, assume it's a false positive + var stateCountTotal:int = stateCount[0] + stateCount[1] + stateCount[2] + stateCount[3] + stateCount[4]; + if (5 * Math.abs(stateCountTotal - originalStateCountTotal) >= originalStateCountTotal) + { + return Number.NaN; + } + + return foundPatternCross(stateCount) ? centerFromEnd(stateCount, j) : Number.NaN; + } + + /** + *

This is called when a horizontal scan finds a possible alignment pattern. It will + * cross check with a vertical scan, and if successful, will, ah, cross-cross-check + * with another horizontal scan. This is needed primarily to locate the real horizontal + * center of the pattern in cases of extreme skew.

+ * + *

If that succeeds the finder pattern location is added to a list that tracks + * the number of times each location has been nearly-matched as a finder pattern. + * Each additional find is more evidence that the location is in fact a finder + * pattern center + * + * @param stateCount reading state module counts from horizontal scan + * @param i row where finder pattern may be found + * @param j end of possible finder pattern in row + * @return true if a finder pattern candidate was found this time + */ + public function handlePossibleCenter(stateCount:Array, i:int, j:int):Boolean + { + var stateCountTotal:int = stateCount[0] + stateCount[1] + stateCount[2] + stateCount[3] + stateCount[4]; + var centerJ:Number = centerFromEnd(stateCount, j); + var centerI:Number = crossCheckVertical(i, int(centerJ), stateCount[2], stateCountTotal); + if (!isNaN(centerI)) + { + // Re-cross check + centerJ = crossCheckHorizontal(int(centerJ), int(centerI), stateCount[2], stateCountTotal); + if (!isNaN(centerJ)) + { + var estimatedModuleSize:Number = stateCountTotal / 7; + var found:Boolean = false; + var max:int = possibleCenters.Count; + for (var index:int = 0; index < max; index++) + { + var center:FinderPattern = (possibleCenters.elementAt(index) as FinderPattern); + // Look for about the same center and module size: + var aer:Boolean = center.aboutEquals(estimatedModuleSize, centerI, centerJ); + if (aer) + { + var resp:ResultPoint = center.combineEstimate(centerI, centerJ, estimatedModuleSize); + possibleCenters.setElementAt(resp, index); + found = true; + break; + } + } + if (!found) + { + var point:ResultPoint = new FinderPattern(centerJ, centerI, estimatedModuleSize); + possibleCenters.addElement(point); + if (resultPointCallback != null) + { + resultPointCallback.foundPossibleResultPoint(point); + } + } + return true; + } + } + return false; + } + + /** + * @return number of rows we could safely skip during scanning, based on the first + * two finder patterns that have been located. In some cases their position will + * allow us to infer that the third pattern must lie below a certain point farther + * down in the image. + */ + private function findRowSkip():int + { + var max:int = possibleCenters.Count; + if (max <= 1) + { + return 0; + } + var firstConfirmedCenter:FinderPattern = null; + for (var i:int = 0; i < max; i++) + { + var center:FinderPattern = FinderPattern(possibleCenters.getObjectByIndex(i)); + if (center.getCount() >= CENTER_QUORUM) + { + if (firstConfirmedCenter == null) + { + firstConfirmedCenter = center; + } + else + { + // We have two confirmed centers + // How far down can we skip before resuming looking for the next + // pattern? In the worst case, only the difference between the + // difference in the x / y coordinates of the two centers. + // This is the case where you find top left last. + hasSkipped = true; + return int((Math.abs(firstConfirmedCenter.getX() - center.getX()) - Math.abs(firstConfirmedCenter.getY() - center.getY())) / 2); + } + } + } + return 0; + } + + /** + * @return true iff we have found at least 3 finder patterns that have been detected + * at least {@link #CENTER_QUORUM} times each, and, the estimated module size of the + * candidates is "pretty similar" + */ + private function haveMulitplyConfirmedCenters():Boolean + { + var confirmedCount:int = 0; + var totalModuleSize:Number = 0; + var max:int = possibleCenters.Count; + for (var i:int = 0; i < max; i++) + { + var pattern:FinderPattern = FinderPattern(possibleCenters.getObjectByIndex(i)); + if (pattern.getCount() >= CENTER_QUORUM) + { + confirmedCount++; + totalModuleSize += pattern.getEstimatedModuleSize(); + } + } + if (confirmedCount < 3) + { + return false; + } + // OK, we have at least 3 confirmed centers, but, it's possible that one is a "false positive" + // and that we need to keep looking. We detect this by asking if the estimated module sizes + // vary too much. We arbitrarily say that when the total deviation from average exceeds + // 15% of the total module size estimates, it's too much. + var average:Number = totalModuleSize / max; + var totalDeviation:Number = 0; + for (var i2:int = 0; i2 < max; i2++) + { + var pattern2:FinderPattern = FinderPattern(possibleCenters.getObjectByIndex(i2)); + totalDeviation += Math.abs(pattern2.getEstimatedModuleSize() - average); + } + return totalDeviation <= 0.05 * totalModuleSize; + } + + /** + * @return the 3 best {@link FinderPattern}s from our list of candidates. The "best" are + * those that have been detected at least {@link #CENTER_QUORUM} times, and whose module + * size differs from the average among those patterns the least + * @throws ReaderException if 3 such finder patterns do not exist + */ + private function selectBestPatterns():Array + { + var startSize:int = possibleCenters.size(); + if (startSize < 3) + { + // Couldn't find enough finder patterns + throw NotFoundException.getNotFoundInstance(); + } + + // Filter outlier possibilities whose module size is too different + if (startSize > 3) + { + // But we can only afford to do so if we have at least 4 possibilities to choose from + var totalModuleSize:Number = 0; + var square:Number = 0; + for (var i:int = 0; i < startSize; i++) + { + var size:Number = ((possibleCenters.elementAt(i)) as FinderPattern).getEstimatedModuleSize(); + totalModuleSize += size; + square += size * size; + } + var average:Number = totalModuleSize / startSize; + var stdDev:Number = Math.sqrt(square / startSize - average * average); + + //Collections.insertionSort(possibleCenters, new FurthestFromAverageComparator(average)); + //possibleCenters.sort_CenterComparator(); + possibleCenters.sort_FurthestFromAverageComparator(average); + + var limit:Number = Math.max(0.2 * average, stdDev); + + for (var i2:int = 0; i2 < possibleCenters.size() && possibleCenters.size() > 3; i2++) + { + var pattern:FinderPattern = (possibleCenters.elementAt(i2) as FinderPattern); + if (Math.abs(pattern.getEstimatedModuleSize() - average) > limit) + { + possibleCenters.removeElementAt(i2); + i2--; + } + } + } + + if (possibleCenters.size() > 3) + { + // Throw away all but those first size candidate points we found. + + var totalModuleSize2:Number = 0; + for (var i3:int = 0; i3 < possibleCenters.size(); i3++) + { + totalModuleSize2 += (possibleCenters.elementAt(i3) as FinderPattern).getEstimatedModuleSize(); + } + + var average3:Number = totalModuleSize2 / possibleCenters.size(); + + //Collections.insertionSort(possibleCenters, new CenterComparator(average)); + possibleCenters.sort_CenterComparator(average3); + possibleCenters.setSize(3); + } + + return [(possibleCenters.elementAt(0) as FinderPattern), (possibleCenters.elementAt(1) as FinderPattern), (possibleCenters.elementAt(2) as FinderPattern)]; + } + + public function compare(center1:Object, center2:Object, averageModuleSize:Number):int + { + return (Math.abs(FinderPattern(center1).getEstimatedModuleSize() - averageModuleSize) < Math.abs(FinderPattern(center2).getEstimatedModuleSize() - averageModuleSize)) ? -1 : 1; + } + + /** + * @return true iff we have found at least 3 finder patterns that have been detected + * at least {@link #CENTER_QUORUM} times each, and, the estimated module size of the + * candidates is "pretty similar" + */ + private function haveMultiplyConfirmedCenters():Boolean + { + var confirmedCount:int = 0; + var totalModuleSize:Number = 0; + var max:int = possibleCenters.size(); + for (var i:int = 0; i < max; i++) + { + var pattern:FinderPattern = (possibleCenters.elementAt(i) as FinderPattern); + if (pattern.getCount() >= CENTER_QUORUM) + { + confirmedCount++; + totalModuleSize += pattern.getEstimatedModuleSize(); + } + } + if (confirmedCount < 3) + { + return false; + } + // OK, we have at least 3 confirmed centers, but, it's possible that one is a "false positive" + // and that we need to keep looking. We detect this by asking if the estimated module sizes + // vary too much. We arbitrarily say that when the total deviation from average exceeds + // 5% of the total module size estimates, it's too much. + var average:Number = totalModuleSize / max; + var totalDeviation:Number = 0; + for (var i4:int = 0; i4 < max; i4++) + { + var pattern2:FinderPattern = (possibleCenters.elementAt(i4) as FinderPattern); + totalDeviation += Math.abs(pattern2.getEstimatedModuleSize() - average); + } + return totalDeviation <= 0.05 * totalModuleSize; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/detector/FinderPatternInfo.as b/FairyGUI-as3/src/com/google/zxing/qrcode/detector/FinderPatternInfo.as new file mode 100644 index 0000000..6265fb2 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/detector/FinderPatternInfo.as @@ -0,0 +1,49 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.detector +{ + public class FinderPatternInfo + { + protected var bottomLeft:FinderPattern; + protected var topLeft:FinderPattern; + protected var topRight:FinderPattern; + + public function FinderPatternInfo( patternCenters:Array) { + this.bottomLeft = patternCenters[0]; + this.topLeft = patternCenters[1]; + this.topRight = patternCenters[2]; + } + + public function getBottomLeft():FinderPattern + { + return bottomLeft; + } + + public function getTopLeft():FinderPattern + { + return topLeft; + } + + public function getTopRight():FinderPattern + { + return topRight; + } + + } + + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/detector/FurthestFromAverageComparator.as b/FairyGUI-as3/src/com/google/zxing/qrcode/detector/FurthestFromAverageComparator.as new file mode 100644 index 0000000..ceb8035 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/detector/FurthestFromAverageComparator.as @@ -0,0 +1,36 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.detector +{ + import com.google.zxing.common.Comparator; + public class FurthestFromAverageComparator + { + public static var average:Number = 0; + + public static function setAverage(average:Number):void + { + FurthestFromAverageComparator.average = average; + } + + public static function compare(center1:Object, center2:Object):int + { + var dA:Number = Math.abs((center2 as FinderPattern).getEstimatedModuleSize() - FurthestFromAverageComparator.average); + var dB:Number = Math.abs((center1 as FinderPattern).getEstimatedModuleSize() - FurthestFromAverageComparator.average); + return dA < dB ? -1 : dA == dB ? 0 : 1; + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/encoder/BitVector.as b/FairyGUI-as3/src/com/google/zxing/qrcode/encoder/BitVector.as new file mode 100644 index 0000000..d63bf62 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/encoder/BitVector.as @@ -0,0 +1,203 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.encoder +{ + + public class BitVector + { + + import com.google.zxing.common.flexdatatypes.StringBuilder; + import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + + protected var sizeInBits:int; + protected var array:Array; + + // For efficiency, start out with some room to work. + private static var DEFAULT_SIZE_IN_BYTES:int = 32; + + public function BitVector() + { + sizeInBits = 0; + array = new Array(DEFAULT_SIZE_IN_BYTES); + // init array + for (var i:int = 0; i < array.length; i++) + { + array[i] = 0; + } + } + + // Return the bit value at "index". + public function at(index:int):int + { + if (index < 0 || index >= sizeInBits) + { + throw new IllegalArgumentException("Bad index: " + index); + } + var value:int = array[index >> 3] & 0xff; + return (value >> (7 - (index & 0x7))) & 1; + } + + // Return the number of bits in the bit vector. + public function size():int + { + return sizeInBits; + } + + // Return the number of bytes in the bit vector. + public function sizeInBytes():int + { + return (sizeInBits + 7) >> 3; + } + + // Append one bit to the bit vector. + public function appendBit(bit:int):void + { + if (!(bit == 0 || bit == 1)) + { + throw new IllegalArgumentException("Bad bit"); + } + var numBitsInLastByte:int = sizeInBits & 0x7; + // We'll expand array if we don't have bits in the last byte. + if (numBitsInLastByte == 0) + { + appendByte(0); + sizeInBits -= 8; + } + // Modify the last byte. + array[sizeInBits >> 3] |= int((bit << (7 - numBitsInLastByte))); + ++sizeInBits; + } + + // Append "numBits" bits in "value" to the bit vector. + // REQUIRES: 0<= numBits <= 32. + // + // Examples: + // - appendBits(0x00, 1) adds 0. + // - appendBits(0x00, 4) adds 0000. + // - appendBits(0xff, 8) adds 11111111. + public function appendBits(value:int, numBits:int):void + { + if (numBits < 0 || numBits > 32) + { + throw new IllegalArgumentException("Num bits must be between 0 and 32"); + } + var numBitsLeft:int = numBits; + while (numBitsLeft > 0) + { + // Optimization for byte-oriented appending. + if ((sizeInBits & 0x7) == 0 && numBitsLeft >= 8) + { + var newByte:int = (value >> (numBitsLeft - 8)) & 0xff; + appendByte(newByte); + numBitsLeft -= 8; + } + else + { + var bit:int = (value >> (numBitsLeft - 1)) & 1; + appendBit(bit); + --numBitsLeft; + } + } + } + + // Append "bits". + public function appendBitVector(bits:BitVector):void + { + var size:int = bits.size(); + for (var i:int = 0; i < size; ++i) + { + appendBit(bits.at(i)); + } + } + + // Modify the bit vector by XOR'ing with "other" + public function xor(other:BitVector):void + { + if (sizeInBits != other.size()) + { + throw new IllegalArgumentException("BitVector sizes don't match"); + } + var sizeInBytes:int = (sizeInBits + 7) >> 3; + for (var i:int = 0; i < sizeInBytes; ++i) + { + // The last byte could be incomplete (i.e. not have 8 bits in + // it) but there is no problem since 0 XOR 0 == 0. + array[i] ^= other.array[i]; + } + } + + // Return String like "01110111" for debugging. + public function toString():String + { + var result:StringBuilder = new StringBuilder(sizeInBits); + for (var i:int = 0; i < sizeInBits; ++i) + { + if (at(i) == 0) + { + result.Append('0'); + } + else if (at(i) == 1) + { + result.Append('1'); + } + else + { + throw new IllegalArgumentException("Byte isn't 0 or 1"); + } + } + return result.ToString(); + } + + // Callers should not assume that array.length is the exact number of bytes needed to hold + // sizeInBits - it will typically be larger for efficiency. + public function getArray():Array + { + return array; + } + + // Add a new byte to the end, possibly reallocating and doubling the size of the array if we've + // run out of room. + private function appendByte(value:int):void + { + /* not needed -> array size not limited in Actionscript + if ((sizeInBits >> 3) == array.length) + { + var newArray:sbyteArray = new Array((array.length << 1)); + for (var i:int=0;i> 3] = value; + sizeInBits += 8; + } + + public function makeByteArray():void + { + for (var i:int = 0; i < this.array.length; i++) + { + if (this.array[i] > 127) + { + this.array[i] = this.array[i] - 256; + } + } + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/encoder/BlockPair.as b/FairyGUI-as3/src/com/google/zxing/qrcode/encoder/BlockPair.as new file mode 100644 index 0000000..91eda77 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/encoder/BlockPair.as @@ -0,0 +1,40 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.encoder +{ + public class BlockPair + { + import com.google.zxing.common.zxingByteArray; + + protected var dataBytes:zxingByteArray; + protected var errorCorrectionBytes:zxingByteArray ; + + public function BlockPair(data:zxingByteArray, errorCorrection:zxingByteArray) { + dataBytes = data; + errorCorrectionBytes = errorCorrection; + } + + public function getDataBytes():zxingByteArray { + return dataBytes; + } + + public function getErrorCorrectionBytes():zxingByteArray { + return errorCorrectionBytes; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/encoder/Encoder.as b/FairyGUI-as3/src/com/google/zxing/qrcode/encoder/Encoder.as new file mode 100644 index 0000000..f33077c --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/encoder/Encoder.as @@ -0,0 +1,715 @@ +package com.google.zxing.qrcode.encoder +{ + /* + * Copyright 2008 ZXing authors + * + * Licensed 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. + */ + + import com.google.zxing.EncodeHintType; + import com.google.zxing.WriterException; + import com.google.zxing.common.ByteMatrix; + import com.google.zxing.common.CharacterSetECI; + import com.google.zxing.common.flexdatatypes.ArrayList; + import com.google.zxing.common.flexdatatypes.HashTable; + import com.google.zxing.common.reedsolomon.GenericGF; + import com.google.zxing.common.reedsolomon.ReedSolomonEncoder; + import com.google.zxing.common.zxingByteArray; + import com.google.zxing.qrcode.decoder.ECBlocks; + import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; + import com.google.zxing.qrcode.decoder.Mode; + import com.google.zxing.qrcode.decoder.Version; + + import flash.utils.ByteArray; + + /** + * @author satorux@google.com (Satoru Takabayashi) - creator + * @author dswitkin@google.com (Daniel Switkin) - ported from C++ + */ + public final class Encoder + { + + // The original table is defined in the table 5 of JISX0510:2004 (p.19). + public static var ALPHANUMERIC_TABLE:Array = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0x00-0x0f + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0x10-0x1f + 36, -1, -1, -1, 37, 38, -1, -1, -1, -1, 39, 40, -1, 41, 42, 43, // 0x20-0x2f + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 44, -1, -1, -1, -1, -1, // 0x30-0x3f + -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, // 0x40-0x4f + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, // 0x50-0x5f + ]; + + public static var DEFAULT_BYTE_MODE_ENCODING:String = "ISO-8859-1"; + + public function Encoder() + { + } + + // The mask penalty calculation is complicated. See Table 21 of JISX0510:2004 (p.45) for details. + // Basically it applies four rules and summate all penalties. + private static function calculateMaskPenalty(matrix:ByteMatrix):int + { + var penalty:int = 0; + penalty += MaskUtil.applyMaskPenaltyRule1(matrix); + penalty += MaskUtil.applyMaskPenaltyRule2(matrix); + penalty += MaskUtil.applyMaskPenaltyRule3(matrix); + penalty += MaskUtil.applyMaskPenaltyRule4(matrix); + return penalty; + } + + /** + * Encode "bytes" with the error correction level "ecLevel". The encoding mode will be chosen + * internally by chooseMode(). On success, store the result in "qrCode". + * + * We recommend you to use QRCode.EC_LEVEL_L (the lowest level) for + * "getECLevel" since our primary use is to show QR code on desktop screens. We don't need very + * strong error correction for this purpose. + * + * Note that there is no way to encode bytes in MODE_KANJI. We might want to add EncodeWithMode() + * with which clients can specify the encoding mode. For now, we don't need the functionality. + */ +// public static function encode(content:String , ecLevel:ErrorCorrectionLevel , qrCode:QRCode ):void +// { +// encode(content, ecLevel, null, qrCode); +// } + + public static function encode(content:String, ecLevel:ErrorCorrectionLevel, qrCode:QRCode, hints:HashTable = null):void + { + var encoding:String = hints == null ? null : (hints._get(EncodeHintType.CHARACTER_SET) as String); + if (encoding == null) + { + encoding = DEFAULT_BYTE_MODE_ENCODING; + } + + // Step 1: Choose the mode (encoding). + var mode:Mode = chooseMode(content, encoding); + + // Step 2: Append "bytes" into "dataBits" in appropriate encoding. + var dataBits:BitVector = new BitVector(); + appendBytes(content, mode, dataBits, encoding); + + // Step 3: Initialize QR code that can contain "dataBits". + var numInputBytes:int = dataBits.sizeInBytes(); + initQRCode(numInputBytes, ecLevel, mode, qrCode); + + // Step 4: Build another bit vector that contains header and data. + var headerAndDataBits:BitVector = new BitVector(); + + // Step 4.5: Append ECI message if applicable + if (mode == Mode.BYTE && encoding != DEFAULT_BYTE_MODE_ENCODING) + { + var eci:CharacterSetECI = CharacterSetECI.getCharacterSetECIByName(encoding); + if (eci != null) + { + appendECI(eci, headerAndDataBits); + } + } + + appendModeInfo(mode, headerAndDataBits); + + var numLetters:int = (mode == Mode.BYTE) ? dataBits.sizeInBytes() : content.length; + appendLengthInfo(numLetters, qrCode.getVersion(), mode, headerAndDataBits); + headerAndDataBits.appendBitVector(dataBits); + + headerAndDataBits.makeByteArray(); // make byte array + + // Step 5: Terminate the bits properly. + terminateBits(qrCode.getNumDataBytes(), headerAndDataBits); + + // Step 6: Interleave data bits with error correction code. + var finalBits:BitVector = new BitVector(); + interleaveWithECBytes(headerAndDataBits, qrCode.getNumTotalBytes(), qrCode.getNumDataBytes(), qrCode.getNumRSBlocks(), finalBits); + + finalBits.makeByteArray(); // make byte array + + // Step 7: Choose the mask pattern and set to "qrCode". + var matrix:ByteMatrix = new ByteMatrix(qrCode.getMatrixWidth(), qrCode.getMatrixWidth()); + + //finalBits + var ec:ErrorCorrectionLevel = qrCode.getECLevel() + var v:int = qrCode.getVersion(); + //matrix + + var maskpattern:int = chooseMaskPattern(finalBits, qrCode.getECLevel(), qrCode.getVersion(), matrix) + qrCode.setMaskPattern(maskpattern); + + // Step 8. Build the matrix and set it to "qrCode". + MatrixUtil.buildMatrix(finalBits, qrCode.getECLevel(), qrCode.getVersion(), qrCode.getMaskPattern(), matrix); + + qrCode.setMatrix(matrix); + var A:String = matrix.toString2(); + // Step 9. Make sure we have a valid QR Code. + if (!qrCode.isValid()) + { + throw new WriterException("Invalid QR code: " + qrCode.toString()); + } + } + + /** + * @return the code point of the table used in alphanumeric mode or + * -1 if there is no corresponding code in the table. + */ + public static function getAlphanumericCode(code:int):int + { + if (code < Encoder.ALPHANUMERIC_TABLE.length) + { + return Encoder.ALPHANUMERIC_TABLE[code]; + } + return -1; + } + + //public static function chooseMode(content:String):Mode { + // return chooseMode(content, null); + // } + + /** + * Choose the best mode by examining the content. Note that 'encoding' is used as a hint; + * if it is Shift_JIS then we assume the input is Kanji and return {@link Mode#KANJI}. + */ + public static function chooseMode(content:String, encoding:String = null):Mode + { + if (encoding == "Shift_JIS") + { + return Mode.KANJI; + } + var hasNumeric:Boolean = false; + var hasAlphanumeric:Boolean = false; + for (var i:int = 0; i < content.length; ++i) + { + var c:String = content.charAt(i); + if (c.charCodeAt(0) >= ('0').charCodeAt(0) && c.charCodeAt(0) <= ('9').charCodeAt(0)) + { + hasNumeric = true; + } + else if (Encoder.getAlphanumericCode(c.charCodeAt(0)) != -1) + { + hasAlphanumeric = true; + } + else + { + return Mode.BYTE; + } + } + if (hasAlphanumeric) + { + return Mode.ALPHANUMERIC; + } + else if (hasNumeric) + { + return Mode.NUMERIC; + } + return Mode.BYTE; + } + + private static function chooseMaskPattern(bits:BitVector, ecLevel:ErrorCorrectionLevel, version:int, matrix:ByteMatrix):int + { + + var minPenalty:int = int.MAX_VALUE; // Lower penalty is better. + var bestMaskPattern:int = -1; + // We try all mask patterns to choose the best one. + for (var maskPattern:int = 0; maskPattern < QRCode.NUM_MASK_PATTERNS; maskPattern++) + { + MatrixUtil.buildMatrix(bits, ecLevel, version, maskPattern, matrix); + var penalty:int = calculateMaskPenalty(matrix); + + if (penalty < minPenalty) + { + minPenalty = penalty; + bestMaskPattern = maskPattern; + } + } + return bestMaskPattern; + } + + /** + * Initialize "qrCode" according to "numInputBytes", "ecLevel", and "mode". On success, + * modify "qrCode". + */ + private static function initQRCode(numInputBytes:int, ecLevel:ErrorCorrectionLevel, mode:Mode, qrCode:QRCode):void + { + qrCode.setECLevel(ecLevel); + qrCode.setMode(mode); + + // In the following comments, we use numbers of Version 7-H. + for (var versionNum:int = 1; versionNum <= 40; versionNum++) + { + var version:Version = Version.getVersionForNumber(versionNum); + // numBytes = 196 + var numBytes:int = version.getTotalCodewords(); + // getNumECBytes = 130 + var ecBlocks:ECBlocks = version.getECBlocksForLevel(ecLevel); + var numEcBytes:int = ecBlocks.getTotalECCodewords(); + // getNumRSBlocks = 5 + var numRSBlocks:int = ecBlocks.getNumBlocks(); + // getNumDataBytes = 196 - 130 = 66 + var numDataBytes:int = numBytes - numEcBytes; + // We want to choose the smallest version which can contain data of "numInputBytes" + some + // extra bits for the header (mode info and length info). The header can be three bytes + // (precisely 4 + 16 bits) at most. Hence we do +3 here. + if (numDataBytes >= numInputBytes + 3) + { + // Yay, we found the proper rs block info! + qrCode.setVersion(versionNum); + qrCode.setNumTotalBytes(numBytes); + qrCode.setNumDataBytes(numDataBytes); + qrCode.setNumRSBlocks(numRSBlocks); + // getNumECBytes = 196 - 66 = 130 + qrCode.setNumECBytes(numEcBytes); + // matrix width = 21 + 6 * 4 = 45 + qrCode.setMatrixWidth(version.getDimensionForVersion()); + return; + } + } + throw new WriterException("Cannot find proper rs block info (input data too big?)"); + } + + /** + * Terminate bits as described in 8.4.8 and 8.4.9 of JISX0510:2004 (p.24). + */ + public static function terminateBits(numDataBytes:int, bits:BitVector):void + { + var capacity:int = numDataBytes << 3; + if (bits.size() > capacity) + { + throw new WriterException("data bits cannot fit in the QR Code" + bits.size() + " > " + capacity); + } + // Append termination bits. See 8.4.8 of JISX0510:2004 (p.24) for details. + // TODO: srowen says we can remove this for loop, since the 4 terminator bits are optional if + // the last byte has less than 4 bits left. So it amounts to padding the last byte with zeroes + // either way. + for (var i3:int = 0; i3 < 4 && bits.size() < capacity; ++i3) + { + bits.appendBit(0); + } + var numBitsInLastByte:int = bits.size() % 8; + // If the last byte isn't 8-bit aligned, we'll add padding bits. + if (numBitsInLastByte > 0) + { + var numPaddingBits:int = 8 - numBitsInLastByte; + for (var i2:int = 0; i2 < numPaddingBits; ++i2) + { + bits.appendBit(0); + } + } + // Should be 8-bit aligned here. + if (bits.size() % 8 != 0) + { + throw new WriterException("Number of bits is not a multiple of 8"); + } + // If we have more space, we'll fill the space with padding patterns defined in 8.4.9 (p.24). + var numPaddingBytes:int = numDataBytes - bits.sizeInBytes(); + for (var i:int = 0; i < numPaddingBytes; ++i) + { + if (i % 2 == 0) + { + bits.appendBits(0xec, 8); + } + else + { + bits.appendBits(0x11, 8); + } + } + if (bits.size() != capacity) + { + throw new WriterException("Bits size does not equal capacity"); + } + } + + /** + * Get number of data bytes and number of error correction bytes for block id "blockID". Store + * the result in "numDataBytesInBlock", and "numECBytesInBlock". See table 12 in 8.5.1 of + * JISX0510:2004 (p.30) + */ + public static function getNumDataBytesAndNumECBytesForBlockID(numTotalBytes:int, numDataBytes:int, numRSBlocks:int, blockID:int, numDataBytesInBlock:Array, numECBytesInBlock:Array):void + { + if (blockID >= numRSBlocks) + { + throw new WriterException("Block ID too large"); + } + // numRsBlocksInGroup2 = 196 % 5 = 1 + var numRsBlocksInGroup2:int = numTotalBytes % numRSBlocks; + // numRsBlocksInGroup1 = 5 - 1 = 4 + var numRsBlocksInGroup1:int = numRSBlocks - numRsBlocksInGroup2; + // numTotalBytesInGroup1 = 196 / 5 = 39 + var numTotalBytesInGroup1:int = numTotalBytes / numRSBlocks; + // numTotalBytesInGroup2 = 39 + 1 = 40 + var numTotalBytesInGroup2:int = numTotalBytesInGroup1 + 1; + // numDataBytesInGroup1 = 66 / 5 = 13 + var numDataBytesInGroup1:int = numDataBytes / numRSBlocks; + // numDataBytesInGroup2 = 13 + 1 = 14 + var numDataBytesInGroup2:int = numDataBytesInGroup1 + 1; + // numEcBytesInGroup1 = 39 - 13 = 26 + var numEcBytesInGroup1:int = numTotalBytesInGroup1 - numDataBytesInGroup1; + // numEcBytesInGroup2 = 40 - 14 = 26 + var numEcBytesInGroup2:int = numTotalBytesInGroup2 - numDataBytesInGroup2; + // Sanity checks. + // 26 = 26 + if (numEcBytesInGroup1 != numEcBytesInGroup2) + { + throw new WriterException("EC bytes mismatch"); + } + // 5 = 4 + 1. + if (numRSBlocks != numRsBlocksInGroup1 + numRsBlocksInGroup2) + { + throw new WriterException("RS blocks mismatch"); + } + // 196 = (13 + 26) * 4 + (14 + 26) * 1 + if (numTotalBytes != ((numDataBytesInGroup1 + numEcBytesInGroup1) * numRsBlocksInGroup1) + ((numDataBytesInGroup2 + numEcBytesInGroup2) * numRsBlocksInGroup2)) + { + throw new WriterException("Total bytes mismatch"); + } + + if (blockID < numRsBlocksInGroup1) + { + numDataBytesInBlock[0] = numDataBytesInGroup1; + numECBytesInBlock[0] = numEcBytesInGroup1; + } + else + { + numDataBytesInBlock[0] = numDataBytesInGroup2; + numECBytesInBlock[0] = numEcBytesInGroup2; + } + } + + /** + * Interleave "bits" with corresponding error correction bytes. On success, store the result in + * "result". The interleave rule is complicated. See 8.6 of JISX0510:2004 (p.37) for details. + */ + public static function interleaveWithECBytes(bits:BitVector, numTotalBytes:int, numDataBytes:int, numRSBlocks:int, result:BitVector):void + { + + // "bits" must have "getNumDataBytes" bytes of data. + if (bits.sizeInBytes() != numDataBytes) + { + throw new WriterException("Number of bits and data bytes does not match"); + } + + // Step 1. Divide data bytes into blocks and generate error correction bytes for them. We'll + // store the divided data bytes blocks and error correction bytes blocks into "blocks". + var dataBytesOffset:int = 0; + var maxNumDataBytes:int = 0; + var maxNumEcBytes:int = 0; + + // Since, we know the number of reedsolmon blocks, we can initialize the vector with the number. + //var blocks:ArrayList = new ArrayList(numRSBlocks); + var blocks:ArrayList = new ArrayList(); + + for (var i4:int = 0; i4 < numRSBlocks; ++i4) + { + var numDataBytesInBlock:Array = new Array(1); + var numEcBytesInBlock:Array = new Array(1); + getNumDataBytesAndNumECBytesForBlockID(numTotalBytes, numDataBytes, numRSBlocks, i4, numDataBytesInBlock, numEcBytesInBlock); + + var dataBytes2:zxingByteArray = new zxingByteArray(); + dataBytes2._set(bits.getArray(), dataBytesOffset, numDataBytesInBlock[0]); + var ecBytes2:zxingByteArray = generateECBytes(dataBytes2, numEcBytesInBlock[0]); + blocks.addElement(new BlockPair(dataBytes2, ecBytes2)); + + maxNumDataBytes = Math.max(maxNumDataBytes, dataBytes2.size()); + maxNumEcBytes = Math.max(maxNumEcBytes, ecBytes2.size()); + dataBytesOffset += numDataBytesInBlock[0]; + } + + if (numDataBytes != dataBytesOffset) + { + throw new WriterException("Data bytes does not match offset"); + } + + // First, place data blocks. + for (var i2:int = 0; i2 < maxNumDataBytes; ++i2) + { + for (var j2:int = 0; j2 < blocks.size(); ++j2) + { + var dataBytes:zxingByteArray = (blocks.elementAt(j2) as BlockPair).getDataBytes(); + if (i2 < dataBytes.size()) + { + result.appendBits(dataBytes.at(i2), 8); + } + } + } + // Then, place error correction blocks. + for (var i:int = 0; i < maxNumEcBytes; ++i) + { + for (var j:int = 0; j < blocks.size(); ++j) + { + var ecBytes:zxingByteArray = (blocks.elementAt(j) as BlockPair).getErrorCorrectionBytes(); + if (i < ecBytes.size()) + { + result.appendBits(ecBytes.at(i), 8); + } + } + } + if (numTotalBytes != result.sizeInBytes()) + { // Should be same. + throw new WriterException("Interleaving error: " + numTotalBytes + " and " + result.sizeInBytes() + " differ."); + } + } + + public static function generateECBytes(dataBytes:zxingByteArray, numEcBytesInBlock:int):zxingByteArray + { + var numDataBytes:int = dataBytes.size(); + var toEncode:Array = new Array(numDataBytes + numEcBytesInBlock); + for (var i:int = 0; i < numDataBytes; i++) + { + toEncode[i] = dataBytes.at(i); + } + new ReedSolomonEncoder(GenericGF.QR_CODE_FIELD_256).encode(toEncode, numEcBytesInBlock); + + var ecBytes:zxingByteArray = new zxingByteArray(numEcBytesInBlock); + for (var i4:int = 0; i4 < numEcBytesInBlock; i4++) + { + ecBytes.setByte(i4, toEncode[numDataBytes + i4]); + } + return ecBytes; + } + + /** + * Append mode info. On success, store the result in "bits". + */ + public static function appendModeInfo(mode:Mode, bits:BitVector):void + { + bits.appendBits(mode.getBits(), 4); + } + + /** + * Append length info. On success, store the result in "bits". + */ + public static function appendLengthInfo(numLetters:int, version:int, mode:Mode, bits:BitVector):void + { + var numBits:int = mode.getCharacterCountBits(Version.getVersionForNumber(version)); + if (numLetters > ((1 << numBits) - 1)) + { + throw new WriterException(numLetters + "is bigger than" + ((1 << numBits) - 1)); + } + bits.appendBits(numLetters, numBits); + } + + /** + * Append "bytes" in "mode" mode (encoding) into "bits". On success, store the result in "bits". + */ + public static function appendBytes(content:String, mode:Mode, bits:BitVector, encoding:String):void + { + if (mode == Mode.NUMERIC) + { + appendNumericBytes(content, bits); + } + else if (mode == Mode.ALPHANUMERIC) + { + appendAlphanumericBytes(content, bits); + } + else if (mode == Mode.BYTE) + { + append8BitBytes(content, bits, encoding); + } + else if (mode == Mode.KANJI) + { + appendKanjiBytes(content, bits); + } + else + { + throw new WriterException("Invalid mode: " + mode); + } + } + + public static function appendNumericBytes(content:String, bits:BitVector):void + { + var length:int = content.length; + var i:int = 0; + while (i < length) + { + var num1:int = content.charCodeAt(i) - ('0').charCodeAt(0); + if (i + 2 < length) + { + // Encode three numeric letters in ten bits. + var num2:int = content.charCodeAt(i + 1) - ('0').charCodeAt(0); + var num3:int = content.charCodeAt(i + 2) - ('0').charCodeAt(0); + bits.appendBits(num1 * 100 + num2 * 10 + num3, 10); + i += 3; + } + else if (i + 1 < length) + { + // Encode two numeric letters in seven bits. + var num22:int = content.charCodeAt(i + 1) - ('0').charCodeAt(0); + bits.appendBits(num1 * 10 + num22, 7); + i += 2; + } + else + { + // Encode one numeric letter in four bits. + bits.appendBits(num1, 4); + i++; + } + } + } + + public static function appendAlphanumericBytes(content:String, bits:BitVector):void + { + var length:int = content.length; + var i:int = 0; + while (i < length) + { + var code1:int = getAlphanumericCode(content.charCodeAt(i)); + if (code1 == -1) + { + throw new WriterException(); + } + if (i + 1 < length) + { + var code2:int = getAlphanumericCode(content.charCodeAt(i + 1)); + if (code2 == -1) + { + throw new WriterException(); + } + // Encode two alphanumeric letters in 11 bits. + bits.appendBits(code1 * 45 + code2, 11); + i += 2; + } + else + { + // Encode one alphanumeric letter in six bits. + bits.appendBits(code1, 6); + i++; + } + } + } + + public static function append8BitBytes(content:String, bits:BitVector, encoding:String):void + { + var bytes:ByteArray = new ByteArray(); + + try + { + + //bytes = content.getBytes(encoding); + if ((encoding == "Shift_JIS") || (encoding == "SJIS")) + { + bytes.writeMultiByte(content, "shift-jis"); + } + else if (encoding == "Cp437") + { + bytes.writeMultiByte(content, "IBM437"); + } + else if (encoding == "ISO8859_2") + { + bytes.writeMultiByte(content, "iso-8859-2"); + } + else if (encoding == "ISO8859_3") + { + bytes.writeMultiByte(content, "iso-8859-3"); + } + else if (encoding == "ISO8859_4") + { + bytes.writeMultiByte(content, "iso-8859-4"); + } + else if (encoding == "ISO8859_5") + { + bytes.writeMultiByte(content, "iso-8859-5"); + } + else if (encoding == "ISO8859_6") + { + bytes.writeMultiByte(content, "iso-8859-6"); + } + else if (encoding == "ISO8859_7") + { + bytes.writeMultiByte(content, "iso-8859-7"); + } + else if (encoding == "ISO8859_8") + { + bytes.writeMultiByte(content, "iso-8859-8"); + } + else if (encoding == "ISO8859_9") + { + bytes.writeMultiByte(content, "iso-8859-9"); + } + else if (encoding == "ISO8859_11") + { + bytes.writeMultiByte(content, "iso-8859-11"); + } + else if (encoding == "ISO8859_15") + { + bytes.writeMultiByte(content, "iso-8859-15"); + } + else if ((encoding == "ISO-8859-1") || (encoding == "ISO8859-1")) + { + bytes.writeMultiByte(content, "iso-8859-1"); + } + else if ((encoding == "UTF-8") || (encoding == "UTF8")) + { + bytes.writeMultiByte(content, "utf-8"); + } + else + { + //other encodings not supported + throw new Error("Encoding " + encoding + " not supported"); + + } + bytes.position = 0; + + } + catch (uee:Error) + { + throw new WriterException(uee.toString()); + } + for (var i:int = 0; i < bytes.length; ++i) + { + bits.appendBits(bytes[i], 8); + } + } + + public static function appendKanjiBytes(content:String, bits:BitVector):void + { + var bytes:ByteArray; + try + { + // we need data in the ShiftJis format + //bytes = content.getBytes("Shift_JIS"); + bytes.writeMultiByte(content, "shift-jis"); + bytes.position = 0; + + } + catch (uee:Error) + { + throw new WriterException(uee.toString()); + } + var length:int = bytes.length; + for (var i:int = 0; i < length; i += 2) + { + var byte1:int = bytes[i] & 0xFF; + var byte2:int = bytes[i + 1] & 0xFF; + var code:int = (byte1 << 8) | byte2; + var subtracted:int = -1; + if (code >= 0x8140 && code <= 0x9ffc) + { + subtracted = code - 0x8140; + } + else if (code >= 0xe040 && code <= 0xebbf) + { + subtracted = code - 0xc140; + } + if (subtracted == -1) + { + throw new WriterException("Invalid byte sequence"); + } + var encoded:int = ((subtracted >> 8) * 0xc0) + (subtracted & 0xff); + bits.appendBits(encoded, 13); + } + } + + public static function appendECI(eci:CharacterSetECI, bits:BitVector):void + { + bits.appendBits(Mode.ECI.getBits(), 4); + // This is correct for values up to 127, which is all we need now. + bits.appendBits(eci.getValue(), 8); + } + + } +} diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/encoder/MaskUtil.as b/FairyGUI-as3/src/com/google/zxing/qrcode/encoder/MaskUtil.as new file mode 100644 index 0000000..7e5cd47 --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/encoder/MaskUtil.as @@ -0,0 +1,227 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.encoder +{ +// todo : check array datastructures + + public class MaskUtil + { + import com.google.zxing.common.ByteMatrix; + import com.google.zxing.common.flexdatatypes.IllegalArgumentException; + + // Apply mask penalty rule 1 and return the penalty. Find repetitive cells with the same color and + // give penalty to them. Example: 00000 or 11111. + public static function applyMaskPenaltyRule1(matrix:ByteMatrix):int + { + return applyMaskPenaltyRule1Internal(matrix, true) + applyMaskPenaltyRule1Internal(matrix, false); + } + + // Apply mask penalty rule 2 and return the penalty. Find 2x2 blocks with the same color and give + // penalty to them. + public static function applyMaskPenaltyRule2(matrix:ByteMatrix):int + { + var penalty:int = 0; + var array:Array = matrix.getArray(); //sbyte[][] + var width:int = matrix.width(); + var height:int = matrix.height(); + for (var y:int = 0; y < height - 1; ++y) + { + for (var x:int = 0; x < width - 1; ++x) + { + var value:int = array[y][x]; + if (value == array[y][x + 1] && value == array[y + 1][x] && value == array[y + 1][x + 1]) + { + penalty += 3; + } + } + } + return penalty; + } + + // Apply mask penalty rule 3 and return the penalty. Find consecutive cells of 00001011101 or + // 10111010000, and give penalty to them. If we find patterns like 000010111010000, we give + // penalties twice (i.e. 40 * 2). + public static function applyMaskPenaltyRule3(matrix:ByteMatrix):int + { + var penalty:int = 0; + var array:Array = matrix.getArray(); + var width:int = matrix.width(); + var height:int = matrix.height(); + for (var y:int = 0; y < height; ++y) + { + for (var x:int = 0; x < width; ++x) + { + // Tried to simplify following conditions but failed. + if (x + 6 < width && + array[y][x] == 1 && + array[y][x + 1] == 0 && + array[y][x + 2] == 1 && + array[y][x + 3] == 1 && + array[y][x + 4] == 1 && + array[y][x + 5] == 0 && + array[y][x + 6] == 1 && + ((x + 10 < width && + array[y][x + 7] == 0 && + array[y][x + 8] == 0 && + array[y][x + 9] == 0 && + array[y][x + 10] == 0) || + (x - 4 >= 0 && + array[y][x - 1] == 0 && + array[y][x - 2] == 0 && + array[y][x - 3] == 0 && + array[y][x - 4] == 0))) + { + penalty += 40; + } + if (y + 6 < height && + array[y][x] == 1 && + array[y + 1][x] == 0 && + array[y + 2][x] == 1 && + array[y + 3][x] == 1 && + array[y + 4][x] == 1 && + array[y + 5][x] == 0 && + array[y + 6][x] == 1 && + ((y + 10 < height && + array[y + 7][x] == 0 && + array[y + 8][x] == 0 && + array[y + 9][x] == 0 && + array[y + 10][x] == 0) || + (y - 4 >= 0 && + array[y - 1][x] == 0 && + array[y - 2][x] == 0 && + array[y - 3][x] == 0 && + array[y - 4][x] == 0))) + { + penalty += 40; + } + } + } + return penalty; + } + + // Apply mask penalty rule 4 and return the penalty. Calculate the ratio of dark cells and give + // penalty if the ratio is far from 50%. It gives 10 penalty for 5% distance. Examples: + // - 0% => 100 + // - 40% => 20 + // - 45% => 10 + // - 50% => 0 + // - 55% => 10 + // - 55% => 20 + // - 100% => 100 + public static function applyMaskPenaltyRule4(matrix:ByteMatrix):int + { + var numDarkCells:int = 0; + var array:Array = matrix.getArray(); + var width:int = matrix.width(); + var height:int = matrix.height(); + for (var y:int = 0; y < height; ++y) + { + for (var x:int = 0; x < width; ++x) + { + if (array[y][x] == 1) + { + numDarkCells += 1; + } + } + } + var numTotalCells:int = matrix.height() * matrix.width(); + var darkRatio:Number = numDarkCells / numTotalCells; + return int(Math.abs(int(darkRatio * 100 - 50)) / 5) * 10; + } + + // Return the mask bit for "getMaskPattern" at "x" and "y". See 8.8 of JISX0510:2004 for mask + // pattern conditions. + public static function getDataMaskBit(maskPattern:int,x:int,y:int):int + { + if (!QRCode.isValidMaskPattern(maskPattern)) + { + throw new IllegalArgumentException("Invalid mask pattern"); + } + switch (maskPattern) + { + case 0: + return ((y + x) % 2 == 0) ? 1 : 0; + case 1: + return (y % 2 == 0) ? 1 : 0; + case 2: + return (x % 3 == 0) ? 1 : 0; + case 3: + return ((y + x) % 3 == 0) ? 1 : 0; + case 4: + return ((int(y / 2) + int(x / 3)) % 2 == 0) ? 1 : 0; // bas : fixed here + case 5: + return (((y * x) % 2) + ((y * x) % 3) == 0) ? 1 : 0; + case 6: + return ((((y * x) % 2) + ((y * x) % 3)) % 2 == 0) ? 1 : 0; + case 7: + return ((((y * x) % 3) + ((y + x) % 2)) % 2 == 0) ? 1 : 0; + } + throw new IllegalArgumentException("invalid mask pattern: " + maskPattern); + } + + // Helper function for applyMaskPenaltyRule1. We need this for doing this calculation in both + // vertical and horizontal orders respectively. + private static function applyMaskPenaltyRule1Internal(matrix:ByteMatrix,isHorizontal:Boolean):int + { + var penalty:int = 0; + var numSameBitCells:int = 0; + var prevBit:int = -1; + // Horizontal mode: + // for (int i = 0; i < matrix.height(); ++i) { + // for (int j = 0; j < matrix.width(); ++j) { + // int bit = matrix._get(i, j); + // Vertical mode: + // for (int i = 0; i < matrix.width(); ++i) { + // for (int j = 0; j < matrix.height(); ++j) { + // int bit = matrix._get(j, i); + var iLimit:int = isHorizontal ? matrix.height() : matrix.width(); + var jLimit:int = isHorizontal ? matrix.width() : matrix.height(); + var array:Array = matrix.getArray(); // sbyte[][] + for (var i:int = 0; i < iLimit; ++i) + { + for (var j:int = 0; j < jLimit; ++j) + { + var bit:int = isHorizontal ? array[i][j] : array[j][i]; + if (bit == prevBit) + { + numSameBitCells += 1; + // Found five repetitive cells with the same color (bit). + // We'll give penalty of 3. + if (numSameBitCells == 5) + { + penalty += 3; + } + else if (numSameBitCells > 5) + { + // After five repetitive cells, we'll add the penalty one + // by one. + penalty += 1; + } + } + else + { + numSameBitCells = 1; // Include the cell itself. + prevBit = bit; + } + } + numSameBitCells = 0; // Clear at each row/column. + } + return penalty; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/encoder/MatrixUtil.as b/FairyGUI-as3/src/com/google/zxing/qrcode/encoder/MatrixUtil.as new file mode 100644 index 0000000..ec2f4dc --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/encoder/MatrixUtil.as @@ -0,0 +1,558 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.encoder +{ + + + public class MatrixUtil + { + import com.google.zxing.common.ByteMatrix; + import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; + import com.google.zxing.WriterException; + + public function MatrixUtil() { + // do nothing + } + + private static var POSITION_DETECTION_PATTERN:Array = [ + [1, 1, 1, 1, 1, 1, 1], + [1, 0, 0, 0, 0, 0, 1], + [1, 0, 1, 1, 1, 0, 1], + [1, 0, 1, 1, 1, 0, 1], + [1, 0, 1, 1, 1, 0, 1], + [1, 0, 0, 0, 0, 0, 1], + [1, 1, 1, 1, 1, 1, 1] + ]; + + private static var HORIZONTAL_SEPARATION_PATTERN:Array = [ + [0, 0, 0, 0, 0, 0, 0, 0] + ]; + + private static var VERTICAL_SEPARATION_PATTERN:Array = [ + [0], [0], [0], [0], [0], [0], [0] + ]; + + private static var POSITION_ADJUSTMENT_PATTERN:Array = [ + [1, 1, 1, 1, 1], + [1, 0, 0, 0, 1], + [1, 0, 1, 0, 1], + [1, 0, 0, 0, 1], + [1, 1, 1, 1, 1] + ]; + + // From Appendix E. Table 1, JIS0510X:2004 (p 71). The table was double-checked by komatsu. + private static var POSITION_ADJUSTMENT_PATTERN_COORDINATE_TABLE:Array= [ + [-1, -1, -1, -1, -1, -1, -1], // Version 1 + [ 6, 18, -1, -1, -1, -1, -1], // Version 2 + [ 6, 22, -1, -1, -1, -1, -1], // Version 3 + [ 6, 26, -1, -1, -1, -1, -1], // Version 4 + [ 6, 30, -1, -1, -1, -1, -1], // Version 5 + [ 6, 34, -1, -1, -1, -1, -1], // Version 6 + [ 6, 22, 38, -1, -1, -1, -1], // Version 7 + [ 6, 24, 42, -1, -1, -1, -1], // Version 8 + [ 6, 26, 46, -1, -1, -1, -1], // Version 9 + [ 6, 28, 50, -1, -1, -1, -1], // Version 10 + [ 6, 30, 54, -1, -1, -1, -1], // Version 11 + [ 6, 32, 58, -1, -1, -1, -1], // Version 12 + [ 6, 34, 62, -1, -1, -1, -1], // Version 13 + [ 6, 26, 46, 66, -1, -1, -1], // Version 14 + [ 6, 26, 48, 70, -1, -1, -1], // Version 15 + [ 6, 26, 50, 74, -1, -1, -1], // Version 16 + [ 6, 30, 54, 78, -1, -1, -1], // Version 17 + [ 6, 30, 56, 82, -1, -1, -1], // Version 18 + [ 6, 30, 58, 86, -1, -1, -1], // Version 19 + [ 6, 34, 62, 90, -1, -1, -1], // Version 20 + [ 6, 28, 50, 72, 94, -1, -1], // Version 21 + [ 6, 26, 50, 74, 98, -1, -1], // Version 22 + [ 6, 30, 54, 78, 102, -1, -1], // Version 23 + [ 6, 28, 54, 80, 106, -1, -1], // Version 24 + [ 6, 32, 58, 84, 110, -1, -1], // Version 25 + [ 6, 30, 58, 86, 114, -1, -1], // Version 26 + [ 6, 34, 62, 90, 118, -1, -1], // Version 27 + [ 6, 26, 50, 74, 98, 122, -1], // Version 28 + [ 6, 30, 54, 78, 102, 126, -1], // Version 29 + [ 6, 26, 52, 78, 104, 130, -1], // Version 30 + [ 6, 30, 56, 82, 108, 134, -1], // Version 31 + [ 6, 34, 60, 86, 112, 138, -1], // Version 32 + [ 6, 30, 58, 86, 114, 142, -1], // Version 33 + [ 6, 34, 62, 90, 118, 146, -1], // Version 34 + [ 6, 30, 54, 78, 102, 126, 150], // Version 35 + [ 6, 24, 50, 76, 102, 128, 154], // Version 36 + [ 6, 28, 54, 80, 106, 132, 158], // Version 37 + [ 6, 32, 58, 84, 110, 136, 162], // Version 38 + [ 6, 26, 54, 82, 110, 138, 166], // Version 39 + [ 6, 30, 58, 86, 114, 142, 170] // Version 40 + ]; + + // Type info cells at the left top corner. + private static var TYPE_INFO_COORDINATES:Array = [ + [8, 0], + [8, 1], + [8, 2], + [8, 3], + [8, 4], + [8, 5], + [8, 7], + [8, 8], + [7, 8], + [5, 8], + [4, 8], + [3, 8], + [2, 8], + [1, 8], + [0, 8] + ]; + + // From Appendix D in JISX0510:2004 (p. 67) + private static var VERSION_INFO_POLY:int = 0x1f25; // 1 1111 0010 0101 + + // From Appendix C in JISX0510:2004 (p.65). + private static var TYPE_INFO_POLY:int = 0x537; + private static var TYPE_INFO_MASK_PATTERN:int = 0x5412; + + // Set all cells to -1. -1 means that the cell is empty (not set yet). + // + // JAVAPORT: We shouldn't need to do this at all. The code should be rewritten to begin encoding + // with the ByteMatrix initialized all to zero. + public static function clearMatrix( matrix:ByteMatrix):void { + matrix.clear(-1); + } + + // Build 2D matrix of QR Code from "dataBits" with "ecLevel", "version" and "getMaskPattern". On + // success, store the result in "matrix" and return true. + public static function buildMatrix( dataBits:BitVector, ecLevel:ErrorCorrectionLevel, version:int, maskPattern:int, matrix:ByteMatrix):void + { + clearMatrix(matrix); + var result:String = matrix.toString2(); + embedBasicPatterns(version, matrix); + result = matrix.toString2(); + // Type information appear with any version. + embedTypeInfo(ecLevel, maskPattern, matrix); + result = matrix.toString2(); + // Version info appear if version >= 7. + maybeEmbedVersionInfo(version, matrix); + result = matrix.toString2(); + // Data should be embedded at end. + embedDataBits(dataBits, maskPattern, matrix); + result = matrix.toString2(); + + } + + // Embed basic patterns. On success, modify the matrix and return true. + // The basic patterns are: + // - Position detection patterns + // - Timing patterns + // - Dark dot at the left bottom corner + // - Position adjustment patterns, if need be + public static function embedBasicPatterns( version:int, matrix:ByteMatrix):void + { + try + { + // Let's get started with embedding big squares at corners. + embedPositionDetectionPatternsAndSeparators(matrix); + // Then, embed the dark dot at the left bottom corner. + embedDarkDotAtLeftBottomCorner(matrix); + + // Position adjustment patterns appear if version >= 2. + maybeEmbedPositionAdjustmentPatterns(version, matrix); + + // Timing patterns should be embedded after position adj. patterns. + embedTimingPatterns(matrix); + + }catch(e:Error){ + throw new WriterException (e.message); + } + } + + // Embed type information. On success, modify the matrix. + public static function embedTypeInfo(ecLevel:ErrorCorrectionLevel, maskPattern:int, matrix:ByteMatrix):void + { + var typeInfoBits:BitVector = new BitVector(); + makeTypeInfoBits(ecLevel, maskPattern, typeInfoBits); + + for (var i:int = 0; i < typeInfoBits.size(); ++i) { + // Place bits in LSB to MSB order. LSB (least significant bit) is the last value in + // "typeInfoBits". + var bit:int = typeInfoBits.at(typeInfoBits.size() - 1 - i); + + // Type info bits at the left top corner. See 8.9 of JISX0510:2004 (p.46). + var x1:int = TYPE_INFO_COORDINATES[i][0]; + var y1:int = TYPE_INFO_COORDINATES[i][1]; + matrix._set(x1, y1, bit); + + if (i < 8) { + // Right top corner. + var x2:int = matrix.width() - i - 1; + var y2:int = 8; + matrix._set(x2, y2, bit); + } else { + // Left bottom corner. + var x3:int = 8; + var y3:int = matrix.height() - 7 + (i - 8); + matrix._set(x3, y3, bit); + } + } + } + + // Embed version information if need be. On success, modify the matrix and return true. + // See 8.10 of JISX0510:2004 (p.47) for how to embed version information. + public static function maybeEmbedVersionInfo(version:int, matrix:ByteMatrix):void{ + if (version < 7) { // Version info is necessary if version >= 7. + return; // Don't need version info. + } + var versionInfoBits:BitVector = new BitVector(); + makeVersionInfoBits(version, versionInfoBits); + + var bitIndex:int = 6 * 3 - 1; // It will decrease from 17 to 0. + for (var i:int = 0; i < 6; ++i) { + for (var j:int = 0; j < 3; ++j) { + // Place bits in LSB (least significant bit) to MSB order. + var bit:int = versionInfoBits.at(bitIndex); + bitIndex--; + // Left bottom corner. + matrix._set(i,matrix.height() - 11 + j, bit); + // Right bottom corner. + matrix._set( matrix.height() - 11 + j,i, bit); + } + } + } + + // Embed "dataBits" using "getMaskPattern". On success, modify the matrix and return true. + // For debugging purposes, it skips masking process if "getMaskPattern" is -1. + // See 8.7 of JISX0510:2004 (p.38) for how to embed data bits. + public static function embedDataBits(dataBits:BitVector, maskPattern:int, matrix:ByteMatrix):void + { + var bitIndex:int = 0; + var direction:int = -1; + // Start from the right bottom cell. + var x:int = matrix.width() - 1; + var y:int = matrix.height() - 1; + while (x > 0) + { + // Skip the vertical timing pattern. + if (x == 6) + { + x -= 1; + } + + while (y >= 0 && y < matrix.height()) + { + var n:int = 0; + for (var i:int = 0; i < 2; ++i) + { + var xx:int = x - i; + // Skip the cell if it's not empty. + var cellval:int = matrix._get(xx, y); + if (!isEmpty(cellval)) + { + continue; + } + var bit:int; + if (bitIndex < dataBits.size()) + { + bit = dataBits.at(bitIndex); + ++bitIndex; + } + else + { + // Padding bit. If there is no bit left, we'll fill the left cells with 0, as described + // in 8.4.9 of JISX0510:2004 (p. 24). + bit = 0; + } + + // Skip masking if mask_pattern is -1. + if (maskPattern != -1) + { + if (MaskUtil.getDataMaskBit(maskPattern, xx, y)) + { + bit ^= 0x1; + } + } + matrix._set(xx, y, bit); + } + y += direction; + } + + direction = -direction; // Reverse the direction. + y += direction; + x -= 2; // Move to the left. + } + // All bits should be consumed. + if (bitIndex != dataBits.size()) { + throw new WriterException("Not all bits consumed: " + bitIndex + '/' + dataBits.size()); + } + } + + // Return the position of the most significant bit set (to one) in the "value". The most + // significant bit is position 32. If there is no bit set, return 0. Examples: + // - findMSBSet(0) => 0 + // - findMSBSet(1) => 1 + // - findMSBSet(255) => 8 + public static function findMSBSet(value:int):int { + var numDigits:int = 0; + while (value != 0) { + value >>= 1; + ++numDigits; + } + return numDigits; + } + + // Calculate BCH (Bose-Chaudhuri-Hocquenghem) code for "value" using polynomial "poly". The BCH + // code is used for encoding type information and version information. + // Example: Calculation of version information of 7. + // f(x) is created from 7. + // - 7 = 000111 in 6 bits + // - f(x) = x^2 + x^2 + x^1 + // g(x) is given by the standard (p. 67) + // - g(x) = x^12 + x^11 + x^10 + x^9 + x^8 + x^5 + x^2 + 1 + // Multiply f(x) by x^(18 - 6) + // - f'(x) = f(x) * x^(18 - 6) + // - f'(x) = x^14 + x^13 + x^12 + // Calculate the remainder of f'(x) / g(x) + // x^2 + // __________________________________________________ + // g(x) )x^14 + x^13 + x^12 + // x^14 + x^13 + x^12 + x^11 + x^10 + x^7 + x^4 + x^2 + // -------------------------------------------------- + // x^11 + x^10 + x^7 + x^4 + x^2 + // + // The remainder is x^11 + x^10 + x^7 + x^4 + x^2 + // Encode it in binary: 110010010100 + // The return value is 0xc94 (1100 1001 0100) + // + // Since all coefficients in the polynomials are 1 or 0, we can do the calculation by bit + // operations. We don't care if cofficients are positive or negative. + public static function calculateBCHCode(value:int, poly:int):int { + // If poly is "1 1111 0010 0101" (version info poly), msbSetInPoly is 13. We'll subtract 1 + // from 13 to make it 12. + var msbSetInPoly:int = findMSBSet(poly); + value <<= msbSetInPoly - 1; + // Do the division business using exclusive-or operations. + while (findMSBSet(value) >= msbSetInPoly) { + value ^= poly << (findMSBSet(value) - msbSetInPoly); + } + // Now the "value" is the remainder (i.e. the BCH code) + return value; + } + + // Make bit vector of type information. On success, store the result in "bits" and return true. + // Encode error correction level and mask pattern. See 8.9 of + // JISX0510:2004 (p.45) for details. + public static function makeTypeInfoBits(ecLevel:ErrorCorrectionLevel , maskPattern:int, bits:BitVector ):void + { + if (!QRCode.isValidMaskPattern(maskPattern)) { + throw new WriterException("Invalid mask pattern"); + } + var typeInfo:int = (ecLevel.getBits() << 3) | maskPattern; + bits.appendBits(typeInfo, 5); + + var bchCode:int = calculateBCHCode(typeInfo, TYPE_INFO_POLY); + bits.appendBits(bchCode, 10); + + var maskBits:BitVector = new BitVector(); + maskBits.appendBits(TYPE_INFO_MASK_PATTERN, 15); + bits.xor(maskBits); + + if (bits.size() != 15) { // Just in case. + throw new WriterException("should not happen but we got: " + bits.size()); + } + } + + // Make bit vector of version information. On success, store the result in "bits" and return true. + // See 8.10 of JISX0510:2004 (p.45) for details. + public static function makeVersionInfoBits( version:int, bits:BitVector ):void{ + bits.appendBits(version, 6); + var bchCode:int = calculateBCHCode(version, VERSION_INFO_POLY); + bits.appendBits(bchCode, 12); + + if (bits.size() != 18) { // Just in case. + throw new WriterException("should not happen but we got: " + bits.size()); + } + } + + // Check if "value" is empty. + private static function isEmpty(value:int):Boolean { + return value == -1; + } + + // Check if "value" is valid. + private static function isValidValue(value:int):Boolean { + return (value == -1 || // Empty. + value == 0 || // Light (white). + value == 1); // Dark (black). + } + + private static function embedTimingPatterns(matrix:ByteMatrix ):void + { + // -8 is for skipping position detection patterns (size 7), and two horizontal/vertical + // separation patterns (size 1). Thus, 8 = 7 + 1. + for (var i:int = 8; i < matrix.width() - 8; ++i) { + var bit:int = (i + 1) % 2; + // Horizontal line. + if (!isValidValue(matrix._get(i, 6))) + { + throw new WriterException(); + } + if (isEmpty(matrix._get(i, 6))) + { + matrix._set(i, 6, bit); + } + // Vertical line. + if (!isValidValue(matrix._get(6, i))) + { + throw new WriterException(); + } + if (isEmpty(matrix._get(6, i))) + { + matrix._set(6, i, bit); + } + } + } + + // Embed the lonely dark dot at left bottom corner. JISX0510:2004 (p.46) + private static function embedDarkDotAtLeftBottomCorner(matrix:ByteMatrix ):void{ + if (matrix._get(8,matrix.height() - 8) == 0) { + throw new WriterException("MatrixUtil : WriterException 3"); + } + matrix._set(8,matrix.height()-8, 1); + } + + private static function embedHorizontalSeparationPattern(xStart:int, yStart:int, matrix:ByteMatrix):void { + // We know the width and height. + if (HORIZONTAL_SEPARATION_PATTERN[0].length != 8 || HORIZONTAL_SEPARATION_PATTERN.length != 1) { + throw new WriterException("Bad horizontal separation pattern"); + } + for (var x:int = 0; x < 8; ++x) { + if (!isEmpty(matrix._get( xStart + x,yStart))) { + throw new WriterException("MatrixUtil : WriterException 4"); + } + matrix._set(xStart + x, yStart, HORIZONTAL_SEPARATION_PATTERN[0][x]); + } + } + + private static function embedVerticalSeparationPattern(xStart:int, yStart:int,matrix:ByteMatrix ):void{ + // We know the width and height. + if (VERTICAL_SEPARATION_PATTERN[0].length != 1 || VERTICAL_SEPARATION_PATTERN.length != 7) { + throw new WriterException("Bad vertical separation pattern"); + } + for (var y:int = 0; y < 7; ++y) { + if (!isEmpty(matrix._get( xStart,yStart + y))) { + throw new WriterException("MatrixUtil : WriterException 5"); + } + matrix._set(xStart, yStart + y, VERTICAL_SEPARATION_PATTERN[y][0]); + } + } + + // Note that we cannot unify the function with embedPositionDetectionPattern() despite they are + // almost identical, since we cannot write a function that takes 2D arrays in different sizes in + // C/C++. We should live with the fact. + private static function embedPositionAdjustmentPattern(xStart:int , yStart:int ,matrix:ByteMatrix ):void + { + // We know the width and height. + if (POSITION_ADJUSTMENT_PATTERN[0].length != 5 || POSITION_ADJUSTMENT_PATTERN.length != 5) { + throw new WriterException("Bad position adjustment"); + } + for (var y:int = 0; y < 5; ++y) { + for (var x:int = 0; x < 5; ++x) { + if (!isEmpty(matrix._get( xStart + x,yStart + y))) { + throw new WriterException("MatrixUtil : WriterException 6"); + } + matrix._set(xStart + x,yStart + y, POSITION_ADJUSTMENT_PATTERN[y][x]); + } + } + } + + private static function embedPositionDetectionPattern(xStart:int , yStart:int ,matrix:ByteMatrix ):void + { + // We know the width and height. + if (POSITION_DETECTION_PATTERN[0].length != 7 || POSITION_DETECTION_PATTERN.length != 7) { + throw new WriterException("Bad position detection pattern"); + } + for (var y:int = 0; y < 7; ++y) { + for (var x:int = 0; x < 7; ++x) { + if (!isEmpty(matrix._get(xStart + x,yStart + y))) { + throw new WriterException("MatrixUtil : WriterException 7"); + } + matrix._set(xStart + x,yStart + y, POSITION_DETECTION_PATTERN[y][x]); + } + } + } + + // Embed position detection patterns and surrounding vertical/horizontal separators. + private static function embedPositionDetectionPatternsAndSeparators(matrix:ByteMatrix ):void + { + // Embed three big squares at corners. + var pdpWidth:int = POSITION_DETECTION_PATTERN[0].length; + // Left top corner. + embedPositionDetectionPattern(0, 0, matrix); + // Right top corner. + embedPositionDetectionPattern(matrix.width() - pdpWidth, 0, matrix); + // Left bottom corner. + embedPositionDetectionPattern(0, matrix.width() - pdpWidth, matrix); + + // Embed horizontal separation patterns around the squares. + var hspWidth:int = HORIZONTAL_SEPARATION_PATTERN[0].length; + // Left top corner. + embedHorizontalSeparationPattern(0, hspWidth - 1, matrix); + // Right top corner. + embedHorizontalSeparationPattern(matrix.width() - hspWidth, + hspWidth - 1, matrix); + // Left bottom corner. + embedHorizontalSeparationPattern(0, matrix.width() - hspWidth, matrix); + + // Embed vertical separation patterns around the squares. + var vspSize:int = VERTICAL_SEPARATION_PATTERN.length; + // Left top corner. + embedVerticalSeparationPattern(vspSize, 0, matrix); + // Right top corner. + embedVerticalSeparationPattern(matrix.height() - vspSize - 1, 0, matrix); + // Left bottom corner. + embedVerticalSeparationPattern(vspSize, matrix.height() - vspSize, + matrix); + } + + // Embed position adjustment patterns if need be. + private static function maybeEmbedPositionAdjustmentPatterns( version:int, matrix:ByteMatrix ):void + { + if (version < 2) { // The patterns appear if version >= 2 + return; + } + var index:int = version - 1; + var coordinates:Array = POSITION_ADJUSTMENT_PATTERN_COORDINATE_TABLE[index]; + var numCoordinates:int = POSITION_ADJUSTMENT_PATTERN_COORDINATE_TABLE[index].length; + for (var i:int = 0; i < numCoordinates; ++i) { + for (var j:int = 0; j < numCoordinates; ++j) { + var y:int = coordinates[i]; + var x:int = coordinates[j]; + if (x == -1 || y == -1) { + continue; + } + // If the cell is unset, we embed the position adjustment pattern here. + if (isEmpty(matrix._get(x,y))) { + // -2 is necessary since the x/y coordinates point to the center of the pattern, not the + // left top corner. + embedPositionAdjustmentPattern(x - 2, y - 2, matrix); + } + } + } + } + + + + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/google/zxing/qrcode/encoder/QRCode.as b/FairyGUI-as3/src/com/google/zxing/qrcode/encoder/QRCode.as new file mode 100644 index 0000000..b8ed9be --- /dev/null +++ b/FairyGUI-as3/src/com/google/zxing/qrcode/encoder/QRCode.as @@ -0,0 +1,216 @@ +/* + * Copyright 2013 ZXing authors + * + * Licensed 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 com.google.zxing.qrcode.encoder +{ + public class QRCode + { + + import com.google.zxing.common.zxingByteArray; + import com.google.zxing.qrcode.decoder.Mode; + import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; + import com.google.zxing.common.ByteMatrix; + import com.google.zxing.common.flexdatatypes.StringBuilder; + + + public static var NUM_MASK_PATTERNS:int = 8; + protected var mode:Mode; + protected var ecLevel:ErrorCorrectionLevel; + protected var version:int; + protected var matrixWidth:int; + protected var maskPattern:int; + protected var numTotalBytes:int; + protected var numDataBytes:int; + protected var numECBytes:int; + protected var numRSBlocks:int; + protected var matrix:ByteMatrix; + + public function QRCode() { + mode = null; + ecLevel = null; + version = -1; + matrixWidth = -1; + maskPattern = -1; + numTotalBytes = -1; + numDataBytes = -1; + numECBytes = -1; + numRSBlocks = -1; + matrix = null; + } + + // Mode of the QR Code. + public function getMode():Mode { + return mode; + } + + // Error correction level of the QR Code. + public function getECLevel():ErrorCorrectionLevel { + return ecLevel; + } + + // Version of the QR Code. The bigger size, the bigger version. + public function getVersion():int { + return version; + } + + // ByteMatrix width of the QR Code. + public function getMatrixWidth():int { + return matrixWidth; + } + + // Mask pattern of the QR Code. + public function getMaskPattern():int { + return maskPattern; + } + + // Number of total bytes in the QR Code. + public function getNumTotalBytes():int { + return numTotalBytes; + } + + // Number of data bytes in the QR Code. + public function getNumDataBytes():int { + return numDataBytes; + } + + // Number of error correction bytes in the QR Code. + public function getNumECBytes():int { + return numECBytes; + } + + // Number of Reedsolomon blocks in the QR Code. + public function getNumRSBlocks():int { + return numRSBlocks; + } + + // ByteMatrix data of the QR Code. + public function getMatrix():ByteMatrix { + return matrix; + } + + + // Return the value of the module (cell) pointed by "x" and "y" in the matrix of the QR Code. They + // call cells in the matrix "modules". 1 represents a black cell, and 0 represents a white cell. + public function at(x:int, y:int):int { + // The value must be zero or one. + var value:int = matrix._get(x, y); + if (!(value == 0 || value == 1)) { + // this is really like an assert... not sure what better exception to use? + throw new Error("QRCode : Bad value"); + } + return value; + } + + // Checks all the member variables are set properly. Returns true on success. Otherwise, returns + // false. + public function isValid():Boolean + { + return mode != null && // First check if all version are not uninitialized. + ecLevel != null && + version != -1 && + matrixWidth != -1 && + maskPattern != -1 && + numTotalBytes != -1 && + numDataBytes != -1 && + numECBytes != -1 && + numRSBlocks != -1 && // Then check them in other ways.. + isValidMaskPattern(maskPattern) && + (numTotalBytes == (numDataBytes + numECBytes)) && + matrix != null && // ByteMatrix stuff. + matrixWidth == matrix.width() && // See 7.3.1 of JISX0510:2004 (p.5). + matrix.width() == matrix.height(); // Must be square. + } + + // Return debug String. + public function toString():String { + var result:StringBuilder = new StringBuilder(200); + result.Append("<<\n"); + result.Append(" mode: "); + result.Append(mode); + result.Append("\n ecLevel: "); + result.Append(ecLevel); + result.Append("\n version: "); + result.Append(version); + result.Append("\n matrixWidth: "); + result.Append(matrixWidth); + result.Append("\n maskPattern: "); + result.Append(maskPattern); + result.Append("\n numTotalBytes: "); + result.Append(numTotalBytes); + result.Append("\n numDataBytes: "); + result.Append(numDataBytes); + result.Append("\n numECBytes: "); + result.Append(numECBytes); + result.Append("\n numRSBlocks: "); + result.Append(numRSBlocks); + if (matrix == null) { + result.Append("\n matrix: null\n"); + } else { + result.Append("\n matrix:\n"); + result.Append(matrix.toString()); + } + result.Append(">>\n"); + return result.ToString(); + } + + public function setMode(value:Mode):void { + mode = value; + } + + public function setECLevel(value:ErrorCorrectionLevel):void { + ecLevel = value; + } + + public function setVersion(value:int):void { + version = value; + } + + public function setMatrixWidth(value:int):void { + matrixWidth = value; + } + + public function setMaskPattern(value:int) :void{ + maskPattern = value; + } + + public function setNumTotalBytes(value:int):void { + numTotalBytes = value; + } + + public function setNumDataBytes(value:int):void { + numDataBytes = value; + } + + public function setNumECBytes(value:int):void { + numECBytes = value; + } + + public function setNumRSBlocks(value:int):void { + numRSBlocks = value; + } + + // This takes ownership of the 2D array. + public function setMatrix( value:ByteMatrix):void { + matrix = value; + } + + // Check if "mask_pattern" is valid. + public static function isValidMaskPattern(maskPattern:int):Boolean { + return maskPattern >= 0 && maskPattern < QRCode.NUM_MASK_PATTERNS; + } + + } + } \ No newline at end of file diff --git a/FairyGUI-as3/src/fairygui/GButton.as b/FairyGUI-as3/src/fairygui/GButton.as index c954483..90a009c 100644 --- a/FairyGUI-as3/src/fairygui/GButton.as +++ b/FairyGUI-as3/src/fairygui/GButton.as @@ -65,17 +65,17 @@ package fairygui } override public function get icon():String - { - return _icon; + { + return _icon; } override public function set icon(value:String):void { _icon = value; - value = (_selected && _selectedIcon)?_selectedIcon:_icon; + value = (_selected && _selectedIcon)?_selectedIcon:_icon; if(_iconObject!=null) _iconObject.icon = value; - updateGear(7); + updateGear(7); } final public function get selectedIcon():String @@ -92,16 +92,16 @@ package fairygui } final public function get title():String - { - return _title; + { + return _title; } public function set title(value:String):void { - _title = value; + _title = value; if(_titleObject) _titleObject.text = (_selected && _selectedTitle)?_selectedTitle:_title; - updateGear(6); + updateGear(6); } final override public function get text():String @@ -512,6 +512,22 @@ package fairygui } } + override internal function setLang(xml:XML):void + { + super.setLang(xml); + xml = xml.Button[0]; + if(xml) + { + var str:String; + str = xml.@title; + if(str) + this.title = str; + str = xml.@selectedTitle; + if(str) + this.selectedTitle = str; + } + } + private function __rollover(evt:Event):void { if(!_buttonController || !_buttonController.hasPage(OVER)) diff --git a/FairyGUI-as3/src/fairygui/GComboBox.as b/FairyGUI-as3/src/fairygui/GComboBox.as index 0ac4215..4598b86 100644 --- a/FairyGUI-as3/src/fairygui/GComboBox.as +++ b/FairyGUI-as3/src/fairygui/GComboBox.as @@ -392,6 +392,32 @@ package fairygui } } + override internal function setLang(xml:XML):void + { + super.setLang(xml); + xml = xml.ComboBox[0]; + if(xml) + { + var str:String; + var col:XMLList = xml.item; + _items.length=0; + for each(var cxml:XML in col) + { + _items.push(String(cxml.@title)); + } + str = xml.@title; + if(str) + { + this.text = str; + } + else if(_items.length>0) + { + this.text = _items[_selectedIndex]; + } + + } + } + protected function showDropdown():void { if(_itemsUpdated) diff --git a/FairyGUI-as3/src/fairygui/GComponent.as b/FairyGUI-as3/src/fairygui/GComponent.as index 13fd651..e5e05c7 100644 --- a/FairyGUI-as3/src/fairygui/GComponent.as +++ b/FairyGUI-as3/src/fairygui/GComponent.as @@ -1,32 +1,36 @@ -package fairygui +package fairygui { - import flash.display.DisplayObject; - import flash.display.DisplayObjectContainer; - import flash.display.Graphics; - import flash.display.Sprite; - import flash.events.Event; - import flash.geom.Point; - import flash.geom.Rectangle; - - import fairygui.display.UISprite; - import fairygui.utils.GTimers; - import fairygui.utils.PixelHitTest; + import flash.display.DisplayObject; + import flash.display.DisplayObjectContainer; + import flash.display.Graphics; + import flash.display.Sprite; + import flash.events.Event; + import flash.geom.Point; + import flash.geom.Rectangle; + + import fairygui.display.UISprite; + import fairygui.utils.GTimers; + import fairygui.utils.PixelHitTest; import fairygui.utils.PixelHitTestData; - [Event(name = "dropEvent", type = "fairygui.event.DropEvent")] - public class GComponent extends GObject + import ktv.message.local.UIEvent; + import ktv.message.local.UIEventDispatcher; + import ktv.inter.IChangLang; + + [Event(name="dropEvent", type="fairygui.event.DropEvent")] + public class GComponent extends GObject implements IChangLang { private var _sortingChildCount:int; private var _opaque:Boolean; private var _hitArea:PixelHitTest; private var _applyingController:Controller; - + protected var _margin:Margin; protected var _trackBounds:Boolean; protected var _boundsChanged:Boolean; protected var _childrenRenderOrder:int; protected var _apexIndex:int; - + internal var _buildingDisplayList:Boolean; internal var _children:Vector.; internal var _controllers:Vector.; @@ -35,93 +39,151 @@ package fairygui internal var _container:Sprite; internal var _scrollPane:ScrollPane; internal var _alignOffset:Point; - + + + + private var _translateText:Boolean=false; + public function GComponent():void { - _children = new Vector.(); - _controllers = new Vector.(); - _transitions = new Vector.(); - _margin = new Margin(); - _alignOffset = new Point(); + _children=new Vector.(); + _controllers=new Vector.(); + _transitions=new Vector.(); + _margin=new Margin(); + _alignOffset=new Point(); } - + + public function get translateText():Boolean + { + return _translateText; + } + + /** + *是否 翻译文本 + * @param value + * + */ + public function set translateText(value:Boolean):void + { + _translateText=value; + if (_translateText) + { + UIEventDispatcher.getInstance().addEventListener(UIEvent.CHANGE_LANG, changeLang); + } + else + { + UIEventDispatcher.getInstance().removeEventListener(UIEvent.CHANGE_LANG, changeLang); + } + } + + /** + *循环调用子级 都 设置/取消 翻译 + * @param obj + * + */ + public function setTranslate(obj:GComponent):void + { + if (!obj._children) + return; + for (var i:int=0; i < obj._children.length; i++) + { + var chind:GComponent=obj._children[i] as GComponent; + if (chind) + { + chind.translateText=translateText; + if (chind._children.length) + { + setTranslate(chind); + } + } + } + } + + public function changeSkin(event:UIEvent):void + { + + } + override protected function createDisplayObject():void { - _rootContainer = new UISprite(this); - _rootContainer.mouseEnabled = false; - setDisplayObject(_rootContainer); - _container = _rootContainer; + _rootContainer=new UISprite(this); + _rootContainer.mouseEnabled=false; + setDisplayObject(_rootContainer); + _container=_rootContainer; + translateText=true; + setTranslate(this); } - + public override function dispose():void { var i:int; - - var transCnt:int = _transitions.length; - for (i = 0; i < transCnt; ++i) + + var transCnt:int=_transitions.length; + for (i=0; i < transCnt; ++i) { - var trans:Transition = _transitions[i]; + var trans:Transition=_transitions[i]; trans.dispose(); } - - var numChildren:int = _children.length; - for (i=numChildren-1; i>=0; --i) + + var numChildren:int=_children.length; + for (i=numChildren - 1; i >= 0; --i) { - var obj:GObject = _children[i]; - obj.parent = null; //avoid removeFromParent call - obj.dispose(); + var obj:GObject=_children[i]; + obj.parent=null; //avoid removeFromParent call + obj.dispose(); } - - _boundsChanged = false; + + _boundsChanged=false; super.dispose(); + translateText=false; } - + final public function get displayListContainer():DisplayObjectContainer { return _container; } - + public function addChild(child:GObject):GObject { addChildAt(child, _children.length); return child; } - + public function addChildAt(child:GObject, index:int):GObject { - if(!child) + if (!child) throw new Error("child is null"); - var numChildren:int = _children.length; - + var numChildren:int=_children.length; + if (index >= 0 && index <= numChildren) { if (child.parent == this) { - setChildIndex(child, index); + setChildIndex(child, index); } else { child.removeFromParent(); - child.parent = this; - - var cnt:int = _children.length; - if(child.sortingOrder!=0) + child.parent=this; + + var cnt:int=_children.length; + if (child.sortingOrder != 0) { _sortingChildCount++; - index = getInsertPosForSortingChild(child); + index=getInsertPosForSortingChild(child); } - else if(_sortingChildCount>0) + else if (_sortingChildCount > 0) { - if(index > (cnt-_sortingChildCount)) - index = cnt - _sortingChildCount; + if (index > (cnt - _sortingChildCount)) + index=cnt - _sortingChildCount; } - - if (index == cnt) + + if (index == cnt) _children.push(child); else _children.splice(index, 0, child); - + childStateChanged(child); setBoundsChangedFlag(); } @@ -136,23 +198,23 @@ package fairygui private function getInsertPosForSortingChild(target:GObject):int { - var cnt:int = _children.length; + var cnt:int=_children.length; var i:int; - for (i = 0; i < cnt; i++) + for (i=0; i < cnt; i++) { - var child:GObject = _children[i]; + var child:GObject=_children[i]; if (child == target) continue; - + if (target.sortingOrder < child.sortingOrder) break; } return i; } - + public function removeChild(child:GObject, dispose:Boolean=false):GObject { - var childIndex:int = _children.indexOf(child); + var childIndex:int=_children.indexOf(child); if (childIndex != -1) { removeChildAt(childIndex, dispose); @@ -164,27 +226,27 @@ package fairygui { if (index >= 0 && index < numChildren) { - var child:GObject = _children[index]; - child.parent = null; - - if(child.sortingOrder!=0) + var child:GObject=_children[index]; + child.parent=null; + + if (child.sortingOrder != 0) _sortingChildCount--; - + _children.splice(index, 1); - child.group = null; - if(child.inContainer) + child.group=null; + if (child.inContainer) { _container.removeChild(child.displayObject); - + if (_childrenRenderOrder == ChildrenRenderOrder.Arch) GTimers.inst.callLater(buildNativeDisplayList); } - - if(dispose) + + if (dispose) child.dispose(); - + setBoundsChangedFlag(); - + return child; } else @@ -195,13 +257,13 @@ package fairygui public function removeChildren(beginIndex:int=0, endIndex:int=-1, dispose:Boolean=false):void { - if (endIndex < 0 || endIndex >= numChildren) - endIndex = numChildren - 1; - - for (var i:int=beginIndex; i<=endIndex; ++i) + if (endIndex < 0 || endIndex >= numChildren) + endIndex=numChildren - 1; + + for (var i:int=beginIndex; i <= endIndex; ++i) removeChildAt(beginIndex, dispose); } - + public function getChildAt(index:int):GObject { if (index >= 0 && index < numChildren) @@ -209,142 +271,142 @@ package fairygui else throw new RangeError("Invalid child index"); } - + public function getChild(name:String):GObject { - var cnt:int = _children.length; - for (var i:int=0; i0) + + var cnt:int=_children.length; + if (_sortingChildCount > 0) { if (index > (cnt - _sortingChildCount - 1)) - index = cnt - _sortingChildCount - 1; + index=cnt - _sortingChildCount - 1; } - + _setChildIndex(child, oldIndex, index); } - + public function setChildIndexBefore(child:GObject, index:int):int { - var oldIndex:int = _children.indexOf(child); - if (oldIndex == -1) + var oldIndex:int=_children.indexOf(child); + if (oldIndex == -1) throw new ArgumentError("Not a child of this container"); - - if(child.sortingOrder!=0) //no effect + + if (child.sortingOrder != 0) //no effect return oldIndex; - - var cnt:int = _children.length; - if(_sortingChildCount>0) + + var cnt:int=_children.length; + if (_sortingChildCount > 0) { if (index > (cnt - _sortingChildCount - 1)) - index = cnt - _sortingChildCount - 1; + index=cnt - _sortingChildCount - 1; } - + if (oldIndex < index) return _setChildIndex(child, oldIndex, index - 1); else return _setChildIndex(child, oldIndex, index); } - + private function _setChildIndex(child:GObject, oldIndex:int, index:int):int { - var cnt:int = _children.length; - if(index>cnt) - index = cnt; - - if(oldIndex==index) + var cnt:int=_children.length; + if (index > cnt) + index=cnt; + + if (oldIndex == index) return index; - + _children.splice(oldIndex, 1); _children.splice(index, 0, child); - - if(child.inContainer) - { + + if (child.inContainer) + { var displayIndex:int; var g:GObject; var i:int; - + if (_childrenRenderOrder == ChildrenRenderOrder.Ascent) { - for(i=0;i index; i--) + for (i=cnt - 1; i > index; i--) { - g = _children[i]; + g=_children[i]; if (g.inContainer) displayIndex++; } - if(displayIndex==_container.numChildren) + if (displayIndex == _container.numChildren) displayIndex--; _container.setChildIndex(child.displayObject, displayIndex); } @@ -355,45 +417,68 @@ package fairygui setBoundsChangedFlag(); } - + if (packageItem) + { + var oldIndex:int=-1; + var di:DisplayListItem; + for (i=0; i < packageItem.displayList.length; i++) + { + di=packageItem.displayList[i]; + if (child.packageItem === di.packageItem) //查找 与child 对应的 DisplayListItem + { + child.packageItem=di.packageItem; + oldIndex=i; + break; + } + } + if (oldIndex == -1) + { + trace("没有找到child对应的PackageItem"); + } + //交换index + packageItem.displayList.splice(oldIndex, 1); //删除之前index + packageItem.displayList.splice(index, 0, di); + trace("交换packageItem.displayList"); + } + return index; } - + public function swapChildren(child1:GObject, child2:GObject):void { - var index1:int = _children.indexOf(child1); - var index2:int = _children.indexOf(child2); + var index1:int=_children.indexOf(child1); + var index2:int=_children.indexOf(child2); if (index1 == -1 || index2 == -1) throw new ArgumentError("Not a child of this container"); swapChildrenAt(index1, index2); } - + public function swapChildrenAt(index1:int, index2:int):void { - var child1:GObject = _children[index1]; - var child2:GObject = _children[index2]; + var child1:GObject=_children[index1]; + var child2:GObject=_children[index2]; setChildIndex(child1, index2); setChildIndex(child2, index1); } - final public function get numChildren():int - { - return _children.length; + final public function get numChildren():int + { + return _children.length; } - + public function isAncestorOf(child:GObject):Boolean { if (child == null) return false; - - var p:GComponent = child.parent; - while(p) + + var p:GComponent=child.parent; + while (p) { - if(p == this) + if (p == this) return true; - - p = p.parent; + + p=p.parent; } return false; } @@ -401,82 +486,82 @@ package fairygui public function addController(controller:Controller):void { _controllers.push(controller); - controller._parent = this; + controller._parent=this; applyController(controller); } - + public function getControllerAt(index:int):Controller { return _controllers[index]; } - + public function getController(name:String):Controller { - var cnt:int = _controllers.length; - for (var i:int=0; i { return _controllers; } - + internal function childStateChanged(child:GObject):void { - if(_buildingDisplayList) + if (_buildingDisplayList) return; - - var cnt:int = _children.length; + + var cnt:int=_children.length; var g:GObject; var i:int; - - if(child is GGroup) + + if (child is GGroup) { - for (i = 0; i < cnt; i++) + for (i=0; i < cnt; i++) { - g = _children[i]; - if(g.group==child) + g=_children[i]; + if (g.group == child) childStateChanged(g); } return; } - - if(!child.displayObject) + + if (!child.displayObject) return; - - if(child.finalVisible) + + if (child.finalVisible) { - if(!child.displayObject.parent) + if (!child.displayObject.parent) { - var index:int; + var index:int; if (_childrenRenderOrder == ChildrenRenderOrder.Ascent) { - for (i = 0; i < cnt; i++) + for (i=0; i < cnt; i++) { - g = _children[i]; + g=_children[i]; if (g == child) break; - + if (g.displayObject != null && g.displayObject.parent != null) index++; } @@ -484,12 +569,12 @@ package fairygui } else if (_childrenRenderOrder == ChildrenRenderOrder.Descent) { - for (i = cnt - 1; i >= 0; i--) + for (i=cnt - 1; i >= 0; i--) { - g = _children[i]; + g=_children[i]; if (g == child) break; - + if (g.displayObject != null && g.displayObject.parent != null) index++; } @@ -498,14 +583,14 @@ package fairygui else { _container.addChild(child.displayObject); - + GTimers.inst.callLater(buildNativeDisplayList); } } } else { - if(child.displayObject.parent) + if (child.displayObject.parent) { _container.removeChild(child.displayObject); if (_childrenRenderOrder == ChildrenRenderOrder.Arch) @@ -515,80 +600,80 @@ package fairygui } } } - + private function buildNativeDisplayList():void { - var cnt:int = _children.length; + var cnt:int=_children.length; if (cnt == 0) return; - + var i:int; var child:GObject; switch (_childrenRenderOrder) { case ChildrenRenderOrder.Ascent: + { + for (i=0; i < cnt; i++) { - for (i = 0; i < cnt; i++) - { - child = _children[i]; - if (child.displayObject != null && child.finalVisible) - _container.addChild(child.displayObject); - } + child=_children[i]; + if (child.displayObject != null && child.finalVisible) + _container.addChild(child.displayObject); } + } break; case ChildrenRenderOrder.Descent: + { + for (i=cnt - 1; i >= 0; i--) { - for (i = cnt - 1; i >= 0; i--) - { - child = _children[i]; - if (child.displayObject != null && child.finalVisible) - _container.addChild(child.displayObject); - } + child=_children[i]; + if (child.displayObject != null && child.finalVisible) + _container.addChild(child.displayObject); } + } break; - + case ChildrenRenderOrder.Arch: + { + for (i=0; i < _apexIndex; i++) { - for (i = 0; i < _apexIndex; i++) - { - child = _children[i]; - if (child.displayObject != null && child.finalVisible) - _container.addChild(child.displayObject); - } - for (i = cnt - 1; i >= _apexIndex; i--) - { - child = _children[i]; - if (child.displayObject != null && child.finalVisible) - _container.addChild(child.displayObject); - } + child=_children[i]; + if (child.displayObject != null && child.finalVisible) + _container.addChild(child.displayObject); } + for (i=cnt - 1; i >= _apexIndex; i--) + { + child=_children[i]; + if (child.displayObject != null && child.finalVisible) + _container.addChild(child.displayObject); + } + } break; } } - + internal function applyController(c:Controller):void { - _applyingController = c; - for each(var child:GObject in _children) + _applyingController=c; + for each (var child:GObject in _children) { child.handleControllerChanged(c); } - _applyingController = null; + _applyingController=null; c.runActions(); } - + internal function applyAllControllers():void { - var cnt:int = _controllers.length; - for (var i:int=0; i0) + if (_children.length > 0) { - ax = int.MAX_VALUE, ay = int.MAX_VALUE; - var ar:int = int.MIN_VALUE, ab:int = int.MIN_VALUE; + ax=int.MAX_VALUE, ay=int.MAX_VALUE; + var ar:int=int.MIN_VALUE, ab:int=int.MIN_VALUE; var tmp:int; - - for each(var child:GObject in _children) + + for each (var child:GObject in _children) { - tmp = child.x; - if(tmpar) - ar = tmp; - tmp = child.y + child.actualHeight; - if(tmp>ab) - ab = tmp; + tmp=child.x; + if (tmp < ax) + ax=tmp; + tmp=child.y; + if (tmp < ay) + ay=tmp; + tmp=child.x + child.actualWidth; + if (tmp > ar) + ar=tmp; + tmp=child.y + child.actualHeight; + if (tmp > ab) + ab=tmp; } - aw = ar-ax; - ah = ab-ay; + aw=ar - ax; + ah=ab - ay; } else { - ax = 0; - ay = 0; - aw = 0; - ah = 0; + ax=0; + ay=0; + aw=0; + ah=0; } - + setBounds(ax, ay, aw, ah); } - + protected function setBounds(ax:int, ay:int, aw:int, ah:int):void { - _boundsChanged = false; + _boundsChanged=false; - if(_scrollPane) - _scrollPane.setContentSize(Math.round(ax+aw), Math.round(ay+ah)); + if (_scrollPane) + _scrollPane.setContentSize(Math.round(ax + aw), Math.round(ay + ah)); } - + public function get viewWidth():int { if (_scrollPane != null) @@ -972,15 +1057,15 @@ package fairygui else return this.width - _margin.left - _margin.right; } - + public function set viewWidth(value:int):void { if (_scrollPane != null) - _scrollPane.viewWidth = value; + _scrollPane.viewWidth=value; else - this.width = value + _margin.left + _margin.right; + this.width=value + _margin.left + _margin.right; } - + public function get viewHeight():int { if (_scrollPane != null) @@ -988,97 +1073,97 @@ package fairygui else return this.height - _margin.top - _margin.bottom; } - + public function set viewHeight(value:int):void { if (_scrollPane != null) - _scrollPane.viewHeight = value; + _scrollPane.viewHeight=value; else - this.height = value + _margin.top + _margin.bottom; + this.height=value + _margin.top + _margin.bottom; } - + public function getSnappingPosition(xValue:Number, yValue:Number, resultPoint:Point=null):Point { - if(!resultPoint) - resultPoint = new Point(); - - var cnt:int = _children.length; - if(cnt==0) + if (!resultPoint) + resultPoint=new Point(); + + var cnt:int=_children.length; + if (cnt == 0) { - resultPoint.x = xValue; - resultPoint.y = yValue; + resultPoint.x=xValue; + resultPoint.y=yValue; return resultPoint; } - - ensureBoundsCorrect(); - - var obj:GObject = null; + + ensureBoundsCorrect(); + + var obj:GObject=null; var prev:GObject; - - var i:int = 0; + + var i:int=0; if (yValue != 0) { for (; i < cnt; i++) { - obj = _children[i]; + obj=_children[i]; if (yValue < obj.y) { if (i == 0) { - yValue = 0; + yValue=0; break; } else { - prev = _children[i - 1]; + prev=_children[i - 1]; if (yValue < prev.y + prev.height / 2) //top half part - yValue = prev.y; - else//bottom half part - yValue = obj.y; + yValue=prev.y; + else //bottom half part + yValue=obj.y; break; } } } - + if (i == cnt) - yValue = obj.y; + yValue=obj.y; } - + if (xValue != 0) { if (i > 0) i--; for (; i < cnt; i++) { - obj = _children[i]; + obj=_children[i]; if (xValue < obj.x) { if (i == 0) { - xValue = 0; + xValue=0; break; } else { - prev = _children[i - 1]; + prev=_children[i - 1]; if (xValue < prev.x + prev.width / 2) //top half part - xValue = prev.x; - else//bottom half part - xValue = obj.x; + xValue=prev.x; + else //bottom half part + xValue=obj.x; break; } } } - + if (i == cnt) - xValue = obj.x; + xValue=obj.x; } - - resultPoint.x = xValue; - resultPoint.y = yValue; + + resultPoint.x=xValue; + resultPoint.y=yValue; return resultPoint; } - + internal function childSortingOrderChanged(child:GObject, oldValue:int, newValue:int):void { if (newValue == 0) @@ -1090,103 +1175,103 @@ package fairygui { if (oldValue == 0) _sortingChildCount++; - - var oldIndex:int = _children.indexOf(child); - var index:int = getInsertPosForSortingChild(child); + + var oldIndex:int=_children.indexOf(child); + var index:int=getInsertPosForSortingChild(child); if (oldIndex < index) _setChildIndex(child, oldIndex, index - 1); else _setChildIndex(child, oldIndex, index); } } - + override public function constructFromResource():void { constructFromResource2(null, 0); } - + internal function constructFromResource2(objectPool:Vector., poolIndex:int):void { - var xml:XML = packageItem.owner.getComponentData(packageItem); - + var xml:XML=packageItem.owner.getComponentData(packageItem); + var str:String; var arr:Array; - - _underConstruct = true; - - str = xml.@size; - arr = str.split(","); - sourceWidth = int(arr[0]); - sourceHeight = int(arr[1]); - initWidth = sourceWidth; - initHeight = sourceHeight; - + + _underConstruct=true; + + str=xml.@size; + arr=str.split(","); + sourceWidth=int(arr[0]); + sourceHeight=int(arr[1]); + initWidth=sourceWidth; + initHeight=sourceHeight; + setSize(sourceWidth, sourceHeight); - - str = xml.@pivot; - if(str) - { - arr = str.split(","); - str = xml.@anchor; - internalSetPivot(parseFloat(arr[0]), parseFloat(arr[1]), str=="true"); - } - - str = xml.@restrictSize; - if(str) - { - arr = str.split(","); - minWidth = parseInt(arr[0]); - maxWidth = parseInt(arr[1]); - minHeight = parseInt(arr[2]); - maxHeight= parseInt(arr[3]); - } - - str = xml.@opaque; - if(str!="false") - this.opaque = true; - - str = xml.@hitTest; - if(str) - { - arr = str.split(","); - var hitTestData:PixelHitTestData = packageItem.owner.getPixelHitTestData(arr[0]); + + str=xml.@pivot; + if (str) + { + arr=str.split(","); + str=xml.@anchor; + internalSetPivot(parseFloat(arr[0]), parseFloat(arr[1]), str == "true"); + } + + str=xml.@restrictSize; + if (str) + { + arr=str.split(","); + minWidth=parseInt(arr[0]); + maxWidth=parseInt(arr[1]); + minHeight=parseInt(arr[2]); + maxHeight=parseInt(arr[3]); + } + + str=xml.@opaque; + if (str != "false") + this.opaque=true; + + str=xml.@hitTest; + if (str) + { + arr=str.split(","); + var hitTestData:PixelHitTestData=packageItem.owner.getPixelHitTestData(arr[0]); if (hitTestData != null) - this.hitArea = new PixelHitTest(hitTestData, parseInt(arr[1]), parseInt(arr[2])); + this.hitArea=new PixelHitTest(hitTestData, parseInt(arr[1]), parseInt(arr[2])); } - + var overflow:int; - str = xml.@overflow; - if(str) - overflow = OverflowType.parse(str); + str=xml.@overflow; + if (str) + overflow=OverflowType.parse(str); else - overflow = OverflowType.Visible; - - str = xml.@margin; - if(str) - _margin.parse(str); - - if(overflow==OverflowType.Scroll) + overflow=OverflowType.Visible; + + str=xml.@margin; + if (str) + _margin.parse(str); + + if (overflow == OverflowType.Scroll) { var scroll:int; - str = xml.@scroll; - if(str) - scroll = ScrollType.parse(str); + str=xml.@scroll; + if (str) + scroll=ScrollType.parse(str); else - scroll = ScrollType.Vertical; - + scroll=ScrollType.Vertical; + var scrollBarDisplay:int; - str = xml.@scrollBar; - if(str) - scrollBarDisplay = ScrollBarDisplayType.parse(str); + str=xml.@scrollBar; + if (str) + scrollBarDisplay=ScrollBarDisplayType.parse(str); else - scrollBarDisplay = ScrollBarDisplayType.Default; - var scrollBarFlags:int = parseInt(xml.@scrollBarFlags); - - var scrollBarMargin:Margin = new Margin(); - str = xml.@scrollBarMargin; - if(str) + scrollBarDisplay=ScrollBarDisplayType.Default; + var scrollBarFlags:int=parseInt(xml.@scrollBarFlags); + + var scrollBarMargin:Margin=new Margin(); + str=xml.@scrollBarMargin; + if (str) scrollBarMargin.parse(str); - + var vtScrollBarRes:String; var hzScrollBarRes:String; str = xml.@scrollBarRes; @@ -1202,136 +1287,169 @@ package fairygui } else setupOverflow(overflow); - - _buildingDisplayList = true; - - var col:XMLList = xml.controller; + + _buildingDisplayList=true; + + var col:XMLList=xml.controller; var controller:Controller; - for each(var cxml:XML in col) + for each (var cxml:XML in col) { - controller = new Controller(); + controller=new Controller(); _controllers.push(controller); - controller._parent = this; + controller._parent=this; controller.setup(cxml); } - var child:GObject; - var displayList:Vector. = packageItem.displayList; - var childCount:int = displayList.length; + var child:GObject; + var displayList:Vector.=packageItem.displayList; + var childCount:int=displayList.length; var i:int; - for (i = 0; i < childCount; i++) + for (i=0; i < childCount; i++) { - var di:DisplayListItem = displayList[i]; - + var di:DisplayListItem=displayList[i]; + if (objectPool != null) { - child = objectPool[poolIndex + i]; + child=objectPool[poolIndex + i]; } else if (di.packageItem) { - child = UIObjectFactory.newObject(di.packageItem); - child.packageItem = di.packageItem; + child=UIObjectFactory.newObject(di.packageItem); + child.packageItem=di.packageItem; child.constructFromResource(); } else - child = UIObjectFactory.newObject2(di.type); - - child._underConstruct = true; + child=UIObjectFactory.newObject2(di.type); + + child._underConstruct=true; child.setup_beforeAdd(di.desc); - child.parent = this; + child.parent=this; _children.push(child); } this.relations.setup(xml); - - for (i = 0; i < childCount; i++) + + for (i=0; i < childCount; i++) _children[i].relations.setup(displayList[i].desc); - - for (i = 0; i < childCount; i++) + + for (i=0; i < childCount; i++) { - child = _children[i]; + child=_children[i]; child.setup_afterAdd(displayList[i].desc); - child._underConstruct = false; + child._underConstruct=false; } - - str = xml.@mask; - if(str) - this.mask = getChildById(str).displayObject; - col = xml.transition; + str=xml.@mask; + if (str) + this.mask=getChildById(str).displayObject; + + col=xml.transition; var trans:Transition; - for each(cxml in col) + for each (cxml in col) { - trans = new Transition(this); + trans=new Transition(this); _transitions.push(trans); trans.setup(cxml); } - - if(_transitions.length>0) + + if (_transitions.length > 0) { this.addEventListener(Event.ADDED_TO_STAGE, __addedToStage); this.addEventListener(Event.REMOVED_FROM_STAGE, __removedFromStage); } - + applyAllControllers(); - - _buildingDisplayList = false; - _underConstruct = false; - + + _buildingDisplayList=false; + _underConstruct=false; + buildNativeDisplayList(); setBoundsChangedFlag(); - + constructFromXML(xml); } protected function constructFromXML(xml:XML):void { - + } override public function setup_afterAdd(xml:XML):void { super.setup_afterAdd(xml); - + var str:String; - - if(scrollPane) + + if (scrollPane) { - str = xml.@pageController; - if(str) - scrollPane.pageController = parent.getController(str); + str=xml.@pageController; + if (str) + scrollPane.pageController=parent.getController(str); } - - str = xml.@controller; - if(str) + + str=xml.@controller; + if (str) { - var arr:Array = str.split(","); - for(var i:int=0;i=obj.packageItem.displayList; + var childCount:int=displayList.length; + var i:int; + var di:DisplayListItem; + var child:GObject; + for (i=0; i < childCount; i++) + { + if(i; - - public function GList() - { - super(); - - _trackBounds = true; - _pool = new GObjectPool(); - _layout = ListLayoutType.SingleColumn; - _autoResizeItem = true; - _lastSelectedIndex = -1; - this.opaque = true; - scrollItemToViewOnClick = true; - _align = AlignType.Left; - _verticalAlign = VertAlignType.Top; - - _container = new Sprite(); - _rootContainer.addChild(_container); - } - - public override function dispose():void - { - _pool.clear(); - scrollItemToViewOnClick = false; - - super.dispose(); - } - + public class GList extends GComponent + { + /** + * itemRenderer(index:int, item:GObject); + */ + public var itemRenderer:Function; + /** + * itemProvider(index:int):String; + */ + public var itemProvider:Function; + public var scrollItemToViewOnClick:Boolean; + public var foldInvisibleItems:Boolean; + + private var _layout:int; + private var _lineCount:int; + private var _columnCount:int; + private var _lineGap:int; + private var _columnGap:int; + private var _defaultItem:String; + private var _autoResizeItem:Boolean; + private var _selectionMode:int; + private var _align:int; + private var _verticalAlign:int; + private var _selectionController:Controller; + + private var _lastSelectedIndex:int; + private var _pool:GObjectPool; + + //Virtual List support + private var _virtual:Boolean; + private var _loop:Boolean; + private var _numItems:int; + private var _realNumItems:int; + private var _firstIndex:int; //the top left index + private var _curLineItemCount:int; //item count in one line + private var _curLineItemCount2:int; //只用在页面模式,表示垂直方向的项目数 + private var _itemSize:Point; + private var _virtualListChanged:int; //1-content changed, 2-size changed + private var _eventLocked:Boolean; + private var _virtualItems:Vector.; + + public function GList() + { + super(); + + _trackBounds = true; + _pool = new GObjectPool(); + _layout = ListLayoutType.SingleColumn; + _autoResizeItem = true; + _lastSelectedIndex = -1; + this.opaque = true; + scrollItemToViewOnClick = true; + _align = AlignType.Left; + _verticalAlign = VertAlignType.Top; + + _container = new Sprite(); + _rootContainer.addChild(_container); + } + + public override function dispose():void + { + _pool.clear(); + scrollItemToViewOnClick = false; + + super.dispose(); + } + final public function get layout():int - { - return _layout; - } - + { + return _layout; + } + final public function set layout(value:int):void - { - if(_layout != value) - { - _layout = value; - setBoundsChangedFlag(); - if (_virtual) - setVirtualListChangedFlag(true); - } - } - - final public function get lineCount():int - { - return _lineCount; - } - - final public function set lineCount(value:int):void - { - if (_lineCount != value) - { - _lineCount = value; - if (_layout == ListLayoutType.FlowVertical || _layout == ListLayoutType.Pagination) - { - setBoundsChangedFlag(); - if (_virtual) - setVirtualListChangedFlag(true); - } - } - } - - final public function get columnCount():int - { - return _columnCount; - } - - final public function set columnCount(value:int):void - { - if (_columnCount != value) - { - _columnCount = value; - if (_layout == ListLayoutType.FlowHorizontal || _layout == ListLayoutType.Pagination) - { - setBoundsChangedFlag(); - if (_virtual) - setVirtualListChangedFlag(true); - } - } - } - + { + if(_layout != value) + { + _layout = value; + setBoundsChangedFlag(); + if (_virtual) + setVirtualListChangedFlag(true); + } + } + + final public function get lineCount():int + { + return _lineCount; + } + + final public function set lineCount(value:int):void + { + if (_lineCount != value) + { + _lineCount = value; + if (_layout == ListLayoutType.FlowVertical || _layout == ListLayoutType.Pagination) + { + setBoundsChangedFlag(); + if (_virtual) + setVirtualListChangedFlag(true); + } + } + } + + final public function get columnCount():int + { + return _columnCount; + } + + final public function set columnCount(value:int):void + { + if (_columnCount != value) + { + _columnCount = value; + if (_layout == ListLayoutType.FlowHorizontal || _layout == ListLayoutType.Pagination) + { + setBoundsChangedFlag(); + if (_virtual) + setVirtualListChangedFlag(true); + } + } + } + final public function get lineGap():int - { - return _lineGap; - } - + { + return _lineGap; + } + final public function set lineGap(value:int):void - { - if(_lineGap != value) - { - _lineGap = value; - setBoundsChangedFlag(); - if (_virtual) - setVirtualListChangedFlag(true); - } - } - + { + if(_lineGap != value) + { + _lineGap = value; + setBoundsChangedFlag(); + if (_virtual) + setVirtualListChangedFlag(true); + } + } + final public function get columnGap():int - { - return _columnGap; - } - + { + return _columnGap; + } + final public function set columnGap(value:int):void - { - if(_columnGap != value) - { - _columnGap = value; - setBoundsChangedFlag(); - if (_virtual) - setVirtualListChangedFlag(true); - } - } - - public function get align():int - { - return _align; - } - - public function set align(value:int):void - { - if(_align!=value) - { - _align = value; - setBoundsChangedFlag(); - if (_virtual) - setVirtualListChangedFlag(true); - } - } - - final public function get verticalAlign():int - { - return _verticalAlign; - } - - public function set verticalAlign(value:int):void - { - if(_verticalAlign!=value) - { - _verticalAlign = value; - setBoundsChangedFlag(); - if (_virtual) - setVirtualListChangedFlag(true); - } - } - - final public function get virtualItemSize():Point - { - return _itemSize; - } - - final public function set virtualItemSize(value:Point):void - { - if(_virtual) - { - if(_itemSize==null) - _itemSize = new Point(); - _itemSize.copyFrom(value); - setVirtualListChangedFlag(true); - } - } - - final public function get defaultItem():String - { - return _defaultItem; - } - - final public function set defaultItem(val:String):void - { - _defaultItem = val; - } - - final public function get autoResizeItem():Boolean - { - return _autoResizeItem; - } - - final public function set autoResizeItem(value:Boolean):void - { - if(_autoResizeItem != value) - { - _autoResizeItem = value; - setBoundsChangedFlag(); - if (_virtual) - setVirtualListChangedFlag(true); - } - } - - final public function get selectionMode():int - { - return _selectionMode; - } - - final public function set selectionMode(value:int):void - { - _selectionMode = value; - } - - final public function get selectionController():Controller - { - return _selectionController; - } - - final public function set selectionController(value:Controller):void - { - _selectionController = value; - } - - public function get itemPool():GObjectPool - { - return _pool; - } - - public function getFromPool(url:String=null):GObject - { - if(!url) - url = _defaultItem; - - var ret:GObject = _pool.getObject(url); - if(ret!=null) - ret.visible = true; - return ret; - } - - public function returnToPool(obj:GObject):void - { - _pool.returnObject(obj); - } - - override public function addChildAt(child:GObject, index:int):GObject - { - super.addChildAt(child, index); - - if(child is GButton) - { - var button:GButton = GButton(child); - button.selected = false; - button.changeStateOnClick = false; - button.useHandCursor = false; - } - child.addEventListener(GTouchEvent.CLICK, __clickItem); - child.addEventListener("rightClick", __rightClickItem); - - return child; - } - - public function addItem(url:String=null):GObject - { - if(!url) - url = _defaultItem; - - return addChild(UIPackage.createObjectFromURL(url)); - } - - public function addItemFromPool(url:String=null):GObject - { - return addChild(getFromPool(url)); - } - - override public function removeChildAt(index:int, dispose:Boolean=false):GObject - { - var child:GObject = super.removeChildAt(index, dispose); - child.removeEventListener(GTouchEvent.CLICK, __clickItem); - child.removeEventListener("rightClick", __rightClickItem); - - return child; - } - - public function removeChildToPoolAt(index:int):void - { - var child:GObject = super.removeChildAt(index); - returnToPool(child); - } - - public function removeChildToPool(child:GObject):void - { - super.removeChild(child); - returnToPool(child); - } - - public function removeChildrenToPool(beginIndex:int=0, endIndex:int=-1):void - { - if (endIndex < 0 || endIndex >= _children.length) - endIndex = _children.length - 1; - - for (var i:int=beginIndex; i<=endIndex; ++i) - removeChildToPoolAt(beginIndex); - } - - public function get selectedIndex():int - { - var i:int; - if (_virtual) - { - for (i = 0; i < _realNumItems; i++) - { - var ii:ItemInfo = _virtualItems[i]; - if ((ii.obj is GButton) && GButton(ii.obj).selected - || ii.obj == null && ii.selected) - { - if (_loop) - return i % _numItems; - else - return i; - } - } - } - else - { - var cnt:int = _children.length; - for (i = 0; i < cnt; i++) - { - var obj:GButton = _children[i].asButton; - if (obj != null && obj.selected) - return i; - } - } - - return -1; - } - - public function set selectedIndex(value:int):void - { - if (value >= 0 && value < this.numItems) - { - if(_selectionMode!=ListSelectionMode.Single) - clearSelection(); - addSelection(value); - } - else - clearSelection(); - } - - public function getSelection():Vector. - { - var ret:Vector. = new Vector.(); - var i:int; - if (_virtual) - { - for (i = 0; i < _realNumItems; i++) - { - var ii:ItemInfo = _virtualItems[i]; - if ((ii.obj is GButton) && GButton(ii.obj).selected - || ii.obj == null && ii.selected) - { - if (_loop) - { - i = i % _numItems; - if (ret.indexOf(i)!=-1) - continue; - } - ret.push(i); - } - } - } - else - { - var cnt:int = _children.length; - for (i = 0; i < cnt; i++) - { - var obj:GButton = _children[i].asButton; - if (obj != null && obj.selected) - ret.push(i); - } - } - return ret; - } - - public function addSelection(index:int, scrollItToView:Boolean=false):void - { - if(_selectionMode==ListSelectionMode.None) - return; - - checkVirtualList(); - - if(_selectionMode==ListSelectionMode.Single) - clearSelection(); - - if (scrollItToView) - scrollToView(index); - - _lastSelectedIndex = index; - var obj:GButton = null; - if (_virtual) - { - var ii:ItemInfo = _virtualItems[index]; - if (ii.obj != null) - obj = ii.obj.asButton; - ii.selected = true; - } - else - obj = getChildAt(index).asButton; - - if (obj != null && !obj.selected) - { - obj.selected = true; - updateSelectionController(index); - } - } - - public function removeSelection(index:int):void - { - if(_selectionMode==ListSelectionMode.None) - return; - - var obj:GButton = null; - if (_virtual) - { - var ii:ItemInfo = _virtualItems[index]; - if (ii.obj != null) - obj = ii.obj.asButton; - ii.selected = false; - } - else - obj = getChildAt(index).asButton; - - if (obj != null) - obj.selected = false; - } - - public function clearSelection():void - { - var i:int; - if (_virtual) - { - for (i = 0; i < _realNumItems; i++) - { - var ii:ItemInfo = _virtualItems[i]; - if (ii.obj is GButton) - GButton(ii.obj).selected = false; - ii.selected = false; - } - } - else - { - var cnt:int = _children.length; - for (i = 0; i < cnt; i++) - { - var obj:GButton = _children[i].asButton; - if (obj != null) - obj.selected = false; - } - } - } - - private function clearSelectionExcept(g:GObject):void - { - var i:int; - if (_virtual) - { - for (i = 0; i < _realNumItems; i++) - { - var ii:ItemInfo = _virtualItems[i]; - if (ii.obj != g) - { - if ((ii.obj is GButton)) - GButton(ii.obj).selected = false; - ii.selected = false; - } - } - } - else - { - var cnt:int = _children.length; - for (i = 0; i < cnt; i++) - { - var obj:GButton = _children[i].asButton; - if (obj != null && obj != g) - obj.selected = false; - } - } - } - - public function selectAll():void - { - checkVirtualList(); - - var last:int = -1; - var i:int; - if (_virtual) - { - for (i = 0; i < _realNumItems; i++) - { - var ii:ItemInfo = _virtualItems[i]; - if ((ii.obj is GButton) && !GButton(ii.obj).selected) - { - GButton(ii.obj).selected = true; - last = i; - } - ii.selected = true; - } - } - else - { - var cnt:int = _children.length; - for (i = 0; i < cnt; i++) - { - var obj:GButton = _children[i].asButton; - if (obj != null && !obj.selected) - { - obj.selected = true; - last = i; - } - } - } - - if(last!=-1) - updateSelectionController(last); - } - - public function selectNone():void - { - clearSelection(); - } - - public function selectReverse():void - { - checkVirtualList(); - - var last:int = -1; - var i:int; - if (_virtual) - { - for (i = 0; i < _realNumItems; i++) - { - var ii:ItemInfo = _virtualItems[i]; - if (ii.obj is GButton) - { - GButton(ii.obj).selected = !GButton(ii.obj).selected; - if (GButton(ii.obj).selected) - last = i; - } - ii.selected = !ii.selected; - } - } - else - { - var cnt:int = _children.length; - for (i = 0; i < cnt; i++) - { - var obj:GButton = _children[i].asButton; - if (obj != null) - { - obj.selected = !obj.selected; - if (obj.selected) - last = i; - } - } - } - - if(last!=-1) - updateSelectionController(last); - } - - public function handleArrowKey(dir:int):void - { - var index:int = this.selectedIndex; - if(index==-1) - return; - - switch(dir) - { - case 1://up - if(_layout==ListLayoutType.SingleColumn || _layout==ListLayoutType.FlowVertical) - { - index--; - if(index>=0) - { - clearSelection(); - addSelection(index, true); - } - } - else if (_layout == ListLayoutType.FlowHorizontal || _layout == ListLayoutType.Pagination) - { - var current:GObject = _children[index]; - var k:int = 0; - for(var i:int = index-1;i>=0;i--) - { - var obj:GObject = _children[i]; - if(obj.y!=current.y) - { - current = obj; - break; - } - k++; - } - for(;i>=0;i--) - { - obj = _children[i]; - if(obj.y!=current.y) - { - clearSelection(); - addSelection(i+k+1, true); - break; - } - } - } - break; - - case 3://right - if (_layout == ListLayoutType.SingleRow || _layout == ListLayoutType.FlowHorizontal || _layout == ListLayoutType.Pagination) - { - index++; - if(index<_children.length) - { - clearSelection(); - addSelection(index, true); - } - } - else if(_layout==ListLayoutType.FlowVertical) - { - current = _children[index]; - k = 0; - var cnt:int = _children.length; - for(i = index+1;i=0) - { - clearSelection(); - addSelection(index, true); - } - } - else if(_layout==ListLayoutType.FlowVertical) - { - current = _children[index]; - k = 0; - for(i = index-1;i>=0;i--) - { - obj = _children[i]; - if(obj.x!=current.x) - { - current = obj; - break; - } - k++; - } - for(;i>=0;i--) - { - obj = _children[i]; - if(obj.x!=current.x) - { - clearSelection(); - addSelection(i+k+1, true); - break; - } - } - } - break; - } - } - - public function getItemNear(globalX:Number, globalY:Number):GObject - { - ensureBoundsCorrect(); - - var objs:Array = root.nativeStage.getObjectsUnderPoint(new Point(globalX, globalY)); - if(!objs || objs.length==0) - return null; - - for each(var obj:DisplayObject in objs) - { - while (obj != null && !(obj is Stage)) - { - if (obj is UIDisplayObject) - { - var gobj:GObject = UIDisplayObject(obj).owner; - while(gobj!=null && gobj.parent!=this) - gobj = gobj.parent; - - if(gobj!=null) - return gobj; - } - - obj = obj.parent; - } - } - return null; - } - - private function __clickItem(evt:GTouchEvent):void - { - if (this._scrollPane != null && this._scrollPane.isDragged) - return; - - var item:GObject = GObject(evt.currentTarget); - setSelectionOnEvent(item); - - if (scrollPane != null && scrollItemToViewOnClick) - scrollPane.scrollToView(item, true); - - var ie:ItemEvent = new ItemEvent(ItemEvent.CLICK, item); - ie.stageX = evt.stageX; - ie.stageY = evt.stageY; - ie.clickCount = evt.clickCount; - this.dispatchEvent(ie); - } - - private function __rightClickItem(evt:MouseEvent):void - { - var item:GObject = GObject(evt.currentTarget); - if((item is GButton) && !GButton(item).selected) - setSelectionOnEvent(item); - - if (scrollPane != null && scrollItemToViewOnClick) - scrollPane.scrollToView(item, true); - - var ie:ItemEvent = new ItemEvent(ItemEvent.CLICK, item); - ie.stageX = evt.stageX; - ie.stageY = evt.stageY; - ie.rightButton = true; - this.dispatchEvent(ie); - } - - private function setSelectionOnEvent(item:GObject):void - { - if(!(item is GButton) || _selectionMode==ListSelectionMode.None) - return; - - var dontChangeLastIndex:Boolean = false; - var button:GButton = GButton(item); - var index:int = childIndexToItemIndex(getChildIndex(item)); - - if(_selectionMode==ListSelectionMode.Single) - { - if(!button.selected) - { - clearSelectionExcept(button); - button.selected = true; - } - } - else - { - var r:GRoot = this.root; - if(r.shiftKeyDown) - { - if(!button.selected) - { - if(_lastSelectedIndex!=-1) - { - var min:int = Math.min(_lastSelectedIndex, index); - var max:int = Math.max(_lastSelectedIndex, index); - max = Math.min(max, this.numItems-1); - var i:int; - if (_virtual) - { - for (i = min; i <= max; i++) - { - var ii:ItemInfo = _virtualItems[i]; - if (ii.obj is GButton) - GButton(ii.obj).selected = true; - ii.selected = true; - } - } - else - { - for(i=min;i<=max;i++) - { - var obj:GButton = getChildAt(i).asButton; - if(obj!=null) - obj.selected = true; - } - } - - dontChangeLastIndex = true; - } - else - { - button.selected = true; - } - } - } - else if(r.ctrlKeyDown || _selectionMode==ListSelectionMode.Multiple_SingleClick) - { - button.selected = !button.selected; - } - else - { - if(!button.selected) - { - clearSelectionExcept(button); - button.selected = true; - } - else - clearSelectionExcept(button); - } - } - - if(!dontChangeLastIndex) - _lastSelectedIndex = index; - - if(button.selected) - updateSelectionController(index); - } - - public function resizeToFit(itemCount:int=int.MAX_VALUE, minSize:int=0):void - { - ensureBoundsCorrect(); - - var curCount:int = this.numItems; - if(itemCount>curCount) - itemCount = curCount; - - if (_virtual) - { - var lineCount:int = Math.ceil(itemCount / _curLineItemCount); - if (_layout == ListLayoutType.SingleColumn || _layout == ListLayoutType.FlowHorizontal) - this.viewHeight = lineCount * _itemSize.y + Math.max(0, lineCount - 1) * _lineGap; - else - this.viewWidth = lineCount * _itemSize.x + Math.max(0, lineCount - 1) * _columnGap; - } - else if (itemCount == 0) - { - if (_layout == ListLayoutType.SingleColumn || _layout == ListLayoutType.FlowHorizontal) - this.viewHeight = minSize; - else - this.viewWidth = minSize; - } - else - { - var i:int = itemCount - 1; - var obj:GObject = null; - while (i >= 0) - { - obj = this.getChildAt(i); - if (!foldInvisibleItems || obj.visible) - break; - i--; - } - if (i < 0) - { - if (_layout==ListLayoutType.SingleColumn || _layout==ListLayoutType.FlowHorizontal) - this.viewHeight = minSize; - else - this.viewWidth = minSize; - } - else - { - var size:int; - if(_layout==ListLayoutType.SingleColumn || _layout==ListLayoutType.FlowHorizontal) - { - size = obj.y + obj.height; - if (size < minSize) - size = minSize; - this.viewHeight = size; - } - else - { - size = obj.x + obj.width; - if (size < minSize) - size = minSize; - this.viewWidth = size; - } - } - } - } - - public function getMaxItemWidth():int - { - var cnt:int = _children.length; - var max:int = 0; - for(var i:int=0;imax) - max = child.width; - } - return max; - } - - override protected function handleSizeChanged():void - { - super.handleSizeChanged(); - - setBoundsChangedFlag(); - if (_virtual) - setVirtualListChangedFlag(true); - } - - override public function handleControllerChanged(c:Controller):void - { - super.handleControllerChanged(c); - - if (_selectionController == c) - this.selectedIndex = c.selectedIndex; - } - - private function updateSelectionController(index:int):void - { - if (_selectionController != null && !_selectionController.changing - && index < _selectionController.pageCount) - { - var c:Controller = _selectionController; - _selectionController = null; - c.selectedIndex = index; - _selectionController = c; - } - } - - override public function getSnappingPosition(xValue:Number, yValue:Number, resultPoint:Point=null):Point - { - if (_virtual) - { - if(!resultPoint) - resultPoint = new Point(); - - var saved:Number; - var index:int; - if (_layout == ListLayoutType.SingleColumn || _layout == ListLayoutType.FlowHorizontal) - { - saved = yValue; - GList.pos_param = yValue; - index = getIndexOnPos1(false); - yValue = GList.pos_param; - if (index < _virtualItems.length && saved - yValue > _virtualItems[index].height / 2 && index < _realNumItems) - yValue += _virtualItems[index].height + _lineGap; - } - else if (_layout == ListLayoutType.SingleRow || _layout == ListLayoutType.FlowVertical) - { - saved = xValue; - GList.pos_param = xValue; - index = getIndexOnPos2(false); - xValue = GList.pos_param; - if (index < _virtualItems.length && saved - xValue > _virtualItems[index].width / 2 && index < _realNumItems) - xValue += _virtualItems[index].width + _columnGap; - } - else - { - saved = xValue; - GList.pos_param = xValue; - index = getIndexOnPos3(false); - xValue = GList.pos_param; - if (index < _virtualItems.length && saved - xValue > _virtualItems[index].width / 2 && index < _realNumItems) - xValue += _virtualItems[index].width + _columnGap; - } - - resultPoint.x = xValue; - resultPoint.y = yValue; - return resultPoint; - } - else - return super.getSnappingPosition(xValue, yValue, resultPoint); - } - - public function scrollToView(index:int, ani:Boolean=false, setFirst:Boolean=false):void - { - if (_virtual) - { - if(_numItems==0) - return; - - checkVirtualList(); - - if (index >= _virtualItems.length) - throw new Error("Invalid child index: " + index + ">" + _virtualItems.length); - - if(_loop) - index = Math.floor(_firstIndex/_numItems)*_numItems+index; - - var rect:Rectangle; - var ii:ItemInfo = _virtualItems[index]; - var pos:Number = 0; - var i:int; - if (_layout == ListLayoutType.SingleColumn || _layout == ListLayoutType.FlowHorizontal) - { - for (i = 0; i < index; i += _curLineItemCount) - pos += _virtualItems[i].height + _lineGap; - rect = new Rectangle(0, pos, _itemSize.x, ii.height); - } - else if (_layout == ListLayoutType.SingleRow || _layout == ListLayoutType.FlowVertical) - { - for (i = 0; i < index; i += _curLineItemCount) - pos += _virtualItems[i].width + _columnGap; - rect = new Rectangle(pos, 0, ii.width, _itemSize.y); - } - else - { - var page:int = index / (_curLineItemCount * _curLineItemCount2); - rect = new Rectangle(page * viewWidth + (index % _curLineItemCount) * (ii.width + _columnGap), - (index / _curLineItemCount) % _curLineItemCount2 * (ii.height + _lineGap), - ii.width, ii.height); - } - - setFirst = true;//因为在可变item大小的情况下,只有设置在最顶端,位置才不会因为高度变化而改变,所以只能支持setFirst=true - if (_scrollPane != null) - scrollPane.scrollToView(rect, ani, setFirst); - } - else - { - var obj:GObject = getChildAt(index); - if (_scrollPane != null) - scrollPane.scrollToView(obj, ani, setFirst); - else if (parent != null && parent.scrollPane != null) - parent.scrollPane.scrollToView(obj, ani, setFirst); - } - } - - override public function getFirstChildInView():int - { - return childIndexToItemIndex(super.getFirstChildInView()); - } - - public function childIndexToItemIndex(index:int):int - { - if (!_virtual) - return index; - - if (_layout == ListLayoutType.Pagination) - { - for (var i:int = _firstIndex; i < _realNumItems; i++) - { - if (_virtualItems[i].obj != null) - { - index--; - if (index < 0) - return i; - } - } - - return index; - } - else - { - index += _firstIndex; - if (_loop && _numItems > 0) - index = index % _numItems; - - return index; - } - } - - public function itemIndexToChildIndex(index:int):int - { - if (!_virtual) - return index; - - if (_layout == ListLayoutType.Pagination) - { - return getChildIndex(_virtualItems[index].obj); - } - else - { - if (_loop && _numItems > 0) - { - var j:int = _firstIndex % _numItems; - if (index >= j) - index = _firstIndex + (index - j); - else - index = _firstIndex + _numItems + (j - index); - } - else - index -= _firstIndex; - - return index; - } - } - - public function setVirtual():void - { - _setVirtual(false); - } - - ///

- /// Set the list to be virtual list, and has loop behavior. - /// - public function setVirtualAndLoop():void - { - _setVirtual(true); - } - - /// - /// Set the list to be virtual list. - /// - private function _setVirtual(loop:Boolean):void - { - if (!_virtual) - { - if (_scrollPane == null) - throw new Error("FairyGUI: Virtual list must be scrollable!"); - - if (loop) - { - if (_layout == ListLayoutType.FlowHorizontal || _layout == ListLayoutType.FlowVertical) - throw new Error("FairyGUI: Loop list is not supported for FlowHorizontal or FlowVertical layout!"); - - _scrollPane.bouncebackEffect = false; - } - - _virtual = true; - _loop = loop; - _virtualItems = new Vector.(); - removeChildrenToPool(); - - if(_itemSize==null) - { - _itemSize = new Point(); - var obj:GObject = getFromPool(null); - if (obj == null) - { - throw new Error("FairyGUI: Virtual List must have a default list item resource."); - _itemSize.x = 100; - _itemSize.y = 100; - } - else - { - _itemSize.x = obj.width; - _itemSize.y = obj.height; - returnToPool(obj); - } - } - - if (_layout == ListLayoutType.SingleColumn || _layout == ListLayoutType.FlowHorizontal) - _scrollPane.scrollSpeed = _itemSize.y; - else - _scrollPane.scrollSpeed = _itemSize.x; - - _scrollPane.addEventListener(Event.SCROLL, __scrolled); - setVirtualListChangedFlag(true); - } - } - - /// - /// Set the list item count. - /// If the list is not virtual, specified number of items will be created. - /// If the list is virtual, only items in view will be created. - /// - public function get numItems():int - { - if (_virtual) - return _numItems; - else - return _children.length; - } - - public function set numItems(value:int):void - { - var i:int; - - if (_virtual) - { - if (itemRenderer == null) - throw new Error("FairyGUI: Set itemRenderer first!"); - - _numItems = value; - if (_loop) - _realNumItems = _numItems * 5;//设置5倍数量,用于循环滚动 - else - _realNumItems = _numItems; - - //_virtualItems的设计是只增不减的 - var oldCount:int = _virtualItems.length; - if (_realNumItems > oldCount) - { - for (i = oldCount; i < _realNumItems; i++) - { - var ii:ItemInfo = new ItemInfo(); - ii.width = _itemSize.x; - ii.height = _itemSize.y; - - _virtualItems.push(ii); - } - } - else - { - for (i = _realNumItems; i < oldCount; i++) - _virtualItems[i].selected = false; - } - - if (this._virtualListChanged != 0) - GTimers.inst.remove(_refreshVirtualList); - - //立即刷新 - _refreshVirtualList(); - } - else - { - var cnt:int = _children.length; - if (value > cnt) - { - for (i = cnt; i < value; i++) - { - if (itemProvider == null) - addItemFromPool(); - else - addItemFromPool(itemProvider(i)); - } - } - else - { - removeChildrenToPool(value, cnt); - } - - if (itemRenderer != null) - { - for (i = 0; i < value; i++) - itemRenderer(i, getChildAt(i)); - } - } - } - - public function refreshVirtualList():void - { - setVirtualListChangedFlag(false); - } - - private function checkVirtualList():void - { - if(this._virtualListChanged!=0) { - this._refreshVirtualList(); - GTimers.inst.remove(_refreshVirtualList); - } - } - - private function setVirtualListChangedFlag(layoutChanged:Boolean=false):void - { - if (layoutChanged) - _virtualListChanged = 2; - else if (_virtualListChanged == 0) - _virtualListChanged = 1; - - GTimers.inst.callLater(_refreshVirtualList); - } - - private function _refreshVirtualList():void - { - var layoutChanged:Boolean = _virtualListChanged == 2; - _virtualListChanged = 0; - _eventLocked = true; - - if (layoutChanged) - { - if (_layout == ListLayoutType.SingleColumn || _layout == ListLayoutType.SingleRow) - _curLineItemCount = 1; - else if (_layout == ListLayoutType.FlowHorizontal) - { - if (_columnCount > 0) - _curLineItemCount = _columnCount; - else - { - _curLineItemCount = Math.floor((_scrollPane.viewWidth + _columnGap) / (_itemSize.x + _columnGap)); - if (_curLineItemCount <= 0) - _curLineItemCount = 1; - } - } - else if (_layout == ListLayoutType.FlowVertical) - { - if (_lineCount > 0) - _curLineItemCount = _lineCount; - else - { - _curLineItemCount = Math.floor((_scrollPane.viewHeight + _lineGap) / (_itemSize.y + _lineGap)); - if (_curLineItemCount <= 0) - _curLineItemCount = 1; - } - } - else //pagination - { - if (_columnCount > 0) - _curLineItemCount = _columnCount; - else - { - _curLineItemCount = Math.floor((_scrollPane.viewWidth + _columnGap) / (_itemSize.x + _columnGap)); - if (_curLineItemCount <= 0) - _curLineItemCount = 1; - } - - if (_lineCount > 0) - _curLineItemCount2 = _lineCount; - else - { - _curLineItemCount2 = Math.floor((_scrollPane.viewHeight + _lineGap) / (_itemSize.y + _lineGap)); - if (_curLineItemCount2 <= 0) - _curLineItemCount2 = 1; - } - } - } - - var ch:Number = 0, cw:Number = 0; - if (_realNumItems > 0) - { - var i:int; - var len:int = Math.ceil(_realNumItems / _curLineItemCount) * _curLineItemCount; - var len2:int = Math.min(_curLineItemCount, _realNumItems); - if (_layout == ListLayoutType.SingleColumn || _layout == ListLayoutType.FlowHorizontal) - { - for (i = 0; i < len; i += _curLineItemCount) - ch += _virtualItems[i].height + _lineGap; - if (ch > 0) - ch -= _lineGap; - - if (_autoResizeItem) - cw = scrollPane.viewWidth; - else - { - for (i = 0; i < len2; i++) - cw += _virtualItems[i].width + _columnGap; - if (cw > 0) - cw -= _columnGap; - } - } - else if (_layout == ListLayoutType.SingleRow || _layout == ListLayoutType.FlowVertical) - { - for (i = 0; i < len; i += _curLineItemCount) - cw += _virtualItems[i].width + _columnGap; - if (cw > 0) - cw -= _columnGap; - - if (_autoResizeItem) - ch = this.scrollPane.viewHeight; - else - { - for (i = 0; i < len2; i++) - ch += _virtualItems[i].height + _lineGap; - if (ch > 0) - ch -= _lineGap; - } - } - else - { - var pageCount:int = Math.ceil(len / (_curLineItemCount * _curLineItemCount2)); - cw = pageCount * viewWidth; - ch = viewHeight; - } - } - - handleAlign(cw, ch); - _scrollPane.setContentSize(cw, ch); - - _eventLocked = false; - - handleScroll(true); - } - - private function __scrolled(evt:Event):void - { - handleScroll(false); - } - - private function getIndexOnPos1(forceUpdate:Boolean):int - { - if (_realNumItems < _curLineItemCount) - { - pos_param = 0; - return 0; - } - - var i:int; - var pos2:Number; - var pos3:Number; - - if (numChildren > 0 && !forceUpdate) - { - pos2 = this.getChildAt(0).y; - if (pos2 > pos_param) - { - for (i = _firstIndex - _curLineItemCount; i >= 0; i -= _curLineItemCount) - { - pos2 -= (_virtualItems[i].height + _lineGap); - if (pos2 <= pos_param) - { - pos_param = pos2; - return i; - } - } - - pos_param = 0; - return 0; - } - else - { - for (i = _firstIndex; i < _realNumItems; i += _curLineItemCount) - { - pos3 = pos2 + _virtualItems[i].height + _lineGap; - if (pos3 > pos_param) - { - pos_param = pos2; - return i; - } - pos2 = pos3; - } - - pos_param = pos2; - return _realNumItems - _curLineItemCount; - } - } - else - { - pos2 = 0; - for (i = 0; i < _realNumItems; i += _curLineItemCount) - { - pos3 = pos2 + _virtualItems[i].height + _lineGap; - if (pos3 > pos_param) - { - pos_param = pos2; - return i; - } - pos2 = pos3; - } - - pos_param = pos2; - return _realNumItems - _curLineItemCount; - } - } - - private function getIndexOnPos2(forceUpdate:Boolean):int - { - if (_realNumItems < _curLineItemCount) - { - pos_param = 0; - return 0; - } - - var i:int; - var pos2:Number; - var pos3:Number; - - if (numChildren > 0 && !forceUpdate) - { - pos2 = this.getChildAt(0).x; - if (pos2 > pos_param) - { - for (i = _firstIndex - _curLineItemCount; i >= 0; i -= _curLineItemCount) - { - pos2 -= (_virtualItems[i].width + _columnGap); - if (pos2 <= pos_param) - { - pos_param = pos2; - return i; - } - } - - pos_param = 0; - return 0; - } - else - { - for (i = _firstIndex; i < _realNumItems; i += _curLineItemCount) - { - pos3 = pos2 + _virtualItems[i].width + _columnGap; - if (pos3 > pos_param) - { - pos_param = pos2; - return i; - } - pos2 = pos3; - } - - pos_param = pos2; - return _realNumItems - _curLineItemCount; - } - } - else - { - pos2 = 0; - for (i = 0; i < _realNumItems; i += _curLineItemCount) - { - pos3 = pos2 + _virtualItems[i].width + _columnGap; - if (pos3 > pos_param) - { - pos_param = pos2; - return i; - } - pos2 = pos3; - } - - pos_param = pos2; - return _realNumItems - _curLineItemCount; - } - } - - private function getIndexOnPos3(forceUpdate:Boolean):int - { - if (_realNumItems < _curLineItemCount) - { - pos_param = 0; - return 0; - } - - var viewWidth:Number = this.viewWidth; - var page:int = Math.floor(pos_param / viewWidth); - var startIndex:int = page * (_curLineItemCount * _curLineItemCount2); - var pos2:Number = page * viewWidth; - var i:int; - var pos3:Number; - for (i = 0; i < _curLineItemCount; i++) - { - pos3 = pos2 + _virtualItems[startIndex + i].width + _columnGap; - if (pos3 > pos_param) - { - pos_param = pos2; - return startIndex + i; - } - pos2 = pos3; - } - - pos_param = pos2; - return startIndex + _curLineItemCount - 1; - } - - private function handleScroll(forceUpdate:Boolean):void - { - if (_eventLocked) - return; - - var pos:Number; - var roundSize:int; - - if (_layout == ListLayoutType.SingleColumn || _layout == ListLayoutType.FlowHorizontal) - { - if (_loop) - { - pos = scrollPane.scrollingPosY; - //循环列表的核心实现,滚动到头尾时重新定位 - roundSize = _numItems * (_itemSize.y + _lineGap); - if (pos == 0) - scrollPane.posY = roundSize; - else if (pos == scrollPane.contentHeight - scrollPane.viewHeight) - scrollPane.posY = scrollPane.contentHeight - roundSize - this.viewHeight; - } - - handleScroll1(forceUpdate); - handleArchOrder1(); - } - else if (_layout == ListLayoutType.SingleRow || _layout == ListLayoutType.FlowVertical) - { - if (_loop) - { - pos = scrollPane.scrollingPosX; - //循环列表的核心实现,滚动到头尾时重新定位 - roundSize = _numItems * (_itemSize.x + _columnGap); - if (pos == 0) - scrollPane.posX = roundSize; - else if (pos == scrollPane.contentWidth - scrollPane.viewWidth) - scrollPane.posX = scrollPane.contentWidth - roundSize - this.viewWidth; - } - - handleScroll2(forceUpdate); - handleArchOrder2(); - } - else - { - if (_loop) - { - pos = scrollPane.scrollingPosX; - //循环列表的核心实现,滚动到头尾时重新定位 - roundSize = (int)(_numItems / (_curLineItemCount * _curLineItemCount2)) * viewWidth; - if (pos == 0) - scrollPane.posX = roundSize; - else if (pos == scrollPane.contentWidth - scrollPane.viewWidth) - scrollPane.posX = scrollPane.contentWidth - roundSize - this.viewWidth; - } - - handleScroll3(forceUpdate); - } - - _boundsChanged = false; - } - - private static var itemInfoVer:uint = 0; //用来标志item是否在本次处理中已经被重用了 - private static var enterCounter:uint = 0; //因为HandleScroll是会重入的,这个用来避免极端情况下的死锁 - private static var pos_param:Number; - - private function handleScroll1(forceUpdate:Boolean):void - { - enterCounter++; - if (enterCounter > 3) - return; - - var pos:Number = scrollPane.scrollingPosY; - var max:Number = pos + scrollPane.viewHeight; - var end:Boolean = max == scrollPane.contentHeight;//这个标志表示当前需要滚动到最末,无论内容变化大小 - - //寻找当前位置的第一条项目 - GList.pos_param = pos; - var newFirstIndex:int = getIndexOnPos1(forceUpdate); - pos = GList.pos_param; - if (newFirstIndex == _firstIndex && !forceUpdate) - { - enterCounter--; - return; - } - - var oldFirstIndex:int = _firstIndex; - _firstIndex = newFirstIndex; - var curIndex:int = newFirstIndex; - var forward:Boolean = oldFirstIndex > newFirstIndex; - var oldCount:int = this.numChildren; - var lastIndex:int = oldFirstIndex + oldCount - 1; - var reuseIndex:int = forward ? lastIndex : oldFirstIndex; - var curX:Number = 0, curY:Number = pos; - var needRender:Boolean; - var deltaSize:Number = 0; - var firstItemDeltaSize:Number = 0; - var url:String = defaultItem; - var ii:ItemInfo, ii2:ItemInfo; - var i:int,j:int; - var partSize:int = (scrollPane.viewWidth - _columnGap * (_curLineItemCount - 1)) / _curLineItemCount; - - itemInfoVer++; - - while (curIndex < _realNumItems && (end || curY < max)) - { - ii = _virtualItems[curIndex]; - - if (ii.obj == null || forceUpdate) - { - if (itemProvider != null) - { - url = itemProvider(curIndex % _numItems); - if (url == null) - url = _defaultItem; - url = UIPackage.normalizeURL(url); - } - - if (ii.obj != null && ii.obj.resourceURL != url) - { - if (ii.obj is GButton) - ii.selected = GButton(ii.obj).selected; - removeChildToPool(ii.obj); - ii.obj = null; - } - } - - if (ii.obj == null) - { - //搜索最适合的重用item,保证每次刷新需要新建或者重新render的item最少 - if (forward) - { - for (j = reuseIndex; j >= oldFirstIndex; j--) - { - ii2 = _virtualItems[j]; - if (ii2.obj != null && ii2.updateFlag != itemInfoVer && ii2.obj.resourceURL == url) - { - if (ii2.obj is GButton) - ii2.selected = GButton(ii2.obj).selected; - ii.obj = ii2.obj; - ii2.obj = null; - if (j == reuseIndex) - reuseIndex--; - break; - } - } - } - else - { - for (j = reuseIndex; j <= lastIndex; j++) - { - ii2 = _virtualItems[j]; - if (ii2.obj != null && ii2.updateFlag != itemInfoVer && ii2.obj.resourceURL == url) - { - if (ii2.obj is GButton) - ii2.selected = GButton(ii2.obj).selected; - ii.obj = ii2.obj; - ii2.obj = null; - if (j == reuseIndex) - reuseIndex++; - break; - } - } - } - - if (ii.obj != null) - { - setChildIndex(ii.obj, forward ? curIndex - newFirstIndex : numChildren); - } - else - { - ii.obj = _pool.getObject(url); - if (forward) - this.addChildAt(ii.obj, curIndex - newFirstIndex); - else - this.addChild(ii.obj); - } - if (ii.obj is GButton) - GButton(ii.obj).selected = ii.selected; - - needRender = true; - } - else - needRender = forceUpdate; - - if (needRender) - { - if (_autoResizeItem && (_layout == ListLayoutType.SingleColumn || _columnCount > 0)) - ii.obj.setSize(partSize, ii.obj.height, true); - - itemRenderer(curIndex % _numItems, ii.obj); - if (curIndex % _curLineItemCount == 0) - { - deltaSize += Math.ceil(ii.obj.height) - ii.height; - if (curIndex == newFirstIndex && oldFirstIndex > newFirstIndex) - { - //当内容向下滚动时,如果新出现的项目大小发生变化,需要做一个位置补偿,才不会导致滚动跳动 - firstItemDeltaSize = Math.ceil(ii.obj.height) - ii.height; - } - } - ii.width = Math.ceil(ii.obj.width); - ii.height = Math.ceil(ii.obj.height); - } - - ii.updateFlag = itemInfoVer; - ii.obj.setXY(curX, curY); - if (curIndex == newFirstIndex) //要显示多一条才不会穿帮 - max += ii.height; - - curX += ii.width + _columnGap; - - if (curIndex % _curLineItemCount == _curLineItemCount - 1) - { - curX = 0; - curY += ii.height + _lineGap; - } - curIndex++; - } - - for (i = 0; i < oldCount; i++) - { - ii = _virtualItems[oldFirstIndex + i]; - if (ii.updateFlag != itemInfoVer && ii.obj != null) - { - if (ii.obj is GButton) - ii.selected = GButton(ii.obj).selected; - removeChildToPool(ii.obj); - ii.obj = null; - } - } - - if (deltaSize != 0 || firstItemDeltaSize != 0) - _scrollPane.changeContentSizeOnScrolling(0, deltaSize, 0, firstItemDeltaSize); - - if (curIndex > 0 && this.numChildren > 0 && _container.y < 0 && getChildAt(0).y > -_container.y)//最后一页没填满! - handleScroll1(false); - - enterCounter--; - } - - private function handleScroll2(forceUpdate:Boolean):void - { - enterCounter++; - if (enterCounter > 3) - return; - - var pos:Number = scrollPane.scrollingPosX; - var max:Number = pos + scrollPane.viewWidth; - var end:Boolean = pos == scrollPane.contentWidth;//这个标志表示当前需要滚动到最末,无论内容变化大小 - - //寻找当前位置的第一条项目 - GList.pos_param = pos; - var newFirstIndex:int = getIndexOnPos2(forceUpdate); - pos = GList.pos_param; - if (newFirstIndex == _firstIndex && !forceUpdate) - { - enterCounter--; - return; - } - - var oldFirstIndex:int = _firstIndex; - _firstIndex = newFirstIndex; - var curIndex:int = newFirstIndex; - var forward:Boolean = oldFirstIndex > newFirstIndex; - var oldCount:int = this.numChildren; - var lastIndex:int = oldFirstIndex + oldCount - 1; - var reuseIndex:int = forward ? lastIndex : oldFirstIndex; - var curX:Number = pos, curY:Number = 0; - var needRender:Boolean; - var deltaSize:Number = 0; - var firstItemDeltaSize:Number = 0; - var url:String = defaultItem; - var ii:ItemInfo, ii2:ItemInfo; - var i:int,j:int; - var partSize:int = (scrollPane.viewHeight - _lineGap * (_curLineItemCount - 1)) / _curLineItemCount; - - itemInfoVer++; - - while (curIndex < _realNumItems && (end || curX < max)) - { - ii = _virtualItems[curIndex]; - - if (ii.obj == null || forceUpdate) - { - if (itemProvider != null) - { - url = itemProvider(curIndex % _numItems); - if (url == null) - url = _defaultItem; - url = UIPackage.normalizeURL(url); - } - - if (ii.obj != null && ii.obj.resourceURL != url) - { - if (ii.obj is GButton) - ii.selected = GButton(ii.obj).selected; - removeChildToPool(ii.obj); - ii.obj = null; - } - } - - if (ii.obj == null) - { - if (forward) - { - for (j = reuseIndex; j >= oldFirstIndex; j--) - { - ii2 = _virtualItems[j]; - if (ii2.obj != null && ii2.updateFlag != itemInfoVer && ii2.obj.resourceURL == url) - { - if (ii2.obj is GButton) - ii2.selected = GButton(ii2.obj).selected; - ii.obj = ii2.obj; - ii2.obj = null; - if (j == reuseIndex) - reuseIndex--; - break; - } - } - } - else - { - for (j = reuseIndex; j <= lastIndex; j++) - { - ii2 = _virtualItems[j]; - if (ii2.obj != null && ii2.updateFlag != itemInfoVer && ii2.obj.resourceURL == url) - { - if (ii2.obj is GButton) - ii2.selected = GButton(ii2.obj).selected; - ii.obj = ii2.obj; - ii2.obj = null; - if (j == reuseIndex) - reuseIndex++; - break; - } - } - } - - if (ii.obj != null) - { - setChildIndex(ii.obj, forward ? curIndex - newFirstIndex : numChildren); - } - else - { - ii.obj = _pool.getObject(url); - if (forward) - this.addChildAt(ii.obj, curIndex - newFirstIndex); - else - this.addChild(ii.obj); - } - if (ii.obj is GButton) - GButton(ii.obj).selected = ii.selected; - - needRender = true; - } - else - needRender = forceUpdate; - - if (needRender) - { - if (_autoResizeItem && (_layout == ListLayoutType.SingleRow || _lineCount > 0)) - ii.obj.setSize(ii.obj.width, partSize, true); - - itemRenderer(curIndex % _numItems, ii.obj); - if (curIndex % _curLineItemCount == 0) - { - deltaSize += Math.ceil(ii.obj.width) - ii.width; - if (curIndex == newFirstIndex && oldFirstIndex > newFirstIndex) - { - //当内容向下滚动时,如果新出现的一个项目大小发生变化,需要做一个位置补偿,才不会导致滚动跳动 - firstItemDeltaSize = Math.ceil(ii.obj.width) - ii.width; - } - } - ii.width = Math.ceil(ii.obj.width); - ii.height = Math.ceil(ii.obj.height); - } - - ii.updateFlag = itemInfoVer; - ii.obj.setXY(curX, curY); - if (curIndex == newFirstIndex) //要显示多一条才不会穿帮 - max += ii.width; - - curY += ii.height + _lineGap; - - if (curIndex % _curLineItemCount == _curLineItemCount - 1) - { - curY = 0; - curX += ii.width + _columnGap; - } - curIndex++; - } - - for (i = 0; i < oldCount; i++) - { - ii = _virtualItems[oldFirstIndex + i]; - if (ii.updateFlag != itemInfoVer && ii.obj != null) - { - if (ii.obj is GButton) - ii.selected = GButton(ii.obj).selected; - removeChildToPool(ii.obj); - ii.obj = null; - } - } - - if (deltaSize != 0 || firstItemDeltaSize != 0) - _scrollPane.changeContentSizeOnScrolling(deltaSize, 0, firstItemDeltaSize, 0); - - if (curIndex > 0 && this.numChildren > 0 && _container.x < 0 && getChildAt(0).x > - _container.x)//最后一页没填满! - handleScroll2(false); - - enterCounter--; - } - - private function handleScroll3(forceUpdate:Boolean):void - { - var pos:Number = scrollPane.scrollingPosX; - - //寻找当前位置的第一条项目 - GList.pos_param = pos; - var newFirstIndex:int = getIndexOnPos3(forceUpdate); - pos = GList.pos_param; - if (newFirstIndex == _firstIndex && !forceUpdate) - return; - - var oldFirstIndex:int = _firstIndex; - _firstIndex = newFirstIndex; - - //分页模式不支持不等高,所以渲染满一页就好了 - - var reuseIndex:int = oldFirstIndex; - var virtualItemCount:int = _virtualItems.length; - var pageSize:int = _curLineItemCount * _curLineItemCount2; - var startCol:int = newFirstIndex % _curLineItemCount; - var viewWidth:Number = this.viewWidth; - var page:int = int(newFirstIndex / pageSize); - var startIndex:int = page * pageSize; - var lastIndex:int = startIndex + pageSize * 2; //测试两页 - var needRender:Boolean; - var i:int; - var ii:ItemInfo, ii2:ItemInfo; - var col:int; - var url:String = _defaultItem; - var partWidth:int = (scrollPane.viewWidth - _columnGap * (_curLineItemCount - 1)) / _curLineItemCount; - var partHeight:int = (scrollPane.viewHeight - _lineGap * (_curLineItemCount2 - 1)) / _curLineItemCount2; - - itemInfoVer++; - - //先标记这次要用到的项目 - for (i = startIndex; i < lastIndex; i++) - { - if (i >= _realNumItems) - continue; - - col = i % _curLineItemCount; - if (i - startIndex < pageSize) - { - if (col < startCol) - continue; - } - else - { - if (col > startCol) - continue; - } - - ii = _virtualItems[i]; - ii.updateFlag = itemInfoVer; - } - - var lastObj:GObject = null; - var insertIndex:int = 0; - for (i = startIndex; i < lastIndex; i++) - { - if (i >= _realNumItems) - continue; - - ii = _virtualItems[i]; - if (ii.updateFlag != itemInfoVer) - continue; - - if (ii.obj == null) - { - //寻找看有没有可重用的 - while (reuseIndex < virtualItemCount) - { - ii2 = _virtualItems[reuseIndex]; - if (ii2.obj != null && ii2.updateFlag != itemInfoVer) - { - if (ii2.obj is GButton) - ii2.selected = GButton(ii2.obj).selected; - ii.obj = ii2.obj; - ii2.obj = null; - break; - } - reuseIndex++; - } - - if (insertIndex == -1) - insertIndex = getChildIndex(lastObj) + 1; - - if (ii.obj == null) - { - if (itemProvider != null) - { - url = itemProvider(i % _numItems); - if (url == null) - url = _defaultItem; - url = UIPackage.normalizeURL(url); - } - - ii.obj = _pool.getObject(url); - this.addChildAt(ii.obj, insertIndex); - } - else - { - insertIndex = setChildIndexBefore(ii.obj, insertIndex); - } - insertIndex++; - - if (ii.obj is GButton) - GButton(ii.obj).selected = ii.selected; - - needRender = true; - } - else - { - needRender = forceUpdate; - insertIndex = -1; - lastObj = ii.obj; - } - - if (needRender) - { - if (_autoResizeItem) - { - if (_curLineItemCount == _columnCount && _curLineItemCount2 == _lineCount) - ii.obj.setSize(partWidth, partHeight, true); - else if (_curLineItemCount == _columnCount) - ii.obj.setSize(partWidth, ii.obj.height, true); - else if (_curLineItemCount2 == _lineCount) - ii.obj.setSize(ii.obj.width, partHeight, true); - } - - itemRenderer(i % _numItems, ii.obj); - ii.width = Math.ceil(ii.obj.width); - ii.height = Math.ceil(ii.obj.height); - } - } - - //排列item - var borderX:int = (startIndex / pageSize) * viewWidth; - var xx:int = borderX; - var yy:int = 0; - var lineHeight:int = 0; - for (i = startIndex; i < lastIndex; i++) - { - if (i >= _realNumItems) - continue; - - ii = _virtualItems[i]; - if (ii.updateFlag == itemInfoVer) - ii.obj.setXY(xx, yy); - - if (ii.height > lineHeight) - lineHeight = ii.height; - if (i % _curLineItemCount == _curLineItemCount - 1) - { - xx = borderX; - yy += lineHeight + _lineGap; - lineHeight = 0; - - if (i == startIndex + pageSize - 1) - { - borderX += viewWidth; - xx = borderX; - yy = 0; - } - } - else - xx += ii.width + _columnGap; - } - - //释放未使用的 - for (i = reuseIndex; i < virtualItemCount; i++) - { - ii = _virtualItems[i]; - if (ii.updateFlag != itemInfoVer && ii.obj != null) - { - if (ii.obj is GButton) - ii.selected = GButton(ii.obj).selected; - removeChildToPool(ii.obj); - ii.obj = null; - } - } - } - - private function handleArchOrder1():void - { - if (this.childrenRenderOrder == ChildrenRenderOrder.Arch) - { - var mid:Number = _scrollPane.posY + this.viewHeight / 2; - var minDist:Number = int.MAX_VALUE, dist:Number; - var apexIndex:int = 0; - var cnt:int = this.numChildren; - for (var i:int = 0; i < cnt; i++) - { - var obj:GObject = getChildAt(i); - if (!foldInvisibleItems || obj.visible) - { - dist = Math.abs(mid - obj.y - obj.height / 2); - if (dist < minDist) - { - minDist = dist; - apexIndex = i; - } - } - } - this.apexIndex = apexIndex; - } - } - - private function handleArchOrder2():void - { - if (this.childrenRenderOrder == ChildrenRenderOrder.Arch) - { - var mid:Number = _scrollPane.posX + this.viewWidth / 2; - var minDist:Number = int.MAX_VALUE, dist:Number; - var apexIndex:int = 0; - var cnt:int = this.numChildren; - for (var i:int = 0; i < cnt; i++) - { - var obj:GObject = getChildAt(i); - if (!foldInvisibleItems || obj.visible) - { - dist = Math.abs(mid - obj.x - obj.width / 2); - if (dist < minDist) - { - minDist = dist; - apexIndex = i; - } - } - } - this.apexIndex = apexIndex; - } - } - - private function handleAlign(contentWidth:Number, contentHeight:Number):void - { - var newOffsetX:Number = 0; - var newOffsetY:Number = 0; - - if (contentHeight < viewHeight) - { - if (_verticalAlign == VertAlignType.Middle) - newOffsetY = int((viewHeight - contentHeight) / 2); - else if (_verticalAlign == VertAlignType.Bottom) - newOffsetY = viewHeight - contentHeight; - } - - if (contentWidth < this.viewWidth) - { - if (_align == AlignType.Center) - newOffsetX = int((viewWidth - contentWidth) / 2); - else if (_align == AlignType.Right) - newOffsetX = viewWidth - contentWidth; - } - - if (newOffsetX!=_alignOffset.x || newOffsetY!=_alignOffset.y) - { - _alignOffset.setTo(newOffsetX, newOffsetY); - if (scrollPane != null) - scrollPane.adjustMaskContainer(); - else - { - _container.x = _margin.left + _alignOffset.x; - _container.y = _margin.top + _alignOffset.y; - } - } - } - - override protected function updateBounds():void - { - if(_virtual) - return; - - var i:int; - var child:GObject; - var curX:int; - var curY:int; - var maxWidth:int; - var maxHeight:int; - var cw:int, ch:int; - var j:int = 0; - var page:int = 0; - var k:int = 0; - var cnt:int = _children.length; - var viewWidth:Number = this.viewWidth; - var viewHeight:Number = this.viewHeight; - var lineSize:Number = 0; - var lineStart:int = 0; - var ratio:Number; - - if(_layout==ListLayoutType.SingleColumn) - { - for(i=0;imaxWidth) - maxWidth = child.width; - } - cw = Math.ceil(maxWidth); - ch = curY; - } - else if(_layout==ListLayoutType.SingleRow) - { - for(i=0;imaxHeight) - maxHeight = child.height; - } - cw = curX; - ch = Math.ceil(maxHeight); - } - else if(_layout==ListLayoutType.FlowHorizontal) - { - if (_autoResizeItem && _columnCount > 0) - { - for (i = 0; i < cnt; i++) - { - child = getChildAt(i); - if (foldInvisibleItems && !child.visible) - continue; - - lineSize += child.sourceWidth; - j++; - if (j == _columnCount || i == cnt - 1) - { - ratio = (viewWidth - lineSize - (j - 1) * _columnGap) / lineSize; - curX = 0; - for (j = lineStart; j <= i; j++) - { - child = getChildAt(j); - if (foldInvisibleItems && !child.visible) - continue; - - child.setXY(curX, curY); - - if (j < i) - { - child.setSize(child.sourceWidth + Math.round(child.sourceWidth * ratio), child.height, true); - curX += Math.ceil(child.width) + _columnGap; - } - else - { - child.setSize(viewWidth - curX, child.height, true); - } - if (child.height > maxHeight) - maxHeight = child.height; - } - //new line - curY += Math.ceil(maxHeight) + _lineGap; - maxHeight = 0; - j = 0; - lineStart = i + 1; - lineSize = 0; - } - } - ch = curY + Math.ceil(maxHeight); - cw = viewWidth; - } - else - { - for(i=0;i= _columnCount - || _columnCount == 0 && curX + child.width > viewWidth && maxHeight != 0) - { - //new line - curX = 0; - curY += Math.ceil(maxHeight) + _lineGap; - maxHeight = 0; - j = 0; - } - child.setXY(curX, curY); - curX += Math.ceil(child.width); - if (curX > maxWidth) - maxWidth = curX; - if (child.height > maxHeight) - maxHeight = child.height; - j++; - } - ch = curY + Math.ceil(maxHeight); - cw = Math.ceil(maxWidth); - } - } - else if (_layout == ListLayoutType.FlowVertical) - { - if (_autoResizeItem && _lineCount > 0) - { - for (i = 0; i < cnt; i++) - { - child = getChildAt(i); - if (foldInvisibleItems && !child.visible) - continue; - - lineSize += child.sourceHeight; - j++; - if (j == _lineCount || i == cnt - 1) - { - ratio = (viewHeight - lineSize - (j - 1) * _lineGap) / lineSize; - curY = 0; - for (j = lineStart; j <= i; j++) - { - child = getChildAt(j); - if (foldInvisibleItems && !child.visible) - continue; - - child.setXY(curX, curY); - - if (j < i) - { - child.setSize(child.width, child.sourceHeight + Math.round(child.sourceHeight * ratio), true); - curY += Math.ceil(child.height) + _lineGap; - } - else - { - child.setSize(child.width, viewHeight - curY, true); - } - if (child.width > maxWidth) - maxWidth = child.width; - } - //new line - curX += Math.ceil(maxWidth) + _columnGap; - maxWidth = 0; - j = 0; - lineStart = i + 1; - lineSize = 0; - } - } - cw = curX + Math.ceil(maxWidth); - ch = viewHeight; - } - else - { - for(i=0;i= _lineCount - || _lineCount == 0 && curY + child.height > viewHeight && maxWidth != 0) - { - curY = 0; - curX += Math.ceil(maxWidth) + _columnGap; - maxWidth = 0; - j = 0; - } - child.setXY(curX, curY); - curY += Math.ceil(child.height); - if (curY > maxHeight) - maxHeight = curY; - if (child.width > maxWidth) - maxWidth = child.width; - j++; - } - cw = curX + Math.ceil(maxWidth); - ch = Math.ceil(maxHeight); - } - } - else //pagination - { - var eachHeight:int; - if(_autoResizeItem && _lineCount>0) - eachHeight = Math.floor((viewHeight-(_lineCount-1)*_lineGap)/_lineCount); - - if (_autoResizeItem && _columnCount > 0) - { - for (i = 0; i < cnt; i++) - { - child = getChildAt(i); - if (foldInvisibleItems && !child.visible) - continue; - - lineSize += child.sourceWidth; - j++; - if (j == _columnCount || i == cnt - 1) - { - ratio = (viewWidth - lineSize - (j - 1) * _columnGap) / lineSize; - curX = 0; - for (j = lineStart; j <= i; j++) - { - child = getChildAt(j); - if (foldInvisibleItems && !child.visible) - continue; - - child.setXY(page * viewWidth + curX, curY); - - if (j < i) - { - child.setSize(child.sourceWidth + Math.round(child.sourceWidth * ratio), - _lineCount>0?eachHeight:child.height, true); - curX += Math.ceil(child.width) + _columnGap; - } - else - { - child.setSize(viewWidth - curX, _lineCount>0?eachHeight:child.height, true); - } - if (child.height > maxHeight) - maxHeight = child.height; - } - //new line - curY += Math.ceil(maxHeight) + _lineGap; - maxHeight = 0; - j = 0; - lineStart = i + 1; - lineSize = 0; - - k++; - - if (_lineCount != 0 && k >= _lineCount - || _lineCount == 0 && curY + child.height > viewHeight) - { - //new page - page++; - curY = 0; - k = 0; - } - } - } - } - else - { - for (i = 0; i < cnt; i++) - { - child = getChildAt(i); - if (foldInvisibleItems && !child.visible) - continue; - - if (curX != 0) - curX += _columnGap; - - if (_autoResizeItem && _lineCount > 0) - child.setSize(child.width, eachHeight, true); - - if (_columnCount != 0 && j >= _columnCount - || _columnCount == 0 && curX + child.width > viewWidth && maxHeight != 0) - { - //new line - curX = 0; - curY += Math.ceil(maxHeight) + _lineGap; - maxHeight = 0; - j = 0; - k++; - - if (_lineCount != 0 && k >= _lineCount - || _lineCount == 0 && curY + child.height > viewHeight && maxWidth != 0)//new page - { - page++; - curY = 0; - k = 0; - } - } - child.setXY(page * viewWidth + curX, curY); - curX += Math.ceil(child.width); - if (curX > maxWidth) - maxWidth = curX; - if (child.height > maxHeight) - maxHeight = child.height; - j++; - } - } - ch = page > 0 ? viewHeight : curY + Math.ceil(maxHeight); - cw = (page + 1) * viewWidth; - } - - handleAlign(cw, ch); - setBounds(0,0,cw,ch); - } - - override public function setup_beforeAdd(xml:XML):void - { - super.setup_beforeAdd(xml); - - var str:String; - str = xml.@layout; - if(str) - _layout = ListLayoutType.parse(str); - - var overflow:int; - str = xml.@overflow; - if(str) - overflow = OverflowType.parse(str); - else - overflow = OverflowType.Visible; - - str = xml.@margin; - if(str) - _margin.parse(str); - - str = xml.@align; - if(str) - _align = AlignType.parse(str); - - str = xml.@vAlign; - if(str) - _verticalAlign = VertAlignType.parse(str); - - if(overflow==OverflowType.Scroll) - { - var scroll:int; - str = xml.@scroll; - if(str) - scroll = ScrollType.parse(str); - else - scroll = ScrollType.Vertical; - - var scrollBarDisplay:int; - str = xml.@scrollBar; - if(str) - scrollBarDisplay = ScrollBarDisplayType.parse(str); - else - scrollBarDisplay = ScrollBarDisplayType.Default; - var scrollBarFlags:int = parseInt(xml.@scrollBarFlags); - - var scrollBarMargin:Margin = new Margin(); - str = xml.@scrollBarMargin; - if(str) - scrollBarMargin.parse(str); - - var vtScrollBarRes:String; - var hzScrollBarRes:String; - str = xml.@scrollBarRes; - if(str) - { - var arr:Array = str.split(","); - vtScrollBarRes = arr[0]; - hzScrollBarRes = arr[1]; - } - - setupScroll(scrollBarMargin, scroll, scrollBarDisplay, scrollBarFlags, - vtScrollBarRes, hzScrollBarRes); - } - else - setupOverflow(overflow); - - str = xml.@lineGap; - if(str) - _lineGap = parseInt(str); - - str = xml.@colGap; - if(str) - _columnGap = parseInt(str); - - str = xml.@lineItemCount; - if(str) - { - if (_layout == ListLayoutType.FlowHorizontal || _layout == ListLayoutType.Pagination) - _columnCount = parseInt(str); - else if (_layout == ListLayoutType.FlowVertical) - _lineCount = parseInt(str); - } - - str = xml.@lineItemCount2; - if(str) - _lineCount = parseInt(str); - - str = xml.@selectionMode; - if(str) - _selectionMode = ListSelectionMode.parse(str); - - str = xml.@defaultItem; - if(str) - _defaultItem = str; - - str = xml.@autoItemSize; - if (_layout == ListLayoutType.SingleRow || _layout == ListLayoutType.SingleColumn) - _autoResizeItem = str!="false"; - else - _autoResizeItem = str=="true"; - - str = xml.@renderOrder; - if(str) - { - _childrenRenderOrder = ChildrenRenderOrder.parse(str); - if(_childrenRenderOrder==ChildrenRenderOrder.Arch) - { - str = xml.@apex; - if(str) - _apexIndex = parseInt(str); - } - } - - var col:XMLList = xml.item; - for each(var cxml:XML in col) - { - var url:String = cxml.@url; - if(!url) - url = _defaultItem; - if(!url) - continue; - - var obj:GObject = getFromPool(url); - if(obj!=null) - { - addChild(obj); - str = cxml.@title; - if(str) - obj.text = str; - str = cxml.@icon; - if(str) - obj.icon = str; - str = cxml.@name; - if(str) - obj.name = str; - } - } - } - - override public function setup_afterAdd(xml:XML):void - { - super.setup_afterAdd(xml); - - var str:String; - str = xml.@selectionController; - if(str) - _selectionController = parent.getController(str); - } - } -} + { + if(_columnGap != value) + { + _columnGap = value; + setBoundsChangedFlag(); + if (_virtual) + setVirtualListChangedFlag(true); + } + } + + public function get align():int + { + return _align; + } + + public function set align(value:int):void + { + if(_align!=value) + { + _align = value; + setBoundsChangedFlag(); + if (_virtual) + setVirtualListChangedFlag(true); + } + } + + final public function get verticalAlign():int + { + return _verticalAlign; + } + + public function set verticalAlign(value:int):void + { + if(_verticalAlign!=value) + { + _verticalAlign = value; + setBoundsChangedFlag(); + if (_virtual) + setVirtualListChangedFlag(true); + } + } + + final public function get virtualItemSize():Point + { + return _itemSize; + } + + final public function set virtualItemSize(value:Point):void + { + if(_virtual) + { + if(_itemSize==null) + _itemSize = new Point(); + _itemSize.copyFrom(value); + setVirtualListChangedFlag(true); + } + } + + final public function get defaultItem():String + { + return _defaultItem; + } + + final public function set defaultItem(val:String):void + { + _defaultItem = val; + } + + final public function get autoResizeItem():Boolean + { + return _autoResizeItem; + } + + final public function set autoResizeItem(value:Boolean):void + { + if(_autoResizeItem != value) + { + _autoResizeItem = value; + setBoundsChangedFlag(); + if (_virtual) + setVirtualListChangedFlag(true); + } + } + + final public function get selectionMode():int + { + return _selectionMode; + } + + final public function set selectionMode(value:int):void + { + _selectionMode = value; + } + + final public function get selectionController():Controller + { + return _selectionController; + } + + final public function set selectionController(value:Controller):void + { + _selectionController = value; + } + + public function get itemPool():GObjectPool + { + return _pool; + } + + public function getFromPool(url:String=null):GObject + { + if(!url) + url = _defaultItem; + + var ret:GObject = _pool.getObject(url); + if(ret!=null) + ret.visible = true; + return ret; + } + + public function returnToPool(obj:GObject):void + { + _pool.returnObject(obj); + } + + override public function addChildAt(child:GObject, index:int):GObject + { + super.addChildAt(child, index); + + if(child is GButton) + { + var button:GButton = GButton(child); + button.selected = false; + button.changeStateOnClick = false; + button.useHandCursor = false; + } + child.addEventListener(GTouchEvent.CLICK, __clickItem); + child.addEventListener("rightClick", __rightClickItem); + + return child; + } + + public function addItem(url:String=null):GObject + { + if(!url) + url = _defaultItem; + + return addChild(UIPackage.createObjectFromURL(url)); + } + + public function addItemFromPool(url:String=null):GObject + { + return addChild(getFromPool(url)); + } + + override public function removeChildAt(index:int, dispose:Boolean=false):GObject + { + var child:GObject = super.removeChildAt(index, dispose); + child.removeEventListener(GTouchEvent.CLICK, __clickItem); + child.removeEventListener("rightClick", __rightClickItem); + + return child; + } + + public function removeChildToPoolAt(index:int):void + { + var child:GObject = super.removeChildAt(index); + returnToPool(child); + } + + public function removeChildToPool(child:GObject):void + { + super.removeChild(child); + returnToPool(child); + } + + public function removeChildrenToPool(beginIndex:int=0, endIndex:int=-1):void + { + if (endIndex < 0 || endIndex >= _children.length) + endIndex = _children.length - 1; + + for (var i:int=beginIndex; i<=endIndex; ++i) + removeChildToPoolAt(beginIndex); + } + + public function get selectedIndex():int + { + var i:int; + if (_virtual) + { + for (i = 0; i < _realNumItems; i++) + { + var ii:ItemInfo = _virtualItems[i]; + if ((ii.obj is GButton) && GButton(ii.obj).selected + || ii.obj == null && ii.selected) + { + if (_loop) + return i % _numItems; + else + return i; + } + } + } + else + { + var cnt:int = _children.length; + for (i = 0; i < cnt; i++) + { + var obj:GButton = _children[i].asButton; + if (obj != null && obj.selected) + return i; + } + } + + return -1; + } + + public function set selectedIndex(value:int):void + { + if (value >= 0 && value < this.numItems) + { + if(_selectionMode!=ListSelectionMode.Single) + clearSelection(); + addSelection(value); + } + else + clearSelection(); + } + + public function getSelection():Vector. + { + var ret:Vector. = new Vector.(); + var i:int; + if (_virtual) + { + for (i = 0; i < _realNumItems; i++) + { + var ii:ItemInfo = _virtualItems[i]; + if ((ii.obj is GButton) && GButton(ii.obj).selected + || ii.obj == null && ii.selected) + { + if (_loop) + { + i = i % _numItems; + if (ret.indexOf(i)!=-1) + continue; + } + ret.push(i); + } + } + } + else + { + var cnt:int = _children.length; + for (i = 0; i < cnt; i++) + { + var obj:GButton = _children[i].asButton; + if (obj != null && obj.selected) + ret.push(i); + } + } + return ret; + } + + public function addSelection(index:int, scrollItToView:Boolean=false):void + { + if(_selectionMode==ListSelectionMode.None) + return; + + checkVirtualList(); + + if(_selectionMode==ListSelectionMode.Single) + clearSelection(); + + if (scrollItToView) + scrollToView(index); + + _lastSelectedIndex = index; + var obj:GButton = null; + if (_virtual) + { + var ii:ItemInfo = _virtualItems[index]; + if (ii.obj != null) + obj = ii.obj.asButton; + ii.selected = true; + } + else + obj = getChildAt(index).asButton; + + if (obj != null && !obj.selected) + { + obj.selected = true; + updateSelectionController(index); + } + } + + public function removeSelection(index:int):void + { + if(_selectionMode==ListSelectionMode.None) + return; + + var obj:GButton = null; + if (_virtual) + { + var ii:ItemInfo = _virtualItems[index]; + if (ii.obj != null) + obj = ii.obj.asButton; + ii.selected = false; + } + else + obj = getChildAt(index).asButton; + + if (obj != null) + obj.selected = false; + } + + public function clearSelection():void + { + var i:int; + if (_virtual) + { + for (i = 0; i < _realNumItems; i++) + { + var ii:ItemInfo = _virtualItems[i]; + if (ii.obj is GButton) + GButton(ii.obj).selected = false; + ii.selected = false; + } + } + else + { + var cnt:int = _children.length; + for (i = 0; i < cnt; i++) + { + var obj:GButton = _children[i].asButton; + if (obj != null) + obj.selected = false; + } + } + } + + private function clearSelectionExcept(g:GObject):void + { + var i:int; + if (_virtual) + { + for (i = 0; i < _realNumItems; i++) + { + var ii:ItemInfo = _virtualItems[i]; + if (ii.obj != g) + { + if ((ii.obj is GButton)) + GButton(ii.obj).selected = false; + ii.selected = false; + } + } + } + else + { + var cnt:int = _children.length; + for (i = 0; i < cnt; i++) + { + var obj:GButton = _children[i].asButton; + if (obj != null && obj != g) + obj.selected = false; + } + } + } + + public function selectAll():void + { + checkVirtualList(); + + var last:int = -1; + var i:int; + if (_virtual) + { + for (i = 0; i < _realNumItems; i++) + { + var ii:ItemInfo = _virtualItems[i]; + if ((ii.obj is GButton) && !GButton(ii.obj).selected) + { + GButton(ii.obj).selected = true; + last = i; + } + ii.selected = true; + } + } + else + { + var cnt:int = _children.length; + for (i = 0; i < cnt; i++) + { + var obj:GButton = _children[i].asButton; + if (obj != null && !obj.selected) + { + obj.selected = true; + last = i; + } + } + } + + if(last!=-1) + updateSelectionController(last); + } + + public function selectNone():void + { + clearSelection(); + } + + public function selectReverse():void + { + checkVirtualList(); + + var last:int = -1; + var i:int; + if (_virtual) + { + for (i = 0; i < _realNumItems; i++) + { + var ii:ItemInfo = _virtualItems[i]; + if (ii.obj is GButton) + { + GButton(ii.obj).selected = !GButton(ii.obj).selected; + if (GButton(ii.obj).selected) + last = i; + } + ii.selected = !ii.selected; + } + } + else + { + var cnt:int = _children.length; + for (i = 0; i < cnt; i++) + { + var obj:GButton = _children[i].asButton; + if (obj != null) + { + obj.selected = !obj.selected; + if (obj.selected) + last = i; + } + } + } + + if(last!=-1) + updateSelectionController(last); + } + + public function handleArrowKey(dir:int):void + { + var index:int = this.selectedIndex; + if(index==-1) + return; + + switch(dir) + { + case 1://up + if(_layout==ListLayoutType.SingleColumn || _layout==ListLayoutType.FlowVertical) + { + index--; + if(index>=0) + { + clearSelection(); + addSelection(index, true); + } + } + else if (_layout == ListLayoutType.FlowHorizontal || _layout == ListLayoutType.Pagination) + { + var current:GObject = _children[index]; + var k:int = 0; + for(var i:int = index-1;i>=0;i--) + { + var obj:GObject = _children[i]; + if(obj.y!=current.y) + { + current = obj; + break; + } + k++; + } + for(;i>=0;i--) + { + obj = _children[i]; + if(obj.y!=current.y) + { + clearSelection(); + addSelection(i+k+1, true); + break; + } + } + } + break; + + case 3://right + if (_layout == ListLayoutType.SingleRow || _layout == ListLayoutType.FlowHorizontal || _layout == ListLayoutType.Pagination) + { + index++; + if(index<_children.length) + { + clearSelection(); + addSelection(index, true); + } + } + else if(_layout==ListLayoutType.FlowVertical) + { + current = _children[index]; + k = 0; + var cnt:int = _children.length; + for(i = index+1;i=0) + { + clearSelection(); + addSelection(index, true); + } + } + else if(_layout==ListLayoutType.FlowVertical) + { + current = _children[index]; + k = 0; + for(i = index-1;i>=0;i--) + { + obj = _children[i]; + if(obj.x!=current.x) + { + current = obj; + break; + } + k++; + } + for(;i>=0;i--) + { + obj = _children[i]; + if(obj.x!=current.x) + { + clearSelection(); + addSelection(i+k+1, true); + break; + } + } + } + break; + } + } + + public function getItemNear(globalX:Number, globalY:Number):GObject + { + ensureBoundsCorrect(); + + var objs:Array = root.nativeStage.getObjectsUnderPoint(new Point(globalX, globalY)); + if(!objs || objs.length==0) + return null; + + for each(var obj:DisplayObject in objs) + { + while (obj != null && !(obj is Stage)) + { + if (obj is UIDisplayObject) + { + var gobj:GObject = UIDisplayObject(obj).owner; + while(gobj!=null && gobj.parent!=this) + gobj = gobj.parent; + + if(gobj!=null) + return gobj; + } + + obj = obj.parent; + } + } + return null; + } + + private function __clickItem(evt:GTouchEvent):void + { + if (this._scrollPane != null && this._scrollPane.isDragged) + return; + + var item:GObject = GObject(evt.currentTarget); + setSelectionOnEvent(item); + + if (scrollPane != null && scrollItemToViewOnClick) + scrollPane.scrollToView(item, true); + + var ie:ItemEvent = new ItemEvent(ItemEvent.CLICK, item); + ie.stageX = evt.stageX; + ie.stageY = evt.stageY; + ie.clickCount = evt.clickCount; + this.dispatchEvent(ie); + } + + private function __rightClickItem(evt:MouseEvent):void + { + var item:GObject = GObject(evt.currentTarget); + if((item is GButton) && !GButton(item).selected) + setSelectionOnEvent(item); + + if (scrollPane != null && scrollItemToViewOnClick) + scrollPane.scrollToView(item, true); + + var ie:ItemEvent = new ItemEvent(ItemEvent.CLICK, item); + ie.stageX = evt.stageX; + ie.stageY = evt.stageY; + ie.rightButton = true; + this.dispatchEvent(ie); + } + + private function setSelectionOnEvent(item:GObject):void + { + if(!(item is GButton) || _selectionMode==ListSelectionMode.None) + return; + + var dontChangeLastIndex:Boolean = false; + var button:GButton = GButton(item); + var index:int = childIndexToItemIndex(getChildIndex(item)); + + if(_selectionMode==ListSelectionMode.Single) + { + if(!button.selected) + { + clearSelectionExcept(button); + button.selected = true; + } + } + else + { + var r:GRoot = this.root; + if(r.shiftKeyDown) + { + if(!button.selected) + { + if(_lastSelectedIndex!=-1) + { + var min:int = Math.min(_lastSelectedIndex, index); + var max:int = Math.max(_lastSelectedIndex, index); + max = Math.min(max, this.numItems-1); + var i:int; + if (_virtual) + { + for (i = min; i <= max; i++) + { + var ii:ItemInfo = _virtualItems[i]; + if (ii.obj is GButton) + GButton(ii.obj).selected = true; + ii.selected = true; + } + } + else + { + for(i=min;i<=max;i++) + { + var obj:GButton = getChildAt(i).asButton; + if(obj!=null) + obj.selected = true; + } + } + + dontChangeLastIndex = true; + } + else + { + button.selected = true; + } + } + } + else if(r.ctrlKeyDown || _selectionMode==ListSelectionMode.Multiple_SingleClick) + { + button.selected = !button.selected; + } + else + { + if(!button.selected) + { + clearSelectionExcept(button); + button.selected = true; + } + else + clearSelectionExcept(button); + } + } + + if(!dontChangeLastIndex) + _lastSelectedIndex = index; + + if(button.selected) + updateSelectionController(index); + } + + public function resizeToFit(itemCount:int=int.MAX_VALUE, minSize:int=0):void + { + ensureBoundsCorrect(); + + var curCount:int = this.numItems; + if(itemCount>curCount) + itemCount = curCount; + + if (_virtual) + { + var lineCount:int = Math.ceil(itemCount / _curLineItemCount); + if (_layout == ListLayoutType.SingleColumn || _layout == ListLayoutType.FlowHorizontal) + this.viewHeight = lineCount * _itemSize.y + Math.max(0, lineCount - 1) * _lineGap; + else + this.viewWidth = lineCount * _itemSize.x + Math.max(0, lineCount - 1) * _columnGap; + } + else if (itemCount == 0) + { + if (_layout == ListLayoutType.SingleColumn || _layout == ListLayoutType.FlowHorizontal) + this.viewHeight = minSize; + else + this.viewWidth = minSize; + } + else + { + var i:int = itemCount - 1; + var obj:GObject = null; + while (i >= 0) + { + obj = this.getChildAt(i); + if (!foldInvisibleItems || obj.visible) + break; + i--; + } + if (i < 0) + { + if (_layout==ListLayoutType.SingleColumn || _layout==ListLayoutType.FlowHorizontal) + this.viewHeight = minSize; + else + this.viewWidth = minSize; + } + else + { + var size:int; + if(_layout==ListLayoutType.SingleColumn || _layout==ListLayoutType.FlowHorizontal) + { + size = obj.y + obj.height; + if (size < minSize) + size = minSize; + this.viewHeight = size; + } + else + { + size = obj.x + obj.width; + if (size < minSize) + size = minSize; + this.viewWidth = size; + } + } + } + } + + public function getMaxItemWidth():int + { + var cnt:int = _children.length; + var max:int = 0; + for(var i:int=0;imax) + max = child.width; + } + return max; + } + + override protected function handleSizeChanged():void + { + super.handleSizeChanged(); + + setBoundsChangedFlag(); + if (_virtual) + setVirtualListChangedFlag(true); + } + + override public function handleControllerChanged(c:Controller):void + { + super.handleControllerChanged(c); + + if (_selectionController == c) + this.selectedIndex = c.selectedIndex; + } + + private function updateSelectionController(index:int):void + { + if (_selectionController != null && !_selectionController.changing + && index < _selectionController.pageCount) + { + var c:Controller = _selectionController; + _selectionController = null; + c.selectedIndex = index; + _selectionController = c; + } + } + + override public function getSnappingPosition(xValue:Number, yValue:Number, resultPoint:Point=null):Point + { + if (_virtual) + { + if(!resultPoint) + resultPoint = new Point(); + + var saved:Number; + var index:int; + if (_layout == ListLayoutType.SingleColumn || _layout == ListLayoutType.FlowHorizontal) + { + saved = yValue; + GList.pos_param = yValue; + index = getIndexOnPos1(false); + yValue = GList.pos_param; + if (index < _virtualItems.length && saved - yValue > _virtualItems[index].height / 2 && index < _realNumItems) + yValue += _virtualItems[index].height + _lineGap; + } + else if (_layout == ListLayoutType.SingleRow || _layout == ListLayoutType.FlowVertical) + { + saved = xValue; + GList.pos_param = xValue; + index = getIndexOnPos2(false); + xValue = GList.pos_param; + if (index < _virtualItems.length && saved - xValue > _virtualItems[index].width / 2 && index < _realNumItems) + xValue += _virtualItems[index].width + _columnGap; + } + else + { + saved = xValue; + GList.pos_param = xValue; + index = getIndexOnPos3(false); + xValue = GList.pos_param; + if (index < _virtualItems.length && saved - xValue > _virtualItems[index].width / 2 && index < _realNumItems) + xValue += _virtualItems[index].width + _columnGap; + } + + resultPoint.x = xValue; + resultPoint.y = yValue; + return resultPoint; + } + else + return super.getSnappingPosition(xValue, yValue, resultPoint); + } + + public function scrollToView(index:int, ani:Boolean=false, setFirst:Boolean=false):void + { + if (_virtual) + { + if(_numItems==0) + return; + + checkVirtualList(); + + if (index >= _virtualItems.length) + throw new Error("Invalid child index: " + index + ">" + _virtualItems.length); + + if(_loop) + index = Math.floor(_firstIndex/_numItems)*_numItems+index; + + var rect:Rectangle; + var ii:ItemInfo = _virtualItems[index]; + var pos:Number = 0; + var i:int; + if (_layout == ListLayoutType.SingleColumn || _layout == ListLayoutType.FlowHorizontal) + { + for (i = 0; i < index; i += _curLineItemCount) + pos += _virtualItems[i].height + _lineGap; + rect = new Rectangle(0, pos, _itemSize.x, ii.height); + } + else if (_layout == ListLayoutType.SingleRow || _layout == ListLayoutType.FlowVertical) + { + for (i = 0; i < index; i += _curLineItemCount) + pos += _virtualItems[i].width + _columnGap; + rect = new Rectangle(pos, 0, ii.width, _itemSize.y); + } + else + { + var page:int = index / (_curLineItemCount * _curLineItemCount2); + rect = new Rectangle(page * viewWidth + (index % _curLineItemCount) * (ii.width + _columnGap), + (index / _curLineItemCount) % _curLineItemCount2 * (ii.height + _lineGap), + ii.width, ii.height); + } + + setFirst = true;//因为在可变item大小的情况下,只有设置在最顶端,位置才不会因为高度变化而改变,所以只能支持setFirst=true + if (_scrollPane != null) + scrollPane.scrollToView(rect, ani, setFirst); + } + else + { + var obj:GObject = getChildAt(index); + if (_scrollPane != null) + scrollPane.scrollToView(obj, ani, setFirst); + else if (parent != null && parent.scrollPane != null) + parent.scrollPane.scrollToView(obj, ani, setFirst); + } + } + + override public function getFirstChildInView():int + { + return childIndexToItemIndex(super.getFirstChildInView()); + } + + public function childIndexToItemIndex(index:int):int + { + if (!_virtual) + return index; + + if (_layout == ListLayoutType.Pagination) + { + for (var i:int = _firstIndex; i < _realNumItems; i++) + { + if (_virtualItems[i].obj != null) + { + index--; + if (index < 0) + return i; + } + } + + return index; + } + else + { + index += _firstIndex; + if (_loop && _numItems > 0) + index = index % _numItems; + + return index; + } + } + + public function itemIndexToChildIndex(index:int):int + { + if (!_virtual) + return index; + + if (_layout == ListLayoutType.Pagination) + { + return getChildIndex(_virtualItems[index].obj); + } + else + { + if (_loop && _numItems > 0) + { + var j:int = _firstIndex % _numItems; + if (index >= j) + index = _firstIndex + (index - j); + else + index = _firstIndex + _numItems + (j - index); + } + else + index -= _firstIndex; + + return index; + } + } + + public function setVirtual():void + { + _setVirtual(false); + } + + /// + /// Set the list to be virtual list, and has loop behavior. + /// + public function setVirtualAndLoop():void + { + _setVirtual(true); + } + + /// + /// Set the list to be virtual list. + /// + private function _setVirtual(loop:Boolean):void + { + if (!_virtual) + { + if (_scrollPane == null) + throw new Error("FairyGUI: Virtual list must be scrollable!"); + + if (loop) + { + if (_layout == ListLayoutType.FlowHorizontal || _layout == ListLayoutType.FlowVertical) + throw new Error("FairyGUI: Loop list is not supported for FlowHorizontal or FlowVertical layout!"); + + _scrollPane.bouncebackEffect = false; + } + + _virtual = true; + _loop = loop; + _virtualItems = new Vector.(); + removeChildrenToPool(); + + if(_itemSize==null) + { + _itemSize = new Point(); + var obj:GObject = getFromPool(null); + if (obj == null) + { + throw new Error("FairyGUI: Virtual List must have a default list item resource."); + _itemSize.x = 100; + _itemSize.y = 100; + } + else + { + _itemSize.x = obj.width; + _itemSize.y = obj.height; + returnToPool(obj); + } + } + + if (_layout == ListLayoutType.SingleColumn || _layout == ListLayoutType.FlowHorizontal) + _scrollPane.scrollSpeed = _itemSize.y; + else + _scrollPane.scrollSpeed = _itemSize.x; + + _scrollPane.addEventListener(Event.SCROLL, __scrolled); + setVirtualListChangedFlag(true); + } + } + + /// + /// Set the list item count. + /// If the list is not virtual, specified number of items will be created. + /// If the list is virtual, only items in view will be created. + /// + public function get numItems():int + { + if (_virtual) + return _numItems; + else + return _children.length; + } + + public function set numItems(value:int):void + { + var i:int; + + if (_virtual) + { + if (itemRenderer == null) + throw new Error("FairyGUI: Set itemRenderer first!"); + + _numItems = value; + if (_loop) + _realNumItems = _numItems * 5;//设置5倍数量,用于循环滚动 + else + _realNumItems = _numItems; + + //_virtualItems的设计是只增不减的 + var oldCount:int = _virtualItems.length; + if (_realNumItems > oldCount) + { + for (i = oldCount; i < _realNumItems; i++) + { + var ii:ItemInfo = new ItemInfo(); + ii.width = _itemSize.x; + ii.height = _itemSize.y; + + _virtualItems.push(ii); + } + } + else + { + for (i = _realNumItems; i < oldCount; i++) + _virtualItems[i].selected = false; + } + + if (this._virtualListChanged != 0) + GTimers.inst.remove(_refreshVirtualList); + + //立即刷新 + _refreshVirtualList(); + } + else + { + var cnt:int = _children.length; + if (value > cnt) + { + for (i = cnt; i < value; i++) + { + if (itemProvider == null) + addItemFromPool(); + else + addItemFromPool(itemProvider(i)); + } + } + else + { + removeChildrenToPool(value, cnt); + } + + if (itemRenderer != null) + { + for (i = 0; i < value; i++) + itemRenderer(i, getChildAt(i)); + } + } + } + + public function refreshVirtualList():void + { + setVirtualListChangedFlag(false); + } + + private function checkVirtualList():void + { + if(this._virtualListChanged!=0) { + this._refreshVirtualList(); + GTimers.inst.remove(_refreshVirtualList); + } + } + + private function setVirtualListChangedFlag(layoutChanged:Boolean=false):void + { + if (layoutChanged) + _virtualListChanged = 2; + else if (_virtualListChanged == 0) + _virtualListChanged = 1; + + GTimers.inst.callLater(_refreshVirtualList); + } + + private function _refreshVirtualList():void + { + var layoutChanged:Boolean = _virtualListChanged == 2; + _virtualListChanged = 0; + _eventLocked = true; + + if (layoutChanged) + { + if (_layout == ListLayoutType.SingleColumn || _layout == ListLayoutType.SingleRow) + _curLineItemCount = 1; + else if (_layout == ListLayoutType.FlowHorizontal) + { + if (_columnCount > 0) + _curLineItemCount = _columnCount; + else + { + _curLineItemCount = Math.floor((_scrollPane.viewWidth + _columnGap) / (_itemSize.x + _columnGap)); + if (_curLineItemCount <= 0) + _curLineItemCount = 1; + } + } + else if (_layout == ListLayoutType.FlowVertical) + { + if (_lineCount > 0) + _curLineItemCount = _lineCount; + else + { + _curLineItemCount = Math.floor((_scrollPane.viewHeight + _lineGap) / (_itemSize.y + _lineGap)); + if (_curLineItemCount <= 0) + _curLineItemCount = 1; + } + } + else //pagination + { + if (_columnCount > 0) + _curLineItemCount = _columnCount; + else + { + _curLineItemCount = Math.floor((_scrollPane.viewWidth + _columnGap) / (_itemSize.x + _columnGap)); + if (_curLineItemCount <= 0) + _curLineItemCount = 1; + } + + if (_lineCount > 0) + _curLineItemCount2 = _lineCount; + else + { + _curLineItemCount2 = Math.floor((_scrollPane.viewHeight + _lineGap) / (_itemSize.y + _lineGap)); + if (_curLineItemCount2 <= 0) + _curLineItemCount2 = 1; + } + } + } + + var ch:Number = 0, cw:Number = 0; + if (_realNumItems > 0) + { + var i:int; + var len:int = Math.ceil(_realNumItems / _curLineItemCount) * _curLineItemCount; + var len2:int = Math.min(_curLineItemCount, _realNumItems); + if (_layout == ListLayoutType.SingleColumn || _layout == ListLayoutType.FlowHorizontal) + { + for (i = 0; i < len; i += _curLineItemCount) + ch += _virtualItems[i].height + _lineGap; + if (ch > 0) + ch -= _lineGap; + + if (_autoResizeItem) + cw = scrollPane.viewWidth; + else + { + for (i = 0; i < len2; i++) + cw += _virtualItems[i].width + _columnGap; + if (cw > 0) + cw -= _columnGap; + } + } + else if (_layout == ListLayoutType.SingleRow || _layout == ListLayoutType.FlowVertical) + { + for (i = 0; i < len; i += _curLineItemCount) + cw += _virtualItems[i].width + _columnGap; + if (cw > 0) + cw -= _columnGap; + + if (_autoResizeItem) + ch = this.scrollPane.viewHeight; + else + { + for (i = 0; i < len2; i++) + ch += _virtualItems[i].height + _lineGap; + if (ch > 0) + ch -= _lineGap; + } + } + else + { + var pageCount:int = Math.ceil(len / (_curLineItemCount * _curLineItemCount2)); + cw = pageCount * viewWidth; + ch = viewHeight; + } + } + + handleAlign(cw, ch); + _scrollPane.setContentSize(cw, ch); + + _eventLocked = false; + + handleScroll(true); + } + + private function __scrolled(evt:Event):void + { + handleScroll(false); + } + + private function getIndexOnPos1(forceUpdate:Boolean):int + { + if (_realNumItems < _curLineItemCount) + { + pos_param = 0; + return 0; + } + + var i:int; + var pos2:Number; + var pos3:Number; + + if (numChildren > 0 && !forceUpdate) + { + pos2 = this.getChildAt(0).y; + if (pos2 > pos_param) + { + for (i = _firstIndex - _curLineItemCount; i >= 0; i -= _curLineItemCount) + { + pos2 -= (_virtualItems[i].height + _lineGap); + if (pos2 <= pos_param) + { + pos_param = pos2; + return i; + } + } + + pos_param = 0; + return 0; + } + else + { + for (i = _firstIndex; i < _realNumItems; i += _curLineItemCount) + { + pos3 = pos2 + _virtualItems[i].height + _lineGap; + if (pos3 > pos_param) + { + pos_param = pos2; + return i; + } + pos2 = pos3; + } + + pos_param = pos2; + return _realNumItems - _curLineItemCount; + } + } + else + { + pos2 = 0; + for (i = 0; i < _realNumItems; i += _curLineItemCount) + { + pos3 = pos2 + _virtualItems[i].height + _lineGap; + if (pos3 > pos_param) + { + pos_param = pos2; + return i; + } + pos2 = pos3; + } + + pos_param = pos2; + return _realNumItems - _curLineItemCount; + } + } + + private function getIndexOnPos2(forceUpdate:Boolean):int + { + if (_realNumItems < _curLineItemCount) + { + pos_param = 0; + return 0; + } + + var i:int; + var pos2:Number; + var pos3:Number; + + if (numChildren > 0 && !forceUpdate) + { + pos2 = this.getChildAt(0).x; + if (pos2 > pos_param) + { + for (i = _firstIndex - _curLineItemCount; i >= 0; i -= _curLineItemCount) + { + pos2 -= (_virtualItems[i].width + _columnGap); + if (pos2 <= pos_param) + { + pos_param = pos2; + return i; + } + } + + pos_param = 0; + return 0; + } + else + { + for (i = _firstIndex; i < _realNumItems; i += _curLineItemCount) + { + pos3 = pos2 + _virtualItems[i].width + _columnGap; + if (pos3 > pos_param) + { + pos_param = pos2; + return i; + } + pos2 = pos3; + } + + pos_param = pos2; + return _realNumItems - _curLineItemCount; + } + } + else + { + pos2 = 0; + for (i = 0; i < _realNumItems; i += _curLineItemCount) + { + pos3 = pos2 + _virtualItems[i].width + _columnGap; + if (pos3 > pos_param) + { + pos_param = pos2; + return i; + } + pos2 = pos3; + } + + pos_param = pos2; + return _realNumItems - _curLineItemCount; + } + } + + private function getIndexOnPos3(forceUpdate:Boolean):int + { + if (_realNumItems < _curLineItemCount) + { + pos_param = 0; + return 0; + } + + var viewWidth:Number = this.viewWidth; + var page:int = Math.floor(pos_param / viewWidth); + var startIndex:int = page * (_curLineItemCount * _curLineItemCount2); + var pos2:Number = page * viewWidth; + var i:int; + var pos3:Number; + for (i = 0; i < _curLineItemCount; i++) + { + pos3 = pos2 + _virtualItems[startIndex + i].width + _columnGap; + if (pos3 > pos_param) + { + pos_param = pos2; + return startIndex + i; + } + pos2 = pos3; + } + + pos_param = pos2; + return startIndex + _curLineItemCount - 1; + } + + private function handleScroll(forceUpdate:Boolean):void + { + if (_eventLocked) + return; + + var pos:Number; + var roundSize:int; + + if (_layout == ListLayoutType.SingleColumn || _layout == ListLayoutType.FlowHorizontal) + { + if (_loop) + { + pos = scrollPane.scrollingPosY; + //循环列表的核心实现,滚动到头尾时重新定位 + roundSize = _numItems * (_itemSize.y + _lineGap); + if (pos == 0) + scrollPane.posY = roundSize; + else if (pos == scrollPane.contentHeight - scrollPane.viewHeight) + scrollPane.posY = scrollPane.contentHeight - roundSize - this.viewHeight; + } + + handleScroll1(forceUpdate); + handleArchOrder1(); + } + else if (_layout == ListLayoutType.SingleRow || _layout == ListLayoutType.FlowVertical) + { + if (_loop) + { + pos = scrollPane.scrollingPosX; + //循环列表的核心实现,滚动到头尾时重新定位 + roundSize = _numItems * (_itemSize.x + _columnGap); + if (pos == 0) + scrollPane.posX = roundSize; + else if (pos == scrollPane.contentWidth - scrollPane.viewWidth) + scrollPane.posX = scrollPane.contentWidth - roundSize - this.viewWidth; + } + + handleScroll2(forceUpdate); + handleArchOrder2(); + } + else + { + if (_loop) + { + pos = scrollPane.scrollingPosX; + //循环列表的核心实现,滚动到头尾时重新定位 + roundSize = (int)(_numItems / (_curLineItemCount * _curLineItemCount2)) * viewWidth; + if (pos == 0) + scrollPane.posX = roundSize; + else if (pos == scrollPane.contentWidth - scrollPane.viewWidth) + scrollPane.posX = scrollPane.contentWidth - roundSize - this.viewWidth; + } + + handleScroll3(forceUpdate); + } + + _boundsChanged = false; + } + + private static var itemInfoVer:uint = 0; //用来标志item是否在本次处理中已经被重用了 + private static var enterCounter:uint = 0; //因为HandleScroll是会重入的,这个用来避免极端情况下的死锁 + private static var pos_param:Number; + + private function handleScroll1(forceUpdate:Boolean):void + { + enterCounter++; + if (enterCounter > 3) + return; + + var pos:Number = scrollPane.scrollingPosY; + var max:Number = pos + scrollPane.viewHeight; + var end:Boolean = max == scrollPane.contentHeight;//这个标志表示当前需要滚动到最末,无论内容变化大小 + + //寻找当前位置的第一条项目 + GList.pos_param = pos; + var newFirstIndex:int = getIndexOnPos1(forceUpdate); + pos = GList.pos_param; + if (newFirstIndex == _firstIndex && !forceUpdate) + { + enterCounter--; + return; + } + + var oldFirstIndex:int = _firstIndex; + _firstIndex = newFirstIndex; + var curIndex:int = newFirstIndex; + var forward:Boolean = oldFirstIndex > newFirstIndex; + var oldCount:int = this.numChildren; + var lastIndex:int = oldFirstIndex + oldCount - 1; + var reuseIndex:int = forward ? lastIndex : oldFirstIndex; + var curX:Number = 0, curY:Number = pos; + var needRender:Boolean; + var deltaSize:Number = 0; + var firstItemDeltaSize:Number = 0; + var url:String = defaultItem; + var ii:ItemInfo, ii2:ItemInfo; + var i:int,j:int; + var partSize:int = (scrollPane.viewWidth - _columnGap * (_curLineItemCount - 1)) / _curLineItemCount; + + itemInfoVer++; + + while (curIndex < _realNumItems && (end || curY < max)) + { + ii = _virtualItems[curIndex]; + + if (ii.obj == null || forceUpdate) + { + if (itemProvider != null) + { + url = itemProvider(curIndex % _numItems); + if (url == null) + url = _defaultItem; + url = UIPackage.normalizeURL(url); + } + + if (ii.obj != null && ii.obj.resourceURL != url) + { + if (ii.obj is GButton) + ii.selected = GButton(ii.obj).selected; + removeChildToPool(ii.obj); + ii.obj = null; + } + } + + if (ii.obj == null) + { + //搜索最适合的重用item,保证每次刷新需要新建或者重新render的item最少 + if (forward) + { + for (j = reuseIndex; j >= oldFirstIndex; j--) + { + ii2 = _virtualItems[j]; + if (ii2.obj != null && ii2.updateFlag != itemInfoVer && ii2.obj.resourceURL == url) + { + if (ii2.obj is GButton) + ii2.selected = GButton(ii2.obj).selected; + ii.obj = ii2.obj; + ii2.obj = null; + if (j == reuseIndex) + reuseIndex--; + break; + } + } + } + else + { + for (j = reuseIndex; j <= lastIndex; j++) + { + ii2 = _virtualItems[j]; + if (ii2.obj != null && ii2.updateFlag != itemInfoVer && ii2.obj.resourceURL == url) + { + if (ii2.obj is GButton) + ii2.selected = GButton(ii2.obj).selected; + ii.obj = ii2.obj; + ii2.obj = null; + if (j == reuseIndex) + reuseIndex++; + break; + } + } + } + + if (ii.obj != null) + { + setChildIndex(ii.obj, forward ? curIndex - newFirstIndex : numChildren); + } + else + { + ii.obj = _pool.getObject(url); + if (forward) + this.addChildAt(ii.obj, curIndex - newFirstIndex); + else + this.addChild(ii.obj); + } + if (ii.obj is GButton) + GButton(ii.obj).selected = ii.selected; + + needRender = true; + } + else + needRender = forceUpdate; + + if (needRender) + { + if (_autoResizeItem && (_layout == ListLayoutType.SingleColumn || _columnCount > 0)) + ii.obj.setSize(partSize, ii.obj.height, true); + + itemRenderer(curIndex % _numItems, ii.obj); + if (curIndex % _curLineItemCount == 0) + { + deltaSize += Math.ceil(ii.obj.height) - ii.height; + if (curIndex == newFirstIndex && oldFirstIndex > newFirstIndex) + { + //当内容向下滚动时,如果新出现的项目大小发生变化,需要做一个位置补偿,才不会导致滚动跳动 + firstItemDeltaSize = Math.ceil(ii.obj.height) - ii.height; + } + } + ii.width = Math.ceil(ii.obj.width); + ii.height = Math.ceil(ii.obj.height); + } + + ii.updateFlag = itemInfoVer; + ii.obj.setXY(curX, curY); + if (curIndex == newFirstIndex) //要显示多一条才不会穿帮 + max += ii.height; + + curX += ii.width + _columnGap; + + if (curIndex % _curLineItemCount == _curLineItemCount - 1) + { + curX = 0; + curY += ii.height + _lineGap; + } + curIndex++; + } + + for (i = 0; i < oldCount; i++) + { + ii = _virtualItems[oldFirstIndex + i]; + if (ii.updateFlag != itemInfoVer && ii.obj != null) + { + if (ii.obj is GButton) + ii.selected = GButton(ii.obj).selected; + removeChildToPool(ii.obj); + ii.obj = null; + } + } + + if (deltaSize != 0 || firstItemDeltaSize != 0) + _scrollPane.changeContentSizeOnScrolling(0, deltaSize, 0, firstItemDeltaSize); + + if (curIndex > 0 && this.numChildren > 0 && _container.y < 0 && getChildAt(0).y > -_container.y)//最后一页没填满! + handleScroll1(false); + + enterCounter--; + } + + private function handleScroll2(forceUpdate:Boolean):void + { + enterCounter++; + if (enterCounter > 3) + return; + + var pos:Number = scrollPane.scrollingPosX; + var max:Number = pos + scrollPane.viewWidth; + var end:Boolean = pos == scrollPane.contentWidth;//这个标志表示当前需要滚动到最末,无论内容变化大小 + + //寻找当前位置的第一条项目 + GList.pos_param = pos; + var newFirstIndex:int = getIndexOnPos2(forceUpdate); + pos = GList.pos_param; + if (newFirstIndex == _firstIndex && !forceUpdate) + { + enterCounter--; + return; + } + + var oldFirstIndex:int = _firstIndex; + _firstIndex = newFirstIndex; + var curIndex:int = newFirstIndex; + var forward:Boolean = oldFirstIndex > newFirstIndex; + var oldCount:int = this.numChildren; + var lastIndex:int = oldFirstIndex + oldCount - 1; + var reuseIndex:int = forward ? lastIndex : oldFirstIndex; + var curX:Number = pos, curY:Number = 0; + var needRender:Boolean; + var deltaSize:Number = 0; + var firstItemDeltaSize:Number = 0; + var url:String = defaultItem; + var ii:ItemInfo, ii2:ItemInfo; + var i:int,j:int; + var partSize:int = (scrollPane.viewHeight - _lineGap * (_curLineItemCount - 1)) / _curLineItemCount; + + itemInfoVer++; + + while (curIndex < _realNumItems && (end || curX < max)) + { + ii = _virtualItems[curIndex]; + + if (ii.obj == null || forceUpdate) + { + if (itemProvider != null) + { + url = itemProvider(curIndex % _numItems); + if (url == null) + url = _defaultItem; + url = UIPackage.normalizeURL(url); + } + + if (ii.obj != null && ii.obj.resourceURL != url) + { + if (ii.obj is GButton) + ii.selected = GButton(ii.obj).selected; + removeChildToPool(ii.obj); + ii.obj = null; + } + } + + if (ii.obj == null) + { + if (forward) + { + for (j = reuseIndex; j >= oldFirstIndex; j--) + { + ii2 = _virtualItems[j]; + if (ii2.obj != null && ii2.updateFlag != itemInfoVer && ii2.obj.resourceURL == url) + { + if (ii2.obj is GButton) + ii2.selected = GButton(ii2.obj).selected; + ii.obj = ii2.obj; + ii2.obj = null; + if (j == reuseIndex) + reuseIndex--; + break; + } + } + } + else + { + for (j = reuseIndex; j <= lastIndex; j++) + { + ii2 = _virtualItems[j]; + if (ii2.obj != null && ii2.updateFlag != itemInfoVer && ii2.obj.resourceURL == url) + { + if (ii2.obj is GButton) + ii2.selected = GButton(ii2.obj).selected; + ii.obj = ii2.obj; + ii2.obj = null; + if (j == reuseIndex) + reuseIndex++; + break; + } + } + } + + if (ii.obj != null) + { + setChildIndex(ii.obj, forward ? curIndex - newFirstIndex : numChildren); + } + else + { + ii.obj = _pool.getObject(url); + if (forward) + this.addChildAt(ii.obj, curIndex - newFirstIndex); + else + this.addChild(ii.obj); + } + if (ii.obj is GButton) + GButton(ii.obj).selected = ii.selected; + + needRender = true; + } + else + needRender = forceUpdate; + + if (needRender) + { + if (_autoResizeItem && (_layout == ListLayoutType.SingleRow || _lineCount > 0)) + ii.obj.setSize(ii.obj.width, partSize, true); + + itemRenderer(curIndex % _numItems, ii.obj); + if (curIndex % _curLineItemCount == 0) + { + deltaSize += Math.ceil(ii.obj.width) - ii.width; + if (curIndex == newFirstIndex && oldFirstIndex > newFirstIndex) + { + //当内容向下滚动时,如果新出现的一个项目大小发生变化,需要做一个位置补偿,才不会导致滚动跳动 + firstItemDeltaSize = Math.ceil(ii.obj.width) - ii.width; + } + } + ii.width = Math.ceil(ii.obj.width); + ii.height = Math.ceil(ii.obj.height); + } + + ii.updateFlag = itemInfoVer; + ii.obj.setXY(curX, curY); + if (curIndex == newFirstIndex) //要显示多一条才不会穿帮 + max += ii.width; + + curY += ii.height + _lineGap; + + if (curIndex % _curLineItemCount == _curLineItemCount - 1) + { + curY = 0; + curX += ii.width + _columnGap; + } + curIndex++; + } + + for (i = 0; i < oldCount; i++) + { + ii = _virtualItems[oldFirstIndex + i]; + if (ii.updateFlag != itemInfoVer && ii.obj != null) + { + if (ii.obj is GButton) + ii.selected = GButton(ii.obj).selected; + removeChildToPool(ii.obj); + ii.obj = null; + } + } + + if (deltaSize != 0 || firstItemDeltaSize != 0) + _scrollPane.changeContentSizeOnScrolling(deltaSize, 0, firstItemDeltaSize, 0); + + if (curIndex > 0 && this.numChildren > 0 && _container.x < 0 && getChildAt(0).x > - _container.x)//最后一页没填满! + handleScroll2(false); + + enterCounter--; + } + + private function handleScroll3(forceUpdate:Boolean):void + { + var pos:Number = scrollPane.scrollingPosX; + + //寻找当前位置的第一条项目 + GList.pos_param = pos; + var newFirstIndex:int = getIndexOnPos3(forceUpdate); + pos = GList.pos_param; + if (newFirstIndex == _firstIndex && !forceUpdate) + return; + + var oldFirstIndex:int = _firstIndex; + _firstIndex = newFirstIndex; + + //分页模式不支持不等高,所以渲染满一页就好了 + + var reuseIndex:int = oldFirstIndex; + var virtualItemCount:int = _virtualItems.length; + var pageSize:int = _curLineItemCount * _curLineItemCount2; + var startCol:int = newFirstIndex % _curLineItemCount; + var viewWidth:Number = this.viewWidth; + var page:int = int(newFirstIndex / pageSize); + var startIndex:int = page * pageSize; + var lastIndex:int = startIndex + pageSize * 2; //测试两页 + var needRender:Boolean; + var i:int; + var ii:ItemInfo, ii2:ItemInfo; + var col:int; + var url:String = _defaultItem; + var partWidth:int = (scrollPane.viewWidth - _columnGap * (_curLineItemCount - 1)) / _curLineItemCount; + var partHeight:int = (scrollPane.viewHeight - _lineGap * (_curLineItemCount2 - 1)) / _curLineItemCount2; + + itemInfoVer++; + + //先标记这次要用到的项目 + for (i = startIndex; i < lastIndex; i++) + { + if (i >= _realNumItems) + continue; + + col = i % _curLineItemCount; + if (i - startIndex < pageSize) + { + if (col < startCol) + continue; + } + else + { + if (col > startCol) + continue; + } + + ii = _virtualItems[i]; + ii.updateFlag = itemInfoVer; + } + + var lastObj:GObject = null; + var insertIndex:int = 0; + for (i = startIndex; i < lastIndex; i++) + { + if (i >= _realNumItems) + continue; + + ii = _virtualItems[i]; + if (ii.updateFlag != itemInfoVer) + continue; + + if (ii.obj == null) + { + //寻找看有没有可重用的 + while (reuseIndex < virtualItemCount) + { + ii2 = _virtualItems[reuseIndex]; + if (ii2.obj != null && ii2.updateFlag != itemInfoVer) + { + if (ii2.obj is GButton) + ii2.selected = GButton(ii2.obj).selected; + ii.obj = ii2.obj; + ii2.obj = null; + break; + } + reuseIndex++; + } + + if (insertIndex == -1) + insertIndex = getChildIndex(lastObj) + 1; + + if (ii.obj == null) + { + if (itemProvider != null) + { + url = itemProvider(i % _numItems); + if (url == null) + url = _defaultItem; + url = UIPackage.normalizeURL(url); + } + + ii.obj = _pool.getObject(url); + this.addChildAt(ii.obj, insertIndex); + } + else + { + insertIndex = setChildIndexBefore(ii.obj, insertIndex); + } + insertIndex++; + + if (ii.obj is GButton) + GButton(ii.obj).selected = ii.selected; + + needRender = true; + } + else + { + needRender = forceUpdate; + insertIndex = -1; + lastObj = ii.obj; + } + + if (needRender) + { + if (_autoResizeItem) + { + if (_curLineItemCount == _columnCount && _curLineItemCount2 == _lineCount) + ii.obj.setSize(partWidth, partHeight, true); + else if (_curLineItemCount == _columnCount) + ii.obj.setSize(partWidth, ii.obj.height, true); + else if (_curLineItemCount2 == _lineCount) + ii.obj.setSize(ii.obj.width, partHeight, true); + } + + itemRenderer(i % _numItems, ii.obj); + ii.width = Math.ceil(ii.obj.width); + ii.height = Math.ceil(ii.obj.height); + } + } + + //排列item + var borderX:int = (startIndex / pageSize) * viewWidth; + var xx:int = borderX; + var yy:int = 0; + var lineHeight:int = 0; + for (i = startIndex; i < lastIndex; i++) + { + if (i >= _realNumItems) + continue; + + ii = _virtualItems[i]; + if (ii.updateFlag == itemInfoVer) + ii.obj.setXY(xx, yy); + + if (ii.height > lineHeight) + lineHeight = ii.height; + if (i % _curLineItemCount == _curLineItemCount - 1) + { + xx = borderX; + yy += lineHeight + _lineGap; + lineHeight = 0; + + if (i == startIndex + pageSize - 1) + { + borderX += viewWidth; + xx = borderX; + yy = 0; + } + } + else + xx += ii.width + _columnGap; + } + + //释放未使用的 + for (i = reuseIndex; i < virtualItemCount; i++) + { + ii = _virtualItems[i]; + if (ii.updateFlag != itemInfoVer && ii.obj != null) + { + if (ii.obj is GButton) + ii.selected = GButton(ii.obj).selected; + removeChildToPool(ii.obj); + ii.obj = null; + } + } + } + + private function handleArchOrder1():void + { + if (this.childrenRenderOrder == ChildrenRenderOrder.Arch) + { + var mid:Number = _scrollPane.posY + this.viewHeight / 2; + var minDist:Number = int.MAX_VALUE, dist:Number; + var apexIndex:int = 0; + var cnt:int = this.numChildren; + for (var i:int = 0; i < cnt; i++) + { + var obj:GObject = getChildAt(i); + if (!foldInvisibleItems || obj.visible) + { + dist = Math.abs(mid - obj.y - obj.height / 2); + if (dist < minDist) + { + minDist = dist; + apexIndex = i; + } + } + } + this.apexIndex = apexIndex; + } + } + + private function handleArchOrder2():void + { + if (this.childrenRenderOrder == ChildrenRenderOrder.Arch) + { + var mid:Number = _scrollPane.posX + this.viewWidth / 2; + var minDist:Number = int.MAX_VALUE, dist:Number; + var apexIndex:int = 0; + var cnt:int = this.numChildren; + for (var i:int = 0; i < cnt; i++) + { + var obj:GObject = getChildAt(i); + if (!foldInvisibleItems || obj.visible) + { + dist = Math.abs(mid - obj.x - obj.width / 2); + if (dist < minDist) + { + minDist = dist; + apexIndex = i; + } + } + } + this.apexIndex = apexIndex; + } + } + + private function handleAlign(contentWidth:Number, contentHeight:Number):void + { + var newOffsetX:Number = 0; + var newOffsetY:Number = 0; + + if (contentHeight < viewHeight) + { + if (_verticalAlign == VertAlignType.Middle) + newOffsetY = int((viewHeight - contentHeight) / 2); + else if (_verticalAlign == VertAlignType.Bottom) + newOffsetY = viewHeight - contentHeight; + } + + if (contentWidth < this.viewWidth) + { + if (_align == AlignType.Center) + newOffsetX = int((viewWidth - contentWidth) / 2); + else if (_align == AlignType.Right) + newOffsetX = viewWidth - contentWidth; + } + + if (newOffsetX!=_alignOffset.x || newOffsetY!=_alignOffset.y) + { + _alignOffset.setTo(newOffsetX, newOffsetY); + if (scrollPane != null) + scrollPane.adjustMaskContainer(); + else + { + _container.x = _margin.left + _alignOffset.x; + _container.y = _margin.top + _alignOffset.y; + } + } + } + + override protected function updateBounds():void + { + if(_virtual) + return; + + var i:int; + var child:GObject; + var curX:int; + var curY:int; + var maxWidth:int; + var maxHeight:int; + var cw:int, ch:int; + var j:int = 0; + var page:int = 0; + var k:int = 0; + var cnt:int = _children.length; + var viewWidth:Number = this.viewWidth; + var viewHeight:Number = this.viewHeight; + var lineSize:Number = 0; + var lineStart:int = 0; + var ratio:Number; + + if(_layout==ListLayoutType.SingleColumn) + { + for(i=0;imaxWidth) + maxWidth = child.width; + } + cw = Math.ceil(maxWidth); + ch = curY; + } + else if(_layout==ListLayoutType.SingleRow) + { + for(i=0;imaxHeight) + maxHeight = child.height; + } + cw = curX; + ch = Math.ceil(maxHeight); + } + else if(_layout==ListLayoutType.FlowHorizontal) + { + if (_autoResizeItem && _columnCount > 0) + { + for (i = 0; i < cnt; i++) + { + child = getChildAt(i); + if (foldInvisibleItems && !child.visible) + continue; + + lineSize += child.sourceWidth; + j++; + if (j == _columnCount || i == cnt - 1) + { + ratio = (viewWidth - lineSize - (j - 1) * _columnGap) / lineSize; + curX = 0; + for (j = lineStart; j <= i; j++) + { + child = getChildAt(j); + if (foldInvisibleItems && !child.visible) + continue; + + child.setXY(curX, curY); + + if (j < i) + { + child.setSize(child.sourceWidth + Math.round(child.sourceWidth * ratio), child.height, true); + curX += Math.ceil(child.width) + _columnGap; + } + else + { + child.setSize(viewWidth - curX, child.height, true); + } + if (child.height > maxHeight) + maxHeight = child.height; + } + //new line + curY += Math.ceil(maxHeight) + _lineGap; + maxHeight = 0; + j = 0; + lineStart = i + 1; + lineSize = 0; + } + } + ch = curY + Math.ceil(maxHeight); + cw = viewWidth; + } + else + { + for(i=0;i= _columnCount + || _columnCount == 0 && curX + child.width > viewWidth && maxHeight != 0) + { + //new line + curX = 0; + curY += Math.ceil(maxHeight) + _lineGap; + maxHeight = 0; + j = 0; + } + child.setXY(curX, curY); + curX += Math.ceil(child.width); + if (curX > maxWidth) + maxWidth = curX; + if (child.height > maxHeight) + maxHeight = child.height; + j++; + } + ch = curY + Math.ceil(maxHeight); + cw = Math.ceil(maxWidth); + } + } + else if (_layout == ListLayoutType.FlowVertical) + { + if (_autoResizeItem && _lineCount > 0) + { + for (i = 0; i < cnt; i++) + { + child = getChildAt(i); + if (foldInvisibleItems && !child.visible) + continue; + + lineSize += child.sourceHeight; + j++; + if (j == _lineCount || i == cnt - 1) + { + ratio = (viewHeight - lineSize - (j - 1) * _lineGap) / lineSize; + curY = 0; + for (j = lineStart; j <= i; j++) + { + child = getChildAt(j); + if (foldInvisibleItems && !child.visible) + continue; + + child.setXY(curX, curY); + + if (j < i) + { + child.setSize(child.width, child.sourceHeight + Math.round(child.sourceHeight * ratio), true); + curY += Math.ceil(child.height) + _lineGap; + } + else + { + child.setSize(child.width, viewHeight - curY, true); + } + if (child.width > maxWidth) + maxWidth = child.width; + } + //new line + curX += Math.ceil(maxWidth) + _columnGap; + maxWidth = 0; + j = 0; + lineStart = i + 1; + lineSize = 0; + } + } + cw = curX + Math.ceil(maxWidth); + ch = viewHeight; + } + else + { + for(i=0;i= _lineCount + || _lineCount == 0 && curY + child.height > viewHeight && maxWidth != 0) + { + curY = 0; + curX += Math.ceil(maxWidth) + _columnGap; + maxWidth = 0; + j = 0; + } + child.setXY(curX, curY); + curY += Math.ceil(child.height); + if (curY > maxHeight) + maxHeight = curY; + if (child.width > maxWidth) + maxWidth = child.width; + j++; + } + cw = curX + Math.ceil(maxWidth); + ch = Math.ceil(maxHeight); + } + } + else //pagination + { + var eachHeight:int; + if(_autoResizeItem && _lineCount>0) + eachHeight = Math.floor((viewHeight-(_lineCount-1)*_lineGap)/_lineCount); + + if (_autoResizeItem && _columnCount > 0) + { + for (i = 0; i < cnt; i++) + { + child = getChildAt(i); + if (foldInvisibleItems && !child.visible) + continue; + + lineSize += child.sourceWidth; + j++; + if (j == _columnCount || i == cnt - 1) + { + ratio = (viewWidth - lineSize - (j - 1) * _columnGap) / lineSize; + curX = 0; + for (j = lineStart; j <= i; j++) + { + child = getChildAt(j); + if (foldInvisibleItems && !child.visible) + continue; + + child.setXY(page * viewWidth + curX, curY); + + if (j < i) + { + child.setSize(child.sourceWidth + Math.round(child.sourceWidth * ratio), + _lineCount>0?eachHeight:child.height, true); + curX += Math.ceil(child.width) + _columnGap; + } + else + { + child.setSize(viewWidth - curX, _lineCount>0?eachHeight:child.height, true); + } + if (child.height > maxHeight) + maxHeight = child.height; + } + //new line + curY += Math.ceil(maxHeight) + _lineGap; + maxHeight = 0; + j = 0; + lineStart = i + 1; + lineSize = 0; + + k++; + + if (_lineCount != 0 && k >= _lineCount + || _lineCount == 0 && curY + child.height > viewHeight) + { + //new page + page++; + curY = 0; + k = 0; + } + } + } + } + else + { + for (i = 0; i < cnt; i++) + { + child = getChildAt(i); + if (foldInvisibleItems && !child.visible) + continue; + + if (curX != 0) + curX += _columnGap; + + if (_autoResizeItem && _lineCount > 0) + child.setSize(child.width, eachHeight, true); + + if (_columnCount != 0 && j >= _columnCount + || _columnCount == 0 && curX + child.width > viewWidth && maxHeight != 0) + { + //new line + curX = 0; + curY += Math.ceil(maxHeight) + _lineGap; + maxHeight = 0; + j = 0; + k++; + + if (_lineCount != 0 && k >= _lineCount + || _lineCount == 0 && curY + child.height > viewHeight && maxWidth != 0)//new page + { + page++; + curY = 0; + k = 0; + } + } + child.setXY(page * viewWidth + curX, curY); + curX += Math.ceil(child.width); + if (curX > maxWidth) + maxWidth = curX; + if (child.height > maxHeight) + maxHeight = child.height; + j++; + } + } + ch = page > 0 ? viewHeight : curY + Math.ceil(maxHeight); + cw = (page + 1) * viewWidth; + } + + handleAlign(cw, ch); + setBounds(0,0,cw,ch); + } + + override public function setup_beforeAdd(xml:XML):void + { + super.setup_beforeAdd(xml); + + var str:String; + str = xml.@layout; + if(str) + _layout = ListLayoutType.parse(str); + + var overflow:int; + str = xml.@overflow; + if(str) + overflow = OverflowType.parse(str); + else + overflow = OverflowType.Visible; + + str = xml.@margin; + if(str) + _margin.parse(str); + + str = xml.@align; + if(str) + _align = AlignType.parse(str); + + str = xml.@vAlign; + if(str) + _verticalAlign = VertAlignType.parse(str); + + if(overflow==OverflowType.Scroll) + { + var scroll:int; + str = xml.@scroll; + if(str) + scroll = ScrollType.parse(str); + else + scroll = ScrollType.Vertical; + + var scrollBarDisplay:int; + str = xml.@scrollBar; + if(str) + scrollBarDisplay = ScrollBarDisplayType.parse(str); + else + scrollBarDisplay = ScrollBarDisplayType.Default; + var scrollBarFlags:int = parseInt(xml.@scrollBarFlags); + + var scrollBarMargin:Margin = new Margin(); + str = xml.@scrollBarMargin; + if(str) + scrollBarMargin.parse(str); + + var vtScrollBarRes:String; + var hzScrollBarRes:String; + str = xml.@scrollBarRes; + if(str) + { + var arr:Array = str.split(","); + vtScrollBarRes = arr[0]; + hzScrollBarRes = arr[1]; + } + + setupScroll(scrollBarMargin, scroll, scrollBarDisplay, scrollBarFlags, + vtScrollBarRes, hzScrollBarRes); + } + else + setupOverflow(overflow); + + str = xml.@lineGap; + if(str) + _lineGap = parseInt(str); + + str = xml.@colGap; + if(str) + _columnGap = parseInt(str); + + str = xml.@lineItemCount; + if(str) + { + if (_layout == ListLayoutType.FlowHorizontal || _layout == ListLayoutType.Pagination) + _columnCount = parseInt(str); + else if (_layout == ListLayoutType.FlowVertical) + _lineCount = parseInt(str); + } + + str = xml.@lineItemCount2; + if(str) + _lineCount = parseInt(str); + + str = xml.@selectionMode; + if(str) + _selectionMode = ListSelectionMode.parse(str); + + str = xml.@defaultItem; + if(str) + _defaultItem = str; + + str = xml.@autoItemSize; + if (_layout == ListLayoutType.SingleRow || _layout == ListLayoutType.SingleColumn) + _autoResizeItem = str!="false"; + else + _autoResizeItem = str=="true"; + + str = xml.@renderOrder; + if(str) + { + _childrenRenderOrder = ChildrenRenderOrder.parse(str); + if(_childrenRenderOrder==ChildrenRenderOrder.Arch) + { + str = xml.@apex; + if(str) + _apexIndex = parseInt(str); + } + } + + var col:XMLList = xml.item; + for each(var cxml:XML in col) + { + var url:String = cxml.@url; + if(!url) + url = _defaultItem; + if(!url) + continue; + + var obj:GObject = getFromPool(url); + if(obj!=null) + { + addChild(obj); + str = cxml.@title; + if(str) + obj.text = str; + str = cxml.@icon; + if(str) + obj.icon = str; + str = cxml.@name; + if(str) + obj.name = str; + } + } + } + + override internal function setLang(xml:XML):void + { + super.setLang(xml); + var col:XMLList = xml.item; + var i:int=0; + for each(var cxml:XML in col) + { + var url:String = cxml.@url; + if(!url) + url = _defaultItem; + if(!url) + continue; + + var str:String; + var obj:GObject = _children[i]; + if(obj!=null) + { + str = cxml.@title; + if(str) + obj.text = str; + } + i++; + } + } + + override public function setup_afterAdd(xml:XML):void + { + super.setup_afterAdd(xml); + + var str:String; + str = xml.@selectionController; + if(str) + _selectionController = parent.getController(str); + translateText=false;// 不翻译list + setTranslate(this); + } + } +} import fairygui.GObject; - -class ItemInfo -{ - public var width:Number = 0; - public var height:Number = 0; - public var obj:GObject; - public var updateFlag:uint; - public var selected:Boolean; - - public function ItemInfo():void - { - } -} + +class ItemInfo +{ + public var width:Number = 0; + public var height:Number = 0; + public var obj:GObject; + public var updateFlag:uint; + public var selected:Boolean; + + public function ItemInfo():void + { + } +} diff --git a/FairyGUI-as3/src/fairygui/GLoader.as b/FairyGUI-as3/src/fairygui/GLoader.as index 4ffaaab..01868d0 100644 --- a/FairyGUI-as3/src/fairygui/GLoader.as +++ b/FairyGUI-as3/src/fairygui/GLoader.as @@ -15,6 +15,8 @@ package fairygui import fairygui.display.MovieClip; import fairygui.display.UISprite; import fairygui.utils.ToolSet; + + import ktv.message.local.UIEvent; public class GLoader extends GObject implements IColorGear, IAnimationGear { @@ -46,6 +48,8 @@ package fairygui private static var _errorSignPool:GObjectPool = new GObjectPool(); + private var _editorURL:String="编辑器路径"; + public function GLoader() { _playing = true; @@ -89,7 +93,7 @@ package fairygui { if(_url==value) return; - + _url = value; loadContent(); updateGear(7); @@ -279,6 +283,7 @@ package fairygui _contentItem = UIPackage.getItemByURL(itemURL); if(_contentItem!=null) { + _editorURL=_contentItem.url; if(_autoSize) this.setSize(_contentItem.width, _contentItem.height); @@ -337,6 +342,7 @@ package fairygui _contentSourceHeight = pi.height; updateLayout(); } + this.dispatchEvent(new Event(UIEvent.IMAGE_COMPLETE)); } private function __movieClipLoaded(pi:PackageItem):void @@ -360,6 +366,7 @@ package fairygui fairygui.display.MovieClip(_content).boundsRect = new Rectangle(0,0,_contentSourceWidth,_contentSourceHeight); updateLayout(); + this.dispatchEvent(new Event(UIEvent.IMAGE_COMPLETE)); } private function __swfLoaded(content:DisplayObject):void @@ -393,6 +400,7 @@ package fairygui _contentSourceHeight = _content.height; updateLayout(); + this.dispatchEvent(new Event(UIEvent.IMAGE_COMPLETE)); } protected function loadExternal():void @@ -412,7 +420,7 @@ package fairygui } - final protected function onExternalLoadSuccess(content:DisplayObject):void + public function onExternalLoadSuccess(content:DisplayObject):void { _content = content; _container.addChild(_content); @@ -556,7 +564,7 @@ package fairygui _content.y = this.height-_contentHeight; } - private function clearContent():void + protected function clearContent():void { clearErrorState(); @@ -650,7 +658,9 @@ package fairygui var str:String; str = xml.@url; if(str) + { _url = str; + } str = xml.@align; if(str) @@ -679,5 +689,22 @@ package fairygui if(_url) loadContent(); } + + public function get editorURL():String + { + return _editorURL; + } + + public function get content():DisplayObject + { + return _content; + } + + public function set content(value:DisplayObject):void + { + _content = value; + } + + } } diff --git a/FairyGUI-as3/src/fairygui/GMovieClip.as b/FairyGUI-as3/src/fairygui/GMovieClip.as index 77323f5..fb873a4 100644 --- a/FairyGUI-as3/src/fairygui/GMovieClip.as +++ b/FairyGUI-as3/src/fairygui/GMovieClip.as @@ -87,6 +87,7 @@ package fairygui public override function dispose():void { + packageItem.owner.removeItemCallback(packageItem, __movieClipLoaded); super.dispose(); } diff --git a/FairyGUI-as3/src/fairygui/GObject.as b/FairyGUI-as3/src/fairygui/GObject.as index a44f386..572f0db 100644 --- a/FairyGUI-as3/src/fairygui/GObject.as +++ b/FairyGUI-as3/src/fairygui/GObject.as @@ -9,6 +9,7 @@ package fairygui import flash.events.MouseEvent; import flash.events.TouchEvent; import flash.filters.ColorMatrixFilter; + import flash.geom.Matrix; import flash.geom.Point; import flash.geom.Rectangle; import flash.text.TextField; @@ -55,6 +56,8 @@ package fairygui private var _draggable:Boolean; private var _scaleX:Number; private var _scaleY:Number; + private var _skewX:Number; + private var _skewY:Number; private var _pivotX:Number; private var _pivotY:Number; private var _pivotAsAnchor:Boolean; @@ -121,6 +124,8 @@ package fairygui _touchable = true; _scaleX = 1; _scaleY = 1; + _skewX=0; + _skewY=0; _pivotX = 0; _pivotY = 0; _pivotOffsetX = 0; @@ -362,6 +367,45 @@ package fairygui } } + final public function get skewX():Number + { + return _skewX; + } + + public function set skewX(value:Number):void + { + setSkew(value, _skewY); + } + + final public function get skewY():Number + { + return _skewY; + } + + public function set skewY(value:Number):void + { + setSkew(_skewX, value); + } + + public function setSkew(xv:Number, yv:Number):void + { + if(_skewX!=xv || _skewY!=yv) + { + _skewX = xv; + _skewY = yv; + if(_displayObject!=null) + { + var skewMatrix:Matrix=this._displayObject.transform.matrix; + var angleX:Number =_skewX*Math.PI/180; + var angleY:Number =_skewY*Math.PI/180; + skewMatrix.b = Math.tan(angleY); + skewMatrix.c= Math.tan(angleX); + this._displayObject.transform.matrix=skewMatrix; + updatePivotOffset(); + } + } + } + final public function get pivotX():Number { return _pivotX; @@ -404,7 +448,7 @@ package fairygui handlePositionChanged(); } - private function updatePivotOffset():void + private function updatePivotOffset1():void { if(_pivotX!=0 || _pivotY!=0) { @@ -436,6 +480,43 @@ package fairygui } } + + private function updatePivotOffset():void + { + if(_skewX!=0||_skewY!=0) + { + if(_displayObject!=null) + { + //GObject的特点是旋转和缩放不影响坐标,所以要有一个GObject坐标和DisplayObject坐标的转换。pivotOffset就是两个坐标的偏移值 + if(_pivotX!=0 || _pivotY!=0) + { + var pt:Point = transformCoords(_displayObject.transform.matrix, + _pivotX*_width, _pivotY*_height); + _pivotOffsetX = _pivotX*_width - (pt.x - _displayObject.x); + _pivotOffsetY = _pivotY*_height - (pt.y - _displayObject.y); + } + else + { + _pivotOffsetX = 0; + _pivotOffsetY = 0; + } + } + }else + { + updatePivotOffset1(); + } + } + + public static function transformCoords(matrix:Matrix, x:Number, y:Number,out:Point=null):Point + { + if (out == null) out = new Point(); + + out.x = matrix.a * x + matrix.c * y + matrix.tx; + out.y = matrix.d * y + matrix.b * x + matrix.ty; + + return out; + } + private function applyPivot():void { if(_pivotX!=0 || _pivotY!=0) @@ -1339,6 +1420,13 @@ package fairygui setScale(parseFloat(arr[0]), parseFloat(arr[1])); } + str = xml.@skew; + if(str) + { + arr = str.split(","); + setSkew(parseFloat(arr[0]),parseFloat(arr[1])); + } + str = xml.@rotation; if(str) this.rotation = parseInt(str); @@ -1413,6 +1501,23 @@ package fairygui } } + internal function setLang(xml:XML):void + { + if(String(xml.@tooltips).length) + { + tooltips=xml.@tooltips; + } + var col:Object = xml.elements(); + for each(var cxml:XML in col) + { + var index:* = GearXMLKeys[cxml.name().localName]; + if(index!=undefined && int(index)==6)//只更新文本 + { + getGear(int(index)).setLang(cxml); + } + } + } + //touch support //------------------------------------------------------------------- private var _touchPointId:int; @@ -1731,5 +1836,6 @@ package fairygui dispatchEvent(dragEvent); } } + //------------------------------------------------------------------- } } diff --git a/FairyGUI-as3/src/fairygui/GProgressBar.as b/FairyGUI-as3/src/fairygui/GProgressBar.as index 3ae6db4..6f510a2 100644 --- a/FairyGUI-as3/src/fairygui/GProgressBar.as +++ b/FairyGUI-as3/src/fairygui/GProgressBar.as @@ -1,233 +1,233 @@ -package fairygui -{ +package fairygui +{ import com.greensock.TweenLite; import com.greensock.easing.Linear; - public class GProgressBar extends GComponent - { - private var _max:Number; - private var _value:Number; - private var _titleType:int; - private var _reverse:Boolean; - - private var _titleObject:GTextField; - private var _aniObject:GObject; - private var _barObjectH:GObject; - private var _barObjectV:GObject; - private var _barMaxWidth:int; - private var _barMaxHeight:int; - private var _barMaxWidthDelta:int; - private var _barMaxHeightDelta:int; - private var _barStartX:int; - private var _barStartY:int; - - private var _tweener:TweenLite; - public var _tweenValue:int; - - public function GProgressBar() - { - super(); - - _titleType = ProgressTitleType.Percent; - _value = 50; - _max = 100; - } - + public class GProgressBar extends GComponent + { + private var _max:Number; + private var _value:Number; + private var _titleType:int; + private var _reverse:Boolean; + + private var _titleObject:GTextField; + private var _aniObject:GObject; + private var _barObjectH:GObject; + private var _barObjectV:GObject; + private var _barMaxWidth:int; + private var _barMaxHeight:int; + private var _barMaxWidthDelta:int; + private var _barMaxHeightDelta:int; + private var _barStartX:int; + private var _barStartY:int; + + private var _tweener:TweenLite; + public var _tweenValue:int; + + public function GProgressBar() + { + super(); + + _titleType = ProgressTitleType.Percent; + _value = 50; + _max = 100; + } + final public function get titleType():int - { - return _titleType; - } - + { + return _titleType; + } + final public function set titleType(value:int):void - { - if (_titleType != value) - { - _titleType = value; - update(_value); - } - } - + { + if (_titleType != value) + { + _titleType = value; + update(_value); + } + } + final public function get max():Number - { - return _max; - } - + { + return _max; + } + final public function set max(value:Number):void - { - if(_max != value) - { - _max = value; - update(_value); - } - } - - final public function get value():Number - { - return _value; - } - - final public function set value(value:Number):void - { - if(_tweener) - { - _tweener.kill(); - _tweener = null; - } - - if(_value != value) - { - _value = value; - update(_value); - } - } - - public function tweenValue(value:Number, duration:Number):TweenLite - { - if(_value != value) - { - if(_tweener) - _tweener.kill(); - - _tweenValue = _value; - _value = value; - _tweener = TweenLite.to(this, duration, - {_tweenValue:value, onUpdate:onTweenUpdate, onComplete:onTweenComplete, ease: Linear.ease}); - return _tweener; - } - else - return null; - } - - private function onTweenUpdate():void - { - update(_tweenValue); - } - - private function onTweenComplete():void - { - _tweener = null; - } - - public function update(newValue:int):void - { - var percent:Number = _max!=0?Math.min(newValue/_max,1):0; - if(_titleObject) - { - switch(_titleType) - { - case ProgressTitleType.Percent: - _titleObject.text = Math.round(percent*100)+"%"; - break; - - case ProgressTitleType.ValueAndMax: - _titleObject.text = Math.round(newValue) + "/" + Math.round(_max); - break; - - case ProgressTitleType.Value: - _titleObject.text = ""+Math.round(newValue); - break; - - case ProgressTitleType.Max: - _titleObject.text = ""+Math.round(_max); - break; - } - } - - var fullWidth:int = this.width-this._barMaxWidthDelta; - var fullHeight:int = this.height-this._barMaxHeightDelta; - if(!_reverse) - { - if(_barObjectH) - _barObjectH.width = Math.round(fullWidth*percent); - if(_barObjectV) - _barObjectV.height = Math.round(fullHeight*percent); - } - else - { - if(_barObjectH) - { + { + if(_max != value) + { + _max = value; + update(_value); + } + } + + final public function get value():Number + { + return _value; + } + + final public function set value(value:Number):void + { + if(_tweener) + { + _tweener.kill(); + _tweener = null; + } + + if(_value != value) + { + _value = value; + update(_value); + } + } + + public function tweenValue(value:Number, duration:Number):TweenLite + { + if(_value != value) + { + if(_tweener) + _tweener.kill(); + + _tweenValue = _value; + _value = value; + _tweener = TweenLite.to(this, duration, + {_tweenValue:value, onUpdate:onTweenUpdate, onComplete:onTweenComplete, ease: Linear.ease}); + return _tweener; + } + else + return null; + } + + private function onTweenUpdate():void + { + update(_tweenValue); + } + + private function onTweenComplete():void + { + _tweener = null; + } + + public function update(newValue:int):void + { + var percent:Number = _max!=0?Math.min(newValue/_max,1):0; + if(_titleObject) + { + switch(_titleType) + { + case ProgressTitleType.Percent: + _titleObject.text = Math.round(percent*100)+"%"; + break; + + case ProgressTitleType.ValueAndMax: + _titleObject.text = Math.round(newValue) + "/" + Math.round(_max); + break; + + case ProgressTitleType.Value: + _titleObject.text = ""+Math.round(newValue); + break; + + case ProgressTitleType.Max: + _titleObject.text = ""+Math.round(_max); + break; + } + } + + var fullWidth:int = this.width-this._barMaxWidthDelta; + var fullHeight:int = this.height-this._barMaxHeightDelta; + if(!_reverse) + { + if(_barObjectH) _barObjectH.width = Math.round(fullWidth*percent); - _barObjectH.x = _barStartX + (fullWidth-_barObjectH.width); - - } if(_barObjectV) - { _barObjectV.height = Math.round(fullHeight*percent); - _barObjectV.y = _barStartY + (fullHeight-_barObjectV.height); - } - } - if(_aniObject is GMovieClip) - GMovieClip(_aniObject).frame = Math.round(percent*100); - else if(_aniObject is GSwfObject) - GSwfObject(_aniObject).frame = Math.round(percent*100); - } - - override protected function constructFromXML(xml:XML):void - { - super.constructFromXML(xml); - - xml = xml.ProgressBar[0]; - - var str:String; - str = xml.@titleType; - if(str) - _titleType = ProgressTitleType.parse(str); - - _reverse = xml.@reverse=="true"; - - _titleObject = getChild("title") as GTextField; - _barObjectH = getChild("bar"); - _barObjectV = getChild("bar_v"); - _aniObject = getChild("ani"); - - if(_barObjectH) - { - _barMaxWidth = _barObjectH.width; - _barMaxWidthDelta = this.width - _barMaxWidth; - _barStartX = _barObjectH.x; - } - if(_barObjectV) - { - _barMaxHeight = _barObjectV.height; - _barMaxHeightDelta = this.height - _barMaxHeight; - _barStartY = _barObjectV.y; - } - } - - override protected function handleSizeChanged():void - { - super.handleSizeChanged(); - - if(_barObjectH) - _barMaxWidth = this.width - _barMaxWidthDelta; - if(_barObjectV) - _barMaxHeight = this.height - _barMaxHeightDelta; - if(!this._underConstruct) - update(_value); - } - - override public function setup_afterAdd(xml:XML):void - { - super.setup_afterAdd(xml); - - xml = xml.ProgressBar[0]; - if(xml) - { - _value = parseInt(xml.@value); - if(isNaN(_value)) - _value = 0; - _max = parseInt(xml.@max); - if(isNaN(_max)) - _max = 0; - } - update(_value); - } - - override public function dispose():void - { - if(_tweener) - _tweener.kill(); - super.dispose(); - } - } + } + else + { + if(_barObjectH) + { + _barObjectH.width = Math.round(fullWidth*percent); + _barObjectH.x = _barStartX + (fullWidth-_barObjectH.width); + + } + if(_barObjectV) + { + _barObjectV.height = Math.round(fullHeight*percent); + _barObjectV.y = _barStartY + (fullHeight-_barObjectV.height); + } + } + if(_aniObject is GMovieClip) + GMovieClip(_aniObject).frame = Math.round(percent*100); + else if(_aniObject is GSwfObject) + GSwfObject(_aniObject).frame = Math.round(percent*100); + } + + override protected function constructFromXML(xml:XML):void + { + super.constructFromXML(xml); + + xml = xml.ProgressBar[0]; + + var str:String; + str = xml.@titleType; + if(str) + _titleType = ProgressTitleType.parse(str); + + _reverse = xml.@reverse=="true"; + + _titleObject = getChild("title") as GTextField; + _barObjectH = getChild("bar"); + _barObjectV = getChild("bar_v"); + _aniObject = getChild("ani"); + + if(_barObjectH) + { + _barMaxWidth = _barObjectH.width; + _barMaxWidthDelta = this.width - _barMaxWidth; + _barStartX = _barObjectH.x; + } + if(_barObjectV) + { + _barMaxHeight = _barObjectV.height; + _barMaxHeightDelta = this.height - _barMaxHeight; + _barStartY = _barObjectV.y; + } + } + + override protected function handleSizeChanged():void + { + super.handleSizeChanged(); + + if(_barObjectH) + _barMaxWidth = this.width - _barMaxWidthDelta; + if(_barObjectV) + _barMaxHeight = this.height - _barMaxHeightDelta; + if(!this._underConstruct) + update(_value); + } + + override public function setup_afterAdd(xml:XML):void + { + super.setup_afterAdd(xml); + + xml = xml.ProgressBar[0]; + if(xml) + { + _value = parseInt(xml.@value); + if(isNaN(_value)) + _value = 0; + _max = parseInt(xml.@max); + if(isNaN(_max)) + _max = 0; + } + update(_value); + } + + override public function dispose():void + { + if(_tweener) + _tweener.kill(); + super.dispose(); + } + } } \ No newline at end of file diff --git a/FairyGUI-as3/src/fairygui/GRichTextField.as b/FairyGUI-as3/src/fairygui/GRichTextField.as index 679821c..e773803 100644 --- a/FairyGUI-as3/src/fairygui/GRichTextField.as +++ b/FairyGUI-as3/src/fairygui/GRichTextField.as @@ -57,11 +57,13 @@ package fairygui override protected function renderNow(updateBounds:Boolean=true):void { - _richTextField.defaultTextFormat = _textFormat; if(_ubbEnabled) - _richTextField.text = ToolSet.parseUBB(_text); + _richTextField.testFontText = ToolSet.parseUBB(_text); else - _richTextField.text = _text; + _richTextField.testFontText = _text; + + _richTextField.defaultTextFormat = _textFormat; + _richTextField.text = _richTextField.testFontText; var renderSingleLine:Boolean = _richTextField.numLines<=1; diff --git a/FairyGUI-as3/src/fairygui/GSlider.as b/FairyGUI-as3/src/fairygui/GSlider.as index cd90859..ca39371 100644 --- a/FairyGUI-as3/src/fairygui/GSlider.as +++ b/FairyGUI-as3/src/fairygui/GSlider.as @@ -4,6 +4,7 @@ package fairygui import fairygui.event.GTouchEvent; import fairygui.event.StateChangeEvent; + import fairygui.utils.GTimers; [Event(name = "stateChanged", type = "fairygui.event.StateChangeEvent")] public class GSlider extends GComponent @@ -30,6 +31,14 @@ package fairygui /**是否可拖动开关**/ public var canDrag:Boolean = true; + /** + *移动中 是否派发 change事件 默认 false + */ + public var isMoveSendEvent:Boolean=false; + /** + *是否自动隐藏 文本 默认 true + */ + public var isAutoHide:Boolean=true; public function GSlider() { @@ -167,11 +176,33 @@ package fairygui { _gripObject.addEventListener(GTouchEvent.BEGIN, __gripMouseDown); _gripObject.addEventListener(GTouchEvent.DRAG, __gripMouseMove); + _gripObject.addEventListener(GTouchEvent.END, __gripMouseUp); } addEventListener(GTouchEvent.BEGIN, __barMouseDown); } + protected function __gripMouseUp(event:GTouchEvent):void + { + if(isAutoHide) + { + GTimers.inst.remove(hideTxt); + GTimers.inst.add(500,1,hideTxt); + } + + if(isMoveSendEvent) + { + dispatchEvent(new StateChangeEvent(StateChangeEvent.CHANGED)); + } + } + + private function hideTxt():void + { + GTimers.inst.remove(hideTxt); + if(_titleObject) + _titleObject.visible=false; + } + override protected function handleSizeChanged():void { super.handleSizeChanged(); @@ -196,12 +227,17 @@ package fairygui } update(); + if(isAutoHide) + { + hideTxt(); + } } private function __gripMouseDown(evt:GTouchEvent):void { this.canDrag=true; - + if(_titleObject) + _titleObject.visible=true; evt.stopPropagation(); _clickPos = this.globalToLocal(evt.stageX, evt.stageY); @@ -236,7 +272,10 @@ package fairygui if(newValue!=_value) { _value = newValue; - dispatchEvent(new StateChangeEvent(StateChangeEvent.CHANGED)); + if(isMoveSendEvent) + { + dispatchEvent(new StateChangeEvent(StateChangeEvent.CHANGED)); + } } updateWidthPercent(percent); } @@ -268,6 +307,13 @@ package fairygui dispatchEvent(new StateChangeEvent(StateChangeEvent.CHANGED)); } updateWidthPercent(percent); + if(_titleObject) + _titleObject.visible=true; + if(isAutoHide) + { + GTimers.inst.remove(hideTxt); + GTimers.inst.add(500,1,hideTxt); + } } } } diff --git a/FairyGUI-as3/src/fairygui/GTextField.as b/FairyGUI-as3/src/fairygui/GTextField.as index 839b465..bf15316 100644 --- a/FairyGUI-as3/src/fairygui/GTextField.as +++ b/FairyGUI-as3/src/fairygui/GTextField.as @@ -15,7 +15,9 @@ package fairygui import fairygui.utils.FontUtils; import fairygui.utils.GTimers; import fairygui.utils.ToolSet; - + + import ktv.font.ManagerFont; + public class GTextField extends GObject implements ITextColorGear { protected var _ubbEnabled:Boolean; @@ -57,6 +59,25 @@ package fairygui private static const GUTTER_X:int = 2; private static const GUTTER_Y:int = 2; + /** + * 文本截断处理 + */ + public static var ellipsis:String="..."; + /** + * 后缀字符 正播放/预约 + */ + public var suffix:String=""; + /** + *前缀字符 正播放/预约 + */ + public var prefix:String=""; + /** + *是否需要截断文本 + */ + public var truncationText:Boolean=false; + + + public function GTextField() { super(); @@ -116,7 +137,7 @@ package fairygui if(_text==null) _text = ""; updateGear(6); - + updateTextFormat(); if(parent && parent._underConstruct) renderNow(); else @@ -417,6 +438,7 @@ package fairygui else _textFormat.font = UIConfig.defaultFont; + _textFormat.font=ManagerFont.setFontHandler(text,[_textFormat.font]); var charSize:Object = CharSize.getSize(int(_textFormat.size), _textFormat.font, _bold); _fontAdjustment = charSize.yIndent; } @@ -433,7 +455,8 @@ package fairygui _textFormat.italic = _italic; _textField.defaultTextFormat = _textFormat; - _textField.embedFonts = FontUtils.isEmbeddedFont(_textFormat); + // _textField.embedFonts = FontUtils.isEmbeddedFont(_textFormat); + _textField.embedFonts =ManagerFont.embedFont; if(!_underConstruct) render(); @@ -494,10 +517,19 @@ package fairygui h = Math.max(_height, int(_textFormat.size)); if(h!=_textField.height) _textField.height = h; - if(_ubbEnabled) - _textField.htmlText = ToolSet.parseUBB(ToolSet.encodeHTML(_text)); - else - _textField.text = _text; + + if(truncationText) + { + getTxt(_text); + }else + { + if(_ubbEnabled) + _textField.htmlText = ToolSet.parseUBB(ToolSet.encodeHTML(_text)); + else + _textField.text = _text; + } + + _textField.defaultTextFormat = _textFormat; var renderSingleLine:Boolean = _textField.numLines<=1; @@ -535,6 +567,46 @@ package fairygui doAlign(); } + + } + + /**做过滤处理,"做截断并...处理",递归// [预约] 文本放在后面 必须设置文本为 单行 singleLine=true*/ + protected function getTxt(value:String):void + { + var txt:String=value; + setValue(prefix+ txt + ellipsis + suffix); + if(_textField.textWidth>_textField.width)//大于文本的宽度 才加 省略号 + { + var i:int=1; + var str:String=txt.substr(0,i); + setValue(prefix+ str + ellipsis + suffix); + while (_textField.textWidth<_textField.width) + { + i++; + str=txt.substr(0,i); + setValue(prefix+ str + ellipsis + suffix); + } + if(_textField.textWidth>_textField.width)// 加上一个字 超出 就不加了 + { + str=txt.substr(0,i-1); + setValue(prefix+str + ellipsis + suffix); + } + }else + { + setValue(prefix+txt+ suffix);//小于的话 不加 + } + + } + + private function setValue(value:String):void + { + if(_ubbEnabled) + { + _textField.htmlText=ToolSet.parseUBB(ToolSet.encodeHTML(value)); + }else + { + _textField.htmlText=value; + } } private function renderWithBitmapFont(updateBounds:Boolean):void @@ -746,6 +818,7 @@ package fairygui return; _bitmapData = new BitmapData(w, h, true, 0); + _bitmap.bitmapData = _bitmapData; var charX:int = GUTTER_X; var lineIndent:int; @@ -812,7 +885,7 @@ package fairygui override protected function handleGrayedChanged():void { if(_bitmapFont) - super.handleGrayedChanged(); + super.handleGrayedChanged(); updateTextFormat(); } @@ -931,9 +1004,17 @@ package fairygui var str:String = xml.@text; if(str) this.text = str; - + _sizeDirty = false; } + + override internal function setLang(xml:XML):void + { + super.setLang(xml); + var str:String = xml.@text; + if(str) + this.text = str; + } } } diff --git a/FairyGUI-as3/src/fairygui/GTextInput.as b/FairyGUI-as3/src/fairygui/GTextInput.as index 00e2782..f8494d4 100644 --- a/FairyGUI-as3/src/fairygui/GTextInput.as +++ b/FairyGUI-as3/src/fairygui/GTextInput.as @@ -169,6 +169,12 @@ package fairygui _password = xml.@password=="true"; } + override internal function setLang(xml:XML):void + { + super.setLang(xml); + promptText = xml.@prompt; + } + override public function setup_afterAdd(xml:XML):void { super.setup_afterAdd(xml); diff --git a/FairyGUI-as3/src/fairygui/GearBase.as b/FairyGUI-as3/src/fairygui/GearBase.as index 759f68f..3a41e47 100644 --- a/FairyGUI-as3/src/fairygui/GearBase.as +++ b/FairyGUI-as3/src/fairygui/GearBase.as @@ -173,5 +173,29 @@ package fairygui public function updateState():void { } + + public function setLang(xml:XML):void + { + var str:String; + var pages:Array; + var values:Array; + + str = xml.@pages; + if(str) + pages = str.split(","); + + if(pages) + { + str = xml.@values; + values = str.split("|"); + + for(var i:int=0;i _pageSizeH)//如果滚动距离超过1页,则需要超过页面的一半,才能到更下一页 { - if (delta > testPageSize * 0.5) +// if (delta > testPageSize * 0.5) + if (delta > UIConfig.pageScrollMinDistance) page++; } else //否则只需要页面的1/3,当然,需要考虑到左移和右移的情况 { - if (delta > testPageSize * (change1.x < 0 ? 0.3 : 0.7)) +// if (delta > testPageSize * (change1.x < 0 ? 0.3 : 0.7)) + if (delta > (change1.x < 0 ? UIConfig.pageScrollMinDistance : testPageSize-UIConfig.pageScrollMinDistance)) page++; } @@ -1429,12 +1432,14 @@ package fairygui delta = -endY - page * _pageSizeV; if (Math.abs(change1.y) > _pageSizeV) { - if (delta > testPageSize * 0.5) +// if (delta > testPageSize * 0.5) + if (delta > UIConfig.pageScrollMinDistance) page++; } else { - if (delta > testPageSize * (change1.y < 0 ? 0.3 : 0.7)) +// if (delta > testPageSize * (change1.y < 0 ? 0.3 : 0.7)) + if (delta > (change1.y < 0 ? UIConfig.pageScrollMinDistance : testPageSize-UIConfig.pageScrollMinDistance)) page++; } diff --git a/FairyGUI-as3/src/fairygui/UIConfig.as b/FairyGUI-as3/src/fairygui/UIConfig.as index 0b94748..141137c 100644 --- a/FairyGUI-as3/src/fairygui/UIConfig.as +++ b/FairyGUI-as3/src/fairygui/UIConfig.as @@ -63,5 +63,10 @@ package fairygui public static var bringWindowToFrontOnClick:Boolean = true; public static var frameTimeForAsyncUIConstruction:int = 2; + + /** + *页面滚动翻页的 最小距离 (超过 pageScrollMinDistance 就翻页) + */ + public static var pageScrollMinDistance:int=50; } } diff --git a/FairyGUI-as3/src/fairygui/UIPackage.as b/FairyGUI-as3/src/fairygui/UIPackage.as index 1ce30fa..231594f 100644 --- a/FairyGUI-as3/src/fairygui/UIPackage.as +++ b/FairyGUI-as3/src/fairygui/UIPackage.as @@ -6,6 +6,7 @@ package fairygui import flash.events.Event; import flash.geom.Rectangle; import flash.media.Sound; + import flash.net.URLRequest; import flash.system.LoaderContext; import flash.utils.ByteArray; import flash.utils.getTimer; @@ -17,6 +18,11 @@ package fairygui import fairygui.utils.PixelHitTestData; import fairygui.utils.ToolSet; + import ktv.managers.ManagerSkin; + import ktv.morn.core.handlers.Handler; + import ktv.morn.core.managers.LogManager; + import ktv.morn.core.managers.MassLoaderManager; + public class UIPackage { private var _id:String; @@ -246,6 +252,7 @@ package fairygui pi.id = cxml.@id; pi.name = cxml.@name; pi.file = cxml.@file; + pi.path = cxml.@path; str = cxml.@size; arr = str.split(","); pi.width = int(arr[0]); @@ -464,9 +471,8 @@ package fairygui item.componentData = xml; loadComponentChildren(item); - translateComponent(item); } - + translateComponent(item); return item.componentData; } @@ -696,15 +702,53 @@ package fairygui private function loadImage(pi:PackageItem):void { var ba:ByteArray = _reader.readResFile(pi.file); - var loader:PackageItemLoader = new PackageItemLoader(); - loader.contentLoaderInfo.addEventListener(Event.COMPLETE, __imageLoaded); - loader.loadBytes(ba); - - loader.item = pi; + if(ba)//加载.zip文件 + { + var loader:PackageItemLoader = new PackageItemLoader(); + loader.contentLoaderInfo.addEventListener(Event.COMPLETE, __imageLoaded); + loader.loadBytes(ba); + loader.item = pi; + _loadingQueue.push(loader); + }else//加载 外部文件 + { + var url:String=ManagerSkin.assetsHead+pi.url; + MassLoaderManager.getInstance().loadBMD(url,1,new Handler(loadedHandler,[pi]),null,new Handler(errorHandler,[pi])); + function loadedHandler(pi:PackageItem,content:*):void + { + pi.image = content as BitmapData; + pi.completeLoading(); + } + function errorHandler(pi:PackageItem,url:String):void + { + var ary:Array=url.split("/"); + if(ary.indexOf("skin0") != -1)//默认皮肤 + { + LogManager.log.error("默认皮肤skin0不存在"+url); + }else//不是默认皮肤 + { + var index:int=-1; + for (var i:int = 0; i < ary.length; i++) + { + if(String(ary[i]).indexOf("skin") != -1) + { + index=i; + break; + } + } + if(index != -1) + { + ary[index]="skin0";//使用默认的皮肤 + var tempURL:String=ary.join("/"); + MassLoaderManager.getInstance().loadBMD(tempURL,1,new Handler(loadedHandler,[pi]),null,new Handler(errorHandler)); + } + } + } + } pi.loading = 1; - _loadingQueue.push(loader); } + + private function __imageLoaded(evt:Event):void { var loader:PackageItemLoader = PackageItemLoader(LoaderInfo(evt.currentTarget).loader); @@ -722,14 +766,52 @@ package fairygui private function loadSwf(pi:PackageItem):void { var ba:ByteArray = _reader.readResFile(pi.file); - var loader:PackageItemLoader = new PackageItemLoader(); - loader.contentLoaderInfo.addEventListener(Event.COMPLETE, __swfLoaded); - var context:LoaderContext = new LoaderContext(); - context.allowCodeImport = true; - loader.loadBytes(ba, context); - - loader.item = pi; - _loadingQueue.push(loader); + if(ba) + { + var loader:PackageItemLoader = new PackageItemLoader(); + loader.contentLoaderInfo.addEventListener(Event.COMPLETE, __swfLoaded); + var context:LoaderContext = new LoaderContext(); + context.allowCodeImport = true; + loader.loadBytes(ba, context); + + loader.item = pi; + _loadingQueue.push(loader); + }else//加载 外部文件 + { + var url:String=ManagerSkin.assetsHead+pi.url; + MassLoaderManager.getInstance().loadBMD(url,1,new Handler(loadedHandler,[pi]),null,new Handler(errorHandler,[pi])); + function loadedHandler(pi:PackageItem,content:*):void + { + var callback:Function = pi.callbacks.pop(); + if(callback!=null) + callback(content); + } + function errorHandler(pi:PackageItem,url:String):void + { + var ary:Array=url.split("/"); + if(ary.indexOf("skin0") != -1)//默认皮肤 + { + LogManager.log.error("默认皮肤skin0不存在"+url); + }else//不是默认皮肤 + { + var index:int=-1; + for (var i:int = 0; i < ary.length; i++) + { + if(String(ary[i]).indexOf("skin") != -1) + { + index=i; + break; + } + } + if(index != -1) + { + ary[index]="skin0";//使用默认的皮肤 + var tempURL:String=ary.join("/"); + MassLoaderManager.getInstance().loadBMD(tempURL,1,new Handler(loadedHandler,[pi]),null,new Handler(errorHandler)); + } + } + } + } } private function __swfLoaded(evt:Event):void @@ -795,6 +877,44 @@ package fairygui loader.frame = frame; _loadingQueue.push(loader); item.loading++; + }else//加载 外部文件 + { + var url:String; + url=ManagerSkin.assetsHead+item.owner.name+item.path+str; + MassLoaderManager.getInstance().loadBMD(url,1,new Handler(loadedHandler,[item,frame]),null,new Handler(errorHandler,[item])); + item.loading++; + function loadedHandler(pi:PackageItem,frame:Frame,content:*):void + { + frame.image = content as BitmapData; + pi.loading--; + if(pi.loading==0) + pi.completeLoading(); + } + function errorHandler(pi:PackageItem,url:String):void + { + var ary:Array=url.split("/"); + if(ary.indexOf("skin0") != -1)//默认皮肤 + { + LogManager.log.error("默认皮肤skin0不存在"+url); + }else//不是默认皮肤 + { + var index:int=-1; + for (var i:int = 0; i < ary.length; i++) + { + if(String(ary[i]).indexOf("skin") != -1) + { + index=i; + break; + } + } + if(index != -1) + { + ary[index]="skin0";//使用默认的皮肤 + var tempURL:String=ary.join("/"); + MassLoaderManager.getInstance().loadBMD(tempURL,1,new Handler(loadedHandler,[pi]),null,new Handler(errorHandler)); + } + } + } } } } @@ -820,7 +940,14 @@ package fairygui { var sound:Sound = new Sound(); var ba:ByteArray = _reader.readResFile(item.file); - sound.loadCompressedDataFromByteArray(ba, ba.length); + if(ba) + { + sound.loadCompressedDataFromByteArray(ba, ba.length); + }else + { + var url:String=ManagerSkin.assetsHead+item.url; + sound.load(new URLRequest(url)); + } item.sound = sound; item.loaded = true; } @@ -913,12 +1040,48 @@ package fairygui if(ttf) { var ba:ByteArray = _reader.readResFile(item.id+".png"); - var loader:PackageItemLoader = new PackageItemLoader(); - loader.contentLoaderInfo.addEventListener(Event.COMPLETE, __fontAtlasLoaded); - loader.loadBytes(ba); - - loader.item = item; - _loadingQueue.push(loader); + if(ba) + { + var loader:PackageItemLoader = new PackageItemLoader(); + loader.contentLoaderInfo.addEventListener(Event.COMPLETE, __fontAtlasLoaded); + loader.loadBytes(ba); + + loader.item = item; + _loadingQueue.push(loader); + }else//加载 外部文件 + { + var url:String=ManagerSkin.assetsHead+item.url; + MassLoaderManager.getInstance().loadBMD(url,1,new Handler(loadedHandler,[item]),null,new Handler(errorHandler,[item])); + function loadedHandler(pi:PackageItem,content:*):void + { + pi.bitmapFont.atlas = content as BitmapData; + } + function errorHandler(pi:PackageItem,url:String):void + { + var ary:Array=url.split("/"); + if(ary.indexOf("skin0") != -1)//默认皮肤 + { + LogManager.log.error("默认皮肤skin0不存在"+url); + }else//不是默认皮肤 + { + var index:int=-1; + for (var i:int = 0; i < ary.length; i++) + { + if(String(ary[i]).indexOf("skin") != -1) + { + index=i; + break; + } + } + if(index != -1) + { + ary[index]="skin0";//使用默认的皮肤 + var tempURL:String=ary.join("/"); + MassLoaderManager.getInstance().loadBMD(tempURL,1,new Handler(loadedHandler,[pi]),null,new Handler(errorHandler)); + } + } + } + } } } else if(str=="common") diff --git a/FairyGUI-as3/src/fairygui/text/RichTextField.as b/FairyGUI-as3/src/fairygui/text/RichTextField.as index a14a917..5a5b002 100644 --- a/FairyGUI-as3/src/fairygui/text/RichTextField.as +++ b/FairyGUI-as3/src/fairygui/text/RichTextField.as @@ -17,6 +17,8 @@ package fairygui.text import fairygui.utils.FontUtils; import fairygui.utils.ToolSet; + import ktv.font.ManagerFont; + public class RichTextField extends Sprite { private var _textField:TextField; @@ -30,6 +32,7 @@ package fairygui.text public static var objectFactory:IRichTextObjectFactory = new RichTextObjectFactory(); + public var testFontText:String; public function RichTextField():void { this.mouseEnabled = false; @@ -104,9 +107,10 @@ package fairygui.text if(_defaultTextFormat.kerning==null) _defaultTextFormat.kerning = false; } - - _textField.embedFonts = FontUtils.isEmbeddedFont(_defaultTextFormat); + _defaultTextFormat.font=ManagerFont.setFontHandler(testFontText,[_defaultTextFormat.font]); +// _textField.embedFonts = FontUtils.isEmbeddedFont(_defaultTextFormat); _textField.defaultTextFormat = _defaultTextFormat; + _textField.embedFonts = ManagerFont.embedFont; } public function get defaultTextFormat():TextFormat diff --git a/FairyGUI-as3/src/fairygui/utils/CharSize.as b/FairyGUI-as3/src/fairygui/utils/CharSize.as index 964b9f6..d5aea92 100644 --- a/FairyGUI-as3/src/fairygui/utils/CharSize.as +++ b/FairyGUI-as3/src/fairygui/utils/CharSize.as @@ -6,6 +6,8 @@ package fairygui.utils import flash.text.TextFieldAutoSize; import flash.text.TextFormat; + import ktv.font.ManagerFont; + public class CharSize { private static var testTextField:TextField; @@ -50,8 +52,10 @@ package fairygui.utils testTextFormat.font = font; testTextFormat.size = size; testTextFormat.bold = bold; + testTextFormat.font=ManagerFont.setFontHandler(testTextField.text,[testTextFormat.font]); testTextField.setTextFormat(testTextFormat); - testTextField.embedFonts = FontUtils.isEmbeddedFont(testTextFormat); +// testTextField.embedFonts = FontUtils.isEmbeddedFont(testTextFormat); + testTextField.embedFonts = ManagerFont.embedFont; ret.height = testTextField.textHeight; if(ret.height==0) @@ -92,8 +96,10 @@ package fairygui.utils testTextFormat.font = font; testTextFormat.size = size; testTextFormat.bold = false; + testTextFormat.font=ManagerFont.setFontHandler(testTextField2.text,[testTextFormat.font]); testTextField2.setTextFormat(testTextFormat); - testTextField2.embedFonts = FontUtils.isEmbeddedFont(testTextFormat); +// testTextField2.embedFonts = FontUtils.isEmbeddedFont(testTextFormat); + testTextField2.embedFonts = ManagerFont.embedFont; ret = testTextField2.textWidth; col[size] = ret; diff --git a/FairyGUI-as3/src/ktv/font/FontItem.as b/FairyGUI-as3/src/ktv/font/FontItem.as new file mode 100644 index 0000000..dbe0a08 --- /dev/null +++ b/FairyGUI-as3/src/ktv/font/FontItem.as @@ -0,0 +1,13 @@ +package ktv.font +{ + public class FontItem + { + public var fontClass:Vector.=new Vector.(); + public var className:Array=[]; + public var fontURL:String; + public function FontItem() + { + + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/ktv/font/ManagerFont.as b/FairyGUI-as3/src/ktv/font/ManagerFont.as new file mode 100644 index 0000000..0990888 --- /dev/null +++ b/FairyGUI-as3/src/ktv/font/ManagerFont.as @@ -0,0 +1,240 @@ +package ktv.font +{ + import flash.display.Loader; + import flash.display.LoaderInfo; + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.events.IOErrorEvent; + import flash.events.ProgressEvent; + import flash.net.URLRequest; + import flash.text.Font; + import flash.utils.getQualifiedClassName; + + import ktv.morn.core.managers.LogManager; + + public class ManagerFont extends EventDispatcher + { + /** + *字体加载中 + */ + public static const FONT_PROGRESS:String="font_progress"; + /** + *字体加载完毕 + */ + public static const FONT_COMPLETE:String="font_complete"; + /** + *字体加载错误 + */ + public static const FONT_ERROR:String="font_error"; + /** + *是否嵌入字体 + */ + public static var embedFont:Boolean=true; + /** + *嵌入字体的类名 文本的优先选择字体顺序和数组中的字体顺序有关 + * 比如:[font1,font2,font3] 文本在选择字体顺序优先选择 font1->font2->font3 + * 如果都没有找到匹配的字体 就 使用 默认的字体 微软雅黑 + */ + private static var fontURLAry:Vector.=new Vector.(); + public static const FontName_font_weiruanyahei:String="Microsoft YaHei"; + /**默认字体名称,微软雅黑*/ + public static var DefaultFontName:String=ManagerFont.FontName_font_weiruanyahei; + /** + *字体类 Font + */ + private static var ArrEmbedFonts:Array=[]; + private var crtLoadIndex:int=0; + public var loadTotal:int=0; + + public var progressValue:Number=0; + + public function ManagerFont() + { + + } + + /** + * var ary:Array=[["font_weiruanyahei.swf","MyFont"],["font_weiruanyahei1.swf","MyFont1"]]; + *
fontManager=new FontManager(ary); + *
fontManager.addEventListener(FontManager.FONT_COMPLETE,font_complete); + */ + public function load(fontItemVector:Vector.):void + { + fontURLAry=fontItemVector; + loadTotal=fontURLAry.length; + loadFont(fontURLAry); + } + + private function loadFont(fontURLAry:Vector.):void + { + if(crtLoadIndex>=fontURLAry.length) + { + registerFontHandler(); + crtLoadIndex=0; + dispatchEvent(new Event(FONT_COMPLETE)); + }else + { + var fontItem:FontItem=fontURLAry[crtLoadIndex]; + var loader:Loader=new Loader(); + loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); + loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,fontProgress); + loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,iOError); + loader.load(new URLRequest(fontItem.fontURL)); + } + } + + protected function fontProgress(event:ProgressEvent):void + { + progressValue=( crtLoadIndex+(event.bytesLoaded / event.bytesTotal) ) / loadTotal; + dispatchEvent(new Event(FONT_PROGRESS)); + } + + private function completeHandler(e:Event):void + { + LoaderInfo(e.currentTarget).removeEventListener(ProgressEvent.PROGRESS,fontProgress); + LoaderInfo(e.currentTarget).removeEventListener(Event.COMPLETE, completeHandler); + LoaderInfo(e.currentTarget).removeEventListener(IOErrorEvent.IO_ERROR,iOError); + var fontItem:FontItem=fontURLAry[crtLoadIndex]; + for (var i:int = 0; i < fontItem.className.length; i++) + { + var fontClass:Class=LoaderInfo(e.currentTarget).applicationDomain.getDefinition(fontItem.className[i]) as Class; + if(fontClass) + { + + }else + { + throw("加载的字体库swf 文件里获取不到"+fontItem.className +"链接类!!"); + } + fontItem.fontClass.push(fontClass); + } + crtLoadIndex++; + loadFont(fontURLAry); + } + private function iOError(e:IOErrorEvent):void + { + LoaderInfo(e.currentTarget).removeEventListener(Event.COMPLETE, completeHandler); + LoaderInfo(e.currentTarget).removeEventListener(IOErrorEvent.IO_ERROR,iOError); + dispatchEvent(new Event(FONT_ERROR)); + trace("字体加载路径错误:"+fontURLAry[crtLoadIndex]); + crtLoadIndex++; + loadFont(fontURLAry); + } + + /** + * 注册要使用的内嵌字体 + */ + private static function registerFontHandler():void + { + //当前需要嵌入的字体 + regFontHandler(); + } + + private static function regFontHandler():void + { + // 注册字体 + for (var i:int = 0; i < fontURLAry.length; i++) + { + if(fontURLAry[i].fontClass) + { + try + { + for (var k:int = 0; k < fontURLAry[i].fontClass.length; k++) + { + Font.registerFont(fontURLAry[i].fontClass[k]); + } + } + catch(error:Error) + { + LogManager.log.error("注册字体失败,检查路径不能是父级路径"); + } + } + } + ArrEmbedFonts=Font.enumerateFonts(false); + var tempFontAry:Array=[];//生成一个临时的数组存放字体顺序 + // 获取字体的引用 排序数组 排序的方式和Font_ClassNameAry 存放的顺序一致 + for ( i= 0; i < fontURLAry.length; i++) + { + for (var j:int = 0; j < ArrEmbedFonts.length; j++) + { + for (k = 0; k < fontURLAry[i].className.length; k++) + { + if(flash.utils.getQualifiedClassName(ArrEmbedFonts[j])==fontURLAry[i].className[k]) + { + tempFontAry.push(ArrEmbedFonts[j]); + } + } + + } + } + ArrEmbedFonts=tempFontAry; + for ( i= 0; i < ArrEmbedFonts.length; i++) + { + trace("字体Font顺序"+i+":"+Font(ArrEmbedFonts[i]).fontName); + } + + } + /** + *通过字体名称顺序 返回 字体列表 顺序 + * @param fontNameAry + * @return + */ + private static function getFontAry(fontNameAry:Array):Array + { + var tempFontNameAry:Array=fontNameAry.concat(); + var ary:Array=[]; + for (var i:int = 0; i < tempFontNameAry.length; i++) + { + for (var j:int = 0; j < ArrEmbedFonts.length; j++) + { + var tempFont:Font=Font(ArrEmbedFonts[j]); + if(tempFont.fontName == tempFontNameAry[i]) + { + ary.push(tempFont); + tempFontNameAry.splice(i,1); + } + } + } + return ary; + } + + /** + * 设置改变字体 检查顺序 和传入的 字体数组顺序一致 找不到就用 系统字体 + * @param str 需要检查 字符 + * @param fontNameAry 该文本需要设置的字体数组 + * @return 返回 适合的字体名称 + * + */ + public static function setFontHandler(str:String,fontNameAry:Array):String + { + var fontName:String=DefaultFontName; + var fontAry:Array=getFontAry(fontNameAry); + if(fontAry.length) + { + for (var i:int = 0; i < fontAry.length; i++) + { + var tempFont:Font=fontAry[i]; + if(tempFont.hasGlyphs(str)) // 按照字体数组中的列表 进行选择 优先使用默认字体 + { + ManagerFont.embedFont=true; + fontName=tempFont.fontName; + break; + }else + { + if(i==fontAry.length-1) + { + ManagerFont.embedFont=false; + fontName=DefaultFontName; + } + + } + } + }else + { + ManagerFont.embedFont=false; + fontName=DefaultFontName; + } + return fontName; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/ktv/gifv/GIFBoy.as b/FairyGUI-as3/src/ktv/gifv/GIFBoy.as new file mode 100644 index 0000000..756a818 --- /dev/null +++ b/FairyGUI-as3/src/ktv/gifv/GIFBoy.as @@ -0,0 +1,233 @@ + +package ktv.gifv +{ + import flash.display.Bitmap; + import flash.display.BitmapData; + import flash.events.TimerEvent; + import flash.utils.ByteArray; + import flash.utils.Timer; + import flash.events.Event; + + public class GIFBoy extends Bitmap + { + + public var updateFunc:Function=null; + public var firstFunc:Function=null; + + //timer + private const myTimer:Timer=new Timer(1000 / 10, 0); + + private var index:int=0; + private var totle:uint=0; + private var f_width:int=0; + private var f_height:int=0; + private var inited:Boolean=false; + + //datas + private var gifDecoder:GIFDecoder=new GIFDecoder(); + private var aFrames:Array=[]; + private var aDelays:Array=[]; + + public function GIFBoy() + { + this.addEventListener(Event.REMOVED_FROM_STAGE, removeStage); + } + + private function removeStage(e:Event):void + { + this.removeEventListener(Event.REMOVED_FROM_STAGE, removeStage); + dispose(); + } + + /** + * read data + */ + public function loadBytes(gBytes:ByteArray):void + { + if (!aFrames) + { + aFrames=[]; + aDelays=[]; + gifDecoder=new GIFDecoder(); + } + try + { + gifDecoder.firstFunc=firstView; + var st:int=gifDecoder.read(gBytes); + + if (st != GIFDecoder.STATUS_OK) + { + fail(); + } + else + { + myTimer.start(); + if (!myTimer.hasEventListener(TimerEvent.TIMER)) + { + myTimer.addEventListener(TimerEvent.TIMER, update); + } + } + + } + catch (e:Error) + { + fail(); + } + } + + /** + * info + */ + public function getFrameWidth():int + { + return f_width; + } + + public function getFrameHeight():int + { + return f_height; + } + + public function getCurrent():int + { + return index; + } + + public function getFrames():int + { + return totle; + } + + public function isInited():Boolean + { + return inited; + } + + public function getFrame(i:int):BitmapData + { + return aFrames[i]; + } + + public function dispose():void + { + this.bitmapData=null; + myTimer.stop(); + aFrames=null; + aDelays=null; + index=0; + totle=0; + f_width=0; + f_height=0; + inited=false; + + gifDecoder.disposeObject(); + gifDecoder.disposeFrames(); + gifDecoder.firstFunc=null; + gifDecoder=null; + + if (myTimer.hasEventListener(TimerEvent.TIMER)) + { + myTimer.removeEventListener(TimerEvent.TIMER, update); + } + } + + private function firstView():void + { + this.bitmapData=gifDecoder.getImage(); + this.f_width=gifDecoder.getW(); + this.f_height=gifDecoder.getH(); + + if (firstFunc != null) + { + firstFunc(); + } + + if (updateFunc != null) + { + updateFunc(); + } + } + + private function update(pEvt:TimerEvent):void + { + if (!aFrames) + { + return; + } + + if (!inited) + { + try + { + inited=gifDecoder.readFrame(); + totle=gifDecoder.getFrameCount(); + } + catch (e:Error) + { + fail(); + } + if (inited) + { + var st:int=gifDecoder.end(); + if (st != GIFDecoder.STATUS_OK) + { + fail(); + } + else + { + for (var i:int=0; i < totle; i++) + { + aFrames[i]=gifDecoder.getFrame(i); + var tdlay:int=gifDecoder.getDelay(i); + if (tdlay < 17) + { + tdlay=17; + } + aDelays[i]=tdlay; + } + dispatchEvent(new GIFEvent(GIFEvent.OK)); + } + + index=0; + gifDecoder.disposeObject(); + } + } + else + { + var delay:int=aDelays[index]; + if (myTimer.delay != delay) + { + myTimer.delay=delay; + } + + renderFrame(index); + + if (updateFunc != null) + { + updateFunc(); + } + + index=(index + 1) % totle; + } + } + + private function fail():void + { + if (gifDecoder) + { + dispose(); + } + dispatchEvent(new GIFEvent(GIFEvent.FAIL)); + } + + private function renderFrame(index:int):void + { + var b:BitmapData=aFrames[index]; + if (b && this.bitmapData != b) + { + this.bitmapData=b; + this.smoothing=true; + } + } + } +} diff --git a/FairyGUI-as3/src/ktv/gifv/GIFDecoder.as b/FairyGUI-as3/src/ktv/gifv/GIFDecoder.as new file mode 100644 index 0000000..d1e9948 --- /dev/null +++ b/FairyGUI-as3/src/ktv/gifv/GIFDecoder.as @@ -0,0 +1,954 @@ +/** + * This class lets you decode animated GIF files, and show animated GIF's in the Flash player + * Base Class : http://www.java2s.com/Code/Java/2D-Graphics-GUI/GiffileEncoder.htm + * @author Kevin Weiner (original Java version - kweiner@fmsware.com) + * @author Thibault Imbert (AS3 version - bytearray.org) + * @version 0.1 AS3 implementation + */ + +package ktv.gifv +{ + import flash.display.BitmapData; + import flash.events.EventDispatcher; + import flash.geom.Rectangle; + import flash.utils.ByteArray; + import flash.utils.getTimer; + + + public class GIFDecoder extends EventDispatcher + { + /** + * File read status: No errors. + */ + public static const STATUS_OK:int=0; + + /** + * File read status: Error decoding file (may be partially decoded) + */ + private static const STATUS_FORMAT_ERROR:int=1; + + /** + * File read status: Unable to open source. + */ + private static const STATUS_OPEN_ERROR:int=2; + + private var inStream:ByteArray=null; + private var status:int=0; + + // full image width + private var width:int=0; + // full image height + private var height:int=0; + // global color table used + private var gctFlag:Boolean=false; + // size of global color table + private var gctSize:int=0; + // iterations; 0 = repeat forever + private var loopCount:int=1; + + // global color table + private var gct:Array=null; + // local color table + private var lct:Array=null; + // active color table + private var act:Array=null; + + // background color index + private var bgIndex:int=0; + // background color + private var bgColor:uint=0; + // previous bg color + private var lastBgColor:uint=0; + // pixel aspect ratio + private var pixelAspect:int=0; + + private var lctFlag:Boolean=false // local color table flag + // interlace flag + private var interlace:Boolean=false; + // local color table size + private var lctSize:int; + + private var ix:int=0; + private var iy:int=0; + private var iw:int=0; + // current image rectangle + private var ih:int=0; + // last image rect + private const lastRect:Rectangle=new Rectangle(); + // current frame + private var image:BitmapData=null; + private var bitmap:BitmapData=null; + // previous frame + private var lastImage:BitmapData=null; + // current data block + private var block:ByteArray=null; + // block size + private var blockSize:int=0; + + // last graphic control extension info + private var dispose:int=0; + // 0=no action; 1=leave in place; 2=restore to bg; 3=restore to prev + private var lastDispose:int=0; + // use transparent color + private var transparency:Boolean=false; + // delay in milliseconds + private var delay:int=0; + // transparent color index + private var transIndex:int=0; + + // max decoder pixel stack size + private static const MaxStackSize:int=4096; + + // LZW decoder working arrays + private var prefix:Vector.=null + private var suffix:ByteArray=null; + private var pixelStack:ByteArray=null; + private var pixels:ByteArray=null; + + // frames read from current file + private var delays:Array=null + private var frames:Array=null + private var frameCount:int=0; + + public var firstFunc:Function=null; + + public function GIFDecoder() + { + block=new ByteArray; + } + + public function get disposeValue():int + { + return dispose; + } + + /** + * Gets display duration for specified frame. + * + * @param n int index of frame + * @return delay in milliseconds + */ + public function getDelay(n:int):int + { + delay=-1; + if ((n >= 0) && (n < frameCount)) + { + delay=delays[n]; + } + return delay; + } + + /** + * Gets the number of frames read from file. + * @return frame count + */ + public function getFrameCount():int + { + return frameCount; + } + + /** + * Gets the first (or only) image read. + * + * @return BitmapData containing first frame, or null if none. + */ + public function getImage():BitmapData + { + return getFrame(0); + } + + /** + * Gets the "Netscape" iteration count, if any. + * A count of 0 means repeat indefinitiely. + * + * @return iteration count if one was specified, else 1. + */ + public function getLoopCount():int + { + return loopCount; + } + + public function getW():int + { + return width; + } + + public function getH():int + { + return height; + } + + public function disposeObject():void + { + if (prefix) + { + prefix.fixed=false; + prefix.length=0; + prefix=null; + } + if (suffix) + { + suffix.length=0; + suffix=null; + } + if (pixelStack) + { + pixelStack.length=0; + pixelStack=null; + } + if (pixels) + { + pixels.length=0; + pixels=null; + } + if (lastPixs) + { + lastPixs.fixed=false; + lastPixs.length=0; + lastPixs=null; + } + if (inStream) + { + inStream.length=0; + inStream=null; + } + if (block) + { + block.length=0; + block=null; + } + if (delays) + { + delays.length=0; + delays=null; + } + if (gct) + { + gct.length=0; + gct=null; + } + if (lct) + { + lct.length=0; + lct=null; + } + if (act) + { + act.length=0; + act=null; + } + + firstFunc=null; + } + + + public function disposeFrames():void + { + if (frames) + { + for each (var b:BitmapData in frames) + { + b.dispose(); + } + frames.length=0; + frames=null; + } + } + + /** + * Creates new frame image from current data (and previous + * frames as specified by their disposition codes). + */ + + private var lastPixs:Vector.=new Vector.(); + private var lastPlen:uint=0; + + private function transferPixels():void + { + image.lock(); + var dest:Vector.=null; + // fill in starting image contents based on last image's dispose code + if (lastDispose > 0) + { + if (lastDispose == 3) + { + // use image before last + var n:int=frameCount - 2; + lastImage=n > 0 ? getFrame(n - 1) : null; + + } + + if (lastImage != null) + { + if (lastDispose == 2) + { + // fill last image rect area with background color + var c:uint=transparency ? 0x00000000 : lastBgColor; + + dest=lastImage.getVector(lastImage.rect); + dest.fixed=true; + lastPixs.fixed=true; + + // use given background color + for (var j:uint=0; j < lastPlen; j++) + { + var p:uint=lastPixs[j]; + dest[p]=c; + } + + lastPixs.fixed=false; + + } + else + { + dest=lastImage.getVector(lastImage.rect); + } + } + } + + if (!dest) + { + dest=image.getVector(image.rect); + } + + dest.fixed=true; + lastPlen=0; + // copy each source line to the appropriate place in the destination + var pass:int=1; + var inc:int=8; + var iline:int=0; + for (var i:int=0; i < ih; i++) + { + var line:int=i; + if (interlace) + { + if (iline >= ih) + { + pass++; + switch (pass) + { + case 2: + iline=4; + break; + case 3: + iline=2; + inc=4; + break; + case 4: + iline=1; + inc=2; + break; + } + } + line=iline; + iline+=inc; + } + line+=iy; + if (line < height) + { + const k:int=line * width; + var dx:int=k + ix; // start of line in dest + var dlim:int=dx + iw; // end of dest line + if ((k + width) < dlim) + { + dlim=k + width; // past dest edge + } + var sx:int=i * iw; // start of line in source + var tmp:int=0; + while (dx < dlim) + { + // map color and insert in destination + tmp=act[(pixels[sx++]) & 0xff]; + if (tmp != 0) + { + dest[dx]=tmp; + lastPixs[lastPlen++]=dx; + } + dx++; + } + } + } + + image.setVector(image.rect, dest); + image.unlock(); + + dest.fixed=false; + dest.length=0; + dest=null; + } + + /** + * Gets the image contents of frame n. + * + * @return BufferedImage representation of frame, or null if n is invalid. + */ + public function getFrame(n:int):BitmapData + { + var im:BitmapData=null; + + if ((n >= 0) && (n < frameCount)) + + { + im=frames[n]; + + } + else + throw new RangeError("Wrong frame number passed"); + + return im; + } + + + /** + * Reads GIF image from stream + * + * @param BufferedInputStream containing GIF file. + * @return read status code (0 = no errors) + */ + public function read(inStream:ByteArray):int + { + init(); + done=false; + this.inStream=inStream; + readHeader(); + return status; + } + + // read GIF file content blocks + private var done:Boolean=false; + + public function readFrame():Boolean + { + var t:Number=getTimer(); + while (!done) + { + readContents(); + if (getTimer() - t > 200) + { + break; + } + + if (done || hasError()) + { + done=true; + break; + } + } + + return done; + } + + public function end():int + { + if (!hasError()) + { + if (frameCount < 0) + { + status=STATUS_FORMAT_ERROR; + } + } + + return status; + } + + /** + * Main file parser. Reads GIF content blocks. + */ + private function readContents():void + { + var code:int=readSingleByte(); + switch (code) + { + case 0x2C: // image separator + readImage(); + break; + + case 0x21: // extension + code=readSingleByte(); + switch (code) + { + case 0xf9: // graphics control extension + readGraphicControlExt(); + break; + + case 0xff: // application extension + readBlock(); + var app:String=""; + for (var i:int=0; i < 11; i++) + { + app+=String.fromCharCode(block[int(i)]); + } + if (app == "NETSCAPE2.0") + { + readNetscapeExt(); + } + else + skip(); // don't care + break; + + default: // uninteresting extension + skip(); + break; + } + break; + + case 0x3b: // terminator + done=true; + break; + + case 0x00: // bad byte, but keep going and see what happens + break; + + default: + status=STATUS_FORMAT_ERROR; + break; + } + } + + /** + * Decodes LZW image data into pixel array. + * Adapted from John Cristy's ImageMagick. + */ + private function decodeImageData():void + { + const NullCode:int=-1; + const npix:int=iw * ih; + var available:int=0; + var clear:int=0; + var code_mask:int=0; + var code_size:int=0; + var end_of_information:int=0; + var in_code:int=0; + var old_code:int=0; + var bits:int=0; + var code:int=0; + var count:int=0; + var i:int=0; + var datum:int=0; + var data_size:int=0; + var first:int=0; + var top:int=0; + var bi:int=0; + var pi:int=0; + + if (pixels == null) + { + pixels=new ByteArray(); //(npix); // allocate new pixel array + } + if (pixels.length < npix) + { + pixels.length=npix; + } + + if (prefix == null) + prefix=new Vector.(MaxStackSize, true); // (MaxStackSize); + + if (suffix == null) + suffix=new ByteArray(); // (MaxStackSize); + + if (pixelStack == null) + pixelStack=new ByteArray(); // (MaxStackSize + 1); + + // Initialize GIF data stream decoder. + + data_size=readSingleByte(); + clear=1 << data_size; + end_of_information=clear + 1; + available=clear + 2; + old_code=NullCode; + code_size=data_size + 1; + code_mask=(1 << code_size) - 1; + for (code=0; code < clear; code++) + { + prefix[code]=0; + suffix[code]=code; + } + + // Decode GIF pixel stream. + datum=bits=count=first=top=pi=bi=0; + + for (i=0; i < npix; ) + { + if (top == 0) + { + if (bits < code_size) + { + // Load bytes until there are enough bits for a code. + if (count == 0) + { + // Read a new data block. + count=readBlock(); + if (count <= 0) + break; + bi=0; + } + datum+=(block[bi] & 0xff) << bits; + bits+=8; + bi++; + count--; + continue; + } + + // Get the next code. + code=datum & code_mask; + datum>>=code_size; + bits-=code_size; + // Interpret the code + if ((code > available) || (code == end_of_information)) + break; + if (code == clear) + { + // Reset decoder. + code_size=data_size + 1; + code_mask=(1 << code_size) - 1; + available=clear + 2; + old_code=NullCode; + continue; + } + if (old_code == NullCode) + { + pixelStack[top++]=suffix[code]; + old_code=code; + first=code; + continue; + } + in_code=code; + if (code == available) + { + pixelStack[top++]=first; + code=old_code; + } + while (code > clear) + { + pixelStack[top++]=suffix[code]; + code=prefix[code]; + } + first=(suffix[code]) & 0xff; + + // Add a new string to the string table, + + if (available >= MaxStackSize) + break; + pixelStack[top++]=first; + prefix[available]=old_code; + suffix[available]=first; + available++; + if (((available & code_mask) == 0) && (available < MaxStackSize)) + { + code_size++; + code_mask+=available; + } + old_code=in_code; + } + + // Pop a pixel off the pixel stack. + + top--; + pixels[pi++]=pixelStack[top]; + i++; + } + + for (i=pi; i < npix; i++) + { + pixels[i]=0; // clear missing pixels + } + } + + /** + * Returns true if an error was encountered during reading/decoding + */ + private function hasError():Boolean + { + return status != STATUS_OK; + } + + /** + * Initializes or re-initializes reader + */ + private function init():void + { + status=STATUS_OK; + frameCount=0; + frames=[]; + delays=[]; + gct=null; + lct=null; + } + + /** + * Reads a single byte from the input stream. + */ + private function readSingleByte():int + { + return inStream.readUnsignedByte(); + } + + /** + * Reads next variable length block from input. + * + * @return number of bytes stored in "buffer" + */ + private function readBlock():int + { + blockSize=readSingleByte(); + var n:int=0; + if (blockSize > 0) + { + try + { + var count:int=0; + while (n < blockSize) + { + + inStream.readBytes(block, n, blockSize - n); + if ((blockSize - n) == -1) + break; + n+=(blockSize - n); + } + } + catch (e:Error) + { + } + + if (n < blockSize) + { + status=STATUS_FORMAT_ERROR; + } + } + return n; + } + + /** + * Reads color table as 256 RGB integer values + * + * @param ncolors int number of colors to read + * @return int array containing 256 colors (packed ARGB with full alpha) + */ + private function readColorTable(ncolors:int):Array + { + const nbytes:int=3 * ncolors; + var tab:Array=null; + var c:ByteArray=new ByteArray(); + var n:int=0; + try + { + inStream.readBytes(c, 0, nbytes); + n=nbytes; + } + catch (e:Error) + { + } + if (n < nbytes) + { + status=STATUS_FORMAT_ERROR; + } + else + { + tab=[]; //size =256 + var i:int=0; + var j:int=0; + while (i < ncolors) + { + var r:int=(c[j++]) & 0xff; + var g:int=(c[j++]) & 0xff; + var b:int=(c[j++]) & 0xff; + tab[i++]=(0xff000000 | (r << 16) | (g << 8) | b); + } + } + return tab; + } + + + + /** + * Reads Graphics Control Extension values + */ + private function readGraphicControlExt():void + { + readSingleByte(); // block size + const packed:int=readSingleByte(); // packed fields + dispose=(packed & 0x1c) >> 2; // disposal method + if (dispose == 0) + { + dispose=1; // elect to keep old image if discretionary + } + transparency=(packed & 1) != 0; + delay=readShort() * 10; // delay in milliseconds + transIndex=readSingleByte(); // transparent color index + readSingleByte(); // block terminator + } + + /** + * Reads GIF file header information. + */ + private function readHeader():void + { + var id:String=""; + for (var i:int=0; i < 6; i++) + { + id+=String.fromCharCode(readSingleByte()); + + } + if (!(id.indexOf("GIF") == 0)) + { + status=STATUS_FORMAT_ERROR; +// throw new FileTypeError("Invalid file type"); + throw new Error(); + return; + } + readLSD(); + if (gctFlag && !hasError()) + { + gct=readColorTable(gctSize); + bgColor=gct[bgIndex]; + } + } + + /** + * Reads next frame image + */ + private function readImage():void + { + ix=readShort(); // (sub)image position & size + iy=readShort(); + iw=readShort(); + ih=readShort(); + + var packed:int=readSingleByte(); + lctFlag=(packed & 0x80) != 0; // 1 - local color table flag + interlace=(packed & 0x40) != 0; // 2 - interlace flag + // 3 - sort flag + // 4-5 - reserved + lctSize=2 << (packed & 7); // 6-8 - local color table size + + if (lctFlag) + { + lct=readColorTable(lctSize); // read table + act=lct; // make local table active + } + else + { + act=gct; // make global table active + if (bgIndex == transIndex) + bgColor=0; + } + var save:int=0; + if (transparency) + { + save=act[transIndex]; + act[transIndex]=0; // set transparent color if specified + } + + if (act == null) + { + status=STATUS_FORMAT_ERROR; // no color table defined + } + + if (hasError()) + return; + + decodeImageData(); // decode pixel data + skip(); + if (hasError()) + return; + + frameCount++; + // create new image to receive frame data + + bitmap=new BitmapData(width, height, true, 0); + + image=bitmap; + transferPixels(); // transfer pixel data to image + frames.push(bitmap); // add image to frame list + delays.push(delay); + + if (transparency) + act[transIndex]=save; + + resetFrame(); + + if (frameCount == 1 && firstFunc != null) + { + firstFunc(); + } + } + + /** + * Reads Logical Screen Descriptor + */ + private function readLSD():void + { + + // logical screen size + width=readShort(); + height=readShort(); + + // packed fields + var packed:int=readSingleByte(); + + gctFlag=(packed & 0x80) != 0; // 1 : global color table flag + // 2-4 : color resolution + // 5 : gct sort flag + gctSize=2 << (packed & 7); // 6-8 : gct size + bgIndex=readSingleByte(); // background color index + pixelAspect=readSingleByte(); // pixel aspect ratio + + } + + /** + * Reads Netscape extenstion to obtain iteration count + */ + private function readNetscapeExt():void + { + do + { + readBlock(); + if (block[0] == 1) + { + // loop count sub-block + var b1:int=(block[1]) & 0xff; + var b2:int=(block[2]) & 0xff; + loopCount=(b2 << 8) | b1; + } + } while ((blockSize > 0) && !hasError()); + } + + /** + * Reads next 16-bit value, LSB first + */ + private function readShort():int + { + // read 16-bit value, LSB first + return readSingleByte() | (readSingleByte() << 8); + } + + /** + * Resets frame state for reading next image. + */ + private function resetFrame():void + { + lastDispose=dispose; + lastRect.setTo(ix, iy, iw, ih); + lastImage=image; + lastBgColor=bgColor; + // int dispose = 0; + //var transparency:Boolean = false; + //var delay:int = 0; + lct=null; + } + + /** + * Skips variable length blocks up to and including + * next zero length block. + */ + private function skip():void + { + do + { + readBlock(); + + } while ((blockSize > 0) && !hasError()); + } + } + +} diff --git a/FairyGUI-as3/src/ktv/gifv/GIFEvent.as b/FairyGUI-as3/src/ktv/gifv/GIFEvent.as new file mode 100644 index 0000000..285cc88 --- /dev/null +++ b/FairyGUI-as3/src/ktv/gifv/GIFEvent.as @@ -0,0 +1,15 @@ +package ktv.gifv +{ + import flash.events.Event; + + public class GIFEvent extends Event + { + public static const OK:String="_gif_event_ok"; + public static const FAIL:String="_gif_event_fail"; + + public function GIFEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false) + { + super(type, bubbles, cancelable); + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/ktv/inter/IChangLang.as b/FairyGUI-as3/src/ktv/inter/IChangLang.as new file mode 100644 index 0000000..6080b3e --- /dev/null +++ b/FairyGUI-as3/src/ktv/inter/IChangLang.as @@ -0,0 +1,10 @@ +package ktv.inter +{ + import ktv.message.local.UIEvent; + + public interface IChangLang + { + function changeSkin(event:UIEvent):void + function changeLang(event:UIEvent):void + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/ktv/managers/Interface.as b/FairyGUI-as3/src/ktv/managers/Interface.as new file mode 100644 index 0000000..7b10ddc --- /dev/null +++ b/FairyGUI-as3/src/ktv/managers/Interface.as @@ -0,0 +1,54 @@ +package ktv.managers +{ + import flash.external.ExternalInterface; + + import ktv.message.local.UIEvent; + import ktv.message.local.UIEventDispatcher; + import ktv.message.socket.SocketManager; + import ktv.morn.core.managers.LogManager; + + + public class Interface + { + public static var isSocket:Boolean=false; + public static function sendPfAndPid(pf:String,pid:String=""):void + { + if(!pf||pf=="") return; + if(isSocket) + { + var obj:Object={pf:pf,pid:pid}; + sendObj(obj); + }else + { + LogManager.log.send("pf:"+pf+" pid:"+pid); + if(ExternalInterface.available) + { + ExternalInterface.call(pf,pid); + } + } + } + + public static function sendObj(obj:Object):void + { + if(obj) + { + if(isSocket) + { + SocketManager.getInstance().sendMessage(JSON.stringify(obj)); + } + else//本地发送 本地接受 + { + var str:String=JSON.stringify(obj); + LogManager.log.send(str); + UIEventDispatcher.sendEvent(UIEvent.LOACL_MESSAGE,str); + } + } + } + + public static function recevieData(data:String):void + { + SocketManager.getInstance().getMessage(data); + } + } +} + diff --git a/FairyGUI-as3/src/ktv/managers/ManagerLang.as b/FairyGUI-as3/src/ktv/managers/ManagerLang.as new file mode 100644 index 0000000..b03dda8 --- /dev/null +++ b/FairyGUI-as3/src/ktv/managers/ManagerLang.as @@ -0,0 +1,45 @@ +package ktv.managers +{ + import ktv.message.local.UIEvent; + import ktv.message.local.UIEventDispatcher; + + /** + * 作用: 多语言切换 + */ + public class ManagerLang + { + //那些语言 + /** 中文 */ + public static const CN:String = "cn"; + /** 英文 */ + public static const EN:String = "en"; + /** 繁体 */ + public static const TR:String = "tr"; + /** 韩语 */ + public static const KR:String = "kr"; + /** 日语 */ + public static const JP:String = "jp"; + + /**当前的语言 默认是 中文 */ + public static var crtLang:String = ManagerLang.CN; + /** + *当前支持的语种 + */ + public static var supportLangAry:Array=[CN]; + + /** 更新语言数据 默认更改为 中文 */ + public static function updateLuanguage(crtLang:String=ManagerLang.CN):void + { + ManagerLang.crtLang = crtLang; + trace("改变多语言:"+crtLang); + UIEventDispatcher.sendEvent(UIEvent.CHANGE_LANG); + } + + /**多语言的最大语种数*/ + public static function get maxLang():int + { + return supportLangAry.length; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/ktv/managers/ManagerLayer.as b/FairyGUI-as3/src/ktv/managers/ManagerLayer.as new file mode 100644 index 0000000..29b0033 --- /dev/null +++ b/FairyGUI-as3/src/ktv/managers/ManagerLayer.as @@ -0,0 +1,157 @@ +package ktv.managers +{ + import flash.net.LocalConnection; + + import fairygui.GComponent; + import fairygui.GObject; + import fairygui.GRoot; + + /** + * 在 App 这个类里面 实例化了 + * ...图层视图 深度管理 + * @author Adobe + */ + public class ManagerLayer + { + private static var instance:ManagerLayer; + /** + * 背景层 0 + */ + public static const LAYER_BG:String="layer_bg"; + private var layer_bg:GComponent=new GComponent(); + + /** + * 面板层 1 + */ + public static const LAYER_PANEL:String="layer_panel"; + private var layer_panel:GComponent=new GComponent(); + /** + * 错误(提示)弹出框 层 2 + */ + public static const LAYER_DIALOG:String="layer_dialog"; + private var layer_dialog:GComponent=new GComponent(); + + /** + * 提示层(大帮助图片层) 形象页 3 + */ + public static const LAYER_COVRE:String="layer_cover"; + private var layer_cover:GComponent=new GComponent(); + + public function ManagerLayer() + { + init(); + } + + public function init():void + { + GRoot.inst.addChild(layer_bg); + GRoot.inst.addChild(layer_panel); + GRoot.inst.addChild(layer_dialog); + GRoot.inst.addChild(layer_cover); + } + + /** + * 获取层级 + * @param layer + * @return + */ + public function getLayer(layer:String=ManagerLayer.LAYER_PANEL):GComponent + { + return this[""+layer] as GComponent; + } + + /** + * 添加到ui层级 默认 是添加在 LayerTool.PANEL_LAYER + * @param display + * @param layer + */ + public function addUI(display:GObject, layer:String=ManagerLayer.LAYER_PANEL):GObject + { + return getLayer(layer).addChild(display); + } + + /** + * 添加到指定位置的ui + * @param display 当前显示对象 + * @param index 添加的索引值 + * @param layer 添加到的层级 + * @return 返回当前display的实例 + */ + public function addUIAt(display:GObject, layer:String=ManagerLayer.LAYER_PANEL, index:int=0):GObject + { + return getLayer(layer).addChildAt(display, index); + } + /** + * 移除指定层级上的UI 默认 是移除在 LayerTool.PANEL_LAYER + * @param display + * @param layer + */ + public function removeUI(display:GObject,dispose:Boolean=false):GObject + { + if(display &&display.parent) + { + return display.parent.removeChild(display,dispose); + } + trace("ManagerLayer"+"移除Gobject的parent不存在"); + return null; + } + + /** + *移除指定层级上指定索引的UI 默认 是移除在 LayerTool.PANEL_LAYER + * @param display 当前显示对象 + * @param index 添加的索引值 + * @param layer 添加到的层级 + * @return 返回当前display的实例 + */ + public function removeUIAt(index:int=0,layer:String=ManagerLayer.LAYER_PANEL):GObject + { + return getLayer(layer).removeChildAt(index); + } + + public function setChildIndex(display:GObject,index:int=0):void + { + if(display && display.parent) + { + display.parent.setChildIndex(display,index); + } + } + + public function dispose():void + { + layer_bg.removeChildren(0,-1,true); + layer_bg.removeFromParent(); + layer_panel.removeChildren(0,-1,true); + layer_panel.removeFromParent(); + layer_dialog.removeChildren(0,-1,true); + layer_dialog.removeFromParent(); + layer_cover.removeChildren(0,-1,true); + layer_cover.removeFromParent(); + trace("dispose():LayerTool"); + } + + public static function getInstance():ManagerLayer + { + if (!instance) + { + instance=new ManagerLayer(); + } + return instance; + } + + public function GC():void + { + trace("GC"); + try + { + new LocalConnection().connect("foo"); + new LocalConnection().connect("foo"); + } + catch(error : Error) + { + + } + } + + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/ktv/managers/ManagerSkin.as b/FairyGUI-as3/src/ktv/managers/ManagerSkin.as new file mode 100644 index 0000000..d30c67e --- /dev/null +++ b/FairyGUI-as3/src/ktv/managers/ManagerSkin.as @@ -0,0 +1,84 @@ +package ktv.managers +{ + import ktv.message.local.UIEvent; + import ktv.message.local.UIEventDispatcher; + + public class ManagerSkin + { + /** + *当前皮肤index + */ + public static var crtSkinIndex:int=0; + /** + * 当前背景index + */ + public static var crtBgIndex:int=0; + /** + *皮肤总个数 + */ + public static var totalSkinCount:int=1; + /** + *背景总个数 + */ + public static var totalBgCount:int=1; + + /** + *资源的 路劲 前缀 + */ + public static var assetsHead:String=""; + + public static function changeSkin(index:int):void + { + crtSkinIndex=index; + UIEventDispatcher.sendEvent(UIEvent.CHANGE_SKIN); + } + + public static function changeBg(index:int):void + { + crtBgIndex=index; + UIEventDispatcher.sendEvent(UIEvent.CHANGE_BG); + } + + /** + *获取指定 index 的皮肤路径 + * @param url + * @param index + * @return + * + */ + public static function getSkin(url:String,index:int=-1):String + { + var tempIndex:int=crtSkinIndex; + if(index!=-1) + { + tempIndex=index; + } + var ary:Array=url.split("/"); + var skinIndex:int=-1; + for (var i:int = 0; i < ary.length; i++) + { + if(String(ary[i]).indexOf("skin") !=-1 ) + { + skinIndex=i; + break; + } + } + if(skinIndex != -1) + { + ary[skinIndex]="skin"+tempIndex; + return ary.join("/"); + } + return url; + } + + public static function getBg(url:String):String + { + return url; + } + + public static function getColor(url:String):String + { + return url; + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/ktv/message/local/UIEvent.as b/FairyGUI-as3/src/ktv/message/local/UIEvent.as new file mode 100644 index 0000000..bae200f --- /dev/null +++ b/FairyGUI-as3/src/ktv/message/local/UIEvent.as @@ -0,0 +1,35 @@ +package ktv.message.local +{ + import flash.events.Event; + + + public class UIEvent extends Event + { + public static const CHANGE_BG:String="CHANGE_BG"; + public static const CHANGE_SKIN:String="CHANGE_SKIN"; + public static const CHANGE_LANG:String="CHANGE_LANG"; + + public static const LOACL_MESSAGE:String="LOACL_MESSAGE"; + public static const IMAGE_COMPLETE:String="IMAGE_COMPLETE"; + public static const IMAGE_ERROR:String="IMAGE_ERROR"; + public static const PAGE_CHANGE:String="PAGE_CHANGE"; + private var _data:*; + public function UIEvent(type:String, data:*=null, bubbles:Boolean = false, cancelable:Boolean = false) + { + super(type, bubbles, cancelable); + _data = data; + } + /**事件数据*/ + public function get data():*{ + return _data; + } + + public function set data(value:*):void { + _data = value; + } + + override public function clone():Event { + return new UIEvent(type, _data, bubbles, cancelable); + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/ktv/message/local/UIEventDispatcher.as b/FairyGUI-as3/src/ktv/message/local/UIEventDispatcher.as new file mode 100644 index 0000000..be8f2fb --- /dev/null +++ b/FairyGUI-as3/src/ktv/message/local/UIEventDispatcher.as @@ -0,0 +1,45 @@ +package ktv.message.local +{ + import flash.events.EventDispatcher; + + [Event(name="UIEvent.CHANGE_BG", type="ktv.message.local.UIEvent")] + [Event(name="UIEvent.CHANGE_SKIN", type="ktv.message.local.UIEvent")] + [Event(name="UIEvent.CHANGE_LANG", type="ktv.message.local.UIEvent")] + [Event(name="UIEvent.LOACL_MESSAGE", type="ktv.message.local.UIEvent")] + [Event(name="UIEvent.IMAGE_COMPLETE", type="ktv.message.local.UIEvent")] + [Event(name="UIEvent.IMAGE_ERROR", type="ktv.message.local.UIEvent")] + [Event(name="UIEvent.CHANGE_PAGE", type="ktv.message.local.UIEvent")] + public class UIEventDispatcher extends EventDispatcher + { + private static var instance:UIEventDispatcher; + + public static function getInstance():UIEventDispatcher + { + if(instance==null) + { + instance=new UIEventDispatcher(); + } + return instance; + } + + /** + * 发送事件 消息 + * @param type 发送的事件 类型 + * @param data 发送的事件 所 携带的数据 + * + */ + public static function sendEvent(type:String,data:*=null):void + { + if(getInstance().hasEventListener(type)) + { + getInstance().dispatchEvent(new UIEvent(type, data)); + } + } + + override public function addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeekReference:Boolean=false):void + { + super.addEventListener(type, listener, useCapture, priority, true); + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/ktv/message/socket/SocketEvent.as b/FairyGUI-as3/src/ktv/message/socket/SocketEvent.as new file mode 100644 index 0000000..9c0dcb9 --- /dev/null +++ b/FairyGUI-as3/src/ktv/message/socket/SocketEvent.as @@ -0,0 +1,29 @@ +package ktv.message.socket +{ + import flash.events.Event; + + public class SocketEvent extends Event + { + public static const SOCKET_CONNECTED:String="SOCKET_CONNECTED"; + public static const SOCKET_DATA:String="SOCKET_DATA"; + public var data:*=null; + public function SocketEvent(type:String,data:*=null, bubbles:Boolean=false, cancelable:Boolean=false) + { + super(type, bubbles, cancelable); + this.data = data; + } + + override public function clone():Event + { + return super.clone(); + } + + override public function toString():String + { + return super.toString(); + } + + + } +} + diff --git a/FairyGUI-as3/src/ktv/message/socket/SocketManager.as b/FairyGUI-as3/src/ktv/message/socket/SocketManager.as new file mode 100644 index 0000000..4951a50 --- /dev/null +++ b/FairyGUI-as3/src/ktv/message/socket/SocketManager.as @@ -0,0 +1,247 @@ +package ktv.message.socket +{ + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.events.IOErrorEvent; + import flash.events.ProgressEvent; + import flash.events.SecurityErrorEvent; + import flash.events.TimerEvent; + import flash.net.Socket; + import flash.utils.ByteArray; + import flash.utils.Endian; + import flash.utils.Timer; + + import ktv.morn.core.managers.LogManager; + + [Event(name="SocketEvent.SOCKET_CONNECTED", type="ktv.message.socket.SocketEvent")] + [Event(name="SocketEvent.SOCKET_DATA", type="ktv.message.socket.SocketEvent")] + public class SocketManager extends EventDispatcher + { + /** + *测试数据使用的 消息长度 + */ + private const testMessageLenght:int=10000000;//8位数 1000 0000 + + private var _socketIP:String="127.0.0.1"; + private var _socketPort:int=8730; + private var timer:Timer; + + private var socket:Socket; + + private static var instance:SocketManager; + + private var isMessageHead:Boolean=false; + /** + *循环读取的数据 + */ + private var loopByte:ByteArray; + private var socketMessage:SocketMessage; + public function SocketManager() + { + + } + + public function get connected():Boolean + { + return socket.connected; + } + + + public static function getInstance():SocketManager + { + if (!instance) + { + instance=new SocketManager(); + } + return instance; + } + + public function get socketPort():int + { + return _socketPort; + } + + public function set socketPort(value:int):void + { + _socketPort=value; + } + + public function get socketIP():String + { + return _socketIP; + } + + public function set socketIP(value:String):void + { + _socketIP=value; + } + + public function init():void + { + timer=new Timer(1000 * 1); + loopByte=new ByteArray(); + socketMessage=new SocketMessage(); + + socket=new Socket(); + socket.addEventListener(Event.CONNECT, socketConnected); + socket.addEventListener(ProgressEvent.SOCKET_DATA, socketData); + socket.addEventListener(Event.CLOSE, socketClose); + socket.addEventListener(IOErrorEvent.IO_ERROR, io_error); + socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, security_error); + timer.addEventListener(TimerEvent.TIMER, timerRun); + timer.start();//首次延迟发送 + } + + protected function socketConnected(event:Event):void + { + timer.stop(); + timer.reset(); + LogManager.log.info("socket连接成功!"); + sendEvent(SocketEvent.SOCKET_CONNECTED); + } + + protected function timerRun(event:TimerEvent):void + { + socketConnect(); + LogManager.log.error("持续连接socket 次数:" + timer.currentCount); + } + + protected function socketClose(event:Event):void + { + LogManager.log.error("socket连接失败"); + timer.start(); + } + + private function socketConnect():void + { + socket.connect(socketIP, socketPort); + } + + protected function security_error(event:SecurityErrorEvent):void + { + LogManager.log.error("socket连接错误" + event.type + event.toString()); + timer.start(); + } + + protected function io_error(event:IOErrorEvent):void + { + LogManager.log.error("socket连接错误" + event.type); + timer.start(); + } + + protected function socketData(event:ProgressEvent):void + { + var tempByte:ByteArray=new ByteArray(); + socket.readBytes(tempByte); + var testMessage:String=tempByte.readMultiByte(tempByte.length,"UTF8"); + if(testMessage.indexOf(testMessageLenght.toString()) != -1)//查找发来的数据是否是测试数据 + { + testMessage=testMessage.replace(testMessageLenght.toString(),""); + getMessage(testMessage,testMessageLenght); + }else + { + loopByte.position=loopByte.length; //从指定的位置开始写入 + tempByte.position=0; + loopByte.writeBytes(tempByte); + parseSocketData(); + } + + } + + private function parseSocketData():void + { + if (loopByte.length >= SocketMessage.RECEIVE_MESSAGE_HEAD_LENGTH) + { + if (!isMessageHead) + { + isMessageHead=true; + socketMessage.headByte.writeBytes(loopByte, 0, SocketMessage.RECEIVE_MESSAGE_HEAD_LENGTH); + } + if (isMessageHead) + { + trace("读取消息中..." + loopByte.length + "/" + socketMessage.totalLength); + if (loopByte.length >= socketMessage.totalLength) + { + socketMessage.dataByte.writeBytes(loopByte, SocketMessage.RECEIVE_MESSAGE_HEAD_LENGTH, socketMessage.dataLength); + //多余的数据 + var excessDataLength:int=loopByte.length - socketMessage.totalLength; + if(excessDataLength == 0)//调整trace 顺序 + getMessage(socketMessage.data,socketMessage.dataLength); + if (excessDataLength == 0) //截取完毕 + { + isMessageHead=false; + loopByte.clear(); + socketMessage.clear(); + } + else + { + var temp:ByteArray=new ByteArray(); + loopByte.position=socketMessage.totalLength; + loopByte.readBytes(temp, 0, excessDataLength); + loopByte=temp; + isMessageHead=false; + socketMessage.clear(); + parseSocketData(); + } + } + } + } + } + + /** + *获取后台发来的消息 + * @param data + */ + public function getMessage(data:String,dataLength:int=testMessageLenght):void + { + LogManager.log.receive(dataLength + data); + sendEvent(SocketEvent.SOCKET_DATA, data); + } + + public function sendEvent(type:String,data:*=null):void + { + this.dispatchEvent(new SocketEvent(type, data)); + } + + /** + *发送消息给后台 + * @param message + * + */ + public function sendMessage(message:String):void + { + if (socket && socket.connected && message) + { + var byteData:ByteArray=new ByteArray(); + var byteHead:ByteArray=new ByteArray(); + byteData.writeUTFBytes(message); //4 个字节 的 消息长度 + byteHead.endian=Endian.LITTLE_ENDIAN; + byteHead.writeInt(byteData.length); + socket.writeBytes(byteHead); + socket.writeBytes(byteData); + byteHead.position=0; + byteData.position=0; + LogManager.log.send("socket发送消息:"+ byteHead.readUnsignedInt() + byteData.readUTFBytes(byteData.length)); + socket.flush(); + } + else + { + LogManager.log.error("socket未连接不能推送消息" + message); + } + } + + public function dispose():void + { + socket.removeEventListener(Event.CONNECT, socketConnected); + socket.removeEventListener(ProgressEvent.SOCKET_DATA, socketData); + socket.removeEventListener(Event.CLOSE, socketClose); + socket.removeEventListener(IOErrorEvent.IO_ERROR, io_error); + socket.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, security_error); + socket.close(); + timer.removeEventListener(TimerEvent.TIMER, timerRun); + timer.stop(); + socketMessage.clear(); + } + } +} + diff --git a/FairyGUI-as3/src/ktv/message/socket/SocketMessage.as b/FairyGUI-as3/src/ktv/message/socket/SocketMessage.as new file mode 100644 index 0000000..8087154 --- /dev/null +++ b/FairyGUI-as3/src/ktv/message/socket/SocketMessage.as @@ -0,0 +1,60 @@ +package ktv.message.socket +{ + import flash.utils.ByteArray; + import flash.utils.Endian; + + public class SocketMessage + { + public var headByte:ByteArray=new ByteArray(); + public var dataByte:ByteArray=new ByteArray(); + + /** + *定义消息的长度 4 + */ + public static const RECEIVE_MESSAGE_HEAD_LENGTH:int=4; + public function SocketMessage() + { + + } + + public function get headLength():int + { + return SocketMessage.RECEIVE_MESSAGE_HEAD_LENGTH; + } + + public function get dataLength():int + { + if(headByte.length>=SocketMessage.RECEIVE_MESSAGE_HEAD_LENGTH) + { + headByte.position=0; + headByte.endian=Endian.LITTLE_ENDIAN; // C# 的字节数组转换 int 值的那个方法 是这种字节顺序 + return headByte.readInt(); + } + return 0; + } + /** + *返回消息头的长度+消息的长度 + * @return + * + */ + public function get totalLength():int + { + return headByte.length+dataLength; + } + + public function get data():String + { + var str:String="空数据"; + dataByte.position=0; + str=dataByte.readUTFBytes(dataByte.length); + return str; + } + + public function clear():void + { + headByte.clear(); + dataByte.clear(); + } + } +} + diff --git a/FairyGUI-as3/src/ktv/morn/core/handlers/Handler.as b/FairyGUI-as3/src/ktv/morn/core/handlers/Handler.as new file mode 100644 index 0000000..07633e7 --- /dev/null +++ b/FairyGUI-as3/src/ktv/morn/core/handlers/Handler.as @@ -0,0 +1,37 @@ +/** + * Morn UI Version 3.0 http://www.mornui.com/ + * Feedback yungzhu@gmail.com http://weibo.com/newyung + */ +package ktv.morn.core.handlers { + + /**处理器*/ + public class Handler { + /**处理方法*/ + public var method:Function; + /**参数*/ + public var args:Array; + + public function Handler(method:Function = null, args:Array = null) { + this.method = method; + this.args = args; + } + + /**执行处理*/ + public function execute():void { + if (method != null) { + method.apply(null, args); + } + } + + /**执行处理(增加数据参数)*/ + public function executeWith(data:Array):void { + if (data == null) { + return execute(); + } + if (method != null) { + method.apply(null, args ? args.concat(data) : data); + } + } + } +} + diff --git a/FairyGUI-as3/src/ktv/morn/core/managers/LoaderManager.as b/FairyGUI-as3/src/ktv/morn/core/managers/LoaderManager.as new file mode 100644 index 0000000..96f5344 --- /dev/null +++ b/FairyGUI-as3/src/ktv/morn/core/managers/LoaderManager.as @@ -0,0 +1,282 @@ +/** + * Morn UI Version 3.0 http://www.mornui.com/ + * Feedback yungzhu@gmail.com http://weibo.com/newyung + */ +package ktv.morn.core.managers +{ + import flash.events.Event; + import flash.events.EventDispatcher; + + import ktv.morn.core.handlers.Handler; + + /**队列全部加载后触发*/ + [Event(name="complete", type="flash.events.Event")] + + /**加载管理器(单队列顺序加载)*/ + public class LoaderManager extends EventDispatcher + { + private var _resInfos:Array=[]; + private var _resLoader:ResLoader=new ResLoader(); + private var _isLoading:Boolean; + private var _failRes:Object={}; + private var _retryNum:int=1; + + private static var instance:LoaderManager; + public function LoaderManager() + { + init(); + } + + public static function getInstance():LoaderManager + { + if(!instance) + { + instance=new LoaderManager(); + } + return instance; + } + + public function init():void + { + _resLoader.init(); + } + + /** 加载 + * @param url 地址 + * @param type 类型 + * @param complete 结束回调,并返回加载内容 + * @param progress 进度回调,返回进度百分率 + * @param error 错误回调,返回url + * @param isCacheContent 是否缓存加载内容*/ + public function load(url:String, type:uint, complete:Handler=null, progress:Handler=null, error:Handler=null, isCacheContent:Boolean=true):void + { + var resInfo:ResInfo=new ResInfo(); + resInfo.url=url; + resInfo.type=type; + resInfo.complete=complete; + resInfo.progress=progress; + resInfo.error=error; + resInfo.isCacheContent=isCacheContent; + + var content:*=ResLoader.getResLoaded(resInfo.url); + if (content != null) + { + endLoad(resInfo, content); + } + else + { + _resInfos.push(resInfo); + checkNext(); + } + } + + private function checkNext():void + { + if (_isLoading) + { + return; + } + _isLoading=true; + while (_resInfos.length > 0) + { + var resInfo:ResInfo=_resInfos.shift(); + var content:*=ResLoader.getResLoaded(resInfo.url); + if (content != null) + { + endLoad(resInfo, content); + } + else + { + _resLoader.load(resInfo.url, resInfo.type, new Handler(loadComplete, [resInfo]), resInfo.progress, resInfo.isCacheContent); + return; + } + } + _isLoading=false; + if (_resInfos.length == 0) + { + if (hasEventListener(Event.COMPLETE)) + { + dispatchEvent(new Event(Event.COMPLETE)); + } + } + } + + private function loadComplete(resInfo:ResInfo, content:*):void + { + endLoad(resInfo, content); + _isLoading=false; + checkNext(); + } + + private function endLoad(resInfo:ResInfo, content:*):void + { + //如果加载后为空,放入队列末尾重试 + if (content == null) + { + var errorCount:int=_failRes[resInfo.url] || 0; + if (errorCount < _retryNum) + { + _failRes[resInfo.url]=errorCount + 1; + _resInfos.push(resInfo); + return; + } + else + { + LogManager.log.warn("load error:", resInfo.url); + if (resInfo.error != null) + { + resInfo.error.executeWith([resInfo.url]); + } + } + } + if (resInfo.complete != null) + { + resInfo.complete.executeWith([content]); + } + } + + /**加载SWF,返回1*/ + public function loadSWF(url:String, complete:Handler=null, progress:Handler=null, error:Handler=null, isCacheContent:Boolean=true):void + { + load(url, ResLoader.SWF, complete, progress, error, isCacheContent); + } + + /**加载位图,返回Bitmapdata*/ + public function loadBMD(url:String, complete:Handler=null, progress:Handler=null, error:Handler=null, isCacheContent:Boolean=true):void + { + load(url, ResLoader.BMD, complete, progress, error, isCacheContent); + } + + /**加载TXT,XML,返回String*/ + public function loadTXT(url:String, complete:Handler=null, progress:Handler=null, error:Handler=null, isCacheContent:Boolean=true):void + { + load(url, ResLoader.TXT, complete, progress, error, isCacheContent); + } + + /**加载二进制数据,返回Object*/ + public function loadDB(url:String, complete:Handler=null, progress:Handler=null, error:Handler=null, isCacheContent:Boolean=true):void + { + load(url, ResLoader.DB, complete, progress, error, isCacheContent); + } + + /**加载BYTE,返回ByteArray*/ + public function loadBYTE(url:String, complete:Handler=null, progress:Handler=null, error:Handler=null, isCacheContent:Boolean=true):void + { + load(url, ResLoader.BYTE, complete, progress, error, isCacheContent); + } + + /**获得已加载的资源*/ + public function getResLoaded(url:String):* + { + return ResLoader.getResLoaded(url); + } + + /**删除已加载的资源*/ + public function clearResLoaded(url:String):void + { + ResLoader.clearResLoaded(url); + } + + /**尝试关闭加载*/ + public function tryToCloseLoad(url:String):void + { + if (_resLoader.url == url) + { + _resLoader.tryToCloseLoad(); + LogManager.log.warn("Try to close load:", url); + _isLoading=false; + checkNext(); + } + } + + /**停止并清理当前未完成的加载*/ + public function stopAndClearLoad():void + { + _resInfos.length=0; + _resLoader.tryToCloseLoad(); + _isLoading=false; + } + + /**加载出错后的重试次数,默认重试一次*/ + public function get retryNum():int + { + return _retryNum; + } + + public function set retryNum(value:int):void + { + _retryNum=value; + } + + /**加载数组里面的资源 + * @param arr 简单:["a.swf","b.swf"],复杂[{url:"a.swf",type:ResLoader.SWF,size:100},{url:"a.png",type:ResLoader.BMD,size:50}]*/ + public function loadAssets(arr:Array, complete:Handler=null, progress:Handler=null, error:Handler=null, isCacheContent:Boolean=true):void + { + var itemCount:int=arr.length; + var itemloaded:int=0; + var totalSize:int=0; + var totalLoaded:int=0; + for (var i:int=0; i < itemCount; i++) + { + var item:Object=arr[i]; + if (item is String) + { + item={url: item, type: ResLoader.checkType(String(item)), size: 1}; + } + totalSize+=item.size; + load(item.url, item.type, new Handler(loadAssetsComplete, [item.size]), new Handler(loadAssetsProgress, [item.size]), error, isCacheContent); + } + + function loadAssetsComplete(size:int, content:*):void + { + itemloaded++; + totalLoaded+=size; + if (itemloaded == itemCount) + { + if (complete != null) + { + if(complete.args) + { + complete.executeWith(complete.args); + }else + { + complete.execute(); + } + } + } + } + + function loadAssetsProgress(size:int, value:Number):void + { + if (progress != null) + { + value=(totalLoaded + size * value) / totalSize; + progress.executeWith([value]); + } + } + } + + public function dispose():void + { + _resInfos.length=0; + _resLoader.dispose(); + _failRes={}; + } + + } +} +import ktv.morn.core.handlers.Handler; + +class ResInfo +{ + public function ResInfo() + { + } + public var url:String; + public var type:int; + public var complete:Handler; + public var progress:Handler; + public var error:Handler; + public var isCacheContent:Boolean; +} + diff --git a/FairyGUI-as3/src/ktv/morn/core/managers/LogManager.as b/FairyGUI-as3/src/ktv/morn/core/managers/LogManager.as new file mode 100644 index 0000000..151eb2e --- /dev/null +++ b/FairyGUI-as3/src/ktv/morn/core/managers/LogManager.as @@ -0,0 +1,524 @@ +package ktv.morn.core.managers +{ + import flash.display.Bitmap; + import flash.display.BitmapData; + import flash.display.Sprite; + import flash.display.Stage; + import flash.events.Event; + import flash.events.FocusEvent; + import flash.events.KeyboardEvent; + import flash.events.MouseEvent; + import flash.filters.GlowFilter; + import flash.system.System; + import flash.text.TextField; + import flash.text.TextFormat; + import flash.text.TextFormatAlign; + import flash.ui.Keyboard; + + /**日志管理器*/ + public class LogManager extends Sprite + { + private var logFontName:String="Microsoft YaHei"; + private var _msgs:Array=[]; + private var _box:Sprite; + private var _textField:TextField; + private var _filter:TextField; + private var _filters:Array=[]; + private var _canScroll:Boolean=true; + private var _scroll:TextField; + private var _maxMsg:int=1000; + private var _move:Bitmap; + private var _close:TextField; + private var colorArray:Array=[0xff0011, 0x77ff99, 0x99ffee, 0xff22dd, 0xff2211, 0x9bd948, 0x96ff73, 0x80ff00, 0x99ffff, 0xb9ff73, 0xff794c, 0xff4c4d, 0xffbfbf, 0xffdc73, 0xbfff00, 0x99ffe5, 0xbfffff, 0xff0000, 0x00ff00, 0xff26ff]; + + private var clear2:TextField; + + private var copy:TextField; + + private var bitmapBg:Bitmap; + + private var txtSize:int=12; + + private var titleTextFormat:TextFormat; + + private var title:TextField; + public static const BG_WIDTH:int=700; + public static const BG_HEIGHT:int=500; + private var _titleName:String="Debug"; + public var stageWindow:Stage; + + public static const log:LogManager=new LogManager(); + public static const TYPE_WINDOW:String="TYPE_WINDOW"; + public static const TYPE_MC:String="TYPE_MC"; + private var _type:String=TYPE_MC; + + private var _moveBox:Sprite; + + public function LogManager() + { + addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); + } + + private function init():void + { + //容器 + _box=new Sprite(); + bitmapBg=createBitmap(BG_WIDTH, BG_HEIGHT, 0x272f3b, 0.9) as Bitmap; + _box.addChild(bitmapBg); + _box.visible=false; + addChild(_box); + //筛选栏 + _filter=new TextField(); + _filter.width=270; + _filter.height=20; + _filter.type="input"; + _filter.textColor=0xffffff; + _filter.border=true; + _filter.borderColor=0xBFBFBF; + _filter.defaultTextFormat=new TextFormat(logFontName, txtSize); + _filter.addEventListener(KeyboardEvent.KEY_DOWN, onFilterKeyDown); + _filter.addEventListener(FocusEvent.FOCUS_OUT, onFilterFocusOut); + _box.addChild(_filter); + //控制按钮 + clear2=createLinkButton("Clear"); + clear2.addEventListener(MouseEvent.CLICK, onClearClick); + clear2.x=280; + _box.addChild(clear2); + _scroll=createLinkButton("Pause"); + _scroll.addEventListener(MouseEvent.CLICK, onScrollClick); + _scroll.x=315; + _box.addChild(_scroll); + copy=createLinkButton("Copy"); + copy.addEventListener(MouseEvent.CLICK, onCopyClick); + copy.x=350; + _box.addChild(copy); + //信息栏 + _textField=new TextField(); + _textField.width=BG_WIDTH; + _textField.height=480; + _textField.y=20; + _textField.multiline=true; + _textField.wordWrap=true; + _textField.defaultTextFormat=new TextFormat(logFontName); + _textField.textColor=0xFF9900; + _box.addChild(_textField); + + _move=createBitmap(BG_WIDTH - _filter.width, 22, 0xe86200, 1) as Bitmap; + moveBox=new Sprite(); + if(type==TYPE_MC) + { + moveBox.addEventListener(MouseEvent.MOUSE_DOWN, onMoveDown); + } + moveBox.x=_filter.width; + moveBox.addChild(_move); + _box.addChildAt(moveBox, 1); + _close=createMoveButton("关闭"); + _close.addEventListener(MouseEvent.CLICK, onCloseClick); + _close.x=moveBox.x + moveBox.width - _close.width; + _box.addChildAt(_close, 3); + title=new TextField(); + title.mouseEnabled=false; + title.x=copy.x + copy.width; + title.y=copy.y; + title.selectable=false; + title.textColor=0xffffff; + title.width=_close.x - (copy.x + copy.width); + title.height=22; + titleTextFormat=new TextFormat(logFontName); + titleTextFormat.size=txtSize; + titleTextFormat.letterSpacing=1; + titleTextFormat.align=TextFormatAlign.CENTER; + title.defaultTextFormat=titleTextFormat; + title.text=titleName; + _box.addChild(title); + stageWindow.addEventListener(KeyboardEvent.KEY_DOWN, onStageKeyDown); + addEventListener(Event.REMOVED_FROM_STAGE, removeStage); + addEventListener(MouseEvent.MOUSE_WHEEL, box_MOUSE_WHEEL); + } + + private function createBitmap(width:int, height:int, color:uint=0, alpha:Number=1):Bitmap + { + var bitmap:Bitmap=new Bitmap(new BitmapData(1, 1, false, color)); + bitmap.alpha=alpha; + bitmap.width=width; + bitmap.height=height; + return bitmap; + } + + protected function box_MOUSE_WHEEL(event:MouseEvent):void + { + if (_box.visible) + { + if (event.ctrlKey) + { + changeTextSize(event.delta); + } + } + } + + protected function removeStage(event:Event):void + { + removeEventListener(Event.REMOVED_FROM_STAGE, removeStage); + dispose(); + } + + public function dispose():void + { + clear(); + _textField.text=""; + _msgs.length=0; + _filters.length=0; + _filter.removeEventListener(KeyboardEvent.KEY_DOWN, onFilterKeyDown); + _filter.removeEventListener(FocusEvent.FOCUS_OUT, onFilterFocusOut); + clear2.removeEventListener(MouseEvent.CLICK, onClearClick); + _scroll.removeEventListener(MouseEvent.CLICK, onScrollClick); + copy.removeEventListener(MouseEvent.CLICK, onCopyClick); + _move.removeEventListener(MouseEvent.MOUSE_DOWN, onMoveDown); + _close.removeEventListener(MouseEvent.CLICK, onCloseClick); + removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); + stage.removeEventListener(MouseEvent.MOUSE_UP, onMoveDown); + stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMoveDown); + stage.removeEventListener(KeyboardEvent.KEY_DOWN, onStageKeyDown); + removeEventListener(MouseEvent.MOUSE_WHEEL, box_MOUSE_WHEEL); + hideToggle(); + clear2.filters=null; + _scroll.filters=null; + copy.filters=null; + _move.filters=null; + _close.filters=null; + bitmapBg.bitmapData.dispose(); + bitmapBg=null; + _box=null; + _textField=null; + _filter=null; + _scroll=null; + _move=null; + _close=null; + trace("清理LogManager"); + } + + private function onMoveDown(e:MouseEvent):void + { + if (e.type == MouseEvent.MOUSE_DOWN) + { + this.startDrag(); + stageWindow.addEventListener(MouseEvent.MOUSE_UP, onMoveDown); + stageWindow.addEventListener(MouseEvent.MOUSE_MOVE, onMoveDown); + } + else if (e.type == MouseEvent.MOUSE_MOVE) + { + e.updateAfterEvent(); + } + else if (e.type == MouseEvent.MOUSE_UP) + { + this.stopDrag(); + stageWindow.removeEventListener(MouseEvent.MOUSE_UP, onMoveDown); + stageWindow.removeEventListener(MouseEvent.MOUSE_MOVE, onMoveDown); + } + } + + private function onCloseClick(e:MouseEvent):void + { + hideToggle(); + } + + public function get debugIsShow():Boolean + { + return this._box.visible; + } + + private function createMoveButton(text:String):TextField + { + var tf:TextField=new TextField(); + tf.selectable=false; + tf.autoSize="center"; + tf.textColor=0xffffff; + tf.backgroundColor=0xe86210; + tf.border=true; + tf.background=true; + tf.width=80; + tf.height=22; + tf.filters=[new GlowFilter(0xffffff, 0.8, 2, 2, 10)]; + tf.text=text; + return tf; + } + + private function onAddedToStage(e:Event):void + { + if(!stageWindow) + { + stageWindow=stage; + } + stageWindow.addEventListener(KeyboardEvent.KEY_DOWN, onStageKeyDown); + init(); + } + + private function createLinkButton(text:String):TextField + { + var tf:TextField=new TextField(); + tf.selectable=false; + tf.autoSize="left"; + tf.textColor=0x0080C0; + tf.backgroundColor=0xff0000; + tf.border=true; + tf.text=text; + tf.filters=[new GlowFilter(0xffffff, 0.8, 2, 2, 10)]; + return tf; + } + + private function onCopyClick(e:MouseEvent):void + { + System.setClipboard(_textField.text); + } + + private function onScrollClick(e:MouseEvent):void + { + _canScroll=!_canScroll; + _scroll.text=_canScroll ? "Pause" : "Start"; + if (_canScroll) + { + refresh(null); + } + } + + private function onClearClick(e:MouseEvent):void + { + clear(); + txtSize=12; + changeTextSize(); + } + + private function onFilterKeyDown(e:KeyboardEvent):void + { + if (e.keyCode == Keyboard.ENTER) + { + stageWindow.focus=_box; + } + } + + private function onFilterFocusOut(e:FocusEvent):void + { + _filters=Boolean(_filter.text) ? _filter.text.split(",") : []; + refresh(null); + } + + private function onStageKeyDown(e:KeyboardEvent):void + { + if (e.ctrlKey && e.keyCode == Keyboard.L) + { + toggle(); + } + } + + /**清理所有日志*/ + public function clear():void + { + _msgs.length=0; + _textField.htmlText=""; + } + + /**信息*/ + public function info(... args):void + { + print("[info]", args, 0x3EBDF4); + } + + /**消息*/ + public function send(... args):void + { + print("[send]", args, 0x00C400); + } + /**消息*/ + public function receive(... args):void + { + print("[receive]", args, 0x99ffee); + } + + /**调试*/ + public function debug(... args):void + { + print("[debug]", args, 0xdddd00); + } + + /**错误*/ + public function error(... args):void + { + print("[error]", args, 0xFF4646); + } + + /**警告*/ + public function warn(... args):void + { + print("[warn]", args, 0xFFFF80); + } + + public function print(type:String, args:Array, color:uint):void + { + trace(type, args.join(" ")); + if (!_box || !_box.visible) + return; + var msg:String="" + type + "" + args.join(" ") + ""; + if (_msgs.length > _maxMsg) + { + _msgs.length=0; + } + _msgs.push(msg); + if (_box.visible) + { + refresh(msg); + } + } + + /**打印XML信息*/ + public function debugXML(str:String):void + { + if (_box.visible) + { + var startIndex:int=_textField.text.length; + _textField.appendText(str); + var textFor:TextFormat=new TextFormat(logFontName, null, colorArray[int(colorArray.length * Math.random())]); + _textField.setTextFormat(textFor, startIndex, _textField.text.length); + if (_canScroll) + { + _textField.scrollV=_textField.maxScrollV; + } + } + if (_textField.text.length > 1000) + { +// clear(); + } + } + + + /**隐藏面板*/ + public function hideToggle():void + { + _box.visible=false; + _textField.text=""; + _textField.htmlText=""; + } + + public function changeTextSize(size:int=0):void + { + txtSize+=size; + var textFor:TextFormat=new TextFormat(logFontName, txtSize); + _textField.setTextFormat(textFor); + } + + /**打开或隐藏面板*/ + public function toggle():void + { + _box.visible=!_box.visible; + if (_box.visible) + { + refresh(null); + } + else + { + hideToggle(); + } + } + + public function showToggle():void + { + _box.visible=true; + refresh(null); + } + + /**根据过滤刷新显示*/ + private function refresh(newMsg:String):void + { + var msg:String=""; + if (newMsg != null) + { + if (isFilter(newMsg)) + { + msg=(_textField.htmlText || "") + newMsg; + _textField.htmlText=msg; + } + } + else + { + _textField.htmlText=getMsgFromCache(); + } + if (_canScroll) + { + _textField.scrollV=_textField.maxScrollV; + } + } + + private function getMsgFromCache():String + { + var msg:String=""; + for each (var item:String in _msgs) + { + if (isFilter(item)) + { + msg+=item; + } + } + return msg; + } + + /**是否是筛选属性*/ + private function isFilter(msg:String):Boolean + { + if (_filters.length < 1) + { + return true; + } + for each (var item:String in _filters) + { + if (msg.indexOf(item) > -1) + { + return true; + } + } + return false; + } + + public function get titleName():String + { + return _titleName; + } + + public function set titleName(value:String):void + { + _titleName=value; + title.defaultTextFormat=titleTextFormat; + title.text=titleName; + } + + public function get type():String + { + return _type; + } + + public function set type(value:String):void + { + _type=value; + } + + public function get moveBox():Sprite + { + return _moveBox; + } + + public function set moveBox(value:Sprite):void + { + _moveBox = value; + } + + public function get close():TextField + { + return _close; + } + + public function set close(value:TextField):void + { + _close = value; + } + + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/ktv/morn/core/managers/LogManagerWindow.as b/FairyGUI-as3/src/ktv/morn/core/managers/LogManagerWindow.as new file mode 100644 index 0000000..6ac9a75 --- /dev/null +++ b/FairyGUI-as3/src/ktv/morn/core/managers/LogManagerWindow.as @@ -0,0 +1,153 @@ +package ktv.morn.core.managers +{ + import flash.display.NativeWindow; + import flash.display.NativeWindowInitOptions; + import flash.display.NativeWindowSystemChrome; + import flash.display.NativeWindowType; + import flash.display.Sprite; + import flash.display.Stage; + import flash.display.StageAlign; + import flash.display.StageScaleMode; + import flash.events.Event; + import flash.events.KeyboardEvent; + import flash.events.MouseEvent; + import flash.geom.Rectangle; + import flash.ui.Keyboard; + + /**日志管理器*/ + public class LogManagerWindow extends Sprite + { + public var logWindow:NativeWindow; + private var _logWindowRect:Rectangle=new Rectangle(0,0,LogManager.BG_WIDTH,LogManager.BG_HEIGHT); + public var mainStage:Stage; + public function LogManagerWindow(mian:Stage) + { + this.mainStage=mian; + init(); + } + + private function init():void + { + if(!logWindow) + { + logWindow=creatWindow(logWindowRect); + LogManager.log.type=LogManager.TYPE_WINDOW; + LogManager.log.stageWindow=logWindow.stage; + LogManager.log.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); + logWindow.stage.addChild(LogManager.log); + logWindow.activate(); + } + if(logWindow.visible) + { + logWindow.orderToFront(); + logWindow.alwaysInFront=logWindow.owner.alwaysInFront=true; + } + } + + public function dispose():void + { + LogManager.log.removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); + mainStage.nativeWindow.stage.removeEventListener(KeyboardEvent.KEY_DOWN, onStageKeyDown); + logWindow.stage.removeEventListener(KeyboardEvent.KEY_DOWN, onStageKeyDown); + LogManager.log.stageWindow.removeEventListener(MouseEvent.MOUSE_UP, onMoveDown); + LogManager.log.stageWindow.removeEventListener(MouseEvent.MOUSE_MOVE, onMoveDown); + LogManager.log.close.removeEventListener(MouseEvent.CLICK, onCloseClick); + if(logWindow) + { + logWindow.close(); + } + trace("清理LogManagerWindow"); + } + + private function onAddedToStage(e:Event):void + { + mainStage.nativeWindow.stage.addEventListener(KeyboardEvent.KEY_DOWN, onStageKeyDown); + logWindow.stage.addEventListener(KeyboardEvent.KEY_DOWN, onStageKeyDown); + LogManager.log.moveBox.addEventListener(MouseEvent.MOUSE_DOWN, onMoveDown); + LogManager.log.close.addEventListener(MouseEvent.CLICK, onCloseClick); + } + + private function onCloseClick(e:MouseEvent):void + { + toggle(false); + } + + private function onMoveDown(e:MouseEvent):void + { + if (e.type == MouseEvent.MOUSE_DOWN) + { + LogManager.log.stageWindow.nativeWindow.startMove(); + LogManager.log.stageWindow.addEventListener(MouseEvent.MOUSE_UP, onMoveDown); + LogManager.log.stageWindow.addEventListener(MouseEvent.MOUSE_MOVE, onMoveDown); + } + else if (e.type == MouseEvent.MOUSE_MOVE) + { + e.updateAfterEvent(); + } + else if (e.type == MouseEvent.MOUSE_UP) + { + LogManager.log.stageWindow.removeEventListener(MouseEvent.MOUSE_UP, onMoveDown); + LogManager.log.stageWindow.removeEventListener(MouseEvent.MOUSE_MOVE, onMoveDown); + } + } + + private function onStageKeyDown(e:KeyboardEvent):void + { + if (e.ctrlKey && e.keyCode == Keyboard.L) + { + var isShow:Boolean=!logWindow.visible; + toggle(logWindow.visible); + } + } + + /**打开或隐藏面板*/ + public function toggle(isShow:Boolean):void + { + logWindow.visible=isShow; + if(logWindow.visible) + { + logWindow.orderToFront(); + logWindow.alwaysInFront=logWindow.owner.alwaysInFront=true; + LogManager.log.showToggle(); + }else + { + logWindow.alwaysInFront=false; + LogManager.log.hideToggle(); + } + } + + /** + *创建新窗口(窗口默认最小宽度144) + * xx:X坐标, yy:Y坐标, wid:宽度, hei:高度 + */ + private function creatWindow(rect:Rectangle, transparent:Boolean=true, nativeWindowType:String=NativeWindowType.NORMAL):NativeWindow + { + var option:NativeWindowInitOptions=new NativeWindowInitOptions; + option.renderMode=mainStage.nativeWindow.renderMode; + option.systemChrome=NativeWindowSystemChrome.NONE; + option.transparent=transparent; + option.type=nativeWindowType; + option.owner=mainStage.nativeWindow; + var win:NativeWindow=new NativeWindow(option); + win.stage.align=StageAlign.TOP_LEFT; + win.stage.scaleMode=StageScaleMode.NO_SCALE; + win.bounds=rect; + return win; + } + + public function get logWindowRect():Rectangle + { + return _logWindowRect; + } + + public function set logWindowRect(value:Rectangle):void + { + _logWindowRect = value; + if(logWindow) + { + logWindow.bounds=_logWindowRect; + } + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/ktv/morn/core/managers/MassLoaderManager.as b/FairyGUI-as3/src/ktv/morn/core/managers/MassLoaderManager.as new file mode 100644 index 0000000..76a836c --- /dev/null +++ b/FairyGUI-as3/src/ktv/morn/core/managers/MassLoaderManager.as @@ -0,0 +1,273 @@ +/** + * Morn UI Version 3.0 http://www.mornui.com/ + * Feedback yungzhu@gmail.com http://weibo.com/newyung + */ +package ktv.morn.core.managers { + import flash.events.Event; + import flash.events.EventDispatcher; + + import ktv.morn.core.handlers.Handler; + + /**队列全部加载后触发*/ + [Event(name="complete",type="flash.events.Event")] + + /**批量加载器 多线程(默认3个线程),5个优先级(0最快,4最慢,默认为1)*/ + public class MassLoaderManager extends EventDispatcher { + private var _resLoaders:Vector. = new Vector.(); + private var _maxLoader:int = 3; + private var _loaderCount:int = 0; + private var _resInfos:Array = []; + private var _resMap:Object = {}; + private var _maxPriority:uint = 5; + private var _failRes:Object = {}; + private var _retryNum:int = 1; + + private static var instance:MassLoaderManager; + public function MassLoaderManager() { + init(); + } + + public static function getInstance():MassLoaderManager + { + if(!instance) + { + instance=new MassLoaderManager(); + } + return instance; + } + + public function init():void + { + for (var i:int = 0; i < _maxPriority; i++) { + _resInfos[i] = []; + } + } + public function load(url:String, type:uint, priority:uint = 1, complete:Handler = null, progress:Handler = null, error:Handler = null, isCacheContent:Boolean = true):void { + var resInfo:ResInfo = new ResInfo(); + resInfo.url = url; + resInfo.type = type; + resInfo.completeHandlers.push(complete); + resInfo.progressHandlers.push(progress); + resInfo.errorHandlers.push(error); + resInfo.isCacheContent = isCacheContent; + + var content:* = ResLoader.getResLoaded(resInfo.url); + if (content != null) { + endLoad(resInfo, content); + } else { + var info:ResInfo = _resMap[url]; + if (info == null) { + _resMap[url] = resInfo; + priority = priority < _maxPriority ? priority : _maxPriority - 1; + _resInfos[priority].push(resInfo); + checkNext(); + } else { + info.completeHandlers.push(complete); + info.progressHandlers.push(progress); + info.errorHandlers.push(error); + } + } + } + + private function checkNext():void { + if (_loaderCount >= _maxLoader) { + return; + } + for (var i:int = 0; i < _maxPriority; i++) { + var infos:Array = _resInfos[i]; + if(!infos) continue; + while (infos.length > 0) { + var resInfo:ResInfo = infos.shift(); + if(!resInfo) continue; + var content:* = ResLoader.getResLoaded(resInfo.url); + if (content != null) { + endLoad(resInfo, content); + } else { + doLoad(resInfo); + return; + } + } + } + if (hasEventListener(Event.COMPLETE)) { + dispatchEvent(new Event(Event.COMPLETE)); + } + } + + private function doLoad(resInfo:ResInfo):void { + _loaderCount++; + var resLoader:ResLoader = _resLoaders.length > 0 ? _resLoaders.pop() : new ResLoader(); + resLoader.init(); + resLoader.load(resInfo.url, resInfo.type, new Handler(loadComplete, [resLoader, resInfo]), new Handler(loadProgress, [resInfo])); + } + + private function loadProgress(resInfo:ResInfo, progress:Number):void { + for each (var handler:Handler in resInfo.progressHandlers) { + if (handler != null) { + handler.executeWith([progress]); + } + } + } + + private function loadComplete(resLoader:ResLoader, resInfo:ResInfo, content:*):void { + _resLoaders.push(resLoader); + endLoad(resInfo, content); + _loaderCount--; + checkNext(); + } + + private function endLoad(resInfo:ResInfo, content:*):void { + //如果加载后为空,放入队列末尾重试 + if (content == null) { + var errorCount:int = _failRes[resInfo.url] || 0; + if (errorCount < _retryNum) { + _failRes[resInfo.url] = errorCount + 1; + _resInfos[_maxPriority - 1].push(resInfo); + return; + } else { + LogManager.log.warn("mass load error:", resInfo.url); + for each (var error:Handler in resInfo.errorHandlers) { + if (error != null) { + error.executeWith([resInfo.url]); + } + } + } + } + delete _resMap[resInfo.url]; + for each (var handler:Handler in resInfo.completeHandlers) { + if (handler != null) { + handler.executeWith([content]); + } + } + } + + /**加载SWF,返回1*/ + public function loadSWF(url:String, priority:uint = 1, complete:Handler = null, progress:Handler = null, error:Handler = null, isCacheContent:Boolean = true):void { + load(url, ResLoader.SWF, priority, complete, progress, error, isCacheContent); + } + + /**加载位图,返回Bitmapdata*/ + public function loadBMD(url:String, priority:uint = 1, complete:Handler = null, progress:Handler = null, error:Handler = null, isCacheContent:Boolean = true):void { + load(url, ResLoader.BMD, priority, complete, progress, error, isCacheContent); + } + + /**加载TXT,XML,返回String*/ + public function loadTXT(url:String, priority:uint = 1, complete:Handler = null, progress:Handler = null, error:Handler = null, isCacheContent:Boolean = true):void { + load(url, ResLoader.TXT, priority, complete, progress, error, isCacheContent); + } + + /**加载二进制数据,返回Object*/ + public function loadDB(url:String, priority:uint = 1, complete:Handler = null, progress:Handler = null, error:Handler = null, isCacheContent:Boolean = true):void { + load(url, ResLoader.DB, priority, complete, progress, error, isCacheContent); + } + + /**加载BYTE,返回ByteArray*/ + public function loadBYTE(url:String, priority:uint = 1, complete:Handler = null, progress:Handler = null, error:Handler = null, isCacheContent:Boolean = true):void { + load(url, ResLoader.BYTE, priority, complete, progress, error, isCacheContent); + } + + /**最大下载线程,默认为3个*/ + public function get maxLoader():int { + return _maxLoader; + } + + public function set maxLoader(value:int):void { + _maxLoader = value; + } + + /**获得已加载的资源*/ + public function getResLoaded(url:String):* { + return ResLoader.getResLoaded(url); + } + + /**删除已加载的资源*/ + public function clearResLoaded(url:String):void { + ResLoader.clearResLoaded(url); + } + + /**停止并清理当前未完成的加载*/ + public function stopAndClearLoad():void { + _resInfos.length = 0; + for each (var loader:ResLoader in _resLoaders) { + loader.tryToCloseLoad(); + } + _loaderCount = 0; + _resMap = {}; + } + + /**加载出错后的重试次数,默认重试一次*/ + public function get retryNum():int { + return _retryNum; + } + + public function set retryNum(value:int):void { + _retryNum = value; + } + + /**加载数组里面的资源 + * @param arr 简单:["a.swf","b.swf"],复杂[{url:"a.swf",type:ResLoader.SWF,size:100,priority:1},{url:"a.png",type:ResLoader.BMD,size:50,priority:1}]*/ + public function loadAssets(arr:Array, complete:Handler = null, progress:Handler = null, error:Handler = null, isCacheContent:Boolean = true):void { + var itemCount:int = arr.length; + var itemloaded:int = 0; + var totalSize:int = 0; + var items:Array = []; + for (var i:int = 0; i < itemCount; i++) { + var item:Object = arr[i]; + if (item is String) { + item = {url: item, type: ResLoader.checkType(String(item)), size: 1, priority: 1}; + } + item.progress = 0; + totalSize += item.size; + items.push(item); + load(item.url, item.type, item.priority, new Handler(loadAssetsComplete, [item]), new Handler(loadAssetsProgress, [item]), error, isCacheContent); + } + + function loadAssetsComplete(item:Object, content:*):void { + itemloaded++; + item.progress = 1; + if (itemloaded == itemCount) { + if (complete != null) { + complete.execute(); + } + } + } + + function loadAssetsProgress(item:Object, value:Number):void { + if (progress != null) { + item.progress = value; + var num:Number = 0; + for (var j:int = 0; j < itemCount; j++) { + var item1:Object = items[j]; + num += item1.size * item1.progress; + } + progress.executeWith([num / totalSize]); + } + } + } + + public function removeAll():void + { + for each (var loader:ResLoader in _resLoaders) + { + loader.dispose(); + } + _resLoaders.length=0; + _failRes={}; + _resMap={}; + stopAndClearLoad(); + } + + } +} +import ktv.morn.core.handlers.Handler; + +class ResInfo { + public function ResInfo() { + } + public var url:String; + public var type:int; + public var completeHandlers:Vector. = new Vector.(); + public var progressHandlers:Vector. = new Vector.(); + public var errorHandlers:Vector. = new Vector.(); + public var isCacheContent:Boolean; +} + diff --git a/FairyGUI-as3/src/ktv/morn/core/managers/ResLoader.as b/FairyGUI-as3/src/ktv/morn/core/managers/ResLoader.as new file mode 100644 index 0000000..734ad28 --- /dev/null +++ b/FairyGUI-as3/src/ktv/morn/core/managers/ResLoader.as @@ -0,0 +1,364 @@ +/** + * Morn UI Version 3.0 http://www.mornui.com/ + * Feedback yungzhu@gmail.com http://weibo.com/newyung + */ +package ktv.morn.core.managers +{ + import flash.display.Bitmap; + import flash.display.BitmapData; + import flash.display.Loader; + import flash.events.Event; + import flash.events.HTTPStatusEvent; + import flash.events.IOErrorEvent; + import flash.events.ProgressEvent; + import flash.events.SecurityErrorEvent; + import flash.net.LocalConnection; + import flash.net.URLLoader; + import flash.net.URLLoaderDataFormat; + import flash.net.URLRequest; + import flash.system.ApplicationDomain; + import flash.system.LoaderContext; + import flash.utils.ByteArray; + import flash.utils.clearInterval; + import flash.utils.setInterval; + + import ktv.gifv.GIFBoy; + import ktv.morn.core.handlers.Handler; + + /**资源加载器*/ + public class ResLoader + { + /**加载swf文件,返回1*/ + public static const SWF:uint=0; + /**加载位图,返回Bitmapdata*/ + public static const BMD:uint=1; + /**加载TXT文本,返回String*/ + public static const TXT:uint=3; + /**加载经过压缩的ByteArray,返回Object*/ + public static const DB:uint=4; + /**加载未压缩的ByteArray,返回ByteArray*/ + public static const BYTE:uint=5; + /**加载GIF图片,返回GIFBoy*/ + public static const GIF:uint=6; + /**5秒钟加载的最小字节数,如果小于此字节数,则停止加载(LoaderManager内会进行重试加载),默认为5秒钟最少下载1K*/ + public static var minBytePre5Second:int=1024; + public static var _loadedMap:Object={}; + private var _loader:Loader=new Loader(); + private var _urlLoader:URLLoader=new URLLoader(); + private var _urlRequest:URLRequest=new URLRequest(); + private var _loaderContext:LoaderContext=new LoaderContext(false, ApplicationDomain.currentDomain); + private var _url:String; + private var _type:int; + private var _complete:Handler; + private var _progress:Handler; + private var _isCache:Boolean; + private var _isLoading:Boolean; + private var _loaded:Number; + private var _lastLoaded:Number; + + public static var applicationDomainDic:Object; + public static var headURL:String=""; + + private var checkLoadID:int=0; + public function ResLoader() + { + ResLoader.applicationDomainDic={app:new LoaderContext(false,new ApplicationDomain())};// 存储swf 加载所在域 + LoaderContext(ResLoader.applicationDomainDic.app).allowCodeImport=true; + } + + public function init():void + { + // _loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress); + _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); + _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError); + _loader.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, onStatus); + + _urlLoader.addEventListener(ProgressEvent.PROGRESS, onProgress); + _urlLoader.addEventListener(Event.COMPLETE, onComplete); + _urlLoader.addEventListener(IOErrorEvent.IO_ERROR, onError); + _urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, onStatus); + _urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onError); + } + + /**中止加载*/ + public function tryToCloseLoad():void + { + try + { + _loader.unloadAndStop(); + _urlLoader.close(); + clearInterval(checkLoadID); + _isLoading=false; + } + catch (e:Error) + { + } + } + + private function doLoad():void + { + _isLoading=true; + _urlRequest.url=_url; + if (_type == BMD || _type == DB || _type == BYTE || _type == SWF) + { + _urlLoader.dataFormat=URLLoaderDataFormat.BINARY; + _urlLoader.load(_urlRequest); + return; + } + if (_type == TXT) + { + _urlLoader.dataFormat=URLLoaderDataFormat.TEXT; + _urlLoader.load(_urlRequest); + return; + } + } + + private function onStatus(e:HTTPStatusEvent):void + { + + } + + private function onError(e:Event):void + { + LogManager.log.error("Load Error:", e.toString()); + endLoad(null); + } + + private function onProgress(e:ProgressEvent):void + { + if (_progress != null) + { + var value:Number=e.bytesLoaded / e.bytesTotal; + _progress.executeWith([value]); + } + _loaded=e.bytesLoaded; + } + + private function onComplete(e:Event):void + { + var content:*=null; + if (_type == SWF || _type == BMD) + { + if (_urlLoader.data != null) + { + _loader.loadBytes(_urlLoader.data, applicationDomainDic.app); + _urlLoader.data=null; + return; + } + if (_type == SWF) + { + content=_loader.content; + trace("加载的swf文件:" + _urlRequest.url, "帧频", _loader.contentLoaderInfo.frameRate); + _loader.unloadAndStop(); +// content = 1; + } + else + { + content=Bitmap(_loader.content).bitmapData; + _loader.unloadAndStop(); + } + } + else if (_type == DB) + { + var bytes:ByteArray=_urlLoader.data as ByteArray; + bytes.uncompress(); + content=bytes.readObject(); + } + else if (_type == BYTE) + { + content=_urlLoader.data as ByteArray; + } + else if (_type == TXT) + { + content=_urlLoader.data; + }else if (_type == GIF) + { + var gifLoader:GIFBoy=new GIFBoy(); + gifLoader.loadBytes(_urlLoader.data); + content=gifLoader; + } + saveContent(content); + } + + private function saveContent(content:*):void + { + if (_isCache) + { + _loadedMap[_url]=content; + } + endLoad(content); + } + + private function endLoad(content:*):void + { + clearInterval(checkLoadID); + _isLoading=false; + _progress=null; + if (_complete != null) + { + var handler:Handler=_complete; + _complete=null; + handler.executeWith([content]); + } + } + + /**加载资源*/ + public function load(url:String, type:int, complete:Handler, progress:Handler, isCache:Boolean=true):void + { + if (_isLoading) + { + LogManager.log.warn("Loader is try to close.", _url); + tryToCloseLoad(); + } + + _url=url; + _type=type; + _complete=complete; + _progress=progress; + _isCache=isCache; + + var content:*=getResLoaded(url); + if (content != null) + { + return endLoad(content); + } + _loaded=_lastLoaded=0; + clearInterval(checkLoadID); + checkLoadID=setInterval(checkLoad,5000); + doLoad(); + } + + /**如果5秒钟下载小于1k,则停止下载*/ + private function checkLoad():void + { + if (_loaded - _lastLoaded < minBytePre5Second) + { + LogManager.log.warn("load time out:" + _url, "加载进度" + _loaded); + tryToCloseLoad(); + endLoad(null); + } + else + { + _lastLoaded=_loaded; + } + } + + /**获取已加载的资源*/ + public static function getResLoaded(url:String):* + { + return _loadedMap[url]; + } + + /**设置资源*/ + public static function setResLoaded(url:String, content:*):void + { + _loadedMap[url]=content; + } + + /**删除已加载的资源*/ + public static function clearResLoaded(url:String, isDispose:Boolean=true):void + { + var res:Object=_loadedMap[url]; + if(!res) return; + if (isDispose) + { + if (res is BitmapData) + { + BitmapData(res).dispose(); + } + else if (res is Bitmap) + { + Bitmap(res).bitmapData.dispose(); + } + } + delete _loadedMap[url]; + trace("删除已加载的资源" + url); + } + + /**加载资源的地址*/ + public function get url():String + { + return _url; + } + + public static function removeAll():void + { + for (var key:String in _loadedMap) + { + clearResLoaded(key); + } + _loadedMap={}; + for (key in ResLoader.applicationDomainDic) + { + delete ResLoader.applicationDomainDic[key]; + } + ResLoader.applicationDomainDic={}; + } + + public function dispose():void + { + _loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onComplete); + _loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, onError); + _loader.contentLoaderInfo.removeEventListener(HTTPStatusEvent.HTTP_STATUS, onStatus); + _loader.unload(); + _loader.unloadAndStop(); + _urlLoader.removeEventListener(ProgressEvent.PROGRESS, onProgress); + _urlLoader.removeEventListener(Event.COMPLETE, onComplete); + _urlLoader.removeEventListener(IOErrorEvent.IO_ERROR, onError); + _urlLoader.removeEventListener(HTTPStatusEvent.HTTP_STATUS, onStatus); + _urlLoader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, onError); + } + + /** + *检查文件类型 + * @param url + * @return + */ + public static function checkType(url:String):int + { + var type:int=0; + var suffix:String=url.substr(url.lastIndexOf(".")); + switch(suffix) + { + case ".zip": + type=ResLoader.BYTE; + break; + case ".png": + case ".jpg": + type=ResLoader.BMD; + break; + case ".swf": + type=ResLoader.SWF; + break; + case ".txt": + case ".xml": + case ".json": + case ".ini": + type=ResLoader.TXT; + break; + default: + type=ResLoader.TXT; + break; + } + return type; + } + + /** + *强制清除内存 + */ + public static function clearRam():void + { + trace("强制清除内存!"); + try + { + new LocalConnection().connect("foo"); + new LocalConnection().connect("foo"); + } + catch(error : Error) + { + + } + } + } +} + diff --git a/FairyGUI-as3/src/ktv/ui/KLoader.as b/FairyGUI-as3/src/ktv/ui/KLoader.as new file mode 100644 index 0000000..638fe60 --- /dev/null +++ b/FairyGUI-as3/src/ktv/ui/KLoader.as @@ -0,0 +1,169 @@ +package ktv.ui +{ + import flash.display.Bitmap; + import flash.display.BitmapData; + import flash.display.DisplayObject; + import flash.events.Event; + + import fairygui.GLoader; + import fairygui.utils.ToolSet; + + import ktv.gifv.GIFBoy; + import ktv.gifv.GIFEvent; + import ktv.managers.ManagerSkin; + import ktv.message.local.UIEvent; + import ktv.message.local.UIEventDispatcher; + import ktv.morn.core.handlers.Handler; + import ktv.morn.core.managers.LogManager; + import ktv.morn.core.managers.MassLoaderManager; + import ktv.morn.core.managers.ResLoader; + + public class KLoader extends GLoader + { + private var massLoader:MassLoaderManager=MassLoaderManager.getInstance(); + private var _assetsURL:String; + private var gif:GIFBoy; + private var _moreSkin:Boolean; + + public function KLoader() + { + + } + + override protected function createDisplayObject():void + { + super.createDisplayObject(); + moreSkin=true; + } + + public function changeSkin(event:UIEvent):void + { + url=ManagerSkin.getSkin(url); + } + + public override function dispose():void + { + super.dispose(); + moreSkin=false; + if(gif) + { + gif.removeEventListener(GIFEvent.OK, gifOk); + gif.dispose(); + } + clearBitmap(); + } + + //修改父类的 清理方法 只有在加载完毕后 才 清理之前的内容 + protected override function loadContent():void + { + if(!url) + return; + + if(ToolSet.startsWith(url, "ui://")) + loadFromPackage(url); + else + loadExternal(); + } + + override protected function loadExternal():void + { + _assetsURL=url; + loadBMD(assetsURL); + } + + private function loadBMD(tempURL:String):void + { + var typeStr:String=tempURL.substr(tempURL.lastIndexOf(".")); + var loadType:int=ResLoader.BMD; + if (typeStr.toLowerCase() == ".gif") + { + loadType=ResLoader.GIF; + } + massLoader.load(tempURL, loadType, 1, new Handler(giftImgComplete), null, new Handler(errorHandler), false); + } + + private function errorHandler(errorURL:String):void + { + if(moreSkin) + { + var ary:Array=url.split("/"); + if(ary.indexOf("skin0") != -1)//默认皮肤 + { + this.dispatchEvent(new Event(UIEvent.IMAGE_ERROR)); + LogManager.log.error("默认皮肤skin0不存在"+url); + }else + { + url=ManagerSkin.getSkin(url,0);//使用默认的皮肤 + } + }else + { + this.dispatchEvent(new Event(UIEvent.IMAGE_ERROR)); + } + } + + private function giftImgComplete(tempContent:*):void + { + if (tempContent) + { + clearContent(); + if (tempContent is BitmapData) + { + texture=tempContent as BitmapData; + Bitmap(content).smoothing=true; + } + else if (tempContent is GIFBoy) + { + gif=tempContent as GIFBoy; + gif.addEventListener(GIFEvent.OK, gifOk); + } + this.dispatchEvent(new Event(UIEvent.IMAGE_COMPLETE)); + } + } + + private function gifOk(e:GIFEvent):void + { + gif.removeEventListener(GIFEvent.OK, gifOk); + onExternalLoadSuccess(gif); + } + + public function get moreSkin():Boolean + { + return _moreSkin; + } + + /** + *是否 含有更多皮肤 + * @param value + */ + public function set moreSkin(value:Boolean):void + { + _moreSkin = value; + if(_moreSkin) + { + UIEventDispatcher.getInstance().addEventListener(UIEvent.CHANGE_SKIN, changeSkin); + }else + { + UIEventDispatcher.getInstance().removeEventListener(UIEvent.CHANGE_SKIN, changeSkin); + } + } + + public function clearBitmap():void + { + if(content is Bitmap) + { + Bitmap(content).bitmapData.dispose(); + } + if(content!=null && content.parent!=null) + { + content.parent.removeChild(content); + } + } + + public function get assetsURL():String + { + return _assetsURL; + } + + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/ktv/utils/XmlToJson.as b/FairyGUI-as3/src/ktv/utils/XmlToJson.as new file mode 100644 index 0000000..df5e180 --- /dev/null +++ b/FairyGUI-as3/src/ktv/utils/XmlToJson.as @@ -0,0 +1,132 @@ +package ktv.utils +{ + + public class XmlToJson + { + + private static var _arrays:Array; + + public static function parse(node:XML):Object + { + var obj:Object = {}; + var numOfChilds:int = node.children().length(); + for(var i:int = 0; i 0) + { + value = + { + _content: childNode.children()[0].toString() + }; + var numOfAttributes:int = childNode.attributes().length(); + for(var j:int=0; j Date: Tue, 26 Dec 2017 15:46:27 +0800 Subject: [PATCH 03/15] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E5=8F=91=E9=80=81so?= =?UTF-8?q?cket=20=E6=98=AF=E5=90=A6=E6=9C=89=E6=B6=88=E6=81=AF=E5=A4=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FairyGUI-as3/.flexLibProperties | 4 +- FairyGUI-as3/bin/FairyGUI-as3.swc | Bin 716554 -> 717129 bytes FairyGUI-as3/src/ktv/managers/Interface.as | 4 +- .../src/ktv/message/socket/SocketManager.as | 74 ++++++++++++------ .../src/ktv/message/socket/SocketMessage.as | 25 +++--- 5 files changed, 67 insertions(+), 40 deletions(-) diff --git a/FairyGUI-as3/.flexLibProperties b/FairyGUI-as3/.flexLibProperties index 1fbacb4..07cb799 100644 --- a/FairyGUI-as3/.flexLibProperties +++ b/FairyGUI-as3/.flexLibProperties @@ -1,6 +1,8 @@ - + + + diff --git a/FairyGUI-as3/bin/FairyGUI-as3.swc b/FairyGUI-as3/bin/FairyGUI-as3.swc index 3615cbc2f6980a1962d37762b56c8df79f1d6b94..5e48b81fdef913b22f42a4100b09983f3f9a83ae 100644 GIT binary patch delta 706790 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 z%0A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

>B}*-()U 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.-3;p!eA5 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≫4?7SK)Hc= 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 z zK+2M2KVx`YG7^|?(l67bKb3#2*M{O3mCU3$KSP~QM89ANgaBioV}dKpZC9^s>y1&O zR4l|T;{J@`O;k}(1H3+d7tCGvi`SIt=N6RdIV0AiP&77}p`tQF6;Z-pG`b~-H_b+4 z0-Ny5c%-7tvtI&MFlA}*jbAZRk;&d%5pZz7Y;$;EH` z?Bz{~^)S1Boftf?y&|RkikH&w6Z?7m<0@aK;IHeF+p(XK(fJLpA#p z?9GJ#O(T`_RN*;({kFVZiKN<1g8#k&ZIFKx6H0GRUeP#YM00$dZ-mc*?<8fF9%15<9{xik6_v8c@Y>u@e2=d@q0hz3%0F-OK;5q?hx- zBhc-!gIOZqYpj>OUS6kr*`4p@|2f~w|Gco5|Mi+){$C49{=dCm{+e|D!DTRoc*o=Gwg}5SxcZT84??e4bj_H=u7_x|+$Yt0_DQc77OzgqmORO-4iPNRM4`kJPyzJ4vST(#f3 zYgV>tPO*P`?pSKS&5N_ckF(Q{6A_kS$B7fiPISfe&vq^Ld+)Im`?~^D|5>6>UfIt0 zW!vSK4bC`ho4$TAAv2x_pR=P~q=xll0gtKvv1941k1wB^FMMIlY-Gfemx!cn8%_7o zcx5}w{OtIJK-6Gb8$Xc5wLN!yYx3p`60d1$T(^Hj8f0;s-dZ~9_Vcd2{h)R2wN zZMme(i?Un_x^RQoev#Ek)a&dXUB!9Hup0@w#r)t|5whm%w1O9g>Q4?oJd9zcGHn>D z3=V%Mia{J7lnENTh_o%nhqysez0`8|d*AX2jUM6i6z#$D$m@msIK~(rM!fYe=ihS5kjx8F?)shbrU!V+fTWfkQczpRMn4?VpPcU_J-`n~V8nqsCsAa<x{NiFQq=R>zW{s^Im^;&39OZY-w-CAx64d;LvLtYppsM!B#_U zHR4JLIU;#fTWg^|+~W8ZyD58C0M-S2y;iIeTctU6ZfV}KyimTdXG_|+A!LS-AA%#PN=0VK z3BiCxn0ux0;Ece=vnp;T*_fFs4z_>ll$Dfikg_b(dL4HAkVFw3ClNOh>64H#>7JiS zn{g{DvdN>!CP%ew@+1Ptz(2g?J~GE^4FGk4mofeF5?kD2VaL6GmX}(*(= zURKL31V}!lNK+VL$XUoXUSd53g99Fw_=-S<UE~%~1sfo}4v%I)PlkVNoGtl99y_Mz z5_!^rK{OlePf4+kOBFW@#jxcmB-bd^MH-qI(h< z_rR3%l6%^>o2mPY5eF5l)e7#V<~6#3AD9)%1p4d2xO9xV{ET$RnOT^&Qx2@jv)x6a zwq|Qdg`VzWs(=jqRyThoMk@VMiXym{QTI$(E&vo6D5dBg{Wj{;Z|R|`2`tEr4~jO; zc-6gwqx~MOCPpSLK4AUtdwae6w15AbyAHy?CyF zr9S6y!o2Mq)b)U@mp*~GTe!7lb9GB_1EEo z`9gGh6%8T(pj&?d^M>SO$wf@gjZIuzex0R$qa`nV!+`pr*AW9!!>16!xK5+{?~K7z z#!_Y0bY+D4q4^~h6fytMxv}Kvz+mrqIMsh{P;5pHIenZ$V_L<*?uI;v#zrQRG6-`h z_n5?GZI61%c!CSz6Jj=T7^8Sut${_t0@rQH`6K3Ri>rT8&kSFrM~cujlpLNYzh3ng zL`8rB!aZ{+f4(;;=ddS7f^u?va%9UbVrR3_hBYk##-@Cz3cJ*> zqs#0Nl!bpj^vz!xD=l80UwX{Uk#k?)ezM~57ONhn6VAapMS&A4bfO44V^w*Xle^pr zt#C|aomXj0k+m9DWP`wpgs`Su?wFgzrn0G(!%VFl7OHS^v9GL8gGE8CM(c<*IH5+- z6f;Fr%rWnB%yx&f-wp^I-#N|4y6OR=#J%<;pze^cVp93 zy^$N-xO=Jvj=2$t?ooU9;aYKRxc#^U?f~u}?hx*7+>zsI?>*d4D76iW#fWT5aaP~Qw|Utlwoin(%MU`r&TtY}h@N5UB!24U9-6nFHc_N0bnqvWiQHI3Z3D0<3fi!Roga0qk_R zjIgJtJMsy8FJUQb(3z9tsWY-3t`8t+de(naiAzS@9%61z#@yHVi4>4X(tleh80V4c zbYVh#`}o2Cc`D$^%LB2;@EnR8-lK{=!sAF>d5=cy9FL=M%X>7@^yUCDZhMcGJ}R4t zhrLHTwv)G$@u2q@jBV%fV%+f_9YJ+;FU3RNV@OaWH_O>?c{s*6E)R!{RXwl18eaSA ztNh=Q`M>AYSNVTT|K~N}=4mT#eENS8ea`z9PL9AXevDIzRa2{9kYhyzG}CKn+Q+@0 zYk|dl!uz=n&_xayB|urS%zcND2*Ds^ewwa*FNYv6tNH+^iyt5iy^>f@|9{Z??e`Gq z;^~!zau@`-IDuvo8~j7gkLzdYyqS34Rloa?&(#Uhe;(Ml1I6cnPHoCTAlZMl1Vmc4 zUR_o0r#XWwk@$%?gw8W+wo2tzkkMzwzx+3OHm+RdZ8>kjxs|XPU-66aX(0zI{hA4A>sEJHq${esx23n~ zi^zGd8IWqp4&+D9`i-7ZvuCts#dWjqAYb0r;_4tc(0_mH81CC}-Jo7x zel7i_G_$O!Q8gC7SuD2jx@8Ddy<)uKbCOKvq*x71tGUOvTU)mK-y1X)_m<&n}7!343u zOJsiz8W;QX90B1nP@;dvGbZ>TY}1W(jiDENy_)Y7TgXF{lF5D6U49so$P;%6c-j|yx1llML{}` ziOoG0SCcQe_nbBGD8gfQQmfYlCI<}n#91@0X0EW|1%#{XtTn?DcJi#@27vSYsJ~`t#GVcWBJ09bW7#2Y*TIqQtQiovkN(4joM#>*;Lm zy1VC|6Dt<_?eEZ#9!HKHyZhAflD0!9yL!4hBz(`o)+33Yw);+hQ{ zXU!6y+DKY=v2^u{z7dbzI3L09{emSvOCe1b*Ky~P82;E=;_m@+ z?4(isrbxvavgDeVdSe$7tPSf+AThh{2T@zdI`a0Q%H?pMHvQ1uggSNC9n(C|N{2|jk zRs-VQp-fG!h896-(S@}dF&=tzE`M!vHC+Ct<}mE>Fgx?4V3!8Nw z#o_3b69UJ?E}F{Am-|}ohz`f6Vu5Hmfi~f`1XNLR#ne`blUJpxYjCx=I$S-j5!Zxk z#UQq?l~Wvc0+!gli(>vRwl9z$P)@0AnM2FuI3T=Sw#*T*Tta^; zhv$9D_KyYx>C@b2ax*kOv{@nt1XfTKjBWPFjvNz20Uy}_jq*!~K?&uu79(sdXx>S| z22KiihzCv^<e}L_pkk-isy0v*I5bA<2|qTpFQS?X?0MxUMX8% zpch4M#U*C+yZzlkv=f7daN&Q`b7e*B!;l|72o)7{hi2rcTuO{_0pXc=SuL|B-EkrR(qT@FCcHzJN$>RGSr`m2s}=SmFRPWo z3n)E1Z*U(G%9Qg60C`~RUqCrGkk&$I7gNrR7LI``-U>b)M+8v{`?`N=f~d6B#zDy& zx+60wV1o>ifqP>rG#3>ar#E>46apD9Fu9V=ts!YgEivyo}n&@t6@L1q(en8}R zP78?n47!tX^K+mOVXuGc*fgghap!Z1d^Herk28`$!j&VWpzsu`H8UZP6p^s^eBmNg zBZ)knj^XQ=_^u%=yacR*;G4%O3EIrvHUSd0`Y8g1gbUe4pr0TRhd%*P-`yq*1O$;e zKIt1$AO8GPh3uP#(}9#{)3MJ#LegQ# zYki;+bXTFtS)4AemWzP?IAj>pgmt}e@;D{Y8^xOt*0K_4NEm;kA4qJy6-hE5<VVB&`0dyMBy!1DKikN|V{Jhc#n8uXD> z^P%EAaRV=gdT4(YC_Q5cFnG@=C4p>4MMERQobY(BG;nI`#F|Cnk4~PKs$^pnE-dG< zbQ+NbW3bkEs7?dq4AvLPy58<32qB;eyHLhM%N6)9JsLK)u$|%ndf%GR7yf`2>hbAQ z!O)Y&F$U{|gk4lx5iHU#v*p)#;R`ENstcTbf81}4a4&y!l@?Bll1BEmtqIpnl1W)g zaxD`Lzwxp@O@;%bS9TuVJD?Af!(}zbL$wa63$CB>P`xwgHP=#DoNI`)Y?FwpZT4aO zM$#>LdOsu&p-t;*IpcX0#s^qd>% znHcHm>ra2nSs))s&p`jssAeVA*4H(~t}Qdb?RDX7Da>Y$e=r^2$Z=6kOE{a0Pwd{D zk^~*F&cuGap!xwzYp-5rh1O_kkt$PA{WLA9L^lsyKdq{#&uvzz@LGsPC`j+XW-XYs z;dS_MX0zQ1XY}=egfkHt;W($sKcO*N9kVUm%87prhb^WZD=6H7{75KJT*pe#fM2oQ zIJE&n(g-*Rgowb12#aI|McNS(;kg5YAVMKp%i7>TDU9_Be2lhSY?kbU^aR>Lm3r8> zwpszR$FPHPGLyym3$8M)4+i1K?vzzs^%fz8ffz?`39b~k47VJ&0=H76Gj>AdC@vv` zOW1#uvlgorEC{;|aEM?#s4)V6mnZOd`Qf`+1tSl@gvvn(pfC!jrYLt9NWVOwOG@%t z`AcJOfK(`Wqq}Ez4t0|$la;qs6A5k`q6k)C%7z+f7au1EhbruLAfo_GZ91560+&S= zpgn_xfuw7wTf`LL~s3)-E;%_4u@y zQ^n7dQmUA!Ie`*UqnHQOlQO;@p9heg4q!?xn$8s3vUS}p}h<HAa z+SGC$mZz435cncFjHL2;&IkA;S4)40Tu4R7dt+WAmq;Y06Ukki$c0plNU>DRPvi{? z+oS+Oj;1M$rFF?FmiurpD`FkmqjCUSK%~FLTND&sYDFsg1z{7W3O&G-LK+0Xl$9ux zk?#tf@5;sbzB#pmd{+=PT=Mf2{*9?Zo(ofjse+OZ@GPVsR1P1MWs8F4GKj1d(`gZZ zGS-4V;br3$5umLjk()uL?h%bShsOK#Bp@2a*bP2s73;AgNG~lw)mU1KR8uOM%1EP;*;LRb6$9=)>1F z*>Y4;8Ur1PLlLyHv6g^}c~EPaV>SUr^N4?5Vis^%!l2^hA`r=&f}l48IfXDNa3#1> z+%nv9+zQ-E+$!AawW??x_cAemHpNP!!utXdj_2Vv?1SH+We^3N3`PSt&iO5FroGSR zW(D^Jx!KM>hg&eTFT~B^P$$O&HRG^`RcKtcCPrWbMncb8=9_&@D$=JR0jLB6+g(qjyl;#14r49u}?eB#~Rj}z((dX&2a_QbfLsp4$%tq z2B)7>3EALeP!XyQojPiuAnU{wbe9TF@r|+T#m|fa0Emm>iU=mANdN^vG{$O`g@rJGmaug%?R^^8;QQDR z{V19b^$(w$7zp;r&>i2AsqD_BiC(Av*B@TlufRwp1w%zFOmz%Tj9rrLfgU!eP9|h9 zj(Z|-TW*%=!cpdbe-!iJFxM&Mf`PVVY-LB?&4+6fASu<2i^jJJ*7u?@+}PMyxHR|M zSxZa~==mg?9aa(te9ma;a&3x(6LyZy^|3osCpHRMK>k18t^=;E>*~MzhMqPOAcpaf zZGo3;kl4;J7$Y0U1A|A>S~wC&2AkmkPU5sp$=-X9ro`EQd$nnrwi!*+B%KDDxGQPW zktSV!ZMxHz?|<%nlE7fcZGZi+-@Whdec#nR=ll<$mgfMt+?J1@H(UdjHWydsSOGHr zX_^CQn#=}ug>JfwAA%era5xKrK#pf7p4oW(^Vy65>|!hq8^AJf)mldjNK(1QxFRc= zE3%>quL=NvOyG0UH%2wVFmU0jt;bo(Nqe^{Iq{8PPQyhTxEmU)M%FS0nt9eJ@rt8% z#4FC3#(|s>Wup`-#PYMjmLr3bo`cOC-vd>vMy5W>)GhhwIy0YcN(*rMOUfgpcSC!_ zC>TXW6hOYj0wH=0)4B$ZbYYltjUF}*s znHJ7}RTI`53CgLfT~7#GZ9H>Np9%#HeGW2u!L>}P2bzfmr;PKL#`;ClGIi75SceK? zQHPBTs8vYi8qyHdKd8aGe^BRUDySSm1jKe4nFxZ3AZ!h|DiirusIB1r0k&0dB1>=q zQU4}-Q5Uyxr<|5`oJq(^ZbC2fOzOKpDE!fX*Ini^bqs*lsi%(@WU};d7AA}E$Hm|} z>VO6mG(B5TrsPuGo^%Ml8p!K_?ro#$aW-&`MiatFsjD?!TvxA!BA8ZFua)}(%1$Tm zl#Ri+o6+ILv+U|kz45srcp#2ECDRgZnb~xDUss1d1dJ(S_ZUR_ph&x9*Al@)YVWX)5wrTJFtGR^{AIswuc zv_#My#bF%BaBwbRQ_a>%x+q_l0rLa_qj@^%4qT!uK@vS8US3-{(=9-D0y{6=6xk}6 z?L=m)2bU2x-H5KN)=jA6QeAGr=7s}*y)UnFNRwyIn%y{51JKtd96uCEJxN}-Vf{vK zHgj_mH(S|UKkkd@r@$O>D^$n)*jzdKFpfBEE)M57!SnsrN}HK1(f){ox1v5EgJ}i= zF2u;Rz*tDMA%Cs~a^j2H*cR|R8B3xv(V&91tt=vg`7j7K_>+PT)4ddK5QKt%t{`Z9 zJjOEkfXyf934*@IeM;d2w!vVInWhYGT#W>ML6G-&j1YVvA`>hKg0{zf!tk*t?ZKkp z%;2o83im6AAJBk;bAtZhT+^=temKep=LZA9;$X>EmB*}vFO*IP7n&tjQ^SIbxVf0N z>tq(Va6QC@>oID`n+I_;Ps_{Z)p?!h>ePW zx>Uo9PnSRGFC&9)E9RydsK!A#OMkj1(s{6$No!MD@GtdqXkhM?yJ8U)>IY0E0Mc3i zn{z74nRH#ST@-v=x?n7PAwt3WES(7g>t|iWH}qd>QX*zk^aX@5(>uFa<>i z{5^XI2K^8X0#_;_S_(3MLzxa3evWL&@Bg_tsVAKa>Kh1GlpTq9a17rcappdvmW^~t znQ=5fS%gh#s$?iZ^Crv9iuPs(w3PJgrPxo7B{~RCT=wP|;wB;VL*%KcV)RpLK>|Ac z8DSZ&jRB{X!NIhjBU4sy29)L;_Oqhfp%!$yVaSY>` zZW`%%AVL;Rvb1srf*4)7w|n)DIU|uFsSU|Y zETrGuw}*OnV=sJv#UWrKFXeP8I9%s6n&hX+9Lo&j+d_+(7jO)HgDQ!!5{y?F8T4c5 z4wHL{SelNZDJjk;<;?Q%RNC8gEpO~?@9rc1_?DFPmq{C*tSy>rw3JWw%YMH_XoF_< zv_9x#sMuhiI6ay_bZwk8jR75CAy#Iw6J2zZ4qJ{H{ z2WlvtRY_G@R-Px{WA)N$mB^Z$s%c|dG3nU_lRRA^%I6(`n0T`tn)g}Szg zgyFRcB4QHO=n5TlOu2zWi~?VDn=S)f^y4~Ca59j8MPs_$&T&L{>T;JZcLP?`Rw3iG zKoA;i3(}`ynp51tQ@bv9r>raE-59%f~iPv~z=L&%&%TxXfD-G4R=E5?-idRz2`SowErq)HR3jLfwAC z3(cBKc%h!$df8L*!*Oo?T1bWnfyl#|p#;>QiD0U@(zX+^QH4shU()GBj zSOmptj|f@q#sm2-3Mzt6;-qq`Xk(jSlX9~bFCh|Xg$^5v)zos_vYg zLFeF99y>)IJ1Gws`Er-hH7So>Q}TF!5P9rI9vakP%)ns z_zTxDQWl^=k%Sdk3?m@fa}+6(p2G|Qv7H8a!YfhB;b{&Mv}c%_OX8aERdm)h$PP4J zs9uR%eAmI_7P@Bxuda%|K=*-v!40F3C*6he7cesOinGJ5OnoLqY;;c zmY|;qS`9#(Zn!{aA9B9|uuG^bM4b;B4}wpYe#!Z1{2r!G3267Ay3mO*oU}%=@N4)% z^ed{Q##N;89YmcTWuus&R)ThTnJV=JuT)Ta3Khv?U#9BFUxB$)c^>9}G9YCDe-q`r zPN0%D<7qbX0w&Jqs1le%G-5QC1TZ*)?g5s9_xmX288bW=_XU98gcjc~^J?D(q=>KZ zx4ThSv;o+fJSFOAyujPTVLNQbO8~z>%{9PoqFr<1+MV|Vq?}(M@0S_y7HI8#osErd zB{orj>=MJGVtfmYF}{O;EJ+^6E~AZKr8bV3Z5-ome3Q5FE#Ahrc^lth#u(Kj3B@OO zrds+203$%$zZ-cGE&U!=rS$kT&HNFn@_h<)QX79rZG1D`#l?~w0kQl045 zMw6OwVhAvjek(4|Du6ADCXf1F#2dmL@by&6z5!-$Km=ec@CU=;{v$^ zZE(>JHHanvFcXV^qe{9I^jDo-DI1p}BLxF+nH-oivLElma9nOWu>4;K(4`2$WO&`U zlA!b6@DxzLUTp^Gqe-g><6D|2`z`eFwekqcc9UA9?~>s3tpbu$!{%ng1MM_(B*N45 zv(LbsE8hWgp7L3k%hX|*dD?!Ms^!}-E&6w4U|)*Leg?LGiaCA7QzC;aaL(}$??j!&m+l~7O98k*nI=b-zfcA}Y z_~eK1hC&{J6<4{=pU21t1p&j-7Vz&M;UacV@gmH*_OyxB2TV)kIB`7zx{}ghO^rAS zar@b{8{G_R%>O{!2@itYIT@Dk0Bh>nR!Ogq>eX?Bgu zSb49@BjBx$Tes4>$Rbs1H_^KIJ|9<{LY7NEq+w%!Ka!0f%26*0!gzscXFu0<`Z`c2 z`Rv(**+U!Pn}jvV=X43pr=Q3p2gZQ@B9lOW@Pr||M}>XjkUf&a79plNvlZVcn)8l4 z60G9^Ka$O9r~2+gz|Um5s6+icbV!1*q++})<{j7yR!Q%ng3H#hHmw-TChz97Q zwTuk91oR+t!Lrm_jAN)Y4YRiZP%G^aNNFa2&EZ&L{AMuseEkCbLj87qSieobRli1u ztP62g6+&en#6Q_o74Or6vmKuIjLnTFgAHlp`etx6HErCmV?Aj~Usu1mVa*H@qMSZ| zXx0X>IJGnpz~VFsXC67>jw=7k#?_G0TwmYNvT;ZAstE84k;{h7EgRSESh;Rv!%1_e ziLkMm>Q=u_sBq7plo)(i&=6C*V@Yc|FW^a&xQFT))nY zLEK@j>^OEjI}vO^A2%-uBq#kkg-RfZ&vhg|`r?s&itS)$v$-sYrM8qUgMd*f`y>Pu z7P3Wb1^a}9R};%?kX*{{PwybP_Y1zN= z7y371{~LMNKxpk4YXUGkQQwcQNmV5Y!yQxX%G$CDGhd2-w7ls`qavN}QDav?#ILq$ zLcT|iT~S_EQB@tDlVND`J! zlkeo%;hJzoxEA*^6=K{d^zc7_vj+hv2;TC_ns7~dYTOQwNp6ZA4%bvyRo8~W^jDi1 zw`pSoxTvN!6eaS@sXZAF#vz` z^}6F=?a4SvUIe1x?HM1F68@1uw6m#JiNm`f4X!yE3G_(RnDq7QREgrrtuVP#4=>LA ziV9kJ_T-ilKU4PP){+<7t$|LSI8y;$7tyhD#fNzFq+VJ-Wnhl2Iw?8u$u-fT>6~Cv zJP7XV-`v;Q*_9k54~VRPn?Vhoa(gGMx3`;Li~2#9zNC-fX0YBOC6IVnl)K_#?y z@TQn*_#7f?2X$25guY93q=ib@E=zkSO=Y1@ED5ffeiNRSCkxBFcat2Dh!p;BdvZc0 zFndYfNlaH$R*4PxM3q;9GXtC3U?07N%9{Vn0Zf;ZS~ps(y?t+g4BI(daQeIA|$M^wG)cd`V$=kD)0*jR4~~LKpIUh zD_i|vmYr&tHVCzSA#R4Xb`U1^*|1Kw@;ap7!j^%(J*XEE4AyZb#k6iT@}g5u{oquH zihpn7qKE&}`LhatyHm%M?dj+wld=##9md2cvVDhsSZQlsv4w~P)!JLHGtp?)zsjvmN0y4!QvjOttF0k!~+u} zX>H@2G!?Zb3NnZ;WmTY(tDo&rh= zglk!w&bY#VHG52Vbm($Ympe(-8tc=QGjw^ME`L&&&&PEUw5>r!na-}kb1mH0;gd0)zgK7{}tO8Ms^b<-3kis6R(m)5I4ws{sW9X z$R1+cdRSPG2mU z^_;Mt7uE~HdQn(k71m3_dRbUs7uGAndR17j3F{le`lhhH#lB0;JRn>ni~(N4N?hG@ z@nffd#6(vp0h}R&)I$jvw@K`wM1?Q|aVpH=s&kdN6y|i-xl7y%b7j?Km1HT*?WyyWcodf9 zt@D<673RsV%O=~KQb4c6#O#db@0nb{x$!cMQ?0hD~44W-Y!(k3rv>-MX;N7RZX>2FPJs+=gqn z7%l>x_9bnQcZ)e7WatRCK`(m@+`n$;(l%E>iMhbD>sr?44yZ9VICtHpZCL>=mIdL% ztZeJvG*}i41?O?^1@PWFD+WH~aQ=yHGlJ!R!HQsI zuqs#`tO?czmj{mv9v?h`$DC45@WfOB!4<(ew@cp8-g2y&B0B%<<{QR#X!kyU2q3UA$O#@KHFK(`9G9$~bLk>19-Tdcd%M{RqO=Q0 z%48JUr^s`T3eTOMw<+GPsGq$26mPfZ+vL?dDPEuF8S?C(EEi#+#@y@+IIO(^OU zo=b7bcOfpIneJ$`i? z+=ed(21q8eOSu8&F7+mVn7g%`VRl) zr>jhhCm)>)st6!CVzWs6mfPkS{{k-sfnt9$L-{(ci;4MWF zFHEW-$Xpt3ux$wVs!2x#4a{>NCHuO_>=lvOtITr^d_9+=DfgjWpb|X5*+b)YbBdjU zkVio{P2yVKoMRDxcs<4VBokh;hq~e!uK&!8r4R)NEEWc(3^v>ZG$grM}`5F6Bgi^zMezhlO4p-fQcdMJZ)jNdVo^Wu2=BkbJL*k(bBR_9`WiTZi9$ky@OKKz zN#^jN4;e9k0#guf=|MO{5a8l-iTB}O7<{5`nR7iF*o7dw?5Ok;> zSINYKoNC3@6eZP)YdAY|sukB#P^uNzo2j8IZbB=6ZloxwR@^kH6}QSB$TQkNEkhI# zDxIXu^0P7tCqp!S7FF?H_}pm*^M2UR8KTcdB8WQM|%M8iAoGCli z7!cH~gd4*%yPxxLry2tSTc$CfvGJ~e^0*0&0m&`X7*b!B8ImVt&&{+Se4e5}K`L*| z({eO_KbfCuOckmIY8wyc<$p0?Un`Yx*y+v zE-M+FR*a9K0}o&i+Ff|u6p)1%4<0Wbob^5>{SNf6EsV@%^$bWNil9ho1#mSOVF|* z`L0Ni!P*b1v>RIJu(q_g>rUPmZqXOFD3c=72;HE>UFaTH+=cGG2ea`u1+&k}XW#9- zL=BYDF|bJ`XJtO0IzFF$_ zq0!;U^L>cP+^>vKFXny=?+=?LJp!9*^(c2cp^%P`{Z+KVJgH0^^{1#i>DV+Io%uQH zJ~m9F{PfgOe#VTN8H+EH&!ka)mV73S@|VbG(kOqKd?tm8baP^V8|K7_LNcJ5Vpmk?G2U$a7(bD**_cPDEz*zCx^0ZitumQs zD{sQ=QQv}j8Pnc|brG|?tr&0e#;C?yGzm20ZS)06I*Hu`hi*Cn^WFgd4eyOKi<{^T z&p&xDoUH#$F@C0G&fHex=U5zk@_;AD_yrnFQyzQ8yJ#O8ta{FWfd6}Dq|CH=pL`}w zn_rR7q)GB?@|iSAenUQ!CdqHfCo@S7Dg5wm&?M1}KcEiOOmj2v@@?q@O2MaR_ClH~ zmow{M72~f;bSc$6vXp;2|E7$YpN+qpJ@-=u%BSXLmaT?m`)dr*KNULVT2!l|UMXXU z9#iQSV~g|{?k3KEW@KK)?$yuaUX;x&J%%grz9rM$n$aoqI9ms=gDSbwbmX6^! z9h!m-&+(#kPne2&UL6B}Y+)G-R^(#aFmH*yH%h=y=8Xnh}o%cVxFT6D>z7XAF-Rg!(-b7GSN>{v4iEq z0fsI#Q@w+|9I3z<1@2LTH~IxnWhXt~HsjrNs@vIra6rx^`-K`ezvS5UNp049D(wtb z9o&J}(+~DPpntJ5q|Yjc82b7T=r!~;S$8n`16ZGB${%5ERsRI@YNq`e)-bdD9oB&U zp=x}9-VJDG=l(I{z{LF1gpNlK{+ZX?;(@MgoAFmnFth9bjFCqJ!RJL?|5H@;?>we% zd`N?T5m1QH%d?4}K<;GLi*RkXpV=;kbr-W=su}-O$1rchY?1LVb!-G*&vM3xbey|r zI+`9s8U^Fmd&=Wnjo7_;((~{-nn`=Ua85{kf$5V;eUTQepeY}zzy!fhE;z*!BDdYR zRHK`OxP3UT4;R0uiwWZ}E}QHvrk8G9K`N1dsc!txUIHjBKBod@^g}aJDK9dv6fu|? z1DPXEW-?BQc@>YD&WKOp3Bey?8j4PZJ)VCbwxny20+Yk!m)#64GG%xmcu9I>>?xkB z&BlyqZL}s?Q$_~yTvcNp5ij%exg^G$=DA75J=rk8d% z<3fB!D8Uf!X@LojTG;Tn0DV>*Lx9sz+}ufF zYL@KD_U3TY$IX0h&H!c0p@FpynwLNdu*4vp0&yG=HvsTNm>Vjt`$+^GLMtha7C93% zTF5{UoB`oqu3A!)X5a;rwg`$VfVwdg6H`_YgLE{^p>M2Rnq&A!M)uP&0!v$eyxh4T zGasNCnk5(U7EwIX$Fw-AjzH-j!btGg)ZgHVTIqC9M&}1^U=hsfRMXx ztBJXxsdvxb!IZ%9tt=-Mx_m-t_y0!5I91efnWAWIB>UR;4#eW!3HuJ>mxy#Fx;qZ5 z7WcCfD(N<8hjX2j*cb1M^>;LXo(>EQXR@2nlc4yucW}UZQsXH*R&Ct2!L@^D2KqB_ zUOPOXAoIxUx&}ZkPxNctWdRS}hSiPs2-Sf5SR)%7wzNW*gl)$TUazKJoABDWWwYJ% z1LDK%R9hx=+l2mAKoPe>@RrEm19PW~i$FmxF9nsHGhq-D%11=S3USeY81n8Q@HSJ^ zAa$G8w4r&+X0A5QK9J}p2}pFQzUq_>_3N7&{L|GT(b2^tQ58}W$VZQe3OIH^*2l2k6Z)yi1F3P=1)I=5x1sNhk4lLeSpka#UW)d?X{(e9q%w{k0a@90?18FB znm*G;O$GA$iYgvG9jPF8+JA3-}4kQ|TspC6BN9dbDL`-xn zpC&n!B8l0m@u>^8jxz@>kg*2ri@LpkdoSAwLVJG#<+UFJ7pc6xf97;mpj@e;!RZ1s zdJOmO>42nt{a(mfLY_5n^vI&moFa|Tz{t*kHhC_}ZK4HaVLkPK4%T<qtO- z9kxAtW+hHLe(CJY_->I`ED3}KG-ui+Iys7xIDOEQuFD$it$qFbREXRUI(lOLyUqSu zlrAXKGa1O6iQBXt<4%jGX?>%!A+{$L@9GBHabm#S;s^GBVe{^>KrkE;6g*G}%Ga8M zYb1r#H&%G@(MvNobvvpGz%@!xatsNu;~$M>NCB6sQeIiEl-JZK72!&yrV8LV0MJYA zuwW-5r6ExGMMB5m3#zCkS!}|;tRigYY67mTsSbe~C`2Hb6=C<}1qcoyDC`6{Cb)*G z%FDb{CZ!60A^CE(ydn&|%<3wrC8?=_hA{wZlA5tH6>`&M_DuJSSN<6>*@O;P{;97P zi}9%7&08Zf5<0! zXW%V=F5dF-!Q8F>?SE4)-j~ zQyCp%SKE+^v(GOi@!Dl)Dn;~M%2KX@~}-ojYZS{o$4 zXZY)+e4MEZ>ZC#(uxE0Yd_1?5h6XxdHxOXAwyHsbRQRfu5~RYbSCUkCbpzD8*oszv zl2mw614)H9t|Y1O#s&#e;gJ|gh0lwVRQT!`NrlgfNstPk5hJPaH8GM3FO5mrEVn8q z;B7fvivwz0fsa5<o9s$}_naXp5vDRd~(fULXr69S4$59&2{m%SAdX zDB&FX$$;NE)_fE=mwpQPq`Ag?iZ~L>G6D$3&lKI7gRBIoRUJO7$nL&970`yZ-UJ&yc)hGqf%uo`4i0o=n z%5fBu%oUkDguADXj{n^WreeZzyy*PoeBwY_DF>HB1!?D8V-JGnCg<{i6D9`q zlQ$~wrUu!N?_T74CJM@;3VPvj7Cb(Apd>N_cS)Z@fJaqz>(5Cb@6!i=$`-z{5CVhs z(x(rxm0Y&H0kZ7?_CAm-h6Y2(vhxZRbNqAg$)H7}v0|>`wIsSAxd3;1!+Q?`&U=i< zE8+1j;_=2}CD8TSwveJ--MNs*X zVvCI{`5V!f=s^TfqasUxS!@|mgrLQR;$egk^Ewd|`Nige_lEc8jdX_tEChTF_{(GFDhc8Z^^D7tkI;tQ27EnKBbEAHf=!R5e6V=4L&+G0nNWtfC_ zK|5>cf;XVJWmLdl-Xm%e9>wJw7S_E8FGu)&6i(FS`+4{%rr-mAlt)Ey`$L#i4^p`~ zH23DC+=o%mL##!5n1QJUC03!t$3%(M#^V$<7y72HTM+e0GwPEJ3^<5dgQ!o7PR%Yw zanE2B(We2tKFdp{KK+uYEkn!j!)_&PIQMZw3@xLQGVjGmA@A$g+cfY(@bMRLW0Se^0BX$GHm z4=~T92lYGrJt$*H4@@k(9%YYE+4qjd54PJN&3jaP!Ei|mG zA56@8C9?jZm_9$AriRp&Z>78PCr9kccc^v+xM8s@<*1~8&ge+PsQpoHIIq?< zOJQ=6$i@wSz_f4Lu-e|#x^XFZ&})~5hW@{Vr9{QIn-xFKtT=uYSp*c9z6a;`?!kRl z(rmZ|=+{$am?pQ~7uy4Y3yR$=Qnu{vPK2iQ4NvP^KCN%Xswol^lgmx@dHPpNJG2)A zwRJEtp)PcPb0qmD`$|Y#t>^e-S@>1d4;idPe=8|}3~JJG(~2u8V2ZYLok5nkzL(40P`Dl8>k@+~1Gj6WVv#)M zL_0ejzsm-8?}<@RFROQpAxY^3n1bd%S=|B0%`)$EAfVLOH;^FVr6UfSkYVXpDH7p? zZN<%hM_<1KV+fHeUULUwWi|EkcROje+0@d2$SO@=CDGnhfP0F=x@+Y=LTDkJcY0!5*I;L31NSA>N{GcZOmPo?xA16b!rf$l zu}0e(T;Fb{-|;FHZO+Mles@w){?X#ngdjOtc=8B~7u{apy$8RXGqPiL+$CV-NR%uK zuM>kIlgH)rcC2k`)lRD4u(pY{n_^xQrSr;IEuo!FOi5GNIdON^&0RWttToLnE;Wu> zn9_=7$HX)@zARFKJ7G%jb#2a;jQZPu-0AiyFKPoBeCSnfuHOs^`VFo1$6BwHSmTrl zn$o?MR(NJ7dKV@ZIv2Omsp(EPQ?yd87y`af()!(K$7*cneh$2*Rt~8kBN;>cj4 zVJKMJu(v0k==Z|!FwJi8!MfyH<5GIqC?${8*g%6Lw41>Xd5DNqM>A^=Ug4jASixs;x@lmZEqwQ?Y;vev}fH0>WS z^{RDY8}l#hA~KC1cd#*lYWDf#T{~ASI-;W7!$)ZP!`8^!(m!A z^{xZ3CUq_8&T9sV1RomS(?IxtJ}WVw7f$of-=3;2;c0R#P3#lYlZyXDzquDP zXuwot%OfoJNgFwRF*8G|$7y;rt;&IKdR*}xB46qqb1+RGiq$e8CQ4I(@9O@(y?esb z_=S9v$}nS2?;FmYTr$rzG@WNSo9ZK0Mk>pxUg2zBJ%7_GK3jk%zcb-&Y=BxmoDcjx zT?0L_!S>GVmR2#xGG4j7Qx1!_;aK+rv4qk+h!e<$bmw96^Ex%H5>nZRY3nn^;^NM;_@c@o^@9x7h)fIA7LsS49w>6DJn#=*40YEl$rJ-fkQJvJ>f#4{oY6 zdG+k+3WRAhqW%h(99z4HV9j&pSeiI0fUbyhgE@I@Jp1NYSHGQzkKG9(dT?231#R+E z3(anyTv@CLu3K_f*p{xE4fH%pUOz}$I?|mZ#|GIh(gI1fo<^^KH22SKN*!6Sy8T?k z_;SC-k#?=7_QqvXrS6Zgrlvjq;HV(Zk=ZSYL`Q31cOSm-!l!@!l&J&{Is$;lp<_Tq zwXLR}>uO&e@os7XY70PUB2A6!R_zE^R$0W>#xZx%%BeW8N2uswgQ26_XlI#GLR8#Yw(y>}uGbp-zbx>E-_NDZ_BocJnM$G&)2^n2d6b-onTH37Xm# zjZSwVZiZL?Og+X;-_*r?OC4jEKhq@WIQX&UWSR05{AQ$$8$W{prSR`fLnNJw&3uG~#QQSQ ze>AEgXnzF89ICAWb*}~_J4p1az%!~+tIMh@)oM(CMqnLRm1|IGS5>WrD5eHnqH>tk zWwn(s0WSbl0Kn?NtPJBF8aWWZwzjH93zt)z23ZdX2bJYn zpzSGn(DRiS$Xk@RQESP!TU$9kz$+~8XG|s?uvQxgd!MFDf1>KyblH)HN+wF4nysrj zx;9^bmy3y9N2)y*>XyZ%2v!d2@=~2G)8$gq^8wPGT&~N|^O2(7$u+uMtINxE8Du;F zE1#gtClb7}rA}w{y1Y_X8cgz@45A6hduwzJ6h2PgQ#R;&GhsEKqT4^N+qZM<DDbE=Yf{DN0(36WuOh5$pHs{&eCPj^#D8YDP2BWm(e&#y5NpomoLV1 z8J?@~+y&|$um|*q@%}iTC-6Lp=PBS3d=B>K@jQ*^3wXYS=gWA$g69RMyS|R+RlL83 z=NovwiH9%?4&WKX^F2JT<9UPW?w`Vb7tguq;S2CwDBDhg*nF;TYu9ZBy6qxaw{6pZ zZ56uhGQ3@mXOnKb0@js?d^MhHz%KV7?1yA9yn;Q>YRekZ)iQT+D7=o)rgMFH`OIqF zJhVynxZQE?RiIkE#a7$yp>|&f;#!M6q4U^Kk*_dMF0*>CVM7oMD6`_Pxp_Yux|Z!7 zypCPZZeUuO7oOg)v7vVIyazf|Hd()a#fF|`k1)B+rP?q7uH?Ex?5QH2B;x`8PRi%)WJ#)6N_Pn_Ld&oUw_N>1A)qaxr&ulgG`nc5d=!F;C~F zY!CBxZOZYo?EFon&XVP_Ppv|K(YZdK6a!wt5BS}?EG=ncf${(HU%*UX94JZWv>>n$ z?~4M914{x@fCc1$5>NwLz!J~{)_^S#Ovj|s?Ey!?8E^&MfvkWh;0-#vnnfvhp@LsKrPs4s4%)irVsfi*Xzg z7b66yP-{B`7Kqp(R-`8mv6IBi)&EeoMUwm%5coAjK_IgWYOxDI%Srb|7hC`? z_LJk904V<$kzdHCEed_a8eo-&Jdk6EMZIgi(vTN&W$|eC2qZ*w1ZG3JIRR;j9Em_n zlhNF`bu?}ni{!$;E0w}#bVHyF@~%lAiMji1S)8b0rY_8`80^}huFuoFEfJ0#t>I>IhwBk%^YF|RV*0g7Dt`N z{9KgsZsXp6j|$4+^FRYQ=vjigzesgA<3y@ac`o4k5}^gC1T<~DBC6wCgBqmdeK0M2 zXF>+!8-OI>q}XqXNHuGW@31lM0}>;(qIQijn#uqi3l^KAKEco{AS-f_vqP+1dL4b> zV`O&V%ZlZvkeN`w4>PI#0On51j~K{|Bnh5ePJ%XnKR`uE*8E4jQ*_T--YHi7Ee0HI zngAoCkUN5;1&upMjK|^iI7nPrjkh5>AJ?2T+yKr7OtNPDjKy`4SxN>e8cK$e$NL^c z6W>MWU_31fL}Ff`@%$}~=gS$yIrl5hhu}B@>K41W1K%KvUA;G|Yo427u`x7FcX88-uex1;`2dsaGIcWO_ z%)NGw%uPgKjC?(#dH_uzZi%eK3f2_eP-~u2n6lucirSxixti|i) z^lFKmBt_Q2b%ned?MY3Oz{0#G=)$XIEUR-FEh(^|kksKt3Oe#eAr}oWW&&>5E8PeY z<#tBq`AohU)&)$t6V`=Hy$9AsO#3{nZI-8H<7OGvCIt9f03Ezu8gmn^`!*`(5=I`w z!Asfjf0$Urcbe$Nx#(Vq{6kDOvH>*(E`TY^6;QeO9TC@gW{;fi{T^z456?Pay_=@U zeGupmNCaYi2$FsJ1E|Oq%=(}VT407xoercC{$%W%?pp)htE*DNXEeanR*!ne;8RZZ9Kq zP$u&_rjT_#Q^~?XlB^qvOqCS&r*82VWUKme94@6Chox{Idn4@mYN-+4@3U}BS>gXHf4 zs{}tM;I&DL8A)7_y9bcC6R&RL=W^T?ck>p%OXYl4l=D8ahg{t-5BN0&42yu@$s>?_ zb`8g^5I&E)A&#|QL^3GSog&f)G}W!ne;KI!pZI);J7VR=pMiq_kw#anoNFTay9jY2 zwmF_re;__T zf(bUpd*BiUjeAHm?n*9@3iJ+c>&DgGhH48X+OoDq8fw8%+{pdxo-w{tUC*31BiBcm z>lRp#GWYGU9%ET|fICQuHV4?+W=3r^Ak&_9xs6+uXe%~nY$Y^Akygth<8~#wY3(M7 zy21DiB%Vhio9UndM1*8{WQ(%Mf4D=5ZiPg(n|o}PsjH070!JXajpVG?Zj&P?(~?%A zrzB6o?v{luAo4MpCKSZq$^Uafj9DT7TuQIc2Q(Ie>E%HcmneE z@odzA!(>1-UW;dAUyYiJ7&)Z`xv{UVmwb<+9uH?^@^#-O@OXyzztgP3b1eH=#dwzc z<(O4?p5=U5F(3wSi|3@P&_-3rHAoabo|~$|^Hhag9D~wTfPj6@3j^&r@tjN*NH8CM zPNcN*D!imXXc!YHXC_v`f6LT8FS60$;8y{DMBc-}mzdagUm+xRy9W8?QTpD$h8a&i zB)!I`3?pl={7slIV|RhIP5m~^=b1JJ>p^Duo??6xQ*}LbLm1z}1R5J17V}AkjJr4q zfosiXe3t~?H97}H85SDk-#L~EeqC29eCQnVq*6!fnf8IFGrem0IqiZ)Y zbc@CK9?wnp0J7a?yg^d~=LYOT!}0IOvy5Fyhjp@zCQ0Oe^6u;*Y1I=HviK78vQ;J9Dyva=_|S%LhCAZ1Qq)`D%PcHih3V) z{|CI>T~6J!3M})u5=kBirX2P74j7@w<%Yu#ubnNF2pps5^}mE zwN3Cehu9C8dW~vagC0>cr(%2@G~-$ba6^c8%!x~iL+po4y8$`vQOa(yY2%Ce|?sB-&;(5oKOU!)uIFO+kpD+ z2`sk2I9I+!C<1GjNs96LRQsB#eLrE^7gXa5BBAI?p4MVKgM*@(_Ssb0ukiLPMHdbS z9K2OP0-(`JHTWeS!NP;SmTK^$yusVh;8&=@9w;QT{gXbduc5))7USaT5D>tW*VF_X z>0t>rf7&A_*jNuHe6I8w?*lRm@w5vxoM&RmJf+urC3H%&@_KPy9&XM`B(^9-#i*^Uk!^G-VhJ)wJ!)v>7 zWpEXb8jxZ=#62*Vn`PCE8<7S(SC8f? zp>NR5lm%r=_0*E(=CPh)b>rKXU`u-Ve=Ehn@9=M772K+=W-G7MZqT}WwLKDZOQ%V) zSL&A(w=^KByQD!$vr1lQj6+!?EZlsi}Bb5Uu-g|0Nr?81OOoC9;DD880fJYPrwiN1wBA0 z!dtg>DdV>zfXJowZCxtkRs^@e#^*#@gx`tC9&ipDPm2V~|A%)f5WiFh`kfA$o=!1hxtYRK?FkKK5l647wm11`SHQTyT4XcNqg zwC@8zFuaIyUcc+K?p}Lllm{ebm$X+>tzwiH43`w_2XG&J9v`+#S@L7`GO04*b zT7%Jl38RloLg^(whA(Nx%bNI1es<(Viuzkf1LkSBx6G| zD7h)z2aB-)3b)Tro?S);;XZr{WeFbaui>|K8uww6!tL%ZuuqgiXc)BL(mu}f80#+G z0Dfs91jyO3l@<8SyLu{@UOP_>mIX?^ER}kBCbh41OLOzamd%Z;cC2ZvU)9*c`RhD~ z`{r_mJKGx9t=nkuw3zpk5J-bwicpl4(%bNuvU^U++R1@(l~kG>LR(8xAJRzJ~if8El$w7#{Wsma9& z-O$p&0sRFNlSVwZ1INhM3dH=_zV^O7`=+wjOke8>GYV5R)*+^*J<|)sV(uO68;o^} zAkk<4N%omMO@{8NJfI(4$F70(iGhLG&csS6-R?~x2u$Ve_&0KD?1gCj;rzTGogM^z zfdUS3O;;1j!yG0BN<@)!61zQVUi1m0wD+oSB31EQHM-$4P=5L z!3(1T+65}A!=T5Pg~4q!vDYCJTvOvr`=S3JAY5HZ3{TV}YPh<6}vvkP6GDRoV$vPpm z$PUor)dF3fK}wTtGf9$Hg&6N#t}Z|*3Ye$M0nQ@;E&!1ILGuT}e}zz{Z1c&DJHlK=4qcLMS#^?IVmgFyp;6fCt&{8$ zvt@HnJJ)3F;F^q`T$8bjYch6oO~zS}TdiYm6DHp+gYc`=DLIgyB$)ghh(juX$P~kF*4pWiWDO81s}R@W<&P2ocaMD0Uw0^cc&af!S-6 zLbYILwo!&oPzcK>7g?ZJA)T7cDjuQ+J#-^(e_lY8SG633k%a16gaztSL7?5MniE0m z5wzhz(u3$2N#VB%ek})*Uij%LKhTPSVU^5=pEY%oaX~bACc)#CkwGUJ7jhIQnT?=e z&`BnRO;DOb;-E#%4=V&zgh+FIsVK`QMo~9FAB?0z345nSC|tL+c0w`D?%w|~w9mv! zf6&LDR*`hDW)OQue=Z&$o;*ASGgjZ&Bll3+Q z(#hB*EQ+-aH%Ogyxq<1VsCTg6>xP@sS|zt9NIw&EXpyh689t)@!_Ft>3D|`sf94Lm zh=+S{$7Og%-U!-^>`@cp9TL((yOArLjBe_J4kJ%EWe+ZPgHEGBIF$@evdVFiRjXVC z3|jSq@$oCh$8Q)P|IGL}+-M;!DK~0q$C3aLK<~eD&;oagbVG(ABf2J0Z@s zS*9OgWgwfE=pb=DAv<;?iN=K=*&(GOPjfk$OL?k@;mTM)adbjl0M(^Me}9ap>$KFE z1wF7MR9?{3-JRGO>#pzL2?pxk!L)4KYU(EFqnprCa2?iQ_&_Gd-`Cr{&kUmY$TsMY zLk?#r#86CD^r<|fhtCAF;X6{DX-{_b4?rqtXV)Mh`*1`XQ~ZH&@K_fFWlXunj~%V9 zV!%+-7UGcw6ix?Z^|H4 z@J?&tzuA1#j<_$<)Y7_n$Ev2)O`CV5gpFIXCv-Lm@|9Oq3baA~qkI{kzRP&OZE0>m zT(Rt2f?3!UV{?iiQMk8tGyNED+^{MowWje_de-fzhu`XyZ>xKKf77Z}>l#yT3y&4H zuS?LknU?OV3&B@m_ap2|$ zYfG`NgZXw5&f(6Wf37dpWiZ~BamL$n!pYH(w;d;g<4geq4T`YYvo2PhPJCJvr<41b z-bF(~CzzsF3;}Ktj02RUip{CUQ-h}#&vHB`uo*=TJD8MQF`%e0wI18IEEBvUcu;X1 zw&8dST{>(AK3zEX0_;WA{Nl?sA73s7tb&&P!vPIM3jU%Df5&JmXBLZQSq-4W#S~YQ z7UN6CU;qXPA1(!kOUSStH?!baMmS`9b!OHH3Db82q!X`vWpUh2PfFpMxDVzkd)9l#__2v8(oB3s#xrrnzyPSM2Irr;28@5&dhq>Owi)#!Nq4}NLo}V45r1&D4hs3!m zXdRldo|u3vp6#6YQmSt-HW0@k@NRK%Hwyrd$;Pn&f4uIzH-OVH=yB#;iTP8&=$VA*00525%jv^Xb*m|;YGSvgP%oFNiGftV5 zyfAJdwxtU059a@4$*A z|9f}Ed2Fg+6yJs>W#r$k4nv9-RXseVI4BYiFBn!&hngx>BQEsd>& z|Ipe{k3BGg8^Vnw(0!PEG%smmZ(^0GZ$9PQf3#s$)7GX{TcBt=mA#!8FEn8DS7A6Z z?<*&~*NftL*Z5CZtyIw6CETThO` ze;{t~=(dIc206llIFaQZUMjw!Wz&CxKl(Fno-VXKU1uh`og_NG73Yu`#B6LrjvT_F zHjbf3rLuk2)6L*qvzj;yws)q|xF%ICEz*dlwGi0qM`{eNos=Hu84`o$y<>j);f3zQ zaV8@pEqd$t>8J9f{L&a5hv#~vldKhIe_bxd$vRy92|@%ktAT51K1QXJ@<-(aum$2_qr*DI?Y@|)rbFC`tKEs@pw>@6=skz`cG>iu*3x$d`i!@X_g|NZJF(pV zpJ>F^_x5txK6|DYk6Lb*_=zCOr`|+e%pWGqZ-P5GlYqA+Ay2BGrJjS8OagpRfWi4%q{)*9pSh;sRpH@yD^sLkGmuMCYqdRlIuw4Wcopbvoa*# zDk0&fRzhR0T1nUAmG}t(12~zL6&3KSpf@OO*H+uo6(_a2)%MIcP^k`yBlir*sgcZywV2;%m*-XGwa}4U;kVj0ra?9h z*V?$#)^r6raF1C5E&*1~1!g75qe1!UQe6{5Z~XXe59^L!$#eQrADO%TZkxl56d{f4xJuCvKYv(ZAGI4NczS)&S`HC{zryM_& zUsR|B%Vw8#4xNw>^vGTOoSwUzb@$-u#nXpp51!NT^y3-8Gl*v|p40K1f#*y-`|zBF z=M#87iRV*z&c-vuV4TZXVHnh3m4#wB*=GY@u?|p$T*`@#`C6R*TabyVvnfy#YjxJyA=|)gt~w~;fHGKjos;4_vg%w4 zl*T$eb#4VpV_n|5EUnB)>Q6=6Jgvo4}6o^v`K?|<$RC8qKuSEgo^eKexVSv z{m7GQDZ*0Ye-5rg`p3(o5blNxSIZ(K-Aj~@98eL)Qy>Q1+$C~Mg^65X@-UHqDki!3 z95Hj@@98{|1BIJ;id;o`6fadXs-sz=S%Sz#v_X_Gu|-r{%7sGAHo;})moAS49C^EV zp7cgBQgz{ZOmOkkW=v6=R7{ae#>H!DmQHz!_N7`df6Sg%a^m$AV*+0@7c<-} zUDPZ!cd3OUU8=1qm&gUaW;%0x%{+O_d6=j_?dW?dtW=M;~a9LG!jlyMeV?1069i1v@P_GN|58km_xhelvsa?Ih{mc3W>@ zP`(`_<=a`dTN$)(pGw-dJ@(re)Ndz9{kGR}JA?l14${A!?Yx6Q0ryT)z@6jzEQ1E_ zPSU`g>mFuM!QDkFxP4i7GU(vm70c$gT^?1te_8u|9>f9pjgn=7kO9NRQd*%S-jQFv zbQfqn1rXUFhVOe}&QKnMS)@J=bEftL%vqMFV9wS*2Xl_~^9)jjB&mUGrF)4T?jUJ( zwE^iAEY!J-6c7UG)I(xy53@0-uZG~^m|#$UjH2Vl>2VhIL9?Te4f$}t^d$GS2z6{i zeP{%GCG)v*x~JF}E`K142#G_h@p*8UC-X@L=L_U-;VMc28*F=qK{OGUQ>e)4 z5X<=@gDi(NhnP*jgd}vk6<6tQYdDtY`8b$Fp9AMT3Gv*STgJd4ywLtU+PKK^0?ftE z7hx`O9bnLJOq47V?|Fes_c^xWV0eS>uM&JJ#8x%BT8q1qd30A8DNslT z^d$yi5C@m+`x;&;qn8nfgoL0U*;JtzEld_By?Kx0TIy8@fd-^3(nAL}n`4#Lf3DlA5!`om-VP#&_vm3rNX4m@Jt$jO#ZYn5qF(f8I^> zGaK+!(Fg8;d?#7SyjUKB`HafkCky$8{xls8Tf6PVd&tcYRzhID!jLzYj&LMsCGjm{6FzIyTml!K3xlIp})p(D@FI7HB?{o1>75bNjBH3T0 zn?iYDM()QT{SIx$AmQ@cAT_aTjNelOj}r}4tc9B8k!&>ZPw5qyhbHD9e_|&{Bu1If z$UIRdbA>`8m5bHC!mQIsu(IBAF?ODn`Xw+Mte3%D1&oG6tkHf2%p%8?FeA>ZVXk&v z19Of0T9{2)*TG!txgO?8-Y^ z*V9CE;~$W9PTDYL#y^?oew|e~l?g?+)WiIkV$9 zA@)i8kjuD++inBuo}m;u%eaoaJ;wDiWQ@HY{06|%ZuODG=ghoENw_m^J-s~-vYou( z+vPZvNxMk3^Sn{WAvq%Ru-x6oe)tnOcn)oack#SPOjG!gJm~$hP`(KnO_CCeyY~-M z@zBBy729^>QC^LFf1wTaF?b^Hd@N>a2$VDbA8+3QSjBOzeP?IOZIZ4kO@M$sfZ&2U zlE4@VkU(?;#`PkrT_jsbSQ6NzJ;e^TW5;odAl$LJt{GzCohT96L0!U zarnP8v-j$%Q1ad%3uf<@+1Z)d-PtqeeCIo}@K()gpVc14e}nja#6wl?qaWg%a4Gx) z`6h(aU3ecZiM#NA9bGu{E_}dX-J#vHWZLq?lK5rKOYj~x!wD$+WHX88rJ^*}!NV=*z9!0~-k`oB1HX6~6Y@iS*GK63`gyzd#Y?{e_*ALy=LfC{oBs^XKs4EJPN<~`y5hHvUb zfB!h6zkg-KRDb_Q_xEqpefc}Tzu|%E4;R1p`}>dSJb&{0`!Bk`|C-U?@POs#@|o%V z4To4@f4ThD>;C@v^#1;Zj-Z{{-*A|n+TYKr%1!F;KTPlMKmVWm`|n2VI)3>6$^G3K z1*i}%wO9>DBUt?xx;}n2KmXn^yFO;CSAm~8gqEJ@_M16MZLTtHdAG^fyZA}HU8Z{X z4jFqh@3~W^p6^%6*zLUMRjCNju@_=9b`0g7e?YnD-CF=^0nLW)q=0$?;Zuv-mF`_0 zj$ffl^miHR3A{`4(BFQoe)qhh6`_ItzZCN#w03asCUl5JNKzG zXN)(UIfE$1SOYsiyK_(OPyTj>Nhm_z~^wwxxtd#J$d|eyjx<>KFA|BN1^5~e?b-p;LhPd)R6ZdY|m1Z7a!tmttuM=ONUtS z&GQf}8ot<1Fwu$$Z;|%gV|f)Q63(+Wk9h_7DtJ%wBbUdrUS4x4T*6o;|FqsG{C(c% zvE94^gd_PJvN=CF3y%C;w=eTW+to$ChREOgQ>s6%2-Nxj$V!gFbNB0f2yIL6e=3CA zYa;HApeT5_mUv?vX1E}+aug?QTV-IQFuifWV1L)u$<@iSZSl0dHKOgUMc$9uQ8aCE zEdrdZDp8&+FHck^E7gJ-^}FXl#$p%aPZexOKb+m*Ixsj`)(o=|ENZ7PG=81`#BjVi@|eQ4PrD3cm?*q;UU~a%q6^cXeTaA5XBT0tb@UWuLpVBKze`F=1$!Iw*82uT+ z*&4y|C}yfN4k%2s3+y4txnbDi;DG%DWtoo$XpQ#|wDoBU%)w0veu)4M$dnp#3R_v|OR7t$>pz#yY{FS(F& zE~qOR=Z71mapXFde;uepryyY_dg0%@PZ#ujz+SIvaL!SyzM{%Kdlzm>KWwrN^q#;3 z1`%ivaB~Ae^Bkty1nyi$9f`3eFO-Kj6oUh7m1Y>@26!3NU}1m`Fc&FbzxjHJFd=7g|JASy>`;sMNK>R>_-&gru|KfpYkzP`}FrQaOd;& zhN_xgt?6Yaf8NnaHDwv1=P*0q{cqYixzEl9kC}jiYgme%RALvRd?MP)fPxi>9{%9A za79X|RmA7VO?P$b9?e!Qne=JZ8%w7Zp?YHKJ>$SOovI8U-E>~uQIjeMkPlrYtfVT1 zRaH`|ZrD~)7#LpNhH$0~^6@Fy2PeqnFAS(Y8}S`Ff8ZuLsih3(DVTIg+)B5y`~t$A zWU$GLE?};j5R3VEMBfMnV?u-n6~AGEG(J1kEg%#5wR$=>amwQoOjZ3t#4cQ*vK%5`eJzs~n?=FdG2o|*iso4JX5|GD zniTlye^}8f18@#Y0jRTPv5%qwm;pqx9LLIa427Jw3mu1H(~Q-ap9(m-*fEwkKqNb0 zFkazUaVMJr92jvqI=pm-ZDHimFeZ^^z+5Jlmm;k!7t1T~TM20m1h7Knv*d+=7XS%J zXFLEGFeNKSY?j5Wd<{=<4?+>{2DTYOqn!j8-Q6`m(KRZ)F0$LxEv=%8Mtgv65|;F>Iao zR*jD~+X6+HUKvx5GDQW<0;MpqK%EbU3N#HNBZKi-+k%+lRwY8)LIDtHT3$8lU+ows zf2<*I4dlHrtT1*m(j10XTaV!uD3e~`bHw-|H+MaiOa21=`inuv0LYq{}Zm}O@C z5FP1E!acWa&*o9mvxzSNqq8e`I5CTgP=V1@40v;ZQ#!nAl_eJ)K#b0pEp6 zNPp(0eD!?iH;n-Fv)D%%2|0+Id|oOHUUbi;dz)G}HtuCiWMq>s18na)f1WetPVn4C zb<oxYa z-N2D71}CFAZT$|cyrBNmwT*5>(7S=-xZvToBNrywOo#!F?!bZRp#alOQ#WQhPIRUl zn)w2sTfnGBn1rhG@-=34e>LMo%WD)8v;zIaBqN|psI0Q|<55vxfq?7vbrsRf(tV+V zX%^Oij~yaIku|$$&a64XxeEQcplCzUwxXRTVjTGJPv8|-`Z9wS6=WehSs@~|aKP~` zik&b72F7`+U;I(j?p+Ne~1-V+HiL*qr%?N0D#*9hx5s42h z0ye{n4z^9kuGoRgp;Ho9GDhbrhU8qsSe$kS;dC(irjubeU5vLm#6X*FM%Wx-Xw6Z^ z)Ex7!9Br0?VdIo{6`0+za@xCkOiMAC373vzRY@=j1ro49ei7zZ1)@XAGreFtwqQmJuVeAQdhah4A#v#CG@Bjl?x`ExW(%WIL z2gr-SyI7QRSd;>FvrmkDZMqsqSQ-Czwgz7hDJF7~D=`3>hSwZ$r$?am4{wVY!w~>X zjww^O@4dA!e+x|VCD}KERNVr{smXTdZ0|NLmc>>Fjb*DfCYIv-nLr;Tx9h{QfwI;$(e~&@JV|+r8Ma5e+p6C{^rCW*_ znWas3&O=R)<-!(@*wZ+q>=(C-bbs9`##Pz(x$(@U@xjJ0TDL8 z##Kjj>GEX^N+}7vj%y5lVODDJ(v|mMx!im`mZjFcSgx?&D7<^X*v{28!QDQ}cjaE8 z1YLxqe`c$5tR9U3q{w-TKn!Zl2I{?qYdppcz{BxY#_t64(Jb$6KIR1E?hHC`K>4mQ zHutHPtA_(rVxWX(F7O9Z2UXi2oM_eCaR99{xmADURy{h=sz*`pJP`77t9a?kcVM~7 zd<@G{i}7D8?Dq(Oxl*lqi~%EHAjADormuIQe{g_-Ebnowj4E3c_Luq%y60H#cTlx= z`+e}9$$jvC;k_?)`uj8c0NAcnAAB&?2OswP;JxYV`0Wp&{Y*&91n{G(?Ff6#z$<=T zK|HT?y{r=sq3IVv|9kNk@NU?SX?>bIqk*SDxuCXRx)8)XXf6);XKcsDd<;r>n0D&$1>?;n z9MfS@a#3kM*=U2pV-Q#3;~?bRM^cdWL$tVwr7bB9#T_Zmz_2e=a_E zmZ?2bHl=F5chU54Rp;ziWh>jc4-NWXoTz=srrQC}d&L7iZT0_VYaxN|)7?DX>FvDN z+lU)8efDzR)AsYN^fizF8>cbMP>;8FX~(W~l;iV|mQB0OX!z!y!6UtG$MqX@E;$vd z`!%wz2B{9bSrt{XzPcLxS(PlVgsiB(qSOnEG$nQy{{sn*KN*}Pf~lV(u_22But z1!g&*9)R@$-cZ7F1iYaf-ysV22(t(Rq$B4z5?V8IOrqKFL(9e=k{u4~zi| zWk~(`#?DY6l!H$zES@1)JVUT}hVqdZ7zavx`t3`1Qe%G)n4%|suvLO(HUdL2F!csr*QR1C&QQ{wXDDjV##Y#IHF&W^T zl*8uIV2mZ=P;MhQpTc>Ke_(lvZzzmeI zO$7_vz`~JO1WhbLR*AQ0gug9G1Nyziu&7FJ2`s9n=YqJ(@`#D6Z0G^ot!@Wez;?Sk zsMUb%+MZ!3l`Q(C_W6d=G$e!bf%40%@{Omdd|*HDYDbbRHi64Zf0wrw`__#l9sW3_ z_Fas98%B~r>M8(A(a3~cf?CBoanf#LAe-sVJPBx#N|M<8c5@jAq4UT@}g zTd!~7bw{sn<@KOmZy9Zlvh668QqxIq)>+ha($nNVpEk6bF2xm9HiRj1*~Xn)dXFFJ zPJQ6qG+WkcKD;({fA~Mligh(#Y@L5Ge68lEDmkeZsmh8Q8IEzT5yhyl7sq8qWx1n+ z#a=EkgZ0<1kQE62cSBF-P&e4FYJ9>i5LT5tZJozhLnbS$*Mxg}`nt4YPFB`dIUNX# z-q+PDtIDfF%A(XV)O9$`j}_Sir4Xz;yi-8*Vie6Q zTEMnU6PzWQGz&x~QAM4FJ$Vi&Obk$%DE<;z?3fE3gW(Y{F5*^WGRwahe1aSvErOJV zl!KIu1UA87ArhwM!8u3(Mg$k*cZtZ#4&n6=iw2wxy}kMo7zMCpU=+ZQ#3+Ct6Qclr zEQ|v9u|w*|e+jFfV5A`s#mkOI&d}_9;Rw4rrg0Pe?q}n@$iusm&mvp_Bsc?4vkz0S z5;+{jtDF}s!DS(@evThT!)8=BGeoA0aZg=09znQcY-r8Rz+hQpOL;{VqD1;TQcwHh z>B_eh&SrJ05NMs0YG!cl)I#olzGOSD6XT<{8!3eBb}27BCL7t`AgVZJnK$snRz=6{*yj z7p8@qECTV!F&#tkZ*GGb_d4+vL9u{^1Cp?ms`dysmGVf3&!@^-zE7P=70fd|E-!($l8`+qQOh z^&Vj!RVch=Q(z< zW6yW&1<*BNw7{@2Y_iXIbT|l~aVvKiLxmAAe*w*6*w(CtqM!u77?eUh8X0yQM2vvb z#vg6G{tz)X^KcuI|)xfN-mi6zCd= z!5HDo-@4F>nF`H#%Lcj-Gk($;>g5mZf9yZj)3vF$=SWr(91-2AO9j=Xz;Cx`rgA|W zp-j&a(4|*)Mz7LkZ@X;dxOLcAOY8yCb zxoCb`y2-fVWvXz#Dvwa-$bs`CM<%2VtN#YXhL5zi4&IR50haKt&b$Fdj=`eHf2OwH z-ge}5_%`$pc1_TUPTc-7|5#+O|L8zRmok}Y=_soA`0S{fmo&uVfyxu+HGPbO&oetu z4o1Pu%a+d6zjzQp#BsD^s2MaOm>a6AW@XghtpF}evGxJ9!89M6x_f$Iy3$XQerAHW zlG<%G4Gi=Th%SpQfL+myV%DaGe=~nTTsBi}@VFksU0a)RqP+2NuS6Ad(5j~#DmBR0`@cy-+R`tut}i}e%QbqtT?;Myks;pQ-BP}hK!Z0jBDS~64Zrqn=Q zzH>)*OJg78PyV{|qh{+D?p$9S36zPftS^ULS|O{}tjX_~{zl0fh_&f=e?zXp{JXZg zLe^E(TI#uE#t|@ZS0es4LS9#bW@(0-i0L(WNGi)K%E7r^T^*k2C&wQ@a;7vrn%OVs z{Pf7`a&Xhul>@gjTgO$XrtlS2)Dh>v35AtI>*}M zSo@vOV;cxBAqAv(_)E(m1L#aebTf7a~9IKC2FOKNXg zCG4dQ!*zUKY_n);M%se36{!VjJJL?1T}Zo;Eif?ArZkOe?KguZd)KC&^i$ntNF{Eos)%@-c=~oz}r_u1ze8S97?Zlg*2evlJ4OAp!E9B+TGWux_e+sx2C##Xv%)> z?qgfTmVH+&ED?(XVhP8lvz<7acq5CHb%7h774_mp-U~)Xn_Ogm(P)xRobp~gG8W(P z*gbe5e_n!qi9+7AmMM8NlqhFM#&V8=Tb?LOmZ^o3GP_r!R6QYnI(U`|vBnPgY`X(K z4r?-jb6|6P+U(4SBxnNQ0Uwa%pLXK;n)B*PTazQf4q=bc)8i|?&yPFuQL#Q8DqS?-P<3a8e`)yDIsX^m>gdJS*|_#v1!oEk^=m@7 z%5DEnZ>IrH?J2TpmYJ}jV5}N$9mJ-JqhdndI|A|S7&sNXdU~c~SkG}=(-*>I8`6*} z{sM@y9ltvYx>yL?)IR`rKo(4PK+x&UVg=g%?w*e8`T*{Yv<)7?!M!ZFWc33y2QW?V zf4+{k-Y!R9v(to-UBQb=dyw~Eu79q8r#iMK!*{0P+jJMH!dtJL;_%cjd>yzfyw}Sgj`4FIkLbBE5k@6 z?f_c^+lVZ8WQ8Lt9Z}7wAqir*Iww*e+F&@c!Lc@mHcFcXCIL0)FjNJ>*~5iae_np5 zprEj3g0Feb+|tOW-@vYP9}MeC6+MruUbBxdJ@f&e@TL@R+}08!kOM@WqEJQ$zF zY)Cm!gyI@$l_vP^%un+7Orv&SS2r24V=-dKHWF;eXk|mjA@53e0oY^`2{D=ktJ2v0 zCmF9HlVGR7`Zi$mG-IVwi}K zdKWjNPl1oXFVO)4pu#{O;-`y#w8A*z^(TVcf`Q@SDenlXb2_#c;sQuMf8-$QXbyRU zD0=)p1)VUxA+E5c*;tMuOeZRAj*erAwKnMurNYFf>UbJeI>JOc<6ObFW9!B-)JvLq zru6}ddM!}(ij@opJHP}qC$In{J_3t*1{TEJ@zsHS{!_Q7X>R2^CX1u zEla}H0DnYko)r`Yb@kG$fAyf!$-Wo>mz)N#WQ?^r$*>}^UX+N$SA)bl0ywvuh;EAp zhNHkPEOQmuX?eR1^pJuHmGhpUSK$K26Y?s7WylTy_!L4E>*gE-6%BjUaCwh-HHZ(I zjfZpTG4{4zcI+4+OKTYQ#J9gaoHU}74rY0^?NOFbp*1UQ&tgDEe=baarR`CL&44Bx zdv(aX`a}#d;bTHwY%TCN5pVr?s$@W~vb~FeI>!~Tp5rxw{U%4b>~CaJk66rs2(_8H zdSc#|_LwWOH!yIcDz?>Y(XEMbMDAF7=>Bw@a>1b;$%D}EZO659^|f;$Rpw$NS8Vlm zV=c^UN;)^Kw2#w^e<0>$xFpU?%wZ?|a$c~me>QHihL%^Ov6Iwid%Jqo+;=dgJ-b8X zrDx9RgV}qVb~Ns9*}bcESL4p6eIZ6{ui`~St#x4jjSy>U9iO7^p)9>;m486(Q~9HM zRqv1J4YhQj@ma-MAO1bu)7jbEr2uR|lfPCq+&fF}NgdETIeV7Bs(+8Cw)D=3GD)pc z%Pg&JS*3pz;v5DtRi!MhHgBkUWT|E9Say0#t#FO_5MS6|_3Nj9{A00+Exi`F?mw)2 zOy4LL<&*-;Zq+{rASCn;z*EV;&8%Umu1TwM&M$aD6V|w|s%+&sI4XxOX+5&#eY3ikDD-<5*s=YQAq3D zQhrk@&7sYe>*$&@LmTx86RO3D%lJCq!5NRSe2kbTXFb-~+iPp(pfS)BRN^#tK`K3R zoTcCy&-0Ik(p8u{Lw$XHr`@U4m`?-^_e@VHMEjxRN;wP_ zpi)qF^!En!Q`*vLc0gqr9Pl4j2U&LX3=Y}s+}k%4#e=L=r5lg8bcVNVg2OCqOMOGZ z)MLoHRP_|ho}rpb19>hn5O(t#V@-`wzb1(O=!DRJ2!FPA#FDD5llA2Y=23+JeU;_) zRcb!LzJgE=R#xa6iu;fFdli+ys8`mS$XRbzRo7PKP48v1s-~)D?%6vHf@p1xrMk(4 zs<6gV6~}6Ql`k5fTfJCYS7}tOLBKw%1XlM&vlayxD;af(IYDgOEg}FwB?ppw3 zJ1YtWIe#Y5JIfimW3TqbQ(5WQ^^ROS4?^ihj=kQoH#l~qBR4v7vm=`wxs?&@a+_ms zcjR6tv~YegEb4NfV_xdWD;#;1V_ogYgd?vBb)kr4_Hrx_IkMX^d$O+u!}4{G9B|}~ zj(mY5|I3jtg?M>0(g~znMd(tAPv<;*Jnf~!^M7U7jzr6D6XEdk(iKM7E@~QHUWMPt zj^X8{K#uPmUM|A+uHof@@NSs?7w#Y469^v&7~w^Wt{lGX@<8|?)Do>Y;`R==ak2S_ zMPEPC5v1#p29bu4jv^gHx&i4p(hHGZg!E#hmmm!bEN}3e97rQFuWkkVX-p z@k1h7&dSNGibg0Wvn%%oq9UiNF_0xN}fR9kp{J=7(9HH+lg=)`$&XGfdu`BmJu`vL=(n_2G%cKbwO`Nid;khP5b4?bx zmj~dJSSqksVPLURmO(>i)_P@-$Zep7ZUV#_n&J@f!}bzB&#S<6z!_CBU8*n<7=LdL zViHij#Vf}ydnaJ(U?r`Dl%(hQr{ zdkoZWJ!*HN!(7&3@%53I!w^#c@&M%LDuG3{fe0=&vH=w~8=nVo3owcE_ApgXYHyywXI%mr*oyIK`yqN;2()6x8=CV4OXvsSb#O-Y z(`CFD&Iu>^lq(oo26#PZa=a@MYUPXy?Q&J3Aiil^0cHUSc4t8M6ry9drhjHvu2I;6 zX$rKI>}1J3*M^=mC8$9j;QQL4@2k3{@YE<3SZp!isj)^Ty)K-UjKL2e$sJ(EI#ma( zG<&=rF3(KnsQYv+rc1cBASw5H89+Y^S2>J*v-1{WS3jyW2eZW^>J(Qfz3cVkPhn~n z#Ni=5C(MLO^(L_lBEKzB=55^m6TslB2b+s! z4~Q+|RxH;Tw+Z+-==PuTZe!s5X$}<0P6P4|;oZT<##INH-Yalp_y})2>O+2kQ zS;xoFz^CDVFsd$buc(wp?$6OQ88qO&fQ;Y?jlp*TMFtH(>s1?1>N0_?$BX!^*b_L3 z7FLS~vAo21NO<>)5r076OT7m%=eLIEp8}~YULR}hCin$cbHBnZ2G>2!O@CN`LpI|b zF}+97;PGZwZ9mEtK=!H52`$#)ky>W>Gp`tpLal1E8JV0$Nj46MwHO9sn!GC{y;z;EIB5 zc6=1vns^aDBq}X4_a~@_6*R#-i;G3Ludl|%K9SMapJ8g*%nLk;3w&CPEbCqj&R93# z-vqXb`8VNn=q;yt3Ht3b>NY&%--a*nHJ~WhZT%9r^((28AHx#_0({f@CO>;$=j)%q zZLxV=b$MKE3x9ka?QIt$SaukrST2`iSazD@0_?ER$qz3*<&AU0ZQLIxb|W`i4YD}j z10}4LTz2BLcM4ZDlFN_ftwLXYON<}OW3$k=_1^L3Qo+}Z!OrJ>SMO8X=tHo;CRX6w z<`r-?(b+)r+HM}p%f`W<2!L2|iIvT9^zAs*Tz2kD(0^_oyPx59XQxnd#R%nClc-Ks zm-B*W&I{3E&hn{(k3hY^GiT_V%XCb{G8I&=EaeWIb{bC2qzk46pj$gFZxHgEav~1A z@INy}M0F>Ha9lU73YZa2gVIm0D9g&JQ&W!5)3nCZ9jK?#q0CTns@QY~o>M$Vc#WBy zu%RUd&3~45!%P?COR9QicW!yLeoYmu^Yu)4V;4!E@P?@x0K;O0C?KCogBrto%y>`? z)B$`6unvJX96`#;1vDGK`EcFTq&J4|xhR$ABB&P(mW-Hs0o+`6j+Tsy4~mhEzMCQ& zc(V`yY%yNHC5n*%`Pt@~jh)caAwl#h!Sl#$0)NV;WqNZHmX0F^Q>$XNNm1JXH)W)w ziG9*n{7id%85dWk10ObVEY3mL8}=PNa-@G?DD@x@OgCxqS!-uLt8mlSrcK+Y#%IK5 z>iK!Vb&S%PtAl+0FzTYGp!?ll1TUR zCVxLL66-Rudk^_8{)&J=bQaCr0suv3xa9nqGqbLzqONNCTRH8;o#~C*I^(6za?{hT zV^8t{#4EyV9$}wU2+}<5u(GpjsEygLSoh<s)tBSXs>ff2S-#p|EjKTPL!PJ+^%D_VeeFxyO=(haDzW^AGRZV2 zTU>MT%C;g7ZEL!A*?9P%kW0NL(|^9nnbB+0?}I;5`@nou`n;&}uwvj)y$TJIA2RSp z3~#B|wIH)`oBSN?|HUe`iRgXP;^2aKi81u*mG^<_ihm@3h9Mz0eZx|N;B=enxn7n@ zRs6TcshLO0b4eV4>LJuuRc%$33DSmYvwBS(f`e7ogZZJV9`L>LS}5fz8Gp@JRZ$(% zHN%a-CXQBC)d1jKURBQaS{V!%M*3EIuJkUIZ z6yrl^4)~!QW1$1{8~7f?Vkf-BG2rK>XdYm&MKCXOvm=@uL(w^itxmXwp>xatvE2#n za6&ts&@RW=?HGHU$UaA0?td7F_Qf<0D%#gUN3=TP8pr4hPG58 zx)$j=q+X=MNc~7hkgi93U?{7C78oEHwzpLMIP)3;#b9=TP72zn`F~0qg|!BOEP+)@ zs){Qm6A~4xp-K>jYqne9=DE3U)U^=|ChUe> z>p^`h6!kFVrb2Gpki*Gx5RoOr#;Zr)y$_qysla~}@$)K8(zG!T#_kyt} z2TzT;;ldxFV*kbV+U77zxd2;9^OxKq&?-RV5II#c9L0=!UVnhq4aHD4LL+Cq9Lojr zUcofkh@c=C(VxshX75gs$R2IZ7B~qihS>Fd{8jpR4j+FtqB)GRnG?rfBVw2E@w-LI zR`x9SZpXyY!1VAA;ev|Gj{(7S^mpNV=I;;_4EHIvZEM~qz_$Hj6=(o!%&AbK)GDt> z!B9;ka$T`47k^ImP*1%Pb3|zA7^eqz1m&*C;`uBz_^oI#H}tInObQ7&587;XwGao+ z{54C}P(NTA486|0!2M|da=~G6N{vroxk7#t%ataFf{9yCida9|6<>v5H-M%+EMlMJ z&DBsmU=x9ESV0Hv!f3oqRr3k1=DV?3UI0~FyaL*Vt$$!T7>!q|?JB4gw#Fq?1UUP{ zx=*qBQQrKRh~e#vLAT6W5j=cSbU5)S)Ee!M-+yH&vYNFYdWVRiL*q42b@)4GU{H7F zokZk@&1cT+J9DP}%o%Jz2Z0`ek|T8g(JC2n+c^34(gA#H(s|yy_Bf zO=1zh!yswl;2=RJE+5^t$bc4j5#S4011oubVsUbDa>=$5bGW1<qb3 z49yHwT;Co-(;O>mT3_M7-5`>Hb_B464#ad?&j2Vu*T3u$`j)q5Kff(ItRWgmaixelJJicFp$SeGfg# zb=i;D-)8=9Jk4-p3VD~cE8Gp#%+TtknOitc(@FuFknbUyh{|`RpYMuvK0I5cI-e$Z z*`DI*b9FfmBR*82xejX7I-WFKOWmw%Qsbc4k%;3_h$}^RXJQrfhJof)qCKRtb$_L^ zfr$tAGzdx}3l2}XsS8KYCX8MOB;dU6NMf#Qg0Q1|sYfG;;%&u&?s+_&|2*rL*zH(3 zYMS2sMA;-hX$K`~@W!v9beK^Er5OxTR2y5m`n4FmhXvCVX|#dwviggkk8)$``L{k_ zGk4vL6y?U0YG5)ORFbw^nPP%wp?`EgBuU?tfBs3ld8n&@t+}OX_gb+bW%i$#`iQtc z`O*3!*_Z6fK_yf#`m`nIq3@VBulA<_4rXntqIz-=zW!*}z;R7jhq-?qY6VJ$%X)^o z0lK|}k3|?JF?6)E3!HS(-u}Krsf}RjKq$R8*w(A_PSdrmp3H19r9;b9Z-1VTZDi_6 zQ?@Nt$a%!)>I&}1%x4ln5{?e6x_00~?8%U!5mvVXR_!1JX(Jdc%Ab{ARG^%>ArwPs zR(d+POG0RdM~aaP(b=&q2gIuIO95e;1+VTo4j_^2odW86<)8ureDJ23OJQyfErpo3 z9NIm=9E0JKoA9nJ!uw(bJUi;xe@w*rg3C0#-x@I~OnVZ(E=ZfG8{El5FZ8)!=#FX_*6!@{5Z;AojR`ei<9aiwpY;w;w0?CSBMXwGxq*&Ma6oWHDU!JY`+ML0v-9KMB*8V~r_4SyXgJKWX>J_NYl@6;;m)3TtYs%Fq7+TYUE7(c~R`1AX1J!kOVh%+;gzFFgCHz$;zal7i~N69jNL=KNM5 zr^ca0=Q*)aIoPIgZTKJn43+6=s$EGJ{`}#O{qo)iw}132j;x=*@nt&WPd|L;GmpRF znKwUjj;3iq9ICjnzaJ>KzN`#4*2W?C?Db2X*f^90_>yW*3%73B*-x32FFWHxXjM#a zGFlE_F0?Y=hrTT@U90+dKk9dm?(%aRTQ=qF=!X-=rhYJ>CtY&FUVG^WmWYWSq%W$8t_5^nH9-+KY$Xeu9H=D^|Ge2R<5b7 zm344yt*?P*tFpYtQqKlB7OHAM=7PthamZwPCxGMFllW2)N!8a^g;QHNT3KCL2}D{g zbYHdAfS*;?S6|2nUe?uDNodO=_`I7%*+se5+<#fw!FftkR%@`9%(CH$x{|rmF%WY! ziZJWT;MD*&7bb%O6BLYe2y>I?nBZ}N&Wx#Cd_r{ux>>|*>d==Nph#Wr7^RL8cZ^ja zRCkOD$Eb9|(4#4$R0Bk*n;m0^V?bH9$1(Og#!|93xgxR1UP3 zT(CI6fQ8saDAf!Ut``??Kx#m0MB0e738@LG8EFgBR-_iBZAjaZb|URYx&&z-(te~% zkq%rgF1`Z4R|SuZf(;yvhlyqI!+*pw_+erh{Dh*60SkjJ-V_m+Fbq0qcFTX_*k zMoU;+LZOKN0s8rTK!wl`X0=w!#hztedO*aiZs<&GW9~uRn{I=3ZVL~}c&J-4F@Gx^ zG~#>RUT*XnHuwan&J3+f|QH(){r4jj{3kIc)Fw{Rrk zY;yu|be!j}g+P&|_l4ors@EcbmtkhMVg#H}r3zC9d#hRnzx_Dyui@3vi_lwzIIGy_?*iyUyYa|(&*gXuyNJQ;_sX)uB zRI_ekF)M<*;cUT`@8pLGgnzDc;x+2%YY-@S+rj`)b|vV7*G}4conYZvg&26+k1)Wv zr!69Hbo|=c8UWSj1K&SCsRD5hXURq@}w%FqWjJ^8;NlVD)!gS9YZLD17-4 zYmT`w_NWbIhc_VR#TO}CM=I}XKkwR%ys~jmOQ4~w5ucS~U1hD!%zxxjrV#wcDk{qc z2RfLcsq9dyh}7lQWfTEnWThf0h^ys}w)U=Gy$X2o4X~H#jg8>J;H_2Xty5-Od`|#v z@U@0+K(o(AJYw|>?rPiRwEDgS+5`%g3-pU7Q3$o-leC|UI7`2%W4aHu(j(REnR>3Q zwZE?gGMYLmC2IJeu79jaZ49X_JK(e+js+nwC@0KJ>XH?cvd?(2)M-j0^z{yB`;42( zp5Cr=-BXS{HT|Auc02B=1Yrq`QngiJoTx2l&;eG!KLIRxO*FIZ_`uiHXrRH={)%Kg zCXtNZg{)9t$1`(T6ak$?Zc$;;azi-y4C4!}IMz(e%)u3bkbftboa>M${CVa%xiQZ% ziq*$?spFJ7&Wcbe$A^Rc0k~zb3s7EL^0Pi`CLqOH#{a zYPnM6<^hExOtS&gbzo>3Fj*5ugb9y0&L_rmjakN*hv|=UH{)frc+LhIH6FXPvB=OE zWX9{npoim6NPp=_+yYnP3Je_vz>0P|_T#GnD-pwsgA6YY8LPb2qa5@7eagcui1~U# zj$uNrr|D(Owt5u@O_k$TP%>1GFoZd2wb{@#J0o$h2iRlroTbf<4Y=`AjH}WxEV~j{ zs^cro3eJ&s1h>)mncjF5R5EEDV_;dOdh+}G5A}9sKw>yHW19bM?bLJc zc)s+D+>A-IZ|kO11#ihT%$_p4PijCkMF7S=M^J#l@kpVAd@5D;Td~_!Yy-QkqhnA1 zAOc4X41Yq|)iV%QYbuJR=)v@PaHy%b>#*-svX?#QHg&fRq#5AOX3U=mw8YapRh)8* zkN9IGUrPDt=__5!^8OBZxpCoP<;kWFOm}JL9-7qFsW+>voo{%m+b#@NGZDXPdeE@* zUodqo|4GZ5RDrXNnEqIYuuM}4G?fmqlufUq1EP;M5aBlpDLDYcmm|Qt7BtE*&*vNbe^lXS&z`(*=5wM`70OOJuSN7*qaDs@Au|2vXVU2II z#IOZpStZ+Y5N(NViMCMZp&~Y%ZlR6~z{#0SHEUc1oe#!VvYn=u%{cABhaPbQ$~aP| zOlv_NrhK~kHSNKtkR9fo!0fNV;IiI@S$`!M8^PJ|i4MYPxF`gh*Q{`(ckw8UWfPYT zc@2m(9MYE!dyRbAh`#Jb*pWngBz;*}z+lJY%QpF!ZETO=vamh*m)(k@&;$8<*eQ2T z1Z?VRhiX#P+m=!G_V(zcvUjA*-sP7Kr`<_quTPnnxa$j-qLF)*ZJ7sRMbQcJ9DhtT zFu_=cVV9AdK1HVsQBiT=VZovzlkaHOyE}3+L`5~a`rzZkZ8!EX>c$5E4V2+|*BlAZ zP)rzq0`BxcD5+CdYsks~zv`K%S{qyT@7f!<{rMW5Q}s!4aq{4tSsx6}q4w0S#%bS~ z)ahqy&eWbc>)4vUtj2@+^d~;6t$!wR6UUi4Tl+bt!y++pNZ$aEKjOxsbQ$_Cpz1F4 zBw9+%{5Vdn^!YV_5?4{MDi+|TbBIqZaOzEkjj*kA6CRiw`Ug7C9o@JNxTc!&+Hz>y zGEM>Lsb&q2s+qUuf=1Pv%9?Tzlh=nas5(W`%3~8w5GI_tpozqMUg>whsDBH^3AlMN z%!0atM_OobB$&OyEC!R!LPwThd<8TqAnjo*V1iHzTh<&gcOFtP(t<@|?qd9^h{Qq2 zd`1K37l=EIAr>nQEc(H(4B>|{>S7ih*nrFb22l`L>YERU&~f)h_rKhi&L|A1ieeMHcQ1$|1;Ck1^@&}RjGMbMXV$foz$2Nuwq z40@wMuQTXwgYGiul?J`spxX?(*`S*YdQQ+k1^rdfUj+SLkSFNZf_^3F89_f4^g}^E z5cF+9-x4$~XiU)81b=-MS5}p#w;1$hgI;gYJqEqnpjR1mhe5X+bi$yQ8FWU_zXbhF z(EkYfqo6+s`mLbf2>Q98p9%VJK|d1oT|wUw^t7OF3i^hiucQBMdOuhDZ3ey7pnDB^ zgF&w~=rso2Y0xVSy49dt40@?S!v_6B(BB39S7=BGCB0qJ^rNx?j?xk{*%tgrs*#_d54lcb&U-T2arrv)n7(%jpA>-Y@B6l0J$G zNqSP!XKnfnSL?qe{YcVxC4EQI(~`a^-E#E#f*DGB4yv^px0=2o>FbidBgs=?9X&E$Lg*t#T{fg)^4LqwNYBmoz5nYm&Z-QY3vI_0!e*xul;-`mLnjNcy9s zKS;ODy~bVdUNl2tbKR@lE9q~N{s+&4qi5JC+V+}{vzEj zx6^HO8vsAgh}r*=~0s&F@Na+ zlkPX^EhfF$bX(l5Zpoz5!tN$_qdVvh(CbaQ$D~)A^eU6?FzI%azOF0w9+Tc}(qksQ z!=#5ydeEe|neAtx2yj=}wbgVbX|A z-{7jf&!qR7^tegyH0fcJ-fq%;CV!nY-JR|ZoWBTI+@L!L2wi?qwz$pi4el{|lSywh z>2)UEZPHyPz0#ynU9}IG^nQ~*X3|GZddj3HP5OdKpGQBK^i`9_O&T-l+a`U>q#v5} z1CyRH>8B?B+N58>c3_fc(qB#bi%HL!^iPv+w&*5{#%&toihjtX51RA|lYc&L(q~Ni zv`Jqw>5C?P107@1(r0<&a9h3gsq#v2|bCZ5%(r-=rjY)qr=?^CT&7}V^>5NJL zGUIy4oKx>BA;{%A`-4^f{A0i)R3j6k3IDGU>EQr%d|3N#8T+Cno*aq+go! z3zMET>31gm*`z<2^beE%Zhz8CEgH7yR*P=2=#))QbG1)n)uK_0MlAY@MPIh)a~6Hp zqEA`$NsB&W(T6R1pGEJr=y8kQY0<+Lz1^bwEIMh?n=E>xMX$5yZj0`+=#>_|+@jko zI<2eyZHvBz{;_DxqOV!>Rg1o0(dR9C%AzMN`j|x@wdeyDz2BlIEPr~JMUPtah(!-r zbiYM!vFObfz22gGEPAy?ud?V4i*C2*+ctfRtNmSzzGKnT=pu{0VbRwu`jSOowCFPy zecGZ=SoCp=K4j4cEqaed@3!bMi{4?;Ll!+~(c3I~t3~%(^ahJwYtd^gy3?Xppg>*i z?_2aei+*C!k1hJ8MSs7r=vj+?XVIT6`jbWfu;}j=z0{^*n{Kt~7Mt$0=@mA;)~46k zbgxZsu<30!z160NY76!xUswCT zE&7o~Key;-7X8+u-&piVi~eBI-z@qci_Tc|FN;pt^fH_7u<3T2UTxE>YF@=-eVoT;1T$*`?ES!jS|BZOSkG`N zbPIuZv&o7hsG(TEHcb#R9LrkHeUE91wb{QM5TZNFYLzVl}t~co{*c~JWR-=$*7{I=LvZPouQ$a-@+t>Z8s_0 zNEyQA!f~<;8n(VeAR{`|#TJxJ#uA6#Y%uUmT z@n@^sw0~v=Q>A8LXu^Oq3=Q=6_JRqFiHh{9c?dK0?1}ANu-*hU2Bf8PCPp2jqazEG z>xsgG9o(m&!3k?a5O;3&U{@~y5?!6V(b8F-s?J#(FhPG0Wh(-;Dh?@-{AgO6q8U2H zttro$QtbI>=hN?Ux+C=Suyjh1(;kB|7>14>VSi$BAINhq6(<7kfEcL02Ed6*OEnCf zY7~0oLyl@D$1)FlwpBva#qpoS+j$4c*;I^t_-Cn?O>WjU@m|% zfWcJ6;P99R5|arhV-uW{vM3v*F+q`?iwQlnrSqNO63qu5S_&)Cau^?=69ohU0p#Sp@`YQF-}WK(L(z)c{OW-YjrYFn_srT5EYqQH0E4iVAVcn>%(aZyjqKvyEb} zcnoELYMbN6&L6*t2Q~)-+xX~X_oxjhk4wjsK_EL>O}k(m=I*wz@BEE6FkP|oYAOVP z)P*sK$�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%0DlNHi6L$O%<`xkN1Hn2lf978_Gm4B>h^ z=y4(X?WRNIl0;L~!bGT6#O{p2syp)>J3m&~v=`a$sHl_B4uBO!9S+G`?32S9(X(_$6G#D3ysWAje>zxjJ zW0|RGQF1dyPFT}ZV2Ug~e>IIXJ@v+0uk_vy>5tk21LPTfVCyUm>Yh?a@e>G(M%!xK zmD4g{xIoLuNJ)hC|C#9|Y^uJ45S@Q&w8NpFZ{y(yMGnBxYE-|`h$03#&1naN$t}s2C>2?`qs2m6o)kpn*THK zo7N{4zZtMu4{Pqwn3a|R%XHSX-Z*uJ-}LmoJu?gX z2u%lL_6GM}y^us^CKPm~^+}`mKIvKM&?Ff-NwB7;WcKcb->ly0)_-)6*Big-srUs= zY52|PjrU$zsR#q}^O^X~g32(o8vK%Hx)u7sGW%G2Wuzj9s1cdHtiABj#}zIbti4bQ zsn*^ZS;%PbtdxvC_(kP%4hU^=$A>SE_a&aw@_73eU6W03V982Pq2J!Xo|V-n9lw22 z345Q6KE?^YNJZ&#nSY4Zmb7wo^r2-{xwX=haEsaC@0jt+%4un5(=#UwohV0X_-B7GE1Do66Ujn=b8OQmQc+So>HuzXstidtg!Ni z^FGcfSF}3@N9RKC9vu5|Y=$y3q0bC@(sBHpMH!|Zpumjb41b}AZ2#ec81%4fJ{`8$ zaGp?WMJmXwZFF0rZfz%2u3xEZNxF8Gu65G2E;{R~v#WL1UDtZ(+O;}M*0offrR%J> z&i+fsX+PNfWBqikzpf1umi}(h)!TIK4qd%d*Z!t!f7jK!b!~*M<>|PfqUG!Mk-8St z*(hBr)S=BxEq~Uv(KK8jkB91biLOAv|y3c@xjuOpmJpjkS0`jHe#q8vu{uc@NJqJn!OpAI}Hy`xNj5 zo|AY^;rR^D7kIwJDX`Ok9M5-nz6Z{q5guCWegQa-=T|sifcCnJfRj-NrYX8M9dIV# z!+>)E7k}YdjOTGhk6Qxx1l*SbE(ctx=)P5WUyb)QfKTIDi)S4ks#e?a>`-*;bAZpo z?Ik>~;CU6#0l2+}=OEr+$8!kJ8~A<`&s%uj#u?Xl;Pw%o<9I&C^9i0$@tnYO63;2% z{tWOeo}XYw3=YIH3M)a;6o}*K;r!oJhSjDz_Sp~ zBDg;WxJ1>}CjghL?iJ8irma-nPXel|;P#a2UJc8OYw$cxerr|tI`Z2Bzpbi!8@+GG z`!jf+Roxp9ZX=!@aChzm{ul7PsJeH-Z8x5m@a(~}7tcpHIlB+=6@*n@Row>&zNR{$ ze}7Kb4yx{9%>6o?v_mTH4FkTRy5A)DCbIN4lB-tTHS}GJ_c}a>@igFhPetv{(X|zL zhmt+*0^lw@6E)Ooz-fRp@yy1v7vD8_7UF#go>h3(;8~AnBc9E8w&K~2=XpFYXnGXY zwEcL070+vU-h|uxxXm7w`*_3+qHkin>N(KlDpkSMrMYwHp%~}9IhlMC*E7>&xP|C>3^Ku zZLD}vk`uebI;Yc_n*=-+mAQy;f2Ch(lbHCw({YAUQ6G5FlK2p#ROT`uzhfazJ-12h zz7$#$5o-~H$1+x#YiaW&1xjAdDyx{K%}SiSY_p1fo)U34vdYy=Nxt{qmssUys7YjP zGT&mAdjao%N5bR}S>--P34g_=D}T_Vr+&naGfU#vgyb7Sa_zUQ@(iW-1JYBw+mW&M_54b$>{it~l|RTd7P?EQycceoH?X)_N;GTY3Ddz

E#{srJi0yZEEu= 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

#88WsUUcik7HIW9F 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%0A~hZvn*kLT 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⋘KIE}v8C@e!RLB$zzWK7>)>yOZr>Bh2(u?PEh% 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

%_;QQiR2 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

gkAY_)%Cq>I{-FB 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≪$3pOa!eEc%GX{1c*o+4mS1a1v8^#XrXLU^gCz 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 z

  • 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 Vvd}R9xeW2OyL_F4uMobD{|7XX;Qjyr diff --git a/FairyGUI-as3/src/ktv/managers/Interface.as b/FairyGUI-as3/src/ktv/managers/Interface.as index 7b10ddc..ab262f0 100644 --- a/FairyGUI-as3/src/ktv/managers/Interface.as +++ b/FairyGUI-as3/src/ktv/managers/Interface.as @@ -27,14 +27,14 @@ package ktv.managers } } } - + public static var messageHeader:String=""; public static function sendObj(obj:Object):void { if(obj) { if(isSocket) { - SocketManager.getInstance().sendMessage(JSON.stringify(obj)); + SocketManager.getInstance().sendMessage(messageHeader+JSON.stringify(obj)); } else//本地发送 本地接受 { diff --git a/FairyGUI-as3/src/ktv/message/socket/SocketManager.as b/FairyGUI-as3/src/ktv/message/socket/SocketManager.as index 4951a50..9d5c92c 100644 --- a/FairyGUI-as3/src/ktv/message/socket/SocketManager.as +++ b/FairyGUI-as3/src/ktv/message/socket/SocketManager.as @@ -20,8 +20,7 @@ package ktv.message.socket /** *测试数据使用的 消息长度 */ - private const testMessageLenght:int=10000000;//8位数 1000 0000 - + public static const messageHead:String="10000000";//8位数 1000 0000 private var _socketIP:String="127.0.0.1"; private var _socketPort:int=8730; private var timer:Timer; @@ -36,6 +35,11 @@ package ktv.message.socket */ private var loopByte:ByteArray; private var socketMessage:SocketMessage; + /** + *是否包含发送消息的长度 + */ + public var isHasByteHeadLength:Boolean=true; + public function SocketManager() { @@ -46,7 +50,6 @@ package ktv.message.socket return socket.connected; } - public static function getInstance():SocketManager { if (!instance) @@ -78,6 +81,7 @@ package ktv.message.socket public function init():void { + trace("socketManager 初始话 init()"); timer=new Timer(1000 * 1); loopByte=new ByteArray(); socketMessage=new SocketMessage(); @@ -133,47 +137,51 @@ package ktv.message.socket { var tempByte:ByteArray=new ByteArray(); socket.readBytes(tempByte); - var testMessage:String=tempByte.readMultiByte(tempByte.length,"UTF8"); - if(testMessage.indexOf(testMessageLenght.toString()) != -1)//查找发来的数据是否是测试数据 + var testMessage:String=tempByte.readUTFBytes(tempByte.length); + if(testMessage.indexOf(messageHead.toString()) != -1)//查找发来的数据是否含有消息头 { - testMessage=testMessage.replace(testMessageLenght.toString(),""); - getMessage(testMessage,testMessageLenght); + testMessage=testMessage.replace(messageHead,""); + var tempAry:Array=testMessage.split(messageHead); + while(tempAry.length>0) + { + getMessage(tempAry.shift(),messageHead); + } }else { - loopByte.position=loopByte.length; //从指定的位置开始写入 + loopByte.position=loopByte.length; //从指定的位置开始写入 往末尾添加 push(); tempByte.position=0; loopByte.writeBytes(tempByte); - parseSocketData(); + parseSocketDataByte(); } } - private function parseSocketData():void + private function parseSocketDataByte():void { - if (loopByte.length >= SocketMessage.RECEIVE_MESSAGE_HEAD_LENGTH) + if (loopByte.length >= SocketMessage.RECEIVE_MESSAGE_HEAD_BYTE_LENGTH) { if (!isMessageHead) { isMessageHead=true; - socketMessage.headByte.writeBytes(loopByte, 0, SocketMessage.RECEIVE_MESSAGE_HEAD_LENGTH); + socketMessage.headByte.writeBytes(loopByte, 0, SocketMessage.RECEIVE_MESSAGE_HEAD_BYTE_LENGTH); } if (isMessageHead) { trace("读取消息中..." + loopByte.length + "/" + socketMessage.totalLength); if (loopByte.length >= socketMessage.totalLength) { - socketMessage.dataByte.writeBytes(loopByte, SocketMessage.RECEIVE_MESSAGE_HEAD_LENGTH, socketMessage.dataLength); + socketMessage.dataByte.writeBytes(loopByte, SocketMessage.RECEIVE_MESSAGE_HEAD_BYTE_LENGTH, socketMessage.dataLength); //多余的数据 var excessDataLength:int=loopByte.length - socketMessage.totalLength; - if(excessDataLength == 0)//调整trace 顺序 - getMessage(socketMessage.data,socketMessage.dataLength); + if(excessDataLength >= 0)//调整trace 顺序 + getMessage(socketMessage.data,socketMessage.totalLength.toString()); if (excessDataLength == 0) //截取完毕 { isMessageHead=false; loopByte.clear(); socketMessage.clear(); } - else + else//实际获取的数据 过长 { var temp:ByteArray=new ByteArray(); loopByte.position=socketMessage.totalLength; @@ -181,20 +189,21 @@ package ktv.message.socket loopByte=temp; isMessageHead=false; socketMessage.clear(); - parseSocketData(); + parseSocketDataByte(); } } } } } + /** *获取后台发来的消息 * @param data */ - public function getMessage(data:String,dataLength:int=testMessageLenght):void + public function getMessage(data:String,msgHead:String=messageHead):void { - LogManager.log.receive(dataLength + data); + LogManager.log.receive(msgHead + data); sendEvent(SocketEvent.SOCKET_DATA, data); } @@ -213,15 +222,27 @@ package ktv.message.socket if (socket && socket.connected && message) { var byteData:ByteArray=new ByteArray(); - var byteHead:ByteArray=new ByteArray(); byteData.writeUTFBytes(message); //4 个字节 的 消息长度 - byteHead.endian=Endian.LITTLE_ENDIAN; - byteHead.writeInt(byteData.length); - socket.writeBytes(byteHead); + if(isHasByteHeadLength) + { + var byteHead:ByteArray=new ByteArray(); + byteHead.endian=Endian.LITTLE_ENDIAN; + byteHead.writeInt(byteData.length); + socket.writeBytes(byteHead); + } socket.writeBytes(byteData); - byteHead.position=0; + if(isHasByteHeadLength) + { + byteHead.position=0; + } byteData.position=0; - LogManager.log.send("socket发送消息:"+ byteHead.readUnsignedInt() + byteData.readUTFBytes(byteData.length)); + if(isHasByteHeadLength) + { + LogManager.log.send("socket发送消息:"+byteHead.readUnsignedInt() + byteData.readUTFBytes(byteData.length)); + }else + { + LogManager.log.send("socket发送消息:"+byteData.readUTFBytes(byteData.length)); + } socket.flush(); } else @@ -233,7 +254,7 @@ package ktv.message.socket public function dispose():void { socket.removeEventListener(Event.CONNECT, socketConnected); - socket.removeEventListener(ProgressEvent.SOCKET_DATA, socketData); + socket.removeEventListener(ProgressEvent.SOCKET_DATA,socketData); socket.removeEventListener(Event.CLOSE, socketClose); socket.removeEventListener(IOErrorEvent.IO_ERROR, io_error); socket.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, security_error); @@ -241,6 +262,7 @@ package ktv.message.socket timer.removeEventListener(TimerEvent.TIMER, timerRun); timer.stop(); socketMessage.clear(); + if(loopByte) loopByte.clear(); } } } diff --git a/FairyGUI-as3/src/ktv/message/socket/SocketMessage.as b/FairyGUI-as3/src/ktv/message/socket/SocketMessage.as index 8087154..a67a233 100644 --- a/FairyGUI-as3/src/ktv/message/socket/SocketMessage.as +++ b/FairyGUI-as3/src/ktv/message/socket/SocketMessage.as @@ -1,7 +1,6 @@ package ktv.message.socket { import flash.utils.ByteArray; - import flash.utils.Endian; public class SocketMessage { @@ -9,9 +8,9 @@ package ktv.message.socket public var dataByte:ByteArray=new ByteArray(); /** - *定义消息的长度 4 + *定义消息头的字节长度 8 */ - public static const RECEIVE_MESSAGE_HEAD_LENGTH:int=4; + public static const RECEIVE_MESSAGE_HEAD_BYTE_LENGTH:int=8; public function SocketMessage() { @@ -19,32 +18,36 @@ package ktv.message.socket public function get headLength():int { - return SocketMessage.RECEIVE_MESSAGE_HEAD_LENGTH; + return SocketMessage.RECEIVE_MESSAGE_HEAD_BYTE_LENGTH; } - + /** + *消息的长度 = 数据长度-消息头的长度 + * @return + */ public function get dataLength():int { - if(headByte.length>=SocketMessage.RECEIVE_MESSAGE_HEAD_LENGTH) + if(headByte.length>=SocketMessage.RECEIVE_MESSAGE_HEAD_BYTE_LENGTH) { headByte.position=0; - headByte.endian=Endian.LITTLE_ENDIAN; // C# 的字节数组转换 int 值的那个方法 是这种字节顺序 - return headByte.readInt(); + var str:String=headByte.readUTFBytes(headByte.length); + return parseInt(str)-headLength; } + trace("消息[头]长度没有可读的数据!"); return 0; } /** - *返回消息头的长度+消息的长度 + *返回消息的长度 * @return * */ public function get totalLength():int { - return headByte.length+dataLength; + return headLength+dataLength; } public function get data():String { - var str:String="空数据"; + var str:String="消息长度没有可读的数据"; dataByte.position=0; str=dataByte.readUTFBytes(dataByte.length); return str; From 3553da3065b13c8e39a4462b53b5e5cad4b4cc15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=A3=AE?= <690275538@qq.com> Date: Tue, 26 Dec 2017 16:04:23 +0800 Subject: [PATCH 04/15] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=90=88=E5=B9=B6=20?= =?UTF-8?q?=E8=B0=B7=E4=B8=BB=E4=BB=A3=E7=A0=81=E7=9A=84=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FairyGUI-as3/src/ktv/inter/ITemplateFun.as | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 FairyGUI-as3/src/ktv/inter/ITemplateFun.as diff --git a/FairyGUI-as3/src/ktv/inter/ITemplateFun.as b/FairyGUI-as3/src/ktv/inter/ITemplateFun.as new file mode 100644 index 0000000..854876e --- /dev/null +++ b/FairyGUI-as3/src/ktv/inter/ITemplateFun.as @@ -0,0 +1,8 @@ +package ktv.inter +{ + public interface ITemplateFun + { + function onShow():void + function onHide():void + } +} \ No newline at end of file From b715648c0231a0e2e8411cf62bca6fcd63e8bdb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=A3=AE?= <690275538@qq.com> Date: Tue, 26 Dec 2017 16:34:50 +0800 Subject: [PATCH 05/15] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E5=90=88=E5=B9=B6?= =?UTF-8?q?=20=E8=B0=B7=E4=B8=BB=E4=BB=A3=E7=A0=81=E7=9A=84=E5=86=B2?= =?UTF-8?q?=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FairyGUI-as3/bin/FairyGUI-as3.swc | Bin 717129 -> 717432 bytes FairyGUI-as3/src/fairygui/GComponent.as | 51 +++++++++--------------- 2 files changed, 18 insertions(+), 33 deletions(-) diff --git a/FairyGUI-as3/bin/FairyGUI-as3.swc b/FairyGUI-as3/bin/FairyGUI-as3.swc index 5e48b81fdef913b22f42a4100b09983f3f9a83ae..7aa07a91015f4672c966204b5aafd16aecc74d4d 100644 GIT binary patch delta 695634 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�ItQy5>=;5-=Ktb075!ArCS+wfSy>FQ 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ósulN*fCaqZ|xRd;pJqH5nfJig7sB~(S)VsX3UgB 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

    )b1?+JrrLRx=vNSgt4SHA-aZ9dxMO@&!!2Djw5 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�YU?O`3 zW;^!JrPe6ah9iH=s5H39y3&8CfJXNE@_P~?ta#;OMEGlY>6^U(_5*2Pq76Zg?u&r36Lwi1q8>T1a~yHgtO)F?0=IXI!!VuQ#OPAd!b7 zYbozdy1ah}0&gx$&(eoPP{T5 z?`es*G!ySTnRwqZ07{;$_+P|ZtK z@|4U~f1@Lo1^$ND{Ub`r&X+JdfR{REEzcCY!C0?Q~R(u|l@{1K;P?$e?0l%d#`dMA9_-%Djbk}|?Ba(lH z*n6o41O3PB0R6N4!dLancyIqj%49i}FB(u~Lgj7N7|JWa?1?-f4f!`35)YvCz7k+b zmRpvm%;rSHa=Nf48(rxGtG%l|So^@1LIs2g%O zl)hUaQ4_BWTuvNOfTkW;X_CGBb4hj&8MjFlS(~dR+#P+Cd!bXHmAypYAEYTP>w-wRfT2Td`@bdKKCGw+L;kH zSC|h@T_iF9$TS3qR;e72$Mk=2;vppnyuZVZ*YRJ{!P$;~N-DC};6*=4J-$jkG_oWd zqpwkwXO;T8ROM^tLr=S3H{*e4dEXwyBoAo(Fs5_sDfFA>|3P}GJd@o&Np}Cj(?=w`4U*k*vinIUJ8T+$ zD%m}v+@DFpjhTcXB3FNF2;|pE!cCck;2wMR_%BnSkEc$*PPxxZ!p)K}kF3EzuGWCZ z+ex=Y(g`sFzOk3?AOy8Hbq{eCWBD(RC}D_w=Z`Pa*9DNFvBi!r;o5zBv!{atN`=4!0_P%wcq z!6MmqYMxI2-~eiM+tA=Z32ytMgpd4>*i`ITSdUr5iJ*9)PNH>^JSPHTUvX-Y(ZeD$ zhxt|z!H(8LJvDW|h{1!|($qZ1=z-gom{eCAy7YOy?jh@3wVNAmaunui?C-wW#0&e< z#=GdX&Hly4zeayIYVJ!kPlNu34C4@&IbxxYQ5?b{L8`Iy9V6shzu_(rDUX2F#2g#_ zdMxypIOx>dE5jmkSjDRj)=Vgjtv&P!3lZjROVzUFtJSgsu4`0I6doy>^C}`5^J1Hp zvxiusGC#+R-Lx(Htzsm;UcOK(uwIPQu;vPio;)50-SU5_go1c}#@!%rG--2MYr$_6 zHTS866?jN1w--|fUyD7Bl_EOq*plb!m{r8A5k2{tihR+M&*0~KK?OQUE5X+iv7tLO zb08#B4if`v{nTqU^T}%Aya{}pD4YA1v@5%FyYtd{)!or_RG+jZZ4N2CxnM5_1vg-& z)o})=$|!#<^M#MjeMd8MLggYTj`>D0+pn6zTmNU~hO5mbnBY)7Yq&x z4^6cZ0{xyw?V+JT)*$IN6d!7vqugZsfRL63S=r`Q0Ii7Tnx$8(Z**?uZ)}ooYQh(A zqX2)3g_)|ErUO_y=}FpyNWmTk8M7G`hpuL^%+q*qHGvad>zL~u6U$_6mTYbg$rNn` z9RB5aNGA@&uk0Zl%z_+%HXLsn&sn0DF5_6vv4UeI$7+r;j&&SyjtyJX(yd%8RIETC z$in9CfWv%e>5H=U#R%$)nWN2H5pqzY-cEU7?KU$2bpw&Wimj(lv z1VPnX>#YoHWo6(LG&s>bRt(|3r;Yu}jYHCzZn=hT-+%?P4T5IMLejE{Nn20lf}Q}V z7?7FTO&Tkbhp13RSPfw5O!-)Md13X0!Auu!tepwd0GW{VgarjRZ8!NLY{5n=u-kv# z-5oj*3QUBac3Zo{f=#J8#%=Q3@_x6=Z`=F5XDSg1kN_7z=)aFMyO=D)a!DgH6r>BP zyE*B_B$i!FUSK7W#RScxDzriSN2>N80|j{yz@WtVP-d+t2n_%7jCgdhJLVS4jILGA z^^@&$pJLzsmXSu4IVNjQ~iGSA;_a%&>~&aO85tplxjE z2cwl&JYdQfAqgyH@#ZT-=p@q=%0Xc63@r73Vz_31pzN*y-UvL3V%RIh!pAKb7jWvd+yvbmq5(CC0lNWqL`P#{|_jNx%J`wyRjuFyboy1V`9Ivz`T1tLBdq7 z_bi@C^z}8%F%B1^WxFF3$g#uQBQGBBAGx5l?ju8}Qyxzaj`xqwr*pi#F%v>*39}yo zi!VAW1i$EC>I6rU10$pUzR7>5K8&$ptB2ZMby>L%jkH9+5_^W*hdYPocHqi^(Kb*? zdy|8M7btt6Z|SSc5RsYjs=8gp<{VVZK-1}am-~7I&Ocq2J#lK>FXSO z11{6U8(5|`u`^+x6v1w)qo z1;OE1CCnfV!BIA$dhId{b2%KA#K0<+M73JXi`TiU#bOwC)0%0|_e~iaoArXL;Ur9> zBC6feu<~!t2Ia!(enNkEnt1{lmTzsr{Mg>g(iW_6%cn_ZDYjV~W-5w6#*p3BMnUSz zhgt4!!fF`)sb$DMtUEZJ0MLr6u@@7o;R>mqAc>U~i37Q9Ga^AO7D%tE?oi6ESc;8u zA|#pD==+#|PtsZ)P>>05-1_ba;2tSw`as0m7u!f4jomrvoaui=RC$)qO*FG*n!L6X zv#hKlI&)E?`s=@MGiZhzk>mIh~rhpLY9yUY9CG1QCo%SdL<-PO35!1ZY3IqA1wA^lr^Wt%u%9Y8a( z&DpWII?T9sdZ2%QurIu~ANzuV-o1(SH_)&Glmy!k@9F4C?C&_Zr>C}|G1&3q@#Ns> z(*1*j{il+Hts|$#&%o#EIN#fU7DV8o8=KcR93C3HPG1z}EHQ9dy&AP&PUEvi7_Vu5l zSA9!Se1v36SAAg&OQp2dvD_iJW!WcY|M{~aZT5P0@IvP=Se1;Te@b>|vspvauAhRI6Txv5id1!Zi}@o%5^+XxV%E zN9M&>1IvF74VP)7o-&NTQPP%?ElWv({`yu*1S#4JEW>Nd15jUmdGo96;f{EyCt={T zk{5b06fVs4Puqpg;i2I(1IfW)-+-iFcEuMrUR%>}{WV?ogmW8xg;nrIzT2vP{rzi7 z_gW+;NEaHtQ`GqD8ykXtGBnF;3m3QIMmCJX9ISr_7_=_J0v2S)7_ql435Kc!J;M;R zD-E21IyP$=+s2UisDO^Oq7DcYMxJ=8z)gkhB3ak8j|y{x_@Xd3JC@eYHY?!D!2vW; z&aQRLX2;m>m^&a%S>?c4p}e+mIjd=;Gdv za4KQ4D2RBkyxXeCIRN@68^S5Jg`0p=JP;J+yUoZ@xGkHC1XD&#@4Y)4lFnx9iE6{l6kPIQyZc95~GJ3N}2MW|g0qZ@wgXuzGF$JJ;CQ)Q>b`!dhDVv57JLv9B1@ZcrDE995v6Neh z5|pFTr95`r{V6B0BtTvv_rP>2l+J&@B)D9+35r)FhMW4Z+c`Cpid;kksnoqKgFu=J zm;5b#a#%`Ffj>!<@I^_jt8j#+Uba&{qLyGEu1K$_mJ_S|X>ruyp&o99339DP{@^e) za+^T%wt*Nvf{9^vW$(HI+>o9jfZ(})s zybIMF!DA6pvtZ^4q5yIdZ%|>xG2Xm*+BxsROFDlSylXgH6CXR9yiL&3i&Fjv*)cRWFw(Da{eAfBE3i4PUOvmd?i#8eVyN}FZ@+(;ZpdWdy(C3f zXwQzD$u0w<;mps>%n$Et#*!^FF2&imea>63JR7*^6S#uV z&E7qyi9=C!(wjOl)s>x ztlDa<5o_yf>TZlw(guHw^)-!PgW3hqN`*@bLvYwJhbu1KHW#QIdIzI6pCnr5Sj!#Y zLL*qH)rcJ&bdXi=SdC7k*)cueTss`|7DwIcC~cl*;+5-wV;*$O!)Uib5P|+_+g7mD z$0_&j?cmx8YsJb{PS~>K`3C*el(<_btc{ygAXGU~VMOg{-9&$+IuLAtZ4hdjs0f(5 zHCrL4RkgKq?BVF(NO0`s*w1krM<>UjBdYCou18gF9;^r3jzDuoqsjt*Jg98&#~l^a z$m32}9ASk5R*7a!7`MwxT70{0Dx>K3px~)TRIbOh&zZ}ua6nl9yvfpv-=(>r(EQHf zh;rnLp!W`8=W~Aw8k`)HQ^?{JwmC(DcY27{PAsW}Y|3%&a_{mGJzI4^G<3Hhmfs7{ zBGL`dBIhJLi)g=lH&g(i@_|4qG#Z0?j2ojuN8FPNgNSx1Di6Y=F{st)xOquGx;N$c zDV*695%)wY0{EGiBBE1(fF>y-Znsn<$2}Q;ezZ3ldxd|{COxSfw7Mgy=tTh2!=y_q za7A<67tIe>negPia6fWtUSM32m(HYjez=hdKbeX?MGaEXxKa8NsGxrE)|Nds+MDa9 zyNxM2!hD>zamq~rfEB7(VWgJgU1oQ;_5pHWewbGlCdWFh8*! zy2J?5|DhB}j_Oj$5F_wG8bXl9;m_m#36Tof2C~RvI&iaW{wh#Y-ZD9bKy)k5f+m~& zbv)Z9&msZ#s?};6Thc_Bc&L;{P!500G4>&e6e(vBF-7u;dq8=P08{`MLzw~)fJy-^ zuvc@Z4&;iCOxVH0!#8BE*sb@E? z4YsA5%nrUii*0GpW?LEx9&p>b^Aq`6n%X{PE1oq1mX>-0F(u04x*F+J?Iy5}g z@9aGWM|os)fs+7uqoZR*cGwO%<9LQ4uLlpZ!5oQa%Fgu4mHIg20V(Q%ym?uz zUzqX=7(i{*f^eR!Xe9ubTDTc4?-2 zQIB9k`I+n=(xY0wuuJDx%#UpJoj3X}EQ*^=EB%=1E+691=sSOB^qp4sS>g>mBrm@7 zL&W2n%TGHk@0c-k&SD>P+SZ_Vksj1#z3p0veZJnoh1m4#AI8w>usrwnbv*VWhI#J& z+L*16HwR=rGHi!KLW!9g=J!xA&c%m$RY%5q$2_pdiiN3XU8j3J*(#8b{+Cqj1s(TL zPW`~jg*jyJuM~gVJbz|TfU@#=MaIwer20`9?nnPI=*>gX>^v54xdC>4EL+xI57O$I zuvMO{*zu>Mke0je9~#50;~;a+n%TVcJ5sfvh9+QDd0tpjz!#}>2JdzCm6K+oU26ku zf-Zx5ibk`hvEHm{smK2XJ}{c70Pbn5Zw`NFXFyY6T>!*Ec2FbuJn{>+ zI@?}xf?eO#0(j}{dui1-G}PqHe-qehH`Wy{9$xTw$fp?)8>_jop%HMMnwp?DApU-O zA#RNiU)V3$ucOyQqY*b8DA?qR!ts(~aJ^U9>Ch>?*FL>`p!6Ne1k~HKv@ebvWr5ye zYfoTd@x*_jkWL_%KmuRlD2*&*X7A+#S5CoZ>;z&$s_!zT8z+wP}F^;hxbqoy(W8N*GFvh)(+3gr79TQxb zzPx@Epzq7OpYvee8O~WCn0^fq^Ge4A>&1MXhxdPCy;X(Zsz6l%?vI5@JBB-=hTk>Wfuk&+^ojjFM6jt4l-ah&J4!0{4}mvX#}wy;)9gQSVf0>|OHnQKj08M4+=o?WP7QVC#!Q z4UjtnXC(z_IYsovLfAu~ed|$#J;7VM5cW7bj|Pw)?d(G9F1+g~{D{b|E@;ynQ@|;r z09b@oZlPdP*p>vFqNpwjHbrrL5^Rc+9Z9e$&}&3i z(~fF|v1BRG98kL$l0eBRffE-kZ@i=89t8=K2n3)5gN`T+77<#4%MoZ@G`E7z2EvvK z9UKZQ1;ha#O+`o!@MI$X#8ypiKxrXE=;eU!B9bXjl~8ghCkGt1Ne&wjMxlQa zSR{J|h<1ciTPG7Hly@an0FuJXz}HU{y+aU~ybPeyC4+jQ(Su$F&14V+VnS!IgAAbC zgN``c*7y~Lfm>ZH=h+L3_J>$;f)Sq%X|Kq>&iiCj z-X;4ytm=wnmk?r)9DsdOu3+D6FnZV%m@i^aU~$@PCvhAW6NmtzK z!I|_bd2ogYwtg@q4{X>U>6J6-)feUASsn(3J>|Yw9tPbJQq82-=!c^`bo9e9dFZ&~ z8+DzgpBjB;daC3;_Iwvo;YSOrN&eD*$+$v@`LgaZcsq8Y4CctoC*xpLxv%J6E3&mq z?8EI#iM3dL3u*u;3Hs@)Rrgx$Y=;Lh4kqIw3Vm31k~vl|==^~U(d*cYGeA!>PHg5j z^;(;HZH6cCCbq-n>dljAC*{4^>14Yu(i)@o6-fF&$i^RPs<-bemPMj%u9i0dQLYi(25&1Dp zw#zYoe~RBAAoy+AQ2c3WL!0$~F$E-o*9IF<1bNeR8$L0o4WFFX2JCEkQ*;|X<+b4n zX@i|4r{R_Qj_x(!bX8z8v~_=2hQ8ov#ngFPZ`z^lFOx4{OAVNM%1A@8WHLQ3lbP8}zOBR;B`^e{ZU@ zn%PRaekFgH$(u@oH^30(%18H2;h_AR#{jeV@Z@XT8~8T{W}lLC-1s@?a`V4AZ?K+M z?td^Ke0U#cHqTm4d(*k+&f|Zpy@FJb{W^cHtFGVN7oz7X$>a!ZK&QogDmW;2nnd z3B5~qi0-KO8u1ro4t}2@9Tsxm&vl#?;sg2`aX)A1c-J_3$Q z%x#x1ZRw3sqf{)!CF1_N;Z0Og@D98&ej{vY_tOjN^qDzzdeVsXC`_acW~ivlP({@6 zH;itH;!U&Bm;gR}o&cD-E8Q;uh?uf8Y{+jJsmOS5uBc|XUo^Tmr#F*mV=8<(v4!b5 z7ia|1W z5h@o(sKin167u>Jp6V29yo&#+0d0^I6H0GJ9?>~}6hwD?m2ZU4f$t<`l^$f`krDom zk%~%PWci^sG90rbeCGKVVn3kE{~|le8;Yl8l-qK@%P8NK_dUb?E1s?KN7-ID%HQ=z zIS&+uIivi81*7~o(m?;s`&)06|6WEpFEh$N^hViRi1PF(|5)0V$4c}Mv!ncvdX)3^ zDF5?+qEXHVNkR9=HfD)@ud|->MtO}MWp{Rz|8;hhe>QiN|9!zI|Hqt~|8H-U|1&$v zKbMDV^eE?pkibpV+(FEjfZ0)gULvsW>G?sw1`?s#ALR*CSABJ+;;%BZqx_KfXqAle zD)(ns8s*oUsXQ{%3pArF!!d7^UGNsXNt&5|<}G5Oo^PeS^D+eCd2$p44Myd&j#bYCP)i&Dbx3vnlzQq^!?_{WV#l} zv3HyPV)%zlC?Ax>f6kmP6FeaIH_b^;!MjnhyZStjn|S;MbJ}yY{98P3o=!9?Hcr3I!xkQXG4l`* z2mfKv{gTuH)R&-BNgbY|4$rAn;3-poARMMTc2M-!X#Xu9LHKo`DWnzOkVJsJDD7Ix zbnWgv-5u$U>h453vCy?tJK4%&{^jD|W*DxhM|QR^U0>5w)z`1J!mIXpS1m3u%?Wq` z9gBVBd1O*{)Tq?>u~TPgh{#SEXL&)$N2|w;g_e-H<-O zrt0e#H$9_y@RB>)MKfF97I2&DA32=PhWI+b`NDh0l}SeRdy(4Dmb2+TIxpmwn$^!&bDROfj` zE(W%^N@~B#YB=f*c8_l2toGg2lnG;g^sJg*^A&o*i$n9rhwdN3`Bj;AzEuVv7~?BA zx@CemFKUDHF*vSLRWG;PJ>Iu`R3miwY*KsR3_6kFK14-BqbR*w_yQV#RRf3xL@N-B z0QpMlZ>}J(Cq!^H+CPHg{y~_ogZbI^9?{{s_*v$2@V~j3UpHFp6)EzYj&_|=^s6#2 zK<>P;D!RhkR_f){M{!+alySx@uK6aLkge^tIO1rq3*>xFW35#O=V=Vz-l$IdOyTap*b7oKzJ8qtNfv@ZM-M;VSX9Ro$K zh(KGwW-b=E^2lljxbg@b<+x*Pad7EudrW1`QC0wwH#l~qW4E&W;RZ731Pdqd9UXL> z;PQ!Ji4zE{2!MjIZek^x2o)3MDkt1Du~FiNn^ntpjvXAgaNNp&v6EvL$L==O(#~~{ zDviQRHBD@#u@Vi5#k3s}$lf6LyHyYktbnoG2pZTj7mJP-dRgdb!ADi4qL<}_U?-z6 zzg!kPBe4FYiknHckfw@*UprwXWy7W{%d}pCZ$z|x#Ewi^DnK?eLU;WuP4cJD>{HEuu_ut0+_KbZ?=zK_R=fJ3M_LtR}+Gx;wp%0^Dy%$j#O+ zcb5d%F$M}Jn{c1fv@mUZz0^7*?Zs>7W_)n^yPN5fr=jI`W(eHrlHcIAV{#^uCj%J7 zdc^*qRO^T|abw`fbE;Bxi89r(=hQay9?=p*QLn^*KH+wC=T9BTR}=ZqxW}*~2uwK7 zy2pLrqBgP3yheBMJ=3E7!Fb&pmw{0iAD7`cF%5fp!hwl;vb#u318uDh z($if`6Rdt|) z{T{7hvOG7a_mSk_kL{W)u_VAyz7X-))gr_K*0b#2f0aPapa2El>3ipINq` z2FJ1;cukpXPS2>gDbq!Vd&DJMXL9uZjSDi9I#pdEY`&+?a3}U-;>Pi;zYZ77R-)5u zXb2q>-3z#oq#R35;?{3uY+?O%k@|_&ZtuIa1HGf+RR5^~@yj{r^dafTeT{=}6S)tK438z{CCs7TBa)W2 zJ?drSDTjoQifhUt91mtKGv+B|T(Ku-W&GJ5S7$v}hmjtsLf2q&XsrB7&6|@HB@qbs zjN-$Y-k`{xj|~S!zJ6?Y({)m3i_y-1Pp?f7KnEb>Zh#DEsH@f)Qh<-SP zL3Km5Ra?{2VAa+&)jK_2^{hJakyF>w)D)S08GdmwHm+_O#XU}AQ$AFMU253TC3XnP zLQAsqm&Zzrm*$rqHgiOn?fa-!NTl(cVmjd*B*FzwsL+X`OpfR3B~I>AC$!9eG0`Vq zp>bPQYv`7B0^JhAV|BS>ZVwiZz~N z-s+g`4g&2E0`1PQWjJ|2GLE`{%3a?yQE%i1*WWVH z0&m|4M0cuPyE$4p+Bo)bBslhea_r;S&v6^a!6Rzd?Ocy4wFQdBh-^q9SPewbEazIN zFNU={un|hdT)sQ7DH2guG%08>Ai#hIV{0^+%^D46T`Lk_nTA73v0@njXpqS~d9A47 ztz(VV#(pe7h6QJ(g+PtR5(;4U7FL`h#!eIyr>1B2n{F#B`vY3!(>BR}PcSvwC-I>T z_&sYh=HNj`tikq^D}diXwM3FRpxSptiP0&mxWtGP<0vt}qn8-0ew$HpPlwBhdwjAZ zpSX7tm%0X>84;wNko9nF0A=2jp4nkC;`WeoV>0Hx$j_vJOp^Z7Lcx)bOr{GH657WP z{>N*#Jd-S%4jIW}!ICe31Yut#N_n1!!BiOk6aM<*eTgNQ+?~>o6H5_jC1haY3ys<$G!{!GysOpGw%Iy zb9y-<;_^W3Ap!^EhIgxC4{$piSKh4=JH_qUxaHlNSkoiwjN9ISt)+!}WAU(eYsa?p zbUYsPZiBI{+@6m+-mN3ZneK&n$h!>*Qs+jIQkREgyvOC?kg=lYg%`rBUwDE4+cN)m zzVHJ759|Lt20%V-#f^_Vpe53;LdFF?^h3x`R!ppXS_Ggd!KPQywGVqgR|7rzi1%|1 zz?O(YB|=%U%zeFokO;vbWPX~VeGB56=TvAaub_g0!$i z(kJ2&I*+UADwSJ7K_8Rw^55s)xOADP_C()%{by}Jw zJCH9IzYKaR%QeGPerOa!%c_2mNrp~Ub>aWDbJ$m`HPiav-}?mD_jkot=pAS#(Kav9 zb}x~|U4LMIdsVA;d05q>sjaG>)~>pq2Wo1oguo(om00J`EpmsK8bT{aRTJ^Q{ zO;&v!iez44=$O@2i=CRTxz$+RQg2Cr`4pQ~UtQfIU}xsiNNI`Su2^7FvOfp$jQx3z z0G$~asuLI!3>LQO#u~?38!l$!zRqSY=g)CMd5@Uvkb{v3YcTL=MH2-icS5Cef+eoK z#8|q2eAx<$2Krr3RB{gjiGZ8f*MS*I{tw^W#~iM=1e zmW?8j?6zA^D%`>(<$GWYZU+Z{Vu^ALs_ubKc1DU53o}7%6Axj8p2x)I9*(Q=r`_96 z8Uz#(Fg>nKm;&Rc4fp6tGp?pCvEc>itm~wIHN_Hk?4;dorp<0EZC!*5e#gn+3`#)9 zDU&794$deFy;}+`2w*K$sP1v^nW{3TF3G0&^2PCI+{TrEvij#u8!SgQ?3?m#2BWFLpb5bWe#>lDq^zPwMQL!6glWm!zP7 z$L40Zh76~sFD-sbmhyLTd>_g?QYlAr8J9_adYt9nl(v=8wEMmOykGj06RLOaV0W1H z{y^9yp4h8dYXQ=-+?`j%>J0P5(KApNd-3cHG#6Rx#UsM0tMa&KBUPTi)BONr2*@pD zxt^Ddw||_(9X0y%)2X*MRF;e^Kh9#Nnfzt;c%yA4(kV>1^$~t>^Zm%jSmd z>Cmt#2M-^lSe{GNTS2NOMQcOUBry#80k^Y>bl<@qma4PU%Us?^de zJ&4ydG%e=F&+nh>?>5_Rx`(S^bHj8T-7}C*BQh8|C2aEo+4S}I&DOJKQAllnB&~;7 zhI(1wu*YtkP2i7y!J?4Gurc%7xP4Iy|J_;??tz}$@zHQJ5dgX4cxbNH1dxHY+sD#(DP z0&t^I+br->%N+E_&2^3fHFaZnD={k_lU;U$-c#S=m^&SFH!N({d5p886HW-M7`td9 zFJG>!xuWnKpNIvb$fz)N<5u)N?d)G;uU@v~cX;xRqlU zM{Ap^Zs)p3ImKZoV2N+RC@uzLy94xWsZQC6H+Zi(AeVoN56?cf$RTygNj>R{{)7<&Gp?MR`DR$i)eZ}T)&2*Lx}57{|>wv zuD|wQ7{+q_;7?RMhwBsHQt>F)_k2UebGd%yJ1U;X_1~veJfG|9D&sLOU)mTi;PS(k zcp;a`x_A+nALPYeefD%M0{kEU!4ljDEMj zJBS5n&=4+sdZw(1eHfa~`=FwN?%ut$z*!=s;Sl%bia-Q(BD&s(3RPfQSg9RQ4s4L{Vw04MEAvx+7C5pqUKO)_Zv> zG!qqVtXFsuM0oH@l&YV_0DEe>NEi)hLPw^v39z<*CWYv~VG6DDlq9bulr-ZRL5Nlt z&nfAEukc3XOlB^ODkM%o4NDE)qRNEqv=I2z(?z#QhsOf9@dF~ib5elfr?5|rn;!@1 z37=qxCy|E4osTE-)#;dfgf|JaVG$t(g{M%hnF)F1h%JB@3KyXoo$1MRj8MlUbQN*o zCE$5~h0r{tBv_1h+e84U@e@P}2^X@9NFO2+!k>VcNN*7a0xHvpPx=PcyFU47A^Rru zrZ?_`&(Q5mB^)*3JR`c%>AdN5p0*gEw>QIdAm{0H?2`|Wbr|wm3si#c3an*|)5XfpOixMo8TPx z-kmFw*o(oNu3GlOfzKF$-$eDZy(VevZupz6%CY#j1eNR zdnPI)h;y2J360U}m~G)!Br*tFOgmOkxDEZ0P@uSum7syJV!Lr-9fYJ2a8L*lg%ME} z$tsGpqa?z82ToUnLbR5&!GThLI7AkR9_=04EZGg|34Des_3(vlwG3vDVFyJrlf_aD zt}v~41mVYSmsMT$7NLcK8b@ylM=8e=j-?#SIF^fc#&)P2#VKTP3Y#Kpv0A~~u-gFO z2)2XFBM^gm0x_5$zKvBdat}IwWieLpMY^Z^D32|a@sKRasItoAmr-KP6a8Yyt+B0Y)=;Ve<{*v{1 ze>ZB`2W&-J5CtV|7ESP_n(`3gpx`rsm(|R-D4?@P~#p-6+cBzsbZ4m1WLr< zV-~bf>iAMZ?m^2tfV;YAI#Y|K)XDZihe~*FGOs)sm zlZX6<*5$|Ab)j39fXO2POJnP#v&AfJsZ=19Kb6YcLbLLqSZM2uQ%kv7npz49<1>^n zoXY1uA8?smts!zQ6&>x3d6`@wlbFsVcYY@4QZW+6QZYZ1m(A^y0th*}rZAS)HLF7+)H2FlM$&M} zXQ}+lQ-$0YrV3L9C2!|mNI$3?J}Ao;Q_v+4S<5EVqM57}eI#rpVd(jn5N65rAOb>d z+_^5WLDX_KxLOTp6SkQ}0JKcw`BhYc>s&idS zPy4=(_S<@Y_Uzxg|Jd?F9mK;K&m9Mk^&C08|Io3Xc2c*sw%>OCmxF=As&m4F=02g< zNnaf~({iXYJ1Kn?+_O(KViqZQF6gPM`917o@GnwJ&YK_YT6`4r1*)4xfdMTBSRZIA z)S=8++kmD*Jz9>njSX1u#97{QtaV+Op!Lf3+Dq6#} zOdNW#lBn?RKm_qT+=kuo8?+9h0Kma$;DVgr;$qsnZ7x=DcaV$i>~^>WL%Ty<9E3VK z9&j9g!WvegQQ4Xpfpv&XDvUNIoCiy7I*FH2wpFqjw~eZk=46G^)0?QWN%GEv2+&lv3bz#daZWDHJ+*(3RWrI%(_o|IWFR zyb{vaU!RkE&OLjddvw0<`+r^C1Gdz8cKOkBonEQ@qegX3uI{l`BM>(#!Oa!zFzck0 zR#c{dfjrX-l&i|L9AHjZ?KxiDo#`BZmjc8{P$DyMi)hOveJ`K_;yW>na~HD=V~ycg zFZ>iIKo;?M@MIwxsee)G5LHs^=);0ID%0?#$5ezdL;Z^uv5@+gBy-{$<`*H^1I4Fz z?LW$7D@wyG%@S$wKRgj<7Ky2-c3>tc{lJ<>uvi+?FqAYL`XLhE9q-*U*lB5hqp3Tv zD%sf8Gc%o~{j*Q6)GCl;QG%W!EnW@1gZ&5S=K-HKJGO^uG7bn9xTVJ`bn+}S7eyL? zXO>D%nrJiTR%+HAd%9Ku6sDwd%KTP^jH$rI=&=2Fi@R2 zd0gEIDC{7ebFw?OPUwNe2ZWG+;j;h^Z_CBc8?I$cTZk)jtN^a^f4ooQ8`wa5uDqjc#NNH1mux;uS~jh*z9{GmQh|Bf`cg zQ~(HMf-Oe|B|Qt7;(MTKRmjvwnYtw(U1#RfO=%uZe+hY%bem|e8+l{M4R>VFG?G6S zw&Gr_V4O~c^gZz*ITS`x^7#hTKC6_79}iLa0??urL&vvd5~^G$akCMdz;oGO!l^!W zSvHL+rI>gmHud%GOM}dRZ5KzrWW*%zOFAMT-$a6w|78}KbSAWPNtuzYE!xr1*t>OT zP+g1f+pN4MY78M3;!AChTVmW&>%02f)pi(GGJv(+uhkF5y4tmNGA*2|CZsnITvk`R z9v8OSaL)cd6-qGr9Axx@YnjwLG!Y9<3Fj}3_KTz?>b9Y1hYDhUQHPBTsIExnTB;$a ze^7&W|DevzWKbD`2<+}mG7$t5LD(8_RVMN+S6jgQ1N^Ywc!uBtqW+EdqAqUXPC6}{ zIFpc-+=LM4nbLQG($Gg=cbUu7F#ukto<3fX$})~ll8bSB z(joY2Ag=?uw~eZQ$JxL&8chfzC9l?aab3L@ieOrey;klExImq}lQst5ZbpX}&$6pG z`Nrpl;DI>$luSvqrDxMweO(=bL0w!IF6Wm>$H*exN-!w(b{uW*4tS> zy>7xu7wd8}Ha8sTeK{4wnml*j{D$Fb0P8m5_@PMZDe|T*o40baiJRNF*}@k3abH9~ z1r~@~p<3pD$L7iro^ixs3voEd37+q_R@%&DiS|bvycP9+8B8+}a3MyfCB{;s4f(Sz zkZ51l%65R?$ygDQi3Sz4?POsY%!fg^!Jia#nC_KugCG=i1wrHEF;>9`Y(7Cx5cECn zQw$%l4FAU-WD7)_pi2Y{NF?}t_z0^e=Hwb;PS)f#N7!lw!Z>5V zn*btz2Z1JoO&O9n9&qsDIR8D5L*W#t@q~8@#^sEp3D!u~G3)muh(N>GCK1C1lWT z#ljQ=)dVPKsZZBrIu8~zX~s$k{w0474J@30aaSy&LdAorXhHh;f99Nua;97t>=p%| zkSZ7pUx-k!K1*ku6e6%L;v4!mwN(+bDf$A!n5mNJ9b6qCEtrC$1OA?&fk8h+gTR$a zsG)+)P@+TC0Y{JI_y1g+)RW2u^$mo|OO8f7IF9d+ICCFWlS!(i^f;QIEW-aZ)m{{T zp?Oo~W<`6`16oWv43q39#}gfdCoX$)9B~s6`XTbvOfmWywIBhV{P=_lgC-{bsw370PW;?oZZ!d!B37j zRFhhrU4syRW*&gr7EGA9AIyo+RB{~SnQ9v8(jY<>O|p~% z41#f8JJh{zDf;juh89VosKFisZ8J0nVgZxkW{mzCl=Cg@7qtkyR{d- z;t(*ImvXig91^wSxGINbhVgBt#moyhj=n*a#8?T&tF#RIadd~ty+kZc$I+C3BZZmsI=k{?_Y_Lz99?c)R zHcpzxfDW)yR${ReU39g>p7LFN9KD*%GNeTN`)9%e%xG+)zpp2CQFOGko;asffKjcq zvJ@Ail~5;Ail4;bTPrK)GWTkKsJgORrCmZTg9w-Sp|6&eRaVDwn(8Va zBF-F6wW_?b6ez4^)#!9F2qCq)rYhu`(jjV1dDTbo$CXxZQ{vku^D0)5f$y(q#-LdAdTzkyWtSyXjCWPOSO5T%gNKb!{05!)xV4#3TUKH9F{+ zay`dQ1!(FnT?S(6$8?TjZ|FDCboGCo~?MA@NC1=jAuKZop?^gb2^^gcv|tCfhUHi z15W}^C!W1{_TlNl)3={(J`;97sGEd&nyu7MzQ)kFOV(>i2u=ZiYAH_EVA=!Y9hmkY z^9H6pXg~+ko`qTGaGAFPV&JpSC6rUgygHzqI_DG0scQkDoVxvla+|@c&SDiXZ(7Si(*&s_lv;_RSnSuE?tkiie*q<_pp%FULBF4 zW)ET!#)-H;C(zMx+^U>>Xf&{3B%s}cJIpnZaU*?q2RB*>xRTR%RiW6e9zaPXZy&W9 zbx9d>cqMGUcg%Ash-<1=jaF=>UmiYbD~QGnMy|Zg*fxfLY!8m2lo8ag841S|Q0uqg zzI#oCJi42)ApMC*|1pssgy&%4 zaxDYr8!}D}BJde7h!B7P=Nm?GF(1W?8OhnF;)sE!IG0kK0FQGy8yz1Z;yYj&Vk+J& zV1h!%I}D$9biK(vzr24*MEaNB%m@mCAE4R{<#lNTDd_HG;pi8Bej% z=P_}w82F?)F7GwXiqGT zO6fAtUv+ksY+Qzn6b!)Sa$v#eLA;N^afRu?@_!AGoFW91;Wgtb0{MI013f8!HlS{b z0DUZB6=8f!6J@`J9==W z0CSZ(0y9TD2vfCu7p6u3o(z;uQQ6PKRx!tKCp6E)gw_dAPZhwNv{EgeIb3m5we>F9 zxQlz)xS%vvo9!MM7@epgZD`tmLDEkJNM^fnFTof}S>Hl8-Vb=eF%I`Jf=6ZQ26lX9b50isEP z_^gft7f3RmL)WI}FX2)0`TIQbOwZqMrZO1kiiy6Ja-&P`f&=RsI<;tjN0KoZ2T^zU z0Ot~Y=X(>{n!YQKkAhuDCuB?&iea%m9|E$Y`4Q1E5s7IByCco6F&QiGHF*@g)iLW% zS{E6l&hE3cE`G?z6{nEZ(vNA_*c-C(V>#kQK^QME?HuI#WM2b5CZ9dqFneeNe3MWy z`J67I`SeqH^w2oaUt|)0=ntMWZ19xAw+y-(GYej2E;b&HDH zD!-A9-;fVJ1*G&BAem#}5Fbz0x52D$*sSjnIT?zcG=4Ah4gEKN=xGcB|4=Btub{fW zN;XUNeHP9?%45Ox=rnZQ!4clPKf!0isCfUgJSN)ar9Ej4n)Wxoo>l2@v_u%08|A;r z#^2>b<53-0nukWCit$hR&{$M8Cg2hWx2R?elZZoR@)8ip3y}a_w3d)Tmw+B*E?Aa& z3vmpUW?}Xg0BXg59RexMs9&VtrjO{i>bL0E>X3CI&Z>N3PrD-f$||khX4a0!LHh)-7$DNgMs9y6yEF=8zEO>_PLkfW@h~kpLEF zNjUfD3EL|DYa7->N^^5vee>3~rgdT97b2G}+ncv;YFoR1X>0u{3ulS2wTbFhx2Y}M z*sy6`?v%vf!-5u`y6sz=7xB8cY-kK`Z`;0=%YaU=ppSqd)0JP>z|kSKx=l?R>NMix zYSuP4p4zZZYud4;e!GMFxA7bu+(*32O`GIRo8-C{c{9vSa#M@aRJX~DLEK?2>;!fq zI~i<1A2Tn12qY){I)z>sh|hJzKlR_tacBbh#`N5DN8KL_F?J^P~o{^;v<$H3Z?c9OgZ zM8VtBJ|-pnBY|k=Q?26DyC4OwITZ=?Xw;a0)b;C3iQ=iPFu78v7iWG&1+6@DYDXJG-Qy~3ctIcdJ-jNb2VS6p@oivq&%C-c!YWhuhTAnN<@7qUmKq6A;-|fjsmB8#Jc_%Sl zO<5&2;1g9|3(gE|Zi9XFQd-jVZw_FpoaDOEqV4TNJ&^pe_6&6ocJ1#zpnwGkT@mfC z8>CSLzYHi4+yBjSXKjq-tZ4U8yi{0!A!{cz*Y(Fc22|h|4ya(V8GtmJTvD?B-z+=X zFl`X35lgul(%M0oIAFs%*~#mWdJ9`omswx?s0OiD^YGAXHof$t@;se@DysssfE-!~XFBu542^ir-Uy`l<#>gFm- z!Ngu!fq0cfZm9}E-l__umD1``yj25&ue7=vZ#9JBTLTvN(wZ9Lct<=iF_M-#&Ph{V zW1=8~=u%P%ib;8eT2oq8t(DSYKr5{-udLBRr4=P1Efj)Mcr8>`Sr$494Ds=>IRc=d z9BT7QtDGQ%EU+%jIbHi$&hFfQ-CVvamJ{a^UL3HGSypqt9YqJbFL>8+qW}aUa6&@U zJ2)YM_36slx_m&FKdH-~!FADvh<+s=D2-#+!F@e{Zs~7;eHU!J z%Xj0s2hTUbEc9L2-($A#0-H#Z7D#My;hy0gN>O3a-2KBlcI{M`7vl93!(DsN*r^tg z_hoGOQwZQuu3{8N&MPds5pUOpRotngN$1b z3F~2DJtC|}h4q-Q9v9Ys6T*5@SYH&@mxT3{u)Zv;r-k(uVLc38AT5pk8 zVV=y|OtQUMwOK`(3d_u{%_cj`SL-XvQdo9QZ4TMK+}hkiNdL{L&4ZO&P@4}cuaell z^5+v6#GEAr22rqoV4Fo{bN$=E1Uzr$HmilrU$qUheL?XyyA`)?c2-5SrG<+e(gHBy zzRz_i$dVsW5ueecxZYIQLLfz4s0-+XMXgHVMLNl9Xv*SNweU8bBsDB*pj9gz(Me82 z*9u!Lg}3S?rD3%cwd#ep=p>_I)0ebb3$N9q&R_pjTzvegw(qAu|4x>mKi18UR_&RutLYeqneWN7X=@3DEH*nIl;1Ed9Wf_8LSFc z2Wx_>gC_(}44%Ye&L}5%a2z4Z+6X z#^5QzO~K8^Vp6V&XC9CIrx(JI!=8xjuZoYyj?E;cA5rLj8 z@?4;Q!gG)3ZHl)y;wLXZ#oOokE_wA%iPz_Onmqfbcn)~(B+momFCf{+Cl&Px&tN#D1 zWm-JB=v+`m0Lc-ZN8-2KHZO|7w7AgsQ#9=s9$5z*1+-&XJqP&x`l;6282~6o$1o>e zr#WE*`b5k|qu_+7GwHflV|t_rH{0{?3>Puz+&Rd-a3M^7cfsRM(DDNE2$2l~O!C}7 zBmDpydjZ$(4>Bn3v4Y^{v7-N%%g+Ja3WjbE0JMmZFH~ zr_>N+E)6%>HUxabq$7d`=DC-WeM@BavdHWe=D8NWo-5Fld(kdX3GV0Yp)tET#ZE)W zBOsh6a4m1nu`s-zWPFkdFWEy~@if=eX2w#8f&=mzpJpP~EYr+ha1o~2pZ__3;hLCO zJTXx-F|mJQ0$xy;IL619(*$udk4yTS&hkP76_oNtmJop}rjLi0sLMd1BO0WlU{2j^ z!<>3Y%qgq?LYh}y(mOPZ7@23tWbRbRJX3uiX213;m;;tyGXom(a3@UkvtOBS7US1q zLU>A{^xy~^)PIY}L)PCh3R^+5~ui>hp*cLM;d{ zW6Pi|&$EJRe+iH$RwN$(e!y##e3j?bB7ts`{5vGoTl<=NbW>XV2;_SyLh8$NTBsDJtX&VrtD;6 zKv1(1ZVb=tKF-6PYzzo&>BfM@#=8P)?j|(`B)4>9NYPq)NFJ9xH`9LbC5i%7uDmf% z$&uVdZn80zs2ZqkJeZgNl~nmO-XOfCGym$8%%7D#Cs5{~xPi`prx`CIsyXgZTPMbS zmRSov9Rt)i>LM$jwJ%c_K^>jvx3sT-sK#>}HS5HyJT|4u*oBQBn8Dc~5rfi}Ty#H_ z`R?R72w!Np(y$L1d>y9tp>Bj+#Ct!r57DZ)jZY!dOD6CG<4HcMseOpHrsw$_G`%>J z1IU3i7N(b${sLNm_!rP(wHFLbOjt_)K5^vl6JPqr#QFc6_~}0ymo$lN7=letqN^IX+{`DyLdxunbnIVW$5T0p~F*QP1|-$Q-aARE$4!VxMOG1@;hD>tE$aVZb83sa6o) z(k@gGL}c+PwGts2pHiD?+tFk@-YuN#=|fU4se8^AA5h0XWzgovQim!hNOUnL|A4MS z-<_u*7mcQW9n?7H)A#dyoL!KgW_(78S#U-_7;}!GYMx6G`yxdo<=idUJeL_4lMmXN z_PK<7Z~{vETuMGT@1%X80?$dJ9BH4+$p@kwX`d^|2cjIn>%z}RD8=K4v#Uwf9+U>7 zk^${5p`ef88^A9Vkiaf<9%*DbpE++-j2lS-UAxPF(}MMJgk8W~(3SUDv?;P8u>vg{ zmhTJ)8LWe#O1q7l6|5~S=DLITgm6(_QeCqgo_Tlq+P{CORHK(&mfVh<$o_t!qcTpy`n8W-g98_Ws6ygBh zhDL{fBhL>ZCUc)MO1+r<9lSqemh>=es?{Uh?Sx7^KK57B2J?h6dDNez?xbVWe01g) zsr%Rnjq+17NBL6QcCtl1l$hw4iUQvvff0gu#!OA5Jkqq=Na7D0&v0{>d zAsIMy{x=5i72a=N&nbM4T*|z!D#oivnIoCTe$o{)DtQmZ6Jf_SxCw5^@j4C7psws9wg~sLW#!v7Q8JmrHgxVqf1g+b} z$lNKDe|fI*Cd?l7Etr=x?QK{WGt1kG@g{GKYP?00Kr`M(Uy!7e*iCTgrV}vl4dCDK z-bk^yiQe%1gZILz`p*^P=Sup_Z8d&@#la^Jcyf$iqQNxfu~)o{_MyS5=WO`DXGTg- zoA=3Q%Cz|v`AnH4zb2n4ljJw#Gi8$emVDBaf8>b55AOy|63zGn>OjpjHv=!3!5A3hz_gZ_M{1Skg;&Wu>KD~e~^WBHJ_f-{VaHz24Md_Xp74@7t4%osH7A()kwqv{i z&JtvzV=D-k;t*^xzM*>P;PxzjRAF4ffBra*sqqqWdkH_^{QT7LGEYR2UxgpKMOSh7 zKTO>+&b#F%CXJ)vpJj}!o$?Q04k)j|yqT##g7rD3{TS9Q%<=}T^O^o8tV@{n9ay(A z+b>n)2Wn(427+G<95w*aiQY0feh;hT!7{$0UPFh_mg&@uH+k+>fe!VS*|DQ$r@o1Kjxwy^Ak}@uZuSn3Z4<~u zKTF0AmW>1$y3kDZ4)$`S0%H`oM+x5Ompql7G?LqlcT=fuV0sL*C(}E z@2RviSaom*-atRt|A79*&X78*e;i@x>p!5^(AQ+$&g2hZeSsK(4|N>#HpG@0fB#g+NAdM6 zV|+*_xQnKv=`pNPFn+x!Jcm=mdqR41xS$RM7pD$FC|WqvN3#CTIYS4pAir0xt7)Nd3R^|&&Mo>~3D zgEb$nDVSYnhKQ^}0`32zGee{%b^z#r>Ib}J-{7(JV=UsNyJU??f2tg`#ML63Vqux; zFxdXtrQOZA5T6lBFob(nV1i>7_8(D#Au5CZAkieHrZSXNe^FXdQ$r#|Lj6T4_(LYE zzfh_|pKNL>-0FKZKFsv8lho6S30if1rfU58S{anAfSM#E(0@ zVihETTZ-2cb3RzfA+1?_OIQ{o3=ebN4ohO>Zy;Y@TBdJ+`B_6`nMPiZ)2C zGti%b^V;D7e+8LG-qbY!YI(e0<1Pz$=(enHu!pGz+{YT;TEC+Ox+H9EZMb6P!tAHYIh2SlbzXul178iknTwV++IcLHkCX|neiWTCbG34Dr z;BBU+LFzWGaZA&V?Obh~eIVXV5|HRpecfqW>NYplfBR>vL%gGlN1`euC6JFD5fyN> zLD^l;{z0n8qSG&PCDJbq(zAjvm+=+lvl&_Vf)6#2b34<2y=^(l>*M z81Gm;e@k*GMG~`B<5L%G9p?;MAY%>K7j<|4?q0SBg!cY8%4d}S|J>QCK)F&w zgR=#u^%xHA?|`Iz-4Ns~ApJ#Alpk{a zgVweKLMGai&RcXNJK*gQ-C8%$WR9D@y|1skeHW9?dN z=U`7a&CWCeReHYx)JmT@0;#!}278+|9>%1jJ5Ie|ZYIh(J>7(um4Rt6w7)GDhx(3q z9hiW`%=e~q!R{6S4@nBq>XTes{-OBdbVpJ1_(o1kcXAz+Q#WrS ze*yJP*!Jw{l{oA8rLr^QyG35n1P~U`oLQIX)F?{)tU*tzE*r47_Vpi7A#y+H=!y34 zGy7{+J1w5Z%?-}_=>BM|s~c#?@d0y-A2@)`yT<~-a70k>Kp`k! zYYwiF6jI+<;f2R8&D_-Os44*0C_&M2ehbolnN`T`4 zKrgw&f}MzzhCtyL2_1tksJw<`u?hdOlCYVp2)MGksubKnr38Xm9&%4zfZz~S|~h1F$Bk87omCH(g>+cfWY$pAnNye`vb$ zPkp^ujK>6rRv^QzgsMt2Nr*bnl4Hx6o5!pt=55H?r0vYvmAh*Wv>43UFz3{qeWd%- zqT3x#mpjA599wnL{izWmrwT+)&Oij|Y5=OqZk?2yaRwp?S%ZNHXFHh#OKT9dhGsM1 z11%sOWy&U#BePkf8)A0TVft> z?yyht&cR#mLcHbT$1|~@c=DGGFOl+B&|461xvMBf31Sc#G#>;x4|M!_YRR|h66OFX z9PU||ry?@k3^U5jb~3GAjBDv9{NT;>`Z>lL zH`*ZiJ;z@w<>E}8S1aY?fIXMHG4@XHVd{K;~!q-PhDtum4f>ijNe<(?XZ-|mqcyUz9 zWZ9KbDU124qf$1+f9oV4%LTYz4$Fi5SS}3}%VUki-2;?9)X<_QA@-oFwhOX7+4xPG zL&y8vLq(m;$frYm5oCo5=!LEU6A<#XgmwH>p3A*JTO|Fc!fPJ)0$DiWIFxYmSo2d} zF49>+2^Y{$2K>&kf99gVh4fRvCoMDeL zWLJYyPN0xPw#ei`6b3~cx|M*RPey3%p+p}1=;xWW0DkpUe}N@ZJrtvlcIFx3L*Y62 zIkO&_T9Z}h>ScMR1xRU2Hkbp@E&%{-6NQaN3po6&Jy}=_3WJ*2xk%!mB!wvKRMFZ~ zjnfe@nnhxQyHV_1BXTG_55Cf2f9pP!@Mo?@_PvLebo!0H)`h(Oiz15?i-`kitsGnp6{MXDjr|B(m{`aI zPMRFhPu{4!n;K+8zC+0O92As674*X6N@z230e}fi{MGLu#*P_Uh#1h=;jSL+I zocB17SH$C8%;Swmi=gYZbty%=rgJHmZBIbvb6I3*V(Cb9nQ=Lzs^63Zk;H(XMK{q9 zbEmwPM3);^@i(F`(Srz}Muk_h=qjQJL5mB;!w4bf^&%$ni!K814e!mH=ne;5e7bch z+Ilm%e=fj4Ba#%N4Y!)_q8+I0Z4^IKQFQBm#1|@Enz>4s7Tn1}gUg}OhGO&~w8f4l zN-zoUgm%`_3txxgmN5Z;dAF!VXbhKcSXlQUybR&@QaDkQ@8jWPn1c6H9_7K^4`Nb1 zK;>r9+*^!tA3{Bkux9BY2BsF2ScwuJ6(v>~e~(erZ0MV|?m*Nh%&1Q=FyJ6+HKINx zIyJKx#XXHtM4txm`V23b`t+-!jx+nzc$PBvQ9YI+^XGZy9TFtszX83zn4K@ONKK+9 z0WgY$96kYMeUlR8Py!NZ{+5~GTg-R`1)oUcY6aCXa#G@?#L1!qUS*Lri8V{2wZ^w+ ze;It*J-|GZ8r1Lc_n?d+Jv6!OI+Q(1W#>{)+(nsq_~E)ds&< z`uPov<@xjFzdt8G|Ge_tVdeSraclXgJQJ(S)Kp?-u-eQZvyKE8lk$w)>i}3U%~{tF zt|NqbE``ZOA{({<)4p-bdV6Eb)|KEvuUT0-{Qo5^B`Ut#toR9L#qp!aBA~eRfBiVW zcMl%0l4iplK);?T!!)(+zUY1kTu|&Lk+ONHJ6<}gZ)jHEvRQr0*UgZam|AYK&r`oz z+M&G|sI7zXNp+$7o1@7$+1EnaYBR?l%fPRqe#l_O`&&q1P@|5UR$NH|Q?#Ay46>Zb z#YDAEWH(^teTO?>E}_G<$ zguAI?jkXQAzTHm0<5eo!oRj_h?xeizqs65OL2{~$-cc4Wy1lM@e?NXXr)9_NxJ$su zktkUPUMB}bCXdVKwQX!{(N3w`vayl1n_^y*rSnQy4WXS)PDxYPIeB;1&0RWlyfsZP zE;WW(nAD19$HX)@z6?@~lvQ?yd87y`afQu^I!$7*Qjeh$1QR}QHlBN;>< zK>cj4VJKMJGSm}`_j}yo&oDBjFeEMS7431c}*aZ;6uZE8VKJXk1yth)BN+dC#y?%njA|L`vmo*;y>AM?#0+H z-IKCGG6+c)f1;x>O8&kCT7ZnY2K?0SDBwN0@MN4qs_m&Ad0-*38Q`kr{2hHzFGsOC zY$WO+8ZZ;t@+ixF%0^CK%=D1zF`6EY>$2dR8drRW$d`J@98A-PVl@wliPG4+zQ1p1 ze`prJQs0y^%$T$LhO(!Y%rh;W%`=oq^${y0ndMBce^4f`p1*M&pDnv*)L)^Z<7*cYta;8HOA|*0&=qlRFei_VXWta<>bDc|u{%yg4=yXM zpiO>iq1o+ID~lDubxZCI*-}-rfu2Xn>jp_nN2+t==pfrmS|F*`v*?xP{@IPmBMVly zpKBOj?bkTcuGQ4uxN4@<{ZZD`tj8Z56~s9*f3rCr?`Y}k?!z};`1CKHF_qv!M*#3R zbPR~7w)NC=UG3|`-fhi5Z2<@k$9icCRa9EU*2Xb+(aM=Put%xrw87BPZM3t@M9Miz z`l+W%y%!$}BqvnT)OnPv;v`=;b~WtJP$$Z9sgJ6IeEKdu{fwF^JTSAVH^iU{ugRwi zf9`LdVXIL*cbn(kQ=+|lySRrtd7$gTF1^}cHe(o$*>0YNibj``5h9~Zqqop;e}ZPV zMWfSQDK|rF{F9g)mo^e3ZX#UDS=s5T~?->bviC!fDp)fKscx< z%K&Xp$$_4)oIuX9oUK}OuHD+g@c~|DIX`DI>43G`K-l{Po)3`j9eF_hb-FK;GM+YoPFP@}9Cq*P95d`83`BG2OnKV=te< z;g>sg)}_mPbxXHy0XYw}y#2a-mM#Nr;2aJ(@Nr!RT@SDWpVH-Xbs3F=qzmrYb@>uJ zm*cq_&z+#|0ee7y2=9;Ke|a3w6L_8k9>Eu3e+kc1c)pD1t9ZVK=j(W$XS(ZKcwWK# zt9bqk&$saqX2Bsm<9L36=QTX9Gu{0&*ze*wA3b~_o{MDLDG-~_)@|*&El;;yEbF#i zx~*KdU5>Xa@NCmBhhF7r1S#24^x?18ce=H4cBDCpjUrsKw zTDK2xlRa*CjCOJkPTnQ zh6b-^H?SL-R^o-H_nU0EojmV`4wY@z@37%#*uzXN@p!+-hV$EzpVi|XW5e@0$l>;Q z-9Kc*+4=2xa*5mfeE&&DQSjovL_R-T1YS*Va*5r0ojhF9E=kuDSyhp8ZjjlH z@=Y?gJ}a!7h4ndM-6E`8g>{>-J}<1>h4lqtjR@-wVI36Kox-|HSa%ES9%0=ptowv@ zzx)u@Av*fG6M$WCpSV*#Tc5 zCy*P+3*-mp1PTIk1M>p&0}BHFz{0?yz~XfJoo7TLL94Q|Ryn9eNh%I(pNiW2dy8=b z5g2so1RyG~lZ=zVZvQ$oDw6=kXjo+AoW7`RWKK2+{lbwG1dQIrbUwc7ZUh2L_r|43u>_oK+6gD#TQ-( zF7{Jnf0_U&Kb^=gAB@v_zIf zprwgOcFZ~!vy6wc;op@^VKcfRPzHI|gpb5th!6%zG%AKrb(fLoNr|Ty5CkA&BhMU0 zT>)*!UVj$JbetKx1k_$riP$Ul}+roKxe?L2!DM?(2I(Sq`f)*dBCbk>rMCQco zn+3;_;cw$TClXT%?~jfWRX6k$BP zNQybaehrey3@?-xG){ysM%ZF$qfH*RK^ydCj2P!35a|MKlgcKcInXe{(@p`rHqLO7 ze+n(m#??SQ&Im6-Z9v8ZK{Op@JiJVTpy6_qb^{_g!z&Q!MuwN5bYZ&(C<5c*mC{X_ z9(2yJGjzw@G&}1Ek81Ziu!e@}1PFcQft+ zd2$1&lYt3LM^(`k^-3AZh^$C*F*F^Yf50TlV`T1-pN6?p`3lTk>N7-g91EVx#a%#i zq~R^!0E*+1vkn_yA$S56G{*pXK=XVW#P}oZbnR=5V6id86p(Mym_a2AM!3aM zr!ha5CB0j@_alOG_#Dsx4trLh?k`Z?%{bvIRGtgCzDQ^RDgjL!FN^B4aWD_IQIdGky=r+!5B+s0FDKVO;I0b=oOF^xyacO)-Jt< zKJYOzJMd-2@>9r+t3QO9(0&ASkL3*pG9yWXCsvc7&5uw~k~M#WcZ%-W$UDWVzr}!~ zO%q^r401=1w4iYZiSY!yo&bppf2;8}MCW6glZG3>*?>vbjGwcZE;38XAVo?OrHK=L z51@(fqH{2w76l?P&(nDRmd11Vq;~W+N%Nj85bfcBgls#2UJ4|F4e&8C^JOw~6f%3& z510W_XLT&R22;?$+jzJZZyzwgkYHfH%iGYQ{SlGRwEP)nzfNe}1J=L6e;l;^9p;do zBXbiG7$aZDs2)HQh*`pGF*$S~2mt0eT+gUl96%tv4*oU{7!Yp2tDWEifD~~D>2N<^ zjyXmH%1A~ddgDTpY1YDF)aW95)x+!YdNI8^!W-}kxB!R?g&XmD8NJ%V8}WJty;{Pj zNa0OzT`8|edy>;6ury}{f4cA*8O!Q?MoS7TC?s`wv4W1gNytS5jG2HNhNPPyqTJ5N z{0x(ChIJuR?tpa>Q}2d#G1I;TYnSCI*|=FowFv?KbAS%sERDN~)_p4#b15T_k>F)) zWLzxbJ4|%rY;-R~{vjqC-h!F}7r>O|3aDKCj)?0#vxm>}{s6VUf176=u--*e)bbaY+6HQsl0Hl#MkFVgIqh->?9<;^k!?%HvrS z=M`?GOHO0Rg1v|We_s%t#0z_o3cE%W_7Z)Ot!jp%{){H}cR1+sbxisWS~tYV9F)nt zo+)JAz*MqukRt<#>4C`~u_9IxgF#8*@Ze@-)Vco`@KZW&q=6Xkl z6h5YX237eG)#P?jlW}=;9Q~{VAOOpj_vT@E-APmTMf@)U3~%A*8Iaw?JhDP^uMh=gA5Orf|p*vWYV5RFF0=ZVIyJwv5R5vi^&B*m(=K370 zN0|FISdX%d+rb^AM4AF@V-uq`8jxvEx!lGrN~8swGqw^MqHv34nQ@yE*|u?;MBQL~ z9um)^;q7$L03t%7EWATmX56ksc0!`s%{_L?)K$h8fFlsuMRL{~cgf*XX-O-Q(-Nm) zcgw&Qe-J)hrU?b{ck;8wJV`&RaVLor^UN`Wun#FIAxPC%i1l(0q;xI3gYKgadRlal z5P)}h`gr5N!aR>CrVzZB5XG^DJ;S_@DaK=jZ{Q7oj74@Oc3m9aP0h+Q9*2B=EE9F$ zFc}by*J7F2S0m;kMovjVZtSa@CEp{c$3tnEe|+6{DLkI${qHoZ@GQ%GMlqh@epzM} zo?}^GQw)f~+hSR%Dzs7+vJDc2k7XyT@Elbk8^@qj6(C@r_5474RxB%B1rp4MpA#vq zyb3QW5E{k=%9@K+@Dg>;3v6s8_zi#`k@raOMJBf0mkEj8u0eizjK24;V#ZSsNw4xL zf5XTclD`e}CG0M+cB$Wm`5e>6VLiYsKTwQsW2$b3ZV2N$m_XxWBVsf9-V4_Y>s!Lqx%Wz(K!c3emE+c+2u75{_?Y zZz+(19~%vKNCB00XX72}2d4^HvOYw9mq(r_y^F{ljLdwQ%yxy$?=$s11yb$f^nD-0 z=RF)}^!0gPfg+=rb~j|T`Iqk3==ag!C}ep}U(w|dT34wfsMz08u`X3p)O)G>e?Q>m zW=kJXiHyv4nan)p1I75GGA7Py*^t#Y{;Wh2qvPQOzASs-{HqyQ%>zGFB6|?H2Z1

    6H26W6e~O2sVw7X%kxwbT+Y*8phmiowhL(q?C4?$p$89R^6;bfr7G&{ zR&hLhmcB)o3%O%_bHzCeHbC~Wf2GSIQQXeRESIl@xl6f9HLipNa6YEVRglvqscnL% zIl_L#)N57aTJ(sTJ{9BRpc&UefEz-z<4#;s9AQ6Z+KtHR4Q9DXHEyKn__9n%fh~f2 zL#j7*yhcX4@mWX%Yk`h~_yE`sk_d0W&O85RDgY`+P?soLdJ8#m9&v(8fBXph3DZBX z8lRu7AgggZ&(VGm*iiwU=k*0qS;`AnM8;h_g35#LMi3UKYFv$%ai0y7^FHdv3|#i9 z@6oV7FsU1<`ySxkM`pSF5bwT+RpTME`yMvC?+d*9-eT%wgdz~B5*>)&2GnN&M@Mfr|}UJI6tWY{6}&CFQ8yb$b$bA ziGagmTqqJvAlCA;ys1>fz!>7gesMb0c`_e%T8dX_k?!CHf0$U^%1H1t^2o++Tp3)= zqXwjCk8zzwm<@+YVrt3h5_B0aFImyUj2pDbs<_e>kIAo4C3-B})VXQprj48S^h%;d zbQ^#b+SzTIaVJ#;NmDDrxQqMn9=KQYETkS7=N+Jm4!D1M2dKt_NJ80Q7sncW2rkhb zj6j7RF#{0+ol!W!?i=W_7>`c!#U_&s(2d7L0046Ce?|)Z{(&B=@i_c&U(f@DBD{55 zS2BJ(0*G8%-`15fZbfhlY;dPn@svoQOiiF70evf>$OWhKvmK*p25X5e>IJ;NrU+wI5E6Ho^2r`#t~! z!wVSaf6aT(?C!OvM|nU}_DVyNY89h=mSnL?XG^+OI!Cfvr2`VMfIlwTt;CA2sMQ$# z7cu&{B$Qs{WB8(GyrhZG^e57%mX|f0VLmCDQ|}cGn{1X)BW5uw!1-TEGBzZGlAXkT zuoz3AaQocExg}%}?!%{0mf*quCVpF|a37{9f86fw0{cWUgoZ);E$-tykJ0YpE#Q|H zLV%ndTUmqOyz6Ij>9zCJU|FEltCFc#r&Ie{b~H6@ZQkCnu5Cj@-MWTm&R^%5?widO z?(AyVw5jcsEs#-f+kRS8gT%IH?PzXno94}S%x&3R*Sx*0X=@9Z^ri>PE&Fp!tv%Bc ze=6WDzWo1-!&~&sZqYNllRa}nx@W+}DG0`7r%mIe;! zFPNA#;<+6-PQF$k=0^{-_w7G0lf7p4e_BtPQJAXH4ly0TffbMIi^V6>Ah{9~g-4iLZsy?cOAUz)aqbe<7!aUWmp|=jZ+C^dRUH9K!#l zCy=yB%)ps?6OOOo>Em&1ntut&0OJn^X#@z7Trd;}K{&Xw)Se!7$OKnICKwXDe=y3S zU7)-w1bTc)2;4@KdmS>t)z!|FANmgh!c`T-@I*bLhN>z{h~eC9BQ!pT%CaeNdaV&s zQ+iyi0i_kt8BkMIZU<+8rulMma&xS?oFiZ!*B8KbCo^@P4*6H6=%hMXC!`kH0b0D8 zr^|ClX|ioDN%E=?<6X$r1qej}e~WZEzl)N4k27<6t;S6eJ<*Of)B zYS2m$^EP#Hs}{5q!n{KZf3#YH&Zq@nRKV{m>Q~tBT}Fs542)nSS2#yXHA}DTo4VOOYnFlWY9^*g&f66W-BNdbdpJ8 z6BH+rIA~Gx!wLZvA<_b0GRo@7QPeHa2P3Ia!ro~S3fC?7!28n7(!9f46DT?9nC{b*w#CuBuW> zOUsqgic$p(QkuvUj1*B^0WW%PKU^8$0WWLvFI%$e`>vD!J z=jsY=b~Zpuakd-H;u^N%9swh(NIF}4j}K1{p1ip%a~|yZ;Lx$D1Q?*PFw^+1 z5tcQ+YlIbOf6T_N5ytN7d=n7EVStbwP)beTohkm=zILf-}Ad_PhL3VP(o=|PfEiTym9Fc>Er*I zHHIqee-@IZySZfPZmPlwld6FAW;LY=2P}!celWjJf#4A`g)YHD**4JCv%fno&b1k) zA7Eu5n-}jOaXleBb~K5`r61WL#Uf90Ihjj&rikI%Xg_guLRM8~d zHEkvySwP`*Kvs{-jzVIlvu~)o!yk+LOUuC3kD>}#($!Ca3Z<2lee|y+2k*3I zfBu`zH|vP|!i~)>+uPPPu5aAlmJ~K_$(+>LB*<4*ULnv1`H%8deEP29{kEg29&yF8 za|vc)Q;f|if<)oomhJRoxM9n>q|}&O79J~P-<0%d znaRO>wDA-Dy>ixOPhR>4-gNg<@m)zHp9Prt>p4&~pUCt>PkXTiHw8w!lQxfSZ%6YvRDo57w4K zT?g~+GMvMmL0w;|%V4}M;f%Lsgp;G6Xgfg$$C&~K8Wdr(XI!E>o%pmUPAB&pK3ob6o4VWxj`_1)_$sYBe>57FxmJ;jH{h&G96Q8-qG|-rd@)XBGG!M=c9kN# zO3Drf0E8$z7&f)is2<~NK@Lu^t%*2;`5-BwbBq&{SvI%`w^Xs%HOn;$vRflqk3drb znMjk?fB}#-fB{erg8@)k56(Yz0~r6b&EWg9>@w;`6YhX3i)dDBk^N#ge?=X_m%D@akn#J4x|HA_s}HRnR&# zV>2-USvf>Q&|3>cht%p(BXFcVC(07r2kbMvEk z@;pATli)nPi1=LgK9FsXes-wG7pyc?E%qvYdT_?tJK~Ax8GAarfA(T=@V`TA68!Jo zH5ag%f>C@Mnv#)=%R(ikbR`cdu&&#=zHMh+b7S3>`Ud)1E;NI2;|RUoZOsiWg#XY| zUxz&~j2ptOB+xxgKAM-bwKu*_)Hj#%ZQQc1acASY9ZqPYMmio5R^lK>ne_H0`2`NH(Tis;GTHz2|ycr@KQ$p%(JcE|)Tbn-l|9QfiGA8(% zDgAwCi*uC?Z>HQLSDqU0Z!#ria1MhqRmecIE~g2%&@ve9AA|t@u1?4x;ntI5Fo+vG zx~(CAL5{E>PGs5BOT{;|WcE++M}Nl6(}lLb>zsJElSIdNf8rbxg_w;^$dN-h)W$LN zs8n{qdX^cSZB`R!!S>E%8rPJnr9>Lhv}OWZ{YZ_$HB-{#JVRp8ym!nmKfKU=IL@SH zq(yI?IQvwdl3xm=V|uPfJIPvc*5zWHti#nGCqzKA8n}k$V^lmPe^gEYTaYgty%5gk zviRsBe*&Z4e=$?YaOToZ)iRwIO{Ohes#ToRJ$yjSx)6p1kU~1*EkKLyKz^>Sfh{;- za)^R>M^edjHw3zQPuhAZkY=2f{HU%RUBT7f8E@YQm96~#&u)rgcg6ejd9)-n$*$-? z6K)GQI;>ON?u(gfI>ep0+8s{}YW?(s-ZQk33*ceEOi{LWD4Me0u+Yev08^2 z!50F_%41CZ$E;FvbVxKlIW_=&?Ezr8HA#C|{Sl>!0RlOLWcS3%!4CmG7frNq?p_GDK#h--Hov{f7~7AH__BYQ(Q+oC({oioRuN@Rsjh& zwE`M*)e5>EufR_T7{JM_C@+U!IlV#gJPc^ut*9(RXeBPxE2_$>U;zBGqMF_a1`~R8 zOV#R7O_eQGaZ;;WWlw(tm8w#41?|$@6`2Eb^SDe zQtJB0bU8xmapkBkx9j!}-5%HN2@{kOvT53R%(hA#+?j8F#c-~o%=alL4(Ar+E5VZa ze5oP*~8o{!`C1fEag z`4paW@eDH<=QEZc0`*sArBR&hGXbwy3#dXaQ)mm!- zrI=~9T5u6T8LYk5ii<7C#MIgpD2cT?e{1cKZD2N6EtGIT8LYe3N%0*SwJrrpW1XH_ zw*sZHE^loHSiPA$v(^J$eJsOI_hFtzBva+ZPm6r|X^~}-`tj4^377b7u@Jv4a2bY& z|J!LX-?&f8MPUrCbX+Cn!u?r5<}M|fj~T{O1(GpI=n3h~m?Df^<{QE&rkTc!e`%&k zr4#i;iK!Ckmr>fq3hpJYs4XWk+zk6bL}!kd|AvSz3^ubIeGv_Yh!xRj@8 zIfYY9a*3LXFrK?v7f}|^IhBt0KX-`|lX;RWT{Fs&9??tujeL+U*#hCBvPDfr&nIh> zcJVqOov0;+C&PGYlUzJ4FG1ufe`1Q>6#%u>Lpr4Z)ulVNAgLP&cn@mQcSp0F78gbk}*ZBWPh4zQsoJEy7Y9vP>9)n9Ow^zElNpoVr{)45gqeM5hKY2%RD|)iPzdic;Ubg9 zA?dgh!^Kicp(EarU#@f~Xgzrl z*&v4RdtlB{9)($;e?A6tuJ$<0d6p+(&ey*PbAk0s3{r(8sex;ydx#zGFllwQ0qGPh z)Y*&_5CZAcLt<ee|wriG!d6msK{9m%lQg} zEQd9Vm`%TmBy_tKQ|WGNB%0&-7??z#1?N2p@!XMJ!oVTC)czdWxXkf9%;nA(V6Jc- zV$g3)lq?eOd7ex6IU$=U)Tg>UI4odzgYIt-d@96NHM&}hxe_^aR~XJyNCxyp24N5f zm+bo{UMZuOe-MX+grFbURG}EjPvj@OIgjC5>J!Fl=Q}es;v_>`;LHo z=N;h!$Wbi`&s8#so9{a$HD`%AcPbl<@6)>$kP+Axc0(@DGHGe+k!X=&%=v0~(AK#$h;+QiaeX zb!>nk`i~*HcoU7$mm%5Cn4fZQx7C5eg8FpR+bG_?Ym>b;J z!EDU99_B{R4KPpfeihW(O_|?(pHe=&BwhLdjE+r=lWxZbbK8_9edtwx@-CO9#j|kB5gHrU4N5$)bDjQrc(ujnApdKZuMVAof5kY~M1 zr~v8T;A9%`$}&_a=n+*pZ+j$2i0bd(>HhwGsxSZG^*20Fz2V}IUVr~NmFF*BfB#MQ_utd{8y>LqTs}9wzu^!I zESJ}M-QT~Q-rv8{5wz3$8xFHm`}=uSxk>%~r|JFu*Z*^W|C2|qf2N1;-_+k7VSozZ zQj67KIE2*~(e=?Q==pbt$n`N(y$bZyA++>Fx8FcfYO|GT%e`4d9;YYuR*~%8+eG9Y zwC8q_e7;{VBDd0>HzXrKM_z%=$WfGg0_CE2Zv?0XG#k2;eCi2=Pc3d&s&{EPew`}O z+r`xrc!!{&%iA>rf5>Lm+tdw*+4+gl6VpOT|!%HUc6 zI9X*pmWajT6^RP9AV&SJ*^sfw#rVm*t>}j{8(jMb2FjXXHiE@X8)=l$)#vj$OJ}qZ zt;7kdC!g@L(cqKy=L%eZ&7|w6z>$7s4FPc5R4W1itO-+4y2gGQcFI%kdo~%R)gP!n z&*o3=J+dTgyMJTse9wo;QgP@_rZB?BBMW1D2E)MQI zUNE0C6Od4CHbBr)MUZExP**_28*^-<$Tk-M4j)*+Fn?NcK-VqXvH%xVb_bt@m)*`r z%E2?veSWZcnu|1VACx8&pXK3i$x>4*CXh9d$5 z!!d#lKJbmXkKo@6q*GXZ7D3sCC zVL(m+r6H^*?E}sSU~a%q6^cXeTZw&T!wG`i(6FM=pTaGOXT-yaaEum&{tV%4jo^3$ zGu0Uf6r$M$_7LRUFldCk)vorxk> zCW~BsUPa#ba(Qk|)bNUA4cDAc4KZx-zH;7I;hCK0ocSc@e7c1K7^L;?Mdx$Qd37b> z{BWZ*j$FsG19j*WB+NuFytMmtUe5>Y^{NJE9kuGpE1ffU;fB=1CTc@IM8csbRJ?ZK{uj#@VHx)#Q58h;RCw4m43O1-W(U>Kb7byb*!WK^Bxvs^lh$7s$w~_Eu9;RxK{yzF{f4SaJRnsdp zz3jw0I;o~4Lv$Y^2fY7HJ16(qncy)KP;d=Pu@Xw`LX=NLTj^J@0@h6*+-9ms>3_6} zc>K7ju1?;gS*j(IKCOCV$+RL=PfWdM6xgOimEobA&WSr}ROJBjp{sPgE{R*|RK(6B+({anJnIDJ zsu8i6kB9V)P%tJ$cu?^hCP?EmlYi~f15N$;b@1eu!uvF;I!{DwIor?%QLDNtq`O$1 z1~IFyHe*t&r(+YRJTCrZ)z3%l!UZZ~5c%qAh_u)!@Xv|>KV48T+nigN<40&x;HM)6 zD>&dBrUFoB6q1i32h0E>S(a^P+gu^1t$f=i*fe1^<|PA;F0%Pz8;E2Z41dPUY%^+S z5`Y6EE=7kI_K?MRjvT@y((oBeSxG6<@)#>A$8QCsH4wlumP?Ws23`OpAf3?woJW+b z7_mtfGjlaO!8rg$xZ~TxnMONvc=hD{(Im+TF0l&UXv&vl_hwqSYNStz`adWhIi^+$~)9#9~ktU0w z2*WKS>QSPofLWjvCKeP5h6*$dAtU|K!YzJGaVz72Edd`0G)=dP^siO~6V`yc3i4hM zRv0T0Y6?QD%}U)GvIPw*YKDNKW|-#>xK&AW0u`VC1h#=!9XsLP-@IdQ^4s#NmkHLY>#`=jE~!sRm_U7d`wp+~ zX>GqcqQHIdA{^{Pq#W!BBA&nz9SvI`g0cmlJ{(E|0wNF*Nz%#@Dy-MF{~_WBbR2{e zAUsppahieQ8ryKGoxQ+cQh*+PmED9URQs}b^bIx{NBTR_RRbD&OkZ5p$wg;6SES0A9-ZqvOF-u?oA#la>0EsJfQdcY*WHn^5%688g!E@_%2&^G ze$xm*FN<}UkdOn&N#`ZQ;DvYX+uhi*zF{|EB10QI8DMMY@vJF#g61x&o3^WG-uBA2 z^lzsA^!0hyN`1+ufAe&!QZo>oPqR=0h12~G;8*K*Jbx6Y^6f`eNUyQG^;(K#F)$g; zY3X-h`FZu9u5EZdg5LEX#|00y9zH+GW;gs= z!X#A2Vyld*D#D4zsudEn9Q{NjBcMyDs5JHCQC?S$fa`U&<>BAJtPqi!+2HtQMRpJZ1K~VX zumd<-#q40Y4Sc6i!N?KLfT?f>OocNDA(lbC%^M~KGC-Vi1TqlKc6h6uu`RG463QjE z2@L2Jfy)KH$dETep~XWM&*GsaL$)Qdva&+ap?~5Wy|$9pe33FApTF4IOicb3i~~FH zRf2_YC);%q(r%YqElDEzv|tqS?ZITAnc?!gyHV1B-yo5LdvqN!S(3 zcYg_VO6)Si=v+>aoGS^7(?%eic0%8D5bUOt@HPhtXwyXqo5KXHIYOA4qwZxRO~Nwtp_5dJe#kVmW`jFD1g(E?ONbAJ05CbKOx>RM)`AQ$ z$rooH1F56n`>f zJCOe^2uVki@Rhb;K6!7wx-CpIc;XoUAj1uN4d4&BNj@U4w^ZEeVtxbGbHr=0bc_>N z2F%+TB2dF)4IO$K)a&4sq^>m(etHxV9^n)GBr4vd@kBR*E!|Yi$Rur&a~^7XG#j>X z#Gb|>Wxu$UrTXi3Hm1tH*AWkqy?^-ifOB|OjyooDy$O3!bpeR5@eQgvqD#k?5-6qE z_hzaw_=QQSK}$#6jb(}P7A#B6d$3$)y^XndgRz~eYk<3bgzm~cObNOOM@?4eNF5ph zNRj!TrB>0>5%0xvh4Cnsr6%FOmRTQQ z0COc<^(X;Gz(9ukp-f+oqi}$MO!qOYj3`?a_Lq7My8CGM_fWO>dwuYM$$ju)=6)!7 z`iIl|0NAc%AAB^~2OszP;D3Xu>v-)Cp#4NhO9b#Es_h7SO~5O9T|qprbiJe#4xs55 zK>vH;Ch%@pwqZU)ol#FypzPB$4Kj-Hx|qd7ImCx=`Rbo%l?;n2zW#YuEjG9tF*K+U z<`C{nN8`DP+(ceeK08VQxG|;}jc#MSV5F(gM}ZAc5^;k74c0W9;eP^fxy1a0u7Xh( z+1HxQZgYIj$d)+_(F5q3L>GdX2Tesj?~JY3n1?|L57TxXzF@4Wm|{9COe{<+!d!1Y zwaq5Rk$kWim~dK+%PrE^HH&oXUm&N~6mN*>md2OGOB1CrT9DSP1Se>#*0ONeq)HkXBDU@1~ba8K$e@5sj^xQVq;qtbs!VU{SLW zqzqvJ#nJ9o8$qM4f*1wbk&ff$VE158XC%GNM5HqR?9COp&V^^sGPOs_rc}-IE}9;$ z>a6{$Y-QW`ph5qO6SWW7bUWZVueiUvweBUh782+l-ObaT-ha+{z4f>;(`PT|JZ&%C zN>B6nzi}GF4E1fjD~OQ9yr|7dR)IjXOmN*x?d$~tC4EKn^j&Z z>Z+>1pH)GEJsua_Wl~&~)26<6*sQI!u!%bY*|fTv2)w+0hEQ9+N=*&Wd)TP0rkSAX z6EF)@)lw|#Nq;p1kyu4V)|AIGoc<=9pK2`@BlBtuCe4Bn44NSP@)g>k9)R@$-cZc6 z8N8uv&mju-2%`W3q%CIK0$MX^i>0c~f&VVnFg-hmGoy0bv@V5dLvb4zzGAYeU}14AY=MQ}z#?E4 zy9i_*^UB9HJxw^&!DCgt|s?+hHEulk}Ilg5L4u`_1ib~96#KZ{J=RWwyc$Ocy;pd zf0z~P3cA=D?_&5`%}Z8tQZ15|Wyc7PakdeK*VVD(qP!wz>tL~$2+Ux;^-D!Lg8yCH z-G4FI1-7edk8lfwRWZA@<0xs!L`BuAU{7~%r&i2~ikeEh9bwUXJ9|WBtTLc1O3j0v zhf@4lpd4pg$i8Q*-}p zBmg7)i}1UcWn>2M`UhD(&W7Gz{Vi@3FBl?M#}saY-u+Cx7dd!Wa!G{Cg9OL%Gut z>Zyg?^>WE}R42kmU6HI4tev_}Yo^o*uTF>zb3_$|;PP9iNh{~yys3S5CiQKK9YC}l zNm$ov_PP@4>{8D;e9!--7BCKyu73|yVyzt=7pu}YKozOfndhg4n=As+$T1y5@e;aa zqC(0WT~{e%QsvGzGC^F4#X@PPlDtwoT@iWa8f8tn=X(2C?AS*APKkz7_)cw1A+cyH^FaZRzUlIZQmPU|X%ItbejGJXsi^ zGJ)Qjg>OHY`~bE9(jtS*gd$>_ImE7H&9<#Mf!X+i&$X>0+nQ%v^Py|PXn|p4$RMBb z@Q@!q<7V~{h6?U80L>!UR^bAcSBzf_N&y;;xYY^~!)LeBM;os{M2w9zTnHRvwm&IE zaDN~VZ*A5Zekn6^myiGSu)CBZ#e9kYNmeVAK=tT$K1^-T}yOG*~6S z2W6Y~T$|8fo8%zWlAAoZI_+T3f5y_4ywsYBOJU6Lw~(L?a)bS5Xq*EuZ?9g+7V2g(o=<`a2Ob ze$pB0b#Cfx?LTX|Xnsn%NxR`?s&Kk0jZkOF zf%8L$C!`It?^?u$54E%mT$|VimhjGwoPI@)L88cp)}Ed=*{jq}AUk2QEyp_5rj(G#?wfx_e-{(od3pX8gF4+HE%W_xJU)PLnKvo#C`% zR;PqBZ$Ml+Q*H3L9>rZ-opz!)cBn_7idksYk;5%*o%oz~Hgt5@-jflT=sUbRPF>x( zjig2T3GF8zv#4J2yn;EtR7$81Qz_8@g z_sInP>@3@yYn$_IbH2?M*k-Y9F0>Je+jMMG+U645Txy#owpnVMz_hHituot;*=D(I zR@f#u0e@H6<|^AGStBke)jhqNE*;wxBV9KQ$H%6~G<7nib3Nb@E5EJ1LehwmpOeazxH z1a}a3i&Fa18q0R$b7(H#jmf;Vd;=!)c62u;z5eJ1OmhQjG9O&g>I<+CCiy`Yc3OQQ zhSsq#TS;H$%&ZKQY+A`LGjt#H^^HK<&n9Usf&(MDEigDNQ*i9%IG=n<@R=^fD!Gz;=x7f38o`I10NXHDRwgepoCv~> z)f8f-w7Dy>geX~UFDC#%#rWj|GEQ>seMs1kT#EPF9}WGkw)o%~f35n6(cyD0~{ zhaJO>xrhS16InqWW7(v-AiC~72l7Ih|# zyAn?THdK(~*5UX(1Z81O^B8nHZ7L654>#fEnU6MiQT(3a*eF4&PU~PdSH%}bt0>&h z$)<(KarFUzahHFdU$}i|?Cxul-GALbrCXETJve1Qb@$OtY}1}g7ZkHaKDL-*(^+;D zO*}>-Wv%bn^Q?}&(!FkYq|rg{^LZ^@R9Y{~0F48av>z?e=>(tjPqLF-Fx`RVDMUE3fu!}sMG2@GKf9AyW3NIpBs1Np<+Ea zRH|sep=!?v)9|Wu?k~RC-h;0*zv?OlX9^7VX+pS)Eia|FQvj#7B-u2{OxRE`Rt>lI zV^hUZF(B_9hIn=qoQj>@-G9?DtY^8csS9DU4QWUfe;!2Hw$~kbog{>9=<5eNAPFYh zAn5dDkOFOQS9kl>y#V)yS_cl};BFFJGWr0T1DK{~PkU=mr>(EqVL-?(r$vP|K>IJz zKbOK&9b1#(JJWD(9-iln6xZjcDOk8+3d1#^FfD*CPH;pcFbJe=bbpb@4Y#fDV0SxN z6ufPXbIQUF)wT}39ZKuguxgHXAb-XiJKbUIY`0F|15d{FtZ6ibm;fJ5w^^O7JPrTR zufy5IN&}>GF{84kqTJG%J^F8>9EK1NM5GUhy6TEB6b5kfGQ$NKg&BUR4d$?dWd$n$ z97^)W1(}IR0OYSRmwyF9P#HjvkZp?`Tjbe6Wf%!XZD5OF8xb*El-sPrW>th55+H`F zwL^7*b=(&9wz)pAURWeBF{n9*pepds8p=0waszpJ`PCDA&9mpsEdpmPIQWs(Si>$@ zi*zAU1JVXID<|Lw;E5qx2^0f};-)-8B82C`_{?TO%7G#j*MCTGcN~8CkB)o=5fSm&CTNoc=r`-c%O(wp? zErh5rlwU9KJm!_|l?q~^(JO6;2$_HfYyvDnDzaxgz#*e2K|yk|$--y$$~KRZ#4A7l ztH2JlXc7}dD1S}x{D-mQ;8>Flhgj3?8iRns4Ma%2gPPH+z(?ShXa@mMzONVY(^(%{ z!4JEAasL*-Z^(bjJ&fv{j_iiG0FnaP|zZ@}70tnx-I9LVnN2vOFCc~hvUXrmER63a# z0^pKW?-q}eHYX8OB-RV#q3BAGScd@TcH-eJVc$>~*oCEz0y~woSwIgdm{5%N_}y{` zFrI*00e>t*rVqfU0HRnoWpPwA=vKkyJ>*s+K4>N$&Lv05+j{BIqkt@}BGePz{V?C!)`kk*uRZkQ<_r&mJENpne@8=p;1 z_%T|Lu74J8vWAvdp|O+HXS+Ll)ZBLzqOQRVy=R4YK(_?AnAn)(?D{&gTAb*t}K2B2bjOTgB0;wv@nW4U(zSHVZYD~LB>o9W= zTBGOq&fYzpJqc(fq0Q`&Go0MlyOZ>-r0oO+a_>PfOKV69?&@{WQuhxY&+hCUfG2{= zqDA5rGZdsVr7D`1d!{E8qW$1;r5uI|P$?+e`+EHPDQ)gB+M%-a_j?bkjejiLx(5a= za_;RN4C6sos?znxn>&J=Ho##Pwx!-dfATRTU8;HtX3bDdrGY$~7zn$0HD6WD>sI;E z9~}_-55m@tSW-2$qArGD9+e2tR}rhLRPzb)6@+rIqFmol+<(O1E3W`Xy`siI&N`#A zs-`k$dM_K5)s@wA&fIAbM1O0lP1Q{XRE5>1syJ5bDm~Ho?CQmu+6rE|3IY4fVp!c5 z7B2KJQZnjdV}jZkAa^aSGGmnr-8Ub`c2X2FX&XTAln`{sTIq?WqQbW7Y_WPSgwhLa zYprdqv#kbOthdERTQu2XGa=Z;7Telti`{l$!Mq|^)Wsg#*k_ANZGUmOZC+uExGk;> zbfSnvW(k%DZP8^L-I-T`VfkuX^xNW?Ev~c0f7#+S5HD{)I)QW(3+xm4bk4=c(^@h# zPXw({xa?*Y43?BG<3X#Saj2vczoBhIC8a=)ZyzdQL2JiQi7&VlrvC+dhj#gb`+YpP zaN%V`7hmEF9)Mb+1%F4Jo}pGMHun(g?L#_@bPdt~(jd|iq@zgJA{|G11=1^#UWN2( zq#=gI^|W{`EpB8tGuC?xt=`Jmf~o+>7b3i#7#Rp~1mz@Op|->#1t%~RF@qT;k=#;Y z1nrfCH1d}b(kL*OkVe7z4L}-&fW{B7aEz3b8RZR7PG(l@_J4(0R%L@PgGEq&69W3d z44KImkiIe-QG{nhlm~Q&Vh4r}u&9U{Q8Q{q?WjK*hz6sfXgHb?&5UM6Bhl<=PBb@~ z7tN0rL<^&{qO+rO_Rs1fbqo{mgjn{+B7l!j(mdZ%s2rj1EQM;1L+41L!N`?+4_og8 zUTHbbfMwDEi+?6gSwZkzgP^$viQFYV_#~DxES7OBmWwiI$c!4d3=+8ow9xf{SVL1B z0Djn7Oy{}fm=4$@DyB;%CIVwkeoO+YHo0YZ7PFrPla}qb+?qIaX?%;p=qhe4fW)n~ zTL)0K&b}HY1IHVHdTI@7CybzBet@HPYf-xs?Z(n}lYg#{M4pt8`b&I}pDP&_RU8pq zszp62Y&1O2R+;OcXEoLaVkB&I*NsMNp&1>@JPokZL=F6IQ=6Y^uvyP*o=`K1HU53> z7Q{15WZ{bL);8mAq9}5=MQ+A&2jo~I0U7mP$d=Iy^Dv2XcM(-ja&Hc&vo3-RY)0s` zy%4=k1b%A5I^|M=mH}Q*nQZqmgjyL_p`&JfEwg}y07i}zN%XaPmNNB#U>6< zja4GycH*o=1bzSs>Hs6sp*mo>(d~9qc}5~j-G8U6FkQl}1xdNvLjd|hT;&k<&B|GT zU45w1Y|Iu9t5Y1N^sd*8J&mcEABP9^luxZ+>v32f#7rdrPE`9i>S}TXirj{(zCu;? z6y4QV;E`jma$n{6PNUT8Q8jS+1#lLgwNvhYA=Kqa9;PMk5L>d@eN}}avVVdn%z#Su zdVjVQBEKb2=FQap6TslB2b+o|4~R|dCM;L+n;Co@bo)=aHxqFFGzE$zrvY&rb8n+# zW2yrT_jR~2bjgLdBs>}n)!sW)4zIm$V53hDoKiEHJGJKo+#^QwpFkVmOs^*FL58^% z^?8e~&$GCU?;fVS7EVzUPb*H=u~9VeS%3H+jHpZ8!zu*N{w10w{2cBJ$OxX$2z(b% zq@M#?uiAK0mkDe=Uc~3wF5gMCu!=o^Br>E>eR$-ah&!B1+g4aJv6@Lm4 zt|}L8d<^w*pYSgFemWGS=dlxqKIm2Td3LeygQ(vnjF!v!#~Ao#Q952NAIJ`Upqv0*IR`3ROJVid~`V~l|v7CQN% zC8yjmYPf~_V@Hlrv(+Gr^IcHFnu(<+PP?aYMV=@*nzI6Z^&K{LG>6PW-+$G6$C^qR zT{8kZpZk5iPi>s zY3zQE+MSt1$rT}#V|BbLQ5B;F&72pY#gygAyiY*AKr?6Po6B@e#4;6Bt}N*eoN^jY z&ZP6E1)y6!Ew3N)n{p!dy?^3AGetyoCxviaGp!1k5l(~BPp>G+%E?ocj?dGy#?u|B zr_rIzP;#=^R0p0_JVtnpnVhhpB?ZlvcEd~+ytqYGvCjk9b9x%_HoS3PGBq9agq?4u7^1`xWVaycbjSw_aQT^cFe- zxY&TcQm_l86@UGm0N@WqCRX(^{>=T%G3#RZGwbkIZp2o4t1)9A9P(H-tDA_>>SrY;n!TE8BuNv@NOHW#Zw3LN585O#3FMN3Tu258g=a0rOGm zbE3+Fih)D*Dl|x5$iQP5-jc6tUV7s;csa=bi&Sb8(fg*w!3FUWVd&K>?*Y{n|48l( zLqc}yhJPgo!Ra>Dv%M^ns`!$|shLO0vq>C)>LJuuWld$J0n&ylqiR(xf`e7mf%&1b z4)DEL4U}>fgyyR(uL|gz;YMH+M=L6;0q~Ah#>ieP{K0};6ZDx%6IM{*AkbHu4lJf< z9xRVzk0Z2hmTlyK<{_XM9|E(%4`uTOHq39}dw*by?BHUX!_Q68JiuU!U|z;Xn>E^8 z(K)cqcCeYCbHo6#)eda41KaJu4x8_^`7S%O$7Yw<9MQgr=0QdKI$*OFn_X%1-arlq zehcm;mYF#OCI)NPP=sZhONQoR&r&Q+bIs6PQEW-;qM-}cUMMU%r>J#k?cN5TuT2R> z;eU39o?smbq=QIZNZm+RAzh8sgLDX~59u({HHZ%kWtHCq0|deLmZ%?lZoRJv%nr~= zK^rwsX``@K&ydBpLP=Fo#RsuK@j+xNK8VOg0Mo-+j@gj57-9j#*l0kaA~jSo!f?%U z@|+we+X*`sg24oxfMf0tdNdKHFh0p3Gk;x8*-hWoursqBvd|uaomup{J+Pp{(0qs{ z)^6`8n2|}tP>Sh{+cyT=F+#pLz9xf3!{kJMlUl#`B;|!VMP(+n$}A#2xMs`|_u)uC zcpxT988~Yx{nJW0;+1lA%n3e#c^XH+GJ^sOAEy>Xe8=Hh&aQK>LxoT2Fe|SZA%9F> zf{iBpYEJsf(ar94qfZT-8g+vCKSIU+i|n;cL6UL-wi3p#sY9SufW{$os(2`j8TDKr zsT+!*Y=lOR--6|QaStP!Y(!9Cgy>IXAhUZri)W5BWip%u6+`42I{pTIJd2LM5z!n* z$jpi3Z(@;)==fc%cr$sHySHNE$bT_Cyp1`a;__lZ5FPy;_?~$?*aX9Ul5N|Z`x&rp zze)ufz#4HX6f3pLTTn1m6Y*?^ZOMjHJ=9Zg!yFM>I>PCJ9YMJ(l6YQ-2EPjpriQ+Y zfk`0_=Ru3Ct|sEZ8NVf|8tMm3gQ3@%>$?x_FJTl0r<8vN%VpxTSS~jx6n{+Ae2PW- z(5~nT1iJw=?I9NVEN!lY;sKiobVCX{XctDJWvZG_P&MC=%~&2(ZP9XQ7dC_GU?f_h zwkx4h*c=s55#a2P>psQiCu#FjEP}T$0^KrcMey(m)^10`P;0c=UjLP$$STr)=p8JA z4vkhr)#2@!fkEA#dlHcwHh+$f?-?I&8z098bP(tf04zY$zbJ`v8M+0}@Ml>(Z_Meq zALQjt`9MAxP)lI@0it$z3bT7B_*f2N{Lnj*{${k9CqZ^_g0yIHQjwbM#0j7Qo@S#^ zA4XRLc5xDYZrMD<*sW}{-Kt`DReT}6!ysv);2?e?E+5&lkV6Z+5by=8ft9>2z9_LMv3N_d zF;v_ha96kai*qrcf`4!h0EQ+4Dz0q{plP-lHq5V4;BF8}Ksy51LOWtQttIw|y~G~T zz_HjT8qhkU2`x4^;ia~kpJ)5+tcevZA4}USVffgPsiIS#LgJO(q zADeV1gBX5JLj3~3E0q#bs!ew%lyF8{2)#soyQ3}i6b^yz-2e{d$9Rq|0-Pe4MXd6> zDGIk^wE6FS@DZxZUc~-3a(Cish8t7By|_)`ZlGp{RxiceLUEdwGth+m0MSHLzRSFP zm!|UJ*(%lfG=IU%)+A4#qsy@g@u3RMwo#*&u>^Nab+fKaj)QJ{Jc>slsubNF@fFY; z`kGd-wt&jknaTzx9^6wuD2YrsJmID;7)F~gdhHj0^E$)vIgSCsj;MwdO%8jY#-}G|L+;uaOlp9m3fyu02N!m_Dk_noG(!G!*JyZUx)EhqB9GXP`&8UmYjpWW7@phn+DjJwW*5g$wBa%Bc1)nHDMj* z{yC@>D1R9)?jGy{==LHy79yC$;E|3_aMFc)`g#v0H~h&1fz)1qYmd%5P1m+^GPA{$ z4lPr?c`mk*sV7a@HdP_#5TC2csUOpyNdQSGIPgL&x0C~g9FQD>Yy5y2g&%@gig{NP6Q z;6C*Pw)lW%-OSw4`RHFWYB0;p~mq^oWf5iDXH#Ai{|z8HO3)q*?`x(aZHwmEzUA2k~AuO2*FcBr)% zdz4-wI27zb{g3)pN%{#lX+IB=Si6u{M#BXZQR|mev=QQ2u^NkI~dZtb~Ws1 z+=elScEZ!YvnQ?C<~2Xm`=7E0V2R zlin(P4&)h|OvZ|&ks_R)E1X_LI(8?C)B(wO_u!KBQzrH0q|P@t?e6OXb`2Jsl>6lT zGoMN&E9{!7`ZFiJDx|5cjGg-fw&={oqsiOo270<_g)_s2h^t5KUvTDAfqz%p*PMjv z!4m{yW*GqrB%nNOLN zFEi~zXjMdS5?T&lF0?Y&gMYr2l&)5NychL5OLuv>`KAq7+xp;yv7rwPD9XVjp#3&` z;jEnK>mzqvI-uncQ#peaow>@JHk|GI3$m3eQCYQ0Q~^M?3cOH2W`)w;51_=VYDHyj zov5y;5vyuyL@nG}>#CvIs)$va>e&FtLS;3`T=1AQ3>rl51aKUA5`XUlkyKq>WiYvg zqZL&Z6+oobK=)Ns1^8J-UDf$~;6-g+rGU09gwMNCkXevz&MD0F&sCbT8ctd=(}E}J za^gK& zQkzF@z5;~mHZQk%g?}A{9!(LYauB6%wD~rhLs_=V=DTga#OBpDzZlSLd<8B1V3hY^ zj>GJnqMJb>I-BR^8W~41hTamUS?L@i= zX%Es~qqawJhNG@eF@GMdKl28T=5j41S1M20wu?VZef*i#J%vAq-ep zlGZI_32EIj!N}@oSw(~aiS4$AlvXZ-R#jejrZ37z)i> zlbI8OWVD#XC4Ur(_#dF3&jnNn{a{pSwOr(R;-v>f%&uYVr;xyajo8rP|IXaHK9Htbps}3;J`7=wa8q8 zy!pd%dyDOZqvKp}EdYuvy)Ou_R=pMiybLq5Wy9cvDt}d>2)Uvk`>=Qs$NsQ$-?^ z94NCe<5k2Jv>8yF<;kN#wFwVaojIg7D^Yzz0Ma%Gg@Nme{4G|4Su$#joJ?esYVIb~ z*(6|O5pry#9P@n}k&SHxB_yK3u@Mx6JW$OU<|5?TrSt5fJXkE^yWHJ6;}~F7$Z10- zXs$!fOMi9FOW~uzE(L3C(h*`LQFv4Zl#62x7?fFjv)dA%4P@T3lc1A?-%Bxy@h2;F z6&16{cNJamD!0e0)Lg1mfG$;zOZDkX^&uncbFZ0xDY&%IrHY_?JAyt5(zLlBCtiyV zK8~)1$UD9STA5NfccP=`<3_v!T|BY-mDJ(1`+rsBFPzH#YHX?9|23QlP3#^5VkD&Y zzlNb@m8x0Slb994-LN;|%D2~os+iS%t&}vAqJlH zA`B4jX%ov?S-o(PayeDg`LLS_7O`cCWieV1qQt_Lv~+hH#*)-@zP}R&tiJZE%MSM( zfqyR_V$BgZ#xAv??C>07UUZ?dbtLny^zyDw%PSgoHT&wz8t_>;+F91pL`)uK3c-K0 zyrOKNznvJG$_^%rNM3GDS`iRNmMfBis9J7oZR_mOtAH0@3wxQ~SPvcy+FEhWI;FS8 z^90ZaUvuzUH2X}%BWCx&j@BJ^i|0F_O@E+Zxj?^Y5`{nuK1qA2h%@wyI;Q(jD?O6U zo~h@`TKamMA)~32lA?z9>B^YY#(>JQ4NeQ}s2>7@a>7ifE?G7y`-~S$o~9&1Pw#N1 z&$yB3?&&<+J*CJ~)9-0|x8t4)5SG9wRZ|JZiJBOJ4zL3L31G>q!|83u2fn&m1Ah&s z_E#wFF$tyhE@XweTAG=Qf)MB=vJ3JHN;tFe8O9e{ajY4bnS(0=Ax|(l*C9{n^GtJc zKG)_&>f^k`wo7e$S)i2S!@>Rl+%i~(e8HR{eEPwoHfIQkN#V2R@%hCI7OLeUwRF@{ zs^wC(T+Xs{fWl#hQIF|5Ff{d;tbZ{cBElnz^NI0XW0vvdA^M~2jd&SNnzMmMjm9o* zEaDo2On99L^l@Ztbp;jSE^nC~A_9%g>b z*W+Ro6KXw8FI&3VEk9tW95;cIp<ucuWPciFPnq2(H6WZM03)9xD8S%&q|iYgl`8qISZyk{fz{gH zzN>Elfus5dpzP}I52`g4#gcVn`aCe$*wcB)b1K76Q0 zxy6UPF_JE&eDw5{t|EDV8@$}8@SyT!QwOHIv{MgFYU|XSRn|r~Jb&43=Lf5qh+j25 zXxO&RDrYWbN&r}41WEEyVm9c6Vk}(VJxd4TMnWvkuA|;>O54$g3~S3aXvUXlc{EvgP`;N$bWLO)6|d|r_KN1!;ViG zM{1R6%}>LWM_0e9&HpsA!@T30^$i$Y);ch&_#?wO8$Qu~I1LvBVDl;rHn~vaIuI2V2ObtADiZmQX1%*DD@{~XqpJr#KGb@wn@~3%0I0tV&%5SG zfQDki_~Ub?2SQ1nx>7?{`sr0qKh<2{ym!ZL->om#=zpB7Pm+t12IutpU~mq!C3iJU z`_3d!KT~t2_RJZ_*3@M+9?YXZ@mOs&ksCWs)Y;n4F%=exh(mh&f&5{|3Q}e0yMU@Y z(35B>HT~l_wbJL-018}1!Kz4ro6aFVwZN%26*j`wjtzKVuI=mZID2&CTHuK~o z+tN+}=zpnt6^*Ltx8}S?)#{4s7>LR1f*4fo0%7Km3C9l;&K%H0Vm`0*J7Cm>;so5h z7-m6TK_e|RI0DSxU>1YPW`Qk=F}?ztz+z~oz)yqn2)GWiZB?`QHpCLdw)VJ4qo@^L0V!sLgU{1lU)Wb$bypJMV$ zOn#9$FFG&opYOcFxlX=@$ss0hV)8~NZ)fs#Oy0@lo0z0+DCO^jHN16N#lb>etb4)(NX7VRYexJ$jG5IW$-)8b#On-h8 z{cp(+Q?=jC<-54Nhs(Eec_)`|;_`MbU&rN5T;9m#Yq%WZ@?T8;lgYm_`4=XiXYvnB z{+h{OG5Iqlf6C+!nfw8hrCg!LoR>7<g6w&*dL*q9s2@ z)xMw0`?!3B%ZIsqg3HIb{0NsH=JHcqev-?lxqOPtFLC)rF2BL$*SQ?ya+J&Oa`_!D zf6V2NxO|SwpL6+JE`P)2AGvf!i{3n-x zbXEGN@h>MQ}6WgP!j zIDJm9yg|t8g?xd_e{=bFF8_v`V9C!=)!r%OJA{0Tkar9DMj_uI0IL+mM4UKt&rnfzR2Z2xcnd7Rb91r3;8Y~9~ANdAs-d;y~2Mv=p>vP zXO$C46{L&Ib8?-1&R+QeA>S|L$AtW-ke?Cq(?ULN$)~7d_X>GZ$cKb{kC2ZE`99%v zJ6%qlQ#+-k7n}ko-?`Y?FFz#Y2Zj8EkRKQFNg+QgPIIE`>^@3CAT*iVeoe@)q7c+c$S+y)i&U-Wg#5XXKNj*wLVj1s?+AaV(y4G3%vctU zw#($0kfTC=L&&eA6d}Ke`sr%@QpjHj`FkOMC*+@n{F886ohzNS&IL0RHpjW#xlH~; z$p69fAmoceo-pKV4f$0|eub*_YaxFnU-k+YR|TLk?T=TU50V8S;aMe9VyV zGvq^te2*dTHRMUd+3sw^`3r%?^*ghH(4_}ulhfo}>l~GDH{{z4`DR1jWym`W`FcZ+ z=&F6hkRLYWrwo7jNkcwu$fpeXB}0A@{b0zi8*Bke@T;Glu+%A-`Q*QpA7jAL;jB;#|`GuJ$Jk`Ef%&X~@qS@(YIiJe~nOQfL*r$&jZFdCHJKG~^Eq`7=ZQ)R4b6yWL zq$xjZ%1?io^5drbkSRZC%EwIkK2ttq%J-P^UQ?bl<=aj9HdDUYly{l(4pY9~l((4j zW>cQl)&8z2zk~iU<)|sYVal(Y@=K=tqA8y?F z%KJ@upDEvI%6FLZEvCHNly5ZU8%%kdDQ`99cP)SU9jf;CP5C`jK8r3g<+n`vO;diw zlwUUG=S=yGDL-S%Pn+^%ru?WWKVZuDoAOapzSoown(_ftzT1@VGUYv{e5)z%H07I2 zdAliJhXQrAe`v}dnDS?){HZB_ZOUJn@_AGK!IXbB0l&`VmkR@-jbvE*AV`EEm9pEKppP5E0> z{>GGlG^K0Gznk)JrhLJa|2E|fmb~7Qw^;IKOWtA0*IV+lCQPo zZI-;%l5e!+8!Y)2OWtkCcUtltmb~AR_gV50OFnGLCoK86C4X$mAEDa&7izFO=Y}~O zy1z{%_nN*Wqq2uRZuK+)ja0YwAb2}J|n1x0^@ zxX9fR$Kb&f3&OMRPIAUIfjNh93Tqa@8N9 z$07tXX#=diz=4_|EwD+?un)Qg-}}jAMG@3cEMS`k2pNv%EQK0lKbXTD>wdjV*zo{> zmnQ9c;NAxzO+F0&?ngk1u&2!Mgr%z4D4R8H83z0NdV0VFMnpw=)i{5MnR@2L z_6}HY{2Bw&+%XfQ4sUPIz~p+OFn>GsDQIwl+7LvYn>oQW#FEuHV*@7W z@1bl(pjO2p1(F|4Yf~^or#RKItSQBwdv-qkE~h#|KMzZ$6gllND1%|>$YCNT_kcWS zQ*k2j4v2y3ssWs+Fjd3ANnU@8pjp+CsV$03bf~V$`OMiBcBDL3MW755WRryjvkGVV zXVa8@&Kwa)PTIjViNIU{WdMVzh{5484J0NJPDUm;Cq+RfNMrmgGaD0nXiMkW{>7RP zJg@{-q7oP%pc4fI0s-W6hrl=!nLCtE`|SB_K{3)oq(w*$5&)SCmf?SQIm^uhw1Js0 z^JJ4!K>aWv9I(Z6S~2Ap;a1pu=zTR90JDP;%}t`*PM z0qDUh9V2RKg*(heiP|!q?~QK29L<0`>^+zq)nc<|MkVzg_;`CSZ`{Eko ze6XKy-OaD==UaC1s}9@k{XnJl9?Trjp60aP(0}}z|I84GO3nZx>^+E~Ph-;}zqsoY z&)xCX=N@?5ubz19R}T-Z&feENg;_sawG_m=7;skh5PHk@@`N^QZrHJ@v1J>UfdM$G zsxwQ@)H7u|ti^w}BWUsw6s8Tpp4VtkXYawmt}`IodJp1e9HXu(!vIP8zcXh{feU*N zo^=4JKv06p3WPGKs|7%;N>o>ui&f>dTJlkk*4X_J4zEoB)7v>TRTpsxVfT4ozS zYpqn4Vc3ETZ^rwa;UlLuWn>Y)AjX6Aabj_DtibP5q*A2iNM#6#19UE4-T;wSf#=@G zn|LP3<(X&_7@=T@X)-c{*o03~W*B3IRc}!~)2>H|0cPcp-Nw${jaSN#TI4~Gh){Yo z))@P=7BPPVU?zjWOeV_$n8_kA6F}(zGx-V36cD)pGX=XqY!fo_55Oy`3!+wrIqLv; zs8}nQZZoZ-12)M<`&lblXF-D{jEX;I5tbM^eGA-$9X)IW7UM;6e>8jKq%wCbCi`wY zmPr)OKod2>&%%LIBBM^Vha#wl-gtA0rxd8}1`HB1(ElBXm z!|8fx=(M%qqYww_mI!4dCe3nXon|T4s1@9unwf2?t0!fCndnb6J4E`GF$l0$xV!Jh zcelTnbt~HM+$lMn%BsqlsTa;I6P%&-+7VfIRrNG$2KDBo4oWc%4E8nmYQAzU#9$cE zZ>xXe1B4JTU?o(zGHt3z+AX?}FG+o2DN59VKs)Z1;%xM69Aq^O^@2mQ@7jxr2!681 z`ZVVjd&AC+jV+aR|G!DXy<#Uw!aXAFb-O#^I5PmLubAXXYHINSTxNPYirYGidoVT^ z4?3Q7FnOMdr_$mm{GXt|o z`cqk!zHz289-QK}@J^4_lzWZU&zr}Opf_+hRt5KT(+^8`pfKPMD)}x{P*ku0G9G`1 z9c7teMj=^ZAl51KcW^FAaH09OSZIrU+khYX65Cp8TO~FFx%e_0P+hUY7Ax&gnQc_r zMs=WyNOM5^jS|B{211nOm_p=6CkVtN**Upz;D}+&fXTd^&8|SIM4}L?@D3NuPXZkV z+e~dZr=b_a5z0-I=M2*@;}B(bXtsZCA`Qo6)nr&$e5bn;Q_Ry5Tmv&qTkLXo!I5?B z!G|#mbT6V%@Q&|MlEWN!eFR?!hhN{y+?|R&+X>`<1(U=*G^ScvruA+ESHWkTp zCiz=0Ab)EtayS;b0*gEYi+pn>4BHkA^My7H^Ohep*|P#*_?sPE2eR!@y(@o5i*uJk z&RaT4u+@a6=(0=VcC;9D**1vsmJg3m_1ervzX>OtkwifIt6I*kOjw60dP;N=2n#Kp zy((@v0nJHhyVX#sF>higFHolyt(RrS>vff+o^Kr1-Vp5fNU zGu7U#whXZN*-e?iYSz)&nc9E76Mn5=@ybjvRc>8d=2JKX9&9@iQ0|?p+5*@UfYYm$ z|3>uO+Bh6Mb)AClg~`I5rK!T#5#=^$2LU2zione@3C13^YQ- zz%@f~b%g`az0{n`(HsPTo!*GX-(UdAnUrCjr!so>c;@OF8^^r|}Y3Wm&eP7|4VUe0+|aVIVQ)iA zd4+G%W-Od`a8*ce?81K_xIO!#-7RXkZfb7awy^~)82PG%?F|@2FKJ2bO)sE!R`ZVL zz3?n*zD!e!@7=t+anI(R+cw_#azPDrN5IiE)q!hL9iij_);2wm>DhX(thJ+KXFmdF zQ`9singKyED zFYY|n-g%f5pD*zycwu%d6uRfgAx|DPfHCPZ6Fq%>{nOcy&f1zoa4zl!{rF3)1#T*l z9GQKC2qX9sABe_ljv(w{5;q=5y*6hO%``-@9DH1aohE;_AP8zzAnZn9z-mPPg98;P zzv1&-TU|%da3_Wr&=8d)TOGmzme*C`{5l|YDi9b7e-Z8tO_!)ih%^?Bk+tTyVj_x zt*fJgsmFi7hg4l|=`H|5sJ#4qw2N>Rt3(sZt1Af-B+NMla|`GCiL(08FnBj-1l3PwUcGN_Fvzl$TUexk z+`_U!1a7jN1>_c%TTE_Yc?-!cEPoNXg%vC&x3EIEj)mAPxQ>O{>?K4EJ_pC@8CaZr zyq@ESiF$z_Zqyt25oW!KA5yU3hx9A>vHXAafcpz(&m%D(8e>*OdfT~0aJPmo;|BQY z5K_wlbEf=tu^cL1&s(8tF_=8ShvhAPIpoJ4Xk1LbcOH;EV{i zp?k5761a;I6lsWK4^%LIvlJ>ALiVUVP{ahRWl+Re39HqH-OG+10CKg}4@nL)BVm8c z`D4h{^$GiKKpisJ4GdmsBctzy^hYxta}{!c>6<18koU9MT5Lhde4z?WxNdl~E95qe z#{CHdlZO<)Ub~!aMEL-w8RoYbPH&>q^L)*iN3boJNATS++Ql>A(6l9kb!EbEm)ghz znF||u76?`%e5xU#c|37t~ZIV{q zmYZzLc5EwFuTHUSOD=JXOA160yV9#2iOE>NPG8*EqN%{=dI7yQ^YbPPiBRZ9Oy3PJ3qNnVDziTRz_t3LpOCW|grM z#3^D0btfCE?s;kJW!QfROSVvcz|Y`^dYOM}PCmm>`gEpYRBkF26CAY9NOfUlL>?31 z1G#y$tHL}DUOVUS&zee3S_rPlNkg7b#urU6ti{x4Dl9cG zqD$clMTq&4b#O9yaaZ&u7^|^=(yn;C|BxgwH0xzrR{1>v&{t&}2b@|yW zx+h`xw&hBh=?S~Oxgjr`Qnf^^Q|Ha8m|e%d3_h+`W|kEOOAv;RdSFY7sC7iBdIFdO zS`HvNAml6qX;Q4Q$ovq7$T<85%M6d(A$%uq+>YYAv2lN~ih?dYsoXNNd=Xa#*HW(K zT$M|m2b&-F$E>Os!p}{_FlRbn%EPYqlL!io#%)}M;5IHAgMh4=-Z9T7-GV%qv1tALn z(wObti*#De{JO|l_>!6CS64E{=J&z8*|+9WHR*-GpPXa!+*Jc$;W^b@Z`aph!M&+D zHoqx$Q(aqZepO+JwqbsjN7*fPtuN+eV>i?`+n|5GivE~gmRDAkL8?N74DAMeazR9b zDOV_R6U;i%fmKru;RtIbA7PvS(8wd>pk5d*lgy2={g9bv8$o84%(TT^b7tErvwSsS zRqUYAFk}0>h1n-NZt<+pLE%t_#SpoJ9;}1Vmsss_gaHbDJRp1QfQM$9e12uqz>!C@ zF`0jqBy$7Rzi@pO6EL850}CO_XZeUoOs-qE3$i7soqO76 zVDm0bL!1HIE1>2|CF;fD>0N*Xqxu1woWRGm&+7+`Xm=i;G6TYQDWtpkh0XhoqA!06 zbqlU6ZLPJ^z}X`!I{U|qS~}W5;c0EwFn48+ti)eshQb;Ax?ooKG$iw$FFcDu zPA19;IPRxK`e~)C1CFs$7-*}6fwq56xMu5__s#}?)nu1xfIGW-N~6_PvI7^T_o?bA zpm55dDlCjl5O8t?DU`Y@P~_I>gc2&Cbk)(REDRePfvG#N2D5&ux{xr}lB2-}Va$D0 zFiLc~I|T2OTO>dQwhqzJjopESJ6)+)47KtI@>AToE^2!n6n%4-Xxfs^0=^7h>SeOQuV(3^0WU~0tt%|Ii*Co;bBN>i;8Ovg4dUW6zr=-5U zLw#d|%G{(KPo&Q`^6}DYM#~uuNfFn|%>SD%)fty)>w-PK-~!dsRu`V>DZ90)1*kDq zJ%QG2uv_Yz#Q=_77LXN({R!I@TPb6TsFvdUYiv!8;GwWPLP!qCrUZY&oHuS+p)hD2 zVdg0$BiX`awkp|e$}-am1Ixk2-xfVg0pCzc@McuuxD#Tr96=V8t%{S`g_NO^X=H`g zH9Yqsy+2um^&1wPNqF?4C~esQxQ`*Ey-cFR#xfC7$B7CzKF_Z7R|s=`N~n2vqUtSK zQ|1{Yr^e2*?;vXO0#SdgJ}Y6oe^f~YoJ+@w41=FqNWe%dAptY3cQ!eJD#u?#b%fWO z0rf5E&XZLpyVT4w%=4=Z34#|f3&N#$Xe3#4U}R`mfvn`1y7f!d*x`V#z=GJWj3nD< zl5KwRxIdC}b1tXsAhdLKaF~ZCvAXIiI}suVgFw4;T*S5q(i(qD$2rapf`kJ@Fn&&% zqvo)gHhazE`LoNbYAiaxu9w~`Wadb)YwWlZpf^+2@KLvCcqDnk<;-(()EXXHdw#() zoiNjDnFCG+TqjE_2<0j%Q}SZdMM3T?)SdGncjmq?x>K=tFy#u`PO~s-;LpI`se`jq zTi<4mIQ0nSh+uyX(%NmrG`BSo)PhrsG-gXyzg!M00QF$xK{yp&NCgT;9def;SEU3=ozhyooip4m@sM{tIE=EP$5xoIqhf~QX0FK){kq97CeMQ34=H;$TcoPU_Up0~N zpyh9wNCf+lR*}^xJN*$N?`8o=ur^@O9`?r6n&%w-h zTEnMaw2s*}<)*lnXmFLi=u0mUmnuDZGTA#es>P}uu{Y&qLIMa4_QppyD8cND*DjM< z4muZG9As`oLa2j;&|t$wjm*k}1a(8%g&*N%y6Z(91L|9$Aha}!v#6M>gsYSbiN2zx z_{+qC9n=7aS;vern2~ZEQ1m*X)B%~r^m3ro5eHRb_M{UYR~5rqeXAXz3%F)JznE7A zYF@?Eyb^l51>wQ1By9=j{89v+D-~oF>JxuvrKpLy$d@f5oh?j|9i&?#pYc3niNAER zvc!Y&v223R_D<*olDCoo@~ON^DU32E`Iz4xW6M2xyDDxK#pOQ3wjV^U8S5mq;>bJ< z^AMLLPnZ1UGFoV8sO6&rsS`Cjc6Dt}%3fdZ;)Q@RUP&LyzaKo`@lLB)-m)ZZpGkij z!ot+yBZqqSUt<(!ZoBp$L>j86^Wee#2Me>&2RbqQBq0D2p9BcL_g3Me5B}~Zuhet% zOg)*gp@SS?__hxw!zlp?+;lWKbPQnV^r%Dxu2aXG*qkg?t+l~yqc1&Cm+E2_H8S0< z=yKZ!(!=pl1a(FtJqnYsXVZyfuQPwfhgd!Nz`)6LXzQubWXH%z{8U62Fea1=H-XN@ zt!nj~*X6TbR2G9+sYT3BmI2>Yz*j3sQuXU%b=X z*nPSdTn3ZyYH;#IQ(?490tt)O1N54GtW$(kJcFW5d?KNo(L$DEedy z2#g(Xd&3$q}sS391i`MT|b!A5W{w zEW6Nfla%V2*)4SWg;K%ib7Z;9m*j^~*BngBOb*FU^;T>?@TKx=$4Gp*f1p<$j*e*O z$x)SNtMp=K%Ra~GU}S$^=ix)!Iu3N!Z>lYj{QHul>E8IT7=?7ww+;*|RjZ42y=2HW zbKltDpoq;o#~IL}_=)(ypvX`{+)u_wlsZJuv3UAceJ5g@MYO7CDAhA?TeQMmA13{R$eni8Ffo$~ zdw-!mSFh7M-YZis9XOtl%=TzJp*MTxhNaI=2~`fR>yS=A0t674y(-D6Sf8jK$mUmC3j@=P7P#8LG;d=;qnp$qkZ zo{~-)(w)azsfxyzq6_A|Yv3Yf>4(+Jnw488oZ+!_KeL;qMoqs<_PH865w%u#q=#AN zR$r=bXttH8vl8_Sj!fyGS(EOP^-!-!G^-B}U80w=O!P!_E{Jf}*2*fb zb|Oe@*0zbdyc!^C$AG2Erg}-BMuXGP*3=Z`S8l_AY$r7&*5X)FhTKn=xzI)ZEtW(B1WXQsaMpPHPi)tu3|9YMQDn{A_Fy+pSI; zCNQ10`sPL#wrF#`%L}L%w?*BzHMh7BM_OxfTbt@!R7RVcT_K#1rn$Mc!6mMZysga* zt+;J%q;EqK0=KEDH9WIRox=<+n78SCF$XW?WnsWHH8&I}LTJd1mgSY_1@o0oR6&`r zV^)8aJ!sisI3^i_2|7}l+gB?7uA|HmV3H_^h-xSTVW!YSJ~dkGnWY{IK#)z%C7!v| zGnXwvuC>z3TP-50=3380c?v;Qj2u*Z=H;Hb$uny_6T6^w9#-qk1|`7S?3pb}*!619 z+Tukb%hs7ZsKYb2df5In5o_JySvx%wt)YKCp1IdE_j%@F&qT`gIwk1(GSBSx%&f7` zXs>7Xd1lhHj(X-To_VWh9`nrOo;Boo!=5?fnQ0FTkDmEf+VM87ySeV+dXTV(x!#H4 zh4J;L=U*9W+s;QAofhqyjW`X})}!u3a#^Cu<^fR6QJ?tjYl4_tr$ z#Pu&+|H|ca{TtVRaQzq8|8kwGur#2_P(UOFKh45wf7b6eN}s3)81cb@9Wz8OYMC_dw-?9|EImb z*52P}Z$f*M+MCkewD!KKy=S%eoc7LY?_1jYTkU;Ydw-|B?`ZG4+WVgNzOR41A87CI zwf95q{YZO1(caIr_mA59XYKu5d(Ug{7ux%G?fs|reyP3x*50qQ_iOF_kM@3}y%)4M zZmE}ZyY}9oy*Fy_4(+{3dv|K@F73TpdvDR+TebH#?cJ@td$f12_U_Z({nkSkW8x3> zuZJ!3_>dr2>|D0R2t$W;HgA7HYT7p4Qtb!IwC^3+r(sb$La#+AqF=aKkKV(9xy!+AnL=etDht z7X`XRm}K#qEk-da|BjTD`7cq}A&OL|VP!7LitOguHy2VK&w1u4#U`2(PykiST;sts=bM z)~2i5KGvPG4r7to+0kJvHoLCvFe=O)T^$D2GWK;COU+%~9mX=g4LIh~o2@ES z;09c4<;`}LC2#`)yYFUa&3L6Yp2FA)H2%W#(@^2|PISAwU86tX-)Uj|1mGlOY7UuO z4Jh2BLc<%I=nn4=8&I}SKqpgt^(c8yk{7!i(VZ-E$N>gA2-9-#70AK+cbF4Z=a5W) zlSmFL%q9;(0Hl9~3qGnSb^cxE#6&7KnJOd^vec=33PKJ^%%ypl1*UXFrxi{C!ar`H zkkEHa=zA&H=qgh7PqN8BAQ2xVc?pGJdqx-Xq=X{;oGK+0Oa~qMF$w)+Ldyun=%yR^ zmPOfrD#4#37&|BxkQGHtxqMxG5hBUlztkE%pD3fRKLhU(2mL_;2J!C7O^#A%BX1 zWx9ZG%B_lfR^pcVX9FmAg1HKC$}o@`w|!P|DJ&5I_^hutKxnv zam)Rm60mk2%>@h1CDA%zE1@{Mos4 zK|5&qzmd%9Sue;#R{P@?4~aO%Zs0FGp7It;DPw<-eVff-14`9q`{_!6T|No+_eAatDvO$Q&;gUNODUzrlYei8oXhKS@dN zRwaK~CHF{4+XC<7@!P$}E&qLlZ&W;IV>E^|%0#MqlxF#-B`bfa%eyw2Qmr%A-cQm*a3WPxI)M(y zlai3(hnkb&e{BAf{?wX$NR9kY5wnKBTpfQttLyMNi`m&<ZaU|E@|| z`iLmDf6q#w($PQ(QUCi^B07<32M0IsR ztVjCfAL(59Buf+d8=fIDRVa9Psls$`f&WidqM*tsuA!)ZVOT^H1q_RylRh-Dp|>zq zGq&OW-l9Zdq9|SyED9F(#uBkaG+r2t`Oi}+N{jkG@sfS z6LzEd2HSsw&GdQBzr()3R|WA{|1O&af{zM`ViA77&F*fge);Ye^knX_r&#e(A`vqx zp8v2ay4HBu_TObsbhT2WciVpx>-yXL_t+DY@n!yd32i6zeH6KwocWS7P0q(u&V=y+ z+y8*weMQ$5#@Ms5F6rkFk>yIVd{_rho&lme-=i8Iu?26!e~O~ovRX6~T~`^JfBbP9 z)u=ZAk8M@uCnV8Bg-_9)pOjl3T_B&SS|0rw9_@dQr(9(`RK!uo|2%&wcz;o`E&jAU zA@VH!oBb~nDpiiTt{eE0O~$X2vGR`Rsth2^28?gm{x>LOi;;ddR>xfQ|At>3RD8mY z-6OxJv#}4$m>o2~V~6~+gl#3wx9r&0rLlj58g=JQ11NuyD(vbsPa`e(U0b7RL`uI!Bmdr>s(xjOjO8CuVwbUA0jB+w z`yD*(XSN1*_@~V8f3{=S&@cvx|4n<6nf9CwNO;1@%x4aKKFG!AvLR*+w&yz0WLjeh zQ*ezHbY%WoP3O*a>dE_aJN7QAuCL$1FYMS`<>!Ccu{VhS%Upl2{fDpJ5Ikj9t;__NF_}`&+f|!00ak1|0sl__WCHA&syV7^4pjpr!#VN7xi`IV z?$zhcz4_cZ0nPZeO=}CCQaA9M5U+CFkvTDD+>ZL<3G)rOud?2Vd(yrG_muM{+*iAI z;=U$u7w#W;Z^nOpZSXC)uM52ucOd*W+}B6$#=R`OiiByt*B_Nz zOLX7<$eDixO2mK4Va=7efd4Vc5qO;a0js9}an+VcY?TbWPe>)jTnP*EpGb88K8bMu zaVHUBjpaweDSeLd@o92x=q*XJPL~8r)Ln7zt}u5O%iTqDcVW4c&&6lelk;M|Nc{VM z<|GQyP+V^r{udkoR|3&n=&3I{g1b^u#qFQd;%$Gt?Wq416{r+fzv{$l$niB*Qj!04 zCm~vii6Z^ANrWG#!TJ7QQeah(+pzx)Cs9O0iu}K#5HMDv{{M4gKQs-0lB@|AK%R&{ zCAWbONX}_h75XXcKT8)(Kb6%wq$51E6=j`$&WSxq0cVL%I3;z2e0!#^|87oSe<$}= zzN>%V%J-aDlDt1~5}`@i)%ib^x1A`IPiA3nNuor(f>a@|;761%FY?FAkNH1wVjD~& zSmOUo1qA(nz@ILW#ps{r6_SXN|DSmVtqYdKHprWPeqNfH2l>P>2INysYX9dHn{dj% z!At))Vi*y+bJJ{V{>zz`;aecx@JlE57~X$>&ns6w`&UxrbRtAGel2B8tI+>(WJ&h_ z*O{i{wIZm1POevFa$-a6#DBp_DCk`O92i8h&2jzP+(eL$plWY&6NS9PLjO)a{Yw+Y z(rd-K*XTplYj?ScJVNtG{aGiGH&y!JZ_fE|brZ#e#rT+o{JT|Npp>W_5h}GL{1JZ* zzE`9)isVCB!Xo%~mk;4XB;PCuc~3sX$F5l7HWT+AiF=}$fo3z zuK%a*gv|Z^UH&IsmcM8HPmyOACxn03&|jZJoBZ|W=Op5}Sd+BxX(^FO!7+H(uB;^s_Fp3Rt?wEeHEc(noe25r_G zfWLMpcbb>K?hf;sJw}-ub%WD##yzX*t`VF${%|(ZN2BLWNSbGzW1#EcdnudjE7n2z9S7}EPP)YCqnvDs$oBHrzG@; zuAJ(WnatiurqU7rC+rZXqWLuSXW2T(J}g^}tK5I#ncD+Dcm02MuQTLX|Dwtd_&-;^ z7duH$K5xF=^n6mj!wmicuQh-4Z?5mVfMaQP`KQQF~+xdZE|KHu|L_l%} zWNod%h*eeW@ed^cq{j_^h&^w_|5vc6Cre+)yZA46dZ+n{6R)L%%Z2>$O8WN&`uBPB z4^88?fIl9PfwA7dP5HdX+XEAmRZBluWqknQz&8N$D2pjm%)cWr0l9xB>fb2|OqqNS z^>6g=3NW(v8CBs&ppU#+elX1T`)|n<`_=%%b&<_B`AHd-_XXt1?>3DGz$>`Qd@#VS z?18`?&-xE?2xas^(FpnP2u!N|7$vEVn8Yeg|Ehoj>v}jaS^XZf>j3BRCm&KX{#}9W zfO=1$`>&<$#A3ae75U2kLRh>v3>N;%7+~P-S`9$gn zRG#bn$ED7T18hk@BU{oBt2)zLAE(Zbo934T{zr79`y2d^X71|!Kg!%S`cGx<>imyq zJN1w0vo+(HPP^X!gmmE+-G#OOC+S!Y7v2XS@4vzSH1)k+QFebmOED9v8>EIS{Lk?t zwW7aLZO)#SAIqU&JVW9m6RG{`{d|#P466TS)s_CA6Sq+n^i}RSRqbbWe$M||=7(Cl z{!)HamdK|3uX0`ZH&ps6qsSp}BCx}s;^&QYWecE?FA*IxIs0BCw6<(-QrN#~X?EulFCNR64Z*I)L6Scl9{y{l_GF z4HTfq<>tEnYX3u?`T~7ep0r#(Vht4aF^ba7{gX^{KY8IweuqkaO0urV>Na_P5kii` zso~o0q12Faly1{;iVczQ>5^}u!64izrE&0Lapivm{VOYlJoM6#qEyzm{Js>IXcd5X z7shsznjrd!SWa@VZw^owx(Yc2uk;>;!km$Y`#(Z>mE?e+G7qn+udiFJ6c`qU=DW0j zWmHKQ?Hf8S@MWUdDZZAk(dwNcpj_jpdWVKjy)B6KhDlQ; zQL}$-vwHWXftqDY*sg%qL};`1MReW_uA$05kXBu^b!Z4duj3iewwDH5m#xRFmY8t` z?Uz5deHl$$b6_rLR}MGpikDvf6OvFFkf_ z`#>rc)~Mogn}O(>`*PEjeM6PUhej*=5mkSxOrz;jnS0%pYN`Zu2P$afxqyJb#lV__ zWtJD8-3TwPr(RxSPG~}hdZ;G#jrEQeWFg3U5Cf#y0bPc9OZ!Xj+H6q)UDR(ey0ax@ zDl;1jaQkmxpRK2|plrccjtz~9@;72N$Kpz9v8*pC7=On_#dHs%HwarEPL3Q~mcf5% z+kU~=$o7E~1AWQL#Hq?!5r5SaDvRwF(?EtYMv@{jn}jSMA58MbM~)Q&1&ul@vX9qh zs#26~^h`D9BFX(0bF@!YFHeIrXN>*Ym6ulrIux|BUAeI`93LF+j~^I%RdPhY>C8GS zezSSfI(akj-8$cIF#@t#Goq(islb2Vq6HfMZXroE#L(J6?yGO8EttD#q!AAzroOeI zP9U3+2ditW4bRMb0q$!>maDPZX#z0MX$H~RX>M$54Croin%fXSYsIiTLRR4IYjNwP zJv~QBJc{hLtm8w};$PJf8$|J$3NIHKB`kt0) zGTpVxt_O&Fj_8;vBgnw+Vc7$*CRETx^2$4QN}DYl~-f zD8#)Tp1sSnuJNpW8R$I^p`@D>;@(lux;0cSpnG6M8)2^qjA+9H4?0o`PoNxSuSmuC zV%$~ZsI3%TKEB#4GMdGWw2ptbSVfUY`}pEE(<|CJzS>xE*f66-*K!Ij|Zdf|woZX920Cr#$`1J9 zR=HA-DHM?dCr?BU+*KlS5Xcvi1Ft|t4uZuZau8Z9A_w8sB4ZE%N-uwEMq?sl0Erre zyQ1yX6otImsx<-V4nG!swoQt!2^rQgHi>@CCPH?x5=JEFUt!5Z?@k{Rfe$?2{F zxMj1-7?~+U2)}=0)3n43V5IBa7A-*{qjKEqdV1bobzT5rT%Yrh3|o%2@Q z74E&Je@e>7_)N@vNZzXd>Taug{cbd_{XdxKD%7Xc*G}&AUq30o&?@uC&54~N;E@W9 zdl3E2Nx6aSZ!)f?Q)WJ9&Yw3o2Hs>M@-ZdV@b5IICFy@%0EbJ;w;*&#LPi9!4xoAb zATI=6*T3785i%{j5iVCohkvgroZ*1tV*B^O&`AWOW2P|r69;N97(Myj>4<_8x3}fAk z0l@!c)OoQX2F~+lqxS)7+!TDm^gm!ufx-?~I_Q5tq0)q6oRQ)E(^o*YhfYgh&iqO_ z{)eP8;JHJareg~%hAn;jgqeeIcT2y(pnIIx$*SNbyy?=n@cSc~t`6v~4hihw!!og+ zqN|@bTa2fu(o*x2(xC{v$&C55=_|NFMIiZjt`9zesE}DAW9?65tbJ0tL`}I*(e5eL z;`O4zMQK$5{twMb8IxU$Eoqc5a!9rc zsE`1-EDYsPSH39~`U!75sP51D-_I4ElP{ZQnmu%)aFDnD59ZYLbu#&*HY4(@(t!vq z(Sez@e!1~;YPs0_SJVHw*}bGHI6<`@*}cSn9AEORk0cYnAe_FSTGxhvhX1@dF(o~4 z*7r?Ts^ag^ZNHGaD7zD+ohGYycP%y7`~PlE-v?l-aOeM%Nz4eym(lWHB-o=8{7OcU zg4*<04fq}lnGN}r=gqzLuTB5g(*EhLWvZ|LhcUx&6H592Qow#GAa*&wej^d4ig8@3|gtv1SzYeOjZ?-0<)Xl$| zQ(sI!N5)0}gB-^_)@0XmVTB-!=(uC_=KV_63Qovs<9;ptBwv)0LzMQAe6~_F9!GyG zSC|i5{=*`Z@|@;wzRMz(R8y=ql_u4g7Ez@_Mco>vTZOun#g3~HxT{^qhsQ>Dg6KIkqN!M7ilk$4HVr^h zbJMtJe5FT?k>8C%ZuYU8=RX$O)T(Ucd3CChDv9oA4zVvbKYvDRw`_hm!EGwRDyMCfq#Ngg16@o#x>jwbu6F5Xgq#?!E_36KE8%P*c#`Vb}3ZDO)rf%Y=iYX>rI51p(v+k~9xsK|w}DXT~h{oDxx+amu~$VlS}7bC!C6WnQ4t zb5?s!mFKJ{+p<#A@f^$y)pmWDj1#dF#ODA1_((}31b;Wt{lN}5|)#2kqCJ&p6Iqywg?a?(Qg4~oD&dG=t{Q5(W;Sr3SB8? zEE60C*s^g?U>Mk#aI=!rX3$@SBwff~JpnW`63A6l&XMoN5P8>1g=5BASj!w^FPlgO zCyRMISg6FpQ7WW=Olnr|;C!13rowkT=hwjHnJSSKwL3V=ih0clJAm~*j1^a4A`9|4 zK!f-qHK{VYV%BjJg|#BT24keV%J#|}&;OHKGrOD%Wrz+7^F%4H`)<@Zu-w!Zt2@(YP! zzy<$pwDw6Wfuz!iOX~`Ekg9NesrHZCcXS}XrdaqYitxr`g zN!5ZJ%`+%}R&Mu-?&YcFwc^NE*P^}}FYj-Jim?DsY3HfL$Uxs#XqF@Bzm6zQl69G3 z99VY|8fp8y9EE$a8npMw-k$Bd_IB<&v}^x9WBm8aQrbMPMtoE?vn4z@Cd62Xrs-gM zETJsw2|VV`N(^L9d~{@g;G}uVJ2jL_@i8z@dMEXrGnh;% zwQ(B~zWM4b`d?7xJ~;HMvh%A_)zH*hev!Vs^oPIpB01Z43=SpYgX-gXbR>Q(_W~>C zXK2qw$!Df;v>(0YepKXJPqr#m@ZIw>0AM7Hy7})pXXg;|bMM$7T#v)qqPm7gR8i`y z9|A3Z1M@I+U?}%2;13vN$$;)eS1Cd}J@o9w$odz3c&^B7_00kEmdx(O=4IRLD6CVb ztdl1%M&rL|(YbbQoi!BFLt`Vo7qtv^URm>A|9Oa~1$(k1@{lUHIFXrnoySK9Mv_W1 z_+l1y&U+X;PE}Ri+XeHUeKBiR=M~dCA`tX{xlzLV%d7=OJYZgZMSWRMBX0CG5|)Lo zLCJ-Bup$?D-f$8A+^hy{d#MBQ0)4m8c1%>rvAWZOl6X@spl_%$ql4bu3f;f8p`l=2 zH;76(bpM9N=0z8qYA3Gu!*N)d1UL!>Ba5Hy-tNCnTymyP) zv6X8Z*LJQ>t}d<}T)Vh-?=?I2;qNzp^UB#_ISz`29*TcXXuoqF2USzhkrAK_k?t5bx1@A3{3~%%Z8a7VQ!U@?pVFxGT;zR>Dd0yOqj|=T8 z7(1iXU-E;A=gopp%1H3 zf%IGyJ%)wJydm}p`NLR-DLCmLMYvXqiunCV4pWq)iW-1cAVo#|TS;I(B|CV9ix7kJi(bfdH(T4-gGWcp2{<=^W^zMQssPq zxatLzOfuBTve+yAS3=myOB9?=+0t?T2-3ZUh!tCBQub-dkj?~P#6$;->VV9zv1~L2 zsPreY1!Mz;69v!kNCd2{GUVs|lif%VS1o?D%YmK}!@i3d1-sn9dOwv2 zlOvo6PnEt8LPtCi$EGOayz9L(**UeCmdHZ2`@vmdAX5!>qI4fWFTB{R6e(%7cN=7$OLAGtT=Sa0x!P3vt_VFC4mVny` zc(ZKPY|$jR&80PO(*(r@2RO|{7QDBJtC*`qn*26e;F;nE0R)iYE^gQnH{#xdyDo4q zZk~6a>E8ooaT>xR?>hjcUiZZns*RTgg>s+px~(Y^#6@+aHxz?^9EG`1h}Sl=!HDDX zJ}@CVRr=F&=d!eCi2otg#`{!>!Pp~uPKEC0xdq{On5d9urd8N~fKJo%N=Tg#LU~lP zA?&|HWsby-=$RD}Za{JLUAP%SjVN&SB zLXMLu7KITY?Z|_F{?AL3G5sDDP=MyDM8sm~`3cpw@O_kec@gG)-X||L#$0(s7D^3I+q-JLFVym2ktt&$2*^))PY)I%+Q`#NL3c*`CjVFIrjhQz5(77+d@; z-346*1{wU0$*!0o2W3T7=H#!OE_CxQR!4f%^><7olnOysUd~Q`P5k$FGkzpC;9tXCE_zQ!wcYut{MzpFRJn3QPH>NEd*g2Ry2Bl6N zXFZ!UT8_wfUd3j&L=G(r z?dt5N+D5wxY#=ewf@zOt4UY`Ttyb`DY^*ef<>4A8Y!*o}e3(#9F2~}dc71It*i#w8 zs$JjMq|b(SeM@Zyrw{U7lf!u@1r4t$gUD=u1C?W^M|$l>4Xrb%cE)yNL%krs4eIT& z-Pl|=%ZwAxjLhnW7qf-5n_AkemSzDQwabdj*9ii+1EMfnMNmgQ1viZF2Vx&Zo(--r zVjtxKWs|jBqJ%$I%Qn)vjGbiYGQkYx&tR#*j|DM3z!l-j<0{}POlqNxK~GywXb%0?^u zQ7Z?wYpsSRu^eEPg_Pw0psuukVKK~=D2l!qYQ@$O;$nK~;JmrYv#ON1*kaE{TU?pMgFeBTT=vH)_!8(wCw~aHT6WuB& z%e<|#q`9_+CJhRvAJ;=>UzmS<4N^=bgtFsngGR)erw4J^kM)9z7ONL(Wd zLb8C47Z3-4iWtNc`$@z_j6%N{-2iivLkr;JC8Th&Das^8%qW9wuTmgi<@$?B0ZNMF zuA~eglUajOu7+7b`v!i0G7>fBPQSA1oZ3E-P%xNRlWGD)1pT1(|fbMn_DJWj?izd}@I>as=WiAjBH^2zx@H zK|)V`c&qe>*PQ`43d{f;c^cq|v8RmjzR~^*eSgd*p)2=c3#iZ=TRHxeK)L6tk z4rY4m@)!4Ta>!BRVixbuFJE3ow*N26|2eN#o!iuZi&|(kLa4kB>{Ss)N8TO8)%wP| z$gBoI2(PWr8lr;$URx*osoB*bu(dTzVCHGytJXGLjJuULr;aaXg`-9S^;+B9BBz}Y zyOx#ew8Pm3Buys+-w95ojgdy6DY3D@9%YGVFY|0@<*Phw1*5q5CWZtk{$8kVzZ=_tBk9hYY|rk*HW(KT$RXUt-)Vw!qMk=6STH)U@{GR ziy)*v~IFeseQ8YtQT2-awVI(zT2!0@1`ie|C1PXtcEFUvk#cY zD#|7?j^g??tZ8bclTUsfD;)$Hi%&kQ_{=t-8EH1cfOgYi@Zp68FGASL%D3c&R)g6T zwOtU?uWF67{bk(+nmPfALbeNeq|_2#e{xY?voa1?1LqOrfHl``i;rZ?3?7hgqGmdO z^Hv5fFxuys6+A!Zn}2Vt<~epA&#MTl=sZi0u59Pi(cylO;I+}SbRdbI(4bh39!+{^ zThSkBduZfnFfo9wy1w`+cXVKMFlmpC3}$EHOECu-+1j~d*S_}awsjobKFca(sB_R)d8%8IX>&k-_|G%n zlni59lccf=OqXW*i*2uwj!}*=?dE0=Ni_Ks&)D@0>rNCyp}}J(Hz_k5VTMzN_U8?x zJC6;Ip32KAP^nMcflGAt1zJBca013~`$fh|<^!6QV+*K_c6!lyf0Lkz2xUF zIMl+35oU&gdCOegG_%*N%;=_n<nkSp9QGvO1!3fIl|Oq-J*{6vq7APemOO z`9_&ECCB2Y5=pHhw=J9D0x}7g8iJXZFl#m{63yP)PPPx3!4kTy5cbCB9@Ut+KHZ<++B&JVo^=tf(q~yR2+Ou&L}y zx3l~*r9!7*!9C%Kn=ZU{tuhAz1PpMcGG}6+ZJB2(Nk(^_7ue|8b)Hr4d5xae?0K8L z;1y6s6vJI1eOp^SYa8b%QJ~x7S$hT5TOhq}@T`}4Zm;L|g?c%sC810pFBplgA9w6P zdHJG_@oM*SyPUf&xiiau%lD0k&E^6etO4*kL zJP}vSnU{@39rs5fldn#9j!~7{n5>tLNev7YhaF4EtrJ6S^$hh_zU9LSIIO}hi z)>vTGgf7m7UXCV5mxr8T4Z%w?!LV^^`MEUv)Aj4RgVoEY)^!E#J7C__^J@i>^2_rZ zx`Ek*^dk3-#H`GJ#032&eyz&<3i-{6kYH_~VW-*<7BPUXaJIrNRJe`wYclD>emlR` zW`0Hd&D~tnl?jwfgm0P%Vwo-kM=`QH5@wfWiBY_d*!1<)ihJ!<-q9O`t7%*TjtW&!edw!mxDxty8Id(Zp(2Y|@5*z!87@)MQ3|!}U91ry5ac z{C-z#IRIL4v@%c{Y=+mvl|o$!rKsu_QFDMs0IN&syZG0{e!{Q433oD;e_EcikHnI) zb*3*eA#IXZ9D2Cc>7czm?!^{&^FsLa0ExhEx z?lMBkgpY}&j^l3Ooejyxz1l#?!!>a(w{W)G!~QUTf(%pBY5?=1UMZzY2UXq?qhL6Q zMr!dLvhB9ec6vy(okj%!ve#ug8KdYpnP>>^uueU1?zCU+k6~O*Dsh5JoaAkw=6I^R zVrqAVIbLzrf3=JPC)TEz(Yu}3_^%PYk{Hc){Xa;!)orT3UOQcVP1h2%Q+PT4>rqpa zAO5RBS!RmH&n~*l`T58a3asqHsZu)_&18-Hb2+vjCakg?iFvF{bUyH6&g$&q$ z@m3R&g~`fdu+|u>=G`WGgVgQ0SfLu2`z;YYIADwDL4$K2?zOIn0~`!IfP2V$rwAip z$8j;HrSCPn16A(sfGH1yKdlG)1IqVeYh`?Yy&aZ5N^bJzc=4bH!qrxqZz2T%qOTgV z51P}}ZEApR=mpX(kO&14S}1>-wu(rA%HLIJlKY)zcg5}sL)wCfK(`=ep>5Z-3=A+d z1?4A9a`p2)`X|u5>gRj)Pb2g5efp=2Hp%;bT9g@xs#AH=-KJ8Y;XRiAj1l*U(3Jvz zHqymc)6b95&vcR@s*N?KxQDFAOtku>V=9Y9Yv}{DNxe#x|E48ay~z(rF&S)a8!7Kv zF3ygt2o<)nLkPvM=w7Y0a#p2Q)pp|uN4a0f(we$;mN9x^DPgrg$)4P1ZM?S+v0oUP zy+O|sy*6I}NMp_}XW>%b@&C_>Zox`_oqxJhJHb3~FOFkhZ9ri#T=J-wJ<|pDcJAGO z@WvN^9d?Io|rYS>FT$X#lqx!{|4QD-tagsF2`=1^h|T#OF8DK(gXJSmh# zkse6T9NaY9z-*s&teShAI&z8K^1_W!FY^NLD08Ng?RfTF^|JrdgBGmDi`lMY4hZu} zt!>K|Ea^hqbg}W&1jYnbQVYtKRxB^8EYqS3@EM`rA+Z445iy2x&spNRXb!FPJmeEL ziisU-lV{aX(2e1J@_N=!1Z7L&}bm}IUJlgw+JW)KS87QeZ2 zJVZrW1PdV$JE-;>>jQ0nY<_Jtgilv*I6Ylm%+^C!r#<0SmdKuPb8Hjtl?k^}p-5lV z9h%x5GF4GqWOLUQW+T#)$Up>4l|8}7d8?$BEzdT3s}&2TZ_i2m&yX{jBD2GK^yksUvOZpL!V{%q91?}j6j zea`00bNH|nV)p!~Py!DN?N3;%IsTw`Ac^w9@ln(=vvGkQMQ3p^hj`Le>MFC0#D;o$ z(Vj$$CA}#7p!UpzYBK%|FEbmFD_U3^vhwJ)Z=r-)Ig#_9Lan5jz}PU0YVyMIb0jFT zwNR~+tTVzDbEC+AxY0bd@w~QwWQkJew>zLo%=XD+gEsuM z7@RZBR_huWI(Ea}Ju@u&9ow?hsDPdZ`I(LuLS0>5{iVs1vt~;M&M2kq6w^*GsHfj>AJ^z5Sh1oBV7SZc>$V6@|P2^d$<~J2aL~ZXbHp@mL(%siYP*VDfl! z#MyqZW5?`NdxuUWZOG_(vvM98&hJsr%@%W^*9D=!cQn}t`qkXm;i~F{2hts5qeDAc zjJzGn_-lHm!iub`)Q7!(5*$7`3WMR8RD|jl45X!hPKTgBs+uc%fI`z(zhVrh(WKUr zRsr6&ogMpjbZ);a+a0-OfgNn7igTLgoft?DV1Tvq0vR+_I8&!WZE{|0XJ)jr3q&tH z2?SoI#nl%mBKyqqGUqeR$A)|2DS*w`aUeRz%-Mx@Gz-g$^9q`q*iN1p^?KvSw~xe+ z7Ko;QGz%-DXKHUQ_IHmaZ_wV2c}JD<+~J`;LkOkhWmZkSxLl}6C2l~@jR&gsI%`szD*YIb?3D*JL%_+wuPvyHkLH)hWci^ zp{XIek3_Jn5xw&^Z-<^h=$*IOjcrZng4bbxRS_B5wpN7Bn$bINvRmrv?3Ts`yQQ_( zZsoqUu?g`rG2MwSlNiLz*y;q@45OIPTbt0V04hzhum9_iOL3Iu@G4gSXynXmsx_svlb^^&H0uh=a`Xn)!XO-qi0rUOikL#)Fd=$yTNmRn?tRp(3-EzzY6#2{4Ka!J!`vXVp(#R7?;ey z#>>e-w6`mdUY)I8f z5337yzh@8R$ISd&DEydbANTAb&mQ*dS9;i;v|sJnx3L|6Bav5m_AP=q7i#u@LP-yb zg=al(h8{zW&BnZB> z9~o~%tT-`#oe}C|vw4)5)wim!^!Ok#Czbn}@j)qj-5;2*eI3{9xyDVL+r@c5a&U0-Y(8N#Cb@ZKNRO-ao#D; zyTp07IPVeXz2dx2ocD`!TAVZDJR;7c7~8ZyjFrtN&5vSd(|qky68bUIJbVPzH?zuB zk_CpNJQHyPkuz9?aXsV=5S6|Rxvs@qjC}}IW04Oput6p9HYzVzs=QEtx$?s6Rg#FO zWEY~>Y%x|~gL8?B%U`Cvf;|)+iI}l2?H6vw$C_bLlm1=2{~*EyCHoH{K2Un#AOZtr z2M!@3P=4(}#4i_JdkEswVk94eW(6R7A#=&WIAD598w5;m8Rqw*=JG>v!1PvZjT`x9 z_qicuVP_(*zt!8*44TF?=qR*kY9 zfGHi3a;&OH;-PM$st<{W`ibtq?tsw`X`hUo47}hhaYvDJ03yK)ig;wZ9PwgCyMKj( z-@8(d64~?+;z1Zt@($=mdcifM&%z4`vVc2TEF|ci=f&0~C#yERa8rAZ~@kP3yR_*eeKqBcbG7!|j{oc24FyB?K!ZQ+TP8 zGpFNA(cx1CN_uGKa|;xWzElNf7=RwENR^R(Ih1bRV%WC5pu)hqANntbpumbVgf`xU zxdJh?IN4c$X|9LDJ(*ew>tNOR>SqP>E>#7D#XHR@&9?#JPI_;uYmLdocn_IUYpXk+ z>|Z1}cHQf$w{@*EyDv*!b|)4K-mgMB3F%)f;C4iJ$&U)u*5ty5TVBb=GuZ9H+@pjq$0Q>7 zbE)+wieOv#AD7$i>Qr^=@`==@t{Rjj#R8-bs>P0x3i?DY2sx$(74%87yC$2jQH6X; zx-){dbMR*71Xd!M6xSJ_F~vG$s!6@Z&zs%Nspb^&&#hf;^y(Kfzt{YST}7hSu6F45 zU*v9obCCdcec9~3qWjA3D^pjduG)R2*>we3z9LVF%DPm;Q?MLa>wkS-saTGb$tT>F zZ^-Ss_|=$^BwHTxv%%}gCU|jz|JJ#MJW(WygMZH( z-!_@r-nGqSHTt3c)hWMR@Z5CSVr#NVJq=Tn${5=}$Y z+eGRbChvwvPmjSul+>8COra9U_*P+m{#z~KsOG~c#y(}0Daj<~-4bjl70`QtStA&0 zm9mzw+@fOKRUkAq|2``bpeKsglH&m}QOOH=kO%0I_zvs*k@zsFT=g}0r$xUNI_yAy zCjExhO8U)_etS3lGisj3U1XiXJ!L;4J?1=R`R}FhJ-WxouE0-T7(1>~j{*mgb1{S|z>Q9^ z4CgV62BppfDaJ)^9q~g6=rGnVzGU7L7eqy8{Cn ze=fsK$#tAoLwG}dGSFnlO}J^{*G;XdiHi6I)s94NJ>(9moHF%`p^+}l!#bo z9=qxy$w!jC$rA&~?IIR`ktDee%@P3?BpM*32lCxaAKDF#jdnACR09x9BD0=`bQNeO zvmY7CJ%}T7oA7+>vS?XR*E5>U_PDxvE173+4j4pOI*^^e$0K37QeRYCMEs)w*%EUzah1Y$LG2 z+*r-EiK~XImaCqBtI4deK@5k*;F?>^at=DiB85d_ZLy*VNLz|eWG@!6DF-f41u8GF z9yn9j&La7;T1MW@=DIi^Aje#OvsG=!Wj!z*$9Axaio&m z)di=gPAl1`MWUqwD4Tq4D&!t;&@kJlWz@w&X~!9+Dl0Nu%8;=FZqq)#?JyuL! zt`XacUHOLS+jJMC3Q&tTPa_ktUMysCj$pN1pABcbxj|QBN!jRmyWk z1C1k=?JVVgxk>|Vje*>G<`I(!&wvX@8YOO?;p4zjA_V<7Em-dQ5tMK2lwB*12$ok+ zmR>jC%=?mc6JF>Am2c*7aceq{j~&a{Maaq|th$(X$6N+*`|Pa0Z^Jlq8nJm+O;~b8 zbUw{JC|s+gjTq zvr2=U+S2mkq!S{udTv4DrQKFn4;cV8K+3}6iU}4!ZmSB`+01HrLNmOZAg)OZ< zgJunXlCKIZz*+7IK~3Rtx=^BwKy*9;`FQ|58NjEWwi=;h4Th(QQ-DH|n$zFa(k1gT(} zu+pzRAx3!Doq(jmN+Ig}wo>P3lW8kLivquYTukUnS)L=tN`I9IK!I_|X;>j#X0w5C z39eA4iM9EDP$T5)7K5{i=6bNM>QvI{OpNQL*+967M9 z^Pt+8Wmlg86xoh#(wcailqTLLN!dP=a>c$Qdk@`ssHbD!_MUA!JGWf}n&OUKhkFix zbR0h1d2rt$0nVxZ5LtL$3a>>1G-}YVC?b?2%V^6M-!hJ)az%Z6` zufLdYTsAO!EU3O@`}?SBUs4T!f{W=x20_MD0(eDxcWvLkr?Ur+a(0H7==^&J`T(Qe zmg%qarRwG_8?)9Lt?+eFIEkW_0%U3CQyrOAv)CTB!tBUC_0ZCVMq0}y8$H84o?U%W zGlSbUG8)6KQQwX+wEZ%#aKj}_)a7*2fOO$`LkdnQ6HU!F;8z8wbiqY`wPsH8>;@=r zYkWjrRhNSPaT%&To#*ck=XW%nIVayjpMT+hHUKnP-|931+~G90Hi0qO)L1LpvMtfs zT?N2oOG7BvXs4mEmYe|o2=2+82cjy|)DWIoh@x_vT@f>TlJLwDxZnl>i9SHb+v;oc zfzbf}yDVJ(|MB)E;Bg#(W!hbRO!Zuv(KWhl$?mZ%Tej}oha^j5Tk$Pfi4%{N8EM9n zEm@96c4ERILP8SA0VD*nT(*-y4njD>kw8eoa&4AF2Z@)3U09X``1eS&yU(8N=6}EH zp3&&AoP}qx+%?_RRn=A1)m8Of@8{CpLbB;8^agT4xV0&1xRgwPg)~wosbdCr__-rf z$TG9J8*l^p+*3#EcQ^XCbne zQTC9m5`s$i0j?b69AZhxB(LYt&{hF12QlIhS7U%(1i=S`oxCZ{!4#!@s#tXgGTa%h zQxzLFR!Y)#Nx`*$Yv)u&dx@M8aQ94A>|&+LzNxFEGU%%zx2G5KH5~mouEucqJF&qOpB5~Gt9KXYCT{%p4RR;uV5L~Jdz~M(*OPH1pgD@@m>Ig(%dN2afmlGSD zc7_B}u^=W_31G`Y3)s@h)S&lUL?rFm@pavpHGuw1bv18h-2n3H0Ce) zPhrmn;!_zhM@WNS_3uZ7d197`zc~`o#O0iN(10i5Mun)YN+8IA;G8=j(pU&ukLKu1 zS~Pfc6i+sPH)A`=QsM;^3B`CIgfIo52+i@hf~o?Y z5k6c9k+FomgCtb%Wac}=Oer1`+aSz>5=L@}; z`F}wVd%u-KO_ub5RF3=T4!FF@JNGmHXDP=6Rt_y0|DjZ^KAf!RgUo*$*xTG7J4_6wu)OB7>tLXs+sUnQ8zK z!*CV=HHqC2%2Ehz^GgKGsCkGD|7Dy~;ealL$9o5%A=;3JQJ(uK8v9i;3Xy#181rj5 z-9=)b9JqtZ#iSqsQNY1Bp}l13z8U_$=l}X05L;~{N@DwTIKxnTG8iOk?ZmOr+z$SK zEMXaT&I8fD&MKtN*D(noD3K9tPyj~Qq3%M5X}j@(I<9)1b@ILD4sgQJEa29YHIN}i zWLRp!$V8lla0XsC;&$Q;z?(SRH4`epHw=L@T*SoTnFmmW^igwjFa7BL+ePnf*7u?J zod?W);X>E}!6{c!yeL!%PgB6QpG*ILnw^I0;nW9xfXZ-@cYCLK5N2v>)D@S{(?bqK zZTwYwTe&|&SN6jG&E=zB?~7vi7+O@n@W^ALCdp1W9Ks99B}D*? zA6^B2H>`U#DFy4KE8xR@*ie~g!e#NY_!>kzK_}X1iY4Lo;fi=gb$CO3Lv^@3UM>Q` zmLFb+j24>Ww}A?=EIEe_2H;YvlH0Zi@(NpjD7 zIdU;AHFPPjoGLy#a+(a>(Fchu_c@B}JTrQdXt{M)?012?X8|P;{bDJh>%x&XqzjyA zRs0eiwrEI=Bm~iep@nQ1RIrqfl|q;^0e4Iz6NyRGRpiF6Iu=QsWGAj%bGyu?RNvw^ zM7wnRn`e>wD>gFuLaAqe>}(1?h$~kJ8R!F%M@Ce7uUF1sD_Gm4{z66oE43LP>>8VJ zV4G8v{*^zvB&RS5%L3XyT#C{3kZdaqk?pD<+nUJE;6i0j5b!+Lut3J z8gNf_bqE@3S~3<+a)@hzCxj;Qb6f{M$K;qpt!)7LO5ZySA5HAU3F87g-Z$D z-ug!H?#0)q)-|_()R7z&?^5&;Dfl)*dYT^5+(5-ppQ+Fnu1gsKG&EK>rjR<+#@a@B zP;RVlcBOhfp*B@FR%fKHttT|q*EcHYPPGX>9Jt*TYIAdaL+jRYrBS$HfDZ9h7xID_`Q(QjH2;~E@C za9oGuD2_0W0UQw=gE(S1j^h}?aT3QEj&U3};F!QMiQ_Den{d44W_I|k_Rxl@FEl_0$UM}8jIDm2Nbf zXDpvo+9MfzNT{35S^-kQW>7~YBfKw1X*T$OCva6EZ!@=n7PusE{>}DT@{&9k*CV>Q zO%V8^pxnR3ZoX@JHsUa$&;@VJXyjTvcMtVaj&YC)tQ^PS_hb1Sk0ZzR$l=6G(^lgd!&Z)Al41{k znzAN#vc>}ru*abupO&|`QHj(iL%XUAP zuq-A~h+A>1+Am4r>Kzt(2M`f-9KvY>*;9hiv6i?UhKwMn+>QaXPQ3$Rj&>(GpO~HT zkiOG983sbR7zpn|oN%{!D}!TAusq;@<`d4E#drg~2v!G;JP?9+f;t9;=D&n0zRuP= z$cJSZ#X~5w~=p6M&`@?oa7% z1)MajhN=ST7u+N0cHyTO#4J2H*tiVDDT#8T9`mWM;LX7atOOTPgyL3`eAEMfKS!s1 z7&>~6s3Q))8IR76UC%5$de)F^ZPi=Acn6P=;I|MOQ%MGAY3$lmya9 z6;8;#GKN$>-oT^cBi$@L%19M;2A|O5q&AR|ybq;R49{xm2}Vk(^tC-n_k9jvaD0W# zV4-x11goSkpbJYGaUpW#FCtWb72zIP{W1ezAxxTP_(G@H%j5_dKAc|xYeIZ7c#+N- zD62(u@u|$_zK*JspJcoy6)XxQf;u1pb%0L+jJ~LLfxuVXOz2@g0~Zn+Uab| z1zz!Qq33@Oqlmm12v5mBfQQ;9p%*vJX5d8^71F_0YMILLLr`1UHkBc6zGMMcpupU( zp$fAM4xNczl{qhAN)FU3!_3QYz8`g@ZIn%)ekWLWvkkspM}@wLW+2gc?d` zc1xkGy5W_$`og8zxrnNNE4mDS#%N;}O>J+%Gkz(aVMxD38#@_=JLKOmD5~Q76z108 z@KnqirB9tDXW-^*^j&p{?+Ti$cn%b2s7AkGvzX(cFX%M?AG#8J%L|`0*rRav8_E*5 z=Uyakrj$p{;QyX#kWCOBM^FPOxT2LirGLb;cj2H>@>}vhJQK=)M*qV7aN2WzYmE#* zV>{u47!N|{iYLG|G4V@hb6>>+{)HZpqv17@>h8bV5BOIqn!)8TbYN*tB7eO+n_Bhn z)T%wARsU(dRImY^r0|M)iVi3OiIAqm|4hC%dTda1Lc%>c4zO$w(h46btdiO2tkTj*dg%XnFrj z^ilp)`Nipfw?NTRg;O_6;DT@hB4MkX#dovP>uFI+@)tf4_C++F- zi8|sm$RqVchoH6Ozc`^MPb@~5KfT+G+L|}vdRdq!lR!2pZUA6FpTD-dMjom2qY4X} zm5B)P+*CtJj<+BQ(O%s(C|9*o1tdf1Zz69q%Blm60)i9wcq40S#?gYK6~`7Ff7?1(Qzw3RumJf9lvN11vOsfX zwo58Vz??J^P-58@afap)ai%$dygW~wIf@nazcozxAcR2f4CY`3%f%7Ek%uE6M*)sP z0w=?g%^3n+u7jqn0!R~=+5|l@t(hDEZXs`ITY+1sZzHFF@D=5E?Ik~c5T;~#4w4_g zLs$bdf377ze%HOu0)BY@&C86yq#`S7*3E`wi4=AlY4uahra8J+u|;nd%c8%Kmctg> z@L}hxg&fj(O4dBT$;Hb2Q><@W;0;ghQ5o`bb1UTq*+oB2|J%fpTbjKcUhHz(&Fv`4 z8P}-QW;>Ke=uNn&V`&(G;lsKm}l-F0KyF~py0ux zXwh^ufG6hRiJfvp(~HdZXfE#MMstzbCFMSeI&Dijc#Fb^a_%|A^bmyrU1WFMLsGcC zQ5QYn0{Ji82mfmfXYhDMmGYX0=qJP9De6|9*K77tM83a_dgL%FlTQUjGiIV*s+Bjc ze?>G1nDTL+AI*>IxtH+3L(vReXTX=BC-+OZzLw;aM*b6L2Yu#sQJ)}VEZ2t+{*fEO zqx6tWzd;WP;~|;iAyl;m&p8^+M7f!8ap=$e5z39EH!KT|AKh@r<{uMvugD)X2dUTs zKS*eF^oD{VU)Pw`f)_3DHNQ-WhE8$O!F3IHPh?)O)^i^La#_hY(UR$D$msoRqCK z10O*d?Ml~3WuPxv8Lq%(SOX%*4-LrK;Y^_cnc^m#2KjWubex7v3iw+H&!*#4rI6vL{*l++(@?#VBd=9)ci5*sav}$r9aw;)0iA_YJ>cGfNu~C>sB*sV2+Rj0y zrhdnvUoTx>93S1BmbP_a+G}>S9z6_oyu{IKMh0WOSoV$|?HC%5#!5qE22$F22G}66 ziPHMbO`B?t#z*^z6?_zax7y;Pe@D}bZCg+*wng3r5ilxAuS9U+<-$5u5gZt;TiOm( zA;F=E1YnR!w|E*Lrz2wtKt2om9d^!nQ!hY1s1vdmJdgxL4b@kc1Em4@6fCM#U#f%A zh3E?l%3uk^ifbTM1?RbBWn2TPQ_leQCCPYeBcu;NH4ELHU^jUO62oWWfAP_n*z7rR zgB&;~PPQzn%!0;Mt#s3CRdxtQGNX}mPC#9Z!~kw_+Fr~u=bL34<>+lVB%$WC*I97;G-|0bpRL z6ZGQ~k<-H?g9+#+9v?Xse;OGb+h2PG=^^$85Nu>J=+EuUwaUB`kuyxV05yr~fl)FvKBmP-$Hyn?-)x!b zFP+^8(_st;7xu#+Ru z5X3c+M~Y?$9N=>TT5^CPQEQuU15WqgvALn8o&!aRo<(woX4m}qSrH!O3Y(^uCI~(1 zYU+L1WdPzs^8(%@Bj6KiaQ?!~Kyki5a8#gs*zTDD^Z|~)$`$VP!0af?nT;@q>$zMB za6J#A0lk3hh1>&ge-x|8d9$~a>tzDsW9>Y|hq8ey8@XP|l}%jP3`}LNRC6!vnuO9E z^y!p(GLfQ9mr$Tnpg^|;NFUgGaixPRAvp4Ky0K5&B^2oPbDeOeov_HwxDLdxjQWGW)sg7b_Mo<-1Oqbs)?fuQNR5q_ zK!?M@;r~}Le|HK_28@MuX(x7h41r5V;8yklrvZSxyA`u%Hm(S;;%S_K2YA(N9KN`) zmBqCNp5Y$i-hhX45r)Zor^9-WE)6@)eTc!H%?~sIto`}wLGvJz5j(GlHW|QlaFP)) zT*PYUEAxT6>yE02<%o-5kT<-DbZ0YZC$m4Q(v^BPfAh<@x*CsifSj51P^`tbbQs+>X!*uA#)~P8YvUF3OHR8 zSqm<=h&6EILL>+cIB~fSH!noWq4$OggBR=IcTJM-84h zG0Q+@xZ;~;FWP6D=Pp7|l3vt9V630na39j2&HN!6_bID*dU20ZJ5wHL$-PUx#anBL zH&ln~;&mdhbf%~yh!yvI&Zqcg_-tc@e>_`tgHW-qI(UfaS^;#r&?2U5smxtu+-zlR zU6L`Yd+&k1BLj!Jdk^pF8|XN6sN;yWk&*8BV=>`G1&>-4Y+F)6?Dj6F3bfD<(h}Qecxr5vQ!Hvf4$Se zb+H~sEUM1Y$lysBP=H?w0|JT{C3$W3qg5Zr>2a#9%^f70;JY+lZT4)Zy4;~uWvA?U^ zM@6K$;mWcayf-!(Ax06Qbb33FfAn<^^mgyu+r6)^*M0g747RPi)DgCStU&jnL;I=7 zLx;L|^zGiiZ(vV%fA^l0wnG}e@M0?@c_NnNINBzh*yGZu5ZiR{LoH1|+dE9hgOq@f%jYUp7cY)aGBa8c`thV%bu}rB;Ug{OLe}qjfxydTn z_72wQ2rSJXzd$Pt z6y+7^#bPg55ZDrESKu@RyD7KFo56hL9I6^{gbJ_{)yXv^vWAwG!xvtRhyL zTuQ!|;g*a{*bS~ir38lTf91lrY6W+1Ahcr@Xvgp+VgVl4a=DJH4TSR6h9_+0&h6aa z!R1aYAkYbsOUvr-U>=VP`=ll?+EhttW-YBaw&B>pj38W^tdSX19AJBiqaEhz_*Ixe zX6!Q3!-6uK7BX3?IL5+|+VsdEDlnxp&7f2Cka>7{UNZVR?u z(nf5n7y^$BNMx@9NaPH4GhmCg9!;9kE&;FDF#{V*VEE65bcUSpOGf+?&HruMG2z*{ z8iIfWE=2NpEue~>#HIp|Ebf9k`4D85csLM?tr)L_A~;ORRkId|{}~bjpJdiW$#sW6 z?vH2os47*`Y`~o?f2lN^U{@NWx@Dd&;)IDhxNe~UZi6QWmYfdsVzOV)Gh0P`C|?q( zw#)&*zW_U*t$rB3PFG(mZ5VWKsNOinN_4lmd0s9RFV3yTLfSEh-48K>%ucZ@g`8RM zdY#ocyUnh!JQrF;9ZcP4c2g&~EYV|#9D&S5U7^)1tj5*bf3f-KPO4i|p4`7g(YvC~ zUF`Zhr=0U&GUUc4~!TB(BhgEv+VOVxGpb=BcuJSYNMt%nWVv4mnj!SGpD zCwELC{Vw5nO=Mc?*=W_0 zDQZEF^4`OH_jVjQva-W9-qqLJ*Kw#%>*~X^a&|<(8yJdAq&r1>bNhtLN|%(8NNlO7 zW3SnsridGrxB+;1 z7>H#NAiYAaWduA2AnUDbOw{6ju6<3;l}K(6hexHro7Z4)Q$IhG>h?^kn{b}QJ_dWD zr$N$MlN%ZKuL5Daia6M-({D(aRB~neme_0|B6PybYO9Fryxc?D?Ch9pn8lP+6E{rQ8ugcX6!Di25jwHWK(jW@mrHCvAZNMCbNlAy zf4&AaJ~A3xsZB(UUAE)UCgt>ag8a{uEL>C>Uqh|hjjpmcQA%TD4Y`?D0F(>dP6hZ9 z*uOwH$hqt!Z>@3`S8|ALCg)I>{b3{^m z8O_?uX!tPbyAXcRt-Vb4F*e;PS^F4Of6*L4*!BpI>>50>=MlmUsUxxr8(ul{@~ke; zT)Yrc1P6&$RgaaJh8@A@q}ElK2ZePD0Rot~@Td^yV%TX&&&9BNCVkimKg(4D-JvRJ zqMWiRPY%AECGZBVOVa9acr37}q?`XZpbu?Js(@F%#9QXliqZg1W=$H(FQINTf0HRv zeX+z$VwsYcWV+nY79+E{rG|v-$xO+*09&QLdNEmL4_K{xVq$z^#c5w@X#|2xZ7q#! zM?j%*OTG zp=lm6Z6;$hlPnK+G>6X`&c$iNf0;(87bA`sp8~vz7@x!q%|K*ozAUu|u5I^L7}mm$ zxI>KDYT99nz~bSM;i9!I+=9xcX3g~ByKr0BO-^gO#&?YG9bay5*tcY)Y+krMxJ-U; zM_>0fu(>|6w{!oVUUbW5RtA+>g9RbTEQhh_Mz)Dnv8`-7JH`gs_3UQCe@SL34`&%uR*s9A{)u^kjy~57(%KVjOV51iL_aZcr$l&DCF|&-d&Vroj1{yG&=Uyv5aGR637X&?0Pv4JLj1M%Y_e2fLP4vlcJhKajJL-g9Ho@ll)E(<>Hu z@ip2|L2v470?gOtdn;)MXj^RU`8^+zv|d|K?R~#zVVCLF73cYuf94u%+fNXLkPg;B zf>#Tejl9bgR@iabk!UXi3upnQxuuc3#^wjsXzK$Nc@_Ew!2sG=SQ)4%JdBhaP|FkR zKq*(sh_NGsu~SZ#L4uK^)o@P(=dGL(=Z2v9$t>t9uI=aA0q1_KAMnF^2!f}439Cfi zR3Y>EcT6=R3{62te;hM8?r6K%?j9U_aO}mg4@WP{%7#xXtTu!;LC)wi#VVo;v#ZTv_yhz4m&HW z;LFu12#_jVRohqO>BKS8UUl`-D`fMcHm{hr+f8o-|cxMyZu;LcyGqwvSr5uo1$03?7)C5PkqFOWCZ|(q zu_%f3&HBnw5;TAu+{R)o5F$v@{}DTg0!V>!!nyI>>Tn<)s3uOC2&^4M7M^a=UG?ab z)D9v^xm2AVJp)yVL{%Sz0|&&p*#64c{_HIk(?v4rW;d!^g1nR*^1?ps+3SaVrStFNFNXe=Lh8%Wr*Ct!sWTxkZDm*9w_RLyMpI0Z>5>1oE|_KyhBN zUJ_UpSdAsMw6H9{RDrV`g<#8VsS3wBe+s-Om8-cN>#JPgEX0bshGZumYl(&I1kjb> zB|w4#G~hDsf&^tV)?FWbMb>g(19w9|2WxPXu*+@Xa+@&C-9Zbmwv+Q7&aZOzkoq#n zHOVI_05i#4KjqKN0#^b`%p0=-XxTbdNB8+wd0YGT4iR>WuuFs?5$+Pe-oGn>P}2PBtOuRLTI&*`#!tJBVi!&w{BI6v~}uh%V>i*|Z?&zY8}F^Q*DV z1YdEzTWKI)X1!akUdffOwz+1}G6$!0%{j|ux!gKe+f>&m);VYnWaejU`GJDG0=-a> zjoF1og~fp?(jZM+f90SFAagRqfoC{B*Rr?_f5>2z=Mw!`Lhg{|GBV7uR0fE$v{eS6 zP~a>@JXSuTIAFU;F6KVCNv@$qkGFv8bhdy!*#;_tmN+gckR2Cqnu6j2#VECM9iTTv z*et>=Y;`G=L>a^4h1m-yA)xdrI8oSYA|wT)U2_1|o|Fb^f2<`6a~-&$4juq6u^x=c z24bE!V$E_4%L3J1<}L^SFmcKOcSzaP$#waR;2!Y!guQoJ#eV;_h~9O%qOB+Qs?p;vSJw zg1(w1TJ#ITfB#5#R3o*73P093fUMEVge!A5%!TyXTVQW<4(ko1^ZF{(7Zxv$%D@wZ z-jC@Th-Q^}u!*NfUNs9-TG%D7;n6ta_CqrR_ArjhRp}XFOg~>rDM~@* z2(k~LYY>)++!3d_yA~eu-u}iLx>MK9KC9XfWNl{>f7Th#Ea3V*po+%{uVIa&-|R;W z8H>lU!p42)5%>WJ@z4dhT;b-`C|8STM)^f3d|o3ivgjhqJR&Z#=^`6=Y$UDI4A6_- z3mXRYh(D_9I-U6FB$DBO5tY1-o}MF~juqTIYGn$NE1evORW4Hc>}19)kuehnICjy? z7JCBae;lJ?b49V&;c~#rKnt)T;RZ^^BQA#W3cJ2;!j-Rtu zWqfM4G9S6bpj)l>t>OP0@eLkxlpfP&JqELxe>OAlZxdORh>)h{p$nbLf)ADL~ANUKZY>_4vSWjO;;#7nt-W zCzDyeqcvD##BM5FrmP)jCSVIOsli%%e>AqFI>}NJ4qB{ZL-~tK7)cOG92-i~!$8?i zjU!?PTzTt~V~sQ0x`!a-pfOmqFmeH>Vny4fB^6AzU?G3QWj%)MVqH=3L^@T;&9Cr% zj6r0xMeHGE4eY$d&A0E8AbU6I+p0LZnu1*}%c(XEpR&cdlEX1I)O0JcQLUcte?B{j zeN<#fJdlio#fgCMCcX_lNyN~J_{tXgYSz*FV*JVbuOffIk#qRG@a`u>CT(&EF-yiu zvOZQV)KJInJ;j%;GsZrkSrTL806v30#0uY9>ajZY0-3a3ZaXH#uC-0oN?i?(#s;Mx zRz1YTQR?gAR=BBIX@I-nhPoD|f1$a>;$$d|kgOX2!dr-?5F42h;{ zQb86SV0{fR6RNKvwOV`dg8@-fPkOx~O#+wA)$opGjciyF5#m`(4a}~|VR3DJeVq^! z0Ft}0Nv&(CZgN;d-eCt!=hUiS&RsAm`~?f4$xyHiC_X zO@+;YR%`^py0!To46xTQCBhyGN~G`-%-|*1%~cQAGC1>b4O_!(uH|qo0Qag~E96=c z*NQnS;TjZ+R&%YCYh@fJ+S*#$L^|L*$>5G4*Vd5_VR9f0@4=g4`OLLi>?||dxVD9B zTe-H4YumZj!L?4V?ciD$f7f<#4VYy;1Y4%<;Tqt$_gS(Eavkj0$sKjvafmw(aIKGP zS99$M*RJQV3D!<fek@IZwWwVUYdvfx8zGD6;OiOh+`8DARDi(kyx;#1&kMOI~*l;BXv&iEjuOee_@=JTr*Wkr4(Mv zt~-h&jN=%N0UQw=Q5=IfhH%7i9LF(?V+6-Z9Ah}faom6-f#VF0vp8QNE#vZ+BT5Pmo230)WFJVtze?mVFvy?XSWz(eV64%K{ ziJVHU!FC^bW|li!foGN_8RojQRBogyw@jJVBQbD^bnkabPYo{euHNtpNQXSODaH(G zOpdXcF|fGurA=_>8`mDl0(cZyR-zKMRwe3Em1{ELty6`czKG9kj=?xajj>S%M^%Y2 z*=)tROgsB{f2IJ(*)k3F-wJ}DG25r(GC+ACZNUk_J!6*{z}6XlYzTnajv}C8YTqsb zu$r!(C1u}BLPO2$31?AZB|5OpcCwC7!Bum9fm|ptP*W0Ed61o0E`|@HdwXH}gl#cA z%2;vzh`VMwz8Y~U&%ki(3$WvODdKoC-SvozPRGj-e+Q#CD=%Q(Vcuoq7^BMx+2#b% zUUkw5a@MQC`76@9U_+-1Ybk)3!NjXHvW~#Y(?l8%IE3FUd z?F$<&e>ZtXJ&YQ^8^%%qEQ7t63Ue&f?M~}_qXf^l@3GD+rO0aG7}r;tt>eAi!=|Cw zT>*2f>G&oq>OMqmLevLI+T?-8nD<%oc>E!hZjGuC+~g*Q6$Y0g&M`)CuGs@^rvy*B z528#AH6jQ74_63jD%?m2gRoVM4lWKkDHv0PoM^rty-c%`Dt9GMkR4hfut^m<$H1dc~RNKnBqT1Tunj|Lp4VgWT&4{4T~7S z6iW_tB~*)nt^!F6cU2=(00(}B%E+YXXOZ1O`RFb(Qt6}03yB!pNIgNtmgRm3Jj$=J ze{da)y6WTg@rIsy7ODfm3t&SrFkTRK$LsfBiwb^AJR3+|rEw!MrkUTyT{+%}!nAB^ z%y;RUt|E=(-4^LWO(^X9h_+wZ5A9b5zqYswJ3Lh4VGO_@v7KyRd<>=)%`ii?KB5*$ zDUn(wwM1%@v=T`;$gRcug^$~6K!>4Mf6fZmvp^3MR+2xRZ^xEoI|N8r25d3JWcM@V z1Q%KQ8D^M%_BV`t+=@?TD)hM+ZtE$6$;(MyYyW+bGPQDFMOF)_fVZK+>W?HStE@f1GR8`q#ej z=&SF(>(wVe^vmb&d-dVZ{rc%gDqnkO>a|Zi^6M`@_3GDe{pDBg{`I?_d+ozd{pyY{ z{p#6IS&=|*wj3tHCl1W{tnGR(cGm~bK<_F(5*rdVrgxamV{i^qJ1AB?eI_xiL0UT) z^IMOmf_`)1*;k*vm$mBDe`ZR?Mu?g1#+W!w_c0hgVLIKygHE*wId~2zHL1J3X9mr;QOoM^WPR z&lpZto$T0ysMv&O zaAK0qb`uu?oR|5bW!G#W5xNZDN4zzvl7k)sKesjpidFvZQ}J;eAi{k3}@`PJvXT2@xM zVoxl3R|R(2;!)Og@SFP|{Pj~$wHhlHW51Ub`2%o%r8G3vk!?Vd+oUwr*C{RajZn?5 zts^Zy;C|HB)dJR|0e-Jq;3uo0rlBTd;a3Dmv=$_;ZGxUcU3EheZ=|NKo{&VEfa1|i zzP0L`2s)&xe*sRk>gyL1^EQpYA{CF)o12xomO8QqRWwh)o9ERt1PSkhU1&*QZJ;8s zJFp+vS!vF(U>IuQt3i?vnqCNZEVBpZBAgELaxA1gESJOJQ7$M#k|ORFCPDxSv5Z7L zYlI@9ko9=ilZeLw5H{F`R&h*Mla?(66B)tq0$eMbnOoL$HLM+Hpz00$Z;tSl|0 z@{D0Fk8t?}mrn}3@*BB41-a9$(6e|ib9N|PzKaQIlH>v1!)1I(-51AFi-XP)N$r%zG3P(2t+9`!7$k}NHSUCERLISoWt=J z95>^5D~`9}csq`F;CLrPa0>0-OX6y9y-03v2{H_n$vWU z@vA_md)8aO-u8BBH?A|b3X;1*klY}rL2}m#f0DaZklY}(L#!N>o+O9la!_(i2`S~E z)MT|?-RUN7PP?`dN*;R1QJxKPg0r2|ufx@@15BK6Cgn`sP0E>0gOoE}yAC>3h`!vG zL$I7&kFduD$w#8K9O!7Or2V0>d`pr>9=(c>DV6%LLeO=k$JBKZs4}|Lbr6R^y`QM` ze_jT=7XY7RY30ZC%IsksS`ChhW6tTg9syuUF5h&_)h|U{*r1{TF#i2*fc$Y0?z9`$ zwiUqQz%5x*G}rr8+`CoKRxhJQg%D{7O3J3H07Xrgi81DXkf@hCfru=~7Z&%%GtOq6 z#a{YuJBi{4%f<=34RRozo{Y#6h_U=2e;O$50&*oi9Xt+w9hA!l7~ytISI-b>{)$DK z-!J?(#d9lzp=<^UT^1D^WftK>g^G%ygd-^7!|a%gDp3ylA6B*x;(ot0l?O`gBX(Vx z|8c78$Lveh{|>tRgng+9)Hh&o01wR-ccF9@_0Laldx6!c9AN!|gv5oMma-5nf2Fc6 z*U|#i^W&%|J$@99)rfc_Vo;?ra4&&-RMX|!w+r_kL;G--5N94oGVA>aotaOwa8V_g zE~AXlQg~Y-ABz{C7mzNLXJOISW2y6>0?F3?K2X?M*&xvXkG)!gqk>XNStXT8 z>MC$~xT<}dVbFXLg9ZXrt#ryaf9N1xTLRB+VqZqsEPn-Iwek!Dmi0_%4f_5SfMC-* zxMV&<^@R|30zD2z9QCUV?z$*S^Y@6TR_!@vK8I06m4`T!s!q><6EDbLi%AK{n-f64 zzrf~T#!a35B15dfLTka4fbTCGN7(Mo$I+~3fS&#Wo*GqW(Z9DL=38tIe=HT1n)46T z9MG`o&Dkpb5KU-g6jsSI2)8M-%$#AQ`g7YQ;9-Z2*^t4e@}QkGhtlJjXR|==quDAD zv0t`Zbkc6oB?8Hg3iT+_l)pezWv0G_w>Xx>e+mC58Kxk}-n}RsR%ERlyTBFlY1^T=bS)jQGcYoAM}#%4$QLXYK{i&8D~)rNOOPWlyDqGU3fEUK6g4SI29o<8`5WyypWH1Gt)a<8-`9#2loU z=6G|wWjfv}Vh+uP+h*fidfHfME2`XwD(fm*S%(^fVfQ+VNd4g2iK=d!iEn=hoQw4j z4Y!*|L=~YsZCBB}e->Gt3Y6pjiCTM>kld`GC0%~z}o zRUJr0r&>VK*QcUWm8R$jb#bZ-qWCl}`S*!&RHOifGMOpfJsU5W!`BgF;f{F6?NlE# z76tnR94|lC>dG-Ve~cHLuRL{LF-K>iFrbQ$C2C=j1LG-Ee>lrKHN9a_i*I^i5MBbJ zj>sn6p=)rHkb2PoA3)&0r_pp5>CwFnEf>I2$E6$0M6w?9Z-pv9nTlS}rZb{H!M08I z=UL2Cr&A5J=A|1641UuK1O~rJfWhB1Ux{<51UQYBrd`1Fg|D*sGJ;KmfcP@-?iR3h z)V~RJPvXj8f8$$ax!|^qG$U`pPQI#xLJJT?@Mw^7`w}C~%_41UdfGpdZRSz&$)c@F&%^Urj0bh%fAnB9!%|S#h4v8EPT{_8Xdu|& zPY3qz2CHmG$DTc%9XqZP{;=3c*1{e#>fQ{rcYd5O8xM>p5+i`RN$bNU_(iR0H+}ULL4O>$tYBd&eIOrf8{CFwwU3529*FsF^H) z5ehCDe>;eP`?iG`Rr6p&OC4Sk-4B!X`=#NOSJh)6f5~>uG6e1 z)YUh(xYM&+>IF(ug8+;K%60%i5L#hgrVc2GLI&mb(m+|DMuqcROUerkISuN2Q1$b0 z)oWP_ldM+BhABLk16;|2`(y}bK?(vd(gVCme-ME{iWGRnUpLza{#*4%=l4aYXN zW-W}9OBGq}08t>pITB`5Op+>F(}f?{F{goTYfe@BD*3r-qlJzQ0s?vvM216x#vW$~ ze{>np)J~Q~U7dh;312sfyjyzN0x?IBpE;XVq>bMQIA8CA)cUT; zvC(~~)k+hB0yER3&pPOLw7BM*f3}G2+6$GO$s`)aV&>BVg}Q}mC7HW{EKSDJKpU}U zn7{(vsU2Wif-@Mq0#rdwL$llj+%VwN;iO%#B$@KpKGk;k4BezyopRVkA592{?(&a2;dohMDQc$OiYp z>1xAGFYUv*vms5b05%7%fv8_0J`Muy&|&O}LbR~g z!mk9?Uv1f7WX3bA!&&jHf9kL&?h%0{yTd-wjU2=Qc|K-&W zhcE~ihkARv?enyqqmIr15#*-Mqkli&{wuZw>tZvNwi%^uPL|fXq%^OEi7;^W?ym0M zzDxp;8tB{K*Rf{+X6?P*edRxO?A@?%v!z`}gfc?NTuVy}PgNwzou5{*pG4 zps}u@Vd>6#Nq<~f2DubPAX!Lj(%>7pc-Pib5CpNe%^37mU7u0bd6KGb{n z9}8E4YH$=o;AnCPf3z*vU9fbA`&vg-z%p`ccQxU|<^-E`sPXjzn)B3gw`FlC&@EjM z$4wp(rzt1JHg>)@N*Makb`z?sm)nY_{F>$^yD>S+?Je%*J3cj;NeW+R(g^TIe_+(2b>V8z5>H+5)TF1wcp+pj11Sew8U-8o#xuWMu z?^&4`ztJT`Jdsh59xhu>gi~&x3X(=R#NNAPi~GN+D7tPR)?)zwkDnR>xF$(o^+B>C zg0lq(V}T$4e~0yi?POT!x}r$2cJtHLi}Q>m_74r&Z&4>K{2jxQ2~vU;(zRWGP|INO zG(Oo;L!~AqO9huL(7RwjInn)=b0s!zZS{TDkUcbhW3Bk)AkJLyf|mlTzL}ShD%6%d z>B7Nv$LQ!%*F$fnI6;)a4f#!z;xn0u;q!+qlin{yf285a!ioC1&e$G&Al|{@*x<<| zDw2zwu3I-U(R(2xeN&iB!Z(o}nS@VT3e)#yDw=Ay)tQz~K2k@{;CvDkC{hIz$Tf6qALEWP1<5!5AhQck=r}6$D~# z&t(V7f1CRF)4Mcl@oO-uAw!Ox9T`89pe83gkmU{~-%*~J14X|t7?CvRQJU0usssLO zVzT?xP^Rb!Dyf%b-=_v+*;e;1=mF(aJmx+bi=C!Yu_i#QJ~5cYK5z;vLF$|C->cn= zTbOHiXR<W4awjbU>NohOzIqrNb9~cc+QTd>Wa}P#mV#x;#3Z{Z$Ldz=wIruAV!{YF;WqrT zF4k8RN`p~k#4FNHliwRc}QqZtYGZA@+W+{4~q|}zkqMHk&e9$Mu$B)U|n$#W0)O%(uiwdMq6*G!G5oC*! z7shdlLvo)OTJveO;}hd&PE)N=J?NZ>e_C0m>e>B6Lz)1M)h4@;#N;({8AwwWJNw3$luRPp_uAxZ-Ljo&FyhsEOJSz5PHg~WhuT;VPlK?8 zX;7P6s++Z%>gtASt){lNsZoPwOMM-Rt8J;yT+*n_sYe9mqclw-QNZzq>~2!RV)F${(>`?$Q{R*aGRI6KVce(t@R%kZOfJ@-YD$}lm`MmRgc z*-6euIUD2hDK3u-Eu3Lte>DRmns#CQa)U69>Ey72VQ0DjonWZkg5zB{ZbKXHVBC2p zj=LGx?!s{oj(c&u4~J!!^M0ItfN}q$jJqDg@dQ#oiR%Y&dP(Jv7Hx6Jtq^l;`c8B~#B4zjAOdMaNwatzqkf7G*J@wTZprF?yP zdDm2XN2juCQ_iNnQ@iSROThz@TxR4P!G%;Fmz08>G9z(I-S95Cylnlsso{1dh?w`V zsk-4Cl=V4A`F-q`x?OiMwJ8UseG%~}j|GkA+0^~up}atR6u(sZB4cO1!6^Jw5q?vI z-xA@sMfe>NepiHlePv+O& z(pYXq1U4Rl4WvSpS4%2H`BkJsRIr^?hzi@tYNu!mS?v_Jf0NZt$q-rXtdg<-;D)j! zxn0H&Q`!~$kX{jfNUaDzs-xXuKubyE?c9KSC5PUw8*r<{o$XFTRhaH-cNx$sa=P2y zh6CC~o^}tixxMXP0}5D~?HQ0GFz-gvLdw`mT1dWwq=n>68ef85Xv)ldx9uSKBkps=cAK(NLrsyBv%-=kO=7&UVBF>vRCKb3=j?+V_U z7rcKpZa`5#cd3}lLbG^j1$I5!j0V}{FE zWn62t1wTh|W5#6gP8R$w3x1v%r;WD-AEww)aFzw9S@0zm{0a-+!h&C5MgkRkHw!+` zf*)eWY9nlP;Y|gw zQ}Bb#C@`)vGK>wz+k>B?hwV2CjeSO*(H;CD3x0S&-FVsg#xA^QAEGt|Z)d@8u;6)Sv<5!|H%P{j ze}26`kF?mhcKDdXkRnhb(jEQBxWOVE!Xz9*ia-=HPuZSx>uG19>miko@1KpxzOc;0jE#~fT%EHm_yke^46J5)uw4X+0i6fcX z-S3Kc0Jh;7Ip!r!I34i}C=@oLVWIqfghk2+5EiTVBP`KA$VlA}O!k>jHk-grFD}`?@KvhU_9|2Y% z#843-&ihrU$%R+PSI0|xR;4f?-$(U-M%2GfdIt5ZXB0Nb&mwG8pl|jpn*|d7SK$II zw1%C9E*gX#PN#SXR4U={Uqp(wcO)-BBVeL9dT?nuw3lhf)VKqf3b7vobo}5OYZ4Jl|XR@yYMEx{u z6B&Zt@@c392?N53>6x$*H*TK|ZGhw^5#Bf*uY|WUWOk5+Y8En|g&YWu<|>6U*iEPw zS5fR+aOY-{GZ#R0Y?pL1e-(YR|Db68LHTX4Oq@lYnNXF26y$QQaxPR2ZLTSdt{N$8 zJp{3^O$^mq9$DT6 zj4Hql8`Xj2+}BDMFjTH%7ZDznA3_*b9zl3a{UpLI+M@^u98WW7e~98?^8gLKfx&# zN{`V(+vT%ky7^aj9Hl}dN7Z$qb`_0unm=EBr`)>Zf?lQ{su$DMQC0X4(k#X0Ur-Uc zusQr&oQj^J=?12UF@JfKDJ9UggPta-6FYH`S}#3N?Ri%TLJl9j;C?pWK1% zI@Ij3|LT_1aw#Nf>wz2WD3^9g(9hT{>E%+7S&*;tly%^WUgN||n zVj7nI9XLEI)A<=o{>SH5I%t9C-hH@ zbT3qYkY3V1qmTCp9KPhRrMZ2bgt_RSFvu|Spm9rO=FXs}|CLhDVd|pcg(Uwjiqib= z5g);g+J7+fKNzh~Q2O;@d2pEjN&2uEbG`vm{J6>SU(Eb33>FO1-`TYg8t4CQ)q+-q zs2cZWlY!^|;D0?M-5bnLXidLMRc0>t`>4sgVERC_yLqb&72-OxT%vjnmzK@NN7&!nf;>A$*7PafDOM^@MEREll>kAFYZwwNE4qaJ#L2QUa|!Eu-$M~dXP&lqRtJ2{p!v~=Ndk_o9({lI_PJa(!>CZ5~C`U80Xx{iTx*zjJ)P+v{ zia2LcH_o4tcbZ>Imh#+uDKE%TfKZFg2;LB&xXx39UZghzogzby`;hq?bcw-dDB|)@ z>C$?I-=tIP6@Ck~hM!ocn4-Re3w$?D^Usg~tzjtTCF)x0V|14rH{DS;`ty7L^M?8T zw0{BWp~?DBRDAM3#sIY^>-RF{$C%k*8xI2m%R(L@EXWaJ!a=y)#QkFo%3X}YyO{iA z+58zzj!M>@=%!!b)Sg)JB`3yQ- z<`3{`{aPfkY#&_aZ{|y-WGEL(>xiQZvVTecJNrJ3$}xxkEvSe&pM_HV(|ih=z>@X) z7etS`l8^akafKLW@9+q-oGvL54Y|xeN7eofsVD+ZGXLE=$MU(2Ub3jz?+_Gfd+MX(x9pE`P(l z6h(M=pw1R*RN}l0Y?pY6T`EM#eR(`G| z*OM*@Be73X%B8~+#%#ZYUG~)yw%6B4yjVISp=#Gk@Bnz7%`!CFLsbn z2Q0)-rRa zKE(7#@$+Hkd<;JiGS}ny`4i@T0Y4vMo^Rmiqs;rK`1u&i_;dVxocX?opHDFVkMMJz zW&S08F0ibh;O8RC{waPQVmW_>pNCoQU*qQy7Wf%{KFRWaj-OAl{J&AmyMFmQ^m+(G1wZ7K()2a2fet=HVUr2BtogyPn@269uVtwWZ=@hRLryo+H zs=zw=uo4bKhY9nlAY?*erNVy;%~FrEf{&s?TM9p>n17;#k6DQ@(lCgjRd@`$o{yqD zYj_P7njb?Y5`#s4xbnt?`G09v^l`=fI1)sQXud8sKOxR>T_`4;^K@AlEk<2FrbLS{ zcN9enG1nAE@tgZq47`UG083z^e?$obiZ3*P6<0tBehQs)Jvv7>AH`V&XHN4moJDa4 zvm=}h;>>M++OE*EqC%fx#ZRI+PqLEF;O8l}>S@J%5=#TxC9`L{}M5U&UAbStLf3uwVHcMe7-~Tl&0W=#=tlG{Rt?Obo6zzbH;0HKZK4 zRx`h(MD^(E=qfby%L*pu)zOmZstXYx>4=)oC;)e~Za%AE?o8f9%|8{t8Rj=p zC;P<}`LCvV;af^LHVePgp_r1jnO^_r+3IgA=C>8Hgot|Z*5zo?MS7E^=69562HJ%8 z8ZEteK7pm`&lFk=DF&BbD!%ANdZG9X^T~PjpNr@E%FRz#a6`N*`nzAXFq~x|A=Z!^~y9~K{XAA7b9?`Ef7tw z;U#Yf$qV(#vtm)cq$KxO=3in=7~ZJ&f%qwH4!x=9G(=fcZ0pER3wodFIa*(j2s|^3A_dqPfw$i_yUO zXg;c3VE(NVZi*H}Gkcn3P(2xn+rdAfVXpf-K`n#3{dXA6A7Sht@bhsd|090B#FW?Z z^JS)*`1uOcev6-HnB$-E^DN{4f}gK4{lD<@HRk-CVt@VvzAt=H_`pEo|D(8w(8VS5 zb!B$${0thVnx+CT=8qceiL=?FWT6v~aL^{oPVZ&~)9Q1;D zE6mlhV1J2e-lj$!7A38wUe_IzTqnn-=6i7a0dfDm^Y`zj`!4_YaQ|K^@(oes`;tYz zKUw4l=Cj;SS-2?jfmD$nn!o>`s3BpsnjfJerJO;Wew2#r#L34}c|Ja$=Yl#r=OF;7 zi=uGzA*)(MAv{8-y7@_~RNAmUmaNp{sRI18b$@&+b!mQH#ddNn;=Ta7T(tS=`I}!- z!^3#Rm?J~Oa)tR7N`lRi`HUJKvExS&|5a@3L>XUGqb^a#bMs|9FUp7{%XpEJP#ND4 zWgvbqL}h$a1^2`U`2dFr9|r2^H1JHJ@!C_yhAYjn>2R?j_Y||?ZRRPQlN&|4+Cw_H z-+!U3eyGk0B-A`O@f{0qif^h8pNgNV4v)r1MIdx#hfkvDA|!u4=Vr`(%PPt)bQ`w2 zw{ssP!-?3CrN5WdPA{lhB8pw;;b=+5KbnX4g$}PRAb%AejUvQAoR`Lm!w zDizfJzif2X;-}kCB3JUox;R@EbX9(@=YJ!gt%z>DzRO9z1rlUaOEYQ9(1U>P&`cUl z3o;YjL$!Z#-8|_X`DOqb6v)?sAR#nZB%nsL+3JmkfFn@-_ ze>N$1Lspk^#wyF2V>Q&rVYUHrm{bHPJ>g{OPI)IEVY@H4&Mso-?b=vU?84(kPntwKtr@)&> zN|&*dnF;uy9h)9H|^Kv(UJQx#3EoFhRlwA?d1wV6@-2Z+aFtL4u4Xj(`|fXPfr)q0N~3 zL$jy9{`Y$N@Q9I_H{VR^&wu(39eNAYfZhtVwmF8A4y8di-_dV`ddILq8X1ms;UxF4 zp@VMD!DUcbu@{nhQb_n=CBwX_Rh)~4m;XVtu}NxZZLRm9olyg zl&ED6$Qd@M-@u%|_U|jY=l@3{CY%5yVv3>8>i48Yc)Y}L2SZw9h<`>YYOYyhg5l8; z%S+_Fg5MEomx#bCN{5VIz17}5Gav+d;*3->osmkxA*JM$j3lVsK@&?(OM`Dus1SxR zB53VRPl88A5 zugSJocaOjq_SGWo9iXJ9dnCTFc;R$(%#Nt;?!}Iz9)=k!sVDHG%9WUtTu7~(_NwY{Ku$>5y1W}s| zO|m3@(F2OhmTunK7b`D@VdI)ETe=ZaUI$wiDr7_ZzWYk)_+6qrg;$zLN3n0sExR`< zIoW^g_hK)-CnF=7mt*>bMw)MgT;cf%*8$xg(QC`UYLH9#0y|8w9)M0a!O5UhT z{?fte6(Wb^57pf=q2K97dS0rGplJq?A&EN8ci2TWFJ`Lgy?auBfVW zF=C6CgTr`I>lDx1_*hLXY;>&3VpvzCZB^uAwFR#NCxpspmACQ<9ZyNLBqV;sKu|-n z@{u3Tevi!g2(IkUM{|)|3x`aQ8!T${&O$uq;q+b3H@o3V&!J|pd^JssD zkXa!-s$Y&r(f!%}a~@T|qw!!Sa{@y=+J;|M3;t}5IXgCG&X&K!oRj9s!J~QWI&lEq zeiQtsSuWx)ntpVP<$KL#hUp{1MB>867`iKXClp!YFnNBdagyGFYbH5kabswVW%U2I z7ujzRh=AvuWR5cL-oA7Xp)9r$&whVUzl-Zo&?PxQUfaICq@>7h`df3x;?qS19+LZD zNrg~i;*{p9VP2|YOtGE=yAJS(&dIGPC%fvntxnoDJ#a6>RiGlFWO5L0LOx(C8JmmS zKP}6kE4QeK0*xpkb0&eKJ+O6{pQHj!5UFv>%P3yl-j@W&y`|#O&|_SbJKCNzuCTNm3Ta!z_fGjr z^bHAenY0l;BBuy<=mi(G4M%^#^dKCZSw$uH6Xl3Z5x3{UjIFq>dih95+zCojm5Sus zg(V;2MH#p#gMlTbh2x2^MOO-ql_LL$}nVOTe9;*^$oYxQ?R zA}v==ndl5~m63F4gww8xXLH1D8UP7;8xy3~O?^s!Y3DGEgRvTe2wFFO{*f5StxZ_M zRI$`mQfg{NX_1NxhNOQ1N_L{U(V6Pw3WZ9haOOrps#r=uE%E;YIY*a z(z24$$N?itD)I{G_ELFJc=e#WQ03NsLk9J`1)9*YMv`|gvDJSi>X0MkolNp~=j1eg zP~h-BtPx4a9fNL%B!bPNSX`bW%>4g=kRW9^QZWfKf1UmpO2e!xrr}jGNrz z!exjUcgjFAh_LiTEj6>ewKQ=ROsug33ePgMJmIV^D?OOVRgKj|)Jkkh88-U5F#q5M zrrF-afeYN$G@urx}#boQu86moIF}!Q4Hb1^N$qWyKKZ= zF2h#gGN6gNsEAvkOdwxiWgRdK^%6S@Qd^FChk*4&4?v3JMXx8m;zYM7UPqKrnZ&EN zDVKjs?q#LUvVy`uIe6t}D9KXC6ynK!K-m3_%quS~GCaJulGYg*9LX^zF(kaYU8X$E zP}xDXBq*pO3mUrFp)No;ID$j-m>jqb!O)g)7Jgb@eqm9>I81h=9XJQQiW}peKuHl= zhA~c{2xUUMgAHaya35T11_d%e2nh27ll?WDq{}OT&jOmqu5lEH*CM~Ie?vfsnvH-)!=7WDxWsf|( z->{)WhD78T-F*J2@ahY8zKtXc=LmC*BnC|AKSaxNQf&>xs4~AazqEZL-or6b4fRS8 zeAqtL91>D_jApG55LRW&8m9un2(MNMJwmY<)CEwmf{?+EO_EIH4ErbJpktymI&3(8 zS=>>)@LA)fIb2TEgb%x-WUYT1<#1rtqi6`G7NwW#ZW?JDQhZvTQSu6uy!)Lw`7{R_ zQj&*V0ksIqG4P~B%5F|9JCSJ*>J|}-I#;Lk8ZMT$F709q#{ro>%}_9$0>R1;vIk5B zfs^hSI|?ai=w(vqCp8i*AetnG8Jz;uh@eN)XliB}O}oTD6e=YG1BQQ6*^~aE2&qt7 zgB3+0L6qcm*{6;qEJsG=NeW4!7ZpmQWY{Z~BfPwVp{3xPqA13sdYEFA6@23|Xsj z7L$^>BE-VHm;|5bQ}7-W(o@NapK0?K42}ufl}P#PfC`j$Xf?igD?^g#Kg)?qYSbjmezsYHsZd_;+%bBDHksM>`JRy}77 zj5!rjrxqwzVR`y;BFI3T*5U0KO^dpMTDAuy_3cyXd&xwVv*nIk2qir`k! zKRBg}j2Drgn^z!T9l%k}*e>mD%wee<8Ol)VUAGRg-70^OS05NtM0U>XSnDapcvs8Kd47p!2gvV7-IBPeY$=y%GcIh&+~Rjdcw#);0|CL0B=bJ41z zTLLH^G$x3~LI4~{VwB-1HwD9|#LP9WT*imXu>3Mt!T8Y62>C%M*v&DCBbb6W7}Us1 zpn7w@SlfT4UV^%ra$}J}rVo2@rL4P^EX0*ZisH*Os3WKtYZh6j%EAIVEXx%EMA2uk zeY%=_r5H1IW2M$ftG*PJs@fXJEh@{`pf)n!Fz+qejyJf1720^HnMC9S8;g$0BWY_b zFNDQ+Xo-3NlV0@j;-pacJSMCjsUI7HvG>(svMzu4Y50>^M*Zgo&?Zp*=pbk%6eS_% zmrKNAj@kHyZL#9AA_&(Jz{iQ`BTR?zC5fg<3oGH5+vm5Y_U@IGOuy+#_)YJb60}4P zOJY4?Ni0oGPfEra&}GH|{K=Z)|~ zmcoBhl5whtlqJEE7|tA}rqT~|H6^D(^HOqJPk8i9ro%|k+LYW2x|))EWx!flI;@qY zq$KsyQea#Rrp6E?rB^EKjio22M9R$+Iblsrf+@1p#VFJtdLiCmRr=`JgftHq*lp22>A`FOwpd~65F$fW;ed?+8L;|j+8w;?V zhRl1Wr1sK!LT8lLvnTXM;Yo)9we(*0LhvFjhC|C#Zv^YzD^2T#Q&w89l#CSJ7=3Cm zrR7o(P4y9D7T6!AnvZeO~A=5LEVg|HOk=DiFN{W_|p4wZ3Rku{=z@vXP zYvH3hJ8vTeaOw=dsj10vL`5OPLg#ky%jlVm zvY692Yf5@*dIt0nnhwV74emXAB8&8NDCkP*okH)uQ!`SbNiuwrU`;c{Ps?!)O)A(Hcs$`D@vEkM6|Y~m7}8%F00C|l^&F~m<|4p8Nc-O-YWE| zQC1lllzCFmmawX3ZxPYL+A@ElMVl5kw#c{s%RY$-rDgW`$t->fYcZd-c%Io`WG$*$ zi>DOpCt9mdG%KvU;k-{oq%+DDjiYnHcQ=mxI5tC>nb2njJ?S`p&LRy{4^UvnaE8!L zw*PQJ40_l#uMS&mI8UgxBo$=V*19cTx3(23*RR&K1YNsE*E;H2XPtj_(b=^+>!xen zb?thcCF)wT&Qf*OOK1P3FVvec89LsscV1LwZG}=-MW^e zYq>fusAze*eUz>RbT(So3Up{QQ;T$Mj1Em~+I_lKs%z!CHcq$xx32wD*ZxO$z|tR^ z$Y7L08>!+nFenYMxHwoQQB@IaNB232O-vv_teJ?1&4dvIw=+l4St zZ>H^mQlR~Sui$wVX&nH34afBl0=|yt5S};iyou*+rpML*$69~9AI4LU@C|@R@w|uU z7@l|WypQJt_wW<^kLOo7Ux4ug3ctz^C!7#j_3% zvDJ1wI~3je9N>TRaC-^QD|lYTa{z9y;W>!+*YO;}^9H`(#Pb%Ow{gbx9k_jj=Qy5^ z@qB{kQ#>c|oWyeqX@3TI7SB&GBl0ugFL*BEse~o8-vFloPQ^0~&vY2PngKWy@F5i@ zAo2bPo>_Pn;8}=g5!@dGT%zjg6M)NA*9zz>(^jgkCjo!eRd9Psb*+Zw#Wi@ICcm|+ zYaRJ*f!|iuwT<4l4!B3`MEWn_c~N!kg4=F9FX7pPXD^wVs9aLSznd@~pX@^wY8wPwsb-hXOO%&;EWLK@aYUsNb?{#<% z<7vS2o(g~N&eF9Nc!!cb?E>H~JQFo=HQ+SBnRsU7*^BQQJPYx@1kWlwYw)bcvk}i` zJX`T>$MZa%7c@PRIBh@PU&Zqpo;Tt4KJK%8jQ1}z$IsB082hD$mZ^<|_8pu!Y-h2w zZf~)~cd)S5@m(uBS>j=ZvUPk9dP}0W6naaex1N9WmQHUO^wyi+`q0}A^!6vbb^bHn zI`_p}*PHRybwFj7rQ1NfbsJ3KhETX$@pk=Cyj}knylKNMEV1idWMpPIYn}M_%8^Q9 zV*I_8zHB%bOXtL{W5tV-7~c)nIU^#n6Oc|tWi}$*U+Gg?$H)Kgbey47)CV54#6QF+ zm$`ooiQlmhr=DBKcUuariHNm`!DAV#%(k?Ck^&_zXO&gV(t0IMUbbFEKTnCc8(HOQ zrX=2b?@O$5Gt?xq*6DAt%DsU1zawGdhpciRql~{|(-r8^Q$J$InI-;fO5__#h^z-GF^$lUv{N3L9xU?g8N1B@v{^ZD?WY> zfTi_39La1wAMUNYEmJBVMW83?BYwSt!nNK&z8i(_7KIA9NwKuvN#9G^3ku;I-))al z`Jw{2*MKhz*t%P_0Y5k37X~~>(9(JWZsoO}sDgO+-aA{Zd_y?^$H#GIz4cM{mRb_I zRHc`9%$It45!}@JQyg~%TbDsR31$H(m#91m;eSXA8(YP0vOJ7FKwWLTXwI7~-Eg&I zD!u`6x5E;TyB+NWu(ub$(LsQSjsiqpdy}Or?shmtgsAI;qbpi~XpaEy?l)Pkx3HK9 z@#V3Ki;l5vMFj6)0pe~Eel3Ow&~gE?N4~8lO4xdlgz=qjvUIkvHp}H_+qHne@~Qzh zS%0WMY}YCmhuW{6r3}OEl7v~xaEr#;&&HRPT{9bBHr8PdzI4`c4!-Qr+=(v->pT}< z5v_(ikskK)VCu3vz!7}jF}LV8%@3v8Gr zmL@YRx~Eq}sSE7o%{zFM57ooPvCw?S`g3L9FIX-Q?buYgAy`^!pzo^04ECD+o64W9{frRi+M z-Iz?^k#SdEz{D6{dF-uZeVwf&$RrBjeH7`{)_!>HNcvXWwy_j6Vu(y0EA9Rx?(ZVWT!uLa9uyJXE-+%50dqJ@b z#t`C~lz3sY*iGuaxD<4!h24b)hHDuZUyRSfz()D+e~tuS+H_p8C2QLcM?ul8h3-13 z?2#zwx3x&6wzK4|B1|w!zqRo`xHR-9x={3I3@bAe zxxm5uR(HHu5W)N5BN8TXJAW5AdH-s5C1-LP=&i(_pF$}?QfmpXY5o`p4 z-3eRYxJjbnYMVVBZX>CLoh&2y-{DacOKKZ@xDREAN!m70wh0@w)qjDu9y^@xsqUP0 z6>=t5{O1oQE{7j5Tt-&&;*d$h88w>SnI@Bi9G31MQKkopQYgx&Bk;`cG2y*uEwf z!J+68*|vxEax<4}nt#ogbWu!#{cBNNm^4Ruaf=6ej{9G!H4WIXh zX5yq_k`jMXDvsOuX-YiGOneu_#PwiJq#L9;U^Q{Pl8PzhdAzj2sV z`#KNqY$@mj-G7d7t;y;F_H8h;I7(T>npwO{S-g*6*CGoqWzh;*d?d2SvV6p#rV&VA z3)|U<6=%jeL9tFDmIJX`n5F*0K~zal?b>eG~f1NspSlAeK=G0<>5zC5LZ536wXQBAeEQnacA*#=?5p13Ut%5ZRMQ1PvL9d-s&*xE; znyenIGO+?2cB-b^ zA3&I;2!E4MnF58bKFd<%nvFFO{vUrHclyQd2&LApm-sX%?8FQq0c zg&`7OrPOuFP2*1y=m|Z70KNFrh?5>j4`fsadS~@PB5ReJ?$E1pgZNml)Bwk;Rp6M2 z{5KgT-lRY$pi$PXMp?Hjz81be1^!e6o8ah!5q}LANv$CJbw+< z&2>oc6(hY@C?$44;RldX{~JX`yrxvwW@Uo72Z^{Hr~*15${`WOXE~(sHz{ymgm?=t zB7f-H6tp9*JKGBol++DFbEZ%={2(KR!{e2D1&V@eJ6cG^aST*sbglLE3-k-zyhW($ zgR)`yNlL96NWn17k3+qXgEvqX{gGF_R5M)L;tME#66%FJ;cm5ko`MWX^T5siPW)CL9# z_8{$nBwc(dZ~<=w(g@`^xIhgdoFHuw0;?lkYvCmnt(`zZgGIl8Qh^=$TUHI^pMf=y zXU*QSdbkXUn||@4TPPHr!IaYqKW&tkbe>AY{v;3^sd5EM28kFz44OGn6#gxgGJle_ zT4W0g<6WU{6!`)Hs2@Zo-^fhr;$8w_&MF-*qM|!ft^F00`B_v&C(F+YKd(R=w$P2J zBM~5V8}wmyLMj)4{dK;ffuVuhW9|6gISp&iji7Q5B<$qHrF@vd4 zk+)Qp%t^|!mPwp%lC`B(sk}<~0%uWMR=ynC??P+KN+{8oV1=2}GMSTKi`$7RdrGBF z1m{}%uxck*QM1TT0U~xCF zI6$1#mHLc%RP2MY*yy~oEeEN%SWDuEf<=RyjgDO@E@TRI9u?i1ra) zBe)`#1bHpJ5@rp&PNg1Rpxh9GasxlA8nWk@T1ztET|%uJ)kqzo_P${9OS+d2Rp@&o zB<@5u9}{2HyKgkRmrqsbcQfhOz)z@V_ad}1pH$7>g|a&(bNyHi_7>m^H+1I_11evs z&y=@91m#)1h(=d7ABQrp9Lq-+#vT_K@Z`+nY|kqqT+% zds72=7(SHYbWOBuqrJ^0Rb<_X0Gp`?o2!xR2=BpGFv|jxA#9<>=WDWkEr3F~vUSSuGIMOgyN0Pr;F@q}g)fqHII`f5@^vH@p2ZAK^BqH>|Abl|Izk-*XF6);}TQPyAAuvC!)$T*=Zx9>WX5he$ z>ikx#uI-#POzG-A57!@pNi{zMK0?HMnki?2)>@{XqdL}p()d}ERx~<2N2G)}`3aek z-cqaEpsMv3jsGG-f@TA$ocz4zw*|860@<;ogMaV>z9@y?GL)|L~@B|7b|gk@Hcvx>+`f`?Z%E&XyT{XKPodjug@;)~K*Wfg>6 zZ4z=BO1)PQ(y!BiL=tjc)1=l1lOjTHGzzgv5|RvqNJ4IwgnT+QNh0KStNU{W2<`}$ zvw5~8vOO=!wzCP@UNmyt6(rkf1l;(Sv2P5Dosks#)}+`MC|5QtbQCB#C0bS>2^* z7Va^K{JB;Gy{lhB&8*)Z50TKxLSqU(8w$1!2j(V`@+@>~8xD#a+u!^>sMR(cR5yfp z7ZNC)G&lBFJ85=%n-v!?Y72h3_%}|{p=Yi902?O~|k`T7KiO^=d7^U{>ep?61l#1`*vwvWv!Z$iF zdb>xAD|a$&j*ZW;`9}M-tkEn`K$y8P$anC0Hgunb^v&nu)fmfTD1f0=ps*T)tC*uG zTC^8`D#;CV$nsYwl3ou_yJqvTH9;3YTtu3Sr4+T@r-2J>!@6F>UuR| zy*fuYX|U@7jF-6Zjv5K^ypASV*$*_kTiM{skAEzb{<;I+jb& z=ZRoC{}2hc^<)Fl<1lhm29?xVXgM^0wts@r8+->q2|E@s@*MnA8}y;el_jB5`2@&7 zE~s)Ee4m6jK_p~{6t+XZxZYwLq%czCUmB^Wh}1_qzP9nNZN9(52$P&_L&5fGn?FL% z_P)UzrG!Y0DSsV6i~G*jd0c}VZHAwfB&7N3FGR6QM!g9-HMAy4{t3_mE~ae1+KjO> z8C~I(x~LDDvP{&C`k17P`XH8_YP!wTYvmH}LwdDe!y3aQ6j2zxnME#Q;y+sl^QGC) z{@*3$o2%0V?2>`*N6a!8J6ovN)VZh+TBO%u>hu_# z+j<_N0n{fkhazkSbBRrjv+)_dotNwxP6_kLmt%BPB z7gowTtfu~Q)wPs9&0km3 zJ5uRE{C_)MTL(Ifw653rI;1G%FJG^VsewD4I_^zC#|q96gXqo3YbtEypngH0t{4a= zjUxjBe2XsZ3sL^B+&!e z?17L9WaF7eqgb8q)nNuqXp`Tk*OJ4_D3ea~=zoUL2PpJCc&5wHuLVONl%Zc2p{FqZ z7O_}QTEH0(4tob2Ms&i=WCpX;fQ;`lRtqp*sndClZmc%c^I90tz=*w$z!A4>bw0IT z=k>bp?{$*28gI}c>87(<7la!>B0oedVF#}!?jT5cOsCz8UbM%W1PtB>2K+<4xP6{vE}vyuN{duU98v~N|w^2*}8M$678}b?UBeVPr z5}##^z&WP;4BG&rygw5=|HRZvDCf-9CfNA}y-up~|4kQrZk3&n@QL;-x6*&1@RRMe z6%Za%?7l}>;1O1vJB#tD_UbNKv#F(9`82~LFpE_*@ac9x2DbwOHw!C^=*loKsefHg zT{R}2V8D*bO0pI~D@PdVVBH0jz^Xr=VaJ-V83^sas;Z*F-3|@=p&*Kv4#a7WO(;HM zuOSp?8JN@%in9sDITFP=At=`Kxy_(h6GUxO$whFju zqM|-a?o8VOFiEjK2Qc3DJd7D4&@JeH#bUV~i{*A>v0UIBxH*~@6}H%YkAJf6Q-VJXsN(Z zVkaE0BxbN`$X`TQ^m5Xy-7Y)XOB~?W1vg4YLpm>FKtS?~`bWQB6L%QB%Wk_5mWC}9 zz7sk`E4X*?e5MKdxlbYCJ%7Q>n`ceRd|znhFNb7qvJf)g*G%U7DRVz28_1V}LP$1d zUMLnX6#X?je~l;%8<~McY{g29Z1_Qnh+n_mH-!bJuoc38m61%xsuflIbs1+RMIw)B zh~A-U1wRDNL}tPzm>GY|-g(>+{a+ze$0+;@CNGZ zymsdv$gH#ms{7E%^LT)Gt3vbA;pY#A-9~^Km=>1l81bq1ej%)Q+vZlfi0B z@D3x~$FtAu{4=;NfPVoOHzcNme}OMrVWv%)7Qp5!d(A%Z;MaDHGMt#<@YD8MY(LtA zn_0Bz|1DA{Ly`PPBJct*Q$0V6ga(@(o@gYSh4EQ_j>2HWte*djXco(Vsla|CVSk|! z`wMn{5eXRBS2}?GM2E@o30|VpWQPyuY^Y%b24Sc_kWWW|OMi0gN9CNYu$c}%6aJ!k z(PrI4j+)wNO6FnVT2s3mNQ-5>vHY3pBMwL}a-cpQ zbD-0EjD+Xo4pi2SrstF7x!eKaD?C?_=S@`JGc<8u178drP+d4)y#}VJkTXhr8#@2> z4#9O^v5@Yd?tf!}BD;)Djv5aPW$`TtEIWWp7pF)(P|U3&=0YRpc9CY6+{YQ;0h9{b z^5-1bsT<6ncT|gA)T}@j?V=V8;5!}FSxaav@gj2Rl;9m9IGw%Z;JXpFvpl%+lA}5S zX9?(Z#U4j(g1~j3$nh~F$JZ!!Em{_O>Vxuq8bf#ex_`qs1MpU`5SK34(O{XH(AxrS z(Glc6!N@WnuMRrh11DZ9K7C7B0RPL-rk`Zu{6rlQo{ojp6WuduZ{Zq{{e7yG50P_Q zF=G7)Z?_EOA3NkY4Rza>h8!QM2zmlR(VoPvKekLUkHGp$C(8*)jPdN0gMThkangvR zN>P4r@P9AiP{kxIz7n)pVbJ0<(fStt4FU`nGtV=QYHAkN6$L}YPVu+myI=_a0YNa1 z!2IJ!ybY;y!ORvv=cq#y%{1nL>dy}Tv%{A)ILks?x%?N0oKM`7I~_-FjF0TxX^dZ> z#Qd7rf2DLCnW9QzQR2%Zs%w3Juf?!BtBS%^nTdRY60M2=NAxrM)YZ^i&7Y1y8zyd9 zOMW+#UoWu0dh*+75`dQMHW_8*o13G=R*K!9M%cp;dplyEVYnQzJ%T?QQA2}az9XW# zqf)S(xv77B&PZ7dx1Wa(gAacpEaj((3V$zB%2`%SY){yc^ll_=PHX{bc@86CWVHt? zDq9uyJ-{|a`96a0k$EWV$JO(_$ihNd?2AAb029sofz?{{IIkkm6pO z{Qx4o7L0I>_b!y=b$qw)XmL@;a|rbpXkUPkeem^GL^Ta=s7HfbrU4|i=6mQxjDK_x zj=zoA6TxCpH0^lD%m-$Zd2KMCt3^JC@eRw2BA-^Enop z&%0(mPb1Th;A7%{yb1oFhNOEr{7;0Yd(udke;$JC7ZTS+k|tk=q}eR4i(tAKu@{*% z`9`D(*YCmO73h*Gj_@B4U(ztf0xuPlgwbpoSRBQ$HiQ%dr6U##=z8^VGty>f3>u*sl>{?xH~i%b^tJE(k$= zkr+{Ge(a*f)uX*#h``2xn9=@5aXKtVz{*IRKNMZzgh(1!fj26S(Do3Y94RxwS{;8Z zghs+>GrBNjVh$aTAcWkfLk70EW7I`O))^U0qwpP5=BLdl=bWQl?qKEN7cp^0}f+)P>E%+t|QlObtbm7K9dQVPrFOTM%BPMUf`W7E^el z88xRf?0aTg8p)SNQsvTA(i{cLB`AMv+eP|yV+;%?c{0*BnF&Pr%E;=v+N^cd8?K6^ z=7_KL^tC#&x(js%Pe(#xZlKO)Z6qpU0Ci(@JaT=cv2MOTl5a#<8DTNQFBtHBlSs=4 zy2l}jkC8p%d_rtwTEF~*z_nfHR-!5Ofl}@8}??FK)I74f9lJkF(+MVL0Zh>l7 z_6k(HQ_V=CcBebd+MVG<*(W)}YxfZfAd#EpG;4RB$jYSgqanGVb~}pNUEpj|yNiPP zET()Ohc9rMC$kH!-KD{R%aDm^0!HnwMD~cY3c$>Hb#pndX`1ueV1nx?=M6IFRhQ7Vs(wW`zlf8MrG*yRVO+-*$>eE!E1k%z28c0`XI=G-~;&~ z1d%EFZF`X;d6 z0I*+CjyQQ8%D0w@-KfLP0sI&~uOvjL0m=6eX0RuKw-1~`@@*ped<559#5{+(krg1$ zaVI(=FZCcFi*SE+xtrxS@+Zz(5pN3n}$Xe#%*0leLw) z_0OEuS=(rooeJ6bMG)2IWh0^bRS?zF64mX5>KPN&d#FtisyvA5w+5=uNL0TwP<>XS zI>kWs`$klsWrQj`a-U)RETOuCP(24!pCeSK1C8?njdFjyT?j$rqLWVkjuK=ug!*MU3IKeb?q6E_{1bCMzivVgAbumD#qCEjnr&w13 z99C?r0qTDheGNdBVt*Q-L2;}FIHE+X130Qgt_L`#I0?L~L~Q_gPjPJocwdR$1Tfsa z8NU-)%oczT6c2&%v0L#wTk#V3P>I_X#pgx&lx}$~1IpaIR{oa$R=JA3mAxgO59ff= zQFYOh=A%&q_(DOHfMC%@2HhsJDs)$iqv{M^gE@a+98Qc1Stx&kNMmLiw^N zYRU_+6NuGtQ@Yav^OhmRpG>_zO`m z)GSYu#{h?}HRC*wq0GAw2s7Z=G`zorqG2uemQ^(IrM&k<`C}5q#BeWyT}w{;qUe@~ zKPKx%8RQisS=xycJ1vw;U>Ebp&?!~y+wp$`B80q|;=%W8_{J77f{9ZBnCc%yzVx}9 z82oj3C*%&|Z^?wc4g~`qqTe%!TN~wvLen_+6VxRi7Uhc*`_QqxKFS|UA#oe$xgE(J5pfz(JBn|hhEOJI$AATW1EF`}Nr=4{1v}S~f-3I=oqc~) zl^;Zjl{=sphwnH9u(i4yO9eDx`7{*glTC0w^&jB;c^J-LT!QnLjW~a0;QVzX&ZmJ6 zWKbmkM&btU{pBW)x0ROYpjDxSCBc7aT=`z zxnNV;B{uk{xN7jqr@8zt&q<^{!-W|faUOO#x;7PicHz>V2Js$R=a}gd{?( z+RN0g{9%{D^5iU+X&!OO4T)8dd^k(QXTt=$nCQreG{-^UX>2)$V$pmKLi>NMqALMe zun$dLf!I))?`k$y1q{6}1TI0(>5P)3b+bjG&eNnbR?r?NXYg_EON=j(rEvPAvY>*a zD}O>{@1>omrLH=G7j=wJy8KRjnA6ofCtq%s%IHJ9v@f*MC3+yf%H^k8FsIPyk5(f% zxI*VUqKF#UD+H04i!ioBB<5M{7ir_YJAY0z( zqIKY|zP}rDKe}fe$ev?tC+u`#Ix5CCFS-nY)>MA%azRkv8WhwoxvnIrUvdeTZej^N zf4KVt{6bKF2mnD%V0`RH_=TV*06~4+#rK-!GKGv3)cfEZ6x1)f2Jly0LK=$!+N&-( zz?mWh^#SASSqNPS>epQ%g8GmPg4)aWdS%M{e7U8bP^2El}&KI3XC zsJ}CkZIqAHpM?tQA4G`8X80q%n>NFL{LwNf2J714iGP_IU; z5J9~r+7Q%FM~g1Dsi0mb9dV(ze=FZ0vTLk^jnP5o03IZ$H%A8r^|ojssGo^81oaM( z^AbTVCw)>-V?o^z)X#~0sA!O1{uYLy-U&>^*i^^?v7honbW=gSD>_6_OR0*$(+xqr z8=;#Q)O#DnduS{Y)cb);GlKe+Q0GQL{TewNg8HB=MNm+`F0vPb`cO0pe`=iZf}nmg zI$ZL;ZI&ujP*+20QSVa|9WK}F5L^iA6GFf@E2y2Opl(1iK|y^~aCnHIK1L{CQBc1p z3f0I0?^A)B2aU`Opgs*yt0>($!E8dj=-zssd z0KQXN`~dL1((*@uACy*S0e)0kpL6rm(T&2HM~BGYZ=)f9>Acht{+;12#qamgSQ!hO zCexh!hv)(PESQJHtj5npSJ%;W_y*kEa3b9Je1b zbVxLY^L(z`?E{!EoCNAI{84=PBbWPiCrv9By8SVJyExLhf5=Un%5IwDE)lLSO5zE( zxQ_HB&>!G;2^k;FtK8_SjGh9SyU>C$rSUuC{ujg8m2NuB8OK+F*=Uaclz|;|;W_x4 z5bU0IyT@U6ysk;o>yfn4ip4eX4Q}^e5NH!Q4@&Uf$t<*-@8H`-EV`2huIA6U{qCl- zXLn;);Gq++5o#7JaS(87LouR{4KI*e=bU=J8Im%{mgLN&u}Kb1+N2Y zsF4=DULev~<_0P;qNBtBB=U~BA@ZU`4ZrV($cy41xN(aXaX%DsMMZw>_D6Z%L|&f) zONVCy-cI6;nnrsubHvmdvyVmiZiih?nl_&jvHh`ruatl8A#nW6j3g#+pPNB|P;f#E zmcgU%1GB z5Y2U^-+{*4lK<%T!_00gepWDXYkp3^c>a^Y%=iP3)kaYpLH@1`C2zM!x z1gBh-WohMaEvLT|V&FfG`Qu%5Mrxw`D$9%Kf0JT}Q_y1R2YrASi}-v>jKpbbjK8%% zp4Pa*Zms#W7;0zndO(bk_(||-(48+<{+G$x#J1r|>u$xeSEw)J^%fyKyKpS;AI$s48p?T<4 z7Qp`j=KX|rd(SJD)sT6=Dr^nF1w|q7o1#7qfP*$`0mfU`#qiZJ;(!HoCSlnhr;Tw) zm#>MT1@gdav}XUbpdD^-BNLi@S@}BQe`2Hi$vDt7(zYRnZ-~MD51TxSuJeru8hXlK zr&Io^sG7|&#HlqnOqz|J7%YJNmS-Jg*udvoV(Mz0bO>ZyOdYb_9z$1HG-PIOzTil} zEYRgSP*2N!o$;MSpxc84dhrSb+I<-U?Ew)$puGSf5CITq9{>pSGQfE2ek`X-e*!%N z0!=Xqv^Ru6`wRlT93;^GFao_A!(VMepaYj9(7_;q?jZt+v(+YnUN;H!h9JZ|- z0GxwSEAIhikI>4EueUL!g$21CBZ#KEsqF=ja6{6$Qi?`;;q|2=Xc z35Ea!u<2?Jdd7yWm z2h3(UkE-yoU-5fXQ7!-+Q`Fx8=BV05fVrx*65+Nfwg~`R6`jCr#Xb=LW7A0hYgxo( z`eKn&08TOIRDhE#Y8t>if7LY|V7?kX1K?5BJ=4Q~0#)0JJ;QZr_PrwL1 zS-?m>#bchxbMmQ}hSCr)iciBE&Z%HwcRIq+s_G08-pwC|kFl5OJpfA1BKLZ6|C7)0 zm`9!)_*{gWN|(JnHdI$_APLo^Bm6uM>AB&Ldi?0PkZW6C_-Yb2P5l_ zRT#mq^VHUXt=0!if3(3A zN3@qb{^;7kVOB+)vB%?g>?PLPix*@36ho`GHGU`LHil1Ee<8}t9!#sFm-`)X0%cY# z_eZa+!0y$4!T^VGJbsweak#e;#SZ`zze7lz2L9S*P&w#v{}Y5h1oEQAi>3EBfk2Iu zPC~y;G(OBET@PdHYeiN)cqN37-f2p8sw_}mj3VlYj?k8e+l+MBK#l<5A8n!I{3Medi$wq zT~G`7*;9w+OdZBA#O79hKC}vc4OYPglle{tN%$E^c(Dl*f`pZ^#0@whEStZ3jSe-M zv1Vs>wfAbYlPUNPX(w_8>{-x!8uso%^C?908L^GM+)PAhu9tf#);$c-9*L!P(jeQ( ztXQL+f6T^|@LwS}O$^xJgY$yvagUg~= z_rE~L$6^~B$`W8u(j#ps@v#WwA5%^DR`wG}ctP}ZQ2L+szJ ziVf+DpAsKbf51D~R&GXHc{*0~da^!@*2mY1e?npuDj;^QV$GJa0WQ>1rp20FdO50j zb7&%{Wu0#U`KVLB6{LKIQmJ>hrb^opQfbd!hEUJPiknO?pumP`dJ(UtXxfcfV2Gw| zrJZOi*HK$}$?&JPB6hYl>OiXeuExe|?w%e=CKc1A~7W+q@JyK^Pq2CymC1Nf!Fn(8l%o zWl;Gd*1Z8G|0=c?i)2wN>Z(jxbQ);XIPZYpnb=x-nh{5wBUS2T#7PuSg&UWth-oT} zru40>6>3jXphy|j5sChY3?ZYg82ubF4UQsy5+B4FC}glDwnR%jZ*WwY)cRF0e;<|% z4JQ08*cLCsh1%i-udy96$t&;(X&N~2DVxSs)HEg={>?NEp+$L`*B`N$mKvwycogyT z3;`p-7-nlfap9tSKPqqz`P93&Qk$OVZS08WBa7x(^KlLv`# zTfC-h-s%;yd7C$c(YA{ZVzg&)3INrL^;@r5jRVowJcrCpo_CdzZp2Vhe^lWhmYqLO zVQ8d*l`EaU=*3PGR8WXh>btzYBRCX*GXvxVwH#gfZZGC#!}S>5J~0CGvOQkhp_?La zXdPwYDn^bm=op!j7l9`-p)!!?#7h*dwP14{W<&OP&#+}G+Yj)hsvHD3t*BdYWUorq zw#M;&UR;UCUH-286>m-8e?2y(fxqgl9Vhf`9Pn0?y71bp_Zfpm^4AgI0}6160?>(v zH@vQt^LSV2-DMMn?~2v)~VJHP|o$Lf9(Xo237wOV54gP z8eo&^_!eNZ8u6W%e~7eCP}(0++O#No-0M5Z0w;|U;bblyO#Q@g44lF|3;hjZeMYfP znXx|e`aWlY&&^o6i1mfx82CcW&c5{ezGO9luUOWXG+ndvuf4uwZ16E=siYd@r;+N{ zlDy=o10lOJgfBGJtr^)jN^2Ffu40}$EJnQ9Wy|vw+SF^rhP;P`BjB{R0Q7nOh zUMc5ieAY#*YU>@ z;4B4LLIG%G{zM#9GF;1-!Q&ixJQ+mb(zC<3%PFq)R3T3Hm(}$P3mk5$v=#KdUtJGP z7IXf7lsUjYD8``xWaZFU0v>39&iw z-4*9+;dhA*``wh_MZ)tX!V`mkz6arIb1N0Tm;5Fu@Y`qly)67DDttfrO(MTnOutu! z-(&@4NpVNV^nrFOw>_F4j6+vALV=Ql3v_+@P#j$+M!_`na#lQYRax|OhfvJZ3VRD+ zyz;i_f8o@3;`p0!=;5X)VC=U{ib3@)2u9r#(al~v5fk-?h-?nOU62iTdxmQ@NMf04 zJpwS&b~KLH#NmP#QP0Y2fxo0)ounT0CkZE_UVWVV&j3f`Xd$W&yI-{IeJsweCkXQn z?@=a(sdL^)4 ze@XIfR010T5(9}zzI94q9o_}F%W@U|3Lc^Q`##RMDHuV-yNg{_kOiM_Ddj!hi&$M_ z7K(eCI zxc+_aKJmib&z3AcIp^V18=pG0aN3C%e|MZ*we#-GQ6>KTyN4F%-&|TaF8}V6tKhNw z?kut~Kj4l*!I$fE%Tk+ul$GY)fK2a}ncgijy&*Ky9=T->Kj8{frlqY06&2-=&MnF; z9bGX7Hmv(Uke5G}EcJE@N4y6d#*`HI2o&W%Fe(>1(qK`utc^&R5=t0TQC6Pdf6q@S zE-AjgxT2`2hiy!5d1>JT-NF-ULV+e!bB70Y1e5o`(CUy1nE%c#&dVQOQc;?hZ-ad2UVDfCF`(#i*obs9aeIG*WZn4hHM!g(x9Oo zOp;kzn){&3O!ihms_x<8FDZyfe^~|wZD4wqC>&i_)~~c=?C^@QV@pcQ^G98OwRIwH$S)047v6G!cpY~wt{@JW$u9Sb4hLu=C#L0ht+{Il(C}oO7mgCIap`cTp15a zFQ%|;SP6J3KZtzdl_OmezD22sFU%$9m-Z_v$-DRd!m|9dD<{)@q|4cne^$qql)(se zI$3>AN{3x%m_$zQ38Tg-WL`NXBO?vwnKQ@=b8pyGPD@QE!^-J~QQF@zE}NW&w31RY zbSrCNgGE`TMT=GpW{6tq&}>B}LhZU5scTMMi_*1dU4s=^uWoIrYcTs7uWM~|9M#b} z=xRq@?L-D&wQF?^)?PClf1MblJq#RKVCzw{=olsGF&2oah`36ej!d*DgLlY}Q3PYRw?JZX4(;^~Day*InQ58w?fCN9!u zVG)Wj1ZGihvN$d1gEK7(Q|y_rFr+#%EgI7zGhrIY8kGsdUAE{4m4%kIsD z0UbzZ7Qtd}1_lw4uw@qP=$WEu*5q$h-hnpVG)o8Gk^1^hH3?o?`tRan-Sxqw%BL&T zJ1D#x)L5zfI&{~N1De%?h)EC-Db)cb%WBE8S+H5Anm!ru>0|iV$wyORm$wb#44}+B zmH}s2EE~WFAq=bte>fBbu_{QmJ%W(IB-lk#r9By6HKh}2LFO=uM9PnBW-j>%INHc1 zigMAdHqF`(Nt9DA?JVVI*wqX_2?~DNtN6J_tKbzf3bZNtwXA5Z(hbo*&WCL#1ntK8I_+nD!&{C-%CmpvkHqx<(J-` zTMkR`#X>475T3oLBWxlTd&r1A%!qxOMx4g}?+D7fB^q~|Xxz{Q4M6 zth^8+E`QXme-x;3w)qPYA||6bvm(#UpO#Tb8nDG96o|7JQ6CjBqPDgED1 zMRcbB^>4;2EJpWFLkJOD8&^^|Dq>8KGOUpOLxZ>~(17JgHP>H8FL${bL)=^#2-sj? zy`reR&%c>d}VYOI$iBCs_%L7eqYxnv9$IZV{a?IqyIKO)jp*hg2>lY84>BAr2;wQrGx-qNeX7=yHH zu14spe@j<|A#>HMt1x8VT33bHa`jqW?WU{Ub+w0XO?D)}dUJ}MyF$RqdpZvf7-8n1KHKn(6@c z=@3uStrOh3pvQ)rrl?k1Ji>K@Tlea2^#NsXLrpENj4F1KLWC)Tfv@~|1 zf9Z9!CG`w*GyKFTsl2CHF!SkIx@CEmoz-lj^-C;obS3vXpCij*y3>irGpvQ0eulNw zGI%-#r~!5qjZU6qVAF+MFzQECaa;NU z4Thh11wU=n{%2TQ4XZp?Ss`ZI*#^SOe<7~ZFl>luuyPns1VSrnvB;0TYb!)DoCtR) z<&|yOvb56bc5F*N)<=BXan7}}e=F@;N_0gl zJ24chB;+6mB#?t7g~$$2LRu({x z$PCTMDGC$^tlSc|ge}Qif0DnXpr}OiF;%RsmdER3dNx;8qCixiCmVk63%Lq{q=5TN zxeBUdIoB&a%T*8_m@ZJHRVO+26a&ejYCim_s=eg55X6wli(b|3BCLAFwCyiBf2!7)SUXE;?bKl= zZatosQ$9;6KZjBgc-3;dVk)MkwCD3cR@C_IrBhe2JI>g_shX^~ZZ8)WN)6hhYe2_X zh1Ed^v&bLgDIO;FemLe!`9vVtL%m)+CsVjD6bxdvXE;FaAay5c-NEF*(23+>d@bc0 z$Se>Al274g$V|u!e=~^HVcQ#D9WE?q&eGt;-poNuZU`@n#=M3sW{_VB?TZZZ1<;oC zc73E_;q@bMVHWR9Z#$EI_OJ(e-4ros+!tjF(%R#WZIISE93J9wFv4@OBf&_PgPE?X zNA>!BSt88GN8Y2;OQ&IrT>*wIHZ?SC8B)#++w%Ftb{U3ke~^ala%b39(y*Nwb4y~T z9CKF63df9;Ap$w(^vsyM*%@;wVgMdH-dDG^FFo8JKe@XvJ-Tx=Ip8uJOH14o?H8uF z<^P6+a_d`vL46p0zF~08;>VJNp!ig*b`xKS+=b1t+=RaUGeww(!0j45cCl5KMvdCs zrqzdA^`2z9e_Oj|&u*mc`)!m*dx&_e+~&2?+~^z!qlOz!1|oQyta=9 z9*ntQ!lHnrhq7X4@#g#_l1JzgR>U7*=+71kWqCb>2zK4 zw&6I4`yLScMDvfN>$WEclOy0I4-fC`*(!nVxO|#z65mcylH`QfQc1Nasn#tC)W0mL zeW8-xfA{<10T5m{0IwTdyuc2Sc&%RmFB<24gQ=kr@B+X$7i(9dZ!|4;POR@ua@aQ{ zZyOzncaKW8z!BPwMMs7PTn=)uJ3hE-G}wzb(Vq+s42>j%qlg3}4M9Re@4_Cg>rM7N z-n5HCa-^?&9u736F3al9-*S9p1l)oB@sTtpfAJw=`mTKgi1BWjKT9qGo3T;Em@^Z{ zQ>o<0p*K*_LSt*8k((z+aL>+}cdJuvIepkn_Qm`652bM(8q9GJbK@R-Y2!#Ucuc2Z z;U7kWlReSCWPeY(R1PF(6zxAgf+Z^{9{EH_os%5#vFW15@0sGZ%R?5%H$1(IHvV<+t5*9D$16mh64Ay((MV+26kf>qFXEzI9@h9eJ}w z593q}BdEPEeQ30=zaO)MhNinuH+%Yy^^MlcO9LO2PlJ~k#|_!eD|brMqkFg1U-i4f zRCb0_^s>vKa^st=^)lr*_&{@xI?eT@e{r^!96UDKYhgT!L5(jrM&f2VO-Wz-W^s`% zpF4ELfX)>ah(X^YxlG=^G}vo>>E2|I!wbxDQQCrK?O3vh_oX}ghkN5W0z+{tO2H)9 znI77i>~3ys&KJ)zQSm%iz?|+EkV1@hrw3-u@i)DcxFb{4Cn`#3&3X3$YU2ocf1k!E z4KW;o9l{4@uqOkdi8u?Ch3HHce+uhAdSirURrcHoP~Mkzns|6f^oV|7l;e==B!*J#9P+~vs@i7E%>y5e^lAz*%BnaOwc?-U(T zzCgvF0^EwyzU?wJxZQa;4zbgbTd{1mSt7KJdC0oT-vud`6tz|d{WVNi0 zwX^l?3bui5WSdwQ3mV%-MutX0VqoB-80;H75%2Ho3GO_!uWskIEkV4&e;^>olkLIZ zS$AD9>U`>yrKzPsZ*8iN=xq&=2BW?{QeTg-wIyuS zH?+3281<1zxCvo%OGEwwQk>@0H|h0}wq^^YDajDz6y=pLYb7`nokW*vemZi2 z?0}KWp-c%zo>|CEo#Y6#rQBG?wIJ7)bFGqVLX?14acva|6lm4%e}POG2QoN~;aVft z024s$zgoD~%2^vX)^lwW&Q7>?1=l(`+sxS(u5INk%C+rW+rhP+T-(L@m7MM7Y!BD= za$`Sd2f22LYlk_zinAkJyPC6WIJ=&+8@LwZ+HIV_oonx8+;|eFCQmWXlZ-)>7Zfza zzO*b5(I#XXipF#>ec%67U6qD_+Ak{BEm;S_?QSE7vcLv_yqeSf7JMXasL6vHg58mikj~c z(iP0?Pz>+^tPb#9nYMw>sq}SpPGzj3b1Jih&Z#&~u^>INl*B7MRU}^F4RtEuGc4~^ ze9Yh2srXq|eW#MevfDb9Y?jm7spPOgOQ#ZGxlNr)F3YR!RPtE9!paWdI7)#O#71H~ z6ciTBW<2Pof2N-V+hBkgu(~opj0Xg!ihyfrFlF^oduTco6sncO5Y_MrQH?a@8*#`p zN*5yl(G!n-d~zybj7L=__4;tE8=*AXM67K{*&T?hUKe*_hE|;~pu%Xjn3XKc5}?1!ogECONnL+ z;mMYS85Hi-TPLA(kOKk6c03L!LRxk`ZgZ7ro_ktq{r2w35QkZ2PpT-J++6IL4CylZu^smQ zN!Ya(ZaEGh#T0e4jx+~X;*oGPG8xjw3;!OK9KmynAPKtI(DCm%>aA;qfoce!8p^fj z@V)Oo$7Ze{SDE`dvaJJr*k!$i+%irKu${+*PXW zu)CZG^wLkwg2zz|cZ%tbX?Sd%3i+OiYH*fh_c+lHqI*)YQo>?tnu^1@qYj2x1yJsj z-P4C5$@=V@VrA5{sc0D`;<~OI4^YG2CR4o)@0=lMR_|scN(1*<(Q>@FF*X&<$1$gU ze>XqQwGSaMAMfUu!P~HWneH+-jaiB|s@nOVD zRSGw1A7F@zTF@KsrMqZQ$ty`=g?hF#*uee}BRz zqpKA%T8o8-{VB6Q20*n!c2Dh(&+ADlm!5oL?vu&r8tQvIwV!9PWm7A6EmL>cpGGwn zi8+PBlhL)xc(jIzcl=pd!*Z1K=X1-!yP`5aH&ezJW|y&Mri_ocEn3HNN&D-|ZoHNW z)L%e8Gg=3&trzJ|v>uZd4gLxWe-ExA1Qi8R4!ZFm_1s^Go(s#KONgF3p!_AgC%EO- zv$60i_SdPfN!fGXWRuYbC2y7NxoYlQeT#iPwI{eVxe{XI8z3(F%7*jMOjsv=~_g~?BfI%j4|e=tx2IpMay zFJV~9P~_i;BB_^tIICBDnO^zP{9d_E`3bXs;#S@&dgZ57jMFRs$Y%G-&tRc_!Cv{N znO^w?a?kY2kKLl%WUu_I8+Ur;S5%j5s_2z-6wmaE?WT5m>pJVdezUFD8Lc|e`BqQXGHVyGqW1|p$i&&9m=3_{b5lCAD@Oy3qJND-?K=2 z-31*(Ux|-8X=xprf5xZGt>;f?bxYtXhGqZbBBeE6(@h0>>_2nkJu?0YH=dO7PrC7x zj6d(jkIDF_+<32yf7*@r$@pj7_)RkYSvP*OjQ_bC@0anUvT4T8Gq4@kIMKUfo?!Pp;rCEg{Xl8fP7M|`WF|X1vUZlyjt~3 z7orE&0rDxe>R(-m5hw%X(`wbPT!YNMVf!|WH64ZH-%=hdqJ=R$mej|1`rwd&U{#2>&CAI25 zTu64{Bp_c_tA67`astNyc|ooEPZtshkhb-UYSn+akler)KweU-{@aD*1?mC$idyws z7m_c`8hur*`X3ikK+F9qT4bsU132ieDzuEUn_oX)e^~a~`L(Z|U;o)iLEo-k(?(b7>la{r!_75=k1GDD-Cb6RB7+A3X zSOZpn>tOY_0;?YitbV52Kb(cY-(}XazZb)J&RX`93$UZLYzl^R;_09c>{fOBf-3J0JHA0xIJ z+TZ{*p|km_8rtXp^qFC2h+$_~dfCJ0&l{cR&mTB{9u|ylIe-54^XCDwe@(;a52u|` ze-xl?$0Ia~e&f8a-{4JIuzqI$Cq@99H3I&NM!^55pmNUyHdFV!hBu@N(|WJN(>$mw zm8dM~Aoe^G2T05Jc1=(zf)=LF;~knPMG$ErLl~kbq06aBSrcr~e-KFCt*yl8F_)0L z9=N>|a;fz3f2T&cy<4;I*NCPQ^p_ahe-BWp@79PagsDGhjZ>|HEEJz)`E-Ub{99D< zh^Qiusu)5Qk2_U7E~@x|Wbf2rUx zx=Ctfl6FeMai83Gd{oi5;ih1rbS5R)Ip~oWq-|Zi#1`@Zne|i?qz9HRRJ=e#pnFj! zB?%Q?s?rPOtz@O5NK`6CtRU|V4rf~g48(A=PWU+NMlcf_9GNLY$hkngMdcbqU8EE@ zNw|1&X+gz*1p;=s>R#2C<dUleioX5#CG8>* zm{E9f5x^KJ>K=l~MmLFUK)4tRJX@jm849nM*9HJcGZZtaCq2|Zg!{aMxIZNC#c@b- zBnt2%m!fFmYHa#Yp$j&Y{1{`WG7h()~EJ0=&Anre=&BGXC&=(r+U-P z+b+{fnZZ=&9_TFeLWQOd>yeVtv&FOKcKQ6mAOt_y;|PVaIM_g>-otKVC-w9#Bcp9^ z7`YyZ=}|Xg*j=C-CNMFC28scdt7FOfg_F#mMwzL4G5Mq!Em}Uj1>#A`k^BUdm$#iv zZW$VZG@Gb2jnPVxf3%)}OjQnEJ(>!|TbY6Mgf`F5lk13JWM)sA1P+{xv&uHoy?v=s zZ#q6O+@IV&($|yUNvn-JBcxn}e=tDx%*Ps(6CJL^p-q zJrwrD3j_+uo(!r~SN32+wolgOAh;X4NqQgtH2l=QoA7O%f4@eMyh5g|^n7iui;b*# zJ!XuMOr6?uo7!{Ik_rjkx4AbiB<@1uE~LkWWO5~3NaCa+#x2B1aCqL=Gh4eUy6En7 z=hK2OR3CSP(#N&%q}+C=D$SIW9UU5=Tc5l=NDA=~ryCYG zo}NBvJEkE4$mQG}@zLx(BwO2b?o*vnx$lR0-V0fB~ebZBI+ zvlbN2g3$C$2-z*QFEU>N@p9Dw^_khL4%e&04SE_MA`OehER{}m_%?O;q>wQE-!_F- z6LmPEe-1b5w2m0vq^QHXr7j~T%#JtQMHiVMMv{b3ykZtY!!y}$0dSBOmpA^MLicQ; z*$nZ{zR}HZ7(-;AJHK1sa1qYhbur37?Co14k%$4Es@7(N^)OCQ-_!z`hUPE?1)52) z0n!Nw+VG$y(x^9tK?+3bA?(oH*wmo6wY5Sfe*ppujYfSF6iN+97?7+&OSlR5EzNDX zZ*6SDeOn~lhOnir#c~&i#fdDmG`DIkjSbn5STKrI!&~Gl_E~;XNh&HR3KumNjY6vt zWTwe2&talFG*1~0l(R_4UZ`zIoel2IClykYa}(+uMcjl)LkTxaxw(X!W!x<1W(7Bw ze{ypfH-p?<&do}0LdXHK4Nx{+E0j&wk-n*~p0ft-Z{n<-GYB?Z!Py4RHgdL!`#Q)B z1CtUCJ2~6M*!kdY>2aAo|Wd>aju=<+N~tdpq=E}Te$XC zZvFu`-^R_ibMp_mImWnoJAQZIcPD=Df57i9#{CbXk?+Fq-T3_xN`D5D5MRap*ITP#qqYHX!iQCV3xR=tKPp~zT+vUZEY%GLd2EijnSMPcPFW6etC-Apw? zp%(l-#Ks!#VfVtM^?eK}A7Nu$Q!6V2?`LC=vd7rtQ2eUI-v?#%1MF$01}ZB*eD00^73c$@(FqQq`W*YFQ1Z^Ps__^ z;{sh$O)4yMWCHzDRK{xEJdD>rO0n4S&9Nhs~7SUO$T)FFWL?m8Ytdec5o|HJPM2Q z=EzbQy64|@urhvzbDOKzoCPJUt3P8&Sl=7aM5v3!Qcewk z6UCLEfnc^^vfTb9VEwA#+WjjP#M1+s{VTdt(*wHjOkz{aOYm3eP6yonHSUlRmG!8v#S!1eUte-Q1bpM{_2G~J9N@SjR)C-Ta{8hec% zQq>;!nj!>z<8ciqTA~%c5c`l@biZF>hR*A!pH=h(@FHybVLFj;rgG?~6{hgyF0?tu zNG~g8LT-in+rFFn0o^XDHKJUt#_3l8$V`N%!`CTmy7e{TwFB@@f2@*T4Rn*W3QM;i zL@w$tFL5+I_PZ!5TKsP3E<3Q79y~;)0DVA$zY{)Q{H)UyP>ZuqA)t18W&1vYTi8BT_@#GP8J9|KTUi-Xed9q=+ zMOCsCHCxG1w1ASU=nz>^jDLWVub8S*pzwfFs8|7|Nbv-eV#OO!N)%r}DOLOdWeKK$ zQl?}Fpq~VF(sB&tI}Kv!tW@qa>~|Ps7O`itj*WK;C3gdSM6!W$uSip^+zWN}HSAu) zzR!p)O)Z^FEt^U$J7wQ*ICrNfQ^BcJ@Ra=kAmZ-ycyu`xrIQp;DSwJ;q}m#kM#$!X z_0tTApA~is7(h@%cNqVI!PHEO=q(JI=dJ4QbF59<2L*MKbf|m&AOI@PEFJ#359&7N<&22C)0)!4HNzyL~`ax$Yd>%8s66+tjXeEUMjj zj&0ZDnCiyc&#@imAKFK8$e^T%{hHE3;4IgjrX$C&M(yarGl0QszVO*u`$jwi7@Xk? zp8;u-z5!g6JhxCBmGw+fg>*bDc+v7XO-n@W)I><>tq$Cc+kakIf}Ke>JvZG=6Cs9l zN0F`{(mYN=n0A0gfw?IMC!i5r9cV<#VKS{Mixer1xhY2`LK;$%X`mDC41@>|`kp)x z!Oj4`6U*b3)&tDG1B==&RiRF|@1*GoOV$t-^w@VXGD8VgeZm?~X_#hr3jmH~(Et~A zkA!8z7QqYu7vO~eX8w2r zHkGSG{PcLJ93u?~Jiw%JR~Ym!FMI`#l{b|+O2}%)Oim45!8at^P+fPVJ$lE!i}FSE^a1t)!h`Bd2oGsrMR-_$8R1pNUm`qWegomv z{F?}`u_h5->zP7$op&1H^}g>h`vrV?G5=5F7t)0t>JYnwJfeq`JH}%H0X`M7o&nP1 za#%le92P1etAP=piipXYik!k(;#b%-X4ae{&SBp{=7PWKByN<68&8o8-q*mPqX{-I zJ)XVHVogrLQ`4tUMVny%)qp^e3vHZA=nfcm&IMQ?gT&(^F}J^&fr`WuY}wxiD(HN| z8|#R~`#TrI`@2qJ;7y4o-hXuoyeCDMoSg|Ge_0%DR)r^JTHq!yu>5lYure|i;7ND| zKrDgZhd7b^{6l&vrp8*R#9b|PgOcP8N{~0mi5nbi;HzL66_Apnufhj#ycis->@K39 zn1T`tN>_KorcAT)0qpf|WTz0u)zb(Q8cDx&>mNkeV|*Cl0rTq!5Ats!JY;6aHjncl~(t=byVJ&6}#4-{~>Qp*-%;ogeSyHEw z|A5>a@yd(f{fs=VwL{2Jh&Fy&4eY{d_c=9DMD72)nkc3Y_=1`!5k2rlHBpKie*>Zu z2@?{Mq7%s7V%>|5yTv+kw@8S33V#j(g_i`r zo`ZeVud8(`oI=X=A*7uWc5l9^Vz-pgv120Z&EG;Sh*%IYkNs^m)QCH>~P3QW;KdQ-}o-leK-13dW;ZwPo9{NZ{<+ za_lnzQaLlV1?;l|HoLZ5$W2VZ>uZ)f+hEPGTEO6Aat`dTk&f&}&zZMy?=dqg|7NB~ z|4xlnQmMNtRlKr18}byDFie~)8x?X#7674QK`J2w-jo4*Ae;bjYpjw8jaVR* zBQp@q;+ct_LZ_{ACV8|&5!l|jn2h62Mp_GGM%8}Df*FZGnpLCBC|3-bQM2z_Oh$>S zTvud9y~0xM`zUV{>R{1M1s5F`YNYC1HM)lMXXt|ng8BZLISDEyJ>+D~m0K+Zd zU!4czc<>9f9t9ZKx=fE3ejP=;s!govHdD1Pc5^aw7q5j|Q`7!830>zx*9qvaHIOoX z6KsaNXgHl00$YzVd8UntX}<$oH*6`u#5r|3 zVTirTT>=yY7smlv_B}chkT>jmaT7ca2NCyyTp`j9{^dOO{pdj=>Q-QD;lUb;Q+litC?||lz&BygqDAbZKLVIGPzL#u-KRxptfgX#87)LuY%NPiLGhnVpaE>AM^ ztGGPH_}6gxFtc99WvS=u2>+OQCv^MEf0-e4)_wuryu^^1#(>f77ZDZ1g`$T2k{BAM z{Z%<=xcxObXe|3>taU5!TJTOVHcntfd|jmV2BI{KzCmr$F+4!B>In<4?Ko|gDHBE% zmjla^11sSX>U-Zt-(v!rD9GhQOcy?n@id{wDiY@OGtmkd#Pr!y7;bgCa6Tp|e+ge5 zBsEE@*`5XlJM1&!c@_!Kp2c|0Ln1JM1?hi2y+g3#f8fH;OE^oTw{u8Y@oDPqABo<6 zmMK3%m-R3T52_R%(kQIae~fUQ@e{a(rGA+nr(yaN>KQbd)_(ZH_SpYOb5lI}8CoWv z*#CghCdpZP-L$_(j|j+qb?Uhjf4MKCz5h%ZK~5Ow-FO8l}(X&l>hVpW8T;tfuDoiS|L#abye+o!u@E~fD z21ChXB8i*cJbI$;I84!`>#iB-KRmQ6JtWOt<562a9@dJ7?U{$XD^4B&(n|mTjafES zd4s5OeWpr?^yz~*{MLpNH~AoewlB4%7gm(gtj{^IwYn(|nUkE^c|wsUPo@Ejm%I~Y z?L~E2nLDykD$Qc)gShp=e=7J$U*h;^GMyvP>CD90O%|+HK^$w41TLigB4e0r(vTR* zVOSjq+)E3ys zYiKlOt8w(-3`v02Hpm3DwLl1&rKdGeSipLvQQj$6W6DV@`^a!(PWOF1mpsX?x;5VrAFadkCU8@S$Lk;E`#SryQ- z&snChKu+b@a+a6Be{w7Yjq{o@=!4^68EH67iiGj2$1j3kBYsWzHRIRH3K?vQVh)?x z9k6rE6pKz;S;0Y^w5kP%aMG&z4wyRAJqI}KHv_H0tx#k)$!s&sNlQs%lKo}6SJU4| z<`z8@;pKNob#Pqq#p{L+a5uPD2C=YAhO-#1`f<3bW!b)~f0QwH#`aG}RVAvCj&_#Z z9bPB+T{(IVEFK#HSUfg!?Ho#lPrQ!O?LfkSCj#=YlZQKzJH(!&l@}`C)dB=kPe&T^ zKJ{*VF$w@Qsg{tEeG~Dw3OHDRg;rTjkzF#Afh(|bif`KzH#xC_$_Oh@U==O475My7 zNePcAKFXC$e-vg>%iJS|gjI-@IzWD%u)+dEfeu$tHZ9t4xqwe63_(*})nMPH^b>ic zQ@l3j5wWO;)hsEX?CV4vUsf-x77Fe4064HCYFrOgAyH$@2Ue<&312|Xc$(lx7@mP2 zX19wdkjrv6($j@cgK@TDQg#TnaHH&Z&@LXkV~QRmf6&w9?13w83?)GG<3+I*NAtdi zPswKR&kN`fc`MFklmdLpYBW2FcN)N|Ztt3^(c*r4&lJ7|kRR9dAjZdjnDaas%T8rK zMtdUr@X_oeN<7;>LLj8mRLqY;q=TkB{5UAr+Seb=ogxD!G{|sa9^b2PPk_SyO-+We-iJv>Em|-ACTPiz|hcW zulVu-4d`Ly#gCIfBALe(P<;QwLL@7r8L|L27c|8AfEwacm$9Oz#d~_B#Q!CWf@SgK zf5<4zOZ6RtEa7PU*sUE z>GJuR+B*lyqXk47yvd8Em!*iZYe??hcY4|L1`&~_s8n9-bJYjSVLKxWWO7+1| zn$>lDushz}o2*&@<+=RHvpcC1s^|;&A?l|NFhsZbyU0Qj!BsG7Cegyy`ZicR3P+mYB`MO{3UkbDE%28FX~fnRL?iX#dQ(mT*iH(= zlu|=mTlU=73ZD|qezLl2_+r3C!6KaQG&jbkE;Rb zC}AIhor$LepY2l55{Au*r<{2zm}e>TECVpeVa{BwgeDP(QD3zRj+3~$(i1{h!hP7W ztl?@oSC?_Mj;oDaZQ^P(S6hTZ^j5NluC{TtovZ7)dIeWEa=g;=O+&q9xoPerQBG3uU5_03P4u2s^l%Jy_b2tHS4ss#_XS$O>^g zeS37J-ChqdkV!bbxME^r<(f0SY|2t$g?Ix#hAO44LfR`Stw*^MM%&qy_U@QIIduol z-_S?ZI1-QQMA~7qW|%)D68L&@YyoblN4cIdAjnb?WNQd=^j`ahf616JC%?faQ|5S_ z+p)=%b%M-QOiZRc`JjaDqmz><9`i=M3a(({_?{WZ_x{GoRF*t^i{ox`Wi(r@#)o$j zJU1Q(m&xMsEW2kil_T9rCMQ>}j0TXTmwZZ$& zZ3$A3pJQR=e`z$R9?U(k(^U#z=eX>fITFHm{K7e<&vKKhbURqW5VXk zhjA|wo&s#;X|U&3Y1Kku`6GA&*y_h| z^yRmYl3TLu5?v6AG&IfgvRS+EJD;!0xNy4mPC^iysZ71IhuVC5;&V!ApPe=b!xUOB z*osN0)WV+AgJPUJqZ2aA>Gt^wVspyB{0Nr3C{xxr-wN*=EiKat7fd;4_j|Dop49!W ze{X1z95uKPYiTXHSXmX9>~V+g@z3sAa%b5{Y8~*mQIuyD86`!f#ie4$wq!|JQH6>f zo6zd;`uqi41%C+EDWTQ@#|dz53C(h0pwb|hGhifTm6LHw+MliDd^P9Qv?0q{i`@bE zNB*p3V^|%RV}AsnGjQld4!>66SHl9ie?AX3P1v(^uxxB|lpMhtg6oa|v4B*4w%d;2 zQSi>=v~Dtv&&EgCtA<@k+Y(c$1iy!^BpQ7!HXT|WHXS-1_>6jc1#xs}4Nd9!z{d^+ zci1Z@iLY}8{1IrEPZ4Ph@$kolnZ4C`yf#K6rC^SPw5SCGVrT7|>7bzH*Wqa$e+kO^ z$P8c@XJ>S0*!7T`q&w4&#QZf&!L3i|K^!ZA>FqbMqJthcIh;N~+8Ic&7Se%C~~xCa@_v=TB$Ss z8wCRET?DWq=O??jpcz6bdw&uNU6inG?n!pbCe>%|8mtUVP@A(?gp0H;(=nv$JzsTw zZY~WdZCZ56SmbBviMwbUf<9z@IkTDSTv-^n3&)U%*0S^~BT>2J&wWRw=AoWTZobBf~HZvr4Cje`Ho>D_}6n3c8N` z7G|?XI|BaaD|REoGx7kl87Fv-Y(_4?OqZ*v+4)#9!D00nCK?=N$Y3_~qdT&RTXUu1m11pw(iQ zGb%c-1LFv*g+c5inwQbF2^@b=E?iMn%w7esnqc{GU7yO8VFh3zIYBX--J^J#pu$HV z0-B&^W`dr>R&c=yD)-ec#fr`Ho`p%&_W5>2=4{E^7sz_w?`y(JOdJ|?{d`R36P%`5MT`=5UYn&+y6JBeI` zt%?Jb#v_lZx54m>ywgtf#s4>?sGz52(W5#V)UFSJ$kOq0+D%kFI@E3gdU#*E2{^^@ z1TpE|g%00mn&a647pjMevky^#Z3DxjCmk9{m?wY=H@P9dZC~p0JER#Jn60-4;wKZy zBYkllt=!-ty8RG!3~PUXgVbZoytU|Z<4RJB^B4dQ>A3Zcmp6aFNb2uWiyZbzjSYG8 zbIu|67PC;noLDQY4Zx-tIVey;6|N{+TeOZWiy3)D_GuvdKnr5q1Mc}!!EFa$zLM)9 zZmi*EEmz@xpphF*o<{KHn?Y@1ZSwhR#&8EoO2o8!)(~l74XuB;wqZ^4aR3#TB~90B zEPE?b5!pwde+WSeS}#X8eoG2ot4YT8EDW%F@bls4#}8-u-PyFoSxsA4VA>r}4&wIKshZ`}Q4fD44J~^+oxckm9DJ!DXo#ZF z5B3glIlU;uBY4@nrlz5hEy1VVD0JD$G6# zTmA*DRN{Z?tS-AN;j5_@wP)KmCbC0H4s09Raj11=yCs`;0&0dzBHO7p8S~ZTCw$|i z`bE@xaF@>^-{JEXL$C@TyDIublC?S_;T?z7E1-uVd{yV9a>6kLf=x>~B=P=v;Jn~R z&)Jo_26^f_>3A6yYhc@D6lSglr5k&9kD8djL}h>IRx;!>G}3;N0v`H(eE=msGnVQW z#s{B4`mBt?eiz7G4X3OX7fl#~cbEB=j4o*RsT6mgNRn=#9Vw~`zow~q8- z1(^*=FiGSRM?soAGX?MV8hN?axV5imwAbtv&You3UnO51&$L{wrP3Jp#a%-emX9`1&~=JKs0pBHO(1%eWXRFk_x=-ls6%;W?7c zD7UGB3rp7r;w)+oqz?v? zJq7UHgzWq0^a@M~Igc9*G17>YzfWwbHlKgoNt=zFgUL9!W*HNL%@^V(Ct$EWn8M}+ zm+qnC{XN0Kp-~AKmeceS?3GK-%Q`C6hvpxNkMxmQJz<_tizm_t-t2Il*H^BLgdChZ zdAAtPyRdz_P4rFi&+xnBV7?;S-bjH@KAsxD~sqX2;?D0O|nb{&| zp(~ZT(9pi*jId{rNAZYWxKLM(1S*%oQgS{j<+&fYM|8FMkWzyO2osKTPs zqB3ijmJw8CdNtXN@^Z~bey~^;_Y`ne#920HIh+MJ%jGPOvtrKjxpxWom2-c+f@>kp zsyJK4r3Wk@3`Ny(EzHRSRvXuZi6|fJLv7+3++Vr=uKe(Kbq&|y#p8Gs1}HtcVl2|w)U4%#!FJ`CzPyrlwSnDi&tClY z;kO^Z1Na@p?+|{6@w*DYBlv$^jo-ESU5DTG_}$RO_S}eToUL31i4Qf)=zujB#&`#$ zWx?+2P_Pl!JmR8z#l`T6i|Ow`y*PIfTtX{b*g_)zQ5y5+6MxXRjQE580umd^QdouD zVB?I0HrUxYQnc3DV8a`iz6x6vcySTT!jIyt-C!SOaOE;Z_6FD~QpkUYL4;>cfeWXS z?$&W67dBk7lt#h+!&X|wT|h&St0TxW5agSU5Hi7bX+1a!2E)f zy=06*xLOLa4@2QXw+}mYk7?K!UqwQzX5a@xSa`V!hf0+^29Xh~$G#Rq08oJc2o!Ge zz(%F}ag=cf*)(w@55d+0w$axmj1Z)Ad$#H+&#U`=6CNWwM_M^fA z3AU-$w9tJ(!BFxrpajFCd9ZVk`vWjfdk870A(ESkftjaypTq`t7#nF;K=#Sg*ur|~ zhnL63<19cT%D3XNT5u!oPNK)7`7CdR*n)fBYQL3~OQ7Q&Ezqbt?LSC(gZbF%+iy>J zcR>1t+CVs`7;t~SgQ6%Gw=kRHw&Wdv5N1`#1rsaAnr=UYmDd2YraLRe9`4R2RqjM~ zoLSix#MOnNm`dyXWD!U(-U%#uWP6YX8>LU`$ud|w~yYh zpH%S^e!O45<+XhFS-hv0hv z=B$Swmozn*>A*2U`3^GX<+1-xpi3w_!`%LRx6U8V)Cp!P1h{0K!V{KLE;3Q2pFyQR z76lOtH3>7W@`DI!RHzaZj{}XN!rkKQ{vP-u3UqoV3F36qV;$OPB zNDO~qLPYerdXYZ2T@2v2#KquZ?Z;%M_J0KJhj$XZVYmJN&#e&iP}jbu5auu^}euvH^BNsamg2sc8Z7@m#D0FN+G!^Xw8 z3wY{qaulnWoTh3q<{yM5lNfZ{qB=fl;>&g#jFDwJ>A=2AjRm3N5QL|PzoS*8(|ia; zZ{`mp++w{4;a1O6DvZCy=2sNbo`H)9QdxW$#zL@;(5Qb8`INwVcnBjER>8b*=mdZN zNhz4}z?woVgL~+kWk053VUos0XuZb_;?S-zqRXMGoI}eMo)Z8aS*h(nsk1adK7?2I zlp4#$Qz&HY%GIdL;6aIM@kUp$YWw}T&kp8;iv=%AxCJ-_@M+Z*HgomoVyk1TQmeug z5Yv7o-iJI@`!$9S@h?)~N}oJ-yw878qPuGIW+9y;577)iEXpZLy2MT8Xwzjvur%UdjN7CByk$%t6Amrb=t~$6oXLh1cLnPZRLn3~8o`Tjl zaLg%g=br5>;g>~Av1rh+$2Ewe%j|>szn(S%MbeF@dcj-tiJ<^@ilT5`S7PxcZ*ww`A@Lqu) z3F5(qN>61_us=3bdMksH1+sskGBA^Vhv156m340b33Rf0MIC%rUs1Pc#O2G#x`O%} z)H_T9Z>Ur&H*ypK$i~`57bISrUzU@KcPBSgu3L0odc%&IL$=g*h@x^LOpP>DANsRI zn1S`jM~)@4MCigCQ4q5m9;`b@*;?W`nNkvvt#hy<^UrStD;j4IffRr0A7CfJax@e> zMlm+n^%is>;yvJ|xMwmmCoYR=^~^A{qEHJVWfh$Y)=^D81q~ELG>l+BT!(XqjfF!bPd!NK2dA5?0&V9D-G=k2Gp9kgPR?TeXJ9 z7Oeq?vyp~Yt+g2>GAw^FL*S$yfgqsU8k_Y75XyQ(b6Z3n#K4bqQ%iYQ*RdhUh;|Xj z6&gPvp8KeYUA@WvVXZOJtTxsQrOXm$SVf*%lLHUkblt`1Rt~hu=;3-Hcy9egpUo4YTMixQ?*$3J*@H14SK*55#V9 z2dtIC5^{%90b+j_{-FvW{io;Ps%p%DjzfW_F*6HSU1J=SE?q5+j<`MIh}&xlf|m<| z7a}qscs*nYI2$?>7R!NaWe)?T1PQ}(e8ZrPP)?`exiH*C+JZSm^QubjQ8uv|q!?&S zs-B#W>2^N2{RKq67EWBHKq96H$J{kAM5sYYv6${*=)!-%eF@!XO{7fR!*Q-!lOyk! z&^>Gg5*)U~)EZC|bYD*QdGa34X4RT}e5(OpO812zP;tME?oo*c_d#H#svtM60#cB8 z#90S)=9iGvV;MtGu2$MBAnsp>4}1tBJ=lNMRM=J1<26gicMt)*%3d`A{Rw0Pd^MyK z=>e$_)+~RwYq0&&sPHrjubU|xGL&TuLAhFIhf(-m+7DG}^>+QlN^$U_+YN9kD}*K^ zIEZQj`5-hRYF63JRK;reu*v`@K-j+;uc^i*d%R}t_zpa1r3bhT(DBuJ+I|pM#i&Qs z8|g(XQ8rSw2+Gxs_NFPa(^9i;a=fN?{4Nqss;PgI_sD2a#u{YYEHiGVj0nor&Gr_l z`%qJFZ$&3Gpz4SnMIO`5BfK#$A#coO3_-cN6MCdVU!tbTzA}?%5AtvW_52MD2Pl;i zhF~d_F$6H-Z683U&!H&?r)ydYu)l?3>Y<5L&iGwt1CIcFc)F&|0bezd3J~~h03VsI zS?_;sX|#|<3)nbisz;{l z=4aZBOprE1rt9ZsI)zL%TkIQT`^5W?*j;F&MdD)n(ZmEbahsAj$D-sldb@he?w&{$ z)$E)|6-#fUJyW6cLKHTMcYX}d@MJ1ls@{Kf*6y7YW;FW1+bOnhnnt-E!>1dMYA6_f z$8mOxvs!(XRNKZF=J;8`u_dIpy^may?`K1>g{UGps39oRhha0rxCLEpA~?)PU=h(u z+k;>x71=}BSVPi`I3UNT!OA&7cpjOO4*YJN29`wU-xkPbiv1Qmn*t3-U3&F%CqRD$ zycLjykq4Fo=<@O7)EAWC_%t;Iguow=!Y=$xPopVsCtU46By3@yHeuFW6DItfoOe-%mq zx5U#U_xPO}RrO8~Z@~gfyvX}ds3m{g?LNq;vF~C;`+`XV%S1&XgENE;Qz;uq z|BND5vy=J*FekpeTx~)N6ry^Amrhs<-<#=WCNGpHMY3lFFjLXmJFJ{X7oYr1at5FMZFkx_9>sUr20EJVf+D80~gt#yCXx6es$ z5j{Ys9?IMPZ)gG_aRVW710j8bi^TdlNPs>FF9ul>jNR$rTeNV7tT_df8fkjxU}`As z!HI!<Bke{p`u~o66f~U+}^HUR2JHr2$fSJee_Y-cMEo=IP-ttctY62tCEZZRf^}&X(W0t)EXiAIy@FndN{}tx)U}( zE>A;wP-XYcd$BoOT!Z>iv@14r9Gl<^-i1r)@g3qkaKxonyj^_)Kd6#RUrv51Xp7So zx+qn8BMbD#rRFdl#wOuV$`E?Q{uFegduyQ?44q3NpvZw;)=E=qzJv_9fe<+>Y zjjqf)JaRHPIuz_CK#)4OeQ~AEEv9Kvm_X8RxO1>)3pIi&Ut9;cgOJuzAvAF!-hVv# z2J@12AEI=

    CC$W+r<;GeTp5@PGvb0*eD}9aMChJLCDQy|J~a&2mSv-V|<#AZTmy&UA|26sd30oAD^;f;G5oH>%3)mE?z$#0BW1y5bVg z>YOxsb4z^#0=R|3`FbPDlhc9-5n5DQFUo zo=jMiDzz$#DvN50e@&qg*kIhxO73T>M_6&NJYL@cP9~!`d0bLGoO$7QN3b$-xDF0+&aLmgWN)ee}}ksm|OYWIzngs+I3vJ zo@+7BKIRDsf+Xo+=_D?t!h17>l6NjvugK_?NO~- z<*KoLK(V&v>al%$3~Lji*nMB7IXB4GB++DIEImM!0E}Cu*s)&xZo=UrE(NEmL-=IgF4SWIDpgf*v9x8u z<({n&n66y01RO5iaEzsu5F3kBtCoX~TM8~#e~@%sg|Py=(&2R3A%cMngwZU+T!)0E zNSHTqMCpZo)kI9+r7Mux5UelL)eC{4u4=m+rE6rlAP<>VArr|bh$o~nrfVLA;?n^{2Y+R5GSFN#$2^J zKo*0yf@?$iik1nuPVkW&0Oj`EI9tb*;0E(cT)LJ{#;1vy$uErSVD zVJo^j7K|;Gpj}HDjw`F}6q;jdXiha+(@Q;Hr1TQLz4lEGI1WC>eW%=C75VKYI!UVQvJb_Y1j)e}Hm7q#5#HOdDfLrLaJwuu#9B!JNs&B)yo_D#)VK zNpG214VDQ?@wlZt?3D7bD22j&mBIpz!b1IFa@6CLvU*l2k5DOIx0J`7QXUtjP?)b$ zSfEi@s6Wo^C)`r1XO;3KmEvWiVPI1~(=a7Kv<1 zP=N#=cM^P@!4r>6P=j|TeDUOfk8Ey7qE9=CKFuJ8R|gCZv9mkFr=e=STaQQS)?4(@U=svwk74j(ygDSshzy-cZdX+_FL>TghL z5^<>n-g$&~37`;f!JOEme3#i1=!V`(dy;bHW5$?oBmN`#;wy$PKBWCQi`A_;OTIvK zjGuU&rCXZ)&+KS87EXmH$Kzr97f6w+i`A#<3)(S|A)nEZY6#}nf8zdE;yx8Qkw+p} zwusTwRD=dInHRDlS^+?`5&iHRLINiorU{<+KIOlF#2)rvgv4)QJ3G}B%nu^NYfRKU zb$UG3oN6XdL$8ac?hF}IQA!~>*SwpUt*@Z1SHl(#8hows3S1IMrxgh2`K)LifS1DH zSnGgrQ`kms3S9?4w!0bLtm8ap6@cXz2?-q_Re&F0$koS==4}9>*J8$5ln6CB@5v8p7 zVfh&Yf{^z?Br8^sDtJC`6*}ifh}Q%NR+CEuGFCwM;E_k$e_74G5W7kf*?xj#ct8#c zvr_BF$y3Hp*@TE)A;Jx@B3#iO^jxgc0zmEuT>x&;7yWWUAxtlH)Mpm%!V-QvUPsnO zg>6zA6t&3jZ&Eab*nJ?x)}q+wt5?igs6_EvrCGryEUb8HmCcH`R@tKXT9vJezg5|$ zWVILQ*ukj0H zLAHYjAbjmg{x5bE*d;2;kIr>&&2tZM+h-Ep{C~sie|2kGpQ#BXmN9fI7S@F1I#XwDc6OIOq+2UoxPLfCPYgqcXp--q2ZX5i3-xL*}F57Qc8d1X9}Eo z;)9)>p_{>Sg;+xI%=0<*SaiZnLKYUxJr0e4@4h^fGE*nCR9tzD49C|TM%tY{hG4P? zb28mSfBp43f(EwEktbj^?g9VhIko)o&`|%Olf*bf8}}#t}_e zc}Yy;Jw2pra6IksbJb%fd|k%`N2&W}aCL-n>5-xS{^Uq@I@vG8QTB^AWkif-z0vsa zaR14S#K5cv$A^2M3?Q@`99GFinGp40GSovlf1dgfq5&69XX5FP9&x}x!S|?sNj9#=h!O%s0_|jy3eOoi69*~eU z0NR=w1JLI*OFV|(%CT~bRBKt$a)+|_80{tPI_P?xTd?$#MN|U}EkZLLggungVV*II ze;e7{gakgs@AEmwXQrH6OSvb=c_p`2aGuS10OUHa;$BGN3+q3;hWoz*plX_`s zoHXN?#6j!nWpU7YhFPXJh z=Ar;Xapt2I=LMr=J+DY9p^XfJ z61CzSE7g|b&{|(+FPW+-6XK;7j+duW(0ar%F_AfC+wF>}nu@5OVM`yRgH!T-P#Mcg zWlcr18A`TS)Zt=~X=<2EB6vude~#v;&ePQbM0@{e4ihlLUNadiz{w%(hNLWPp#nC% zslpa@JXaX24nwZt|15zrU?}@7#0GJ^MNLJ@4|opl69TM~xFjb|Y$}QER>u728v)f00ioilGw`dm6>qMV(sX>88Eog4}zMJ2lZB-Xl}~d$TcS zQJLESZpl4Lor|jP&z6RBKQNok9$FuT_CaI{AV3$o#dLug?x6fbo;$FI7I)Zp(g*xF z2-h%nlyg8^d=Xyr(zmxywnj;jI(yHY;Ee`ETTlPNV(ozIqh z3ux8E(Qy~)hAAK*H}vClY&3Nrf6ejq<09flsHX@!vJoa;*f04B%5A5c8`e;53=%nD z6XRSW)z(}{;{J)l_%>O+;9@h^Gxv!~k-Sddy}x(&ZT`VQ81xU_L$ShG*g2*v7jDpbxkpjO_okrR3St=;(Yk2Z!{#5QHNkLe+(YH7$vc@d<^9~^lsOY zroqAbv#BBD7#l-7G){=hN+X&+!;Q_?Cv@2V28*v(s#$)3b zf{F_QjDBiE7&1Y(#$5jZ(G^@VlzgR3^5eK->;gINv+u6daEqczX=C=S>J_?}<%`)^ zE0qg1q1tgpe?n8vwCRKRH#NC>VZsYW$w~uJQc{$nK8{l+r}<22=jKu_UdET67(;IK z4!Hn$K!?Bfa908EXeQ1NEIB{B#>Ofa7RVh54cQ2Oki%n%Gno`3uat9M6iZGq>=Xhr ziCxoEQxoGwZZqtL+AQp3(cy-S>2>?v-CpQpSdzx1X}GyZzJG3>9c5eYVrPZw;pIg> zqm^nmEnDtv^JbhGv2}&IW%UcPWs#PzzM*VDDM|$?8>n{fMZlU;Tav}AGb`Z^23i?z z!^T#~X<=|84f}YRYHAqDC8@LAL8G~R%+u%hQ|&{@o>141zm|(WI z+!`%kYB|;^uYblB-d`BZQ5qP3P)*Wl}Kn@PH{#bi!D}>ey z7_7%3qi&-nXpgluF;PX0dL!oIYEw&0g`1-ggMSZsBf+v@q$E`um1$Es zYby7d!IzlIOU=N`7;y4I;3pk4mDl3(2#&YlcpHvKg{i+A#}ha%;CK?pdxfce7|%W; ztPcwnx~R0b4i;l?9mEFAECcVp+#?D?tAA%IJcZcS78F9|)&pxvPer2#aK0PbN!h<4 z1~dDeGYy`Cn>}cXTV@(?-$mz&-7~xJd+$s)&inX$CqF%jbI2U#-)TON@cC{&kIghF zAv1J(ru#VF8|U}#r6;@2%}j~{_2n~@RMd^H5U-pOIK7Ha_tWVCI=z}suc6aJbbor7 zPOqcW>*@3cI=zujZ=%!h(do@}dMlmYPN#R!=`lLJlTPoV)8lk{51oFWP8aF)6rG-? z)BEW3emZ@CP9LPxhr}~Nyz-;;^J7Bv9kF~KQ7Jkh|A!Z=P7gtDf@e?&&H&iEA(#&I z^nt;k#rwcu(D(F#!C>q;;?aeK$F43bCfW%d=Xnjdpp~h;^`;SSv70#5&POoQ=v2@NOlM-F?Ej zgr*N;hgc|C8iin1VB=Ygji-PuL|On$c`Nu3X(1t%i4AQ)s8@Drz^vJ45|aYf5Z+6G zUD`^v5MFu(KBXW)PJ3%0&s}q=ssQ%=OJD^zAR^>7kSj}A!78v#YVZ!ifD0|dwjylX zmq6bMF9DsGaNh|Pe}IWw4uR@;x&%;Jd+l9hwqR+7rawgNmmZQFo5Xpk_Ur+}K)~W+ zvjU@nE$Tjd58jQJdS=SNBbZH>Lvy=#U{!h*K_ea!yF4=$SM7adASzweJ}(-y{a_bR zreqVo+Rc>Gw+~!~By$a#a-VA%E?w0gB29ZZM$_~$6sM2sf7d{w>X^W(N$I!y;S^%V zyc&kc)w1unOuYb80}8T_Ue1FDgEZF*7D?f^Ai{XjY11O&y`i@A6u z`g;)V=BKf;9eE~Xo(cHhaNio8bxE@L(Q`Z18NLUAcNHO zGCUcV$&K4*f2bWeQ`9g-xoyGYjC`E2r}3<^gjiT-_mIpv3`ZgB;#DZ!c_de$!ls4z zI4_kQ1dEwno|jSwLEN`Rd4>IQ*&(k$`(F(MGz?Y<4eE>_sr2RaYBaf2@TWX9 z2jq^U8YAKnl7?MnSHo0-HwuWVVXRy%xCn2804`m_SaQ(zhe5$+G~^?~$@qUEw=i9{laNe%~Pvj}eKRg@XDwl-!Qs>Ts z?e;$UQFkz2D`vJ`vEMJCMnP=44*-57T~{S8V#+_6*baP>fqII#9}(mAVy6BoWYm|X zN4sZ`L`_i*-ujrp2yd`IE-;*<@kW&N6XG)EfAR;or2UB)dyV_FxV#y$K1&^%9X6k% zS`-t!aT=9?NSZ701r-0dcviqa$EDeL6B2xuel!d8-E*`!piFb|77RPcsq<3%6Dkt% zAE7V?{-a-l7eIIo<&ajy{xiz0gwRyJMs4<0r{hd&xUVA5LGc$jzgYQ8oD(VmIn-zb zf8?-5|Av5&dp6$YnK7>b2LhTJU~xj^&GY<<{g+gzIi5G*$%3i-bv&sfgB8Mf5Eyh= zO}+s;62O{t@wgu{W(DNoyzszK#aZew{!Dug#{cQMq!y%6b6JFm@%c^edL-e(XC(E~ z&tN2eOVCnOO7pk^HTt&GfZrAnF;r+>#tCqzbEW}kOPzq z)ghZjTh_o)^;Y|zsEOq){61#k4`eJjGQ_wNKN66}=eIkA@e7B^75iVs+*xwu3*r1+ zO(JIhm=a8{tt>7=*uSG}*@cFC<|kChG8zYOr9%EkULpTOKxEIehzj|iobhHZf8;N6 zh5RK7`RfIRe3fF)FDT@zlqH3{UvUcgfHJokg?tUPgt(B@xe)WtLY}=<%6ZGFY*Q%O z>mb~vwtJmIWAx1mWV9G`61@aC2Xgt`3AF=C<4tZFZ>AqSe&6E6k>mGm^zxDs`*y^Z zBlc02AFKHCJxlHK7&3Q0echhNf4Bs6u2J5F^A;623GYIJ)fj;9W)uW1{8G8fYELM@ zBp^I+`w0afI=R;A04GT5)X_c^_JTraE;QSoDJn5VlSO`-9&(vs?L{7% zFwLlE-bb%fsgcLK0ZQ>4hJRAKT>1(O(+?`-E3$%COz1wT_D7t0@LK&5f2x7_DAhpu zm|}mFYjDN>7}elv_>}XR_=IAALdh-Ce}Ej)>s;GC`i;Rw(uNR<@<}c+eKODy_NORn zuE3hRE_@mV*0_g1rZ|iHTT#}}P?N8wqJEN!`Z*M}%5#NaQ02#^!SgxA{sIcQuCllT znf(#{q>&8`Rr^bMBfx&vf4#X0rFf3tz@qqNWww&(vp+>hO;In+sT%PWuKrgQ`zr{g zZ`4<1^|5KdSMrSd7mEECdDZ_Kmz}2fSKYE-LD|1fWnV*O=a0fSQ1&hKL7en_1L^M< zmvL@T{#vnTmD%{spaL%Qq_~CG_AB;ZD+A_SdM#63M5}z0Dv-Xlf3o->74oclRk5$i zpmZns9{(1==3`_$Y5$EvL=La>-&U~B`|a<@h>%2e+W%YrzKjm(!ptB$y1&o9`VYBR z|53jBeX7M;`n0`p+LA5ihdzbf|sbqj{o1O-!msMtTu7VN71uc*gtdbd-L zEB3$PSs30=yRov_f9|W*D8;|ao69KUPf(zB68hu+$xvF)QC$0{RGf9LU zUeogRY{?L21W9*b?$vOLVeK0jvb|wqJT=@fnaMazP}~fs7!*I#(A67-T7B$Xw+xU9 z9VCwBf0dn$JCRzwOs$?%tEbfJky?Gqk%`p1sqI*lntyLke^+-;-yp#b6zuOh(m&YU zyQjCG?>%q(T>+F*c~79cC*1M^t5nv0=c4jLT;Lytaz43y0-OG}-=gY^8+IimP4BMJ zDFy;nlhbKGIpOT;9R@1nRFN#?Fc}Lt<=OokmB;bO>X!h;i2e{sU*%;IP+1p)=X%Z=sQcLa~H8>?N@@MjLM+Dqz#fF<6sN+bsVZW!)O z!gMh;yk}~39Qmhyrl6tP3=;A3P0mt(O zfulJ?##Gm0QW9ek_!g*j7&560n2Fh8q&2oQwHGWJ`hL21I@i^iaa~L;8ba69M9~_X zn+R*Nt=$iAqBMo3;l#xY= zR$*#ue@tr~aqcvUIljr%wwP9}X>GG=!2+u@t?k&R0WcAsJmGGtXaklk%>#(K>KYuI zacr#@)eX2tMQMZ>IiiHMLBO!-6ve^-C`6}H43!gbL*RiNtPw2w#K$q%iHhRcd=hY1 zpr~Omo&X)LiY+IVDkVV+GE5B&vjo1HYKa~*e>}C|Q;;S|9iAZ>!+bwEt72Y-j}+ql zq77K&%FO^=NNZ`GH1Ww5)rA0&K2c&1zz+%-7>-u_H=zpQo26L5sorY01H3T%3Tqk! zh|cMlty>ij;v2C8^cr1v&epBwAGa)i;X)<+WzG~_wQmIx6ZUYVuGx5@2ZT|cXR7Lf ze=>siiW1KvIuJ=m_(WQQIi*kZo=mw`=J3BeLMrFO%16;2BMvY+ou7=@2V1% zRPfk$+>#f>?YMDg(=vsfoD~*!2`Ig6 zL1d9vnoaC?_geWb^1CbZm1!bh>D8?Xe++(b=K;3g8tu@zOwKIB9F4W;m@6tgvSEIZ z8WzA};Dg9utt=q$7r_Y;m>&3pYaqI6KE)plg!o**=P;j(F?9VjAuxzL*?dIpRKOh; zTBnK&6rqHUVJ=kFV}Jp8D-B&JUY!JTTV*9s|I~d7+^u0aiw!5CqJ%I-hN%G9e^;tb zY8*x|ortH=EFj)a;KyG010hdm43ZA(5(zQ@2loRe4e}_R2xLG6dV5i+TdTM0qg;p=k=8fKzs+HOp3gG|> z>%dSR0ba0!lO{36sibn{X4EG6e?4GZ`~uSSjPngiI}`;+idAt`S!n%QP6(#>Pfcd4%MpP3La|1X*p_kCoaIi)EEp ztZdphB+rS(T9meCg9mdsvYv*s27g)#OE@6036O4~iVzyq>`-tu`DMoXf39q>D#^K( z3Og;`KLh!WRx*RV6nL@-Gb5s`9LFjg6*$)5ShrD>ZNjw*-UcoB&H;xQ5GEQHX^#?D zG(ZUnH4YUk6*_!mL#6s}C*M=}AE1>U%5?Y)s2TffDy=MeNAI4x<(v`g5e3JQ9(DDSoGa$=I>TEXGr+p)M8&R(hW z+QoAfpw6p3VW>OSS$3(sWl)bgpIs(z6$1R&OqeRwYM3T~>Qz>MYJOgQe187D^Yb5> zpT`XfPvFH}C<_d|NMUT9UCEz{57SzQzPcR0Q(-DIuD%)(0kr{#__QN2Dp#p-cn3_+l_x! zoTBbrzNlCs!o!Q|E~)nHhv(XLU7_U+iR~v>AARaRd~*FzL>rxw&AV~==FD&V@Ztgo z<-(KZ{>iLe{8;uF>QmL&*ipJ{`qx*h+OX_f9Y60;_`)R7@QdIMcp|W zS4}FoAO(w`?T3xKV@JQzg2*5DYjyvkkGs=*D|A!#bKenbljiu4>H{n#zrYaaw{%37 zuUR0!$NYKCq&2oTM+<0OEia3#(kmjX%T{~Wu%&ic#oCH>kqxRJ=B@?{%AwP36w|6J zG{TtE%B_H~e}cja39A5~aV)m$%#bSySGJkPc6jo!wkxL5pwVgzzP?8Vx$Iv*Lzc}5 z(W;c{%{5#2T+8P=K1W4C81}Y8gj~8hE&{v)cPbE=5?Niq^o9m0kZv@{wKj^iR*`FM z?4(ks*BNzYowv@a^VRw50(HTze8oiPB;AHe=vl4QM>h0T_Gs!HY`y}At>xV zgtJ5YVh`N@ln9(k6}Yw^P-o{Zvt1B0q^q{$kpICU*R$q~N@fm@VAJ3?dG~34CaG0& z{F0@G!*B^yIN(eB98cWgbT~SIlca?Ukhi2{PCJwg&?6eKIAs#2QVm27r=}W?@P(C5 zU3$23e;uPt$awWK-j2L@;UkB3-`3MVxckt-gFUOim}^f+XV`A{3`F^6XW6?Hc8`g0pvZ=d2FklJS%Tj#{xr8aUE2 zYCc(tW%G3k;8IL0tpSoKiglt{0XGatI`TCq%CSp%^qZRWBJpkZ)y>NTAP|M1qtZ-+y5dIHDwnG#wV< ze-1fR=S)$MLv`8+Z+YQQ(5S;Ekc}SQKq?mdR?=-9rf59zuq)=RG0iy`q`8ifpK`XJF3sK0 zd$jk+#PlR!#loXL-`HGWjFXpI1>^h23Zd#%-syo#j3km@=@7|oKQ+)cuc2>r zXoPlwlJ<;)Z83!i9W)RI-muJb?z_d9_U!0>KkiSx2^vNP;jwUkQMj>4&=f2s-k2#Ex{ z9ae*I~KjiW(zq`>uYpJ8f_tq!UiCb-er3@ zm@Nk-CCS)pO9)d3nLaGFrN9RyXtsZG!V1;5Pd}{VEZ|TL4Ew>%AKy z@SUv)FWgds$i=5LNStKAe-LF^3xFX~07DcZJ~QkZl`>PWFctd5n#MZQWR|j0WmSVB z-fV&jR<@ho2KckI8i)^p*^Pxjg+rji@);0ZFi?EC6 zyQx6t{yh>umXOF@At|cYQ-bfTz{#iJ`Fkk?;KB>(ny!M6x3wC)B2haGSA+ixxe#InC-IUbk5`pkW{H#gp z(vQGqh}r|dUj=i*f8JVE0`7Ay$FjErxt8CmhqyfvOPC$`$*Txk?n6l=bFd>A#gN z_p+P{)%Fjp8CacO9i-3-2AGB%nmjU{WWgG-F)gU!p9bvt*_1dZMwQW+TpP$Vj$Ql$S?v`6 z2)H@I!$NEme==AoKVF*S_1AWblRP{zc3yi)YH~uwzJYe;*GpLTj_lTDoJdP)V_sW1 z@$qrE3%NvZJO{jSXgp;MrvR^-f`w5kogN(;1(Q0E_d8SG3(NLXiLtK9QxH^+Pi2Lt zHzo-s;Uq>Wd=lmr8F#1B7`3=2Nvt|PahhEEEfwr8e{FWBw*1TsY%lr3x@3B-(W~cAA>H*t#f^@^&N%KG{(-DVZM<+^|YpzcG!tD19`BqnS2(& zZi7U)e=rtlZN#Y!RvZhu5FQJn9V&W9Yiet2Q_+|j#7`Z7ec-m#@Oh4T-C6?nu%+FQ zWrg`iW9&x0$$%J$!D=Pi(N14wRWFPbl@)o5i60eNm+#^a<`&%)<>i>Yj-?=R%JN+W>=C_BmbfdaFOe=bwm4dV-|PJx1#itneYdS?t1^4>C# z@m?quo}eph8ak;)J=S@o-rtX4aE-?)Xr?C6biSCdf*AvM{&e(08^m8 z83%9$>RWLDTcExj#||7f;kX3{Fb3*@FHqkd7xjB^-75;p$aP;p?S!d!U^6drHWsPaj^e$Cpu9>w{}4upDIOAll}7>$1OX~+D{2N92%^Vc2a(ra zXqKaDB_MeLqBghJeiPi*$=lx(v+z5GJam~2&fu3`K(_DY41H9u!^rSaf6j2T=TQOe za;~;s45}9{?Er;FFmi@-`!3vq+6;J{`*-8sHyaPS_m8u~J3lCA2C3IUyq4#H3_#Qs zAh$4j{n-+7ZM7^>cYs!JDPQeN5&Ei2%?(N+2@`-)k!{D)xG#NS_SN|KoRBJXCs>7U z=aQU3o=Jbw`Uohk3@m=9fA-RkkW|U(C22Rl>PslnrFC#r`=8HY!Tkn&oe)d)-T8UplFx9l2Izwh|q-mX6A7WxUiJ^`8IZK?A)kJ{nGe}|47>D{#-1o@#p z(BVhO{+PAGGP}+rCVyeG`2}|+CP^Vs4jcXG;oXB>E=UsJ^_U>;yLNT;slEMiqo?cO zU}KX`mv*D?$dSRu<^WxK?mXOeu)C+5BKHh7b;xT+6QJX953fRM*YL3E>=XjG_w7cO zvcgN11MlSm8Hc;$f6a|;0eM*|?wR2e(j?}4s6d#P4lxAj8@66Z#96 zvu?hDBInH=SDIy}891~d zsLxodG}^Tye}Qrl2}ia?>Lam8OQgfQyUc>T0dyM(FMvw1e`nZ|5TaC}slx{r^JT!I z)yhnzoGf%zX39Vh1ae6QcDkeu;+pEhEmk#q#sZIqDMhmuR=cKmyQvVf#mT40X{2LFrsvfIZR*gAYZ5{o*rS zjd)!$UKf!`2D_O7&QT>tj=PZoOR4EUC14J1PUMQ;OVMzhpSxCEpmMg=H7KfjZ;l+!?2V{83;_#C)ymWE+ zpbU>J4u7!>FIya*km2Qv!;><6)#C6W8D6nCd{~CBcEiuYpy5=ERBKcebqAkm&oTeFiK=o7kE`N2Da?mBHwm!^>wvs^m z%`ej%`If6d#1=n>OtUhk_ zyc=|Mr+AzUB=JhT&I4!SkArjuFLVobF(|w8gs`6w129xJ=HlB$d>gD9uL8mMe{#GY z1Nd=4c29G&rE}QPT%>HszgXb^5_9({Fy0NpH=ZR$xde!Bf@n!?dIN0B-RNFr{j|0VPUrdx%nmUw4K=B`8xo z_r{|N(e8ngMft+!-1Z%UR%=(;cB^PV@h1m?aB|G8dxihb1v<+Y^ zQU{WBiyL{l0_ImKPpBp(JUN)CWvbS|d5}c-xth} z76oZxD;_N%f*~9Q6(YDA*ELXez~>zzAJNH?wOu3y!gz#9K{wvO7aJdX%a_HH^!Zm| zmq`B!G64{md;bX>X*enVxGMZTWQR05)H_bv`J_?-7jMSb|C0WF=hi0vcllPd0sejO zS?79d`S$MqUv5~{S-nW>PwK<($WK!nj2-UPu-h2%DEL9z{hc?ig6Sys=O>7HV6Wo@tZ{6+o%&!GaPu%*1^v-mks>`6h|*tR;{jB!{@bpUeD(ZmCXt#f6!D^JjG-Ykyg^s{(h1a6%7$Nsgbu> zwt3Kj#G3lCDYdV?9-ysSVjb=^oEy@B5X0VZl8qurLHsGo zrAm-g_Nlm6-0!~Wx&O%#)80sH0Ne%}j|${gO+_p8RNFQ1a{pxQmFaKJdGT)GCXc5< zf29;SEv3o_cHTwj@sltfdXmCt$-w9$W%(rOhd%{E{mCb%!#klao_q7BH~MCS_9VEW z(_mJD!>$_@C|#6F=k?%ZiKyK;5SX3Y7a-1PR;|ml!vo=g!gOJj=zKo0T2}yXOHIm0 zY8HLE`%+_Uhe>)F?l=2WqSXB+Vt1eSZhZWO{aWwL&usB$+CiTzS`??MIj6jIeGz9q zoTcAQsXLX{2@O1lk+`7N@D!D60vB&EizT`+YWABimCnpTsZ$=F1Q!K!xG$BK2yKK^ znZ3zspDavEzS;nu3$tae9SiFPK;>jPnR_>#NgYm?U;+vuf2w820Ew)L{o=~pG_vJ2 z@im~VSWU)H)|HPTW1Ea&kW2vCLxOclI0RDK|y*o2{E;V*! z93bH^eA}>mnes}l3=fHW!1_832tU`mJM@G`hf-NWbYU|)Q8TRD=-L2KrDEQpi8JTP z!Zinf?lvRMe-^Cp@^Q9tDRk}fB_w(a_OC0IKhtyi%+z@z7JdDbiSZ0OJ~xKBkIZ4& zLCVBAW#T;40?zwnJ5oFQxKGx} z7)g<3m&HSdPCov{)d4X6nL!*pP-H~{^t9*P)F54h?hVHd^4WbB%HHu0N`f9y%Q!z} zf=)X*&%!d0?&Pnm#@E97y6i-!-gh3~4gaX8fLko5?48c_IN%hfPM<;ZCJ2?0Tfi8+ zZ*+KSe8zfQb%PH1eZ((<^lOsCgG#U z@@H0`?wW25)zdPEMWAg2G<^-CP&0L=6)iE47QGDokzF#x?+VM%&a_QwR30Eow6`C|hF9 ze`;HE8?ZaupoI|yoMyDC5lEZSHrL}N_~RYz=BQi?fwtM)nyqtgWr5;FtW9fo-Z?kLqDoU6f5mS>m73dITLSQOU_u$wTjupztn}g2KPbvS zD0JyAlI#_L)(QSJet|2kq_D}h3=sEzQqqQ^reJ_hIG2E@NLczq0-&xj)wQMyXOZjK zU*twpg}=yZ)2K03_Aw!yMXGQXS;zh&8%;F^*iNI#R9neeq`t${!1o8^ez&Q1f1Bhi zGH$ASOntAZ_L}-WavZ52Fx5k*-bY>|^?p-5YO2Rf^$vC%dEE6K34f6TGC1{VlmJOkJ|e;)3H%O;`T&KIqdFZwRN7$*t$)2!T$eWSOMa6c_;2uz?hPf`eVa{S3Xh54fKN3BvshA1B<;!n+9fv&c)hpT#gQC=ew;0u75& zV1O1f%4d-%Q>)__I$Pmza+@r+DrHuH^E?EhvW@=efCKuKk?!T?Pnd`9B^=v1JFLn zRYD zfCh;Gu25lEA-RkclFJ27RZ6#gbACZ?%@%~-?aUU0?z;Baf87J>KGj1x_dq|Y*p35| zuz=t}wacu(eA^s}xS)0f;ThGglr?m6_mM^SWqeP9}W5 zlwt1nE3)fbJi};gF$y%%*>q*160R-Nu;WauwMVIIXJyyc=DHS8f^Et@_C4A59=klp zvaZuq0&Z)lDr<#bce;B5Swlpv>6?)Cy%>fW3`2=Oe>t5U#b+;7Vicc4R3AkxL{#Ww z*)Kzq>9x?H!m#ygK2852`Br%)mw!mFoY^#FJTGqXyb^LFfm5gQD)GGNf>&WwNqa!B zI83Cgrmq5A6upwJCK$5^1S$puSd3Y3_^7~`g?nO*S&ZOQ)UdCms1&;joS&yICaNGC z3vWj}f53)jpHT3dL^wjhZ*_yK=lF$cV1$N$MM=SZrA(@N?qZ@E>RRD{LU8zd=$!`% zW3OPyf>4gfVDceLLw1GhMV2AdN+Dg(DVe}QHWCc(=v2_QpO??m_h&410~?gHy&K6;L1|+Kfw16{C+0Tfb zf3Bmxh96a@uQ6_bf|`Ujq)2b4l;_j~zJSjE6A}JC1%Fk9ze`tg zpqcj;V~SFFq8KWTKokvsmSWAiv7$)3e-U7z;foY}#SNBeUv+O|moFxo023O1DaHCu zF8Bh1|F;MaBRD*$5Qr<>G6DY#pM&Ku9AnZvvrV{=N z0zV}KBTk?i{saO)Edy(uKrQ?@0{>73mN|iX_#p&-Mh0$n0*&w_0>2;wTb)2Ne>{M| zFUr7jC(s+-i@-mUfo)Ep6>dV{mt^27C(svOhrnlL;1(y)AGQ$qoD8gR0t4ayhk^KI z8Hn-8)eMIJ4uO9r0|QQADEu`9enkd`oWKGa41kU0rh~Z+za9?LZ2p=I>~I1Lc{YDT z20{s!V;1pjz9a*8I)TMJoBvt{f8OK-mhf!;rVPB<2`uH={I@dj7AG*mv-#UH@Kz_V zEH|6Wc{Z1OwbeiR^?dnFzn)+EcjVXeOaJcv^*sJ2`R}n`&*Sf7{P)dY&*Kki*?&i~ z2Wmf>{zwF~=kGClwp`hA73h>(2*|t2^Y@rRL*oD7Jgm?;rT!bvY3<*HfBlabwLCMo z6%!Wj_vsdE_!aw~`B(My)i5by{1B-i@JDpH8t(F9y#EA)y4VE?brZo?88kIv%wlp? z&GDM@Q;JwbpUs~MT8KKIqCC2ur1gd%XT@AnqpAE05#HlN!oPA}Mog^m7dQ>z&pK)R z*OD|yRane%niO9qHlu`pe_w|z%E@_8uCc$q~s*?8YTQm zO6Fmi4Am-1nNWJ!!o4<|uE zCyI)4T9nXRlrVhxS@zo&B$Qvsw`bFPbV+*eSiX>y@MB8&52&}_f3-Ma*_!Xpruz7j zRNs?Jm0B}f)+dzkASHQ`-d$k;F)nVp8eb?3lJ{ma0X{CeY!?rp-8_JRjGLy<6)pN7 zP{IZ!{2?xDH9ms7vVHX7Y#JX~lEyQf1`VLyP9Gt$k1FBMnMmy8xx{3Zft2eEAi~LA zSQ-Y$MZQRh2T(Nte{#cWT+8hl*xj^eI}daXO|=ij9gSOzi@6EMC5#42?GG# zvcH&@`~}%+gqE%+zd^!{{7dVjWjAt~Xn zDB*i4;XhxTuxw2L?>eRY+LBcNS1wg|0L3WDzf{8OC`mx@f1)|Nb3+IVfsx*ZHK-Je z%_V-?LqTyGM&vNSp5wqMCI*kJ%h}xjnsd)znh2m*u8buFs(Xdrq{O=1W~+(sQMZOk z5$s#}&p%`4zP z$U*YVfPvi`2Ehf2Lc`t;-!}RVa0sK3Ve%pP?=@ zYWRYRI^3^@AEWE5RT_o7+Q=dOpz03k*QkpZh=*ikYP*N&=YqB3wG={$q5Fv>r?zXd zU#Etnl+Pn-cne+M$Vsf!c5mXRdpX_ST-&{wgJZPn$U?qF=H<5CTe+mjl-urY*&4ik zNev#&f4xX;_YS(v)q)F-QghqAbKx`8lXTCvF z21=qBDDxE9;si>f_#qh>aRMb#{013V;{-~g_^mRq%n6i4@jGSUW+%{KqWFRgY;^)9 zQT#y}SndQ$qWEJnu+0gSMDeF(;3_9j62)JTe}P+^KuHvTSq4@(fs!cxstnxf1WKa# zuVi4r36w?);RH&e_$M-OrxPfN;#aBM z@;5nwk|=&a2HxxhN}~AnGVm5BP!h#&kb$>4fy)rZ1{1{}|Brd=r}M{tI{%)Z&j0GC zfAc**n}6bG^FRLC{J#I3f5(5$fA>G&i~^t z=YRCe`H%l<{e2RV^j32_!_o~D;e@R!39JZg9KdVP>x8Em!c8zq}@0UM!kLN?KA2g`|~of*~BsXi~N%|1b@W8upzL&gkNZqOXW4iZ~f> zKpp-<77rvdT!+X4GFRg->35ZwyUc8izv3q=voUrv8^gGy+LxTdJ8TS#REM1kpeO7( zHA&u#(%X?RaWO7&6~5zC;VNfyv=YtsE$Yxhf9lX5P>25Qk`Db_bX=$SC!D*K@8kTS zQ2!a1*9h$gxK!!?qT1h)$)QV&sk^=_TZP8l-^rge=DvsS`ad!vb=N=fPwKAk^DpYI zf979N`Y8T@f5xbr{w2SgO0u=2Zu%j0Q~WNB%YWhe{ex4#f6bNP-*P3euhT{UE{nun zfAkYsDDI;Fpx@ap`WZjDZWsMrwSRu?F8bx7F8cX`E}DVc4C=sW9&ZdLp!np{h^j*~ z-!Gp#{ICc34nQ9~v>&9qDv%Qx!NeYWn4fZozm~M;ifHbWlj_%Na=CfEX1_tksY$%Z zej~*x&dD%JNDZ90ukS!~`!S6K81JMwf9!LHIJocTbXq*`*6jCaU>O&K*Zu_kC;+?t z_bDpWe1!@HHAGeih6a-9WRy;%H@*>JZ_x&ZbAfP|O`}mN$zFyoVpd6Z0d&Y1VLJdi zgiI%K5W4*h32K$d6?(rzmmUsTHyePOn*P+e zDHFDX@JpIe2d5^?%yjZ@cx={^6T|2AsnMyi6q(vBu)|zvmAS;8HP3d@#H*A;R;Oy3 zd>>q2XoO)8-rO(w-ZPx5Gu<&*qyy zl9pIZE*wBm9mtKkf+Gix@c4r|ABC>Fb_rn0k=YTycAV=EP>Fi&7#kn|ty9Z3!lD^v z9N{jymeL0lms>j|z%^X0##+i(N^9*kTinspfFfP4Wz~-MXb_6dYNWthf1;O1R+X({ zEY^yO)seM|Phg279SENvwvNz$2Ie)uFI;RY4cM&EdH^t08L%({(0hQv<3=)aG`5%q zurO-Pz&2>-s~#X*uZLp;&jt_OshdPqHIB_V>O{EE?7e72glfq7_|f5xhe%NA*-~w zSDEo$wYOcC?!4;ov>pHoY5#-x*fu~yNWXMDdbvuWUxwXyxk{y9e$RIk53Iw+@r<2diNLP z1wp@Z?Cuvv4;jTde?i6B=@thIEUU#XgUDL3r0m)HIrGNVkiFLY0Zx3Y+SuCabyM@Y zSuZf*kv^B5S#oVnqF7_Q(&~Vr7DY+`hRVJU$T&d4pcb2C4G>XzxO*U~_CKr;04k;u z1!*Bs5XMnhCJM@NUBw1B)RCmtuhJ|4^t%evF#=D~3D*=De=vBs0M}F_jeebA-s=np z*A&yW5^Cs-Yw9IjQ;Tp-eF{UG&Rr%%Q;aflY(N++h)D>g3{DDV`mBi!tZPhXe4R%X zXneT}w+%dGfEt}Rl^bTNXCD8+a;wgI52)vOz(IH7`MUeM_6#2B@9OLKSO7hroT5iw z4(&PEZNi%ke+BqC;J~3{y$ARBh7mwUSmUSeePM>8Td5OVSRkQ0g>^@yfr6e&-6=1} z15*>zLnDVLpa6UXt2Mn8DW^@3BUy5eSFd za_qy!cVk<#L@8EVV{JDy$eY^X1EGn`VAM!4+}>bif98(>2DzC-{ADO40xMKu1mokc z0W9A)@UpLYObE0?4+HWC_Ae@Iz=ECtwjY=QR+%VYg`)z;Y8-2Dti`boN99IQz6sYV z;R_G~um&Y27>uhrUo@i=&O?MAOkh43P+E$^$W2ZdlO_y&B|ujX(?%6OnmDGHz95=j zCBGnkfBJ&Ri4%|$2j2}Pcv7wNO8*Fi4cz`?OS(t!c?t+p2&aI8Q&24cw&CpN8cd{O zKm%(4HM|Vlm{K^vgO){v<`z^6jn#M`T1NJ&0p9>j*|0yB;4}Mt8kT)pGMR6Mz-8(aB3FTa{D4s;FxS_#K?n64FEh|o=_T~;9BOmAvWc~&B zPC$Vmhc*`UK{3v;Dw0B@&>zO)h_McA1wV+K5KOh8E^5I#5~Cb1D%~6r6c9!r_yQOp zfAF`Y8|40Z4Gl=mvxXGSfCj%le_>YPcY`r5qeQXriARQl_ej6(*^;+G5oy7~JUul! zmTB12KMKcT8FxHPMzRYHKi}azw}w+=QwfTzP2ptSH!*n+sH;~^z@lf4X0S)1n_K#(Ap1gALOV_=kH%`&FAdho^g9nqQs1`-w$YhpUIg)FO2Rg z>wlxDR7W`5gW`Yh_yL$IWPtE8K1{pUGpWQ>7AiY9DO$`V? z$4uo;Q@P7jfZ=n}+NW9t8Z>mUlP-k@vA)Tpl>#QRDoU6>Rn;|{mC{XB&2&?sGqE)2JUI0?B3LjZ-rw4b2#djujf5$@};SF@coL^YAoy1@8ZR3j{K-G!} zRFk1}u#upLLNU^1FK8lN_HZ-lvKO|HE_)GREG<#2S6M-i-@A_AE?Li)(n`KWDmp!z zJfds^=UTp|)3X^G>l^t}v7PkZS9^exNx1x;V5fqzh`LS{TK3q&X;F}?N*p*KLW8%) zf1na2I$+IOfF}rL-TDv;rfM-skQS3WMxbD8N-1`8Y8fywp~jA#ovE!l3BC5}ADC6; zPsLSu@*?VijJsb3`fxSK%hkk0UISFiG}8*K|8Cf8FAbRcOv3J8xA2h#8*X2fNcg}q z8Suybo{@mP@njG#>Jvezu@8i*eEULTf205w+UWxF5R)#vlrD-FL+`l;A@LGuY;Pti zg@~C=CCiTmS3cC%L^y(_{;lvv9e zDT}~1Q5MfGltt_UiWFQ23h2;RYg_Fe)Kn*cn<~WHL-Fc7d&t8yPMeiIcJC!vnL{*0 zarYsvL1}J8-2F1m{gmc@z;v=Xf4j#?^$=n*j%Ed7-Y#R_4j`(ucQ#!owPP1W0P~$m@rV_^hI>k|E^egrqfF_zCY1R(qI4QCNvuBF{F!^2hNeb&* z(Qz+=2(30iDl#W7)edRt+Aj~GHPCRiY%wsvf!o}`Z5%iVfbt6a#W-)Ue-o75-Q`>D zB>HxaTX`5&utUyUqZJ#TQm6j+!~N14hO~M>%*~}Y#4F&6o67zm0NpDvM=~hgrS!Ja z15nm}nD%kLoEXSYbEgpP1_gGAfdq?zC{BRv86Ki82Rai5+YsQIf9&@N)PMc#g^~5F z#tmDPbp->+33}WJ$K6Fdxd1g1`W>Pvc#)p0Lnvu;R{~1E8i7xXOSM7<^X{(k;X?#e-PP-EU$FV5f8ox}zp?M`yu|W-cmMy! zS9f0du$r|99M7Yg?j?TOCi;jzDXXv+Mr}H{jQGn7wv6uiFF{e+kctUA;@uA&w7yE)dpj8E*gSnE>Z+RDXY|JixP`JeNj-O4EN ztua7J0jnwqmw!d&rP7(IDe-i?1fv7Ts#@68*>Sc}LL5Z$n!U=@)|zl`Vs5Z1K?-d& z%}wC55U~a1e=6PMgYF+>e+;kH^cb*~GWfz=+za&r5HyAi zsk;!j2yiAV3)1YG0j9?sF%UBhagws2AW9^iSx530UKe($!FBW)$L>9~Kaot0Nr#op zB2uu#Hq`Lobzi7=Uf8kt1@>OrbK~e%PC7dmr-Sv*%KAWsdmXn}aw=Z87!8ZlbKykJ zCdQ^yf6}F>0e^m}v5d|aFIX1*4sdp}m~IOZ+FS^kMSx!mT0*v3U}$<0&RC~7L7fX9 zbb`2TGg8*>taoLL%Zj>J!8^hW?uJwwN2^+c;J&c$&88dc;s0@eq}LiPi?F+#wqDY^ zXfXmlfOGM-wuSCT8(W*(!;2f(&jGTp7Wy3pf3qaavW#$fk(6|M;l;2*R1{SZ_SWhp zo<{-ci>*7P9ayEXL>01|XYc_?u*V{AYpt+Kgc)McFL+}rfb4q{Ie{?XinNY4{>FA* zvq18b2PRM9dh)lX017WpBqhbKh#Kw9jsTyX%^s=RWQVC7mQ2#4zgay`mR7KF$V ze=GunLe+d3Y+LQNOK_uL6jS8(fzYM8 z627l1sfmY-t@e(Zg=^!wfe7tYqY_`gG+i1Uz)7x+C8)QA^-f%_dd1DZ$>)A)GLQbQRGp}DCnhtQ6Y!yu0K0SeghRe$b}lK^A~F=te-6Px z9!U*@qf9{I!@WRjnuMMaIOm6ctLir_$@(`TSBkoq6vyT19{KHx1s?d)wDp?2g3zJXAaz2B5rium9AO+qI7-Sys2tZ-(8{qO z7}JzaCe^?cfGAAp#FbMF;>xL*hMF)*FbhE|o@Fr}2xX-T;;mX*r!)_gcyv*VJ1l71 zAZiuhF3pZ8_I50J%zz?1QTToVU?2R|V@;)vHH861oP4%g(f8Gc^2gVr1 ziT1E2VoIv%>r^CnWpJqvspgPr;IAhOZ=AXBY)Q9tZe7nK!+k*t?laOOIKN;X>*+hv zd+4A?XRQY*^f8VehNpraV~DY=;7{Se;r%`RJpe%i=4Wau74GYy*LvWCO+G1@OtG({ z-A)9fujg=2SHC0Ex#h;Ge=#HjFC05_6~cU9N$qAa3MjvtSGBxmS)_*J%cZ{<5|k6E zzD}d9=p%Wh>BA7A*J_4EWQJ^pyb3t5E00usU#gG*HSQiK?awUWflvR_!f5wJ%M%u<9{-IxrfRG8?ITciLejR5hZH4y}1 zp^qql5miD^m@r46f4%Ni3r=cv)(G4>`n2##z0N-ZGvt6?c+#i~ju=FsfUyOwq!2VF zFtZChV0ecGPK8P_)FG^^n#z$in!GR)xe0Shj5E|Km;V4tNrpM2Ju2-!Xt ze-r#eMhK>_J=`jX91hfNkdb7k^a5??rH&H&;9u~FbebqvfB&qGbE=gGYo0EJ!##nH zbINtJ2tCy$@4xAH^?676z|2|TB5`SPFu?WnXliV@_rF&iAagCQ;f;7gwDypwdvs_| z+&h^XN&)(MSev?U;s|{1j-4;boF5+sNMdSt&c9&BM{ZdFr3|+$=JPo&lp<#(`zMAZK3oCc9!Q)5M+*STnP9dQXJa znd><&g>59cob%C-X^5x0Ty5-COB(`hTLnq!^%W8p`n4;aoF4C)h93HGDly(Qc4`93 zJR_%zKyeLowX@YJ&IaYGazqo76H3=@pT#uJsY$pq zh8+2ff!jmlDN;e8SQaNoNm!g9|KcP$*?S|yDd`vzS|a;XiD765_NOLK`-aD+dZk-H zV>Ckve}yLpUpl(I@#U5GB{G#SK>&G9${TOKVRmuZJ(>oe1|soP){|h-Y3P`f4`}TN(nqBTq6X*Ek$U9O&l(}cw(|rR;O}! zB9*Bm_mXT9P>I)*(6E?DS58h$Ol5BWEeo6-e~;NADkor%oGd8sxlyMZ{COQE?nYNn zp0?3FBp0EjwaM{(1QmxEG!F1_*IGKDV$j;!76tC{;IpO+7Tzi+gSDv6;ifXTsPYB+U#U;Q(x&84B44z`)Sb7Qo4q=EYLB!?3hn4UqwB0iD8hDx^~pdbAiv364@6f05_KHbO+J z6F6;GaH>~N1G7yV2WFc-@w{j>&O9$-=Dp90Chz3)qS<;2h|U(@J8&-aKZbKr;GM!g zH48n2IUE6a-UMJ;aKs*&MRp;3bZ$odrhRuZG^1XzPg9s?k0T6yJ%Lt;mwNEqfMglJ zBlO#Zc-j5!wI{Q2EP_C?e;`&5orO=Fg8QBqH-*nVFK#Y;H41S{(StbOTKpPepG|5= zrNF)~Y2X^R&n3OM7TV{NI&TA+S37~^elwTm$H}VL z3yWL?m3baLTlfkLg*PHC*p60+B>B2RLMDLQ5agwxLK$S))0_&7VxB7h;D5~nD~$#> z*UATcx1i!lE@$ce?};&a~HJVMPoa7jN$n; zs7!o~@Bkq+$3COi^By$LKJoiF-=@45=l$x_IES?N3CPcB6hS(3ft`e6IkcZ7@1ZEx zF|pTvuW%QRtBiF9Kd+FO!(l9d?4X%K-ic;WD=+j}N-zo`e>#Vb1GTD-GGo?!7@da& zfL==K_h{w|H#^(^f&-^^jN4#GUz*<9*=aL2%4(bQf{yaB;7a(Hvo)tbt z4e>=ly(O(;ET7Mde(TG4`Ka%Y1)#q8WjInxnmq7)z-&WTiw^*Cke62c{$M6-Vrj*% zcYGj2J^d#<#=X?N7^{?1(n9NzNw!w{X0+8;sPhR0e`OZQdSz^s4$;x*e=aT;5unJ| z+(;DHDF7aS79~Yu2HB*S29Vg-5f6=Qn2`D6q8r|bs%hE$iOd7aBDu9Ccz{7odkvtzk;9{62t9JvTPmni}EJ2BgT}7DJ8bn}(c8#S?0s1f*jhYsC#;_grn6L{o0i0wMGV9n|B#KLL zl;VisD92HOW6cIpyb;$;!XF@SHwGwAgXq~#()|=FUld>r!y3aPPO|1BI+R4-y6_VP ze`=VB4<@i-{pzD~_ zM^snS5sNSqaWoy74+Tychk>+pna{94l3~PrZovXYt2Y)F=2wBcg@uJ#RqWBqwes<2 zmzQtm3-0rm7Zy&zQ?ImhkrI2fVuR#8f9EeM6mv%|=D8QfYy;D1fsxM%%64ZqTVge_ zsX6%BFd4uCVn~^hbV=d(p^%QDT@&|7wnmoRaoVDZQ8F>Oj>$ZEFD~yL8v_GqtZVYr zH2KcWvOgq`IlpmGZ1BnI(_^V~!&t_q;GQM3c6VaDa$)eY zP5`wzoS4GScYNcLRfu~HUYg;7S$46C5EX1P=qy0!2Hu9a+Xq6g zbeDHi?LFMp-`~@B@JKkn)2g6oe=n6l@>^};kZO=E;w&K!+nWFP7T># zE3J=Y>E23pkgXBOZyG#{HUh98OHyH^q+*qKePn~ascZx7vQ@zKJBI4Q1j}6`|99}p zMHcFi)%#4n+%(paI+3ywd+n?zUTuqM)|uvZs}5%7v~&f6N+?uN^{^HQe}EgV1_GQa z2sU23lv)wohNB)v>yYEaGB<%02agapOq_FUi1St;Bdi5U8~Pj$q}CaQC`8 znXDVMCc#pG80k1!8csf)w2F*2P;_QHw!YpDP;%A|Y<+#*_LjNI;>{p)YUgOfmR4ym zZ*LpW>PqJ>fV86>H(2T*f9CZb9S$*}g=CPRy(wu_9S#vHUNhpB*}&D3(c1<@l~rXW zjVCYc69T0(?RHX$qW{M<+TfJV`GIWK#n{X73;p&=>v$la3XBfQqjUV9&lL zc=PjOZRi$z=Pbx~kjK%B8PM!E;SM`#Hy~)=j692EZXx>?N~<7ze+!Y5w~Yqtie9E6;H7plj&H|k{sS`2+I}^s&#+uN-ByFFgd)^V*Yrr!XfTe;%pb>zy3BbMTa!(=E?@ znt0bP5gYY<#4XbzM*D|HCBbg7TGGN?bsbaZ@zJ5tz7z6DSuJ6u%w^XxbrJ3x!H>@WN*pR4FBNRcumU9TO+hycgZhNy$BA_B>fE<; zNAIBXl&cqNl3GuSDpjB4Nr!wAT{~C4K(el5=9%FWuq02OR_$nF4;UKB zx3E5_*VBN;RB`#$ zB6J;FxVoh8M!+>(y&!>UMP6uTmQORbXDxV|X)qg`f9lPq`X;lfy-B`Kcx93TVxra- z^e$=JmiBgG>8l6rO)WO(UB_6zwkWrYszBm)u`x0&^So#kM>Aoisuc-V+RMvUl&{FM zQq__&gqw9kCV5fLLfGmk=j;l2!I%zDveZE-%cx?)x3I)opkU2d3E|o??ADogi5gk2Z`jCj4Mz>f zCXUS z{E1z9BgzYbvKwtvcgk-JSbA{DjgAd#)X^(gf9&dEFjLT-*dmKtL&K;Yix*vFv;{{E zPLa{tM)6T*xISdG0j!EFPLa_%)-q(YW}nS8hO(<^t@(x62|*>KEyq4cAMexMmEu}a zU?Fg@jIx;LzcC+K+0lozYIp5XW4zCB*G)!_s>thQg5(2ieL;t`GW#hJv!9Td{gfJw zf6sv@z*nu@;;XjA-U2oX+OeV-J5l|7F$-b0WrC}=@tO)@b;jXav{ye555@cF1QMI& zLvd}ofKOZiC+h`zO%hfUX=9|lKEv0}cDE@=O0W+3FsL1WuBh}I>eFBo5pNpqcKJfq zB*BkQF!x(zRt)23=Q#7dB@TZID0`1Ie@lthgPRIj&*yLN_ipcZZFd*0A?1||BK6ySvO~;(Y*9!r1 z&7w3LkgNXx89=UC1?AJS03cVulXm@IgWxEbGf8GaW z3a@K!15`IQwEsVh*F}M+>rK88Ue{>$#7n^In$;>V6R&GFwMmSvSr7cr{MEjb*kIRB z;dQl6!|R$w>&4@Bu?cEamdz&i6otW3yS!{kIqFBKF;^^ITDD9eyZnt%)Pw9&>>Bwj zDk}@mQ?bpXGCqqjyp;)9i)@ITe|3(tUX+((8`%o+L5#+hkMZ3~s&AgTN?%>gv6kZ+ zf$R#gTjC4!;vl;$STYa45MSS-&a+CYRk4 z6}}G3{AplZE%FtUmH#?mk`@cbwGoiy$;JNA@F{f9hO^U`{UalLhWcF=jygaDBdi~o#-1mp4ZNtwG){E6T(;3dpVI_cv9Xe zhANzk=JSXnXP|=wdqKaDe@`$-DTAY1=C26r_gNKT&o}FiJ{avi*?0E=JiMd+b8ge3 zDM`L+zvEB}DVywLlqzQsy%I%iQlFGNLulHJjMz%4Bn~IJ59rEnkD2B0Lc!xuFm_fA!zF4?N4oSMCIf z{V7&qV9e?%Y&KNE96$HGY{2_sMtdc>_;v-cBrL6~N;S+*ls9OP93RY$1_p-Yrq6y% z0C=K0#UwV1x|)IJGO48-6aT`phgESF|LXJFK9kLXKU2Shv8_5Cl|py>Ew3&P_%F?p zC#{R_82Nm>8ajSke?_u)XZz2LW@Tk^-HWCrCCC@Y*NJ^;MDi63tIng|kPNQT;dA@W zoDA<7I_A%bqScl-$zXw%npb1nV!f(w_*C1AF1+6v%|ow9)h#-)WJ?0GYwz|Kmxu)B z;hPV?xI`o{ws+OOsM2lkvbt_Lyrcd_C6W{^i%u~)bY#{Re=e`*YW<}UfC1IK=zOQo zCGmdTxr;b;4{s#HX=HThH0H70QW#0O_{!va zx3u9)NJYabaHjAeJStU*fsmZ4vE%roI=$$62!&3?4qT|WO~uF$);vRoeU<)7TQaX# z;fN(Jjzb>jf047_Oeym7j+zs_qF2{XB22-r8}`01hmq$L%`N=2TX{;2FQK*aj*}C! zJ3_;viFt@o*ot3m*I>4`wTV19zeWO{4h~y$JwBbA&E}Rm6D>uvrLhSsg*vmft_?rW z&1?sn+u3fkwxiA1*lablHnmxeb*+M$R96QUQhTc-e+|QYW??MetS*?REPO?`s|)5I ztEsKNNsSUFmgc(l)}SPj`NC>$Y^w`R&IML;OAE@9t&J^Ka~o()&FxK%R!dz=9U9)= zJZ`mMWoflEwzPz&-UphMb*+5zP7a;T(gqgwY$=$v5?e86dE_nd1O{4GDC=I}IZEm( zp4A3Ef0otO(9lTG)M8Q0c7pZ>3rE)t$||;K`igL~D#z84rP>-5x)!9t<)W$T#f&sy zhssQpJi}`51=$&=nj7g|lU4UTnIANL^lgsb;aHuHwcWuUUEl2(J&tvQ zW9@aU{f>2`V;yp=n;h#Ej&-YJ9d)ce$IgYS49CWE^fJdf?pSz^u5#>Cp&@RbMjGT; ze`i7!Mrf%KqS*GRV=s5?6%IR0Te*<7vyOGnv0m+1uXDn|s)OjjS`Wg7d>6;NIUeD7 zFUR{i&T~A*@ln8}KcmHlhiSkj2bYIckzf2+)>71MT(U6)+R9c|xOa%BJllK#Mq^eTD& z(ZPiu9bWj+k%b@KJok~-atlRmxqa+5U8_isRp`-*-mwZTn$fhDet9x5cAF8sUKGI&J|V%A5`0pEPf74;37*p1jL+yxmwi_MoUXs-^K$D8>hyQy z^oww<)2JpJRd$DV2p%?|T`lm_e@!sFTHvEwfex(-oe-x(yB;l)NQbu6f`<--7?;6K zL=rP6r9l$jC>kV@C8EhJ9yn$r+jZ$JU0Q)&c1t(juFFfs+x3#xPOV6o-tm7|}sb9#8@If?3A0S7HDSci&A4%jA(FK?qu<0LI|* zSIa$Nd+48 zq}(K$#Ib(Rsw=cj&%w|ls5A(cnFLi9!E&2mMSvjb0Pnss*aFa4f2=2_kuK=gW`g5= zag5J{6Zp%h&jfP`)L{z|Uo>!Dgl?vsH*#K#(yE*{iF@L{61PRF%l&w&RKEx5c55b- zEEZ9D+a+RzQf0=51Van-sn8a83&!Z<=wnk<@W#T)lIw_gt=!B6sp560k4HWwQs2v? zqTa|AisGZASKRAqe}>EGBL-9D3EYC2duOo9Wn<{t;gCp2=5!hO67ss|7SFw%s%gJKQ2HaO(o;aeXuAwf+ z#a*{}3=;3`C!r0nn;qB*?IEeybsB2#Nu6M&F(iuVfA+ZQn0H+QSB_qXPP$;WEziTV zEmw3#RM&AwAs4c6g75(uK4-nMO3^5@c!Eu8Xs@r-3A&B@b@%RxWXVUQ6Ynz5x#tv! zTpW}JJhxk@x6oNcL-^IA#=Hqd6@g0=oH<(ZNZf17i)HG7Djs-x6nOj!MNw&HuRtXM@UQN{?+LI~zwkJ7EzdG6ti1b#z}$)ct3 zyR;N|6=MNTYBCD`ecLOujqW=r}H+EwS|L@9Z1nc z4=TOz3hhDUq?Nja%M1ytObM5>EMa!BAJp;je+@PdT|QUuDbg@qY;-oDxem2Rp4!7c zwTDSnsY|%bkg&>>aJePn3j1N*eI!qbGmrT=G}}lS3>|NOm?7(2w(Ce zd`U;s+l$c30Q|C0DaIBla2t_+k4VWef9sj&^gFb#=s3BiQzI;2g=gz(?OBH3Jy!&e zBy@RVHL-AQJ)UagTlN*b!88i_WGU!8blZU@TrN(?)hF?5k_FzKyz2e2RPRq9you7` z+R3Zl|4^m7P5U3ZI42)JzRCTjq{2`v5Wt!#tNn;JT&e#^Cifrf>2{{Mc7K{{e^=Ao zUx{@>-xl|O@i5n(-kRH5BD(H>t)~DPK<2-%&0Xt_g1=Gcsp}~4-wE+@GY|-TNGSfj zzW$0gF20}f$>L#|816Lwk^3ib7me%Z@d$l28q|9T{+5f5xEcx)?y%I7_v2TP~hgDLey+j3q@a{S&5sJU^1v z<#boB>oI@O|BDoJNyrHVpD-!rB^v1!8~X!v-C_HZo+a0l0Tntb3}$t{dM88j(|t1H z{Y2&G`jfG&K7NuU6DN(Vei@W%tSU}gg!V~lJgQxyX3KO5s|*R3n-Z?De=h0nk4V;0 zCKOduaZ%1il#6kmWc3qzZq>-i01o1%6eA}c_p*N$bid2l5lsr^KI7jEiwARYBk!dp zJz$hlLiY-{PQ=m`xr)yhUBk=!9@jM$a<2xkcOYEVx!5yo*K3BV^%|f~Z?aU6R}+9`H_=Bf1J^CL9?8QsjtWX)Gw)rJ5-ob;m&j=zqHwjnEKeMOWMxA z$M6Qf0F&Q@xM(QlK-K* z|3MSa9f-eTAnvDM|Hq7h_-jU)t%mRaQA084;v8HJ$uZ+n>HzUyFNnEIQMIu=o$yKl z&y}w)9=_}F$9*Y%Gjr78r8a*#W zV!n2+%?oP!QCrUrrvO6OacaPqu6U9xVYwG5_UhiDfiowvV(+aFhEGmjMBvID=^Gvt zF|dg^$?lg5e_Pni95?$iBXhl<&8phG<;p=LudLoZJTx+imTwQ9M00iLORVgWyf4fX zgt;knUfA%b0BysO!OV$lw`!qz%+?oEozuh9ay~GV;^LHgLdu#!WP`=DF{l8_`%gD+ z2Qq#Acb4=^8+D72^U!3Un+q7Vn4-?pN#}SwDTc>6f4c~tEky|K>#n|GrU;8}v0H*3 zdl1#j)7Ai5{1JqfVt*iv)VK$7vWxyDZ1eEpgSYhV>O8o8$H9mQh5Jw~xFLH^AR2aM z2ag>e6&Dz<7#tWqo(DcuHPv6K_glR@GIOW<3+Hs35b|X3V^3xWN<1Ot%*GERbd|!L z&JHX)f8KXCyVr+Xpa5Pf|E)X2L$8u}ksQnp*;UaD-Y;8=O;Vi|H#&WlTm>)2gkyuSpAg3hTCN z=z!NqW?yzVL^l%yqt4MtUk1?N9e17SJ27H0A)GFt|737Fvco4EMP|1nAKO+olwmM9 zfBjoayn*6RMAN!z_3Un#_kJlxnEBaeE_}~oT5`VeSE8_;XN@-TTDo7kGVQ{B3^oQb z@>NqVE(`IFG#D3~v^nguVae=-u~`>SN0h5Lp^Q}UUdG&d`zX!)CY*}_V;jE3^x4x0Et*O3v#?0tlTvfD*_n$_@$93&3 z_<&ui+hMS4BIS`_6ky1zvXy0PgU8HC{2JZfsbrR>SYGJ1SXIP*>~2Jr0@=OP(JP(M zaz|g`gjYFwwWF_gBI}%p5=>h4j@95;jUtk?+C?6zU#pznAd>8KB3+Kvf9=@YoiI{K zgpvCkeZONLc65Z1M;sk_sWUraV9V_cZb0Uni?sTjZj&;(pMjh*JC*sK( zUn}B95n+x|$~SPlk>f2$fj+?TLC!yn9mV7Peq49#PwJsh>IR~UfY=ZRV*uyq5vO7- zsKwCdEJ&j18Y@~eR=HYVf4OSM*m?~>St}6a@4(ou-90yW=ZD5_JlJ!C83D=f_*k&0 zSqq+mS$Gz1@|$$c3~t*Nct9V!PrqM(v#v$nCY!#1R`GUSe+P_6_47{e=Uv{F z3Ge4g{ZmrFPkUES>H3as*s|D#(GD$!XbtgIfu=i^9a;p*8saPLv_pj*S`pSM9b%y! z=@j`|v`b0WRx8QcIwe^{%7$cZsgkT!Dal&5lB|I;gk){IlB_N3glAZWOs+!@BC*qq z4kPHB%>;e3nV^N(e{YRQ#HjR{4@bWgSy1Y*0f}Sjl1?W9lohjxohL z#xho69n&t>F}ArH>zH7lcv#m>)3i3>{q%>5V;9tZNV1UrL*4xgePX=Y%Gnpjaq26f z0rSCl?1Bi;@NHsE7^M1JQo(6+1jy)bNm;1>9bu92Q^I2Nf0u+M*1r*!+VDF5PS{D$ zx<8elD+vTGFxScgKNGIp_+`N)bKt{?;bn;px9I11<$%vNk#WweM3Gsi&5U(XHN+$VZrK;-(4fI4W6YBUtvcheKq&nRxDJ|D-YuxE z4iK<)hzN60?qO{2-K*mso`d4tvw3ay7UC&`s7eiE+12_McdPJfu7%+mb+5aWF6b%H zj$?3&f23-=$I*``5W`IzFH|mp0>Kh6je?NCClK#Yf8nd}8(r5QTj!bVuIo=A0~BXL z8}#kZ=^Kq5KpL6ARMlAffHblX^V)@-TjT&qwK+JhyW7W;Pd*};F9@eLjEg7dTnUWp zvuB@mcTgE%h%j|Z$yvE@SlxZ;V6}PqVznhg*o*mhwLfEvt*rQ8E8}eJe=p30H})6h?05DTX9~d&D(C$2XwNzOY=MK0^;PTMp65E6aetrA_9eL8FR28)?5L~1J ze`%bY9ZwSZVI7+OjSCt3!g)cdc?4FoYHJ#YIFG6!>m{N^KPZ=SFb25%kenJE^m#5n zte(Kxw-Lq2UDe_j^lDQY=c1nYb0~gPCI~J86Ux84kIAX`@}7`W@9lkDPQBOn2{~2N z5;s5skRdVPRy857r{q#aR;BoioK6+$f3xa|D%9uX)GO5Iy+S3{Kn^S&@3lP*YWqU( zP8#g@^AYENzwSULLN|!eO{~(#fBihTLH-LZQg5T9;A^^|0;zXtrIzw86Ykf6n<^6G zpaD@SnJ8@~aj6twA>e=f7s?n2W^8#ync!tLB{4y6$OHhd`iKAhJk0$|spT4jeR2 z?hmBnKFUe8rjWg8IFP+2)L=bZDB_w6>S0t`^f5z>ZgSPTJc=I^YSQ$489a(l8O(wP_EZI;&per)FmQS;r)gLYBdtkg;lHlsfsO=Z=qj3 zdH5Nx)&6W|rr(iFSuo3Nf8%9(DWB=LrZSyTjj2{6jpQkCX)ATg(~b=j{@0MytJpT-5k^DhJ^g~mbdgI5h##F0K z8$XXJI{ESQ(R?QEC*=Mj#?O=Htnrhv)ZqElB&E-oix@m%f4ji4e{3>%zJ@$>eZRAA z3QaIMwzfaAu0NU_TOlAdEBfQIhxr=Yqat0xW<$a~<{uI6w*Hv#p#3MN`$xQYD!|KU zsH?32p^SdDS7Pv6?jM`!HTb+@D9d-+yfnc^M6eT8Z1l(0S!Wo2-!Rkb(X&~Pl43jS zygxH9`O)|Ze@u(Lf!MbDO^I!**b!Os-5mHfCA!7=4&klAON6(D#!dIzY*5$&o#C7K z9g{_J(7gmaY&^%RCFG9tm1gylxLa+!(&5XbIvRP#bT3OB@N2Ho#UJN=(lG8bCTkS5 zn8>t-RY=r**33kUnqV(P75Ku8)3a8{#oZq(a`99xOO(IjyfCSN zfBsrdGpJp0`zPkwUGCqT;=D0}<5GJ<=S}}JZ(80hN*lLo|4J1H_5UO+GJa*c|0*j(d-lv7nM@;ruNYJ|-*Ow_53-d!n$(R8 z-Zpg?`Kw*-c&VU`KFCUnszv1s@G;qJzt{4re-@PbvBw$G-cKzH^$$p0jYkQK%nuTt zwmwaGm;DssaNskR`+g`<=@0O8=2`bqRNkZ&uDBnR`{=pA2Y}p&^I^;Vu%+rt(ef1z zy64dq%~x1-7%y6)8#q-*2z)4=@F=!ws(Q4@nb-*Y`(c!@Ise_MHAI z?P<$>TAC)+B8~M2ss_xj?$@n!YpxZ=e<;)ahTM#I$_Omf|BUASE#sSnMdr5%Pg|D> zf7|{p;cEgvARKmnXt{spwfZ;Z=ZgC+RdFjp*Qd$v4t~dSzayE_;QsKVre_$fmuTIP zH0?OfT0sO=YDV9hZ07OOuTbyH*2K7K*Y8@=Oqa(WV-VRFFQnRaX{PTf%64iCe}m-* zDn>2e|BK8oTbZ2T`KZDKeVy2m&|g^YU#KL(d|{-O+`m*w8QA%Eka6PTVE4y<+-qfs z(nr)H;fI{i6WD`zO{o@+@|p53tIem*7CuPPeN<-2uX0{(rmpAw-_^O6Cn*m^p;gU?a$)2zj+k_@xMf-PL3-G)=wZ+4_vzZN zC^G;$^7Cfh_?6}UTD4hv?Krar1-zUe_vy70)9yrJCxG=Lh}(eeLb*T&fBVN}u)oos zJ=pI>XGl%;-Y&F~;RNEzQxIcgf@buyS5FbQuxIb(&+&^IZ!~Iby z10C^$D(9);{$X}yDrYC(f37m4x##%;%s1RW$Y+M^z&P`U`$gjAhkF8@B<1qRajViP zQMs#=K)`2q(2O3O?arbF^p2F{gIZ5yGo^i`dJpb6bkm;0y`2XScHZJ?$Y>Q)e`-m1OS);_;obx2 zCGFV0b4P_}E_n(|vz`D;K(xP9Zr`0s$)iKNZ^g&bO^5e$NitDjb8K6co zVhq;LBY}HK>ToYsMX107-hZ4F4DVJiHMu3}y;e^0nroac)W|%VD|elyfdFutD81l> zZ=_^O?AkpkJ)R5WsY)?>yv5M-5rvJRQ-=^p8>j1$wHv1!!e^l=lH>Y@$kb^k66Xa3 z@SeiiNx=S$O)5o@mAAg!k($?E znA>AsNH1)flH_#lFn=Fc>nciOC~oAH#3tq5AzFEswwUNIPS+cqR3@FJMy8a=UbF() zJeps5MG+s@W3IByyu)D2LT|fPr1k3Il%m(wRR`J{^FHG+#ja~X(%*nRc5_3W)qp!W ztFgJhEi_5gYOiZ=Sh7&&^U3jj-H5A;^Be2XEm1{H$Jpi=9gfi{N&*KQ<3`6g=mZWq#$m^}$uW*N z@mDzUn;iqsHGj7|#!*M_b&Ng-*0piWF-|(cAxw+Kz}UD8mc51i-3dm=!VwLvY2B#J zjIlDbw9tT_&2b#(802^*$DJG}I8F`g*%5w6b>^Wci8gg25Vq?@DjmSuvqKqEnjJByIJxd9j%2E}9zz$IvaPoq zHP?K>!&x-ikR*o`&Z4>Ps9lR-2R4e8IvS`o`jjs`)3gIie-U!`3$3uWAD~}-zk9%g zA-|EGr(svv0XImLTV%x>>SwLkACMDgz1pgA8J5e)dbL$cjv4*9UkUdYtnW{(?=M{6 zU$nlzcz=C=$@>1%_5Ee?xSS+Q#7OW~B+vS7NSTe-0l;X!UUzRzM^X`OEc%Rl+juG_ z;^_1QOIKm@_NL=CRXuSKg|pl$*~qP9Fndx3YQugXURT%?}gtF3!z!+&b~KHa?suMSq8hSVErUB*t9uqQxX zm-wNfiANGKM}u9P_!@G^=kzrJ@qn_{c{|~{;DdzgL+=r9DC2DE{IW^QVJnt#JW>zn ziPu63-z9dc7>+2x1>BaTOL8SscT%MW`=cNxV>9nxNR_dZ3}GP#Trf=Or$h#dEOtXC zD1Yvc;lfL4->oM$lf`=wVXM-H6SgYtrm%Ri*&O*0VQut0VO{KFg!S2N0A6V|0$x}WqO6{IS(OhIa?hKrdq$nidvzrAeQ?LtJAijW_BnHRgrMJSob z6am&ojUIzPbOxU|NGFR$P%dwwP$cZwhH(eQhfjGg;tP7>9^MBAVe)oKe<6P&O@E-? zWeFx?nUY!@d=v3^btS_6N_d~{`{_byBe$@O^!Jbx)y9R=A0wjtrhYlK zLVKj>h%f}Y%DzPh=q~@Zj^~oJaetZ7$_yl<+x@m0QcDucg&*)8JyV`payhd^dI$;v z_w^--kXgcpaS8WHR{A{{0pmp5g{cpNJSBr1RSVDr18GiVIlvJv$dSrV(_*Oqq6n6_0`tJ z$EwYXsdc(YZ~le`O>f9;P|^@8BRUfD3jS7?yAtE4GHKghlR22g$=JLg0>36THgAdi zf}-9U{U%+MaY|UpOaHqqnx^O3Ok0=U#PbbMHxpXxLD$o z_>gk{nJy56f3VRI?k)yYnW!i;=p~}S@k_3FEm8O1p@M`w6W!QfoJ+p5zeJQEG9`V< zU`enjSe&?-@%Ep7QmteoSE$ECQH1y6_)$Ynlh-R5guKL3pcNiUi8YC26g<$)##Xb@_I=R0-7OJLFWr zi<9ny>aHUGPIR{@g?~~(csI9IlZgt#LhUA60*J`3*0#JZuPLM*O84NP>QN)#o|uBV zA2j@y6vqDs={LwD&MSrxy_}&$Gbqt9)D&w5GP#j#|;JDz@$*{ zB!g;w;*$o_^t8mt&k70mld1rP3AD9B?xzf5ED~i}_@t33q!$#*1DO|| zC7Y*+D9bA`ZCiIe0 zKk&8OwbTDK&VNd_dIe%5$9DAY(cp03tGdpyF^zf~KxNvKcUTf)Z^{O>@8s#1>1Je& zmnqx&!{nLlJB8;E$ux<+b27tr5D%STB8lCWh0~#|V5T1??-w>bvxh|uJ?<5LZ+5g# zT${{6+V$I5@R4AT_{fSL2W<|wCf3!b><&{y!`Mjp_J3$|T+QSuNe-vvY0nS( zEj$OQczT>Eqo$GdSD`hdY;!z~%psU>kg4sPLddkmPifZd92i)z+^5fs<`XNF%_6Vq z^7q7Q%HNFXxB0tG$9t#gIjpUGu||gu;nw)nvB(aP)G&1r#!K*||IYNRb!Yb6h)EDR zMT`2H|9@(0Z1qx{IQCL|0b=zZ%wh55b0I4DTKR&8PGw)^_304yYTg;rzgNb*`Y3)z zOVfg{rf*=ti|D0X$V5f3?WDh|v2wK?GVZPfuB;KAdBGsh)!5!zUofiyfK01z6s*(9+FD?!H3htaU436(-_X*8gZWl*YJf|vU;+B| zrFLt1DV}RkZuXoS=mECWA>X+cs`YrVu`O^=K(BCY$FU0?JLs6jj#=Ua%Ea}SQH94X z$A4TU&|r9sHP;GyGhW%v&5l{?n01a>&;Hx&a?I_HnR3isj@jdwdmMA0V;*qKgN}LF z2^F#ygNuU*j?*kncG_dpd$i!MQWh$?VwDI%UqmJZ7_qo}xK<(L3$t=IITM8nud zy(rc;)~FStb|=+M}{YmU-5*MsWE2z6+2O*g|Gd|PxYqSVlB^vH3TfCf2WPb)<4 zJeU+*r;x&R3a=9F^9VZVK|NY6+UKz~qJ17;E86FL=k=(*PPY1qLNwba?ZsgQSbz3g z#iwMoY}YNVTK4+{0fT@>m(6{(yFs*!H?pRc-JmELPH?K0pVy@Inh1_=Owftg$Cs3$ z*~FSWZT6U2%F@>S9s1cedkb56#tpdjs3SY*G+zc|sZqRU*sis6$i;tDFY ze3?;+Hc@V_6X2m~YSO0YF1y`;r+>&NJRk1{?(G51g?o1X-a+mix|9oXPdP9Udbe`# zwoAD%_Z(5DZsOiisrPd2C|C*lQMZ?;o^1b)OX)T&em~_43hq=j zX|vGFQNCme3SBj8fYZUDMCtjOb?0}vgI>8qCVC3@O9P)2W=9#2M#Wc>V}B*0uCP%% z=?;x2i?b|vfW{$XSK%~N`LhF$=ytlS3jP^*DX4X_elwxkl%{x%o_+>Oh9<SA-#|jV6wo1f9CRmPVow+B z5NY8$;)*83S4*yC^)|V{!)yDg5xhXwX8T6?pw-@Z22QV9<1qo0EL9)ye4Nc*oGmJj z!$o%gnNiK!!AZ${5d#us_o#h zww_U(ttu-%ZQhqS|9^BwLA)X_^r^y3>qPcy`GV;_H(!q?`HGty@!2SbViJIkX{$2% zO9q}bG~3FzjlD#0AaST@fD7sPeryUIqbO9Uw&S!XD{IvEt*{Y^MdKxa#X!zP za5yGb5|a!~K;nd-$&bOm&76iw3uD~0wt3vk<-)y8CfU_mJ%5HJ986r09W~WG!@Gxm zkYiLIwbVV+yQhp}yxAitv!P6RYv~?Fz6S-}%CsX~qdEzs2iZ6~!B&bMv=pow=|Lc; z51%`BX0R5kywPEiWDV!L&hP5Q`KMc^o<@3QL39Aq(A@*tiQmjNA)oEmscdWdwLjC)uA&Wk76&oJWps^`KMLX?mY#KW%EUn2eOXJ zug=vPb>WzT3w(BHaKNEt!`LMU^EBrzffq-}hj(@(CIk=Q)aaUglIdlgQ8`H&c=o`o~sJjfu6kn&yC zufPI@^GYVYS+y>&Ss%>10*lRP{TC)c6C^lhRCo1!)tweea-NrRz8~j{wsJl~G9HwW zRtoQ#%73qzFCI^Yj*J+Ew;N(1EjKzxE9Z;uKQ&Jw!|7H21_I)Ctv_3JmDru5^Y(Sm za#}J=&X;)V@dD`;aJVENvHPU_^A?!Rm_*5Y9x(fM56s)BemkhS0h9WHdEZVx(m>Za z$?$4%dR-ab!r z!R$XZ8lU+*KC_JG@R?Kdzv45eWKDqjgAbH*^WHrL`Io)fqo0@>&tBY;11I{<9UksG zMX^ch-8An$c|yO_92p%p`-e^x_njFXI@mWbIJ6VK%IWRd(=cR4htFh7dgpm!pO#J{ z2!G^yjjg-{2E42tiX(6_RzK8z=OxpjEQZG87T?`h4l7AB4QS%(?m|Fc5}i*)$p$9gX*b&u zgL|JG_W8)YF)nA@F97B2?CZUkJ~{bX4R!VPU}j8BjNEA#*?CiY!K{hPY9QO_^iE?n zwA9y!u=NGG?y%ALOy2hsP)HDEZps4}&pCFSJ3c=`Mdr=wwfBJZstcWEQGp7QI=5Y z2P}LcwpmTBt@Tz@dqY!v=C}fhy`>HoLrZ&@vEcQU5v#e0Hf?Tcst-@~@fpraW&^AH z>rPvJf1_||K#5Tw z2g)*KpVck&3_v`0&^1tS=;|!0gEBr{*+36F2Cf?mgx?|VdP|kZUbq`L7GLVv=pIy| zcmN~A^G+oi2MwaL;IueStLPf&y9C7CxWO^@IL1E5*zZJcbRq}i^?Ljj?0?a3iQh`v zbm%B++TKu^9_lmV{hSXtMmC<~(JLL}PRBXn7^fU#2$ciJ7vW7qIX=Vzj=6D><0Bk^3>cr__!OEDpTXnS=k(BL zbRZNyuP0?~uh#eh?B|_8e19yag;2~4mv9wcF%~0a2dafvvPWMdF*c5^C9L6IU=#5+ zV}l>A8>{7BSQNxo&QR&%y$`qIF4W7q28K*!iNJrL;RJP_!T z^KdsY0su%mfgOr?YHY10dJ4{7?j=XY4oM+5p3%>~isNpMa~!Yc_q-{yD?$7?xW z$1$c8yk3HPBzS`aZTqy(Rq;3@qJx>4W%JNg&(FX{T(|0egotm}LC0b`)A zwL8FIfH%{jh1o4x>VJowl(qt1MkX2MioY|7$@(L|onl!>RDPZWvBQ*9*g`cv}}h;w2qjz#WtV zk`UL+x&-c^9LVv6z63CYLcDwmkoeLa0wi9U>I7kQ+0IUY#DA-Hb!uh$^4*KW@4!ju|@fZgF#HE1S z$kuc_$mLQhj+Ctn2!M1!t{|7_DbN*E=JreLh@YZhj(=qM3Nqa7Ww_hDL1l;?vb%R? zhWn;vctB-%qo3hHl_7jJKf}X{{1M0p^L4zLI^KFIXHmzHw04p#)7*o#W>!C6Vv*e) z$z8%z!${H06%j9Npfl7+JQ!*yyJ%T-UG!tZPBX?+#X34W$8nunBGx;DFo>ST@_qtT z^E=5FM}M<+pqZqnyjq=-q^E_QmQQ+DJ}Fp~Bptal0X_j-F%rWZ^2!Icw0k#Y_RDvU z@_`Ob`7BkwnAEL+OkPX8F*r-S9Eu&6Zcxtcd*L{t@S@$TyKm&F0dzKx3#7qU@c4f9 zxL$)jhT*-})C&CiEyA}-h|j>+676k%w70>rsDITZY+@p=X%^j`azV*1KeO?j{V3vR z?7nir$v*$aE3m#MRB=jRVGHLgha!Qn=+1s9%al$$y>xAstPdskZzuG@dVJaG^n?2K4p9eo7domKlunRe18%Q8H0ZM!!`}u{y!p)E^&BXCVjOH8sG3~ zd_%P{kja?zPxjY8Q*A7q;BQLW3HlQ1ElJXs=hI`^ujr4f^p|z_ay}P2_;)AMKO8b%?r{1wSjOd%%sRNSRf6n~jV zf1*gO)qbLi@>3lx6u-h04nGfSZuKt-PI%E~NG6=O^p?@ib{&ynEAVx$1{tJcvm88rM<0^|H^il)? zJE+#40f<*Y9#oz!>K119ZtWg)4S&|@_ZsMh0H2YIU>0_-C>cEKndl0}K_v}Jk6v~u zSCv}MSi0AkczWd7iSg3E5dO8G-Y&P|cHl=g`85#wqZgCwY; zn%p&MRGk#oaHY}@!8psl2Y*!|gl8f2Pok@(`dFa`KVpb}2$AthQIp!FON)q-NC;J; z&CFkqOH%__A#>S9qahY8#OyB^3r5{fP>fosI_L^iy<2Saj)gvFpaDXXM~YZrx}Tm? zn9s~;5x^Gw7Wur_BB&XmYQ*Xr=x};}`ateLU3y<`p9+);&0fZUjQy{cMA-<;;ExNKX6K2)W2Z#hK(WZ-^CN~? zRyMhfpAp5x$UzJ29UQd!`#=bfZ-50>3@|2?H24Yruf)1Qh45) z6^GeVjhN!0&5SqW>S}BXqqW7XuWvBxo9k`G5;1WAHpv^0&7iXwZF&=&J)_YV)|4$l zn@>bFVBZvQD6IhRj9>P#!H|Wd zoRx42{c=;+jDM72DPXe{Fy&~W2L#XzU^Cs>&O_vpEV4}tk;`-R0Q)GP=;M4FEIj~} znSPu(%{CmM%#7nEeTf~nX}v-JMZk?o0!ND_s%1JWQVL@sw?xFxyFzZ6=*{xGMBNv8 zs#`GrY)#NDoLI_2a*dW?4Aq3(V((Iy8NMd$mU@>)0)Lf(b>ie^jhUb>Ys{cg`Gx17 zHy?fed7Qp{^7-ev@Fmr8$`az^6PE2ngd&PpWo4llaLufi4(5V&5{SgeA+9$fYG_Fr z5i^Btr%#*#{C1@Fpu(vh9y&d8K;2Oz#GoMEo^H&f+|N(2Wp)Cy^T2Lx$Ks`nKAo+z z>Co@Puzw2y&6dIx^uk9Peihz)v+CNHowQPk&6ASK%?p)jPOSm}kHReS29`bgDny-u zUiH(sNQ%8fU_K9y9+sqeezo8AV>3vERFpjwylBRK<%v2Zl~ECl;nVsco&tyNJagI{ zK0RuIuzlL#SEO{-S@@7;^R!TPdsFF5s(ur^uz!x*%6ZdmQH436UcJW!&U0ZSh~zK` zQw79P^WZSh(1(${Q9R@HF?|%*&XaFTKV|j89Mnhjep^ZMTISDec8zNNRz=lHy=DD$ zNa(0CU9(scBv3LuU*zZO+ATD_DWUY$y6Y^VwBNpSdeo$Vy1BU-UT8Dy+19%D==5#^ zB!6gK9UWP9oO~7G$~HA7W;aA++G{}E-P){}fv7em%8Kk|WmV->!R7d+U$L}c$qG|A zfQkVaiR#WOHIoJ$xOgVKzqoQvkA4&Ezsisew=5Z2MYx*T(x?{a^ai?3>q6_foMv`p zY;t0C!VNSU9ivGZA6@S_9gfo(>M)p_gnzq+a|An}Ik7S9oiuy1W-Sd=E?ZVV7OK6b zM$OaBMoU|3y9&3caH|ThQ{grhcIhjUA(`Oe>4;KIhvqQPR`toetn`ieHZz$olgS+Q zpcQNYS#|Rig$r-iUdgO&9G97mINnAH-iW*YQjJ~x{BFbDAhR;-c~kL73?_ZW7k|Jd z8sL-S4J|C*&?3erck@x}GMtUtwQP7yJ7fnQHd#e9qO0=8emgl9><>r){$z>PB*s3? zV(il*#y+jj=}W9OyaL$-O9O3glNd_mLb-4{l8by^!0_@n#vm>@Mb+@VX1ybn5=jBN!%g%%p-|gb8ut?T>-JBI&UYjb$2iu#t-p)0KIwh~> zd`G%eo(fP(u8gBRRf-F*of*edzS@Nbd?2@^Z;9I@zh@QR-wkq#*SACh?SD3Rk5`0D zKWAdlPW zF80(Kaz%Qjr(KcECF{}zYJUwW3=~htV%zLBWcTsG69ec69K;KDc6k3V!St2n)Vge* zh=I-#!9UlW?OAnVbq@C*Kl2-2QO;A2$#rF*PnE+N@XLdu^6^!ZYvFlP&RJj9T{ZSR z6c(C{MI>glvCeF$H|tv_*P3|2&F4@&54A=78JxcCRE}Y4UwyZzxuG>PP&+&_Qk%W|G&=lT3}nSc&+tg?c6Bm<7yIn+ zV86E%Wt+HZi&_gz_bwwuHbZ1{p2+4rku5WcSgC#8_1Z)KRp1j+uG=Zs?fG(nK;czx z>&$X79MMomtK5^Lhkw-qYda1pMk6DnI5nWoU#7)G$?j8V#taT5r>Jj9mga9x%V$e+ zu9f$qn|Ri1la1(H?*@yf#yUMEt4-AaFQ-@#IyBXk-7mcliI&F^F?P7&WzZNLnW~la z$^0f_&Yt%5>y`^zHMdFq@Hx!P>a;R=e;HKkPsGP#PC~}OYj-ibD4bP&#+OgL;_IlRX z=$)GU+qNAY!+-ifvsoP4ED3E^WB~x|0>GXHN))3bQmU7gb1dPg;Hc!N;#k44l4CW; znvHtdHT>4-vA8UxgGLAD250Tiyx{hs7OApZal zz~b=N6o2-OJaFW}DpKs>0j_?%6k-?caV))vXNie=ex5D48ukm~(7JRy7gvE=Qi^}N zO4goVEx8Vk%3LN4+S&3&+;R8mA@#AN8?Z;qDHJBo={<-3X4=&3SV)K zF1YMV?G6(q2hjz0WM7IdxNsBI&eG5-L>Iir&^#^hBwFBBkHt0=vle6BQ9B*z34jVO z+kaM36o~#JEFyj3<89#Hq~>=R?&9nPRoLH^?DD%%era5rJn$Wy*{UhiCeX>>R}}g2(i*3_DQv3tRZWOvdc=BbUb4t=nz7 zQNJH4If?DsOh~|JF!AOr6{rcxB&AI3UoDAHoXH7k`trR0#GrJmVPzy(yEBU-B!4=Q zz5%1(x#)@BUmaY{S$-eA^qal(TV|)f@4spx?iJ&9uNYfr6@%^;IF=o{>EQ0*2@FU_ z&kSTkCx%Y3_~tCwcfz}sm|k;{9?h``-aMnS=FT1auYYmvF}r)SnkJ8XUNdG5)#+a{y-#l{BFo6WbTtdv{D(si#|To-r#nR*OaM~?cB1}87tU8 ztsWOmt5p8!PM!wT(_P~=(WKJA{D3)LLsH_J_z4u zRW$Dh!G|!-o>F{_+JCOW(Ic1z4S5_;BdKWz=RgSLArk#GTPD+#Zr_pW6!cLA8Va;% z*DZ&49MbOjulg$ZsGxqiwoaCd4+1WMM?h=beTtjDL4=J_Lf^T>^jOvGf9JqB%&P7S z%i?@#rYC!xzM1vPw|P#xO|`o3SQEC+ne5Bt4n?~929nAQZGTI$X3kW*U{U&%G27e^ z|AGmmS(_J6-+v2&>|tgGM+<>@kXN$%)SkYPQ9&7Tq})6SVh9-$Eh>AM*RZgZEu_O}( zxoY%{wlBVgCVwe-12IJNcxN^sDB0o2v=*$Ke3q2EBT1YXuNzH*Nz#9O)8ccyduVvx zFSK6ge|`1(LTQlX;E0f~OAZYu>w|}VsE&rkXOzd1@E1ZaBBgv%WwS@p5px>lFH;r3YHDh0RaP*u83nVN@r${br2_lt z#%8mnwFO`e7+nZN%fjX1AfNKG!s(7Hmno1-#r-mZf{77zLJ0xV(3d*qGRIu0@H5s3 z|0}dffq!Q-IA)V$0;kdGnB9)K!!dU{=57x?Bec$72_e#Dup)xN;<30E#CktihTp?r zE2&K_(WbX=;n>P?Eyr~n*K=&+ z=-}w$*v^sS*u~MqaRbNR{d)TWes9#{OGB7?$A1iO0m3?jeVf6WgDn~B4;X62ilGK8 z4Tf5YVyG$0gdmm%K|NG1P#EDQ0)-KQ^%l{i72=3dFfakX1wi^bV6+LlEvCm|92oI} zxDd5`i8fZ`)k&Y-hOkIf*^;akR>B+*p4%Gi0nk%2SeB#}>#4`oS){B%S@aq4fDvL< zl7GW_0Ne$4jlikP@*x)}{TrmGinm~aKXDkMm>3;;v zjf{Jg%vGC7K_{w{FgHbe`VPvuLX|T!0s6#oc_)B%NQu3QiFVh9%hf@ec!Q|1CQUs1 zjdSC|C1nBI%xmpYOVYo zyy+3@0QP}pcT)w74Di{godqLMzkgel+RnLmkEfz&7rW=^HdhkxoI}_hfZ`F;6}58; z9%G_Z6bxPish|z15lD@pz$}g$$Iz48pudUGHWa`p^%IiCtQtYrpanLn7I+gn(Eb}I zxBCQTyD3PR0tJ!SF!oOWz=Mc^Lg~>O$XOI>82Eyk>JMfknbPuHNTA)77&N@T^Wf zlad4H>D1J#l0T#?^=jyseu`GOsE?-#WeFXYJ|3qyAEP+#$E6nBjhGD88t!5zKm!$M zpVr;qlV?(W^YL-2_WNQoK!49XPtW{{)GTU|<^XA)R%vYQ4|R|()i~ZLmH4`(AICS= z>*Bm1eDcYqcWcdZZ(e3lJ z$W9Y=_kgD<7|+L~fYohnFTAi{Gq?Oxd7!8!e9to@{^G_G7DlA^7!}+D3`}+)(o4a8 zz=v5z+#wVrvtV9l2Y<@vX2F8t#JMS3_I#mh&zvTQtm3u$OMt7bQo?(D!W; zumP{USS+{MDigE0zCALHtl8S$6wK$RPUHn#-Q2alxyfj3jlhx!EP*Lu7nTQtMatSW zByidaFe`+P8`i7nv;`e24BV8XNAZ!(dc(>?c8Qnl3W3rNu77lbs~u~NW3BUa+Cm!) zN7xXeLN;b;ff&B1Wo?0#Pypkl0GK~K4OZ#PS8yabR&i8wtmRmLjlR5w-%WZ^aR_!o zz*b0EdB#M%k8ih8(8ssWg#7@pbzvV10_;E#jTOn~J>bB{n8t))uV2D0TQO{b+7^Z_ z3TM#(zq{OT!295OkTYDssw5MSFDVrjuA5zxw9B`pMJ$Ln;XFZ!k~1kn4RH{! zi%wF4yZ{vN))YRLW#f5v*Kto?^e_uaV@YzgXV{?0B zOI>?Y|G+?9e_um;bAMAdo2_f>Z_VWD1~Tn+eXW`1{+7B-69{s>Ie|9n#bbdm@_G-k zz8}qM9VL+d{{SRA-?dOn2MECPmgaDc3IIWk3II?`0|XQR2mlBGMueKTiHr)$1Ai;X z`+WQ1HvFG$xQ2GJ{=mFrr=a)4O%lw*-rtfe(}(!!I{R5|;%A>Ok|a)4=D!$Pu`NI! zt-r4~;mh>&^>rD|1HNYO;+G(Tu3X;RyKufuqRn^ZKIh-RzrVk^V;9nP4f{BiqqMo^ z%P>e3&p^Jxviam&z=-B!4keP1nGIb!kB=y#;O8r|9wP^lEl_7DJC*zFRUG z?3i!DH^u3wO@s8#@4OazzUrFyo=?R$iu9xUk$(7*PrYe0$hJ8 z4@f#YH*utSeOFhj=iH={ZrRQaR!)Oe;c+snY^6chSr1GQ5vo!ez9A9_#G=df_!$cfQ~*cXj&Cy)ODuf%j2%I>u?kB=CS~yY8xNp&1Jk@E#Q8~ zRuk{SdJJ<6zomHYE>>IiC~dQSZyDJIo}}3r{oFRouj!)@0fwRdOG8nH-K&P)5g*udrRS>7ws*@ zzVz;`@$UHnJICm&(AF|d-utIg9a#)$z{vA0L<#DGKZ>^0>3_fJonP)_MC$9Oa7ha^ zrm?Pgy({^+E-=Al?^ivAUo!d^LS2zEaV7ADdr4irlSOLDC6kNuvo_R;NHCv-c)o3U z4)kW&$vesAO;dS?^SM=L<9r#c*RvP?*2E&b7ZqQRm|CuFdu|s{y1LyOVt||Unj?&| z6Ag?}7zuRj9e=nLyhUl)tk{p4hoKGKay=x$)>@Y9TaGJ1JGP-)xx{iumJ)$0lP${d zXDbQA#X4Tb{5H8|Ki_3P4`^62v<17Xm=Y5PFE>H5)_IaxHa zh7Nt7fxGU(mPbOfWBK>MCw>nR`iLWWCbRSBVD#x8XvSspw* zpEf?NHr|2%2-oZ2DLh$n;M?@`3>KK!7v%h^kpzNl>^ioE9oglJDboq4-TJ8&K$f@sKnbEKMnwRm z+{Q6{6nV7mK8}}np~B#A!)3a;L7qW%KuNuK=^g;$WGeFz&7beXx6Ne~E*ENX*6Vn? z4ppFw93?hY5LR}Qe=}RX0&3|VeUlDI?SBq=h|gm9bms@@T@pO09;3Tu1V0t| z0%@Grd@o(4sF1bRy23VleMV+y+Xtq{sZI*J`R*Yo)4%>=kLq84oqP@F(?8f{p>$U= zAs^!Si^>faJcIxoaec}&6aatMg3bI{=`FjCzeeHtGJ@ae>8SEIRN2f*}Q3 zk&^2S@cT98vVSGJuRnmix`qk(pmkqDw||>J1BT2W5WX+IW?}oLahLah#BHV|Ucz$` z6!FKMmw1n;-lqdLC)Gy)@I}=kfC<=L|B$(>DfQ4}AyDceLlG(UkewO)gJbH9b$27k{pq2e(z3&U8E_2=ZswG#W&8@0IK;ZV z4w5HGLanOju72^r7DnG^*H$K^-+$aP^&y1qYv~?PFp`xs-86iOpT364<1+rHblj%r z&(U&`gsa7kL$<_}t zG3^DW>{v`@sx3xy1r?~hh0UAM19i;$o!|faxfs4)Acq1-Gk;aJ);k`Q zL0YCbrYh1dg}pZt2+b_N3gZ@WT^A7vVv_pEM#z(4P?`p%IVH53d7nBW*l@xS7F>b_ zF@Zc?JzabW7f~?1<9Q|NE&3QIFG}wT8`L#_->=i$cjZUr<{9FA9HO;>gS0^Pqpo>g z#`EnuJq(Hgk>d_ivRTXBqJL^@suE@_MEx197V$S|1R%-)cpHAEQh$cR#;bj-6)#iJ z%XQ+Qzz9M0aybuPgNJCzw4V?f0_=Pe0lieZU^M7rq(RE!Dt zJwiERTo#sFo>U~%oT>)>B6S&@h6nZ~@cnK#KS*`z*dlUC;E&3m8_cr67ZwhUIZOz- zzGKgp%r;xMcPkZ><=d9;vZs)Gu-#g;t~GDtZjB>bW$7W;eSeIrS%dRs#5T?(N%M;) zsouCKl8qW^oUSEKU7?sFt_MNW1~ZW-naF8fWXF?hm|Z}jTUF29LA5CP!hOD-b*^1{ zDn(C><+#LiZBK9UT4If_U$+{jzJ3br9f-lA>v#;m)MrT~xYDH=!IV-DxiW(M#@&>) zZOoegb?ckD^?ystAOp)@Mg^pxX&NALQ4iucKD#2Ak=7HHYqozRS7myVC!Ef_@TfEh zT&Uz}BaV$6c1j4aGFh2UToEN6pGoSFp%>?VE;^GdniGVlWgx?3lJPRM9zE=e$=I;x zS}t2vx2uX+oBrV>7dI`${U9q_+l{JPQ9kq{-yRfi=znV@ouTtMNwQKUAD9W#p8@eR zY+DhdU8_Q(MiZ!>3?bf^o;@t~w6)=j(F&6mf45 zcR$>uf2c53`>u^SMY_a6$F42v5gC6%-7lF7n$`qC9GZ&6)3uMQ^w>&X)FCv_ZK21t z)OXKuvVXaaHz^3DzU0K`Dwod#k`h{ciV*Qgr*+m^a-qNhTKSl>4cN3MF5Z;DZ+3qv zQnc0NbjcQtD}QP?!DbUCtCq24`&dG3vEdqP{^Wq zp?{He>jKda2P|B$);Dcvh!nAan5K@9WAmEtV8}u#L_@%ut>WXQ(Ktio|ALU91*SFt8f! z!Iz_z?Ar93W3g6aBT6XsY}^B>X=l?)W`9YU#!Z!6NSP5!gYs`E15ufX-TRFyJ&+<@ z+pb679@Uu$!RZzm< z=*8P>JX?X)E#e`^XAdLHQ&v3uxr}`n6kUK(LzY_3`ppc?>tOw*WuOsP!pm!6*MIUo z;wf8bIWu-CP%j!(d~YG7Zdps)vW&HbjJBmQ#*xD(vaVX@hHV*b%iK0W2HP^m3}g}k zUU{DC3D}N<#qJt{T+b%RqJ0*G0Qb_R+Uqd_6+&*t9LU;#P_|y z1Bg1L6Jnl+K`U)ZJc9;c&c^*ZX@89AI(VyuUtOP4OB#zqo`XCa`JEB?dYCM29vuIK zv$cz(X3W%1&E|UGOeF%VSnFEcjX&Zgdy=#|(HX(iYUymbO|sm`LCvHGJ2gKBHS<1v zOLI2YgIZ~&eGY2vK3Z+G8YpP6;Ta(vb31I2Ie^H(R9r3NZw8u4*Qey>7=P5%>2?#J zE?=L6L9P4|t)qwKusOcvY2X~8F>LR0-nYBwU}0pU&%(c>p}W70GywT1;f&URBpsku zqLx10HD&kDNxXe}9=0LEm-uU_eS3&sJfk`jVCI2=0!4U|5y~>~^9&`WFjkYkHnB3! zKqhM<7*!3g?MNXdQy4ZCr3DCQY z;WXPntj}?l+CActN(c_H-1s?@h7=|F{Zr;^*5B_n(YU z=DYYjzBan#{L*>}k}pPD7VY;mFbIMHj_$smEq5EKQ6=ogOBJm zkFs>-BxP}e^I#dS7D3XzfJBU3$CRm?j^kNcyimIZ1oi1C{H;TFNzV=_Mm^YK9G6{-s_Ibt>YOpteO&LP}U)!KRnML>| z$M*A5(<+%H3RTpkGR=5aRZ~j#=6NrR4!7bclEi0=^4xPu`?BwLE%!_bJZY=PYYEuC zz}X+uJ=(QuvLknuJyi{`tKpf2 z$eZ|hNJcr5YOv6^~>$i``n-iaa+t#Gj?CSwDr4}QM?kZe`2{Vvi zUuO&L*_#igmD20r(YPqP?mM=23)vk<#pD>sx2WYgM8;;Vx_1_e_uAm)G~l(?W(iZh z>xVq?8T-j4vxss}L92hVo5X2pW5O9ydo;m3DqCs4ON&a&N%G$X>VxI)-)+8wOWw4E zKsuFDE*vKmI6b+aZ_ZC8fNYE;eB0DxXOx$kP+?rG3OWv7a@wtn(~pSM;fDKjb{R&l z$_8{u?D_$qovn?YR;SIzBtg7ezL<7_lLqmkDFhfIn+ilJE}nm+VzZVJ+e@m{iVhqeC*q6)sCVt(%UWcnK*vEu@ggHx*Oo7=s znRZQgDSCRe8Cid&dyZ_@Dsc}c%@{=fb{oeEzkVAoQ%H5@k2B&c7{bK{q*Uv!j^3AP z9A)3A4CFjsJw{L39%aA>K=!gBBqx&X+aI!02%-%xTz>^Zb#)vOz&F(+Vvqw)xg5M? z@sGybEZ@JJtomL4L;K}J5)L$K^WUH@6t7mkd^tAW6}1eMN0uRH3vAAwJl;92F7dU9<{Sh#;xW`Os}wg$S~c zG2rMOhzPPdTW9fhH4jrNYhVp~UUY%F$fI3XU$fH{F-J8W)kmRq!!}7FTuG`GBA(;( znyBDX6b*kt`cqOcG6 zNQrN=i^cJw(8|&QvXi8Av8zASt;JAn;A6bGG0%5B7Zcj!t;ynTyVifZ?5a+-u72CMlytESUm(`v$U51V z&DY6GxLyZO;ba-lgXQG&EVq=4Ira#0u!p7ZDX(crZO4(kr%b|0F5x7VFfAqMk67-0 z81{JZ1M-q8{X4>KF${rNSPV<`2_=q?WKrtYG1-aSaSkgY52Q^j*sZ}%dKkQDW*ZK! zT_=C+8~aaZY%6@xzL=R-xmd@`m|u*y?B~1e=i%8w)rM0DO*Fr{9D?it@*NE;DlC}} zZD5jM&040I7dkb5eNtza5VmpenOK`3PaWNa*OJ{ zSYo{Uu7@3m8Sul3Lv^L>9z7liI@PgeCQjE4)(TLi5)^;pPW%Ji3b@&~+68d==Yu}hEqvSRxBBNtP&5~M zIxW%Zv?Q4%j_ul%B4`Y-v+&umpH9%+A;H{9=!>a^*>R;lG>4ER?MKDh%Ns8^2}pK}I5u^iw19u)us8m= zPeN(5)j_%~$h0KqD~0P|%jqLaVZ&EflQ1$o zsTMvSuH>CZ$sCMALd5kvpIV*ja8m)vBq(Ss`~z)Gi+`-EA!gqW60NPK)%&gU?J+8O z*^4sa-liZ41Xy3&mOQsMCDebVR2K7>S))}+$1w#jJRxxRPUYC=>v*wUhMdkwJ~!C6 zB-LMSf{~4E3yOnI`>=aZax}EK52~+I-q>ZdVz1Oqu-Sx3|MAoF#I%=Kv_K=RqZCun zj?OnVN+Nz^kWVo2Z693HTLB=jCtSc_C|kvgRH(^Es|gQgXBLNQhtGf256!4-Cak@; z@;N*JrCvgZc!;Ka3KCDnE{NM`-$1NKpFdzMczS$nj7QmHB^|y}(%qB?K@gK?SLt$FxdsyKb+-jtB1}4g`ISSDWc|uwpZj zz({v`=Fu>bPT$!AivuAI>Zste>#ODW*XQ1^RPYIT%jq~2_=gmdN7Y`G#v|49s=&%% znSO?DqxrMsDe@@tEwP)6{e^2`OBThdK)UM9kN6r@&P+q7(HnnX=h9X_m$m&Y9E~A- zORHVIT~r0THB~)Vyn}2GvB#Dzqjnbp>5juyQRZ9`Uz&3zDV~TZPsbxNVsLrV)lSsD zOje-v^()<}W42Y3pS7*PfAf5)Aceh6c2LRFc|A?EjM_*L&=&D6N_z?WPclK%wxFJi zJpb;7y-#Uz&xn8jvG^AH^c2EV$Sy}#DmI`3C55P62lA5Fw(3OAmDcp2OCBQPQOiP} zsZqA+&z-^i={gEiT$rW>!IYd8kNq|KU#wTWQ!IPPWp$)QlYU`E4~7-(pjyrY z0mZe{B3qUKM_nF8!bDcuTll(3NQN6dIF75ef5v93$5ek=6J4#?lT}2wDRpcjt68Ek zZMAL~R!3k9HU=CA79dNh429*CZR-0rff5}y5i`SLV}?RorY`lIZ7#La&%STMnp&(J zL*hD{j%!+LclS6fCA(YMYLx75 zcsq^Vshxj2+_B5G8%ee2^EgSeoTv}s*IhE9j(z{#-0vMEjF_2e?xITwlV zGPT0>kmpJxrO5ZGgJrnHROY1X#v#MORvXT9ff9mOEab^J97&zDg@Q6G#LMAEs@ zusj#%DTl#YfZh@7fHp?dqu8~e2sHtEXD1Z6pT&P|9C}9!fu$MwTnce$W}n)7%(cfsGAa6ZXByG@ce8BMjtOMUT82Haw)kRsx@2bZ%FwdJv-1|U)T zpCsqQ;Tc92wFl-^rZNp0b%#nYLP(TWAxSWD91pv`BP-+wpS$But59({q!CH65o}{m z5|Mwlv5h>3DDfFeEdH8&;1O5n8r&BaFIPP#Jou1ueze0P64y9qB_KBOa1Y?D)NU#w zjDo=QKv`yWEn^S=>vH=PF^%?*c*(54oAgh+r=QQc?_lZEk9l&D=XH7_%jY>4HLZ*4 z(o-u`8mTtPy=^diVx)qr;sK>Hit!kXEv0`}aO1{ds+KIvhj_M+WK@7MD=U?8OaTvN zFV~^cW18J;EtG_vz{f5#8Ep$3v64)SQ5Vvo9Hgc_UPE$JDw|F3ZA&SYCbP5c1M6yo z$+KijmE^M`pKA+_EUlzjz@sMP7(5~crTiv|S5E@hi1^mBEuS3*4_lIGLEWWLa>{?_ zLXP7;$SY*z72GB{nCO;Mr!`AtP>I&C<6UZlT4g6e^Gc5Bj$3<9&_1uTcPDGE3WG-5E zPhtWO)7SAEEwR54GOBxGY=lgM>ESNo6>_Ratwr}BJ|@Wa9rm}bBU2vg=6zevaU2^# zT%)hbq(#J$CQPu69BSK8w-ba%80=LZ$W}hGVbRYnJ)A|)WN${~y52`!gE)U#F-tiK zCofrKay|JFKjl%%f?2q}s~sw>TyC?!cBO?s(<%o{-U*j?QplUOLnD(}9pH{r|qa}vKm2VQ^MGifsB0Qs|3w8_Ycp=rn(Dtgx*g6Zli^*nob2P74; zwL3J1SXH-xpQmd&K%`(f4Hze4rti^0U+3E-Vavre0rs1Xa7_^cb0pds^=*eZw#>Do z5&{$U<2bapM$omMb(pJbMB?|cEtl97r5txU(blds#C@w*n&7*GK+AtGPCv5uV*41( z`FbRulBc`v>ua0{Ao#MPw#+WEEkdEp-)VkXhghRXJJX=oqglKrAJ_RZUWe<=eSG>g zOxSgOE@kB+DFdj8!krhCN4~F&R?iu*Q-VXPU@-10a9K7cC-eC5rjaC;#qC)c;~gmhd`Qud~%qTS-BEubwYf;b!{z_QP%X zKid#srfIoG%jNs;=(Rj|^@ptgXo$Gb41*GS$kB{bUe!OliQdBH`)G5|)H7vz@Ft6c~?DE;3H4~q0N`Qy<)JjvlOLf$x?DQ||}Q)1c} zHC|{^ps0-M^ARFQKQc2+fFG5RO}M`65ic#V2gi?QA`TZD57%q9uO>W)Alyvu(tkDm zU5M%7oYsHHrIMhyMO@dyM8;T{zCf9vlT6UGA*kc!5`LHc$MNFZsw^2h-74##p_sOG z0#wG54}bP4HPB#RnzA%<*>~Z5n?#%M3O%TOf0M*dygsS=5?-v>y`;vCGA?`;x~E~0 zY!x-8y*o$Id%BivEYPlKZ;u4`?cLGG1^WeN2sD3-Ta`%yV&|-lDJIln55k}%f$oA= zDwzhV!N%UEj?HnH{-JUdTW&&$d(5*5vN5WGYbJRG*j9POd`$z?Z%|DwSTs%V?+OzfrTpn zPm6!~SRB>D9&)LVTv-ING?c4tcg$0h8RlQxK)E6cxHL>@#B;<1voOJ0b5RJSQjii@ z2?S1eF5<}f5XWD(fP64Tyucv0u%35UP%a57s#XOQ9$QhZMKhh9uA=O!0QFKpVsIS* z^9;K9kN`fY*7ohu&U?4-Acvf?(-Z1L)1`ljFyUPlY`Q)B`o_!qi&On5Se7`HkMAxn zbC`fw({m+?G-q)mgsFRAO}d(=c2aa?D(}b;^||(2W9Hk{yFB88@%j0DJL_I6EJl0V zmgoDvYZEa2hXKtH_4!eTbpD=$KV)zBf~a{@?ejOGhY5!abI-F=huFmY)N1V*&ZQ| z=R<9*GC!js@5pB3CWr)+;EThc$a1jdGM!s_5;8H0kE}Qw&#dAkTc(lqqtk!Y_tTl= zL1zk*B+brtu*2)Vt7N`Pw3T`X4*qccpk*s%lbfsE7x~{bZq~u{el>c_3df)L)H<%? z5zm(rn#no%OyW9*#j|$h-7C>7;<_&O#m0o=_?AT|?#oEsHQeKIzMJ!UnP)+gBVX^o z1JX1074G9m*NMD-w`189$q0XbJO}&O_hkf-T?MFB*B+Re@P6~M{0Jfds(tn$T7Ah% zL@U4-l~Y6bN2}m#^b~Bu`KzXDa9*U8^%?UajU_yUDuKE|s}k-!DZ{n3D5cAjS7XYGH}Y?!d9^S~L7 zKz3~?@K@Ch1sv9_^F}b57*fk$$lpk%jEZugY~{o2kSTEUe)gu`!*E2rPpz^Kr`t_@ zx_o^Olq)}27R9#XcG&@~LJ2KtW<&EwRKXz!I~I`N%mc%VH@973RMRL@XYRf+UZJj$T5$93lKru2`ApH{Q`?`LFUYL<9lZ;Vy*u3LtOcJ)5gEZr{XmPJeGFpESA-?O_9+Xg}lPN6| zt$NLNajqR|%6X0`w~;2?ILeg!Vn$t;vp2Dsm6SfDlsMR>M4~j5*4M7(!#a&J2KaWe zIgkM!TaJ%83`e4c_9nG=>D;QRct=2QbajaxdJ`{2$x4#4VU9y7yYMY&R+%V9xs!TS zH+8FzM|I~*dv||yVFwcjJxFzdwCdw7cjL67o)p<3lH$$CCZ3CBk*D&kXQHNJQ9T|N z&e*_x>Y?G+=Fimk z_3y!vJHWd-y}C*Q2oX~|kOY>XMgcneJiCjx38XSW@yUN}xJ30Q!H#T;0dp`Lho7Xgw4&M(k2W8y%4NIV5talr1X1smwiZ+O=w$B^AevHSRlA zRle7OpnT>=W8w`-?kkrCW2-L5A{3`!%I{ar4%Z%)M85Kttt!y-2_Kd z<)c&*`Bm}|pT%!YfE~pW=N0ySWFfW`eL7;LY2$w?Vo{NM6Tav{dpM>7^yC3+vh78M z8fM?^Lqn=BPg*nT{F%LOngA>ilxjEk8sBK>S093hus<$7MCB<(DWMwmpjwiHWK>V8 z%pK(JJ19fNfaiOkR=!fs!OTL$CvVcU14o7*w|&wFQgPBxJ;Kns!Qwie>xBP!CULs8mEg?0%fpel(ysPaiPzJ;9fKl6I z^Bk@>mr490C~-No`E$0(d7T7siw8?m7VEO#!szLFBTu3g`z>sX`qc9+SCS5?s?0Qc z@$Ya$>`S%lvt{0_Hzc=aB()o`>)HrmAM8KuGiU0(_^}O|pLJU{4yo?uYy#o$qE&zR zX}f9S;2kLr9#hArj@M~QHv>tfkO7L|5rE~>!+gzN%_!48Ki`~RoPLxQNwp*_92B{h z>tZmaQL4~LrGmB0Vf5qLR!7=<*5y-REjeiel`(5I!M^u~Hh_p`3%M`lJyW*e(P?v5 z&u$WRX8;xhQrS+z{W$QJejlu#?}L8_KmgjX8D{#qF&kamkBwBTRGfLTN>ch}Rbm-q zFR^S&EGZtp+puX6;qU2Y6!qca{LEB4OZJlWL%$R|1>c>3P904`L;5^tFGZFM)^^|7 zV)q?!Ez5JL?W)i=PV1uf_net^83KCB_VS}PxMi(pr<^<55yWN)Na-0h|op5jahM2xg6}#6$aQL zd6Ibh`XTrpZ*y(AkxAluVq6ubmd*FK)wg|H0*>PW6MC6BbwL|iX1ik8JHb9i#KK@2 zebFtPi#*(KG zAHJonDCb^+)VD$e_dz)v0P+?h>e(@LOqEW&q5wX?0+N?X3pZ23p&XJ zO&fx`u3`zT(a@};W28*lIi$iefnVT^5~mz+wm{1#jx46Ib4Gtv8}D%-LQ_A~@;6uq z&IW-bnkpx!zYP*Nro>@?MQp#bC`41?D`Xst9@)CSD*(&$V7Yt<=3m-2DHVG%3B?X~ z!$VR0Q=u@W(6>4I4-+RYS0*Q)XX0`IDWQ-jfyYswP}jBks6R@LwI*brC$J+&P#PN& z^j?@gK7>$jM}&W0&7}2hi%3dU5QiX-*e;bkIZ~p1_{4DTX9aS8J?eXT5Xo$!C&(5a zz;&<3)2Q<-+f$~2+WWA+T~ zkL>2{LasTkLEg=SWq7SrsAu=?0x5jdisy_+MWw|&RD6`qE2x~su%|?i62~+#=5&?@ zC$GYwAFLx&4NcY^|9t!5{!@36aZ4Q3-~_#%Z!`T&r^xtJAb5zECV$|FqF!m$2#W^vNW4pdep@WK;A1n4#b?}_7qJrh1<>Ha$;n|egJdVtpTJx|} zn(w=N%3rPCKm8ml;_uAyi45Jq`|&-U1@kW|!A{~~3)?>F4F9((dlW*BWheK%A2&(7 z*v>bdF9?;y446jmaC!p*O<1a5lS0v27jE9tu)BZ%z=<@5-ky%B7z;726*8&!y1oa@ z?{e;es82~#NkWpGJVJ@X{tsLkyFRYAT)joDG;#mkP-#{LnInQ&8_~HIm{k(U@@&tt z5QX|tAb~;fF;&Y7+LzsYxr|=3z0tCqCC(_v_AQ@K+14&!;$6#!9bqN4KsZnji9;r~ zg|UC{IJT{jyKunqiczI!oNh@AR!R}Vi2V{)L6r)`b=l@6YP1f^I#6qM*7irM_Zef&u;rU1^X(A7I(qR>r$jpOX~aCh+xli5d}Mg zGpt@s)<_!kZOW~zSAuukTnKYeT1l>eW@GT=>-O9#Cq{Sm{J>e(Bjl013m*e!5qE!` zF-KBmjssz+O^A$CUN$Epk^e6HbI`Fr)YgQZCp{mH;MyIcB55Tk z_9Q8y#PyNG?gfd#)Vj!1nNx|(A)7n^ z!U#$xmMvDd?2(M0o-m>6cP8o0f06tt9vR6r==K(tm!Y|qX4Tft+pY%@GJ+9Tu!K*p z<5fI=PU4ragqy$1|E}#i!IGQbu^mh;s%X~jsLDG#G19f7S7E`x9im`H{SfI$;xfLi z0_Wl|HbQA3Vl2}ddWr=fcI1D%M63cf+#Izld499pNJ|DJ?7&kS^4hBae$}$6q}p#C zTCIsitduux0TCs91D@*=LTwqRw6Julcs#IlU7)e1SpZqPwys{8+-e1I15v2)Yq0-F zh27c^hm!J4l{m{n)OUTq6NlJ_IJCrp5DuEWY(E&lf$eSS}&ReFK4qG z$F~Uuyl8a+$6;lb1=n%~QKk(NTf#I+Fv8R!2tfgZ&B8UKtA1ky37UgAU9y?sv9+6E z!*=BAGFoYI!Zb?Il?>jhLsTT$AH;lYCQ{NWmz2)n!09XlN?D@@TnRf$fkW65f-uNH zpN75*L1o28j6JC=mi~X(n&;c_Z1KXP`}K+p_egaP$o!1!Zm8}X^{~Nz@x7$njNn!{ z8ZUOr9Z)Se(<&n>W-j5GW=sPnvVf~N9i=J=>d+ikMAI18{tw6iCM@2dY3XNs?k0|x z0#jdX1=+4mnGNLhaNA64ZTHxDaD?z62rdwpHw0C>uT(~rywZOUar{NFyka*q^$8)^ zvHP+$b`2X_TV;2Rc8q&;2g#T=`TjFpt1rvz;?YL#BwS?$mTul%vOm6$o}SY}-4`n% z9V9_i;+e+O!k&d3=zEiiKgq>UW#WO)NLCGHKc#BMU@;y20Wxw0eFz@H`ujp$mpYR7 zg&;&Qwtc&owlIHhw{QFNN$J15%wfi^Dq%xt2Sm&h3g>-b%KAV=2Jt~kO$XXwTo)cbeSCn zGD{c+Uma(Cy#tgvtygI@ab#YCwaCgD|0IEA{MXuH`&JS=f2k!TJm5P7@S067MODD79RRJ??4& z%EGeS2~>acI2Ygl>-HQ%syOmJKdiRt_f2>lYT(Y6yGi1wBwVkX;2_&0J|&V^wdXo6 zwj9#yGOV@UXIk8SdxR$1mf6#J`}fgi8G=HzIwoNqG|^y-H@0C0`Mp|6631_Mj_Fb} z1vo0t3Fo7pyx+Vm`J}be;i-hY*rV*)WPjU}?v{ViUGJLja$2g=ki+128gBT?rs#L3 zlmon2hA(jVogVABB6+w*ctE|3u3+qgSts`ONTi#;S_inr1|i}3^KEKboGuo!{i_1H zR<}(AeEuA)R@`$4+Edz${9<}}$Vb4WWmODp>Q{qfh1Air!-$u)YQ72P3wXlLuCJEg zU!Q+fPi!$c({h= z#V13WsMY1-brdf0p9l48c7Lhs4N}A+N(aTqf^1+f^mr5oV@r37Nc;nN&kQ*5$~FSl z7u`0F-HSI6bOna&3?iF3fS0g(4;u8}WNv>D@uf}(l@w|8i0j#&Z$XPRX2Pa*VOkqP zAGy4X{pbZ}uER~hmt5<%GyrZNdSRP!|0{6j^kF_5r6_;AE2nRV?J0eGc>K>4@U?q^ zkH7&gQ7n3~2ctl5Wx-4=!MzaVaW|?m@>VgBDTR<8%13^D7uiupE)9c1_7$saX1af! zv%L`}+|3#!fjHw$5~TD!&+#neL8)(=*LPd8<~txvxftf9*|+7-xAjZ9nE*M6mLp+y z$GpfqwK@xzR3~yL^?-SZz|%cWNN-?D92owjrve`bYmbqvJJD9F403(CTI|@#`svul zej<)X$5Y#3d*u>R%D6IZ*&EtnN8^9{or|iZR5ox69xEYPv5D(q4};a#zJqg2ZZ5Na zAJe7vF5X^awbFWot)@c}>BQu;DuV6AjI7{@#g9~wEKaqDU^%&tAEIS=A3WVg^XEUq zhwdVmL>vYomW6CK@3KOC?fq6Qf^<@JX4>5u=w61kJ*bSC$?BSe4L<$x8h3vp4X=o` z8^Gzqnxio`yMc^czD!uutySh#!T@F2Jhbo8uKGXHL5u6j=}g}bT*Rz(!7qdLCYr0< z@Se|JYC@3G1z!>Ko zp_vqGkWNWv$mlU``P5-M-S>aHxGq~mmP%Ebw~N&xRr~5wHxMpY=k{v#)1c1*IG%%` zEX5r(M<$llA$pg@ufi%s+<_>mQ0Tgdu-(>EFfC`hs|e7ai?M3+6wwDnq(B~VCN}%; z)U#dWK{N4+_`^=po*a0;xI+%f9U^li@YJ7po6Os;18Rxg$85(r*l`YR0;HEAJA}Z!1>CY?pY+3N?S}y4bg{C#f^lVejjeZHNEW=+$>%9|VHJJ!blL%K1dYqoR4 zo7jm$axDRwmRJ|Tw&hTVS`?bbFC^0fuc9h>7EFAb%WD)oMniUP6Y2uSgd<7c_wzVO zIB%&jpvr$hRs`|5Z{vRLVA%3$H!ED3qcgURdr+HhJD}r~{k7wJly-*Wdwqn*;u_qi z54(B|r*Q4)Z&6)qBw@R-IUm365n%jxS`l#&Cq}D7AGR;7ORITU_*M>vU;=yA4g{IG zTE-8-@_n@4#7{}^BHt{IFD58!47^O`eY_3laRQ{+GQSOFL(^=pYiN5#5N6^{@Aopbt4cyC zNa(U8?ka~+9s&j<4rJ-4d%_(Qw=gqP7wdQ#bN%j?{d|}GY@)1L?(!(qPHlH>yQ6tg z@vF^rhi%PQ9?ESM>N&{!JChX%RK1H7X>;^l>EdWS zf(i{os>2A1bn|433YTK5R=1?MJztKP}pk3c>FeNytW7D`r?ceV-pKT`52^wn#SbcY-`x=;*qn0Z~_ABBE+Jm|CxYCcJp5aD4h2CXdVbTXuhgH$xprl9P=+ z7a`<1ef7=jtsj+hXcMkC=WIW$+rT+liBY!uJ;y=W{TxbK-;5qaMf+KFtLjBn z(sk6TQMKyCi$S!A6U~44h}~3*EFJaQS4MZXF0}QBy00pH$mhXw`4H$M_l%~&4&ys7 zcSlCqqWwABT!$e{?PibBXh+B%bFk!^qj_7TCs2c+XBg2>*GU|mEvVzII~;|Y<|fpb ztm-Xcp3yB8QQ-X9jbfDAO&m?GWSyOU?#^nF)H=eJ?|D9<*1&&Qaz{_JqPoA*1^04R zjv;$%7k|&pTY9_&NUJQ}pe+t6jPyh;|#ZF+sDT+2^T3)xJBgD1f=;gCQOe| z>Zb)CV03?Mol=LxCNxwet;mdo`AW|+POtCDP4pHn-$$GK)Yxn#5lZqoDaO>HzKo^0 z@kG>RfE1zUKv{nV8kzNvu9D#OIhyxpQFRPSLnW?_Z~w~SJ`;-WB3{vxS!^5b!R&S? zN?4gZiz4jVU8I*PSw$T^IzqSNL1IV;_DCLgnZ19sga=c5CS2{A6l%|;szT>G8zF*R z%b~W!cyS5AmWBKd+oeZWH*C&uODX*R5C;H~rtFLL_cgO~r+4YU#xt7gCAO}X@i$;? zEtLvh`GgfS0Gl`v2D8@wb-Z1NDyx#F;-?$}u+!Z9s>(c|CMxx1jpS#mPRV6F->x-W zy()isI?~zi`A#zX;IFE)59^|E1Def3>Y070O0ubVrw!!4h*cev`pN9>>|+l#q^xG4 zXIZ`+*W2?Fw&nhCI)PwB2jP|+T;UBgjH8Zj_H6Qtmmpf^x>sj1xQ8Uk;GXNa%>M3l zKgh=?mp^3F4=jx^FsXbDkjgP6s&i#FS}}i3YBIYInOziY!prTdqQN>AuhiZgcKgDl{I@;?-{UPz zg>HmUuI{6kFzLTtK@K(uYDg^xZ1R6V=Y{|JsML`qRp^&;a(DP_O>ARi+o)eHs9Z$BD4fdS8DQN~X@YAEH$y ze@3y#@pc73E(yOq-#$chy-#oAZ((9-ij5LYsTb^6ZgjhR@%E~@K6h+=w0B~nxrwXh z#nEUDxy!lY$Y_>E$1>lPgDJLMIB$H*WpYgMAN{h_>@TvEkm zHV9E;)(5r=PI2(-Z1uX`)VVi&&m~x5gE9-$#q7ZLq!mr8ZFlMUIXHcGeK7!5tOT=$ z1;X^v=CyI12d}|Hw2U@U*dInKC$F5l_t845=BCnJ6{NOaqOgAkz}tNEZ&<}XnfEYU z<)x>@z#D>Pkz3292)h`JEX(~=xxA?!)Fw5MhY^5E+=|Ms;$k5Gy5+30>cE0OIiB2b zacDTAr_<>GA4Il_+H{T0xy)9UBb*F0wf>^lP`*t{wmEh|T%6BFQj;3q+iRVz)Es*1 zo(3^RYWnB99qWICcCZMHH*`9p%^xP~Ivfv8q}iIs zW6>fQqtD)gTqa{v(v$e}!X@QZ5pUTHCyREbIgtUJ39tBz{eh|GRngEn@6KM%S~L!~ zhvA#|6`VTVZsNP>@30=YECP6vxH|EX&Fn@?7P{E+vembZ)(Q&(e-a~phc>FTEgrU7 zl_&MeOGE1N=n$o=CSQ+NN(NZlMKc-uc+0zt!EaH(+cJ|!9MNL-l|Z<}z%;beE) z*Vi~{+2}Tr1m>{CgGIh=K{K2xk^8n#qc4K-c=!nDlw9<6f4B+wNc5bQ2K=QzSecf_1xX>KbT%fo$LZl9vndUBbtzr0ER0H#F29%m&aZl^z@ zOq2_OdctY~r}y93Pah!eq%nyE#gmZst(b&yobJU_T)v(y6dRS5aUqv&+6wf4 zW)P$Bfch=_QZhEIi<8+s`zO~gc^3s0(8bse?6@w^H^Y4u(7B9hLq^ZDn|{K-_y|ht zFFs2dbEZ511uW&MpBVuxIxy2ZGfJvvC$Qdl>R+JoELV$F1_%WblG z4%eH@Bz`&l8YWEPJ(uUc*}e>u;9%Ec)-W`l*~}T~=>~A}TCLWz7)`v`d-a8;#p-X8 z_%-#;!QG&)!#U$q9)f;1C>JuV2sy~OQ&TfeR@so*wZ2$#qw{_CLvtTGR1#Nzx3Py^ z>{Cl()1+n{6O#`5q!2SL#T;zxPtoJo$<^#qQfA6=ByK2Vd5G-;&z9&ke89ZzX|-+f z2yWB2Q~?;ON{%Kfdd@3k06!EL^8xkoDcq!m%S?r4v{;$?hTrp{Vl5+ck)5`()Apl` zXESETN7HU3k`!#8G98mRveTe{VfGw_d*b*DosI!RF68-X)n|qnwID|KQ4~XqSlshIo zr9DfwSKa*(r+M#Q-TINQO#i!>{cbl5oJ!PVY-8J|p5y9;5qdgtgjc~&er$fMEnZ3D zUq;Q6m$q-Y7>i#m>=DoNd{2fQsATZx4fp7wHwiOB*s|P5n`KUaL<|IvU->e zWEv69JGO9PEy4-KthFnl42yYG9FVYNrN&6E?&IzJdGH_xf#{Uuz_LL@gZhF&n_&-V zhyL|JeY4djOdeBEU4Fa}vawHy<4Ne&F~zQLAzPN=S%dUdnimi1|J;50sD#Di5v!1$ zjr3nRVi350*>(zl6VA_mk^fNXok9=xk0`7Mt;)&$5I;dD;6RpR?fsctte72^1fq0e zre}zOV2DtH3F$7c*8B3+Bp=5Nl}W@BzHH)1av|9Hv|OA0ziQ&}zS*)5o?bf&t+g>0 zjN?v9?Lv#1~Ps7=2u*%AnOlu+#G(QoJMnmeh-u|WiVyf{BozcvKzXcs~f_X$?RX>3RRa{24ck5 z>&!4Bmoe1DpNO?yn}x*$Wwf>r5*Q#HL)T3=dbY7&mtnrUfOOCjNOFGOjjGP|C|~MI z==AfuND`rT5p^wsWZ0p;FrPrOmdjWWFEnzL4XW#Zwf>$5%W$;_k^`kC=nPdiFwr&C zqmClXYjFB7So4!}9wqZnyAt=r$DYRwN?Qu2w_J;|U$VMTr6rs`6EZD@4A2PG**tRL z7r{C-bITO7AY}ryk)-}P#)Nu)%Cih&0u)Fxx39)w0<2%b7cW7yd>5a`*FEu8Pv+CG ziRZF^`GhKz^|K-suXXa$*7A7d!B7_?g<1Q?Hs+01)P@x;)ZqKApia7vRvSg;Bo}$? zSJLz@IB`-{4#Y}S<0!A#wde6NPEs@QktzAGeIw0pg2(;DV!OAUHrZ1u5iab&Oi!&n zSD!1z-DjsSFtesX32Vhb#3IdaMAaC%;%?o4|Arf|cPb}dGxl6$x}C)>cfXT5Z^bpf z+4iwyQNU`FTiR@A7+8?C4a)R_WsnII?qKohtYfJdSnpujYSkX8j9N5NJ$KliQ{n{c zBK@LcU3#QQ*JW?Hcl8O zZuk&#%FoZYA8y0{*@ghO9FXm^+MC&@bm8^|%BZjHhnO2Ev(;m)^&zOg=^F9HF-XAQ zNVEOdHdscFQMfo~|9$Rms#E@; zZ_5L3>-xSMco#}{=aFYF2Y+wE`Q(&;|5H+$6iYIu5OrvpJ_AjzNJUL+qDBt*q!JC( z(lip}Ic#atDpmh^uv|U_93!ARp~DKj9!q?vx+4dc^&A#z>ROy5j4$n>vS>Z!^+UA! za<<)U+WDN=k`zw%Y}-dv#td1{cda%rxrbZ%u^^T-bp^Rztj#ok_3hnVLAES^L2Y7N zlAiAnN_`iD@oH_FXMymMum7SCT(lY5(JrsXX&a)a@mAoBpL7zVd z+|7IhDTSTYK67t)G5^}N&voA&>289*8>SiAySIZzJHqX7XvhHo4*&7;03e9|elib< zPA9mK%I?YW03NfuvyYwSz&#{(-XLN*f0z&pgSm8T0jsuLt+ClTL9E=h?dG&XQsuKt9X1ihC;oIAk# zb+G=DR-SIMZXy|Cz_F?2J1+ESm*CAE+`W`(@EA(OoEh6$(z&w)b0@ZN*xVtGf9nC4 zE|$)nb<}gW%cIU-+lm25T$g%0r?iF0a~i<&iR&eh*TjNP9$%sX@!F0-0o z*A+9f|I>_thiUV9co_6f4b1iCX&9T+C0hWPG%Y5~>fC$?zQF&u)VGm*7cZ7Lv0*76E z46r)b$`lLL$-R!Z>rio`1jh^*?h@X7{Q~Ppbk7VH`h*m+W40d#i;*<$e|nIi1!ERx zc`@V8vn-baRqRG2V~C5yU~!`#i8pkx1L|OgTv1V>?zd~$BaS8JOGFlj-ylSwR&GzN zgMGLTBr!MxzLo-2dKUg2g~|PM5^tZLl|iM5O*^(^<$lBnN1;T3`(!Wh%dB(8vAeh7 zOZ+v|K#db>``Dq55^B6Hf6eqX4MeGyCUgGgb6qCGq%=5RT~};8d$vuGXSsc3xUKdL zC|S4I3rP(O8&e5UA;FIA5*wVr*bzYx_TwmC@vdH{ zG-KXEqU`i_%%kme;+xkR5Ul*bjqWl zlyEhy;Ga?I8NHokB=RTUNhX`G?j)1#Hg?h;gR?qY@#xs9jMdx9Lwx_*28(8Z&ynds z$hHxCewZSp5a7!sXh!9Ld2fO*k46*7aI>Y!w1bv5tR>`0tR+G`k6`RUqc>74D{v?G zVjUGxpg_m7>_k;df8*S;pYO7thf|T6sS2cl(i&7Qw_MjhpP2zx`Zb3lmItlT^eTxK zcfrf+asUWRvd-GjVRMjO(Kc3o7@*sDuYj(>9xKuAQ5G-QJ*KADBr0lP*~2twI{B}c z<$e5r)>V9Rk&)(#OV?xSxh}F0lDK7gK1mjkt+cIgUGKl>f9GAqm!1ccm(i-k%Gj3e z*$(!7sY3=+8*@vUf-8SEC7E)@q>Z1hqPjM25>XVV2Rv9#uH%P@4Iy~CyT0qDK#~-z zLAFDD$8s%b`Pv%9=%nb#RNj#x3bTDCP&}dv`kWq}t*s)vO0_IsR@`%Nm zGhEY-Re~Bv&R=J*MV?rGu=S~xBw37#%srL6rag_?DG+bpbU0Mb9ebLkITWr`il>z>Qklb{%p&-OE$<<2-w=atZs{KMb2 zN0Z}s=<9ccT1m}#Z3;emNu85v>@*9c3IexcAgOQre-5UYKvjok+*T$Yys&C?uzGfO zU#AUi@BvvyMy)peEK=x1?bVn(*2;xtpfxiCKcAg7pN=9;)femS*!Da^5Hl5f5>+!> zup;1K7BA-v$xOVm2v5eOP|}7pIFYC&ArSC6EXi?^1fwk_D5(hp;OunxP@aR;V#&q5 z&wfz+e_V%7MbZL0J_-ye{Uhk4uz<+lGoyv!lX?{fNy<{z219sa{n<-vlUu&TCfR`k zcP;lo9A>;SSo*8{8!(u6I#d6qpqPr|_EzJ^v*HCfY19vm0y8$ z1RV;Z+9b^QEO1dg+@#PuRVcPeDD$3BQKvJD2cX}ih$u&V3?1tF6#FieNw_Pey4i)% zB7ld6sF;9|48~*Z2{EC%0~Ym=kr9YR(qdqjVk`(EE>rcpjcftNBI!<7|G7XG<Fl9&yVlI=}HKUK|Z??Zx+pc>7sn-XkYbIxvQYTrx*GX3IHP>Gn2C{2Q zQkW@qZ0y>y)E#MA*<6fCD{a_;o_(Gbf9W@k1MNv_Q(@n65hZ=;+m(h7du63OWw+7% znO_=NgO>rJPkhH^NS!L4-1ZQ$}iFsAuW{FcLP^r`-;BEL|||bQ8^ID?x=nxqr!X9ON-;U!}rdUD5!w z#r~=K%6)qqE>lmZFumEsl4?9QwH)8`?7sZwdh0zqwfJQ5_{VmSB&CJVX}yuGW|8Wj?TfBwlsN{ z1W%1Y=Qp7*AqOHJy9-@xJCZ>+Vz3nf2OoRu_W6@Dqb1Thuf&q%PGHx^)OQG!o^{$1 zq(2umWpoJitfXyhIU6N9e;ajN+d|lqT&Xfv$gU+-sWPWqF|JXqNkv%p(Yq)m)(nz< zkC1weHr;w_-5ord_q`|3f4W+H+B}EJ>8zFTVPh(ZaUjkc<@zoZJKq!Mt@Yu6VftTj zbjf~d1u!oY_Lm=mhj7^pU8XjVD@_$d#Bq`B6Ie{W4DPkWL4pJ=e?#$@!j*hPLn*a@ z$6P?E(LCr9^$L0HIbt>!G_y;M*W)1Inf)?*q>suZ-B2|huQ$YxT*t#Uv3yWUZSiCx}gn(!-m9Dk9X-HsXQO(?n~72 zQ8<)JoKw_cMv}CGOo{|65_W3si-%c7jxl8_SWZ9BB*{44f7wQ&HjV-(sp6Kt50~9; zX(Hipaj3<9$9A9vc~e zCXzCD^Bh!yBnE;cF;E~-)e0CZ8B-$>>c`LD)W~D{sZ%~%??5Ndy@WKu_QeVza$I6l z;#1}7TOzi5e?`g!1F1pOU4kzhG}pQcGbmmEeTaQYjZ3CmST%kVDx zJ3NnHUV|ji;bi?G@7(;*pYz&WXED8-u-A@uCTuMMK7c@r$NnEO)H-BppdS zwx9uss-f6k8UU9%wo83A8h}V1h3$n^|G+c=)uNy+9smiJ4-=Olj}S?mMp$rE;v8oMZ0L--R%=vS$dJ18VG!0LfTCHHn^z`%S^i0nf z+&zLKp3-k16zkBMvE#VRpl7O4t-F;lAp!3=4(AZ|tsa`fW-;(1xTnh!f!twslfMOE_hm=U=7h8`ulFe^;nkD#Ju!LSfN!;2qEL>K?IsixUcE z9ETI817X)JsMW&J$}|h=`kY$A0Ap6O3kT8YO@mkSK^f21dwY$+>L0d{MJZucno5>l zDnUhuV;|%>eOfAD`nmqM0|i$;hh2Q)eye{A5xg(WH%sSfD|^l44oC7_^Oqdkc3*CX ze@v$|skn>*;kXLpE(|iE61HXHBJ8@J0}k5NVFWF)LoUXl`31F}Rl5apV+`oyh^UFF z2&G}RdPcM<%!DS!QdX$XVm75sd|QzozpS3IlX#GKbU(ZC=*wi*_@8IVpu`@8q2|B-Sp@hJ&YNlV`P*I>D2 zf4!Kyi-7plUbu7He?&I27B;oK;4yH~qxJAOcWpOZgzOz!*d7XqH=l?00|_4-Y9Wtl zmA|q6?YdX*&Oav0=phM`@9Ce5KSg2o_y2f|mc@^g;%7F(Z*%tV{|it{2M8EABznaT zWB>rZKLh|!O928D02BZS00;m^gqlmh^OojtjS2ukjhEZ-3M&algqlkjIC{knmk;p@ q6(y;S3IJnabYX07XD)bcY*0%D1^@s600IC40CE5T0Pyh&0001nW>|p$ delta 695324 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

    98-rNy1|GYI)~D-rqv@o(@Ao6(|hY3 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þmeq~lJ-B)y-A{)Z83E|sXW3m7 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

    jIWB1So%r0Q?^b;Jbqw`JM)Sn1n|D1 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�nI|UT?B=BYeAUypdo*2PJ)?>bBYMbt38Ok#wjv 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 *K7<3k2W0x~aM|?5nb{s@o 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 s9B^N`w?_$W`-HE|+QRzBVR|z#*PK=Cy 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

    DO%b#+K3^?B+qYo!K34x*#C8D->))q9aV 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�lw%Gk+dZS2-{2vrf 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 )>wB0P8Nn7_S%1IIkB%1#H$OT*yv?V1*lOBLbzw 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�Y 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 S|Lyt#db>j37ndl|=l=m4rI5}5 From 281fd202e3bcc77d04a293afc79007846c0c1b06 Mon Sep 17 00:00:00 2001 From: wangsen <690275538@qq.com> Date: Mon, 19 Mar 2018 11:04:09 +0800 Subject: [PATCH 07/15] =?UTF-8?q?=E9=A6=96=E6=AC=A1=E5=AF=BC=E5=85=A5fb=20?= =?UTF-8?q?=E7=9A=84=E5=8F=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FairyGUI-as3/.actionScriptProperties | 1 + 1 file changed, 1 insertion(+) diff --git a/FairyGUI-as3/.actionScriptProperties b/FairyGUI-as3/.actionScriptProperties index 3722fde..a18634d 100644 --- a/FairyGUI-as3/.actionScriptProperties +++ b/FairyGUI-as3/.actionScriptProperties @@ -35,3 +35,4 @@ + From 58a0e4be1760b92e5d231ea9ecf6f6f6807f7178 Mon Sep 17 00:00:00 2001 From: wangsen <690275538@qq.com> Date: Mon, 19 Mar 2018 14:41:09 +0800 Subject: [PATCH 08/15] null --- FairyGUI-as3/.actionScriptProperties | 1 + 1 file changed, 1 insertion(+) diff --git a/FairyGUI-as3/.actionScriptProperties b/FairyGUI-as3/.actionScriptProperties index 3722fde..a18634d 100644 --- a/FairyGUI-as3/.actionScriptProperties +++ b/FairyGUI-as3/.actionScriptProperties @@ -35,3 +35,4 @@ + From b66d0d22a75f4dd5bf1927035145b825d9f8bc1f Mon Sep 17 00:00:00 2001 From: wangsen <690275538@qq.com> Date: Mon, 2 Apr 2018 09:34:58 +0800 Subject: [PATCH 09/15] =?UTF-8?q?=E5=BF=BD=E7=95=A5swc=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + FairyGUI-as3/bin/FairyGUI-as3.swc | Bin 720927 -> 0 bytes 2 files changed, 1 insertion(+) delete mode 100644 FairyGUI-as3/bin/FairyGUI-as3.swc diff --git a/.gitignore b/.gitignore index db239b4..6ea4741 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /FairyGUI-as3/bin/*.swc +/FairyGUI-as3/bin diff --git a/FairyGUI-as3/bin/FairyGUI-as3.swc b/FairyGUI-as3/bin/FairyGUI-as3.swc deleted file mode 100644 index 37a02063f53796e0d4480cbaa5767d283f4ddcb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 720927 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ℑ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%0A?2#Yc?$(mfF#{>wia#qi81M#m>`jpWcF*Fes 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

    O`*-9Eumm&Yp5Z# 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

    u}Y-@ot(bX+W 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

    ^XV2U8iq9DZF=|yldTV={RmrClpYOA?GLl=Q#;+ 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%0A}pY<65&i~EJ@Xmnf{ZVPpa2phOC*Jku#QQcxK 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 XDhkjr|J@bh>*M Date: Mon, 2 Apr 2018 10:07:21 +0800 Subject: [PATCH 10/15] =?UTF-8?q?=E5=BF=BD=E7=95=A5=20=20bin=20swc?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FairyGUI-as3/bin/FairyGUI-as3.swc | Bin 720576 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 FairyGUI-as3/bin/FairyGUI-as3.swc diff --git a/FairyGUI-as3/bin/FairyGUI-as3.swc b/FairyGUI-as3/bin/FairyGUI-as3.swc deleted file mode 100644 index 93c950596907657755bcdbbe9cf3a4e28482ff20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 720576 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�F*^8?6qMg64q`lVf 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

    sx_&q5#7&2;7q}!#4MI+BogL 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�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 z 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 KvHv_M)Y1e0JX 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 From aadd6081598923dcac28ea78748e28b4a8bc893b Mon Sep 17 00:00:00 2001 From: wangsen <690275538@qq.com> Date: Mon, 28 May 2018 17:22:56 +0800 Subject: [PATCH 11/15] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=20=E5=90=88?= =?UTF-8?q?=E5=B9=B6=E8=B0=B7=E4=B8=BB=20=E4=BB=A3=E7=A0=81=20=E4=BA=A7?= =?UTF-8?q?=E7=94=9F=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FairyGUI-as3/src/fairygui/GComponent.as | 8 +-- FairyGUI-as3/src/fairygui/GImage.as | 42 ++++++---------- FairyGUI-as3/src/fairygui/GList.as | 3 ++ FairyGUI-as3/src/fairygui/GLoader.as | 2 +- FairyGUI-as3/src/fairygui/GObject.as | 52 ++++++++++---------- FairyGUI-as3/src/fairygui/GTextField.as | 4 +- FairyGUI-as3/src/fairygui/ScrollPane.as | 12 +++-- FairyGUI-as3/src/fairygui/UIPackage.as | 2 +- FairyGUI-as3/src/ktv/managers/ManagerSkin.as | 1 + FairyGUI-as3/src/ktv/ui/KLoader.as | 10 ++-- 10 files changed, 65 insertions(+), 71 deletions(-) diff --git a/FairyGUI-as3/src/fairygui/GComponent.as b/FairyGUI-as3/src/fairygui/GComponent.as index 6d656c2..98c1b07 100644 --- a/FairyGUI-as3/src/fairygui/GComponent.as +++ b/FairyGUI-as3/src/fairygui/GComponent.as @@ -24,13 +24,13 @@ package fairygui private var _opaque:Boolean; private var _hitArea:PixelHitTest; private var _applyingController:Controller; - + protected var _margin:Margin; protected var _trackBounds:Boolean; protected var _boundsChanged:Boolean; protected var _childrenRenderOrder:int; protected var _apexIndex:int; - + internal var _buildingDisplayList:Boolean; internal var _children:Vector.; internal var _controllers:Vector.; @@ -39,11 +39,7 @@ package fairygui internal var _container:Sprite; internal var _scrollPane:ScrollPane; internal var _alignOffset:Point; - - - private var _translateText:Boolean=false; - public function GComponent():void { _children=new Vector.(); diff --git a/FairyGUI-as3/src/fairygui/GImage.as b/FairyGUI-as3/src/fairygui/GImage.as index 8cb28c5..e0763ea 100644 --- a/FairyGUI-as3/src/fairygui/GImage.as +++ b/FairyGUI-as3/src/fairygui/GImage.as @@ -15,14 +15,14 @@ package fairygui import ktv.morn.core.handlers.Handler; import ktv.morn.core.managers.LogManager; import ktv.morn.core.managers.MassLoaderManager; - + public class GImage extends GObject implements IColorGear { private var _bmdSource:BitmapData; private var _content:Bitmap; private var _color:uint; private var _flip:int; - + public function GImage() { _color = 0xFFFFFF; @@ -113,12 +113,12 @@ package fairygui else packageItem.owner.addItemCallback(packageItem, __imageLoaded); } - + private function __imageLoaded(pi:PackageItem):void { - if(!moreSkin&&_bmdSource!=null) + if(pi==null||pi.image==null) { - this.dispatchEvent(new Event(UIEvent.IMAGE_COMPLETE)); + this.dispatchEvent(new Event(UIEvent.IMAGE_ERROR)); return; } @@ -214,7 +214,7 @@ package fairygui } private var _moreSkin:Boolean; - + private var url:String; /** @@ -243,35 +243,23 @@ package fairygui var suffix:String=packageItem.file.substr(packageItem.file.lastIndexOf(".")); url=ManagerSkin.assetsHead+packageItem.owner.name+packageItem.path+packageItem.name+suffix; url=ManagerSkin.getSkin(url); - MassLoaderManager.getInstance().loadBMD(url,1,new Handler(loadedHandler,[packageItem]),null,new Handler(errorHandler,[packageItem])); - function loadedHandler(pi:PackageItem,content:*):void + MassLoaderManager.getInstance().loadBMD(url,1,new Handler(loadedHandler),null,new Handler(errorHandler)); + function loadedHandler(content:*):void { - pi.image = content as BitmapData; - __imageLoaded(pi); + packageItem.image = content as BitmapData; + __imageLoaded(packageItem); } - function errorHandler(pi:PackageItem,url:String):void + function errorHandler(url:String):void { var ary:Array=url.split("/"); - if(ary.indexOf("skin0") != -1)//默认皮肤 + if(ary.indexOf("skin0") != -1)//默认皮肤加载错误 { + dispatchEvent(new Event(UIEvent.IMAGE_ERROR)); LogManager.log.error("默认皮肤skin0不存在"+url); }else//不是默认皮肤 { - var index:int=-1; - for (var i:int = 0; i < ary.length; i++) - { - if(String(ary[i]).indexOf("skin") != -1) - { - index=i; - break; - } - } - if(index != -1) - { - ary[index]="skin0";//使用默认的皮肤 - var tempURL:String=ary.join("/"); - MassLoaderManager.getInstance().loadBMD(tempURL,1,new Handler(loadedHandler,[pi]),null,new Handler(errorHandler)); - } + url=ManagerSkin.getSkin(url,0);//使用默认的皮肤 + MassLoaderManager.getInstance().loadBMD(url,1,new Handler(loadedHandler),null,new Handler(errorHandler)); } } } diff --git a/FairyGUI-as3/src/fairygui/GList.as b/FairyGUI-as3/src/fairygui/GList.as index a2f92ef..9fcb8d6 100644 --- a/FairyGUI-as3/src/fairygui/GList.as +++ b/FairyGUI-as3/src/fairygui/GList.as @@ -804,6 +804,7 @@ package fairygui var item:GObject = GObject(evt.currentTarget); setSelectionOnEvent(item); + if (_scrollPane != null && scrollItemToViewOnClick) _scrollPane.scrollToView(item, true); @@ -819,6 +820,7 @@ package fairygui var item:GObject = GObject(evt.currentTarget); if((item is GButton) && !GButton(item).selected) setSelectionOnEvent(item); + if (_scrollPane != null && scrollItemToViewOnClick) _scrollPane.scrollToView(item, true); @@ -1626,6 +1628,7 @@ package fairygui { if (_eventLocked) return; + enterCounter = 0; if (_layout == ListLayoutType.SingleColumn || _layout == ListLayoutType.FlowHorizontal) { diff --git a/FairyGUI-as3/src/fairygui/GLoader.as b/FairyGUI-as3/src/fairygui/GLoader.as index 60840b1..bf00183 100644 --- a/FairyGUI-as3/src/fairygui/GLoader.as +++ b/FairyGUI-as3/src/fairygui/GLoader.as @@ -93,7 +93,7 @@ package fairygui { if(_url==value) return; - + _url = value; loadContent(); updateGear(7); diff --git a/FairyGUI-as3/src/fairygui/GObject.as b/FairyGUI-as3/src/fairygui/GObject.as index 345d528..1e580ae 100644 --- a/FairyGUI-as3/src/fairygui/GObject.as +++ b/FairyGUI-as3/src/fairygui/GObject.as @@ -479,6 +479,32 @@ package fairygui handlePositionChanged(); } + private function updatePivotOffset():void + { + if(_skewX!=0||_skewY!=0) + { + if(_displayObject!=null) + { + //GObject的特点是旋转和缩放不影响坐标,所以要有一个GObject坐标和DisplayObject坐标的转换。pivotOffset就是两个坐标的偏移值 + if(_pivotX!=0 || _pivotY!=0) + { + var pt:Point = transformCoords(_displayObject.transform.matrix, + _pivotX*_width, _pivotY*_height); + _pivotOffsetX = _pivotX*_width - (pt.x - _displayObject.x); + _pivotOffsetY = _pivotY*_height - (pt.y - _displayObject.y); + } + else + { + _pivotOffsetX = 0; + _pivotOffsetY = 0; + } + } + }else + { + updatePivotOffset1(); + } + } + private function updatePivotOffset1():void { if(_pivotX!=0 || _pivotY!=0) @@ -512,31 +538,7 @@ package fairygui } - private function updatePivotOffset():void - { - if(_skewX!=0||_skewY!=0) - { - if(_displayObject!=null) - { - //GObject的特点是旋转和缩放不影响坐标,所以要有一个GObject坐标和DisplayObject坐标的转换。pivotOffset就是两个坐标的偏移值 - if(_pivotX!=0 || _pivotY!=0) - { - var pt:Point = transformCoords(_displayObject.transform.matrix, - _pivotX*_width, _pivotY*_height); - _pivotOffsetX = _pivotX*_width - (pt.x - _displayObject.x); - _pivotOffsetY = _pivotY*_height - (pt.y - _displayObject.y); - } - else - { - _pivotOffsetX = 0; - _pivotOffsetY = 0; - } - } - }else - { - updatePivotOffset1(); - } - } + public static function transformCoords(matrix:Matrix, x:Number, y:Number,out:Point=null):Point { diff --git a/FairyGUI-as3/src/fairygui/GTextField.as b/FairyGUI-as3/src/fairygui/GTextField.as index bf15316..b117ba0 100644 --- a/FairyGUI-as3/src/fairygui/GTextField.as +++ b/FairyGUI-as3/src/fairygui/GTextField.as @@ -885,7 +885,7 @@ package fairygui override protected function handleGrayedChanged():void { if(_bitmapFont) - super.handleGrayedChanged(); + super.handleGrayedChanged(); updateTextFormat(); } @@ -1004,7 +1004,7 @@ package fairygui var str:String = xml.@text; if(str) this.text = str; - + _sizeDirty = false; } diff --git a/FairyGUI-as3/src/fairygui/ScrollPane.as b/FairyGUI-as3/src/fairygui/ScrollPane.as index 66807bc..359760e 100644 --- a/FairyGUI-as3/src/fairygui/ScrollPane.as +++ b/FairyGUI-as3/src/fairygui/ScrollPane.as @@ -1491,7 +1491,6 @@ package fairygui } else { - //更新速度 if (!_inertiaDisabled) { @@ -1502,7 +1501,10 @@ package fairygui var factor:Number = Math.pow(0.833, elapsed); _velocity.x = _velocity.x * factor; _velocity.y = _velocity.y * factor; - } } + } + //根据速度计算目标位置和需要时间 + updateTargetAndDuration(_tweenStart, sEndPos); + } else _tweenDuration.setTo(TWEEN_TIME_DEFAULT, TWEEN_TIME_DEFAULT); sOldChange.setTo(sEndPos.x - _tweenStart.x, sEndPos.y - _tweenStart.y); @@ -1746,12 +1748,14 @@ package fairygui //页面吸附策略 if (Math.abs(change) > _pageSize[axis])//如果滚动距离超过1页,则需要超过页面的一半,才能到更下一页 { - if (delta > testPageSize * 0.5) +// if (delta > testPageSize * 0.5) + if (delta > UIConfig.pageScrollMinDistance) page++; } else //否则只需要页面的1/3,当然,需要考虑到左移和右移的情况 { - if (delta > testPageSize * (change < 0 ? 0.3 : 0.7)) +// if (delta > testPageSize * (change < 0 ? 0.3 : 0.7)) + if (delta > (change < 0 ? UIConfig.pageScrollMinDistance : testPageSize-UIConfig.pageScrollMinDistance)) page++; } diff --git a/FairyGUI-as3/src/fairygui/UIPackage.as b/FairyGUI-as3/src/fairygui/UIPackage.as index 231594f..1e1a147 100644 --- a/FairyGUI-as3/src/fairygui/UIPackage.as +++ b/FairyGUI-as3/src/fairygui/UIPackage.as @@ -252,7 +252,7 @@ package fairygui pi.id = cxml.@id; pi.name = cxml.@name; pi.file = cxml.@file; - pi.path = cxml.@path; + pi.path = cxml.@path;//资源的路径 str = cxml.@size; arr = str.split(","); pi.width = int(arr[0]); diff --git a/FairyGUI-as3/src/ktv/managers/ManagerSkin.as b/FairyGUI-as3/src/ktv/managers/ManagerSkin.as index d30c67e..1340fd7 100644 --- a/FairyGUI-as3/src/ktv/managers/ManagerSkin.as +++ b/FairyGUI-as3/src/ktv/managers/ManagerSkin.as @@ -29,6 +29,7 @@ package ktv.managers public static function changeSkin(index:int):void { + trace("更换皮肤"+ManagerSkin.crtSkinIndex); crtSkinIndex=index; UIEventDispatcher.sendEvent(UIEvent.CHANGE_SKIN); } diff --git a/FairyGUI-as3/src/ktv/ui/KLoader.as b/FairyGUI-as3/src/ktv/ui/KLoader.as index 638fe60..328d82b 100644 --- a/FairyGUI-as3/src/ktv/ui/KLoader.as +++ b/FairyGUI-as3/src/ktv/ui/KLoader.as @@ -2,7 +2,6 @@ package ktv.ui { import flash.display.Bitmap; import flash.display.BitmapData; - import flash.display.DisplayObject; import flash.events.Event; import fairygui.GLoader; @@ -24,7 +23,6 @@ package ktv.ui private var _assetsURL:String; private var gif:GIFBoy; private var _moreSkin:Boolean; - public function KLoader() { @@ -87,15 +85,17 @@ package ktv.ui if(moreSkin) { var ary:Array=url.split("/"); - if(ary.indexOf("skin0") != -1)//默认皮肤 + if(ary.indexOf("skin0") != -1)//默认皮肤加载错误 { this.dispatchEvent(new Event(UIEvent.IMAGE_ERROR)); LogManager.log.error("默认皮肤skin0不存在"+url); - }else + } + else { url=ManagerSkin.getSkin(url,0);//使用默认的皮肤 } - }else + } + else { this.dispatchEvent(new Event(UIEvent.IMAGE_ERROR)); } From 4ce0182dc43feef22f128248f468fb5cb2ff231a Mon Sep 17 00:00:00 2001 From: wangsen <690275538@qq.com> Date: Tue, 4 Dec 2018 10:00:24 +0800 Subject: [PATCH 12/15] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E8=B0=B7=E4=B8=BB=E4=BB=A3=E7=A0=81=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FairyGUI-as3/src/fairygui/GComponent.as | 121 ++++++++- FairyGUI-as3/src/fairygui/GProgressBar.as | 235 +----------------- FairyGUI-as3/src/fairygui/GTextField.as | 33 +-- FairyGUI-as3/src/fairygui/UIPackage.as | 3 +- .../src/ktv/utils/transition/MCTransition.as | 13 +- 5 files changed, 154 insertions(+), 251 deletions(-) diff --git a/FairyGUI-as3/src/fairygui/GComponent.as b/FairyGUI-as3/src/fairygui/GComponent.as index 0252d3a..c4c6170 100644 --- a/FairyGUI-as3/src/fairygui/GComponent.as +++ b/FairyGUI-as3/src/fairygui/GComponent.as @@ -11,10 +11,14 @@ package fairygui import fairygui.display.UISprite; import fairygui.utils.GTimers; import fairygui.utils.PixelHitTest; - import fairygui.utils.PixelHitTestData; + import fairygui.utils.PixelHitTestData; + + import ktv.inter.IChangLang; + import ktv.message.local.UIEvent; + import ktv.message.local.UIEventDispatcher; [Event(name = "dropEvent", type = "fairygui.event.DropEvent")] - public class GComponent extends GObject + public class GComponent extends GObject implements IChangLang { private var _sortingChildCount:int; private var _opaque:Boolean; @@ -35,6 +39,90 @@ package fairygui internal var _container:Sprite; internal var _scrollPane:ScrollPane; internal var _alignOffset:Point; + private var _translateText:Boolean=false; + + public function get translateText():Boolean + { + return _translateText; + } + + /** + *是否 翻译文本 + * @param value + * + */ + public function set translateText(value:Boolean):void + { + _translateText=value; + if (_translateText) + { + UIEventDispatcher.getInstance().addEventListener(UIEvent.CHANGE_LANG, changeLang); + } + else + { + UIEventDispatcher.getInstance().removeEventListener(UIEvent.CHANGE_LANG, changeLang); + } + } + + /** + *循环调用子级 都 设置/取消 翻译 + * @param obj + * + */ + public function setTranslate(obj:GComponent):void + { + if (!obj._children) + return; + for (var i:int=0; i < obj._children.length; i++) + { + var chind:GComponent=obj._children[i] as GComponent; + if (chind) + { + chind.translateText=translateText; + if (chind._children.length) + { + setTranslate(chind); + } + } + } + } + + public function changeSkin(event:UIEvent):void + { + + } + + public function changeLang(event:UIEvent):void + { + setChildLang(this); + } + + private function setChildLang(obj:GComponent):void + { + if (!obj || !obj.packageItem || !obj.packageItem.displayList) + { + return; + } + var xml:XML=obj.packageItem.owner.getComponentData(packageItem); + var displayList:Vector.=obj.packageItem.displayList; + var childCount:int=displayList.length; + var i:int; + var di:DisplayListItem; + var child:GObject; + for (i=0; i < childCount; i++) + { + if(i>>>>>> d04c24c50647c6724b948bde1dd96dd6a6829b86 + final public function get titleType():int { return _titleType; } - + final public function set titleType(value:int):void { if (_titleType != value) @@ -84,100 +46,13 @@ package fairygui update(_value); } } - + final public function get max():Number { return _max; } - - final public function set max(value:Number):void -<<<<<<< HEAD - { - if(_max != value) - { - _max = value; - update(_value); - } - } - - final public function get value():Number - { - return _value; - } - - final public function set value(value:Number):void - { - if(_tweener) - { - _tweener.kill(); - _tweener = null; - } - - if(_value != value) - { - _value = value; - update(_value); - } - } - public function tweenValue(value:Number, duration:Number):TweenLite - { - if(_value != value) - { - if(_tweener) - _tweener.kill(); - - _tweenValue = _value; - _value = value; - _tweener = TweenLite.to(this, duration, - {_tweenValue:value, onUpdate:onTweenUpdate, onComplete:onTweenComplete, ease: Linear.ease}); - return _tweener; - } - else - return null; - } - - private function onTweenUpdate():void - { - update(_tweenValue); - } - - private function onTweenComplete():void - { - _tweener = null; - } - - public function update(newValue:int):void - { - var percent:Number = _max!=0?Math.min(newValue/_max,1):0; - if(_titleObject) - { - switch(_titleType) - { - case ProgressTitleType.Percent: - _titleObject.text = Math.round(percent*100)+"%"; - break; - - case ProgressTitleType.ValueAndMax: - _titleObject.text = Math.round(newValue) + "/" + Math.round(_max); - break; - - case ProgressTitleType.Value: - _titleObject.text = ""+Math.round(newValue); - break; - - case ProgressTitleType.Max: - _titleObject.text = ""+Math.round(_max); - break; - } - } - - var fullWidth:int = this.width-this._barMaxWidthDelta; - var fullHeight:int = this.height-this._barMaxHeightDelta; - if(!_reverse) - { - if(_barObjectH) -======= + final public function set max(value:Number):void { if(_max != value) { @@ -185,7 +60,7 @@ package fairygui update(_value); } } - + final public function get value():Number { return _value; @@ -265,101 +140,12 @@ package fairygui { if(_barObjectH) { ->>>>>>> d04c24c50647c6724b948bde1dd96dd6a6829b86 _barObjectH.width = Math.round(fullWidth*percent); + _barObjectH.x = _barStartX + (fullWidth-_barObjectH.width); + } if(_barObjectV) + { _barObjectV.height = Math.round(fullHeight*percent); -<<<<<<< HEAD - } - else - { - if(_barObjectH) - { - _barObjectH.width = Math.round(fullWidth*percent); - _barObjectH.x = _barStartX + (fullWidth-_barObjectH.width); - - } - if(_barObjectV) - { - _barObjectV.height = Math.round(fullHeight*percent); - _barObjectV.y = _barStartY + (fullHeight-_barObjectV.height); - } - } - if(_aniObject is GMovieClip) - GMovieClip(_aniObject).frame = Math.round(percent*100); - else if(_aniObject is GSwfObject) - GSwfObject(_aniObject).frame = Math.round(percent*100); - } - - override protected function constructFromXML(xml:XML):void - { - super.constructFromXML(xml); - - xml = xml.ProgressBar[0]; - - var str:String; - str = xml.@titleType; - if(str) - _titleType = ProgressTitleType.parse(str); - - _reverse = xml.@reverse=="true"; - - _titleObject = getChild("title") as GTextField; - _barObjectH = getChild("bar"); - _barObjectV = getChild("bar_v"); - _aniObject = getChild("ani"); - - if(_barObjectH) - { - _barMaxWidth = _barObjectH.width; - _barMaxWidthDelta = this.width - _barMaxWidth; - _barStartX = _barObjectH.x; - } - if(_barObjectV) - { - _barMaxHeight = _barObjectV.height; - _barMaxHeightDelta = this.height - _barMaxHeight; - _barStartY = _barObjectV.y; - } - } - - override protected function handleSizeChanged():void - { - super.handleSizeChanged(); - - if(_barObjectH) - _barMaxWidth = this.width - _barMaxWidthDelta; - if(_barObjectV) - _barMaxHeight = this.height - _barMaxHeightDelta; - if(!this._underConstruct) - update(_value); - } - - override public function setup_afterAdd(xml:XML):void - { - super.setup_afterAdd(xml); - - xml = xml.ProgressBar[0]; - if(xml) - { - _value = parseInt(xml.@value); - if(isNaN(_value)) - _value = 0; - _max = parseInt(xml.@max); - if(isNaN(_max)) - _max = 0; - } - update(_value); - } - - override public function dispose():void - { - if(_tweener) - _tweener.kill(); - super.dispose(); - } - } -======= _barObjectV.y = _barStartY + (fullHeight-_barObjectV.height); } } @@ -379,7 +165,7 @@ package fairygui str = xml.@titleType; if(str) _titleType = ProgressTitleType.parse(str); - + _reverse = xml.@reverse=="true"; _titleObject = getChild("title") as GTextField; @@ -437,5 +223,4 @@ package fairygui super.dispose(); } } ->>>>>>> d04c24c50647c6724b948bde1dd96dd6a6829b86 } \ No newline at end of file diff --git a/FairyGUI-as3/src/fairygui/GTextField.as b/FairyGUI-as3/src/fairygui/GTextField.as index 7205753..c95993a 100644 --- a/FairyGUI-as3/src/fairygui/GTextField.as +++ b/FairyGUI-as3/src/fairygui/GTextField.as @@ -42,11 +42,11 @@ package fairygui protected var _shadowOffset:Point; protected var _textFilters:Array; protected var _templateVars:Object; - + protected var _textField:TextField; protected var _bitmap:UIImage; protected var _bitmapData:BitmapData; - + protected var _updatingSize:Boolean; protected var _requireRender:Boolean; protected var _sizeDirty:Boolean; @@ -132,7 +132,7 @@ package fairygui _requireRender = false; _bitmapFont = null; } - + override public function set text(value:String):void { _text = value; @@ -252,7 +252,7 @@ package fairygui updateTextFormat(); } } - + final public function get underline():Boolean { return _underline; @@ -509,7 +509,7 @@ package fairygui else _textField.text = value; } - + protected function renderNow():void { _requireRender = false; @@ -530,7 +530,7 @@ package fairygui h = Math.max(_height, int(_textFormat.size)); if(h!=_textField.height) _textField.height = h; - + if(truncationText) { getTxt(_text); @@ -541,7 +541,7 @@ package fairygui else _textField.text = _text; } - _textField.defaultTextFormat = _textFormat; + _textField.defaultTextFormat = _textFormat; _maxFontSize = int(_textFormat.size); var text2:String = _text; @@ -561,10 +561,10 @@ package fairygui } _textHeight += 4; } - + if(_widthAutoSize) w = _textWidth; - + if(_heightAutoSize) h = _textHeight; else @@ -575,7 +575,7 @@ package fairygui _textHeight = h; _textField.height = _textHeight + _fontAdjustment + 3; - + _updatingSize = true; this.setSize(w,h); _updatingSize = false; @@ -623,7 +623,8 @@ package fairygui } } -private function renderWithBitmapFont(updateBounds:Boolean):voidprivate function renderWithBitmapFont():void { + private function renderWithBitmapFont():void + { switchBitmapMode(true); if(!_lines) @@ -700,7 +701,7 @@ private function renderWithBitmapFont(updateBounds:Boolean):voidprivate function wordEnd = lineWidth; wordChars = 0; } - + if(cc==32) //space { glyphWidth = Math.ceil(_fontSize/2); @@ -1007,7 +1008,7 @@ private function renderWithBitmapFont(updateBounds:Boolean):voidprivate function override public function setup_beforeAdd(xml:XML):void { super.setup_beforeAdd(xml); - + var str:String; var arr:Array; @@ -1018,7 +1019,7 @@ private function renderWithBitmapFont(updateBounds:Boolean):voidprivate function str = xml.@fontSize; if(str) _fontSize = parseInt(str); - + str = xml.@color; if(str) _color = ToolSet.convertFromHtmlColor(str); @@ -1051,7 +1052,7 @@ private function renderWithBitmapFont(updateBounds:Boolean):voidprivate function _heightAutoSize = _autoSize==AutoSizeType.Both||_autoSize==AutoSizeType.Height; updateAutoSize(); } - + _underline = xml.@underline == "true"; _italic = xml.@italic == "true"; _bold = xml.@bold == "true"; @@ -1096,7 +1097,7 @@ private function renderWithBitmapFont(updateBounds:Boolean):voidprivate function var str:String = xml.@text; if(str) this.text = str; - + _sizeDirty = false; } diff --git a/FairyGUI-as3/src/fairygui/UIPackage.as b/FairyGUI-as3/src/fairygui/UIPackage.as index f6ded93..dc4cc2a 100644 --- a/FairyGUI-as3/src/fairygui/UIPackage.as +++ b/FairyGUI-as3/src/fairygui/UIPackage.as @@ -890,6 +890,7 @@ package fairygui item.loading++; }else//加载 外部文件 { + frame.rect.setEmpty(); var url:String; url=ManagerSkin.assetsHead+item.owner.name+item.path+str; MassLoaderManager.getInstance().loadBMD(url,1,new Handler(loadedHandler,[item,frame]),null,new Handler(errorHandler,[item])); @@ -927,8 +928,6 @@ package fairygui } } } - else - frame.rect.setEmpty(); } } diff --git a/FairyGUI-as3/src/ktv/utils/transition/MCTransition.as b/FairyGUI-as3/src/ktv/utils/transition/MCTransition.as index dd2b48b..07657e9 100644 --- a/FairyGUI-as3/src/ktv/utils/transition/MCTransition.as +++ b/FairyGUI-as3/src/ktv/utils/transition/MCTransition.as @@ -1,10 +1,11 @@ package ktv.utils.transition { - import com.greensock.TweenLite; +// import com.greensock.TweenLite; import flash.display.DisplayObject; import flash.display.MovieClip; + import fl.transitions.Blinds; import fl.transitions.Fade; import fl.transitions.Iris; @@ -36,19 +37,19 @@ package ktv.utils.transition switch (modes) { case 1: - TweenLite.from(mc,0.6,{alpha:0}); +// TweenLite.from(mc,0.6,{alpha:0}); break; case 2: - TweenLite.from(mc,0.6,{scaleX:0}); +// TweenLite.from(mc,0.6,{scaleX:0}); break; case 3: - TweenLite.from(mc,0.6,{x:mc.width,scaleX:0}); +// TweenLite.from(mc,0.6,{x:mc.width,scaleX:0}); break; case 4: - TweenLite.from(mc,0.6,{scaleY:0}); +// TweenLite.from(mc,0.6,{scaleY:0}); break; case 5: - TweenLite.from(mc,0.6,{y:mc.height,scaleY:0}); +// TweenLite.from(mc,0.6,{y:mc.height,scaleY:0}); break; } } From 38fecba6d289982ffc33045b1a32104d43b02569 Mon Sep 17 00:00:00 2001 From: wangsen <690275538@qq.com> Date: Tue, 4 Dec 2018 10:09:49 +0800 Subject: [PATCH 13/15] Squashed commit of the following: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit 4ce0182dc43feef22f128248f468fb5cb2ff231a Author: wangsen <690275538@qq.com> Date: Tue Dec 4 10:00:24 2018 +0800 修改合并谷主代码的bug --- FairyGUI-as3/.actionScriptProperties | 1 + FairyGUI-as3/src/fairygui/GComponent.as | 121 ++++++++- FairyGUI-as3/src/fairygui/GProgressBar.as | 235 +----------------- FairyGUI-as3/src/fairygui/GTextField.as | 33 +-- FairyGUI-as3/src/fairygui/UIPackage.as | 3 +- .../src/ktv/utils/transition/MCTransition.as | 13 +- 6 files changed, 155 insertions(+), 251 deletions(-) diff --git a/FairyGUI-as3/.actionScriptProperties b/FairyGUI-as3/.actionScriptProperties index 029ab93..0578ae5 100644 --- a/FairyGUI-as3/.actionScriptProperties +++ b/FairyGUI-as3/.actionScriptProperties @@ -37,3 +37,4 @@ + diff --git a/FairyGUI-as3/src/fairygui/GComponent.as b/FairyGUI-as3/src/fairygui/GComponent.as index 0252d3a..c4c6170 100644 --- a/FairyGUI-as3/src/fairygui/GComponent.as +++ b/FairyGUI-as3/src/fairygui/GComponent.as @@ -11,10 +11,14 @@ package fairygui import fairygui.display.UISprite; import fairygui.utils.GTimers; import fairygui.utils.PixelHitTest; - import fairygui.utils.PixelHitTestData; + import fairygui.utils.PixelHitTestData; + + import ktv.inter.IChangLang; + import ktv.message.local.UIEvent; + import ktv.message.local.UIEventDispatcher; [Event(name = "dropEvent", type = "fairygui.event.DropEvent")] - public class GComponent extends GObject + public class GComponent extends GObject implements IChangLang { private var _sortingChildCount:int; private var _opaque:Boolean; @@ -35,6 +39,90 @@ package fairygui internal var _container:Sprite; internal var _scrollPane:ScrollPane; internal var _alignOffset:Point; + private var _translateText:Boolean=false; + + public function get translateText():Boolean + { + return _translateText; + } + + /** + *是否 翻译文本 + * @param value + * + */ + public function set translateText(value:Boolean):void + { + _translateText=value; + if (_translateText) + { + UIEventDispatcher.getInstance().addEventListener(UIEvent.CHANGE_LANG, changeLang); + } + else + { + UIEventDispatcher.getInstance().removeEventListener(UIEvent.CHANGE_LANG, changeLang); + } + } + + /** + *循环调用子级 都 设置/取消 翻译 + * @param obj + * + */ + public function setTranslate(obj:GComponent):void + { + if (!obj._children) + return; + for (var i:int=0; i < obj._children.length; i++) + { + var chind:GComponent=obj._children[i] as GComponent; + if (chind) + { + chind.translateText=translateText; + if (chind._children.length) + { + setTranslate(chind); + } + } + } + } + + public function changeSkin(event:UIEvent):void + { + + } + + public function changeLang(event:UIEvent):void + { + setChildLang(this); + } + + private function setChildLang(obj:GComponent):void + { + if (!obj || !obj.packageItem || !obj.packageItem.displayList) + { + return; + } + var xml:XML=obj.packageItem.owner.getComponentData(packageItem); + var displayList:Vector.=obj.packageItem.displayList; + var childCount:int=displayList.length; + var i:int; + var di:DisplayListItem; + var child:GObject; + for (i=0; i < childCount; i++) + { + if(i>>>>>> d04c24c50647c6724b948bde1dd96dd6a6829b86 + final public function get titleType():int { return _titleType; } - + final public function set titleType(value:int):void { if (_titleType != value) @@ -84,100 +46,13 @@ package fairygui update(_value); } } - + final public function get max():Number { return _max; } - - final public function set max(value:Number):void -<<<<<<< HEAD - { - if(_max != value) - { - _max = value; - update(_value); - } - } - - final public function get value():Number - { - return _value; - } - - final public function set value(value:Number):void - { - if(_tweener) - { - _tweener.kill(); - _tweener = null; - } - - if(_value != value) - { - _value = value; - update(_value); - } - } - public function tweenValue(value:Number, duration:Number):TweenLite - { - if(_value != value) - { - if(_tweener) - _tweener.kill(); - - _tweenValue = _value; - _value = value; - _tweener = TweenLite.to(this, duration, - {_tweenValue:value, onUpdate:onTweenUpdate, onComplete:onTweenComplete, ease: Linear.ease}); - return _tweener; - } - else - return null; - } - - private function onTweenUpdate():void - { - update(_tweenValue); - } - - private function onTweenComplete():void - { - _tweener = null; - } - - public function update(newValue:int):void - { - var percent:Number = _max!=0?Math.min(newValue/_max,1):0; - if(_titleObject) - { - switch(_titleType) - { - case ProgressTitleType.Percent: - _titleObject.text = Math.round(percent*100)+"%"; - break; - - case ProgressTitleType.ValueAndMax: - _titleObject.text = Math.round(newValue) + "/" + Math.round(_max); - break; - - case ProgressTitleType.Value: - _titleObject.text = ""+Math.round(newValue); - break; - - case ProgressTitleType.Max: - _titleObject.text = ""+Math.round(_max); - break; - } - } - - var fullWidth:int = this.width-this._barMaxWidthDelta; - var fullHeight:int = this.height-this._barMaxHeightDelta; - if(!_reverse) - { - if(_barObjectH) -======= + final public function set max(value:Number):void { if(_max != value) { @@ -185,7 +60,7 @@ package fairygui update(_value); } } - + final public function get value():Number { return _value; @@ -265,101 +140,12 @@ package fairygui { if(_barObjectH) { ->>>>>>> d04c24c50647c6724b948bde1dd96dd6a6829b86 _barObjectH.width = Math.round(fullWidth*percent); + _barObjectH.x = _barStartX + (fullWidth-_barObjectH.width); + } if(_barObjectV) + { _barObjectV.height = Math.round(fullHeight*percent); -<<<<<<< HEAD - } - else - { - if(_barObjectH) - { - _barObjectH.width = Math.round(fullWidth*percent); - _barObjectH.x = _barStartX + (fullWidth-_barObjectH.width); - - } - if(_barObjectV) - { - _barObjectV.height = Math.round(fullHeight*percent); - _barObjectV.y = _barStartY + (fullHeight-_barObjectV.height); - } - } - if(_aniObject is GMovieClip) - GMovieClip(_aniObject).frame = Math.round(percent*100); - else if(_aniObject is GSwfObject) - GSwfObject(_aniObject).frame = Math.round(percent*100); - } - - override protected function constructFromXML(xml:XML):void - { - super.constructFromXML(xml); - - xml = xml.ProgressBar[0]; - - var str:String; - str = xml.@titleType; - if(str) - _titleType = ProgressTitleType.parse(str); - - _reverse = xml.@reverse=="true"; - - _titleObject = getChild("title") as GTextField; - _barObjectH = getChild("bar"); - _barObjectV = getChild("bar_v"); - _aniObject = getChild("ani"); - - if(_barObjectH) - { - _barMaxWidth = _barObjectH.width; - _barMaxWidthDelta = this.width - _barMaxWidth; - _barStartX = _barObjectH.x; - } - if(_barObjectV) - { - _barMaxHeight = _barObjectV.height; - _barMaxHeightDelta = this.height - _barMaxHeight; - _barStartY = _barObjectV.y; - } - } - - override protected function handleSizeChanged():void - { - super.handleSizeChanged(); - - if(_barObjectH) - _barMaxWidth = this.width - _barMaxWidthDelta; - if(_barObjectV) - _barMaxHeight = this.height - _barMaxHeightDelta; - if(!this._underConstruct) - update(_value); - } - - override public function setup_afterAdd(xml:XML):void - { - super.setup_afterAdd(xml); - - xml = xml.ProgressBar[0]; - if(xml) - { - _value = parseInt(xml.@value); - if(isNaN(_value)) - _value = 0; - _max = parseInt(xml.@max); - if(isNaN(_max)) - _max = 0; - } - update(_value); - } - - override public function dispose():void - { - if(_tweener) - _tweener.kill(); - super.dispose(); - } - } -======= _barObjectV.y = _barStartY + (fullHeight-_barObjectV.height); } } @@ -379,7 +165,7 @@ package fairygui str = xml.@titleType; if(str) _titleType = ProgressTitleType.parse(str); - + _reverse = xml.@reverse=="true"; _titleObject = getChild("title") as GTextField; @@ -437,5 +223,4 @@ package fairygui super.dispose(); } } ->>>>>>> d04c24c50647c6724b948bde1dd96dd6a6829b86 } \ No newline at end of file diff --git a/FairyGUI-as3/src/fairygui/GTextField.as b/FairyGUI-as3/src/fairygui/GTextField.as index 7205753..c95993a 100644 --- a/FairyGUI-as3/src/fairygui/GTextField.as +++ b/FairyGUI-as3/src/fairygui/GTextField.as @@ -42,11 +42,11 @@ package fairygui protected var _shadowOffset:Point; protected var _textFilters:Array; protected var _templateVars:Object; - + protected var _textField:TextField; protected var _bitmap:UIImage; protected var _bitmapData:BitmapData; - + protected var _updatingSize:Boolean; protected var _requireRender:Boolean; protected var _sizeDirty:Boolean; @@ -132,7 +132,7 @@ package fairygui _requireRender = false; _bitmapFont = null; } - + override public function set text(value:String):void { _text = value; @@ -252,7 +252,7 @@ package fairygui updateTextFormat(); } } - + final public function get underline():Boolean { return _underline; @@ -509,7 +509,7 @@ package fairygui else _textField.text = value; } - + protected function renderNow():void { _requireRender = false; @@ -530,7 +530,7 @@ package fairygui h = Math.max(_height, int(_textFormat.size)); if(h!=_textField.height) _textField.height = h; - + if(truncationText) { getTxt(_text); @@ -541,7 +541,7 @@ package fairygui else _textField.text = _text; } - _textField.defaultTextFormat = _textFormat; + _textField.defaultTextFormat = _textFormat; _maxFontSize = int(_textFormat.size); var text2:String = _text; @@ -561,10 +561,10 @@ package fairygui } _textHeight += 4; } - + if(_widthAutoSize) w = _textWidth; - + if(_heightAutoSize) h = _textHeight; else @@ -575,7 +575,7 @@ package fairygui _textHeight = h; _textField.height = _textHeight + _fontAdjustment + 3; - + _updatingSize = true; this.setSize(w,h); _updatingSize = false; @@ -623,7 +623,8 @@ package fairygui } } -private function renderWithBitmapFont(updateBounds:Boolean):voidprivate function renderWithBitmapFont():void { + private function renderWithBitmapFont():void + { switchBitmapMode(true); if(!_lines) @@ -700,7 +701,7 @@ private function renderWithBitmapFont(updateBounds:Boolean):voidprivate function wordEnd = lineWidth; wordChars = 0; } - + if(cc==32) //space { glyphWidth = Math.ceil(_fontSize/2); @@ -1007,7 +1008,7 @@ private function renderWithBitmapFont(updateBounds:Boolean):voidprivate function override public function setup_beforeAdd(xml:XML):void { super.setup_beforeAdd(xml); - + var str:String; var arr:Array; @@ -1018,7 +1019,7 @@ private function renderWithBitmapFont(updateBounds:Boolean):voidprivate function str = xml.@fontSize; if(str) _fontSize = parseInt(str); - + str = xml.@color; if(str) _color = ToolSet.convertFromHtmlColor(str); @@ -1051,7 +1052,7 @@ private function renderWithBitmapFont(updateBounds:Boolean):voidprivate function _heightAutoSize = _autoSize==AutoSizeType.Both||_autoSize==AutoSizeType.Height; updateAutoSize(); } - + _underline = xml.@underline == "true"; _italic = xml.@italic == "true"; _bold = xml.@bold == "true"; @@ -1096,7 +1097,7 @@ private function renderWithBitmapFont(updateBounds:Boolean):voidprivate function var str:String = xml.@text; if(str) this.text = str; - + _sizeDirty = false; } diff --git a/FairyGUI-as3/src/fairygui/UIPackage.as b/FairyGUI-as3/src/fairygui/UIPackage.as index f6ded93..dc4cc2a 100644 --- a/FairyGUI-as3/src/fairygui/UIPackage.as +++ b/FairyGUI-as3/src/fairygui/UIPackage.as @@ -890,6 +890,7 @@ package fairygui item.loading++; }else//加载 外部文件 { + frame.rect.setEmpty(); var url:String; url=ManagerSkin.assetsHead+item.owner.name+item.path+str; MassLoaderManager.getInstance().loadBMD(url,1,new Handler(loadedHandler,[item,frame]),null,new Handler(errorHandler,[item])); @@ -927,8 +928,6 @@ package fairygui } } } - else - frame.rect.setEmpty(); } } diff --git a/FairyGUI-as3/src/ktv/utils/transition/MCTransition.as b/FairyGUI-as3/src/ktv/utils/transition/MCTransition.as index dd2b48b..07657e9 100644 --- a/FairyGUI-as3/src/ktv/utils/transition/MCTransition.as +++ b/FairyGUI-as3/src/ktv/utils/transition/MCTransition.as @@ -1,10 +1,11 @@ package ktv.utils.transition { - import com.greensock.TweenLite; +// import com.greensock.TweenLite; import flash.display.DisplayObject; import flash.display.MovieClip; + import fl.transitions.Blinds; import fl.transitions.Fade; import fl.transitions.Iris; @@ -36,19 +37,19 @@ package ktv.utils.transition switch (modes) { case 1: - TweenLite.from(mc,0.6,{alpha:0}); +// TweenLite.from(mc,0.6,{alpha:0}); break; case 2: - TweenLite.from(mc,0.6,{scaleX:0}); +// TweenLite.from(mc,0.6,{scaleX:0}); break; case 3: - TweenLite.from(mc,0.6,{x:mc.width,scaleX:0}); +// TweenLite.from(mc,0.6,{x:mc.width,scaleX:0}); break; case 4: - TweenLite.from(mc,0.6,{scaleY:0}); +// TweenLite.from(mc,0.6,{scaleY:0}); break; case 5: - TweenLite.from(mc,0.6,{y:mc.height,scaleY:0}); +// TweenLite.from(mc,0.6,{y:mc.height,scaleY:0}); break; } } From dd097380c8e659baf29fbe37232be324bbd1fee3 Mon Sep 17 00:00:00 2001 From: wangsen <690275538@qq.com> Date: Mon, 29 Jul 2019 10:38:03 +0800 Subject: [PATCH 14/15] 2019.7.29 --- FairyGUI-as3/.actionScriptProperties | 3 +++ 1 file changed, 3 insertions(+) diff --git a/FairyGUI-as3/.actionScriptProperties b/FairyGUI-as3/.actionScriptProperties index 0578ae5..00ab3cf 100644 --- a/FairyGUI-as3/.actionScriptProperties +++ b/FairyGUI-as3/.actionScriptProperties @@ -38,3 +38,6 @@ + + + From 8fee4f8d0c1bb985f75d3b454a5586a1426a0459 Mon Sep 17 00:00:00 2001 From: wangsen <690275538@qq.com> Date: Mon, 29 Jul 2019 11:31:09 +0800 Subject: [PATCH 15/15] Squashed commit of the following: commit 77ae43836bce757643b864c0f1b299e62eee02dc Author: guzhu@fairygui.com Date: Fri Feb 22 23:45:47 2019 +0800 move gear classes --- .gitignore | 1 + FairyGUI-as3/.actionScriptProperties | 8 +- FairyGUI-as3/src/com/greensock/BlitMask.as | 892 +++++++ .../src/com/greensock/FlexBlitMask.as | 925 ++++++++ .../src/com/greensock/TimelineLite.as | 1982 ++++++++++++++++ FairyGUI-as3/src/com/greensock/TimelineMax.as | 1524 ++++++++++++ FairyGUI-as3/src/com/greensock/TweenAlign.as | 22 + FairyGUI-as3/src/com/greensock/TweenLite.as | 1353 +++++++++++ FairyGUI-as3/src/com/greensock/TweenMax.as | 2045 +++++++++++++++++ FairyGUI-as3/src/com/greensock/TweenNano.as | 662 ++++++ .../src/com/greensock/core/Animation.as | 1095 +++++++++ .../src/com/greensock/core/PropTween.as | 67 + .../src/com/greensock/core/SimpleTimeline.as | 193 ++ .../src/com/greensock/data/TweenLiteVars.as | 1204 ++++++++++ .../src/com/greensock/data/TweenMaxVars.as | 1285 +++++++++++ .../src/com/greensock/easing/.DS_Store | Bin 0 -> 6148 bytes FairyGUI-as3/src/com/greensock/easing/Back.as | 32 + .../src/com/greensock/easing/BackIn.as | 47 + .../src/com/greensock/easing/BackInOut.as | 48 + .../src/com/greensock/easing/BackOut.as | 47 + .../src/com/greensock/easing/Bounce.as | 29 + .../src/com/greensock/easing/BounceIn.as | 36 + .../src/com/greensock/easing/BounceInOut.as | 44 + .../src/com/greensock/easing/BounceOut.as | 36 + FairyGUI-as3/src/com/greensock/easing/Circ.as | 29 + .../src/com/greensock/easing/CircIn.as | 27 + .../src/com/greensock/easing/CircInOut.as | 28 + .../src/com/greensock/easing/CircOut.as | 28 + .../src/com/greensock/easing/Cubic.as | 38 + FairyGUI-as3/src/com/greensock/easing/Ease.as | 113 + .../src/com/greensock/easing/EaseLookup.as | 73 + .../src/com/greensock/easing/Elastic.as | 32 + .../src/com/greensock/easing/ElasticIn.as | 54 + .../src/com/greensock/easing/ElasticInOut.as | 54 + .../src/com/greensock/easing/ElasticOut.as | 54 + FairyGUI-as3/src/com/greensock/easing/Expo.as | 41 + .../src/com/greensock/easing/ExpoIn.as | 30 + .../src/com/greensock/easing/ExpoInOut.as | 30 + .../src/com/greensock/easing/ExpoOut.as | 30 + .../src/com/greensock/easing/Linear.as | 47 + .../src/com/greensock/easing/Power0.as | 40 + .../src/com/greensock/easing/Power1.as | 37 + .../src/com/greensock/easing/Power2.as | 37 + .../src/com/greensock/easing/Power3.as | 37 + .../src/com/greensock/easing/Power4.as | 38 + FairyGUI-as3/src/com/greensock/easing/Quad.as | 38 + .../src/com/greensock/easing/Quart.as | 38 + .../src/com/greensock/easing/Quint.as | 38 + .../src/com/greensock/easing/RoughEase.as | 289 +++ FairyGUI-as3/src/com/greensock/easing/Sine.as | 29 + .../src/com/greensock/easing/SineIn.as | 31 + .../src/com/greensock/easing/SineInOut.as | 28 + .../src/com/greensock/easing/SineOut.as | 31 + .../src/com/greensock/easing/SlowMo.as | 113 + .../src/com/greensock/easing/SteppedEase.as | 89 + .../src/com/greensock/easing/Strong.as | 39 + .../com/greensock/easing/core/EasePoint.as | 35 + .../src/com/greensock/events/LoaderEvent.as | 123 + .../src/com/greensock/events/TweenEvent.as | 29 + .../src/com/greensock/layout/.DS_Store | Bin 0 -> 6148 bytes .../src/com/greensock/layout/AlignMode.as | 31 + .../src/com/greensock/layout/AutoFitArea.as | 789 +++++++ .../src/com/greensock/layout/ScaleMode.as | 31 + .../src/com/greensock/loading/.DS_Store | Bin 0 -> 6148 bytes .../com/greensock/loading/BinaryDataLoader.as | 137 ++ .../src/com/greensock/loading/CSSLoader.as | 139 ++ .../src/com/greensock/loading/DataLoader.as | 181 ++ .../src/com/greensock/loading/ImageLoader.as | 310 +++ .../src/com/greensock/loading/LoaderMax.as | 1084 +++++++++ .../src/com/greensock/loading/LoaderStatus.as | 32 + .../src/com/greensock/loading/MP3Loader.as | 472 ++++ .../src/com/greensock/loading/SWFLoader.as | 811 +++++++ .../src/com/greensock/loading/SelfLoader.as | 109 + .../src/com/greensock/loading/VideoLoader.as | 1366 +++++++++++ .../src/com/greensock/loading/XMLLoader.as | 645 ++++++ .../src/com/greensock/loading/core/.DS_Store | Bin 0 -> 6148 bytes .../loading/core/DisplayObjectLoader.as | 318 +++ .../com/greensock/loading/core/LoaderCore.as | 570 +++++ .../com/greensock/loading/core/LoaderItem.as | 243 ++ .../greensock/loading/data/CSSLoaderVars.as | 184 ++ .../greensock/loading/data/DataLoaderVars.as | 192 ++ .../greensock/loading/data/ImageLoaderVars.as | 341 +++ .../greensock/loading/data/LoaderMaxVars.as | 225 ++ .../greensock/loading/data/MP3LoaderVars.as | 214 ++ .../greensock/loading/data/SWFLoaderVars.as | 381 +++ .../greensock/loading/data/VideoLoaderVars.as | 391 ++++ .../greensock/loading/data/XMLLoaderVars.as | 247 ++ .../com/greensock/loading/display/.DS_Store | Bin 0 -> 6148 bytes .../loading/display/ContentDisplay.as | 451 ++++ .../loading/display/FlexContentDisplay.as | 478 ++++ .../src/com/greensock/motionPaths/.DS_Store | Bin 0 -> 6148 bytes .../com/greensock/motionPaths/CirclePath2D.as | 244 ++ .../com/greensock/motionPaths/Direction.as | 21 + .../com/greensock/motionPaths/LinePath2D.as | 554 +++++ .../com/greensock/motionPaths/MotionPath.as | 522 +++++ .../com/greensock/motionPaths/PathFollower.as | 157 ++ .../greensock/motionPaths/RectanglePath2D.as | 218 ++ .../src/com/greensock/plugins/.DS_Store | Bin 0 -> 6148 bytes .../com/greensock/plugins/AutoAlphaPlugin.as | 66 + .../greensock/plugins/BevelFilterPlugin.as | 62 + .../src/com/greensock/plugins/BezierPlugin.as | 870 +++++++ .../greensock/plugins/BezierThroughPlugin.as | 37 + .../com/greensock/plugins/BlurFilterPlugin.as | 56 + .../greensock/plugins/CacheAsBitmapPlugin.as | 73 + .../greensock/plugins/CirclePath2DPlugin.as | 132 ++ .../plugins/ColorMatrixFilterPlugin.as | 234 ++ .../greensock/plugins/ColorTransformPlugin.as | 104 + .../plugins/DirectionalRotationPlugin.as | 123 + .../plugins/DropShadowFilterPlugin.as | 63 + .../com/greensock/plugins/EndArrayPlugin.as | 98 + .../com/greensock/plugins/EndVectorPlugin.as | 111 + .../src/com/greensock/plugins/FilterPlugin.as | 112 + .../greensock/plugins/FrameBackwardPlugin.as | 42 + .../greensock/plugins/FrameForwardPlugin.as | 82 + .../com/greensock/plugins/FrameLabelPlugin.as | 63 + .../src/com/greensock/plugins/FramePlugin.as | 64 + .../com/greensock/plugins/GlowFilterPlugin.as | 61 + .../com/greensock/plugins/HexColorsPlugin.as | 134 ++ .../greensock/plugins/OnChangeRatioPlugin.as | 74 + .../plugins/OnCompleteRenderPlugin.as | 75 + .../greensock/plugins/Positions2DPlugin.as | 67 + .../greensock/plugins/QuaternionsPlugin.as | 151 ++ .../com/greensock/plugins/RemoveTintPlugin.as | 37 + .../com/greensock/plugins/RoundPropsPlugin.as | 95 + .../src/com/greensock/plugins/ScalePlugin.as | 46 + .../com/greensock/plugins/ScrollRectPlugin.as | 80 + .../greensock/plugins/SetActualSizePlugin.as | 90 + .../com/greensock/plugins/SetSizePlugin.as | 90 + .../greensock/plugins/ShortRotationPlugin.as | 78 + .../greensock/plugins/SoundTransformPlugin.as | 61 + .../greensock/plugins/StageQualityPlugin.as | 71 + .../src/com/greensock/plugins/TintPlugin.as | 89 + .../plugins/TransformMatrixPlugin.as | 240 ++ .../src/com/greensock/plugins/TweenPlugin.as | 336 +++ .../com/greensock/plugins/VisiblePlugin.as | 67 + .../src/com/greensock/plugins/VolumePlugin.as | 60 + FairyGUI-as3/src/fairygui/Controller.as | 3 +- FairyGUI-as3/src/fairygui/GComponent.as | 113 +- FairyGUI-as3/src/fairygui/GObject.as | 15 + FairyGUI-as3/src/fairygui/GSlider.as | 29 +- FairyGUI-as3/src/fairygui/GTextField.as | 27 +- FairyGUI-as3/src/fairygui/GearAnimation.as | 77 - FairyGUI-as3/src/fairygui/GearBase.as | 191 -- FairyGUI-as3/src/fairygui/GearColor.as | 146 -- FairyGUI-as3/src/fairygui/GearDisplay.as | 51 - FairyGUI-as3/src/fairygui/GearIcon.as | 46 - FairyGUI-as3/src/fairygui/GearLook.as | 150 -- FairyGUI-as3/src/fairygui/GearSize.as | 160 -- FairyGUI-as3/src/fairygui/GearText.as | 53 - FairyGUI-as3/src/fairygui/GearXY.as | 128 -- FairyGUI-as3/src/fairygui/IAnimationGear.as | 16 - FairyGUI-as3/src/fairygui/IColorGear.as | 8 - FairyGUI-as3/src/fairygui/ITextColorGear.as | 8 - FairyGUI-as3/src/fairygui/UIConfig.as | 2 +- FairyGUI-as3/src/fairygui/UIPackage.as | 4 +- FairyGUI-as3/src/ktv/font/ManagerFont.as | 15 +- FairyGUI-as3/src/ktv/managers/Interface.as | 31 +- FairyGUI-as3/src/ktv/managers/ManagerLayer.as | 14 +- FairyGUI-as3/src/ktv/message/local/UIEvent.as | 15 +- .../ktv/message/local/UIEventDispatcher.as | 15 +- .../src/ktv/message/socket/SocketManager.as | 16 +- .../src/ktv/morn/core/managers/LogManager.as | 114 +- FairyGUI-as3/src/ktv/utils/MyBase64.as | 121 + FairyGUI-as3/src/ktv/utils/qrcode/Qrcode.as | 1 - .../src/ktv/utils/transition/MCTransition.as | 12 +- 165 files changed, 32318 insertions(+), 1169 deletions(-) create mode 100644 FairyGUI-as3/src/com/greensock/BlitMask.as create mode 100644 FairyGUI-as3/src/com/greensock/FlexBlitMask.as create mode 100644 FairyGUI-as3/src/com/greensock/TimelineLite.as create mode 100644 FairyGUI-as3/src/com/greensock/TimelineMax.as create mode 100644 FairyGUI-as3/src/com/greensock/TweenAlign.as create mode 100644 FairyGUI-as3/src/com/greensock/TweenLite.as create mode 100644 FairyGUI-as3/src/com/greensock/TweenMax.as create mode 100644 FairyGUI-as3/src/com/greensock/TweenNano.as create mode 100644 FairyGUI-as3/src/com/greensock/core/Animation.as create mode 100644 FairyGUI-as3/src/com/greensock/core/PropTween.as create mode 100644 FairyGUI-as3/src/com/greensock/core/SimpleTimeline.as create mode 100644 FairyGUI-as3/src/com/greensock/data/TweenLiteVars.as create mode 100644 FairyGUI-as3/src/com/greensock/data/TweenMaxVars.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/.DS_Store create mode 100644 FairyGUI-as3/src/com/greensock/easing/Back.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/BackIn.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/BackInOut.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/BackOut.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/Bounce.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/BounceIn.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/BounceInOut.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/BounceOut.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/Circ.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/CircIn.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/CircInOut.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/CircOut.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/Cubic.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/Ease.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/EaseLookup.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/Elastic.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/ElasticIn.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/ElasticInOut.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/ElasticOut.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/Expo.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/ExpoIn.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/ExpoInOut.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/ExpoOut.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/Linear.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/Power0.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/Power1.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/Power2.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/Power3.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/Power4.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/Quad.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/Quart.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/Quint.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/RoughEase.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/Sine.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/SineIn.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/SineInOut.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/SineOut.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/SlowMo.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/SteppedEase.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/Strong.as create mode 100644 FairyGUI-as3/src/com/greensock/easing/core/EasePoint.as create mode 100644 FairyGUI-as3/src/com/greensock/events/LoaderEvent.as create mode 100644 FairyGUI-as3/src/com/greensock/events/TweenEvent.as create mode 100644 FairyGUI-as3/src/com/greensock/layout/.DS_Store create mode 100644 FairyGUI-as3/src/com/greensock/layout/AlignMode.as create mode 100644 FairyGUI-as3/src/com/greensock/layout/AutoFitArea.as create mode 100644 FairyGUI-as3/src/com/greensock/layout/ScaleMode.as create mode 100644 FairyGUI-as3/src/com/greensock/loading/.DS_Store create mode 100644 FairyGUI-as3/src/com/greensock/loading/BinaryDataLoader.as create mode 100644 FairyGUI-as3/src/com/greensock/loading/CSSLoader.as create mode 100644 FairyGUI-as3/src/com/greensock/loading/DataLoader.as create mode 100644 FairyGUI-as3/src/com/greensock/loading/ImageLoader.as create mode 100644 FairyGUI-as3/src/com/greensock/loading/LoaderMax.as create mode 100644 FairyGUI-as3/src/com/greensock/loading/LoaderStatus.as create mode 100644 FairyGUI-as3/src/com/greensock/loading/MP3Loader.as create mode 100644 FairyGUI-as3/src/com/greensock/loading/SWFLoader.as create mode 100644 FairyGUI-as3/src/com/greensock/loading/SelfLoader.as create mode 100644 FairyGUI-as3/src/com/greensock/loading/VideoLoader.as create mode 100644 FairyGUI-as3/src/com/greensock/loading/XMLLoader.as create mode 100644 FairyGUI-as3/src/com/greensock/loading/core/.DS_Store create mode 100644 FairyGUI-as3/src/com/greensock/loading/core/DisplayObjectLoader.as create mode 100644 FairyGUI-as3/src/com/greensock/loading/core/LoaderCore.as create mode 100644 FairyGUI-as3/src/com/greensock/loading/core/LoaderItem.as create mode 100644 FairyGUI-as3/src/com/greensock/loading/data/CSSLoaderVars.as create mode 100644 FairyGUI-as3/src/com/greensock/loading/data/DataLoaderVars.as create mode 100644 FairyGUI-as3/src/com/greensock/loading/data/ImageLoaderVars.as create mode 100644 FairyGUI-as3/src/com/greensock/loading/data/LoaderMaxVars.as create mode 100644 FairyGUI-as3/src/com/greensock/loading/data/MP3LoaderVars.as create mode 100644 FairyGUI-as3/src/com/greensock/loading/data/SWFLoaderVars.as create mode 100644 FairyGUI-as3/src/com/greensock/loading/data/VideoLoaderVars.as create mode 100644 FairyGUI-as3/src/com/greensock/loading/data/XMLLoaderVars.as create mode 100644 FairyGUI-as3/src/com/greensock/loading/display/.DS_Store create mode 100644 FairyGUI-as3/src/com/greensock/loading/display/ContentDisplay.as create mode 100644 FairyGUI-as3/src/com/greensock/loading/display/FlexContentDisplay.as create mode 100644 FairyGUI-as3/src/com/greensock/motionPaths/.DS_Store create mode 100644 FairyGUI-as3/src/com/greensock/motionPaths/CirclePath2D.as create mode 100644 FairyGUI-as3/src/com/greensock/motionPaths/Direction.as create mode 100644 FairyGUI-as3/src/com/greensock/motionPaths/LinePath2D.as create mode 100644 FairyGUI-as3/src/com/greensock/motionPaths/MotionPath.as create mode 100644 FairyGUI-as3/src/com/greensock/motionPaths/PathFollower.as create mode 100644 FairyGUI-as3/src/com/greensock/motionPaths/RectanglePath2D.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/.DS_Store create mode 100644 FairyGUI-as3/src/com/greensock/plugins/AutoAlphaPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/BevelFilterPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/BezierPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/BezierThroughPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/BlurFilterPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/CacheAsBitmapPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/CirclePath2DPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/ColorMatrixFilterPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/ColorTransformPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/DirectionalRotationPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/DropShadowFilterPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/EndArrayPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/EndVectorPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/FilterPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/FrameBackwardPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/FrameForwardPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/FrameLabelPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/FramePlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/GlowFilterPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/HexColorsPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/OnChangeRatioPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/OnCompleteRenderPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/Positions2DPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/QuaternionsPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/RemoveTintPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/RoundPropsPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/ScalePlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/ScrollRectPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/SetActualSizePlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/SetSizePlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/ShortRotationPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/SoundTransformPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/StageQualityPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/TintPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/TransformMatrixPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/TweenPlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/VisiblePlugin.as create mode 100644 FairyGUI-as3/src/com/greensock/plugins/VolumePlugin.as delete mode 100644 FairyGUI-as3/src/fairygui/GearAnimation.as delete mode 100644 FairyGUI-as3/src/fairygui/GearBase.as delete mode 100644 FairyGUI-as3/src/fairygui/GearColor.as delete mode 100644 FairyGUI-as3/src/fairygui/GearDisplay.as delete mode 100644 FairyGUI-as3/src/fairygui/GearIcon.as delete mode 100644 FairyGUI-as3/src/fairygui/GearLook.as delete mode 100644 FairyGUI-as3/src/fairygui/GearSize.as delete mode 100644 FairyGUI-as3/src/fairygui/GearText.as delete mode 100644 FairyGUI-as3/src/fairygui/GearXY.as delete mode 100644 FairyGUI-as3/src/fairygui/IAnimationGear.as delete mode 100644 FairyGUI-as3/src/fairygui/IColorGear.as delete mode 100644 FairyGUI-as3/src/fairygui/ITextColorGear.as create mode 100644 FairyGUI-as3/src/ktv/utils/MyBase64.as diff --git a/.gitignore b/.gitignore index 6ea4741..05b0a9d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /FairyGUI-as3/bin/*.swc /FairyGUI-as3/bin +bin diff --git a/FairyGUI-as3/.actionScriptProperties b/FairyGUI-as3/.actionScriptProperties index 00ab3cf..8ad947a 100644 --- a/FairyGUI-as3/.actionScriptProperties +++ b/FairyGUI-as3/.actionScriptProperties @@ -2,7 +2,7 @@ - + @@ -10,7 +10,7 @@ - + @@ -37,7 +37,3 @@ - - - - diff --git a/FairyGUI-as3/src/com/greensock/BlitMask.as b/FairyGUI-as3/src/com/greensock/BlitMask.as new file mode 100644 index 0000000..b2501f4 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/BlitMask.as @@ -0,0 +1,892 @@ +/** + * VERSION: 0.62 + * DATE: 2013-07-12 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock { + import flash.display.BitmapData; + import flash.display.DisplayObject; + import flash.display.Graphics; + import flash.display.Sprite; + import flash.events.Event; + import flash.events.MouseEvent; + import flash.geom.ColorTransform; + import flash.geom.Matrix; + import flash.geom.Point; + import flash.geom.Rectangle; + import flash.geom.Transform; +/** + * [AS3 only] A BlitMask is basically a rectangular Sprite that acts as a high-performance mask for a DisplayObject + * by caching a bitmap version of it and blitting only the pixels that should be visible at any given time, + * although its bitmapMode can be turned off to restore interactivity in the DisplayObject + * whenever you want. When scrolling very large images or text blocks, a BlitMask can greatly improve + * performance, especially on mobile devices that have weaker processors.

    + * + * Here are some of the conveniences BlitMask offers:
    + *
      + *
    • Excellent scrolling performance
    • + *
    • You don't need to do anything special with your target DisplayObject - move/scale/rotate it + * however you please and then update() the BlitMask and it syncs the pixels. + * The BlitMask basically sits on top of the DisplayObject in the display list and you can + * move it independently too if you want.
    • + *
    • Use the BlitMask's scrollX and scrollY properties to move the + * target DisplayObject inside the masked area. For example, to scroll from top to bottom over + * the course of 2 seconds, simply do:
      myBlitMask.scrollY = 0;
      + * TweenLite.to(myBlitMask, 2, {scrollY:1});
    • + *
    • Use the "wrap" feature to make the bitmap wrap around to the opposite side when it scrolls + * off one of the edges (only in bitmapMode of course), as though the BlitMask is + * filled with a grid of bitmap copies of the target.
    • + *
    • For maximum performance in bitmapMode, set smoothing to false or + * for maximum quality, set it to true
    • + *
    • You can toggle the bitmapMode to get either maximum performance or interactivity + * in the target DisplayObject anytime. (some other solutions out there are only viable for + * non-interactive bitmap content)
    • + *
    • MouseEvents are dispatched by the BlitMask, so you can listen for clicks, rollovers, rollouts, etc.
    • + *
    + * + * @example Example AS3 code:+ import com.greensock.~~; + + //create a 200x200 BlitMask positioned at x:20, y:50 to mask our "mc" object and turn smoothing on: + var blitMask:BlitMask = new BlitMask(mc, 20, 50, 200, 200, true); + + //position mc at the top left of the BlitMask using the scrollX and scrollY properties + blitMask.scrollX = 0; + blitMask.scrollY = 0; + + //tween the scrollY to make mc scroll to the bottom over the course of 3 seconds and then turn off bitmapMode so that mc becomes interactive: + TweenLite.to(blitMask, 3, {scrollY:1, onComplete:blitMask.disableBitmapMode}); + + //or simply position mc manually and then call update() to sync the display: + mc.x = 350; + blitMask.update(); + + + * + * Notes: + *
      + *
    • BlitMasks themselves should not be rotated or scaled (although technically you can alter the scaleX and scaleY + * but doing so will only change the width or height instead). You can, of course, alter their x, y, width, + * or height properties as much as you want.
    • + *
    • BlitMasks don't perform nearly as well in bitmapMode when the target is being scaled or rotated + * because it forces a flushing and recapture of the internal bitmap. BlitMasks are MUCH better when you are + * simply changing x/y properties (scrolling) because it can reuse the same cached bitmap over and over.
    • + *
    • If the target content is changing frequently (like if it has nested MovieClips that are animating on every frame), + * you'd need to call update(null, true) each time you want the BlitMask to redraw itself to sync with the changes + * in the target, but that's a relatively expensive operation so it's not a great use case for BlitMask. You may + * be better off just turning off bitmapMode during that animation sequence.
    • + *


    + * + * Copyright 2014-2014, GreenSock. All rights reserved. This work is subject to the terms in
    http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership. + * + * @author Jack Doyle, jack@greensock.com + **/ + public class BlitMask extends Sprite { + /** @private **/ + public static var version:Number = 0.62; + + // In order to conserve memory and improve performance, we create a few instances of Rectangles, Sprites, Points, Matrices, and Arrays and reuse them rather than creating new instances over and over. + /** @private **/ + protected static var _tempContainer:Sprite = new Sprite(); + /** @private **/ + protected static var _sliceRect:Rectangle = new Rectangle(); + /** @private **/ + protected static var _drawRect:Rectangle = new Rectangle(); + /** @private **/ + protected static var _destPoint:Point = new Point(); + /** @private **/ + protected static var _tempMatrix:Matrix = new Matrix(); + /** @private **/ + protected static var _emptyArray:Array = []; + /** @private **/ + protected static var _colorTransform:ColorTransform = new ColorTransform(); + /** @private **/ + protected static var _mouseEvents:Array = [MouseEvent.CLICK, MouseEvent.DOUBLE_CLICK, MouseEvent.MOUSE_DOWN, MouseEvent.MOUSE_MOVE, MouseEvent.MOUSE_OUT, MouseEvent.MOUSE_OVER, MouseEvent.MOUSE_UP, MouseEvent.MOUSE_WHEEL, MouseEvent.ROLL_OUT, MouseEvent.ROLL_OVER, "gesturePressAndTap", "gesturePan", "gestureRotate", "gestureSwipe", "gestureZoom", "gestureTwoFingerTap", "touchBegin", "touchEnd", "touchMove", "touchOut", "touchOver", "touchRollOut", "touchRollOver", "touchTap"]; + + /** @private **/ + protected var _target:DisplayObject; + /** @private **/ + protected var _fillColor:uint; + /** @private **/ + protected var _smoothing:Boolean; + /** @private **/ + protected var _width:Number; + /** @private **/ + protected var _height:Number; + /** @private **/ + protected var _bd:BitmapData; + /** @private maximum number of pixels (minus one) that each BitmapData cell in the grid can be **/ + protected var _gridSize:int = 2879; + /** @private **/ + protected var _grid:Array; + /** @private **/ + protected var _bounds:Rectangle; + /** @private **/ + protected var _clipRect:Rectangle; + /** @private **/ + protected var _bitmapMode:Boolean; + /** @private **/ + protected var _rows:int; + /** @private **/ + protected var _columns:int; + /** @private **/ + protected var _scaleX:Number; + /** @private **/ + protected var _scaleY:Number; + /** @private **/ + protected var _prevMatrix:Matrix; + /** @private **/ + protected var _transform:Transform; + /** @private **/ + protected var _prevRotation:Number; + /** @private **/ + protected var _autoUpdate:Boolean; + /** @private **/ + protected var _wrap:Boolean; + /** @private **/ + protected var _wrapOffsetX:Number = 0; + /** @private **/ + protected var _wrapOffsetY:Number = 0; + + /** + * Constructor + * + * @param target The DisplayObject that will be masked by the BlitMask + * @param x x coorinate of the upper left corner of the BlitMask. If smoothing is false, the x coordinate will be rounded to the closest integer. + * @param y y coordinate of the upper right corner of the BlitMask + * @param width width of the BlitMask (in pixels) + * @param height height of the BlitMask (in pixels) + * @param smoothing If false (the default), the bitmap (and the BlitMask's x/y coordinates) will be rendered only on whole pixels which is faster in terms of processing. However, for the best quality and smoothest animation, set smoothing to true. + * @param autoUpdate If true, the BlitMask will automatically watch the target to see if its position/scale/rotation has changed on each frame (while bitmapMode is true) and if so, it will update() to make sure the BlitMask always stays synced with the target. This is the easiest way to use BlitMask but it is slightly less efficient than manually calling update() whenever you need to. Keep in mind that if you're tweening with TweenLite or TweenMax, you can simply set its onUpdate to the BlitMask's update() method to keep things synced. Like onUpdate:myBlitMask.update. + * @param fillColor The ARGB hexadecimal color that should fill the empty areas of the BlitMask. By default, it is transparent (0x00000000). If you wanted a red color, for example, it would be 0xFFFF0000. + * @param wrap If true, the bitmap will be wrapped around to the opposite side when it scrolls off one of the edges (only in bitmapMode of course), like the BlitMask is filled with a grid of bitmap copies of the target. Use the wrapOffsetX and wrapOffsetY properties to affect how far apart the copies are from each other. + */ + public function BlitMask(target:DisplayObject, x:Number=0, y:Number=0, width:Number=100, height:Number=100, smoothing:Boolean=false, autoUpdate:Boolean=false, fillColor:uint=0x00000000, wrap:Boolean=false) { + super(); + if (width < 0 || height < 0) { + throw new Error("A FlexBlitMask cannot have a negative width or height."); + } + _width = width; + _height = height; + _scaleX = _scaleY = 1; + _smoothing = smoothing; + _fillColor = fillColor; + _autoUpdate = autoUpdate; + _wrap = wrap; + _grid = []; + _bounds = new Rectangle(); + if (_smoothing) { + super.x = x; + super.y = y; + } else { + super.x = (x < 0) ? (x - 0.5) >> 0 : (x + 0.5) >> 0; + super.y = (y < 0) ? (y - 0.5) >> 0 : (y + 0.5) >> 0; + } + _clipRect = new Rectangle(0, 0, _gridSize + 1, _gridSize + 1); + _bd = new BitmapData(width + 1, height + 1, true, _fillColor); + _bitmapMode = true; + this.target = target; + } + + /** @private **/ + protected function _captureTargetBitmap():void { + if (_bd == null || _target == null) { //must have been disposed, so don't update. + return; + } + + _disposeGrid(); + + //capturing when the target is masked (or has a scrollRect) can cause problems. + var prevMask:DisplayObject = _target.mask; + if (prevMask != null) { + _target.mask = null; + } + var prevScrollRect:Rectangle = _target.scrollRect; + if (prevScrollRect != null) { + _target.scrollRect = null; + } + var prevFilters:Array = _target.filters; + if (prevFilters.length != 0) { + _target.filters = _emptyArray; + } + + _grid = []; + if (_target.parent == null) { + _tempContainer.addChild(_target); + } + _bounds = _target.getBounds(_target.parent); + var w:Number = 0; + var h:Number = 0; + _columns = Math.ceil(_bounds.width / _gridSize); + _rows = Math.ceil(_bounds.height / _gridSize); + var cumulativeHeight:Number = 0; + var matrix:Matrix = _transform.matrix; + var xOffset:Number = matrix.tx - _bounds.x; + var yOffset:Number = matrix.ty - _bounds.y; + if (!_smoothing) { + xOffset = (xOffset + 0.5) >> 0; + yOffset = (yOffset + 0.5) >> 0; + } + + var bd:BitmapData, cumulativeWidth:Number; + for (var row:int = 0; row < _rows; row++) { + h = (_bounds.height - cumulativeHeight > _gridSize) ? _gridSize : _bounds.height - cumulativeHeight; + matrix.ty = -cumulativeHeight + yOffset; + cumulativeWidth = 0; + _grid[row] = []; + for (var column:int = 0; column < _columns; column++) { + w = (_bounds.width - cumulativeWidth > _gridSize) ? _gridSize : _bounds.width - cumulativeWidth; + _grid[row][column] = bd = new BitmapData(w + 1, h + 1, true, _fillColor); + matrix.tx = -cumulativeWidth + xOffset; + bd.draw(_target, matrix, null, null, _clipRect, _smoothing); + cumulativeWidth += w; + } + cumulativeHeight += h; + } + + if (_target.parent == _tempContainer) { + _tempContainer.removeChild(_target); + } + + if (prevMask != null) { + _target.mask = prevMask; + } + if (prevScrollRect != null) { + _target.scrollRect = prevScrollRect; + } + if (prevFilters.length != 0) { + _target.filters = prevFilters; + } + } + + /** @private **/ + protected function _disposeGrid():void { + var i:int = _grid.length, j:int, r:Array; + while (--i > -1) { + r = _grid[i]; + j = r.length; + while (--j > -1) { + BitmapData(r[j]).dispose(); + } + } + } + + /** + * Updates the BlitMask's internal bitmap to reflect the target's current position/scale/rotation. + * This is a very important method that you'll need to call whenever visual or transformational changes are made + * to the target so that the BlitMask remains synced with it. + * + * @param event An optional Event object (which isn't used at all internally) in order to make it easier to use update() as an event handler. For example, you could addEventListener(Event.ENTER_FRAME, myBlitMask.update) to make sure it is updated on every frame (although it would be more efficient to simply set autoUpdate to true in this case). + * @param forceRecaptureBitmap Normally, the cached bitmap of the target is only recaptured if its scale or rotation changed because doing so is rather processor-intensive, but you can force a full update (and regeneration of the cached bitmap) by setting forceRecaptureBitmap to true. + */ + public function update(event:Event=null, forceRecaptureBitmap:Boolean=false):void { + if (_bd == null) { + return; + } else if (_target == null) { + _render(); + } else if (_target.parent) { + _bounds = _target.getBounds(_target.parent); + if (this.parent != _target.parent) { + _target.parent.addChildAt(this, _target.parent.getChildIndex(_target)); + } + } + if (_bitmapMode || forceRecaptureBitmap) { + var m:Matrix = _transform.matrix; + if (forceRecaptureBitmap || _prevMatrix == null || m.a != _prevMatrix.a || m.b != _prevMatrix.b || m.c != _prevMatrix.c || m.d != _prevMatrix.d) { + _captureTargetBitmap(); + _render(); + } else if (m.tx != _prevMatrix.tx || m.ty != _prevMatrix.ty) { + _render(); + } else if (_bitmapMode && _target != null) { + this.filters = _target.filters; + this.transform.colorTransform = _transform.colorTransform; + } + _prevMatrix = m; + } + } + + /** @private **/ + protected function _render(xOffset:Number=0, yOffset:Number=0, clear:Boolean=true, limitRecursion:Boolean=false):void { + //note: the code in this method was optimized for speed rather than readability or succinctness (since the whole point of this class is to help things perform better) + if (clear) { + _sliceRect.x = _sliceRect.y = 0; + _sliceRect.width = _width + 1; + _sliceRect.height = _height + 1; + _bd.fillRect(_sliceRect, _fillColor); + + if (_bitmapMode && _target != null) { + this.filters = _target.filters; + this.transform.colorTransform = _transform.colorTransform; + } else { + this.filters = _emptyArray; + this.transform.colorTransform = _colorTransform; + } + } + + if (_bd == null) { + return; + } else if (_rows == 0) { //sometimes (especially in Flex) objects take a frame or two to render in Flash and properly report their width/height. Before that, their width/height is typically 0. This works around that issue and forces a refresh if we didn't capture any pixels last time we did a capture. + _captureTargetBitmap(); + } + + var x:Number = super.x + xOffset; + var y:Number = super.y + yOffset; + + + var wrapWidth:int = (_bounds.width + _wrapOffsetX + 0.5) >> 0; + var wrapHeight:int = (_bounds.height + _wrapOffsetY + 0.5) >> 0; + var g:Graphics = this.graphics; + + if (_bounds.width == 0 || _bounds.height == 0 || (_wrap && (wrapWidth == 0 || wrapHeight == 0)) || (!_wrap && (x + _width < _bounds.x || y + _height < _bounds.y || x > _bounds.right || y > _bounds.bottom))) { + g.clear(); + g.beginBitmapFill(_bd); + g.drawRect(0, 0, _width, _height); + g.endFill(); + return; + } + + var column:int = int((x - _bounds.x) / _gridSize); + if (column < 0) { + column = 0; + } + var row:int = int((y - _bounds.y) / _gridSize); + if (row < 0) { + row = 0; + } + + var maxColumn:int = int(((x + _width) - _bounds.x) / _gridSize); + if (maxColumn >= _columns) { + maxColumn = _columns - 1; + } + var maxRow:uint = int(((y + _height) - _bounds.y) / _gridSize); + if (maxRow >= _rows) { + maxRow = _rows - 1; + } + + var xNudge:Number = (_bounds.x - x) % 1; + var yNudge:Number = (_bounds.y - y) % 1; + + if (y <= _bounds.y) { + _destPoint.y = (_bounds.y - y) >> 0; + _sliceRect.y = -1; //subtract 1 to make sure the whole image gets included - without this, a very slight vibration can occur on the edge during animation. + + } else { + _destPoint.y = 0; + _sliceRect.y = Math.ceil(y - _bounds.y) - (row * _gridSize) - 1; //subtract 1 to make sure the whole image gets included - without this, a very slight vibration can occur on the edge during animation. + if (clear && yNudge != 0) { + yNudge += 1; + } + + } + if (x <= _bounds.x) { + _destPoint.x = (_bounds.x - x) >> 0; + _sliceRect.x = -1; //subtract 1 to make sure the whole image gets included - without this, a very slight vibration can occur on the edge during animation. + + } else { + _destPoint.x = 0; + _sliceRect.x = Math.ceil(x - _bounds.x) - (column * _gridSize) - 1; //subtract 1 to make sure the whole image gets included - without this, a very slight vibration can occur on the edge during animation. + if (clear && xNudge != 0) { + xNudge += 1; + } + } + + if (_wrap && clear) { + //make sure to offset appropriately so that we start drawing directly on the image. We must use consistent xNudge and yNudge values across all the recursive calls too, otherwise the copies may vibrate visually a bit as they move + _render(Math.ceil((_bounds.x - x) / wrapWidth) * wrapWidth, Math.ceil((_bounds.y - y) / wrapHeight) * wrapHeight, false, false); + } else if (_rows != 0) { + var xDestReset:Number = _destPoint.x; + var xSliceReset:Number = _sliceRect.x; + var columnReset:int = column; + var bd:BitmapData; + while (row <= maxRow) { + bd = _grid[row][0]; + _sliceRect.height = bd.height - _sliceRect.y; + _destPoint.x = xDestReset; + _sliceRect.x = xSliceReset; + column = columnReset; + while (column <= maxColumn) { + bd = _grid[row][column]; + _sliceRect.width = bd.width - _sliceRect.x; + + _bd.copyPixels(bd, _sliceRect, _destPoint); + + _destPoint.x += _sliceRect.width - 1; + _sliceRect.x = 0; + column++; + } + _destPoint.y += _sliceRect.height - 1; + _sliceRect.y = 0; + row++; + } + + } + + if (clear) { + _tempMatrix.tx = xNudge - 1; //subtract 1 to compensate for the pixel we added above. + _tempMatrix.ty = yNudge - 1; + g.clear(); + g.beginBitmapFill(_bd, _tempMatrix, false, _smoothing); + g.drawRect(0, 0, _width, _height); + g.endFill(); + } else if (_wrap) { + //if needed, recursively call _render() and adjust the offset(s) to wrap the bitmap. + if (x + _width > _bounds.right) { + _render(xOffset - wrapWidth, yOffset, false, true); + } + if (!limitRecursion && y + _height > _bounds.bottom) { + _render(xOffset, yOffset - wrapHeight, false, false); + } + } + } + + /** + * Sets the width and height of the BlitMask. + * Keep in mind that a BlitMask should not be rotated or scaled. + * You can also directly set the width or height properties. + * + * @param width The width of the BlitMask + * @param height The height of the BlitMask + * @see #width + * @see #height + **/ + public function setSize(width:Number, height:Number):void { + if (_width == width && _height == height) { + return; + } else if (width < 0 || height < 0) { + throw new Error("A BlitMask cannot have a negative width or height."); + } else if (_bd != null) { + _bd.dispose(); + } + _width = width; + _height = height; + _bd = new BitmapData(width + 1, height + 1, true, _fillColor); + _render(); + } + + /** @private **/ + protected function _mouseEventPassthrough(event:Event):void { + if (this.mouseEnabled && (!_bitmapMode || (event is MouseEvent && this.hitTestPoint(MouseEvent(event).stageX, MouseEvent(event).stageY, false)))) { + dispatchEvent(event); + } + } + + /** + * Identical to setting bitmapMode = true but this method simplifies adding that + * functionality to tweens or using it as an event handler. For example, to enable bitmapMode at + * the beginning of a tween and then disable it when the tween completes, you could do:

    + * + * TweenLite.to(mc, 3, {x:400, onStart:myBlitMask.enableBitmapMode, onUpdate:myBlitMask.update, onComplete:myBlitMask.disableBitmapMode}); + * + * + * @param event An optional Event that isn't used internally but makes it possible to use the method as an event handler like addEventListener(MouseEvent.CLICK, myBlitMask.enableBitmapMode). + * @see #disableBitmapMode() + * @see #bitmapMode + */ + public function enableBitmapMode(event:Event=null):void { + this.bitmapMode = true; + } + + /** + * Identical to setting bitmapMode = false but this method simplifies adding that + * functionality to tweens or using it as an event handler. For example, to enable bitmapMode at + * the beginning of a tween and then disable it when the tween completes, you could do:

    + * + * TweenLite.to(mc, 3, {x:400, onStart:myBlitMask.enableBitmapMode, onUpdate:myBlitMask.update, onComplete:myBlitMask.disableBitmapMode}); + * + * + * @param event An optional Event that isn't used internally but makes it possible to use the method as an event handler like addEventListener(MouseEvent.CLICK, myBlitMask.disableBitmapMode). + * @see #enableBitmapMode() + * @see #bitmapMode + */ + public function disableBitmapMode(event:Event=null):void { + this.bitmapMode = false; + } + + /** + * Repositions the target so that it is visible within the BlitMask, as though wrap + * was enabled (this method is called automatically when bitmapMode is disabled while wrap + * is true). For example, if you tween the target way off the edge of the BlitMask and + * have wrap enabled, it will appear to come back in from the other side even though the raw coordinates + * of the target would indicate that it is outside the BlitMask. If you want to force the coordinates to normalize + * so that they reflect that wrapped position, simply call normalizePosition(). It will automatically + * choose the coordinates that would maximize the visible portion of the target if a seam is currently showing. + **/ + public function normalizePosition():void { + if (_target && _bounds) { + var wrapWidth:int = (_bounds.width + _wrapOffsetX + 0.5) >> 0; + var wrapHeight:int = (_bounds.height + _wrapOffsetY + 0.5) >> 0; + var offsetX:Number = (_bounds.x - this.x) % wrapWidth; + var offsetY:Number = (_bounds.y - this.y) % wrapHeight; + + if (offsetX > (_width + _wrapOffsetX) / 2) { + offsetX -= wrapWidth; + } else if (offsetX < (_width + _wrapOffsetX) / -2) { + offsetX += wrapWidth; + } + if (offsetY > (_height + _wrapOffsetY) / 2) { + offsetY -= wrapHeight; + } else if (offsetY < (_height + _wrapOffsetY) / -2) { + offsetY += wrapHeight; + } + + _target.x += this.x + offsetX - _bounds.x; + _target.y += this.y + offsetY - _bounds.y; + } + } + + /** Disposes of the BlitMask and its internal BitmapData instances, releasing them for garbage collection. **/ + public function dispose():void { + if (_bd == null) { //already disposed. + return; + } + _disposeGrid(); + _bd.dispose(); + _bd = null; + this.bitmapMode = false; + this.autoUpdate = false; + if (_target != null) { + _target.mask = null; + } + if (this.parent != null) { + this.parent.removeChild(this); + } + this.target = null; + } + +//---- GETTERS / SETTERS -------------------------------------------------------------------- + + /** + * When true, the BlitMask optimizes itself for performance by setting the target's + * visible property to false (greatly reducing the load on Flash's graphics rendering + * routines) and uses its internally cached bitmap version of the target to redraw only the necessary + * pixels inside the masked area. Since only a bitmap version of the target is shown while in bitmapMode, + * the target won't be interactive. So if you have buttons and other objects that normally react to + * MouseEvents, they won't while in bitmapMode. If you need the interactivity, simply set bitmapMode + * to false and then it will turn the target's visible property back to true + * and its mask property to the BlitMask itself. Typically it is best to turn bitmapMode on at least when you're + * animating the target or the BlitMask itself, and then when the tween/animation is done and you need + * interactivity, set bitmapMode back to false. For example:

    + * + * var bm:BlitMask = new BlitMask(mc, 0, 0, 300, 200, true);

    + * + * TweenLite.to(mc, 3, {x:200, onUpdate:bm.update, onComplete:completeHandler});

    + * + * function completeHandler():void {
    + * bm.bitmapMode = false;
    + * }
    + *


    + * + * @see #enableBitmapMode() + * @see #disableBitmapMode() + **/ + public function get bitmapMode():Boolean { + return _bitmapMode; + } + public function set bitmapMode(value:Boolean):void { + if (_bitmapMode != value) { + _bitmapMode = value; + if (_target != null) { + _target.visible = !_bitmapMode; + update(null); + if (_bitmapMode) { + this.filters = _target.filters; + this.transform.colorTransform = _transform.colorTransform; + this.blendMode = _target.blendMode; + _target.mask = null; + } else { + this.filters = _emptyArray; + this.transform.colorTransform = _colorTransform; + this.blendMode = "normal"; + this.cacheAsBitmap = false; //if cacheAsBitmap is true on both the _target and the FlexBlitMask instance, the transparent areas of the mask will be...well...transparent which isn't what we want when bitmapMode is false (it could hide visible areas unless update(null, true) is called regularly, like if the target has animated children and bitmapMode is false) + _target.mask = this; + if (_wrap) { + normalizePosition(); + } + } + if (_bitmapMode && _autoUpdate) { + this.addEventListener(Event.ENTER_FRAME, update, false, -10, true); + } else { + this.removeEventListener(Event.ENTER_FRAME, update); + } + } + } + } + + /** + * If true, the BlitMask will automatically watch the target to see if + * its position/scale/rotation has changed on each frame (while bitmapMode is true) + * and if so, it will update() to make sure the BlitMask always stays synced with the target. + * This is the easiest way to use BlitMask but it is slightly less efficient than manually calling update() + * whenever you need to. Keep in mind that if you're tweening with TweenLite or TweenMax, you can simply set + * its onUpdate to the BlitMask's update() method to keep things synced. + * Like onUpdate:myBlitMask.update. + **/ + public function get autoUpdate():Boolean { + return _autoUpdate; + } + public function set autoUpdate(value:Boolean):void { + if (_autoUpdate != value) { + _autoUpdate = value; + if (_bitmapMode && _autoUpdate) { + this.addEventListener(Event.ENTER_FRAME, update, false, -10, true); + } else { + this.removeEventListener(Event.ENTER_FRAME, update); + } + } + } + + /** The target DisplayObject that the BlitMask should mask **/ + public function get target():DisplayObject { + return _target; + } + public function set target(value:DisplayObject):void { + if (_target != value) { + var i:int = _mouseEvents.length; + if (_target != null) { + while (--i > -1) { + _target.removeEventListener(_mouseEvents[i], _mouseEventPassthrough); + } + } + _target = value; + if (_target != null) { + i = _mouseEvents.length; + while (--i > -1) { + _target.addEventListener(_mouseEvents[i], _mouseEventPassthrough, false, 0, true); + } + _prevMatrix = null; + _transform = _target.transform; + _bitmapMode = !_bitmapMode; + this.bitmapMode = !_bitmapMode; //forces a refresh (applying the mask, doing an update(), etc.) + } else { + _bounds = new Rectangle(); + } + } + } + + /** x coordinate of the BlitMask (it will automatically be forced to whole pixel values if smoothing is false). **/ + override public function get x():Number { + return super.x; + } + override public function set x(value:Number):void { + if (_smoothing) { + super.x = value; + } else if (value >= 0) { + super.x = (value + 0.5) >> 0; + } else { + super.x = (value - 0.5) >> 0; + } + if (_bitmapMode) { + _render(); + } + } + + /** y coordinate of the BlitMask (it will automatically be forced to whole pixel values if smoothing is false). **/ + override public function get y():Number { + return super.y; + } + override public function set y(value:Number):void { + if (_smoothing) { + super.y = value; + } else if (value >= 0) { + super.y = (value + 0.5) >> 0; + } else { + super.y = (value - 0.5) >> 0; + } + if (_bitmapMode) { + _render(); + } + } + + /** Width of the BlitMask **/ + override public function get width():Number { + return _width; + } + override public function set width(value:Number):void { + setSize(value, _height); + } + + /** Height of the BlitMask **/ + override public function get height():Number { + return _height; + } + override public function set height(value:Number):void { + setSize(_width, value); + } + + /** scaleX (warning: altering the scaleX won't actually change its value - instead, it affects the width property accordingly) **/ + override public function get scaleX():Number { + return 1; + } + override public function set scaleX(value:Number):void { + var oldScaleX:Number = _scaleX; + _scaleX = value; + setSize(_width * (_scaleX / oldScaleX), _height); + } + + /** scaleY (warning: altering the scaleY won't actually change its value - instead, it affects the height property accordingly) **/ + override public function get scaleY():Number { + return 1; + } + override public function set scaleY(value:Number):void { + var oldScaleY:Number = _scaleY; + _scaleY = value; + setSize(_width, _height * (_scaleY / oldScaleY)); + } + + /** Rotation of the BlitMask (always 0 because BlitMasks can't be rotated!) **/ + override public function set rotation(value:Number):void { + if (value != 0) { + throw new Error("Cannot set the rotation of a BlitMask to a non-zero number. BlitMasks should remain unrotated."); + } + } + + /** + * Typically a value between 0 and 1 indicating the target's position in relation to the BlitMask + * on the x-axis where 0 is at the beginning, 0.5 is scrolled to exactly the halfway point, and 1 is scrolled + * all the way. This makes it very easy to animate the scroll. For example, to scroll from beginning to end + * over 5 seconds, you could do:

    + * + * myBlitMask.scrollX = 0;
    + * TweenLite.to(myBlitMask, 5, {scrollX:1}); + *
    + * @see #scrollY + **/ + public function get scrollX():Number { + return (super.x - _bounds.x) / (_bounds.width - _width); + } + public function set scrollX(value:Number):void { + if (_target != null && _target.parent) { + _bounds = _target.getBounds(_target.parent); + var dif:Number; + dif = (super.x - (_bounds.width - _width) * value) - _bounds.x; + _target.x += dif; + _bounds.x += dif; + if (_bitmapMode) { + _render(); + } + } + } + + /** + * Typically a value between 0 and 1 indicating the target's position in relation to the BlitMask + * on the y-axis where 0 is at the beginning, 0.5 is scrolled to exactly the halfway point, and 1 is scrolled + * all the way. This makes it very easy to animate the scroll. For example, to scroll from beginning to end + * over 5 seconds, you could do:

    + * + * myBlitMask.scrollY = 0;
    + * TweenLite.to(myBlitMask, 5, {scrollY:1}); + *
    + * @see #scrollX + **/ + public function get scrollY():Number { + return (super.y - _bounds.y) / (_bounds.height - _height); + } + public function set scrollY(value:Number):void { + if (_target != null && _target.parent) { + _bounds = _target.getBounds(_target.parent); + var dif:Number = (super.y - (_bounds.height - _height) * value) - _bounds.y; + _target.y += dif; + _bounds.y += dif; + if (_bitmapMode) { + _render(); + } + } + } + + /** + * If false (the default), the bitmap (and the BlitMask's x/y coordinates) + * will be rendered only on whole pixels which is faster in terms of processing. However, + * for the best quality and smoothest animation, set smoothing to true. + **/ + public function get smoothing():Boolean { + return _smoothing; + } + public function set smoothing(value:Boolean):void { + if (_smoothing != value) { + _smoothing = value; + _captureTargetBitmap(); + if (_bitmapMode) { + _render(); + } + } + } + + /** + * The ARGB hexadecimal color that should fill the empty areas of the BlitMask. By default, + * it is transparent (0x00000000). If you wanted a red color, for example, it would be + * 0xFFFF0000. + **/ + public function get fillColor():uint { + return _fillColor; + } + public function set fillColor(value:uint):void { + if (_fillColor != value) { + _fillColor = value; + if (_bitmapMode) { + _render(); + } + } + } + + /** + * If true, the bitmap will be wrapped around to the opposite side when it scrolls off + * one of the edges (only in bitmapMode of course), like the BlitMask is filled with a + * grid of bitmap copies of the target. Use the wrapOffsetX and wrapOffsetY + * properties to affect how far apart the copies are from each other. You can reposition the + * target anywhere and BlitMask will align the copies accordingly. + * @see #wrapOffsetX + * @see #wrapOffsetY + **/ + public function get wrap():Boolean { + return _wrap; + } + public function set wrap(value:Boolean):void { + if (_wrap != value) { + _wrap = value; + if (_bitmapMode) { + _render(); + } + } + } + + /** + * When wrap is true, wrapOffsetX controls how many pixels + * along the x-axis the wrapped copies of the bitmap are spaced. It is essentially the gap between + * the copies (although you can use a negative value or 0 to avoid any gap). + * @see #wrap + * @see #wrapOffsetY + **/ + public function get wrapOffsetX():Number { + return _wrapOffsetX; + } + public function set wrapOffsetX(value:Number):void { + if (_wrapOffsetX != value) { + _wrapOffsetX = value; + if (_bitmapMode) { + _render(); + } + } + } + + /** + * When wrap is true, wrapOffsetY controls how many pixels + * along the y-axis the wrapped copies of the bitmap are spaced. It is essentially the gap between + * the copies (although you can use a negative value or 0 to avoid any gap). + * @see #wrap + * @see #wrapOffsetX + **/ + public function get wrapOffsetY():Number { + return _wrapOffsetY; + } + public function set wrapOffsetY(value:Number):void { + if (_wrapOffsetY != value) { + _wrapOffsetY = value; + if (_bitmapMode) { + _render(); + } + } + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/FlexBlitMask.as b/FairyGUI-as3/src/com/greensock/FlexBlitMask.as new file mode 100644 index 0000000..848fb8c --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/FlexBlitMask.as @@ -0,0 +1,925 @@ +/** + * VERSION: 0.61 + * DATE: 2012-10-23 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock { + import flash.display.BitmapData; + import flash.display.DisplayObject; + import flash.display.Graphics; + import flash.display.BlendMode; + import flash.display.Sprite; + import flash.events.Event; + import flash.events.MouseEvent; + import flash.geom.ColorTransform; + import flash.geom.Matrix; + import flash.geom.Point; + import flash.geom.Rectangle; + import flash.geom.Transform; + + import mx.core.UIComponent; +/** + * [AS3 only] A FlexBlitMask is basically a rectangular UIComponent that acts as a high-performance mask for a DisplayObject + * by caching a bitmap version of it and blitting only the pixels that should be visible at any given time, + * although its bitmapMode can be turned off to restore interactivity in the DisplayObject + * whenever you want. It is a Flex-friendly version of BlitMask. When scrolling very large images or text + * blocks, a FlexBlitMask can greatly improve performance, especially on mobile devices that have weaker + * processors.

    + * + * Here are some of the conveniences FlexBlitMask offers:
    + *
      + *
    • Excellent scrolling performance
    • + *
    • You don't need to do anything special with your target DisplayObject - move/scale/rotate it + * however you please and then update() the FlexBlitMask and it syncs the pixels. + * The FlexBlitMask basically sits on top of the DisplayObject in the display list and you can + * move it independently too if you want.
    • + *
    • Use the FlexBlitMask's scrollX and scrollY properties to move the + * target DisplayObject inside the masked area. For example, to scroll from top to bottom over + * the course of 2 seconds, simply do:
      myFlexBlitMask.scrollY = 0;
      + * TweenLite.to(myFlexBlitMask, 2, {scrollY:1});
    • + *
    • Use the "wrap" feature to make the bitmap wrap around to the opposite side when it scrolls + * off one of the edges (only in bitmapMode of course), as though the FlexBlitMask is + * filled with a grid of bitmap copies of the target.
    • + *
    • For maximum performance in bitmapMode, set smoothing to false or + * for maximum quality, set it to true
    • + *
    • You can toggle the bitmapMode to get either maximum performance or interactivity + * in the target DisplayObject anytime. (some other solutions out there are only viable for + * non-interactive bitmap content)
    • + *
    • MouseEvents are dispatched by the FlexBlitMask, so you can listen for clicks, rollovers, rollouts, etc.
    • + *
    + * + * @example Example AS3 code:+<?xml version="1.0" encoding="utf-8"?> +<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" frameRate="60" layout="absolute" xmlns:greensock="com.greensock.~~" creationComplete="tween()"> + <mx:Script> + <![CDATA[ + import com.greensock.TweenLite; + private function tween():void { + myText.y = 50; + TweenLite.to(myText, 6, {y:-100}); + } + ]]> + </mx:Script> + <greensock:FlexBlitMask id="blitMask" target="{myText}" wrap="false" x="20" y="50" width="300" height="200" smoothing="true" /> + <mx:Label text="FlexBlitMask Example" fontSize="24" /> + <mx:Text id="myText" x="20" y="50" width="135" height="500" text="FlexBlitMask can be great for high-performance scrolling. Performance is of paramount importance in mobile apps. There is, of course, a trade-off in memory because an extra bitmap version of the target needs to be captured/maintained, but overall performance while scrolling can be significantly improved. It doesn't make sense to use FlexBlitMask if you're tweening the scale or rotation of the target, though - it is primarily for scrolling (tweening the x and/or y properties)." /> + <mx:Button id="tweenButton" label="Tween" x="20" y="260" click="tween()" /> +</mx:Application> + + * + * Notes: + *
      + *
    • FlexBlitMasks themselves should not be rotated or scaled (although technically you can alter the scaleX and scaleY + * but doing so will only change the width or height instead). You can, of course, alter their x, y, width, + * or height properties as much as you want.
    • + *
    • FlexBlitMasks don't perform nearly as well in bitmapMode when the target is being scaled or rotated + * because it forces a flushing and recapture of the internal bitmap. FlexBlitMasks are MUCH better when you are + * simply changing x/y properties (scrolling) because it can reuse the same cached bitmap over and over.
    • + *
    • If the target content is changing frequently (like if it has nested MovieClips that are animating on every frame), + * you'd need to call update(null, true) each time you want the FlexBlitMask to redraw itself to sync with the changes + * in the target, but that's a relatively expensive operation so it's not a great use case for FlexBlitMask. You may + * be better off just turning off bitmapMode during that animation sequence.
    • + *


    + * + * Copyright 2014-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership. + * + * @author Jack Doyle, jack@greensock.com + **/ + public class FlexBlitMask extends UIComponent { + /** @private **/ + public static var version:Number = 0.6; + + // In order to conserve memory and improve performance, we create a few instances of Rectangles, Sprites, Points, Matrices, and Arrays and reuse them rather than creating new instances over and over. + /** @private **/ + protected static var _tempContainer:Sprite = new Sprite(); + /** @private **/ + protected static var _sliceRect:Rectangle = new Rectangle(); + /** @private **/ + protected static var _drawRect:Rectangle = new Rectangle(); + /** @private **/ + protected static var _destPoint:Point = new Point(); + /** @private **/ + protected static var _tempMatrix:Matrix = new Matrix(); + /** @private **/ + protected static var _emptyArray:Array = []; + /** @private **/ + protected static var _colorTransform:ColorTransform = new ColorTransform(); + /** @private **/ + protected static var _mouseEvents:Array = [MouseEvent.CLICK, MouseEvent.DOUBLE_CLICK, MouseEvent.MOUSE_DOWN, MouseEvent.MOUSE_MOVE, MouseEvent.MOUSE_OUT, MouseEvent.MOUSE_OVER, MouseEvent.MOUSE_UP, MouseEvent.MOUSE_WHEEL, MouseEvent.ROLL_OUT, MouseEvent.ROLL_OVER, "gesturePressAndTap", "gesturePan", "gestureRotate", "gestureSwipe", "gestureZoom", "gestureTwoFingerTap", "touchBegin", "touchEnd", "touchMove", "touchOut", "touchOver", "touchRollOut", "touchRollOver", "touchTap"]; + + /** @private **/ + protected var _target:DisplayObject; + /** @private **/ + protected var _fillColor:uint; + /** @private **/ + protected var _smoothing:Boolean; + /** @private **/ + protected var _width:Number; + /** @private **/ + protected var _height:Number; + /** @private **/ + protected var _bd:BitmapData; + /** @private maximum number of pixels (minus one) that each BitmapData cell in the grid can be **/ + protected var _gridSize:int = 2879; + /** @private **/ + protected var _grid:Array; + /** @private **/ + protected var _bounds:Rectangle; + /** @private **/ + protected var _clipRect:Rectangle; + /** @private **/ + protected var _bitmapMode:Boolean; + /** @private **/ + protected var _rows:int; + /** @private **/ + protected var _columns:int; + /** @private **/ + protected var _scaleX:Number; + /** @private **/ + protected var _scaleY:Number; + /** @private **/ + protected var _prevMatrix:Matrix; + /** @private **/ + protected var _transform:Transform; + /** @private **/ + protected var _prevRotation:Number; + /** @private **/ + protected var _autoUpdate:Boolean; + /** @private **/ + protected var _wrap:Boolean; + /** @private **/ + protected var _wrapOffsetX:Number = 0; + /** @private **/ + protected var _wrapOffsetY:Number = 0; + + /** + * Constructor + * + * @param target The DisplayObject that will be masked by the FlexBlitMask + * @param x x coorinate of the upper left corner of the FlexBlitMask. If smoothing is false, the x coordinate will be rounded to the closest integer. + * @param y y coordinate of the upper right corner of the FlexBlitMask + * @param width width of the FlexBlitMask (in pixels) + * @param height height of the FlexBlitMask (in pixels) + * @param smoothing If false (the default), the bitmap (and the FlexBlitMask's x/y coordinates) will be rendered only on whole pixels which is faster in terms of processing. However, for the best quality and smoothest animation, set smoothing to true. + * @param autoUpdate If true (the default), the FlexBlitMask will automatically watch the target to see if its position/scale/rotation has changed on each frame (while bitmapMode is true) and if so, it will update() to make sure the FlexBlitMask always stays synced with the target. This is the easiest way to use FlexBlitMask but it is slightly less efficient than manually calling update() whenever you need to. Keep in mind that if you're tweening with TweenLite or TweenMax, you can simply set its onUpdate to the FlexBlitMask's update() method to keep things synced. Like onUpdate:myFlexBlitMask.update. + * @param fillColor The ARGB hexadecimal color that should fill the empty areas of the FlexBlitMask. By default, it is transparent (0x00000000). If you wanted a red color, for example, it would be 0xFFFF0000. + * @param wrap If true, the bitmap will be wrapped around to the opposite side when it scrolls off one of the edges (only in bitmapMode of course), like the FlexBlitMask is filled with a grid of bitmap copies of the target. Use the wrapOffsetX and wrapOffsetY properties to affect how far apart the copies are from each other. + */ + public function FlexBlitMask(target:DisplayObject=null, x:Number=0, y:Number=0, width:Number=100, height:Number=100, smoothing:Boolean=false, autoUpdate:Boolean=true, fillColor:uint=0x00000000, wrap:Boolean=false) { + super(); + if (width < 0 || height < 0) { + throw new Error("A FlexBlitMask cannot have a negative width or height."); + } + _width = width; + _height = height; + _scaleX = _scaleY = 1; + _smoothing = smoothing; + _fillColor = fillColor; + _autoUpdate = autoUpdate; + _wrap = wrap; + _grid = []; + _bounds = new Rectangle(); + if (_smoothing) { + super.x = x; + super.y = y; + } else { + super.x = (x < 0) ? (x - 0.5) >> 0 : (x + 0.5) >> 0; + super.y = (y < 0) ? (y - 0.5) >> 0 : (y + 0.5) >> 0; + } + _clipRect = new Rectangle(0, 0, _gridSize + 1, _gridSize + 1); + _bd = new BitmapData(width + 1, height + 1, true, _fillColor); + _bitmapMode = true; + this.target = target; + } + + /** @private **/ + protected function _captureTargetBitmap():void { + if (_bd == null || _target == null) { //must have been disposed, so don't update. + return; + } + + _disposeGrid(); + + //capturing when the target is masked (or has a scrollRect) can cause problems. + var prevMask:DisplayObject = _target.mask; + if (prevMask != null) { + _target.mask = null; + } + var prevScrollRect:Rectangle = _target.scrollRect; + if (prevScrollRect != null) { + _target.scrollRect = null; + } + var prevFilters:Array = _target.filters; + if (prevFilters.length != 0) { + _target.filters = _emptyArray; + } + + _grid = []; + if (_target.parent == null) { + _tempContainer.addChild(_target); + } + _bounds = _target.getBounds(_target.parent); + var w:Number = 0; + var h:Number = 0; + _columns = Math.ceil(_bounds.width / _gridSize); + _rows = Math.ceil(_bounds.height / _gridSize); + var cumulativeHeight:Number = 0; + var matrix:Matrix = _transform.matrix; + var xOffset:Number = matrix.tx - _bounds.x; + var yOffset:Number = matrix.ty - _bounds.y; + if (!_smoothing) { + xOffset = (xOffset + 0.5) >> 0; + yOffset = (yOffset + 0.5) >> 0; + } + + var bd:BitmapData, cumulativeWidth:Number; + for (var row:int = 0; row < _rows; row++) { + h = (_bounds.height - cumulativeHeight > _gridSize) ? _gridSize : _bounds.height - cumulativeHeight; + matrix.ty = -cumulativeHeight + yOffset; + cumulativeWidth = 0; + _grid[row] = []; + for (var column:int = 0; column < _columns; column++) { + w = (_bounds.width - cumulativeWidth > _gridSize) ? _gridSize : _bounds.width - cumulativeWidth; + _grid[row][column] = bd = new BitmapData(w + 1, h + 1, true, _fillColor); + matrix.tx = -cumulativeWidth + xOffset; + bd.draw(_target, matrix, null, null, _clipRect, _smoothing); + cumulativeWidth += w; + } + cumulativeHeight += h; + } + + if (_target.parent == _tempContainer) { + _tempContainer.removeChild(_target); + } + + if (prevMask != null) { + _target.mask = prevMask; + } + if (prevScrollRect != null) { + _target.scrollRect = prevScrollRect; + } + if (prevFilters.length != 0) { + _target.filters = prevFilters; + } + } + + /** @private **/ + protected function _disposeGrid():void { + var i:int = _grid.length, j:int, r:Array; + while (--i > -1) { + r = _grid[i]; + j = r.length; + while (--j > -1) { + BitmapData(r[j]).dispose(); + } + } + } + + /** + * Updates the FlexBlitMask's internal bitmap to reflect the target's current position/scale/rotation. + * This is a very important method that you'll need to call whenever visual or transformational changes are made + * to the target so that the FlexBlitMask remains synced with it. + * + * @param event An optional Event object (which isn't used at all internally) in order to make it easier to use update() as an event handler. For example, you could addEventListener(Event.ENTER_FRAME, myFlexBlitMask.update) to make sure it is updated on every frame (although it would be more efficient to simply set autoUpdate to true in this case). + * @param forceRecaptureBitmap Normally, the cached bitmap of the target is only recaptured if its scale or rotation changed because doing so is rather processor-intensive, but you can force a full update (and regeneration of the cached bitmap) by setting forceRecaptureBitmap to true. + */ + public function update(event:Event=null, forceRecaptureBitmap:Boolean=false):void { + if (_bd == null) { + return; + } else if (_target == null) { + _render(); + } else if (_target.parent) { + _bounds = _target.getBounds(_target.parent); + if (this.parent != _target.parent) { + if (_target.parent.hasOwnProperty("addElementAt")) { //for Flex compatibility (spark) + Object(_target.parent).addElementAt(this, Object(_target.parent).getChildIndex(_target)); + } else { + _target.parent.addChildAt(this, _target.parent.getChildIndex(_target)); + } + } + } + if (_bitmapMode || forceRecaptureBitmap) { + var m:Matrix = _transform.matrix; + if (forceRecaptureBitmap || _prevMatrix == null || m.a != _prevMatrix.a || m.b != _prevMatrix.b || m.c != _prevMatrix.c || m.d != _prevMatrix.d) { + _captureTargetBitmap(); + _render(); + } else if (m.tx != _prevMatrix.tx || m.ty != _prevMatrix.ty) { + _render(); + } else if (_bitmapMode && _target != null) { + this.filters = _target.filters; + this.transform.colorTransform = _transform.colorTransform; + } + _prevMatrix = m; + } + } + + /** @private **/ + protected function _render(xOffset:Number=0, yOffset:Number=0, clear:Boolean=true, limitRecursion:Boolean=false):void { + //note: the code in this method was optimized for speed rather than readability or succinctness (since the whole point of this class is to help things perform better) + if (clear) { + _sliceRect.x = _sliceRect.y = 0; + _sliceRect.width = _width + 1; + _sliceRect.height = _height + 1; + _bd.fillRect(_sliceRect, _fillColor); + + if (_bitmapMode && _target != null) { + this.filters = _target.filters; + this.transform.colorTransform = _transform.colorTransform; + } else { + this.filters = _emptyArray; + this.transform.colorTransform = _colorTransform; + } + } + + if (_bd == null) { + return; + } else if (_rows == 0) { //sometimes (especially in Flex) objects take a frame or two to render in Flash and properly report their width/height. Before that, their width/height is typically 0. This works around that issue and forces a refresh if we didn't capture any pixels last time we did a capture. + _captureTargetBitmap(); + } + + var x:Number = super.x + xOffset; + var y:Number = super.y + yOffset; + var wrapWidth:int = (_bounds.width + _wrapOffsetX + 0.5) >> 0; + var wrapHeight:int = (_bounds.height + _wrapOffsetY + 0.5) >> 0; + var g:Graphics = this.graphics; + + if (_bounds.width == 0 || _bounds.height == 0 || (_wrap && (wrapWidth == 0 || wrapHeight == 0)) || (!_wrap && (x + _width < _bounds.x || y + _height < _bounds.y || x > _bounds.right || y > _bounds.bottom))) { + g.clear(); + g.beginBitmapFill(_bd); + g.drawRect(0, 0, _width, _height); + g.endFill(); + return; + } + + var column:int = int((x - _bounds.x) / _gridSize); + if (column < 0) { + column = 0; + } + var row:int = int((y - _bounds.y) / _gridSize); + if (row < 0) { + row = 0; + } + + var maxColumn:int = int(((x + _width) - _bounds.x) / _gridSize); + if (maxColumn >= _columns) { + maxColumn = _columns - 1; + } + var maxRow:uint = int(((y + _height) - _bounds.y) / _gridSize); + if (maxRow >= _rows) { + maxRow = _rows - 1; + } + + var xNudge:Number = (_bounds.x - x) % 1; + var yNudge:Number = (_bounds.y - y) % 1; + + if (y <= _bounds.y) { + _destPoint.y = (_bounds.y - y) >> 0; + _sliceRect.y = -1; //subtract 1 to make sure the whole image gets included - without this, a very slight vibration can occur on the edge during animation. + + } else { + _destPoint.y = 0; + _sliceRect.y = Math.ceil(y - _bounds.y) - (row * _gridSize) - 1; //subtract 1 to make sure the whole image gets included - without this, a very slight vibration can occur on the edge during animation. + if (clear && yNudge != 0) { + yNudge += 1; + } + + } + if (x <= _bounds.x) { + _destPoint.x = (_bounds.x - x) >> 0; + _sliceRect.x = -1; //subtract 1 to make sure the whole image gets included - without this, a very slight vibration can occur on the edge during animation. + + } else { + _destPoint.x = 0; + _sliceRect.x = Math.ceil(x - _bounds.x) - (column * _gridSize) - 1; //subtract 1 to make sure the whole image gets included - without this, a very slight vibration can occur on the edge during animation. + if (clear && xNudge != 0) { + xNudge += 1; + } + } + + if (_wrap && clear) { + //make sure to offset appropriately so that we start drawing directly on the image. We must use consistent xNudge and yNudge values across all the recursive calls too, otherwise the copies may vibrate visually a bit as they move + _render(Math.ceil((_bounds.x - x) / wrapWidth) * wrapWidth, Math.ceil((_bounds.y - y) / wrapHeight) * wrapHeight, false, false); + } else if (_rows != 0) { + var xDestReset:Number = _destPoint.x; + var xSliceReset:Number = _sliceRect.x; + var columnReset:int = column; + var bd:BitmapData; + while (row <= maxRow) { + bd = _grid[row][0]; + _sliceRect.height = bd.height - _sliceRect.y; + _destPoint.x = xDestReset; + _sliceRect.x = xSliceReset; + column = columnReset; + while (column <= maxColumn) { + bd = _grid[row][column]; + _sliceRect.width = bd.width - _sliceRect.x; + + _bd.copyPixels(bd, _sliceRect, _destPoint); + + _destPoint.x += _sliceRect.width - 1; + _sliceRect.x = 0; + column++; + } + _destPoint.y += _sliceRect.height - 1; + _sliceRect.y = 0; + row++; + } + + } + + if (clear) { + _tempMatrix.tx = xNudge - 1; //subtract 1 to compensate for the pixel we added above. + _tempMatrix.ty = yNudge - 1; + g.clear(); + g.beginBitmapFill(_bd, _tempMatrix, false, _smoothing); + g.drawRect(0, 0, _width, _height); + g.endFill(); + } else if (_wrap) { + //if needed, recursively call _render() and adjust the offset(s) to wrap the bitmap. + if (x + _width > _bounds.right) { + _render(xOffset - wrapWidth, yOffset, false, true); + } + if (!limitRecursion && y + _height > _bounds.bottom) { + _render(xOffset, yOffset - wrapHeight, false, false); + } + } + } + + /** + * Sets the width and height of the FlexBlitMask. + * Keep in mind that a FlexBlitMask should not be rotated or scaled. + * You can also directly set the width or height properties. + * + * @param width The width of the FlexBlitMask + * @param height The height of the FlexBlitMask + * @see #width + * @see #height + **/ + public function setSize(width:Number, height:Number):void { + if (_width == width && _height == height) { + return; + } else if (width < 0 || height < 0) { + throw new Error("A FlexBlitMask cannot have a negative width or height."); + } else if (_bd != null) { + _bd.dispose(); + } + _width = width; + _height = height; + _bd = new BitmapData(width + 1, height + 1, true, _fillColor); + _render(); + } + + /** @private **/ + protected function _mouseEventPassthrough(event:MouseEvent):void { + if (this.mouseEnabled && (!_bitmapMode || this.hitTestPoint(event.stageX, event.stageY, false))) { + dispatchEvent(event); + } + } + + /** + * Identical to setting bitmapMode = true but this method simplifies adding that + * functionality to tweens or using it as an event handler. For example, to enable bitmapMode at + * the beginning of a tween and then disable it when the tween completes, you could do:

    + * + * TweenLite.to(mc, 3, {x:400, onStart:myFlexBlitMask.enableBitmapMode, onUpdate:myFlexBlitMask.update, onComplete:myFlexBlitMask.disableBitmapMode}); + * + * + * @param event An optional Event that isn't used internally but makes it possible to use the method as an event handler like addEventListener(MouseEvent.CLICK, myFlexBlitMask.enableBitmapMode). + * @see #disableBitmapMode() + * @see #bitmapMode + */ + public function enableBitmapMode(event:Event=null):void { + this.bitmapMode = true; + } + + /** + * Identical to setting bitmapMode = false but this method simplifies adding that + * functionality to tweens or using it as an event handler. For example, to enable bitmapMode at + * the beginning of a tween and then disable it when the tween completes, you could do:

    + * + * TweenLite.to(mc, 3, {x:400, onStart:myFlexBlitMask.enableBitmapMode, onUpdate:myFlexBlitMask.update, onComplete:myFlexBlitMask.disableBitmapMode}); + * + * + * @param event An optional Event that isn't used internally but makes it possible to use the method as an event handler like addEventListener(MouseEvent.CLICK, myFlexBlitMask.disableBitmapMode). + * @see #enableBitmapMode() + * @see #bitmapMode + */ + public function disableBitmapMode(event:Event=null):void { + this.bitmapMode = false; + } + + /** + * Repositions the target so that it is visible within the BlitMask, as though wrap + * was enabled (this method is called automatically when bitmapMode is disabled while wrap + * is true). For example, if you tween the target way off the edge of the BlitMask and + * have wrap enabled, it will appear to come back in from the other side even though the raw coordinates + * of the target would indicate that it is outside the BlitMask. If you want to force the coordinates to normalize + * so that they reflect that wrapped position, simply call normalizePosition(). It will automatically + * choose the coordinates that would maximize the visible portion of the target if a seam is currently showing. + **/ + public function normalizePosition():void { + if (_target && _bounds) { + var wrapWidth:int = (_bounds.width + _wrapOffsetX + 0.5) >> 0; + var wrapHeight:int = (_bounds.height + _wrapOffsetY + 0.5) >> 0; + var offsetX:Number = (_bounds.x - this.x) % wrapWidth; + var offsetY:Number = (_bounds.y - this.y) % wrapHeight; + + if (offsetX > (_width + _wrapOffsetX) / 2) { + offsetX -= wrapWidth; + } else if (offsetX < (_width + _wrapOffsetX) / -2) { + offsetX += wrapWidth; + } + if (offsetY > (_height + _wrapOffsetY) / 2) { + offsetY -= wrapHeight; + } else if (offsetY < (_height + _wrapOffsetY) / -2) { + offsetY += wrapHeight; + } + + _target.x += this.x + offsetX - _bounds.x; + _target.y += this.y + offsetY - _bounds.y; + } + } + + /** Disposes of the FlexBlitMask and its internal BitmapData instances, releasing them for garbage collection. **/ + public function dispose():void { + if (_bd == null) { //already disposed. + return; + } + _disposeGrid(); + _bd.dispose(); + _bd = null; + this.bitmapMode = false; + this.autoUpdate = false; + if (_target != null) { + _target.mask = null; + } + if (this.parent != null) { + if (this.parent.hasOwnProperty("removeElement")) { + Object(this.parent).removeElement(this); //for Flex compatibility (spark) + } else { + this.parent.removeChild(this); + } + } + this.target = null; + } + + /** @private **/ + override protected function measure():void { + if (this.parent) { + var bounds:Rectangle = this.getBounds(this.parent); + super.width = bounds.width; + super.height = bounds.height; + } + this.explicitWidth = _width; + this.explicitHeight = _height; + super.measure(); + } + + /** @inheritDoc **/ + override public function setActualSize(w:Number, h:Number):void { + setSize(w, h); + super.setActualSize(w, h); + } + + +//---- GETTERS / SETTERS -------------------------------------------------------------------- + + /** + * When true, the FlexBlitMask optimizes itself for performance by setting the target's + * visible property to false (greatly reducing the load on Flash's graphics rendering + * routines) and uses its internally cached bitmap version of the target to redraw only the necessary + * pixels inside the masked area. Since only a bitmap version of the target is shown while in bitmapMode, + * the target won't be interactive. So if you have buttons and other objects that normally react to + * MouseEvents, they won't while in bitmapMode. If you need the interactivity, simply set bitmapMode + * to false and then it will turn the target's visible property back to true + * and its mask property to the FlexBlitMask itself. Typically it is best to turn bitmapMode on at least when you're + * animating the target or the FlexBlitMask itself, and then when the tween/animation is done and you need + * interactivity, set bitmapMode back to false. For example:

    + * + * var bm:FlexBlitMask = new FlexBlitMask(mc, 0, 0, 300, 200, true);

    + * + * TweenLite.to(mc, 3, {x:200, onUpdate:bm.update, onComplete:completeHandler});

    + * + * function completeHandler():void {
    + * bm.bitmapMode = false;
    + * }
    + *


    + * + * @see #enableBitmapMode() + * @see #disableBitmapMode() + **/ + public function get bitmapMode():Boolean { + return _bitmapMode; + } + public function set bitmapMode(value:Boolean):void { + if (_bitmapMode != value) { + _bitmapMode = value; + if (_target != null) { + _target.visible = !_bitmapMode; + update(null); + if (_bitmapMode) { + this.filters = _target.filters; + this.transform.colorTransform = _transform.colorTransform; + if (_target.blendMode == "auto") { + this.blendMode = (_target.alpha == 0 || _target.alpha == 1) ? BlendMode.NORMAL : BlendMode.LAYER; + } else { + this.blendMode = _target.blendMode; + } + _target.mask = null; + } else { + this.filters = _emptyArray; + this.transform.colorTransform = _colorTransform; + this.blendMode = "normal"; + this.cacheAsBitmap = false; //if cacheAsBitmap is true on both the _target and the FlexBlitMask instance, the transparent areas of the mask will be...well...transparent which isn't what we want when bitmapMode is false (it could hide visible areas unless update(null, true) is called regularly, like if the target has animated children and bitmapMode is false) + _target.mask = this; + if (_wrap) { + normalizePosition(); + } + } + if (_bitmapMode && _autoUpdate) { + this.addEventListener(Event.ENTER_FRAME, update, false, -10, true); + } else { + this.removeEventListener(Event.ENTER_FRAME, update); + } + } + } + } + + /** + * If true, the FlexBlitMask will automatically watch the target to see if + * its position/scale/rotation has changed on each frame (while bitmapMode is true) + * and if so, it will update() to make sure the FlexBlitMask always stays synced with the target. + * This is the easiest way to use FlexBlitMask but it is slightly less efficient than manually calling update() + * whenever you need to. Keep in mind that if you're tweening with TweenLite or TweenMax, you can simply set + * its onUpdate to the FlexBlitMask's update() method to keep things synced. + * Like onUpdate:myFlexBlitMask.update. + **/ + public function get autoUpdate():Boolean { + return _autoUpdate; + } + public function set autoUpdate(value:Boolean):void { + if (_autoUpdate != value) { + _autoUpdate = value; + if (_bitmapMode && _autoUpdate) { + this.addEventListener(Event.ENTER_FRAME, update, false, -10, true); + } else { + this.removeEventListener(Event.ENTER_FRAME, update); + } + } + } + + /** The target DisplayObject that the FlexBlitMask should mask **/ + public function get target():DisplayObject { + return _target; + } + public function set target(value:DisplayObject):void { + if (_target != value) { + var i:int = _mouseEvents.length; + if (_target != null) { + while (--i > -1) { + _target.removeEventListener(_mouseEvents[i], _mouseEventPassthrough); + } + } + _target = value; + if (_target != null) { + i = _mouseEvents.length; + while (--i > -1) { + _target.addEventListener(_mouseEvents[i], _mouseEventPassthrough, false, 0, true); + } + _prevMatrix = null; + _transform = _target.transform; + _bitmapMode = !_bitmapMode; + this.bitmapMode = !_bitmapMode; //forces a refresh (applying the mask, doing an update(), etc.) + } else { + _bounds = new Rectangle(); + } + } + } + + /** x coordinate of the FlexBlitMask (it will automatically be forced to whole pixel values if smoothing is false). **/ + override public function get x():Number { + return super.x; + } + override public function set x(value:Number):void { + if (_smoothing) { + super.x = value; + } else if (value >= 0) { + super.x = (value + 0.5) >> 0; + } else { + super.x = (value - 0.5) >> 0; + } + if (_bitmapMode) { + _render(); + } + } + + /** y coordinate of the FlexBlitMask (it will automatically be forced to whole pixel values if smoothing is false). **/ + override public function get y():Number { + return super.y; + } + override public function set y(value:Number):void { + if (_smoothing) { + super.y = value; + } else if (value >= 0) { + super.y = (value + 0.5) >> 0; + } else { + super.y = (value - 0.5) >> 0; + } + if (_bitmapMode) { + _render(); + } + } + + /** Width of the FlexBlitMask **/ + override public function get width():Number { + return _width; + } + override public function set width(value:Number):void { + setSize(value, _height); + } + + /** Height of the FlexBlitMask **/ + override public function get height():Number { + return _height; + } + override public function set height(value:Number):void { + setSize(_width, value); + } + + /** scaleX (warning: altering the scaleX won't actually change its value - instead, it affects the width property accordingly) **/ + override public function get scaleX():Number { + return 1; + } + override public function set scaleX(value:Number):void { + var oldScaleX:Number = _scaleX; + _scaleX = value; + setSize(_width * (_scaleX / oldScaleX), _height); + } + + /** scaleY (warning: altering the scaleY won't actually change its value - instead, it affects the height property accordingly) **/ + override public function get scaleY():Number { + return 1; + } + override public function set scaleY(value:Number):void { + var oldScaleY:Number = _scaleY; + _scaleY = value; + setSize(_width, _height * (_scaleY / oldScaleY)); + } + + /** Rotation of the FlexBlitMask (always 0 because FlexBlitMasks can't be rotated!) **/ + override public function set rotation(value:Number):void { + if (value != 0) { + throw new Error("Cannot set the rotation of a FlexBlitMask to a non-zero number. FlexBlitMasks should remain unrotated."); + } + } + + /** + * Typically a value between 0 and 1 indicating the target's position in relation to the FlexBlitMask + * on the x-axis where 0 is at the beginning, 0.5 is scrolled to exactly the halfway point, and 1 is scrolled + * all the way. This makes it very easy to animate the scroll. For example, to scroll from beginning to end + * over 5 seconds, you could do:

    + * + * myFlexBlitMask.scrollX = 0;
    + * TweenLite.to(myFlexBlitMask, 5, {scrollX:1}); + *
    + * @see #scrollY + **/ + public function get scrollX():Number { + return (super.x - _bounds.x) / (_bounds.width - _width); + } + public function set scrollX(value:Number):void { + if (_target != null && _target.parent) { + _bounds = _target.getBounds(_target.parent); + var dif:Number; + dif = (super.x - (_bounds.width - _width) * value) - _bounds.x; + _target.x += dif; + _bounds.x += dif; + if (_bitmapMode) { + _render(); + } + } + } + + /** + * Typically a value between 0 and 1 indicating the target's position in relation to the FlexBlitMask + * on the y-axis where 0 is at the beginning, 0.5 is scrolled to exactly the halfway point, and 1 is scrolled + * all the way. This makes it very easy to animate the scroll. For example, to scroll from beginning to end + * over 5 seconds, you could do:

    + * + * myFlexBlitMask.scrollY = 0;
    + * TweenLite.to(myFlexBlitMask, 5, {scrollY:1}); + *
    + * @see #scrollX + **/ + public function get scrollY():Number { + return (super.y - _bounds.y) / (_bounds.height - _height); + } + public function set scrollY(value:Number):void { + if (_target != null && _target.parent) { + _bounds = _target.getBounds(_target.parent); + var dif:Number = (super.y - (_bounds.height - _height) * value) - _bounds.y; + _target.y += dif; + _bounds.y += dif; + if (_bitmapMode) { + _render(); + } + } + } + + /** + * If false (the default), the bitmap (and the FlexBlitMask's x/y coordinates) + * will be rendered only on whole pixels which is faster in terms of processing. However, + * for the best quality and smoothest animation, set smoothing to true. + **/ + public function get smoothing():Boolean { + return _smoothing; + } + public function set smoothing(value:Boolean):void { + if (_smoothing != value) { + _smoothing = value; + _captureTargetBitmap(); + if (_bitmapMode) { + _render(); + } + } + } + + /** + * The ARGB hexadecimal color that should fill the empty areas of the FlexBlitMask. By default, + * it is transparent (0x00000000). If you wanted a red color, for example, it would be + * 0xFFFF0000. + **/ + public function get fillColor():uint { + return _fillColor; + } + public function set fillColor(value:uint):void { + if (_fillColor != value) { + _fillColor = value; + if (_bitmapMode) { + _render(); + } + } + } + + /** + * If true, the bitmap will be wrapped around to the opposite side when it scrolls off + * one of the edges (only in bitmapMode of course), like the FlexBlitMask is filled with a + * grid of bitmap copies of the target. Use the wrapOffsetX and wrapOffsetY + * properties to affect how far apart the copies are from each other. You can reposition the + * target anywhere and FlexBlitMask will align the copies accordingly. + * @see #wrapOffsetX + * @see #wrapOffsetY + **/ + public function get wrap():Boolean { + return _wrap; + } + public function set wrap(value:Boolean):void { + if (_wrap != value) { + _wrap = value; + if (_bitmapMode) { + _render(); + } + } + } + + /** + * When wrap is true, wrapOffsetX controls how many pixels + * along the x-axis the wrapped copies of the bitmap are spaced. It is essentially the gap between + * the copies (although you can use a negative value or 0 to avoid any gap). + * @see #wrap + * @see #wrapOffsetY + **/ + public function get wrapOffsetX():Number { + return _wrapOffsetX; + } + public function set wrapOffsetX(value:Number):void { + if (_wrapOffsetX != value) { + _wrapOffsetX = value; + if (_bitmapMode) { + _render(); + } + } + } + + /** + * When wrap is true, wrapOffsetY controls how many pixels + * along the y-axis the wrapped copies of the bitmap are spaced. It is essentially the gap between + * the copies (although you can use a negative value or 0 to avoid any gap). + * @see #wrap + * @see #wrapOffsetX + **/ + public function get wrapOffsetY():Number { + return _wrapOffsetY; + } + public function set wrapOffsetY(value:Number):void { + if (_wrapOffsetY != value) { + _wrapOffsetY = value; + if (_bitmapMode) { + _render(); + } + } + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/TimelineLite.as b/FairyGUI-as3/src/com/greensock/TimelineLite.as new file mode 100644 index 0000000..78a85ed --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/TimelineLite.as @@ -0,0 +1,1982 @@ +/** + * VERSION: 12.1.5 + * DATE: 2014-07-19 + * AS3 (AS2 version is also available) + * UPDATES AND DOCS AT: http://www.greensock.com/timelinelite/ + **/ +package com.greensock { + import com.greensock.TweenLite; + import com.greensock.core.Animation; + import com.greensock.core.SimpleTimeline; +/** + * TimelineLite is a powerful sequencing tool that acts as a container for tweens and + * other timelines, making it simple to control them as a whole and precisely manage their + * timing in relation to each other. Without TimelineLite (or its big brother TimelineMax), building + * complex sequences would be far more cumbersome because you'd need to use the delay special property + * for everything which would make future edits far more tedious. Here is a basic example of a + * sequence without using TimelineLite (the tedious way): + * +TweenLite.to(mc, 1, {x:100}); +TweenLite.to(mc, 1, {y:50, delay:1}); +TweenLite.to(mc, 1, {alpha:0, delay:2}); + + * The above code animates mc.x to 100, then mc.y to 50, and finally + * mc.alpha to 0 (notice the delay in all but the first tween). But + * imagine if you wanted to increase the duration of the first tween to 1.5 - you'd need to + * adjust every delay thereafter. And what if you want to pause() the whole + * sequence or restart() it or reverse() it on-the-fly or jump to + * a specific point in the whole animation? This becomes quite messy (or flat-out impossible), + * but TimelineLite makes it incredibly simple: + * + * +var tl = new TimelineLite(); +tl.add( TweenLite.to(mc, 1, {x:100}) ); +tl.add( TweenLite.to(mc, 1, {y:50}) ); +tl.add( TweenLite.to(mc, 1, {alpha:0}) ); + +//then later, control the whole thing... +tl.pause(); +tl.resume(); +tl.seek(1.5); +tl.reverse(); +... + + * Or use the convenient to() method and chaining to make it even more concise: + * +var tl = new TimelineLite(); +tl.to(mc, 1, {x:100}).to(mc, 1, {y:50}).to(mc, 1, {alpha:0}); + + * + *

    Now you can adjust any of the tweens without worrying about trickle-down + * changes to delays. Increase the duration of that first tween and everything automatically + * adjusts!

    + * + *

    Here are some other benefits and features of TimelineLite:

    + * + *
      + *
    • Things can overlap on the timeline as much as you want. You have complete control + * over where tweens/timelines are placed. Most other animation tools can only do basic + * one-after-the-other sequencing but can't allow things to overlap. Imagine appending + * a tween that moves an object and you want it to start fading out 0.5 seconds before the + * end of that tween? With TimelineLite it's easy.
    • + * + *
    • Add labels, play(), stop(), seek(), restart(), and even reverse() smoothly anytime.
    • + * + *
    • Nest timelines within timelines as deeply as you want. This means you can modularize + * your code and make it far more efficient. Imagine building your app with common animateIn() + * and animateOut() methods that return a tween or timeline instance, then you can string + * things together like + * myTimeline.add( myObject.animateIn() ).add( myObject.animateOut(), "+=4").add( myObject2.animateIn(), "-=0.5")...
    • + * + *
    • Speed up or slow down the entire timeline with its timeScale() method. + * You can even tween it to gradually speed up or slow down the animation smoothly.
    • + * + *
    • Get or set the progress of the timeline using its progress() method. + * For example, to skip to the halfway point, set myTimeline.progress(0.5);
    • + * + *
    • Tween the time or progress to fastforward/rewind + * the timeline. You could even attach a slider to one of these properties to give the + * user the ability to drag forward/backward through the timeline.
    • + * + *
    • Add onComplete, onStart, onUpdate, and/or onReverseComplete + * callbacks using the constructor's vars object like + * var tl = new TimelineLite({onComplete:myFunction});
    • + * + *
    • Kill the tweens of a particular object inside the timeline with kill(null, target) + * or get the tweens of an object with getTweensOf() or get all the tweens/timelines + * in the timeline with getChildren()
    • + * + *
    • By passing useFrames:true in the vars parameter, you can + * base the timing on frames instead of seconds. Please note, however, that + * the timeline's timing mode dictates its childrens' timing mode as well.
    • + * + *
    • You can export all the tween/timelines from the root (master) timeline anytime into + * a TimelineLite instance using TimelineLite.exportRoot() so that + * you can pause() them all or reverse() or alter their + * timeScale, etc. without affecting tweens/timelines that you create in + * the future. Imagine a game that has all its animation driven by the GreenSock + * Animation Platform and it needs to pause or slow down while a status screen pops up. + * Very easy.
    • + * + *
    • If you need even more features like repeat, repeatDelay, yoyo, currentLabel(), + * getLabelAfter(), getLabelBefore(), addCallback(), removeCallback(), getActive(), + * AS3 event listeners and more, check out TimelineMax which extends TimelineLite.
    • + *
    + * + * + *

    SPECIAL PROPERTIES:

    + *

    You can optionally use the constructor's vars parameter to define any of + * the special properties below (syntax example: new TimelineLite({onComplete:myFunction, delay:2});

    + * + *
      + *
    • delay : Number - + * Amount of delay in seconds (or frames for frames-based tweens) before the timeline should begin.
    • + * + *
    • paused : Boolean - + * If true, the timeline will pause itself immediately upon creation (by default, + * timelines automatically begin playing immediately). If you plan to create a TimelineLite and + * then populate it later (after one or more frames elapse), it is typically best to set + * paused:true and then play() after you populate it.
    • + * + *
    • onComplete : Function - + * A function that should be called when the timeline has completed
    • + * + *
    • onCompleteParams : Array - + * An Array of parameters to pass the onComplete function. For example, + * new TimelineLite({onComplete:myFunction, onCompleteParams:["param1", "param2"]}); + * To self-reference the timeline instance itself in one of the parameters, use "{self}", + * like: onCompleteParams:["{self}", "param2"]
    • + * + *
    • useFrames : Boolean - + * If useFrames is true, the timelines's timing will be + * based on frames instead of seconds because it is intially added to the root + * frames-based timeline. This causes both its duration + * and delay to be based on frames. An animations's timing mode is + * always determined by its parent timeline.
    • + * + *
    • tweens : Array - + * To immediately insert several tweens into the timeline, use the tweens + * special property to pass in an Array of TweenLite/TweenMax/TimelineLite/TimelineMax + * instances. You can use this in conjunction with the align and + * stagger special properties to set up complex sequences with minimal code. + * These values simply get passed to the add() method.
    • + * + *
    • align : String - + * Only used in conjunction with the tweens special property when multiple + * tweens are to be inserted immediately. The value simply gets passed to the + * add() method. The default is "normal". + * Options are: + *
        + *
      • "sequence": aligns the tweens one-after-the-other in a sequence
      • + *
      • "start": aligns the start times of all of the tweens (ignores delays)
      • + *
      • "normal": aligns the start times of all the tweens (honors delays)
      • + *
      + * The align special property does not force all child + * tweens/timelines to maintain relative positioning, so for example, if you use + * "sequence" and then later change the duration of one of the nested tweens, + * it does not force all subsequent timelines to change their position. + * The align special property only affects the alignment of the tweens that are + * initially placed into the timeline through the tweens special property of + * the vars object.
    • + * + *
    • stagger : Number - + * Only used in conjunction with the tweens special property when multiple + * tweens are to be added immediately. It staggers the tweens by a set amount of time + * in seconds (or in frames if useFrames is true). For example, if the + * stagger value is 0.5 and the "align" property is set to "start", the + * second tween will start 0.5 seconds after the first one starts, then 0.5 seconds + * later the third one will start, etc. If the align property is "sequence", + * there would be 0.5 seconds added between each tween. This value simply gets + * passed to the add() method. Default is 0.
    • + * + *
    • onStart : Function - + * A function that should be called when the timeline begins (when its time + * changes from 0 to some other value which can happen more than once if the + * timeline is restarted multiple times).
    • + * + *
    • onStartParams : Array - + * An Array of parameters to pass the onStart function. For example, + * new TimelineLite({onStart:myFunction, onStartParams:["param1", "param2"]}); + * To self-reference the timeline instance itself in one of the parameters, use "{self}", + * like: onStartParams:["{self}", "param2"]
    • + * + *
    • onUpdate : Function - + * A function that should be called every time the timeline updates + * (on every frame while the timeline is active)
    • + * + *
    • onUpdateParams : Array - + * An Array of parameters to pass the onUpdate function. For example, + * new TimelineLite({onUpdate:myFunction, onUpdateParams:["param1", "param2"]}); + * To self-reference the timeline instance itself in one of the parameters, use "{self}", + * like: onUpdateParams:["{self}", "param2"]
    • + * + *
    • onReverseComplete : Function - + * A function that should be called when the timeline has reached its beginning again from the + * reverse direction. For example, if reverse() is called, the timeline will move + * back towards its beginning and when its time reaches 0, onReverseComplete + * will be called. This can also happen if the timeline is placed in a TimelineLite or TimelineMax + * instance that gets reversed and plays the timeline backwards to (or past) the beginning.
    • + * + *
    • onReverseCompleteParams : Array - + * An Array of parameters to pass the onReverseComplete function. For example, + * new TimelineLite({onReverseComplete:myFunction, onReverseCompleteParams:["param1", "param2"]}); + * To self-reference the timeline instance itself in one of the parameters, use "{self}", + * like: onReverseCompleteParams:["{self}", "param2"]
    • + * + *
    • autoRemoveChildren : Boolean - + * If autoRemoveChildren is set to true, as soon as child + * tweens/timelines complete, they will automatically get killed/removed. This is normally + * undesireable because it prevents going backwards in time (like if you want to + * reverse() or set the progress lower, etc.). It can, however, + * improve speed and memory management. The root timelines use autoRemoveChildren:true.
    • + * + *
    • smoothChildTiming : Boolean - + * Controls whether or not child tweens/timelines are repositioned automatically + * (changing their startTime) in order to maintain smooth playback when + * properties are changed on-the-fly. For example, imagine that the timeline's playhead is + * on a child tween that is 75% complete, moving mc.x from 0 to 100 and then that tween's + * reverse() method is called. If smoothChildTiming is false + * (the default except for the root timelines), the tween would flip in place, keeping its + * startTime consistent. Therefore the playhead of the timeline would now be + * at the tween's 25% completion point instead of 75%. Remember, the timeline's playhead + * position and direction are unaffected by child tween/timeline changes. mc.x would jump + * from 75 to 25, but the tween's position in the timeline would remain consistent. However, + * if smoothChildTiming is true, that child tween's + * startTime would be adjusted so that the timeline's playhead intersects + * with the same spot on the tween (75% complete) as it had immediately before + * reverse() was called, thus playback appears perfectly smooth. mc.x + * would still be 75 and it would continue from there as the playhead moves on, but + * since the tween is reversed now mc.x will travel back towards 0 instead of 100. + * Ultimately it's a decision between prioritizing smooth on-the-fly playback + * (true) or consistent position(s) of child tweens/timelines + * (false). + * + * Some examples of on-the-fly changes to child tweens/timelines that could cause their + * startTime to change when smoothChildTiming is true + * are: reversed, timeScale, progress, totalProgress, time, totalTime, delay, pause, + * resume, duration, and totalDuration.
    • + * + *
    + * + * Sample code:+//create the timeline with an onComplete callback that calls myFunction() when the timeline completes +var tl = new TimelineLite({onComplete:myFunction}); + +//add a tween +tl.add( new TweenLite(mc, 1, {x:200, y:100}) ); + +//add another tween at the end of the timeline (makes sequencing easy) +tl.add( new TweenLite(mc, 0.5, {alpha:0}) ); + +//append a tween using the convenience method (shorter syntax) and offset it by 0.5 seconds +tl.to(mc, 1, {rotation:30}, "+=0.5"); + +//reverse anytime +tl.reverse(); + +//Add a "spin" label 3-seconds into the timeline +tl.add("spin", 3); + +//insert a rotation tween at the "spin" label (you could also define the insertion point as the time instead of a label) +tl.add( new TweenLite(mc, 2, {rotation:"360"}), "spin"); + +//go to the "spin" label and play the timeline from there +tl.play("spin"); + +//nest another TimelineLite inside your timeline... +var nested = new TimelineLite(); +nested.to(mc2, 1, {x:200})); +tl.add(nested); + + * + *

    How do timelines work? What are the mechanics like?

    + *

    Every animation (tween and timeline) is placed on a parent timeline (except the 2 root timelines - there's one for normal tweens and another for "useFrames" ones). + * In a sense, they all have their own playheads (that's what its "time" refers to, or "totalTime" which is identical except that it includes repeats and repeatDelays) + * but generally they're not independent because they're sitting on a timeline whose playhead moves. + * When the parent's playhead moves to a new position, it updates the childrens' too.

    + * + *

    When a timeline renders at a particular time, it loops through its children and says "okay, you should render as if your playhead is at ____" and if that child + * is a timeline with children, it does the same to its children, right on down the line.

    + * + *

    The only exception is when the tween/timeline is paused in which case its internal playhead acts like it's "locked". So in that case, + * it's possible (likely in fact) that the child's playhead would not be synced with the parent's. + * When you unpause it (resume()), it essentially picks it up and moves it so that its internal playhead + * is synchronized with wherever the parent's playhead is at that moment, thus things play perfectly smoothly. + * That is, unless the timeline's smoothChildTiming is to false in which case it won't move - + * its startTime will remain locked to where it was.

    + * + *

    So basically, when smoothChildTiming is true, the engine will rearrange things on + * the fly to ensure the playheads line up so that playback is seamless and smooth. The same thing happens when you reverse() + * or alter the timeScale, etc. But sometimes you might not want that behavior - you prefer to have tight + * control over exactly where your tweens line up in the timeline - that's when smoothChildTiming:false is handy.

    + * + *

    One more example: let's say you've got a 10-second tween that's just sitting on the root timeline and you're 2-seconds into the tween. + * Let's assume it started at exactly 0 on the root to make this easy, and then when it's at 2-seconds, you do tween.seek(5). + * The playhead of the root isn't affected - it keeps going exactly as it always did, but in order to make that tween jump to 5 seconds + * and play appropriately, the tween's startTime gets changed to -3. That way, the tween's playhead and the root + * playhead are perfectly aligned.

    + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + * + **/ + public class TimelineLite extends SimpleTimeline { + /** @private **/ + public static const version:String = "12.1.5"; + + /** @private **/ + protected var _labels:Object; + + /** + * Constructor. + * + *

    SPECIAL PROPERTIES

    + *

    The following special properties may be passed in via the constructor's vars parameter, like + * new TimelineLite({paused:true, onComplete:myFunction})

    + * + *
      + *
    • delay : Number - + * Amount of delay in seconds (or frames for frames-based tweens) before the timeline should begin.
    • + * + *
    • paused : Boolean - + * If true, the timeline will pause itself immediately upon creation (by default, + * timelines automatically begin playing immediately). If you plan to create a TimelineLite and + * then populate it later (after one or more frames elapse), it is typically best to set + * paused:true and then play() after you populate it.
    • + * + *
    • onComplete : Function - + * A function that should be called when the timeline has completed
    • + * + *
    • onCompleteParams : Array - + * An Array of parameters to pass the onComplete function. For example, + * new TimelineLite({onComplete:myFunction, onCompleteParams:["param1", "param2"]});
    • + * + *
    • useFrames : Boolean - + * If useFrames is true, the timelines's timing will be + * based on frames instead of seconds because it is intially added to the root + * frames-based timeline. This causes both its duration + * and delay to be based on frames. An animations's timing mode is + * always determined by its parent timeline.
    • + * + *
    • tweens : Array - + * To immediately insert several tweens into the timeline, use the tweens + * special property to pass in an Array of TweenLite/TweenMax/TimelineLite/TimelineMax + * instances. You can use this in conjunction with the align and + * stagger special properties to set up complex sequences with minimal code. + * These values simply get passed to the add() method.
    • + * + *
    • align : String - + * Only used in conjunction with the tweens special property when multiple + * tweens are to be inserted immediately. The value simply gets passed to the + * add() method. The default is "normal". + * Options are: + *
        + *
      • "sequence": aligns the tweens one-after-the-other in a sequence
      • + *
      • "start": aligns the start times of all of the tweens (ignores delays)
      • + *
      • "normal": aligns the start times of all the tweens (honors delays)
      • + *
      + * The align special property does not force all child + * tweens/timelines to maintain relative positioning, so for example, if you use + * "sequence" and then later change the duration of one of the nested tweens, + * it does not force all subsequent timelines to change their position. + * The align special property only affects the alignment of the tweens that are + * initially placed into the timeline through the tweens special property of + * the vars object.
    • + * + *
    • stagger : Number - + * Only used in conjunction with the tweens special property when multiple + * tweens are to be inserted immediately. It staggers the tweens by a set amount of time + * in seconds (or in frames if useFrames is true). For example, if the + * stagger value is 0.5 and the "align" property is set to "start", the + * second tween will start 0.5 seconds after the first one starts, then 0.5 seconds + * later the third one will start, etc. If the align property is "sequence", + * there would be 0.5 seconds added between each tween. This value simply gets + * passed to the add() method. Default is 0.
    • + * + *
    • onStart : Function - + * A function that should be called when the timeline begins (when its time + * changes from 0 to some other value which can happen more than once if the + * timeline is restarted multiple times).
    • + * + *
    • onStartParams : Array - + * An Array of parameters to pass the onStart function. For example, + * new TimelineLite({onStart:myFunction, onStartParams:["param1", "param2"]});
    • + * + *
    • onUpdate : Function - + * A function that should be called every time the timeline updates + * (on every frame while the timeline is active)
    • + * + *
    • onUpdateParams : Array - + * An Array of parameters to pass the onUpdate function. For example, + * new TimelineLite({onUpdate:myFunction, onUpdateParams:["param1", "param2"]});
    • + * + *
    • onReverseComplete : Function - + * A function that should be called when the timeline has reached its beginning again from the + * reverse direction. For example, if reverse() is called, the timeline will move + * back towards its beginning and when its time reaches 0, onReverseComplete + * will be called. This can also happen if the timeline is placed in a TimelineLite or TimelineMax + * instance that gets reversed and plays the timeline backwards to (or past) the beginning.
    • + * + *
    • onReverseCompleteParams : Array - + * An Array of parameters to pass the onReverseComplete function. For example, + * new TimelineLite({onReverseComplete:myFunction, onReverseCompleteParams:["param1", "param2"]});
    • + * + *
    • autoRemoveChildren : Boolean - + * If autoRemoveChildren is set to true, as soon as child + * tweens/timelines complete, they will automatically get killed/removed. This is normally + * undesireable because it prevents going backwards in time (like if you want to + * reverse() or set the progress lower, etc.). It can, however, + * improve speed and memory management. The root timelines use autoRemoveChildren:true.
    • + * + *
    • smoothChildTiming : Boolean - + * Controls whether or not child tweens/timelines are repositioned automatically + * (changing their startTime) in order to maintain smooth playback when + * properties are changed on-the-fly. For example, imagine that the timeline's playhead is + * on a child tween that is 75% complete, moving mc.x from 0 to 100 and then that tween's + * reverse() method is called. If smoothChildTiming is false + * (the default except for the root timelines), the tween would flip in place, keeping its + * startTime consistent. Therefore the playhead of the timeline would now be + * at the tween's 25% completion point instead of 75%. Remember, the timeline's playhead + * position and direction are unaffected by child tween/timeline changes. mc.x would jump + * from 75 to 25, but the tween's position in the timeline would remain consistent. However, + * if smoothChildTiming is true, that child tween's + * startTime would be adjusted so that the timeline's playhead intersects + * with the same spot on the tween (75% complete) as it had immediately before + * reverse() was called, thus playback appears perfectly smooth. mc.x + * would still be 75 and it would continue from there as the playhead moves on, but + * since the tween is reversed now mc.x will travel back towards 0 instead of 100. + * Ultimately it's a decision between prioritizing smooth on-the-fly playback + * (true) or consistent position(s) of child tweens/timelines + * (false). + * + * Some examples of on-the-fly changes to child tweens/timelines that could cause their + * startTime to change when smoothChildTiming is true + * are: reversed, timeScale, progress, totalProgress, time, totalTime, delay, pause, + * resume, duration, and totalDuration.
    • + * + *
    + * + * @param vars optionally pass in special properties like onComplete, onCompleteParams, onUpdate, onUpdateParams, onStart, onStartParams, tweens, align, stagger, delay, useFrames, and/or autoRemoveChildren. + */ + public function TimelineLite(vars:Object=null) { + super(vars); + _labels = {}; + autoRemoveChildren = (this.vars.autoRemoveChildren == true); + smoothChildTiming = (this.vars.smoothChildTiming == true); + _sortChildren = true; + _onUpdate = this.vars.onUpdate; + var val:Object, p:String; + for (p in this.vars) { + val = this.vars[p]; + if (val is Array) if (val.join("").indexOf("{self}") !== -1) { + this.vars[p] = _swapSelfInParams(val as Array); + } + } + if (this.vars.tweens is Array) { + this.add(this.vars.tweens, 0, this.vars.align || "normal", this.vars.stagger || 0); + } + } + + +//---- START CONVENIENCE METHODS -------------------------------------- + + /** + * Adds a TweenLite.to() tween to the end of the timeline (or elsewhere using the "position" parameter) + * - this is a convenience method that accomplishes exactly the same thing as + * add( TweenLite.to(...) ) but with less code. In other + * words, the following two lines produce identical results: + * + * +myTimeline.add( TweenLite.to(mc, 1, {x:100, alpha:0.5}) ); +myTimeline.to(mc, 1, {x:100, alpha:0.5}); + + *

    Keep in mind that you can chain these calls together and use other convenience + * methods like fromTo(), call(), set(), staggerTo(), etc. to build out + * sequences very quickly:

    + * + * +//create a timeline that calls myFunction() when it completes +var tl:TimelineLite = new TimelineLite({onComplete:myFunction}); + +//now we'll use chaining, but break each step onto a different line for readability... +tl.to(mc, 1, {x:100}) //tween mc.x to 100 + .to(mc, 1, {y:50}, "-=0.25") //then tween mc.y to 50, starting the tween 0.25 seconds before the previous one ends + .set(mc, {alpha:0}) //then set mc.alpha to 0.5 immediately + .call(otherFunction) //then call otherFunction() + .staggerTo([mc1, mc2, mc3], 1.5, {rotation:45}, 0.25); //finally tween the rotation of mc1, mc2, and mc3 to 45 and stagger the start times by 0.25 seconds + + *

    If you don't want to append the tween and would rather have precise control + * of the insertion point, you can use the additional position parameter. + * Or use a regular add() like + * myTimeline.add( TweenLite.to(mc, 1, {x:100}), 2.75).

    + * + *

    The 4th parameter is the position which controls the placement of the + * tween in the timeline (by default, it's at the end of the timeline). Use a number to indicate + * an absolute time in terms of seconds (or frames for frames-based timelines), or you can use a string + * with a "+=" or "-=" prefix to offset the insertion point relative to the END of the timeline. + * For example, "+=2" would place the tween 2 seconds after the end, leaving a 2-second gap. + * "-=2" would create a 2-second overlap. You may also use a label like "myLabel" + * to have the tween inserted exactly at the label or combine a label and a relative offset like + * "myLabel+=2" to insert the tween 2 seconds after "myLabel" or "myLabel-=3" + * to insert it 3 seconds before "myLabel". If you define a label that doesn't exist yet, it + * will automatically be added to the end of the timeline before inserting the tween + * which can be quite convenient.

    + * + * +tl.to(mc, 1, {x:100}); //appends to the end of the timeline +tl.to(mc, 1, {x:100}, 2); //appends it at exactly 2 seconds into the timeline (absolute position) +tl.to(mc, 1, {x:100}, "+=2"); //appends it 2 seconds after the end (with a gap of 2 seconds) +tl.to(mc, 1, {x:100}, "myLabel"); //places it at "myLabel" (and if "myLabel" doesn't exist yet, it's added to the end and then the tween is inserted there) +tl.to(mc, 1, {x:100}, "myLabel+=2"); //places it 2 seconds after "myLabel" + + * + * @param target Target object (or array of objects) whose properties the tween affects + * @param duration Duration in seconds (or frames if the timeline is frames-based) + * @param vars An object defining the end value for each property that should be tweened as well as any special properties like onComplete, ease, etc. For example, to tween mc.x to 100 and mc.y to 200 and then call myFunction, do this: myTimeline.to(mc, 1, {x:100, y:200, onComplete:myFunction}). + * @param position Controls the placement of the tween in the timeline (by default, it's the end of the timeline, like "+=0"). Use a number to indicate an absolute time in terms of seconds (or frames for frames-based timelines), or you can use a string with a "+=" or "-=" prefix to offset the insertion point relative to the END of the timeline. For example, "+=2" would place the tween 2 seconds after the end, leaving a 2-second gap. "-=2" would create a 2-second overlap. You may also use a label like "myLabel" to have the tween inserted exactly at the label or combine a label and a relative offset like "myLabel+=2" to insert the tween 2 seconds after "myLabel" or "myLabel-=3" to insert it 3 seconds before "myLabel". If you define a label that doesn't exist yet, it will automatically be added to the end of the timeline before inserting the tween there which can be quite convenient. + * @return self (makes chaining easier) + * @see #from() + * @see #fromTo() + * @see #add() + * @see #remove() + */ + public function to(target:Object, duration:Number, vars:Object, position:*="+=0"):* { + return duration ? add( new TweenLite(target, duration, vars), position) : this.set(target, vars, position); + } + + /** + * Adds a TweenLite.from() tween to the end of the timeline (or elsewhere using the "position" parameter) + * - this is a convenience method that accomplishes exactly the same thing as + * add( TweenLite.from(...) ) but with less code. In other + * words, the following two lines produce identical results: + * + * +myTimeline.add( TweenLite.from(mc, 1, {x:100, alpha:0.5}) ); +myTimeline.from(mc, 1, {x:100, alpha:0.5}); + + *

    Keep in mind that you can chain these calls together and use other convenience + * methods like to(), call(), set(), staggerTo(), etc. to build out + * sequences very quickly:

    + * + * +//create a timeline that calls myFunction() when it completes +var tl:TimelineLite = new TimelineLite({onComplete:myFunction}); + +//now we'll use chaining, but break each step onto a different line for readability... +tl.from(mc, 1, {x:-100}) //tween mc.x from -100 + .to(mc, 1, {y:50}) //then tween mc.y to 50 + .set(mc, {alpha:0}) //then set mc.alpha to 0.5 immediately + .call(otherFunction) //then call otherFunction() + .staggerTo([mc1, mc2, mc3], 1.5, {rotation:45}, 0.25); //finally tween the rotation of mc1, mc2, and mc3 to 45 and stagger the start times by 0.25 seconds + + *

    If you don't want to append the tween and would rather have precise control + * of the insertion point, you can use the additional position parameter. + * Or use a regular add() like + * myTimeline.add( TweenLite.from(mc, 1, {x:100}), 2.75).

    + * + *

    The 4th parameter is the position which controls the placement of the + * tween in the timeline (by default, it's at the end of the timeline). Use a number to indicate + * an absolute time in terms of seconds (or frames for frames-based timelines), or you can use a string + * with a "+=" or "-=" prefix to offset the insertion point relative to the END of the timeline. + * For example, "+=2" would place the tween 2 seconds after the end, leaving a 2-second gap. + * "-=2" would create a 2-second overlap. You may also use a label like "myLabel" + * to have the tween inserted exactly at the label or combine a label and a relative offset like + * "myLabel+=2" to insert the tween 2 seconds after "myLabel" or "myLabel-=3" + * to insert it 3 seconds before "myLabel". If you define a label that doesn't exist yet, it + * will automatically be added to the end of the timeline before inserting the tween + * there which can be quite convenient.

    + * + * +tl.from(mc, 1, {x:100}); //appends to the end of the timeline +tl.from(mc, 1, {x:100}, 2); //appends it at exactly 2 seconds into the timeline (absolute position) +tl.from(mc, 1, {x:100}, "+=2"); //appends it 2 seconds after the end (with a gap of 2 seconds) +tl.from(mc, 1, {x:100}, "myLabel"); //places it at "myLabel" (and if "myLabel" doesn't exist yet, it's added to the end and then the tween is inserted there) +tl.from(mc, 1, {x:100}, "myLabel+=2"); //places it 2 seconds after "myLabel" + + * + *

    NOTE: By default, immediateRender is true in + * from() tweens, meaning that they immediately render their starting state + * regardless of any delay that is specified. You can override this behavior by passing + * immediateRender:false in the vars parameter so that it will + * wait to render until the tween actually begins.

    + * + * @param target Target object (or array of objects) whose properties the tween affects + * @param duration Duration in seconds (or frames if the timeline is frames-based) + * @param vars An object defining the starting value for each property that should be tweened as well as any special properties like onComplete, ease, etc. For example, to tween mc.x from 100 and mc.y from 200 and then call myFunction, do this: myTimeline.from(mc, 1, {x:100, y:200, onComplete:myFunction}); + * @param position Controls the placement of the tween in the timeline (by default, it's the end of the timeline, like "+=0"). Use a number to indicate an absolute time in terms of seconds (or frames for frames-based timelines), or you can use a string with a "+=" or "-=" prefix to offset the insertion point relative to the END of the timeline. For example, "+=2" would place the tween 2 seconds after the end, leaving a 2-second gap. "-=2" would create a 2-second overlap. You may also use a label like "myLabel" to have the tween inserted exactly at the label or combine a label and a relative offset like "myLabel+=2" to insert the tween 2 seconds after "myLabel" or "myLabel-=3" to insert it 3 seconds before "myLabel". If you define a label that doesn't exist yet, it will automatically be added to the end of the timeline before inserting the tween there which can be quite convenient. + * @return self (makes chaining easier) + * @see #to() + * @see #fromTo() + * @see #add() + * @see #remove() + */ + public function from(target:Object, duration:Number, vars:Object, position:*="+=0"):* { + return add( TweenLite.from(target, duration, vars), position); + } + + /** + * Adds a TweenLite.fromTo() tween to the end of the timeline - this is + * a convenience method that accomplishes exactly the same thing as + * add( TweenLite.fromTo(...) ) but with less code. In other + * words, the following two lines produce identical results: + * + * +myTimeline.add( TweenLite.fromTo(mc, 1, {x:0, alpha:1}, {x:100, alpha:0.5}) ); +myTimeline.fromTo(mc, 1, {x:0, alpha:1}, {x:100, alpha:0.5}); + + *

    Keep in mind that you can chain these calls together and use other convenience + * methods like to(), call(), set(), staggerTo(), etc. to build out + * sequences very quickly:

    + * + * +//create a timeline that calls myFunction() when it completes +var tl:TimelineLite = new TimelineLite({onComplete:myFunction}); + +//now we'll use chaining, but break each step onto a different line for readability... +tl.fromTo(mc, 1, {x:0}, {x:-100}) //tween mc.x from 0 to -100 + .to(mc, 1, {y:50}, "-=0.25") //then tween mc.y to 50, starting it 0.25 seconds before the previous tween ends + .set(mc, {alpha:0}) //then set mc.alpha to 0.5 immediately + .call(otherFunction) //then call otherFunction() + .staggerTo([mc1, mc2, mc3], 1.5, {rotation:45}, 0.25); //finally tween the rotation of mc1, mc2, and mc3 to 45 and stagger the start times by 0.25 seconds + + *

    If you don't want to append the tween and would rather have precise control + * of the insertion point, you can use the additional position parameter. + * Or use a regular add() like + * myTimeline.add( TweenLite.fromTo(mc, 1, {x:0}, {x:100}), 2.75).

    + * + *

    The 4th parameter is the position which controls the placement of the + * tween in the timeline (by default, it's at the end of the timeline). Use a number to indicate + * an absolute time in terms of seconds (or frames for frames-based timelines), or you can use a string + * with a "+=" or "-=" prefix to offset the insertion point relative to the END of the timeline. + * For example, "+=2" would place the tween 2 seconds after the end, leaving a 2-second gap. + * "-=2" would create a 2-second overlap. You may also use a label like "myLabel" + * to have the tween inserted exactly at the label or combine a label and a relative offset like + * "myLabel+=2" to insert the tween 2 seconds after "myLabel" or "myLabel-=3" + * to insert it 3 seconds before "myLabel". If you define a label that doesn't exist yet, it + * will automatically be added to the end of the timeline before inserting the tween + * there which can be quite convenient.

    + * + * +tl.fromTo(mc, 1, {x:0}, {x:100}); //appends to the end of the timeline +tl.fromTo(mc, 1, {x:0}, {x:100}, 2); //appends it at exactly 2 seconds into the timeline (absolute position) +tl.fromTo(mc, 1, {x:0}, {x:100}, "+=2"); //appends it 2 seconds after the end (with a gap of 2 seconds) +tl.fromTo(mc, 1, {x:0}, {x:100}, "myLabel"); //places it at "myLabel" (and if "myLabel" doesn't exist yet, it's added to the end and then the tween is inserted there) +tl.fromTo(mc, 1, {x:0}, {x:100}, "myLabel+=2"); //places it 2 seconds after "myLabel" + + *

    NOTE: by default, immediateRender is true in + * fromTo() tweens, meaning that they immediately render their starting state + * regardless of any delay that is specified. This is done for convenience because it is + * often the preferred behavior when setting things up on the screen to animate into place, but + * you can override this behavior by passing immediateRender:false in the + * fromVars or toVars parameter so that it will wait to render + * the starting values until the tweens actually begin.

    + * + * @param target Target object (or array of objects) whose properties the tween affects + * @param duration Duration in seconds (or frames if the timeline is frames-based) + * @param fromVars An object defining the starting value for each property that should be tweened. For example, to tween mc.x from 100 and mc.y from 200, fromVars would look like this: {x:100, y:200}. + * @param toVars An object defining the end value for each property that should be tweened as well as any special properties like onComplete, ease, etc. For example, to tween mc.x from 0 to 100 and mc.y from 0 to 200 and then call myFunction, do this: myTimeline.fromTo(mc, 1, {x:0, y:0}, {x:100, y:200, onComplete:myFunction}); + * @param position Controls the placement of the tween in the timeline (by default, it's the end of the timeline, like "+=0"). Use a number to indicate an absolute time in terms of seconds (or frames for frames-based timelines), or you can use a string with a "+=" or "-=" prefix to offset the insertion point relative to the END of the timeline. For example, "+=2" would place the tween 2 seconds after the end, leaving a 2-second gap. "-=2" would create a 2-second overlap. You may also use a label like "myLabel" to have the tween inserted exactly at the label or combine a label and a relative offset like "myLabel+=2" to insert the tween 2 seconds after "myLabel" or "myLabel-=3" to insert it 3 seconds before "myLabel". If you define a label that doesn't exist yet, it will automatically be added to the end of the timeline before inserting the tween there which can be quite convenient. + * @return self (makes chaining easier) + * @see #to() + * @see #from() + * @see #add() + * @see #remove() + */ + public function fromTo(target:Object, duration:Number, fromVars:Object, toVars:Object, position:*="+=0"):* { + return duration ? add(TweenLite.fromTo(target, duration, fromVars, toVars), position) : this.set(target, toVars, position); + } + + /** + * Tweens an array of targets to a common set of destination values, but staggers their + * start times by a specified amount of time, creating an evenly-spaced sequence with a + * surprisingly small amount of code. For example, let's say you have an array containing + * references to a bunch of text fields that you'd like to fall away and fade out in a + * staggered fashion with 0.2 seconds between each tween's start time: + * + * +var textFields = [tf1, tf2, tf3, tf4, tf5]; +myTimeline.staggerTo(textFields, 1, {y:"+=150", ease:Cubic.easeIn}, 0.2); + + *

    staggerTo() simply loops through the targets array and creates + * a to() tween for each object and then inserts it at the appropriate place on a + * new TimelineLite instance whose onComplete corresponds to the onCompleteAll + * (if you define one) and then appends that TimelineLite to the timeline (as a nested child).

    + * + *

    Note that if you define an onComplete (or any callback for that matter) + * in the vars parameter, it will be called for each tween rather than the whole + * sequence. This can be very useful, but if you want to call a function after the entire + * sequence of tweens has completed, use the onCompleteAll parameter (the 6th parameter).

    + * + *

    The 5th parameter is the position which controls the placement of the + * tweens in the timeline (by default, it's at the end of the timeline). Use a number to indicate + * an absolute time in terms of seconds (or frames for frames-based timelines), or you can use a string + * with a "+=" or "-=" prefix to offset the insertion point relative to the END of the timeline. + * For example, "+=2" would place the first tween 2 seconds after the end, leaving a 2-second gap. + * "-=2" would create a 2-second overlap. You may also use a label like "myLabel" + * to have the first tween inserted exactly at the label or combine a label and a relative offset like + * "myLabel+=2" to insert the first tween 2 seconds after "myLabel" or "myLabel-=3" + * to insert it 3 seconds before "myLabel". If you define a label that doesn't exist yet, it + * will automatically be added to the end of the timeline before inserting the tweens + * there which can be quite convenient.

    + * + * +tl.staggerTo(myArray, 1, {x:100}, 0.25); //appends to the end of the timeline +tl.staggerTo(myArray, 1, {x:100}, 0.25, 2); //appends at exactly 2 seconds into the timeline (absolute position) +tl.staggerTo(myArray, 1, {x:100}, 0.25, "+=2"); //appends 2 seconds after the end (with a gap of 2 seconds) +tl.staggerTo(myArray, 1, {x:100}, 0.25, "myLabel"); //places at "myLabel" (and if "myLabel" doesn't exist yet, it's added to the end and then the tweens are inserted there) +tl.staggerTo(myArray, 1, {x:100}, 0.25, "myLabel+=2"); //places 2 seconds after "myLabel" + + * + *

    JavaScript and AS2 note: - Due to the way JavaScript and AS2 don't + * maintain scope (what "this" refers to, or the context) in function calls, + * it can be useful to define the scope specifically. Therefore, in the JavaScript and AS2 + * versions accept an extra (8th) parameter for onCompleteAllScope.

    + * + * @param targets An array of target objects whose properties should be affected + * @param duration Duration in seconds (or frames if the timeline is frames-based) + * @param vars An object defining the end value for each property that should be tweened as well as any special properties like ease. For example, to tween x to 100 and y to 200 for mc1, mc2, and mc3, staggering their start time by 0.25 seconds and then call myFunction when they last one has finished, do this: myTimeline.staggerTo([mc1, mc2, mc3], 1, {x:100, y:200}, 0.25, 0, null, myFunction}). + * @param stagger Amount of time in seconds (or frames if the timeline is frames-based) to stagger the start time of each tween. For example, you might want to have 5 objects move down 100 pixels while fading out, and stagger the start times by 0.2 seconds - you could do: myTimeline.staggerTo([mc1, mc2, mc3, mc4, mc5], 1, {y:"+=100", alpha:0}, 0.2). + * @param position Controls the placement of the first tween in the timeline (by default, it's the end of the timeline, like "+=0"). Use a number to indicate an absolute time in terms of seconds (or frames for frames-based timelines), or you can use a string with a "+=" or "-=" prefix to offset the insertion point relative to the END of the timeline. For example, "+=2" would place the tween 2 seconds after the end, leaving a 2-second gap. "-=2" would create a 2-second overlap. You may also use a label like "myLabel" to have the tween inserted exactly at the label or combine a label and a relative offset like "myLabel+=2" to insert the tween 2 seconds after "myLabel" or "myLabel-=3" to insert it 3 seconds before "myLabel". If you define a label that doesn't exist yet, it will automatically be added to the end of the timeline before inserting the tween there which can be quite convenient. + * @param onCompleteAll A function to call as soon as the entire sequence of tweens has completed + * @param onCompleteAllParams An array of parameters to pass the onCompleteAll method. + * @return self (makes chaining easier) + * @see #staggerFrom() + * @see #staggerFromTo() + */ + public function staggerTo(targets:Array, duration:Number, vars:Object, stagger:Number, position:*="+=0", onCompleteAll:Function=null, onCompleteAllParams:Array=null):* { + var tl:TimelineLite = new TimelineLite({onComplete:onCompleteAll, onCompleteParams:onCompleteAllParams, smoothChildTiming:this.smoothChildTiming}); + for (var i:int = 0; i < targets.length; i++) { + if (vars.startAt != null) { + vars.startAt = _copy(vars.startAt); + } + tl.to(targets[i], duration, _copy(vars), i * stagger); + } + return add(tl, position); + } + + /** + * Tweens an array of targets from a common set of destination values (using the current + * values as the destination), but staggers their start times by a specified amount of time, + * creating an evenly-spaced sequence with a surprisingly small amount of code. For example, + * let's say you have an array containing references to a bunch of text fields that you'd + * like to drop into place while fading in, all in a staggered fashion with 0.2 seconds + * between each tween's start time: + * + * +var textFields = [tf1, tf2, tf3, tf4, tf5]; +myTimeline.staggerFrom(textFields, 1, {y:"+=150"}, 0.2); + + *

    staggerFrom() simply loops through the targets array and creates + * a from() tween for each object and then inserts it at the appropriate place on a + * new TimelineLite instance whose onComplete corresponds to the onCompleteAll + * (if you define one) and then appends that TimelineLite to the timeline (as a nested child).

    + * + *

    Note that if you define an onComplete (or any callback for that matter) + * in the vars parameter, it will be called for each tween rather than the whole + * sequence. This can be very useful, but if you want to call a function after the entire + * sequence of tweens has completed, use the onCompleteAll parameter (the 6th parameter).

    + * + *

    The 5th parameter is the position which controls the placement of the + * tweens in the timeline (by default, it's at the end of the timeline). Use a number to indicate + * an absolute time in terms of seconds (or frames for frames-based timelines), or you can use a string + * with a "+=" or "-=" prefix to offset the insertion point relative to the END of the timeline. + * For example, "+=2" would place the first tween 2 seconds after the end, leaving a 2-second gap. + * "-=2" would create a 2-second overlap. You may also use a label like "myLabel" + * to have the first tween inserted exactly at the label or combine a label and a relative offset like + * "myLabel+=2" to insert the first tween 2 seconds after "myLabel" or "myLabel-=3" + * to insert it 3 seconds before "myLabel". If you define a label that doesn't exist yet, it + * will automatically be added to the end of the timeline before inserting the tweens + * there which can be quite convenient.

    + * + * +tl.staggerFrom(myArray, 1, {x:100}, 0.25); //appends to the end of the timeline +tl.staggerFrom(myArray, 1, {x:100}, 0.25, 2); //appends at exactly 2 seconds into the timeline (absolute position) +tl.staggerFrom(myArray, 1, {x:100}, 0.25, "+=2"); //appends 2 seconds after the end (with a gap of 2 seconds) +tl.staggerFrom(myArray, 1, {x:100}, 0.25, "myLabel"); //places at "myLabel" (and if "myLabel" doesn't exist yet, it's added to the end and then the tweens are inserted there) +tl.staggerFrom(myArray, 1, {x:100}, 0.25, "myLabel+=2"); //places 2 seconds after "myLabel" + + * + *

    By default, immediateRender is true in + * from() tweens, meaning that they immediately render their starting state + * regardless of any delay that is specified. You can override this behavior by passing + * immediateRender:false in the vars parameter so that it will + * wait to render until the tween actually begins.

    + * + *

    JavaScript and AS2 note: - Due to the way JavaScript and AS2 don't + * maintain scope (what "this" refers to, or the context) in function calls, + * it can be useful to define the scope specifically. Therefore, in the JavaScript and AS2 + * versions accept an extra (8th) parameter for onCompleteAllScope.

    + * + * @param targets An array of target objects whose properties should be affected + * @param duration Duration in seconds (or frames if the timeline is frames-based) + * @param vars An object defining the beginning value for each property that should be tweened as well as any special properties like ease. For example, to tween x from 100 and y from 200 for mc1, mc2, and mc3, staggering their start time by 0.25 seconds and then call myFunction when they last one has finished, do this: myTimeline.staggerFrom([mc1, mc2, mc3], 1, {x:100, y:200}, 0.25, 0, null, myFunction}). + * @param stagger Amount of time in seconds (or frames if the timeline is frames-based) to stagger the start time of each tween. For example, you might want to have 5 objects move down 100 pixels while fading out, and stagger the start times by 0.2 seconds - you could do: myTimeline.staggerTo([mc1, mc2, mc3, mc4, mc5], 1, {y:"+=100", alpha:0}, 0.2). + * @param position Controls the placement of the first tween in the timeline (by default, it's the end of the timeline, like "+=0"). Use a number to indicate an absolute time in terms of seconds (or frames for frames-based timelines), or you can use a string with a "+=" or "-=" prefix to offset the insertion point relative to the END of the timeline. For example, "+=2" would place the tween 2 seconds after the end, leaving a 2-second gap. "-=2" would create a 2-second overlap. You may also use a label like "myLabel" to have the tween inserted exactly at the label or combine a label and a relative offset like "myLabel+=2" to insert the tween 2 seconds after "myLabel" or "myLabel-=3" to insert it 3 seconds before "myLabel". If you define a label that doesn't exist yet, it will automatically be added to the end of the timeline before inserting the tween there which can be quite convenient. + * @param onCompleteAll A function to call as soon as the entire sequence of tweens has completed + * @param onCompleteAllParams An array of parameters to pass the onCompleteAll method. + * @return self (makes chaining easier) + * @see #staggerTo() + * @see #staggerFromTo() + */ + public function staggerFrom(targets:Array, duration:Number, vars:Object, stagger:Number=0, position:*="+=0", onCompleteAll:Function=null, onCompleteAllParams:Array=null):* { + vars = _prepVars(vars); + if (!("immediateRender" in vars)) { + vars.immediateRender = true; + } + vars.runBackwards = true; + return staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams); + } + + /** + * Tweens an array of targets from and to a common set of values, but staggers their + * start times by a specified amount of time, creating an evenly-spaced sequence with a + * surprisingly small amount of code. For example, let's say you have an array containing + * references to a bunch of text fields that you'd like to fade from alpha:1 to alpha:0 in a + * staggered fashion with 0.2 seconds between each tween's start time: + * + * +var textFields = [tf1, tf2, tf3, tf4, tf5]; +myTimeline.staggerFromTo(textFields, 1, {alpha:1}, {alpha:0}, 0.2); + + *

    staggerFromTo() simply loops through the targets array and creates + * a fromTo() tween for each object and then inserts it at the appropriate place on + * a new TimelineLite instance whose onComplete corresponds to the onCompleteAll + * (if you define one) and then appends that TimelineLite to the timeline (as a nested child).

    + * + *

    Note that if you define an onComplete (or any callback for that matter) + * in the vars parameter, it will be called for each tween rather than the whole + * sequence. This can be very useful, but if you want to call a function after the entire + * sequence of tweens has completed, use the onCompleteAll parameter (the 7th parameter).

    + * + *

    The 6th parameter is the position which controls the placement of the + * tweens in the timeline (by default, it's at the end of the timeline). Use a number to indicate + * an absolute time in terms of seconds (or frames for frames-based timelines), or you can use a string + * with a "+=" or "-=" prefix to offset the insertion point relative to the END of the timeline. + * For example, "+=2" would place the first tween 2 seconds after the end, leaving a 2-second gap. + * "-=2" would create a 2-second overlap. You may also use a label like "myLabel" + * to have the first tween inserted exactly at the label or combine a label and a relative offset like + * "myLabel+=2" to insert the first tween 2 seconds after "myLabel" or "myLabel-=3" + * to insert it 3 seconds before "myLabel". If you define a label that doesn't exist yet, it + * will automatically be added to the end of the timeline before inserting the tweens + * there which can be quite convenient.

    + * + * +tl.staggerFromTo(myArray, 1, {x:0}, {x:100}, 0.25); //appends to the end of the timeline +tl.staggerFromTo(myArray, 1, {x:0}, {x:100}, 0.25, 2); //appends at exactly 2 seconds into the timeline (absolute position) +tl.staggerFromTo(myArray, 1, {x:0}, {x:100}, 0.25, "+=2"); //appends 2 seconds after the end (with a gap of 2 seconds) +tl.staggerFromTo(myArray, 1, {x:0}, {x:100}, 0.25, "myLabel"); //places at "myLabel" (and if "myLabel" doesn't exist yet, it's added to the end and then the tweens are inserted there) +tl.staggerFromTo(myArray, 1, {x:0}, {x:100}, 0.25, "myLabel+=2"); //places 2 seconds after "myLabel" + + * + *

    JavaScript and AS2 note: - Due to the way JavaScript and AS2 don't + * maintain scope (what "this" refers to, or the context) in function calls, + * it can be useful to define the scope specifically. Therefore, in the JavaScript and AS2 + * versions accept an extra (9th) parameter for onCompleteAllScope.

    + * + * @param targets An array of target objects whose properties should be affected + * @param duration Duration in seconds (or frames if the timeline is frames-based) + * @param fromVars An object defining the starting value for each property that should be tweened. For example, to tween x from 100 and y from 200, fromVars would look like this: {x:100, y:200}. + * @param toVars An object defining the end value for each property that should be tweened as well as any special properties like ease. For example, to tween x from 0 to 100 and y from 0 to 200, staggering the start times by 0.2 seconds and then call myFunction when they all complete, do this: myTimeline.staggerFromTo([mc1, mc2, mc3], 1, {x:0, y:0}, {x:100, y:200}, 0.2, 0, null, myFunction}); + * @param stagger Amount of time in seconds (or frames if the timeline is frames-based) to stagger the start time of each tween. For example, you might want to have 5 objects move down 100 pixels while fading out, and stagger the start times by 0.2 seconds - you could do: myTimeline.staggerTo([mc1, mc2, mc3, mc4, mc5], 1, {y:"+=100", alpha:0}, 0.2). + * @param position Controls the placement of the first tween in the timeline (by default, it's the end of the timeline, like "+=0"). Use a number to indicate an absolute time in terms of seconds (or frames for frames-based timelines), or you can use a string with a "+=" or "-=" prefix to offset the insertion point relative to the END of the timeline. For example, "+=2" would place the tween 2 seconds after the end, leaving a 2-second gap. "-=2" would create a 2-second overlap. You may also use a label like "myLabel" to have the tween inserted exactly at the label or combine a label and a relative offset like "myLabel+=2" to insert the tween 2 seconds after "myLabel" or "myLabel-=3" to insert it 3 seconds before "myLabel". If you define a label that doesn't exist yet, it will automatically be added to the end of the timeline before inserting the tween there which can be quite convenient. + * @param onCompleteAll A function to call as soon as the entire sequence of tweens has completed + * @param onCompleteAllParams An array of parameters to pass the onCompleteAll method. + * @return self (makes chaining easier) + * @see #staggerTo() + * @see #staggerFrom() + */ + public function staggerFromTo(targets:Array, duration:Number, fromVars:Object, toVars:Object, stagger:Number=0, position:*="+=0", onCompleteAll:Function=null, onCompleteAllParams:Array=null):* { + toVars = _prepVars(toVars); + fromVars = _prepVars(fromVars); + toVars.startAt = fromVars; + toVars.immediateRender = (toVars.immediateRender != false && fromVars.immediateRender != false); + return staggerTo(targets, duration, toVars, stagger, position, onCompleteAll, onCompleteAllParams); + } + + /** + * Adds a callback to the end of the timeline (or elsewhere using the "position" parameter) + * - this is a convenience method that accomplishes exactly the same thing as + * add( TweenLite.delayedCall(...) ) but with less code. In other + * words, the following two lines produce identical results: + * + * +myTimeline.add( TweenLite.delayedCall(0, myFunction, ["param1", "param2"]) ); +myTimeline.call(myFunction, ["param1", "param2"]); + + *

    This is different than using the onComplete special property + * on the TimelineLite itself because once you append the callback, it stays in + * place whereas an onComplete is always called at the very end of + * the timeline. For example, if a timeline is populated with a 1-second tween and + * then you call(myFunction), it is placed at the 1-second spot. Then + * if you append another 1-second tween, the timeline's duration will now be 2 seconds + * but the myFunction callback will still be called at the 1-second spot. An + * onComplete would be called at the end (2 seconds).

    + * + *

    Keep in mind that you can chain these calls together and use other convenience + * methods like to(), fromTo(), set(), staggerTo(), etc. to build out + * sequences very quickly:

    + * + * +//create a timeline that calls myFunction() when it completes +var tl:TimelineLite = new TimelineLite({onComplete:myFunction}); + +//now we'll use chaining, but break each step onto a different line for readability... +tl.to(mc, 1, {x:100}) //tween mc.x to 100 + .call(myCallback) //then call myCallback() + .set(mc, {alpha:0}) //then set mc.alpha to 0.5 immediately + .call(otherFunction, ["param1", "param2"]) //then call otherFunction("param1", "param2") + .staggerTo([mc1, mc2, mc3], 1.5, {rotation:45}, 0.25); //finally tween the rotation of mc1, mc2, and mc3 to 45 and stagger the start times by 0.25 seconds + + * + *

    The 3rd parameter is the position which controls the placement of the + * tween in the timeline (by default, it's at the end of the timeline). Use a number to indicate + * an absolute time in terms of seconds (or frames for frames-based timelines), or you can use a string + * with a "+=" or "-=" prefix to offset the insertion point relative to the END of the timeline. + * For example, "+=2" would place the tween 2 seconds after the end, leaving a 2-second gap. + * "-=2" would create a 2-second overlap. You may also use a label like "myLabel" + * to have the tween inserted exactly at the label or combine a label and a relative offset like + * "myLabel+=2" to insert the tween 2 seconds after "myLabel" or "myLabel-=3" + * to insert it 3 seconds before "myLabel". If you define a label that doesn't exist yet, it + * will automatically be added to the end of the timeline before inserting the tween + * which can be quite convenient.

    + * + * +tl.call(func, ["param1"]); //appends to the end of the timeline +tl.call(func, ["param1"], 2); //appends it at exactly 2 seconds into the timeline (absolute position) +tl.call(func, ["param1"], "+=2"); //appends it 2 seconds after the end (with a gap of 2 seconds) +tl.call(func, ["param1"], "myLabel"); //places it at "myLabel" (and if "myLabel" doesn't exist yet, it's added to the end and then the tween is inserted there) +tl.call(func, ["param1"], "myLabel+=2"); //places it 2 seconds after "myLabel" + + * + *

    JavaScript and AS2 note: - Due to the way JavaScript and AS2 don't + * maintain scope (what "this" refers to, or the context) in function calls, + * it can be useful to define the scope specifically. Therefore, in the JavaScript and AS2 + * versions the 3rd parameter is scope, but that parameter is omitted in the AS3 version.

    + * + * @param callback Function to call + * @param params An Array of parameters to pass the function. + * @param position Controls the placement of the callback in the timeline (by default, it's the end of the timeline, like "+=0"). Use a number to indicate an absolute time in terms of seconds (or frames for frames-based timelines), or you can use a string with a "+=" or "-=" prefix to offset the insertion point relative to the END of the timeline. For example, "+=2" would place the callback 2 seconds after the end, leaving a 2-second gap. "-=2" would create a 2-second overlap. You may also use a label like "myLabel" to have the callback inserted exactly at the label or combine a label and a relative offset like "myLabel+=2" to insert the callback 2 seconds after "myLabel" or "myLabel-=3" to insert it 3 seconds before "myLabel". If you define a label that doesn't exist yet, it will automatically be added to the end of the timeline before inserting the callback there which can be quite convenient. + * @return self (makes chaining easier) + * @see #add() + * @see #remove() + */ + public function call(callback:Function, params:Array=null, position:*="+=0"):* { + return add( TweenLite.delayedCall(0, callback, params), position); + } + + /** + * Adds a zero-duration tween to the end of the timeline (or elsewhere using the "position" parameter) + * that sets values immediately (when the virtual playhead reaches that position + * on the timeline) - this is a convenience method that accomplishes exactly + * the same thing as add( TweenLite.to(target, 0, {...}) ) but + * with less code. In other words, the following two lines produce identical results: + * + * +myTimeline.add( TweenLite.to(mc, 0, {x:100, alpha:0.5, immediateRender:false}) ); +myTimeline.set(mc, {x:100, alpha:0.5}); + + *

    Keep in mind that you can chain these calls together and use other convenience + * methods like to(), call(), fromTo(), staggerTo(), etc. to build out + * sequences very quickly:

    + * + * +//create a timeline that calls myFunction() when it completes +var tl:TimelineLite = new TimelineLite({onComplete:myFunction}); + +//now we'll use chaining, but break each step onto a different line for readability... +tl.to(mc, 1, {x:100}) //tween mc.x to 100 + .set(mc, {alpha:0}) //then set mc.alpha to 0.5 immediately + .to(mc, 1, {y:50}) //then tween mc.y to 50 + .call(otherFunction) //then call otherFunction() + .staggerTo([mc1, mc2, mc3], 1.5, {rotation:45}, 0.25); //finally tween the rotation of mc1, mc2, and mc3 to 45 and stagger the start times by 0.25 seconds + + *

    The 3rd parameter is the position which controls the placement of the + * tween in the timeline (by default, it's at the end of the timeline). Use a number to indicate + * an absolute time in terms of seconds (or frames for frames-based timelines), or you can use a string + * with a "+=" or "-=" prefix to offset the insertion point relative to the END of the timeline. + * For example, "+=2" would place the tween 2 seconds after the end, leaving a 2-second gap. + * "-=2" would create a 2-second overlap. You may also use a label like "myLabel" + * to have the tween inserted exactly at the label or combine a label and a relative offset like + * "myLabel+=2" to insert the tween 2 seconds after "myLabel" or "myLabel-=3" + * to insert it 3 seconds before "myLabel". If you define a label that doesn't exist yet, it + * will automatically be added to the end of the timeline before inserting the tween + * there which can be quite convenient.

    + * + * +tl.set(mc, {x:100}); //appends to the end of the timeline +tl.set(mc, {x:100}, 2); //appends it at exactly 2 seconds into the timeline (absolute position) +tl.set(mc, {x:100}, "+=2"); //appends it 2 seconds after the end (with a gap of 2 seconds) +tl.set(mc, {x:100}, "myLabel"); //places it at "myLabel" (and if "myLabel" doesn't exist yet, it's added to the end and then the tween is inserted there) +tl.set(mc, {x:100}, "myLabel+=2"); //places it 2 seconds after "myLabel" + + * + * @param target Target object (or array of objects) whose properties will be set. + * @param vars An object defining the value to which each property should be set. For example, to set mc.x to 100 and mc.y to 200, do this: myTimeline.set(mc, {x:100, y:200}); + * @param position Controls the placement of the zero-duration tween in the timeline (by default, it's the end of the timeline, like "+=0"). Use a number to indicate an absolute time in terms of seconds (or frames for frames-based timelines), or you can use a string with a "+=" or "-=" prefix to offset the insertion point relative to the END of the timeline. For example, "+=2" would place the tween 2 seconds after the end, leaving a 2-second gap. "-=2" would create a 2-second overlap. You may also use a label like "myLabel" to have the tween inserted exactly at the label or combine a label and a relative offset like "myLabel+=2" to insert the tween 2 seconds after "myLabel" or "myLabel-=3" to insert it 3 seconds before "myLabel". If you define a label that doesn't exist yet, it will automatically be added to the end of the timeline before inserting the tween there which can be quite convenient. + * @return self (makes chaining easier) + * @see #to() + * @see #add() + * @see #remove() + */ + public function set(target:Object, vars:Object, position:*="+=0"):* { + position = _parseTimeOrLabel(position, 0, true); + vars = _prepVars(vars); + if (vars.immediateRender == null) { + vars.immediateRender = (position === _time && !_paused); + } + return add( new TweenLite(target, 0, vars), position); + } + + /** + * Inserts a special callback that pauses playback of the timeline at a + * particular time or label. This method is more accurate than using a simple callback of your own because + * it ensures that even if the virtual playhead had moved slightly beyond the pause position, it'll get moved + * back to precisely the correct position. + * + *

    Remember, the virtual playhead moves to a new position on each tick (frame) of the core timing mechanism, + * so it is possible, for example for it to be at 0.99 and then the next render happens at 1.01, so if your + * callback was at exactly 1 second, the playhead would (in this example) move slightly past where you wanted to + * pause. Then, if you reverse(), it would run into that callback again and get paused almost immediately. However, + * if you use the addPause() method, it will calibrate things so that when the callback is + * hit, it'll move the playhead back to EXACTLY where it should be. Thus, if you reverse() + * it won't run into the same callback again.

    + * + * +//insert a pause at exactly 2 seconds into the timeline +timeline.addPause(2); + +//insert a pause at "yourLabel" +timeline.addPause("yourLabel"); + +//insert a pause 3 seconds after "yourLabel" and when that pause occurs, call yourFunction +timeline.addPause("yourLabel+=3", yourFunction); + +//insert a pause at exactly 4 seconds and then call yourFunction and pass it 2 parameters, "param1" and "param2" +timeline.addPause(4, yourFunction, ["param1", "param2"]); + + * + *

    The special callback is just a zero-duration tween that utilizes an onComplete, so technically + * this callback is just like any other, and it is considered a child of the timeline.

    + * + * @param position Controls the placement of the pause in the timeline (by default, it's the end of the timeline, like "+=0"). Use a number to indicate an absolute time in terms of seconds (or frames for frames-based timelines), or you can use a string with a "+=" or "-=" prefix to offset the insertion point relative to the END of the timeline. For example, "+=2" would place the tween 2 seconds after the end, leaving a 2-second gap. "-=2" would create a 2-second overlap. You may also use a label like "myLabel" to have the tween inserted exactly at the label or combine a label and a relative offset like "myLabel+=2" to insert the tween 2 seconds after "myLabel" or "myLabel-=3" to insert it 3 seconds before "myLabel". If you define a label that doesn't exist yet, it will automatically be added to the end of the timeline before inserting the tween there which can be quite convenient. + * @param callback An optional callback that should be called immediately after the timeline is paused. + * @param params An optional array of parameters to pass the callback. + * @return self (makes chaining easier) + * @see #call() + */ + public function addPause(position:*="+=0", callback:Function=null, params:Array=null):* { + return call(_pauseCallback, ["{self}", callback, params], position); + } + + /** @private **/ + protected function _pauseCallback(tween:TweenLite, callback:Function=null, params:Array=null):void { + pause(tween._startTime); + if (callback != null) { + callback.apply(null, params); + } + } + + /** @private **/ + protected static function _prepVars(vars:Object):Object { //to accommodate TweenLiteVars and TweenMaxVars instances for strong data typing and code hinting + return (vars._isGSVars) ? vars.vars : vars; + } + + /** @private **/ + protected static function _copy(vars:Object):Object { + var copy:Object = {}, p:String; + for (p in vars) { + copy[p] = vars[p]; + } + return copy; + } + + + /** + * Seamlessly transfers all tweens, timelines, and [optionally] delayed calls from the root + * timeline into a new TimelineLite so that you can perform advanced tasks on a seemingly global + * basis without affecting tweens/timelines that you create after the export. For example, imagine + * a game that uses the GreenSock Animation Platform for all of its animations and at some point + * during the game, you want to slow everything down to a stop (tweening the + * timeScale) while at the same time animating a new popup window into place: + * + * +var tl = TimelineLite.exportRoot(); +TweenLite.to(tl, 0.5, {timeScale:0}); + +//this tween isn't affected because it's created after the export. +TweenLite.fromTo(myWindow, 1, {scaleX:0, scaleY:0}, {scaleX:1, scaleY:1}); + + *

    You could then re-animate things when you're ready by tweening the timeScale + * back to 1. Or you could use exportRoot() to collect all the animations and + * pause() them and then animate the popup screen (or whatever). Then resume() + * that instance or even reverse().

    + * + *

    You can exportRoot() as many times as you want; all it does is wrap all the + * loose tweens/timelines/delayedCalls into a TimelineLite which itself gets placed onto the root, + * so if you exportRoot() again, that TimelineLite would get wrapped into another one, + * etc. Things can be nested as deeply as you want.

    + * + *

    Keep in mind, however, that completed tweens/timelines are removed from the root (for automatic + * garbage collection), so if you exportRoot() after a tween completes, it won't be + * included in the export. The only way around that is to set autoRemoveChildren + * property of the Animation._rootTimeline and Animation._rootFramesTimeline + * to false, but that is NOT recommended because you'd need to + * manually kill() your tweens/timelines manually to make them eligible for + * garbage collection.

    + * + * @param vars The vars parameter that's passed to the TimelineLite's constructor which allows you to define things like onUpdate, onComplete, etc. The useFrames special property determines which root timeline gets exported. There are two distinct root timelines - one for frames-based animations (useFrames:true) and one for time-based ones. By default, the time-based timeline is exported. + * @param omitDelayedCalls If true (the default), delayed calls will be left on the root rather than wrapped into the new TimelineLite. That way, if you pause() or alter the timeScale, or reverse(), they won't be affected. However, in some situations it might be very useful to have them included. + * @return A new TimelineLite instance containing the root tweens/timelines + */ + public static function exportRoot(vars:Object=null, omitDelayedCalls:Boolean=true):TimelineLite { + vars = vars || {}; + if (!("smoothChildTiming" in vars)) { + vars.smoothChildTiming = true; + } + var tl:TimelineLite = new TimelineLite(vars), + root:SimpleTimeline = tl._timeline; + root._remove(tl, true); + tl._startTime = 0; + tl._rawPrevTime = tl._time = tl._totalTime = root._time; + var tween:Animation = root._first, next:Animation; + while (tween) { + next = tween._next; + if (!omitDelayedCalls || !(tween is TweenLite && TweenLite(tween).target == tween.vars.onComplete)) { + tl.add(tween, tween._startTime - tween._delay); + } + tween = next; + } + root.add(tl, 0); + return tl; + } + +//---- END CONVENIENCE METHODS ---------------------------------------- + + + /** + * @private + * [Deprecated in favor of add()] + * Inserts a tween, timeline, callback, or label into the timeline at a specific time, frame, + * or label. This gives you complete control over the insertion point (append() + * always puts things at the end). + * + * + //insert a tween so that it starts at 1 second into the timeline + myAnimation.insert(TweenLite.to(mc, 2, {x:100}), 1); + + //insert a callback at 1.5 seconds + myAnimation.insert(myFunction, 1.5); + + //insert a label at 3 seconds + myAnimation.insert("myLabel", 3); + + //create another timeline that we will insert + var nested = new TimelineLite(); + + //insert the timeline where the "myLabel" label is + myAnimation.insert(nested, "myLabel"); + + * + * @param value The tween, timeline, callback, or label to insert + * @param timeOrLabel The time in seconds (or frames for frames-based timelines) or label at which to insert. For example, myTimeline.insert(myTween, 3) would insert myTween 3-seconds into the timeline, and myTimeline.insert(myTween, "myLabel") would insert it at the "myLabel" label. If you define a label that doesn't exist yet, one is appended to the end of the timeline. + * @return self (makes chaining easier) + * @see #add() + */ + override public function insert(value:*, timeOrLabel:*=0):* { + return add(value, timeOrLabel || 0); + } + + /** + * Adds a tween, timeline, callback, or label (or an array of them) to the timeline. + * + *

    The position parameter gives you complete control over the insertion point. + * By default, it's at the end of the timeline. Use a number to indicate + * an absolute time in terms of seconds (or frames for frames-based timelines), or you can use a string + * with a "+=" or "-=" prefix to offset the insertion point relative to the END of the timeline. + * For example, "+=2" would place the object 2 seconds after the end, leaving a 2-second gap. + * "-=2" would create a 2-second overlap. You may also use a label like "myLabel" + * to have the object inserted exactly at the label or combine a label and a relative offset like + * "myLabel+=2" to insert the object 2 seconds after "myLabel" or "myLabel-=3" + * to insert it 3 seconds before "myLabel". If you define a label that doesn't exist yet, it + * will automatically be added to the end of the timeline before inserting the tween + * there which can be quite convenient.

    + * + * +//add a tween to the end of the timeline +tl.add( TweenLite.to(mc, 2, {x:100}) ); + +//add a callback at 1.5 seconds +tl.add(func, 1.5); + +//add a label 2 seconds after the end of the timeline (with a gap of 2 seconds) +tl.add("myLabel", "+=2"); + +//add another timeline at "myLabel" +tl.add(otherTimeline, "myLabel"); + +//add an array of tweens 2 seconds after "myLabel" +tl.add([tween1, tween2, tween3], "myLabel+=2"); + +//add an array of tweens so that they are sequenced one-after-the-other with 0.5 seconds inbetween them, starting 2 seconds after the end of the timeline +tl.add([tween1, tween2, tween3], "+=2", "sequence", 0.5); + + * + * @param value The tween, timeline, callback, or label (or array of them) to add + * @param position Controls the placement of the object in the timeline (by default, it's the end of the timeline, like "+=0"). Use a number to indicate an absolute time in terms of seconds (or frames for frames-based timelines), or you can use a string with a "+=" or "-=" prefix to offset the insertion point relative to the END of the timeline. For example, "+=2" would place the object 2 seconds after the end, leaving a 2-second gap. "-=2" would create a 2-second overlap. You may also use a label like "myLabel" to have the object inserted exactly at the label or combine a label and a relative offset like "myLabel+=2" to insert the object 2 seconds after "myLabel" or "myLabel-=3" to insert it 3 seconds before "myLabel". If you define a label that doesn't exist yet, it will automatically be added to the end of the timeline before inserting the tween there which can be quite convenient. + * @param align [only relevant when the first parameter, value, is an array] Determines how the tweens/timelines/callbacks/labels in the array that is being added will be aligned in relation to each other before getting inserted. Options are: "sequence" (aligns them one-after-the-other in a sequence), "start" (aligns the start times of all of the objects (ignoring delays)), and "normal" (aligns the start times of all the tweens (honoring delays)). The default is "normal". + * @param stagger [only relevant when the first parameter, value, is an array] Staggers the inserted objects from the array the is being added by a set amount of time (in seconds) (or in frames for frames-based timelines). For example, if the stagger value is 0.5 and the "align" parameter is set to "start", the second one will start 0.5 seconds after the first one starts, then 0.5 seconds later the third one will start, etc. If the align property is "sequence", there would be 0.5 seconds added between each tween. Default is 0. + * @return self (makes chaining easier) + */ + override public function add(value:*, position:*="+=0", align:String="normal", stagger:Number=0):* { + if (typeof(position) !== "number") { + position = _parseTimeOrLabel(position, 0, true, value); + } + if (!(value is Animation)) { + if (value is Array) { + var i:int, + curTime:Number = Number(position), + l:Number = value.length, + child:*; + for (i = 0; i < l; i++) { + child = value[i]; + if (child is Array) { + child = new TimelineLite({tweens:child}); + } + add(child, curTime); + if (typeof(child) === "string" || typeof(child) === "function") { + //do nothing + } else if (align === "sequence") { + curTime = child._startTime + (child.totalDuration() / child._timeScale); + } else if (align === "start") { + child._startTime -= child.delay(); + } + curTime += stagger; + } + return _uncache(true); + } else if (typeof(value) === "string") { + return addLabel(String(value), position); + } else if (typeof(value) === "function") { + value = TweenLite.delayedCall(0, value); + } else { + trace("Cannot add " + value + " into the TimelineLite/Max: it is not a tween, timeline, function, or string."); + return this; + } + } + + super.add(value, position); + + //if the timeline has already ended but the inserted tween/timeline extends the duration, we should enable this timeline again so that it renders properly. We should also align the playhead with the parent timeline's when appropriate. + if (_gc || _time === _duration) if (!_paused) if (_duration < duration()) { + //in case any of the anscestors had completed but should now be enabled... + var tl:SimpleTimeline = this, + beforeRawTime:Boolean = (tl.rawTime() > value._startTime); //if the tween is placed on the timeline so that it starts BEFORE the current rawTime, we should align the playhead (move the timeline). This is because sometimes users will create a timeline, let it finish, and much later append a tween and expect it to run instead of jumping to its end state. While technically one could argue that it should jump to its end state, that's not what users intuitively expect. + while (tl._timeline) { + if (beforeRawTime && tl._timeline.smoothChildTiming) { + tl.totalTime(tl._totalTime, true); //moves the timeline (shifts its startTime) if necessary, and also enables it. + } else if (tl._gc) { + tl._enabled(true, false); + } + tl = tl._timeline; + } + } + + return this; + } + + + /** + * Removes a tween, timeline, callback, or label (or array of them) from the timeline. + * + * @param value The tween, timeline, callback, or label that should be removed from the timeline (or an array of them) + * @return self (makes chaining easier) + */ + public function remove(value:*):* { + if (value is Animation) { + return _remove(value, false); + } else if (value is Array) { + var i:Number = value.length; + while (--i > -1) { + remove(value[i]); + } + return this; + } else if (typeof(value) == "string") { + return removeLabel(String(value)); + } + return kill(null, value); + } + + /** @private **/ + override public function _remove(tween:Animation, skipDisable:Boolean=false):* { + super._remove(tween, skipDisable); + if (_last == null) { + _time = _totalTime = _duration = _totalDuration = 0; + } else if (_time > _last._startTime + _last._totalDuration / _last._timeScale) { + _time = duration(); + _totalTime = _totalDuration; + } + return this; + } + + /** + * @private + * [Deprecated in favor of add()] + * Appends a tween, timeline, callback, or label to the end of the timeline, + * optionally offsetting its insertion point by a certain amount (to make it overlap with the end of + * the timeline or leave a gap before its insertion point). + * This makes it easy to build sequences by continuing to append() tweens or timelines. You can + * chain append() calls together or use the convenience methods like to(), from(), fromTo(), + * call(), set(), staggerTo(), staggerFrom(), and staggerFromTo() to build + * sequences with minimal code. + * + *

    To insert the tween/timeline/callback/label at a specific position on the timeline + * rather than appending it to the end, use the insert() method.

    + * + *

    If you define a label (string) as the offsetOrLabel parameter, + * the tween/timeline/callback will be inserted wherever that label is, but if the + * label doesn't exist yet, it will be added to the end of the timeline first and + * then the tween/timeline/callback will be inserted there. This makes it easier + * to build things as you go with concise code, adding labels as things get appended.

    + * + * +//append a tween +myTimeline.append(TweenLite.to(mc, 1, {x:100})); + +//use the to() convenience method to add several sequenced tweens +myTimeline.to(mc, 1, {x:50}).to(mc, 1, {y:100}).to(mc2, 1, {alpha:0}); + +//append a callback +myTimeline.append(myFunction); + +//append a label +myTimeline.append("myLabel"); + +//create another timeline and then append it +var nested = new TimelineLite(); +myTimeline.append(nested); + + * + * @param value The tween, timeline, callback, or label to append. You can even pass in an array of them. + * @param offsetOrLabel Either a number indicating how many seconds (or frames for frames-based timelines) to offset the insertion point from the end of the timeline (positive values create a gap, negative values create an overlap) or a string indicating the label at which the tween/timeline/callback should be inserted. If you define a label that doesn't exist yet, it will automatically be added to the end of the timeline before the tween/timeline/callback gets appended there. For example, to append a tween 3 seconds after the end of the timeline (leaving a 3-second gap), set the offsetOrLabel to 3. Or to have the tween appended so that it overlaps with the last 2 seconds of the timeline, set the offsetOrLabel to -2. The default is 0 so that the insertion point is exactly at the end of the timeline. + * @return self (makes chaining easier) + * @see #add() + * @see #to() + * @see #from() + * @see #fromTo() + * @see #call() + * @see #set() + */ + public function append(value:*, offsetOrLabel:*=0):* { + return add(value, _parseTimeOrLabel(null, offsetOrLabel, true, value)); + } + + /** + * @private + * [Deprecated in favor of add()] + * Inserts multiple tweens/timelines/callbacks/labels into the timeline at once, optionally aligning them + * (as a sequence for example) and/or staggering the timing. You can use the insert() method + * instead if you are not defining a stagger or align (either way works). + * + * @param tweens An array containing the tweens, timelines, callbacks, or labels that should be inserted + * @param timeOrLabel Time in seconds (or frame if the timeline is frames-based) or label that serves as the insertion point. For example, the number 2 would insert the first object in the array at 2-seconds into the timeline, or "myLabel" would ihsert them wherever "myLabel" is. + * @param align Determines how the tweens/timelines/callbacks/labels will be aligned in relation to each other before getting inserted. Options are: "sequence" (aligns them one-after-the-other in a sequence), "start" (aligns the start times of all of the objects (ignoring delays)), and "normal" (aligns the start times of all the tweens (honoring delays)). The default is "normal". + * @param stagger Staggers the tweens by a set amount of time (in seconds) (or in frames for frames-based timelines). For example, if the stagger value is 0.5 and the "align" parameter is set to "start", the second one will start 0.5 seconds after the first one starts, then 0.5 seconds later the third one will start, etc. If the align property is "sequence", there would be 0.5 seconds added between each tween. Default is 0. + * @return self (makes chaining easier) + * @see #add() + * @see #staggerTo() + * @see #staggerFrom() + * @see #staggerFromTo() + */ + public function insertMultiple(tweens:Array, timeOrLabel:*=0, align:String="normal", stagger:Number=0):* { + return add(tweens, timeOrLabel || 0, align, stagger); + } + + /** + * @private + * [Deprecated in favor of add()] + * Appends multiple tweens/timelines/callbacks/labels to the end of the timeline at once, optionally + * offsetting the insertion point by a certain amount, aligning them (as a sequence for example), and/or + * staggering their relative timing. You can use the add() method + * instead if you are not defining a stagger or align (either way works). + * Check out the staggerTo() method for an even easier way to create and append + * a sequence of evenly-spaced tweens. + * + * @param tweens An array containing the tweens, timelines, callbacks, and/or labels that should be appended + * @param offsetOrLabel Either a number indicating how many seconds (or frames for frames-based timelines) to offset the insertion point from the end of the timeline (positive values create a gap, negative values create an overlap) or a string indicating the label at which the tween should be inserted. If you define a label that doesn't exist yet, it will automatically be added to the end of the timeline before the tweens/timelines/callbacks gets appended there. For example, to begin appending the tweens 3 seconds after the end of the timeline (leaving a 3-second gap), set the offsetOrLabel to 3. Or to begin appending the tweens/timelines/callbacks so that they overlap with the last 2 seconds of the timeline, set the offsetOrLabel to -2. The default is 0 so that the insertion point is exactly at the end of the timeline. + * @param align Determines how the objects will be aligned in relation to each other before getting appended. Options are: TweenAlign.SEQUENCE (aligns the tweens one-after-the-other in a sequence), TweenAlign.START (aligns the start times of all of the tweens (ignores delays)), and TweenAlign.NORMAL (aligns the start times of all the tweens (honors delays)). The default is NORMAL. + * @param stagger Staggers the tweens by a set amount of time (in seconds) (or in frames for frames-based timelines). For example, if the stagger value is 0.5 and the "align" parameter is set to "start", the second one will start 0.5 seconds after the first one starts, then 0.5 seconds later the third one will start, etc. If the align property is "sequence", there would be 0.5 seconds added between each tween. Default is 0. + * @return The array of tweens that were appended + */ + public function appendMultiple(tweens:Array, offsetOrLabel:*=0, align:String="normal", stagger:Number=0):* { + return add(tweens, _parseTimeOrLabel(null, offsetOrLabel, true, tweens), align, stagger); + } + + /** + * Adds a label to the timeline, making it easy to mark important positions/times. You can then + * reference that label in other methods, like seek("myLabel") or add(myTween, "myLabel") + * or reverse("myLabel"). You could also use the add() method to insert a label. + * + * @param label The name of the label + * @param position Controls the placement of the label in the timeline (by default, it's the end of the timeline, like "+=0"). Use a number to indicate an absolute time in terms of seconds (or frames for frames-based timelines), or you can use a string with a "+=" or "-=" prefix to offset the insertion point relative to the END of the timeline. For example, "+=2" would place the label 2 seconds after the end, leaving a 2-second gap. "-=2" would create a 2-second overlap. You may also use a label like "myLabel" to have the label inserted exactly at the label or combine a label and a relative offset like "myLabel+=2" to insert the label 2 seconds after "myLabel" or "myLabel-=3" to insert it 3 seconds before "myLabel". If you define a label that doesn't exist yet, it will automatically be added to the end of the timeline before inserting the label there which can be quite convenient. + */ + public function addLabel(label:String, position:*="+=0"):* { + _labels[label] = _parseTimeOrLabel(position); + return this; + } + + /** + * + * Removes a label from the timeline and returns the time of that label. You could + * also use the remove() method to accomplish the same task. + * + * @param label The name of the label to remove + * @return Time associated with the label that was removed + */ + public function removeLabel(label:String):* { + delete _labels[label]; + return this; + } + + /** + * Returns the time associated with a particular label. If the label isn't found, -1 is returned. + * + * @param label Label name + * @return Time associated with the label (or -1 if there is no such label) + */ + public function getLabelTime(label:String):Number { + return (label in _labels) ? Number(_labels[label]) : -1; + } + + /** @private **/ + protected function _parseTimeOrLabel(timeOrLabel:*, offsetOrLabel:*=0, appendIfAbsent:Boolean=false, ignore:Object=null):Number { + var i:int; + //if we're about to add a tween/timeline (or an array of them) that's already a child of this timeline, we should remove it first so that it doesn't contaminate the duration(). + if (ignore is Animation && ignore.timeline === this) { + remove(ignore); + } else if (ignore is Array) { + i = ignore.length; + while (--i > -1) { + if (ignore[i] is Animation && ignore[i].timeline === this) { + remove(ignore[i]); + } + } + } + if (typeof(offsetOrLabel) === "string") { + return _parseTimeOrLabel(offsetOrLabel, (appendIfAbsent && typeof(timeOrLabel) === "number" && !(offsetOrLabel in _labels)) ? timeOrLabel - duration() : 0, appendIfAbsent); + } + offsetOrLabel = offsetOrLabel || 0; + if (typeof(timeOrLabel) === "string" && (isNaN(timeOrLabel) || (timeOrLabel in _labels))) { //if the string is a number like "1", check to see if there's a label with that name, otherwise interpret it as a number (absolute value). + i = timeOrLabel.indexOf("="); + if (i === -1) { + if (!(timeOrLabel in _labels)) { + return appendIfAbsent ? (_labels[timeOrLabel] = duration() + offsetOrLabel) : offsetOrLabel; + } + return _labels[timeOrLabel] + offsetOrLabel; + } + offsetOrLabel = parseInt(timeOrLabel.charAt(i-1) + "1", 10) * Number(timeOrLabel.substr(i+1)); + timeOrLabel = (i > 1) ? _parseTimeOrLabel(timeOrLabel.substr(0, i-1), 0, appendIfAbsent) : duration(); + } else if (timeOrLabel == null) { + timeOrLabel = duration(); + } + return Number(timeOrLabel) + offsetOrLabel; + } + + /** + * Jumps to a specific time (or label) without affecting whether or not the instance + * is paused or reversed. + * + *

    If there are any events/callbacks inbetween where the playhead was and the new time, + * they will not be triggered because by default suppressEvents (the 2nd parameter) + * is true. Think of it like picking the needle up on a record player and moving it + * to a new position before placing it back on the record. If, however, you do not want the + * events/callbacks suppressed during that initial move, simply set the suppressEvents + * parameter to false.

    + * + * +//jumps to exactly 2 seconds +myAnimation.seek(2); + +//jumps to exactly 2 seconds but doesn't suppress events during the initial move: +myAnimation.seek(2, false); + +//jumps to the "myLabel" label +myAnimation.seek("myLabel"); + + * + * @param position The position to go to, described in any of the following ways: a numeric value indicates an absolute position, like 3 would be exactly 3 seconds from the beginning of the timeline. A string value can be either a label (i.e. "myLabel") or a relative value using the "+=" or "-=" prefixes like "-=2" (2 seconds before the end of the timeline) or a combination like "myLabel+=2" to indicate 2 seconds after "myLabel". + * @param suppressEvents If true (the default), no events or callbacks will be triggered when the playhead moves to the new position defined in the time parameter. + * @return self (makes chaining easier) + * @see #time() + * @see #totalTime() + * @see #play() + * @see #reverse() + * @see #pause() + */ + override public function seek(position:*, suppressEvents:Boolean=true):* { + return totalTime((typeof(position) === "number") ? Number(position) : _parseTimeOrLabel(position), suppressEvents); + } + + /** [deprecated] Pauses the timeline (used for consistency with Flash's MovieClip.stop() functionality, but essentially accomplishes the same thing as pause() without the parameter) @return self (makes chaining easier) **/ + public function stop():* { + return paused(true); + } + + /** + * @private + * [deprecated] + * Skips to a particular time, frame, or label and plays the timeline forward from there (unpausing it) + * + * @param position The position to go to, described in any of the following ways: a numeric value indicates an absolute position, like 3 would be exactly 3 seconds from the beginning of the timeline. A string value can be either a label (i.e. "myLabel") or a relative value using the "+=" or "-=" prefixes like "-=2" (2 seconds before the end of the timeline) or a combination like "myLabel+=2" to indicate 2 seconds after "myLabel". + * @param suppressEvents If true, no events or callbacks will be triggered as the "virtual playhead" moves to the new position (onComplete, onUpdate, onReverseComplete, etc. of this timeline and any of its child tweens/timelines won't be triggered, nor will any of the associated events be dispatched) + */ + public function gotoAndPlay(position:*, suppressEvents:Boolean=true):* { + return play(position, suppressEvents); + } + + /** + * @private + * [deprecated] + * Skips to a particular time, frame, or label and stops the timeline (pausing it) + * + * @param position The position to go to, described in any of the following ways: a numeric value indicates an absolute position, like 3 would be exactly 3 seconds from the beginning of the timeline. A string value can be either a label (i.e. "myLabel") or a relative value using the "+=" or "-=" prefixes like "-=2" (2 seconds before the end of the timeline) or a combination like "myLabel+=2" to indicate 2 seconds after "myLabel". + * @param suppressEvents If true, no events or callbacks will be triggered as the "virtual playhead" moves to the new position (onComplete, onUpdate, onReverseComplete, etc. of this timeline and any of its child tweens/timelines won't be triggered, nor will any of the associated events be dispatched) + */ + public function gotoAndStop(position:*, suppressEvents:Boolean=true):* { + return pause(position, suppressEvents); + } + + /** + * @private + * Renders all tweens and sub-timelines in the state they'd be at a particular time (or frame for frames-based timelines). + * + * @param time time in seconds (or frames for frames-based timelines) that should be rendered. + * @param suppressEvents If true, no events or callbacks will be triggered for this render (like onComplete, onUpdate, onReverseComplete, etc.) + * @param force Normally the tween will skip rendering if the time matches the cachedTotalTime (to improve performance), but if force is true, it forces a render. This is primarily used internally for tweens with durations of zero in TimelineLite/Max instances. + */ + override public function render(time:Number, suppressEvents:Boolean=false, force:Boolean=false):void { + if (_gc) { + _enabled(true, false); + } + var totalDur:Number = (!_dirty) ? _totalDuration : totalDuration(), + prevTime:Number = _time, + prevStart:Number = _startTime, + prevTimeScale:Number = _timeScale, + prevPaused:Boolean = _paused, + tween:Animation, isComplete:Boolean, next:Animation, callback:String, internalForce:Boolean; + if (time >= totalDur) { + _totalTime = _time = totalDur; + if (!_reversed) if (!_hasPausedChild()) { + isComplete = true; + callback = "onComplete"; + if (_duration === 0) if (time === 0 || _rawPrevTime < 0 || _rawPrevTime === _tinyNum) if (_rawPrevTime !== time && _first != null) { + internalForce = true; + if (_rawPrevTime > _tinyNum) { + callback = "onReverseComplete"; + } + } + } + _rawPrevTime = (_duration !== 0 || !suppressEvents || time !== 0 || _rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline or tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient. + time = totalDur + 0.0001; //to avoid occasional floating point rounding errors in Flash - sometimes child tweens/timelines were not being fully completed (their progress might be 0.999999999999998 instead of 1 because when Flash performed _time - tween._startTime, floating point errors would return a value that was SLIGHTLY off) + + } else if (time < 0.0000001) { //to work around occasional floating point math artifacts, round super small values to 0. + _totalTime = _time = 0; + if (prevTime !== 0 || (_duration === 0 && _rawPrevTime !== _tinyNum && (_rawPrevTime > 0 || (time < 0 && _rawPrevTime >= 0)))) { + callback = "onReverseComplete"; + isComplete = _reversed; + } + if (time < 0) { + _active = false; + if (_rawPrevTime >= 0 && _first != null) { //zero-duration timelines are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the "playhead" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's "playhead" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered. + internalForce = true; + } + _rawPrevTime = time; + } else { + _rawPrevTime = (_duration || !suppressEvents || time !== 0 || _rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline or tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient. + time = 0; //to avoid occasional floating point rounding errors (could cause problems especially with zero-duration tweens at the very beginning of the timeline) + if (!_initted) { + internalForce = true; + } + } + + } else { + _totalTime = _time = _rawPrevTime = time; + } + + if ((_time == prevTime || !_first) && !force && !internalForce) { + return; + } else if (!_initted) { + _initted = true; + } + if (!_active) if (!_paused && _time !== prevTime && time > 0) { + _active = true; //so that if the user renders the timeline (as opposed to the parent timeline rendering it), it is forced to re-render and align it with the proper time/frame on the next rendering cycle. Maybe the timeline already finished but the user manually re-renders it as halfway done, for example. + } + if (prevTime == 0) if (vars.onStart) if (_time != 0) if (!suppressEvents) { + vars.onStart.apply(null, vars.onStartParams); + } + + if (_time >= prevTime) { + tween = _first; + while (tween) { + next = tween._next; //record it here because the value could change after rendering... + if (_paused && !prevPaused) { //in case a tween pauses the timeline when rendering + break; + } else if (tween._active || (tween._startTime <= _time && !tween._paused && !tween._gc)) { + + if (!tween._reversed) { + tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, force); + } else { + tween.render(((!tween._dirty) ? tween._totalDuration : tween.totalDuration()) - ((time - tween._startTime) * tween._timeScale), suppressEvents, force); + } + + } + tween = next; + } + } else { + tween = _last; + while (tween) { + next = tween._prev; //record it here because the value could change after rendering... + if (_paused && !prevPaused) { //in case a tween pauses the timeline when rendering + break; + } else if (tween._active || (tween._startTime <= prevTime && !tween._paused && !tween._gc)) { + + if (!tween._reversed) { + tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, force); + } else { + tween.render(((!tween._dirty) ? tween._totalDuration : tween.totalDuration()) - ((time - tween._startTime) * tween._timeScale), suppressEvents, force); + } + + } + tween = next; + } + } + + if (_onUpdate != null) if (!suppressEvents) { + _onUpdate.apply(null, vars.onUpdateParams); + } + + if (callback) if (!_gc) if (prevStart == _startTime || prevTimeScale != _timeScale) if (_time == 0 || totalDur >= totalDuration()) { //if one of the tweens that was rendered altered this timeline's startTime (like if an onComplete reversed the timeline), it probably isn't complete. If it is, don't worry, because whatever call altered the startTime would complete if it was necessary at the new time. The only exception is the timeScale property. Also check _gc because there's a chance that kill() could be called in an onUpdate + if (isComplete) { + if (_timeline.autoRemoveChildren) { + _enabled(false, false); + } + _active = false; + } + if (!suppressEvents) if (vars[callback]) { + vars[callback].apply(null, vars[callback + "Params"]); + } + } + } + + + /** + * @private + * Checks the timeline to see if it has any paused children (tweens/timelines). + * + * @return Indicates whether or not the timeline contains any paused children + */ + public function _hasPausedChild():Boolean { + var tween:Animation = _first; + while (tween) { + if (tween._paused || ((tween is TimelineLite) && TimelineLite(tween)._hasPausedChild())) { + return true; + } + tween = tween._next; + } + return false; + } + + /** + * Returns an array containing all the tweens and/or timelines nested in this timeline. + * Callbacks (delayed calls) are considered zero-duration tweens. + * + * @param nested Determines whether or not tweens and/or timelines that are inside nested timelines should be returned. If you only want the "top level" tweens/timelines, set this to false. + * @param tweens Determines whether or not tweens (TweenLite and TweenMax instances) should be included in the results + * @param timelines Determines whether or not timelines (TimelineLite and TimelineMax instances) should be included in the results + * @param ignoreBeforeTime All children with start times that are less than this value will be ignored. + * @return an Array containing the child tweens/timelines. + */ + public function getChildren(nested:Boolean=true, tweens:Boolean=true, timelines:Boolean=true, ignoreBeforeTime:Number=-9999999999):Array { + var a:Array = [], + tween:Animation = _first, + cnt:int = 0; + while (tween) { + if (tween._startTime < ignoreBeforeTime) { + //do nothing + } else if (tween is TweenLite) { + if (tweens) { + a[cnt++] = tween; + } + } else { + if (timelines) { + a[cnt++] = tween; + } + if (nested) { + a = a.concat(TimelineLite(tween).getChildren(true, tweens, timelines)); + cnt = a.length; + } + } + tween = tween._next; + } + return a; + } + + /** + * Returns the tweens of a particular object that are inside this timeline. + * + * @param target The target object of the tweens + * @param nested Determines whether or not tweens that are inside nested timelines should be returned. If you only want the "top level" tweens/timelines, set this to false. + * @return an Array of TweenLite and/or TweenMax instances + */ + public function getTweensOf(target:Object, nested:Boolean=true):Array { + var disabled:Boolean = this._gc, + a:Array = [], + cnt:int = 0, + tweens:Array, i:int; + if (disabled) { + _enabled(true, true); //getTweensOf() filters out disabled tweens, and we have to mark them as _gc = true when the timeline completes in order to allow clean garbage collection, so temporarily re-enable the timeline here. + } + tweens = TweenLite.getTweensOf(target); + i = tweens.length; + while (--i > -1) { + if (tweens[i].timeline === this || (nested && _contains(tweens[i]))) { + a[cnt++] = tweens[i]; + } + } + if (disabled) { + _enabled(false, true); + } + return a; + } + + /** @private **/ + private function _contains(tween:Animation):Boolean { + var tl:SimpleTimeline = tween.timeline; + while (tl) { + if (tl == this) { + return true; + } + tl = tl.timeline; + } + return false; + } + + /** + * Shifts the startTime of the timeline's children by a certain amount and optionally adjusts labels too. + * This can be useful when you want to prepend children or splice them into a certain spot, moving existing + * ones back to make room for the new ones. + * + * @param amount Number of seconds (or frames for frames-based timelines) to move each child. + * @param adjustLabels If true, the timing of all labels will be adjusted as well. + * @param ignoreBeforeTime All children that begin at or after the startAtTime will be affected by the shift (the default is 0, causing all children to be affected). This provides an easy way to splice children into a certain spot on the timeline, pushing only the children after that point back to make room. + * @return self (makes chaining easier) + */ + public function shiftChildren(amount:Number, adjustLabels:Boolean=false, ignoreBeforeTime:Number=0):* { + var tween:Animation = _first; + while (tween) { + if (tween._startTime >= ignoreBeforeTime) { + tween._startTime += amount; + } + tween = tween._next; + } + if (adjustLabels) { + for (var p:String in _labels) { + if (_labels[p] >= ignoreBeforeTime) { + _labels[p] += amount; + } + } + } + _uncache(true); + return this; + } + + /** @private **/ + override public function _kill(vars:Object=null, target:Object=null):Boolean { + if (vars == null) if (target == null) { + return _enabled(false, false); + } + var tweens:Array = (target == null) ? getChildren(true, true, false) : getTweensOf(target), + i:int = tweens.length, + changed:Boolean = false; + while (--i > -1) { + if (tweens[i]._kill(vars, target)) { + changed = true; + } + } + return changed; + } + + + /** + * Empties the timeline of all tweens, timelines, and callbacks (and optionally labels too). + * Event callbacks (like onComplete, onUpdate, onStart, etc.) are not removed. If you need + * to remove event callbacks, use the eventCallback() method and set them to null + * like myTimeline.eventCallback("onComplete", null); + * + * @param labels If true (the default), labels will be cleared too. + * @return self (makes chaining easier) + */ + public function clear(labels:Boolean=true):* { + var tweens:Array = getChildren(false, true, true), + i:int = tweens.length; + _time = _totalTime = 0; + while (--i > -1) { + tweens[i]._enabled(false, false); + } + if (labels) { + _labels = {}; + } + return _uncache(true); + } + + + /** @inheritDoc **/ + override public function invalidate():* { + var tween:Animation = _first; + while (tween) { + tween.invalidate(); + tween = tween._next; + } + return this; + } + + /** @private **/ + override public function _enabled(enabled:Boolean, ignoreTimeline:Boolean=false):Boolean { + if (enabled == _gc) { + var tween:Animation = _first; + while (tween) { + tween._enabled(enabled, true); + tween = tween._next; + } + } + return super._enabled(enabled, ignoreTimeline); + } + + +//---- GETTERS / SETTERS ------------------------------------------------------------------------------------------------------- + + + /** + * Gets the timeline's duration or, if used as a setter, adjusts the timeline's + * timeScale to fit it within the specified duration. duration() is identical + * to totalDuration() except for TimelineMax instances that have a non-zero repeat + * in which case totalDuration includes repeats and repeatDelays whereas duration doesn't. + * For example, if a TimelineMax instance has a duration of 2 and a repeat of 3, + * its totalDuration would be 8 (one standard play plus 3 repeats equals 4 total cycles). + * + *

    Due to the fact that a timeline's duration is dictated by its contents, + * using this method as a setter will simply cause the timeScale to be adjusted + * to fit the current contents into the specified duration, but the duration + * value itself will remain unchanged. For example, if there are 20-seconds worth of tweens in the timeline + * and you do myTimeline.duration(10), the timeScale would be changed to 2. + * If you checked the duration again immediately after that, it would still return 20 because + * technically that is how long all the child tweens/timelines are but upon playback the speed would + * be doubled because of the timeScale.

    + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining, like myAnimation.duration(2).play(1);

    + * + * + var currentDuration = myAnimation.duration(); //gets current duration + myAnimation.duration( 10 ); //adjusts the timeScale of myAnimation so that it fits into exactly 10 seconds on its parent timeline + + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * + * @see #totalDuration() + * @see #timeScale() + **/ + override public function duration(value:Number=NaN):* { + if (!arguments.length) { + if (_dirty) { + totalDuration(); //just triggers recalculation + } + return _duration; + } + if (duration() !== 0) if (value !== 0) { + timeScale(_duration / value); + } + return this; + } + + /** + * Gets the timeline's total duration or, if used as a setter, adjusts the timeline's + * timeScale to fit it within the specified duration. For example, if a TimelineMax instance has + * a duration of 2 and a repeat of 3, its totalDuration + * would be 8 (one standard play plus 3 repeats equals 4 total cycles). + * + *

    Due to the fact that a timeline's totalDuration is dictated by its contents, + * using this method as a setter will simply cause the timeScale to be adjusted + * to fit the current contents into the specified totalDuration. For example, + * if there are 20-seconds worth of tweens in the timeline and you do myTimeline.totalDuration(10), + * the timeScale would be changed to 2. If you checked the totalDuration again + * immediately after that, it would still return 20 because technically that is how long all the + * child tweens/timelines are but upon playback the speed would be doubled because of the + * timeScale.

    + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining, like myAnimation.totalDuration(2).play(1);

    + * + * +var ctd = myAnimation.totalDuration(); //gets current total duration +myAnimation.totalDuration( 20 ); //adjusts the timeScale so that myAnimation fits into exactly 20 seconds on its parent timeline + + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * + * @see #timeScale() + * @see #duration() + **/ + override public function totalDuration(value:Number=NaN):* { + if (!arguments.length) { + if (_dirty) { + var max:Number = 0, + tween:Animation = _last, + prevStart:Number = Infinity, + prev:Animation, end:Number; + while (tween) { + prev = tween._prev; //record it here in case the tween changes position in the sequence... + if (tween._dirty) { + tween.totalDuration(); //could change the tween._startTime, so make sure the tween's cache is clean before analyzing it. + } + if (tween._startTime > prevStart && _sortChildren && !tween._paused) { //in case one of the tweens shifted out of order, it needs to be re-inserted into the correct position in the sequence + add(tween, tween._startTime - tween._delay); + } else { + prevStart = tween._startTime; + } + if (tween._startTime < 0 && !tween._paused) { //children aren't allowed to have negative startTimes unless smoothChildTiming is true, so adjust here if one is found. + max -= tween._startTime; + if (_timeline.smoothChildTiming) { + _startTime += tween._startTime / _timeScale; + } + shiftChildren(-tween._startTime, false, -9999999999); + prevStart = 0; + } + end = tween._startTime + (tween._totalDuration / tween._timeScale); + if (end > max) { + max = end; + } + tween = prev; + } + _duration = _totalDuration = max; + _dirty = false; + } + return _totalDuration; + } + if (totalDuration() != 0) if (value != 0) { + timeScale( _totalDuration / value ); + } + return this; + } + + /** + * [READ-ONLY] If true, the timeline's timing mode is frames-based instead of + * seconds. This can only be set to true by passing useFrames:true in + * the vars parameter of the constructor, or by nesting this timeline in another whose + * timing mode is frames-based. An animation's timing mode is always determined by its parent timeline). + **/ + public function usesFrames():Boolean { + var tl:SimpleTimeline = _timeline; + while (tl._timeline) { + tl = tl._timeline; + } + return (tl == _rootFramesTimeline); + } + + /** + * @private + * Reports the totalTime of the timeline without capping the number at the totalDuration (max) + * and zero (minimum) which can be useful when unpausing tweens/timelines. Imagine a case where a paused + * tween is in a timeline that has already reached the end, but then the tween gets unpaused - it needs a + * way to place itself accurately in time AFTER what was previously the timeline's end time. + * + * @return The totalTime of the timeline without capping the number at the totalDuration (max) and zero (minimum) + */ + override public function rawTime():Number { + return _paused ? _totalTime : (_timeline.rawTime() - _startTime) * _timeScale; + } + + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/TimelineMax.as b/FairyGUI-as3/src/com/greensock/TimelineMax.as new file mode 100644 index 0000000..88f0f99 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/TimelineMax.as @@ -0,0 +1,1524 @@ +/** + * VERSION: 12.1.5 + * DATE: 2014-07-19 + * AS3 (AS2 version is also available) + * UPDATES AND DOCS AT: http://www.greensock.com/timelinemax/ + **/ +package com.greensock { + import com.greensock.core.SimpleTimeline; + import com.greensock.core.Animation; + import com.greensock.easing.Ease; + import com.greensock.events.TweenEvent; + + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.events.IEventDispatcher; +/** + * TimelineMax extends TimelineLite, offering exactly the same functionality plus useful + * (but non-essential) features like repeat, repeatDelay, yoyo, currentLabel(), addCallback(), + * removeCallback(), tweenTo(), tweenFromTo(), getLabelAfter(), getLabelBefore(), + * getActive(), AS3 event dispatching (and probably more in the future). It is the ultimate + * sequencing tool that acts like a container for tweens and other timelines, making it + * simple to control them as a whole and precisely manage their timing. Without TimelineMax + * (or its little brother TimelineLite), building complex sequences would be far more cumbersome + * because you'd need to use the delay special property for everything which would + * make future edits far more tedius. Here is a basic example: + * +TweenLite.to(mc, 1, {x:100}); +TweenLite.to(mc, 1, {y:50, delay:1}); +TweenLite.to(mc, 1, {alpha:0, delay:2}); + + * The above code animates mc.x to 100, then mc.y to 50, and finally + * mc.alpha to 0 (notice the delay in all but the first tween). But + * imagine if you wanted to increase the duration of the first tween to 1.5 - you'd need to + * adjust every delay thereafter. And what if you want to pause() the whole + * sequence or restart() it or reverse() it on-the-fly or repeat + * it twice? This becomes quite messy (or flat-out impossible), but TimelineMax makes it + * incredibly simple: + * + * +var tl = new TimelineMax({repeat:2, repeatDelay:1}); +tl.add( TweenLite.to(mc, 1, {x:100}) ); +tl.add( TweenLite.to(mc, 1, {y:50}) ); +tl.add( TweenLite.to(mc, 1, {alpha:0}) ); + +//then later, control the whole thing... +tl.pause(); +tl.resume(); +tl.seek(1.5); +tl.reverse(); +... + + * Or use the convenient to() method and chaining to make it even shorter: + * +var tl = new TimelineMax(); +tl.to(mc, 1, {x:100}).to(mc, 1, {y:50}).to(mc, 1, {alpha:0}); + + * + *

    Now you can feel free to adjust any of the tweens without worrying about trickle-down + * changes to delays. Increase the duration of that first tween and everything automatically + * adjusts.

    + * + *

    Here are some other benefits and features of TimelineMax:

    + * + *
      + *
    • Things can overlap on the timeline as much as you want. You have complete control + * over where tweens/timelines are placed. Most other animation tools can only do basic + * one-after-the-other sequencing but can't allow things to overlap. Imagine appending + * a tween that moves an object and you want it to start fading out 0.5 seconds before the + * end of that tween? With TimelineMax it's easy.
    • + * + *
    • Add labels, callbacks, play(), stop(), seek(), restart(), and even reverse() smoothly anytime.
    • + * + *
    • Nest timelines within timelines as deeply as you want. This means you can modularize + * your code and make it far more efficient. Imagine building your app with common animateIn() + * and animateOut() methods that return a tween or timeline instance, then you can string + * things together like + * myTimeline.add( myObject.animateIn() ).add( myObject.animateOut(), "+=4").add( myObject2.animateIn(), "-=0.5")...
    • + * + *
    • Speed up or slow down the entire timeline with its timeScale() method. + * You can even tween it to gradually speed up or slow down the animation smoothly.
    • + * + *
    • Get or set the progress of the timeline using its progress() or + * totalProgress() methods. For example, to skip to the halfway point, + * set myTimeline.progress(0.5);
    • + * + *
    • Tween the time, totalTime, progress, or totalProgress to + * fastforward/rewind the timeline. You could even attach a slider to one of these to give the + * user the ability to drag forward/backward through the timeline.
    • + * + *
    • Add onComplete, onStart, onUpdate, onRepeat and/or onReverseComplete + * callbacks using the constructor's vars object like + * var tl = new TimelineMax({onComplete:myFunction});
    • + * + *
    • Kill the tweens of a particular object inside the timeline with kill(null, target) + * or get the tweens of an object with getTweensOf() or get all the tweens/timelines + * in the timeline with getChildren()
    • + * + *
    • Set the timeline to repeat any number of times or indefinitely. You can even set a delay + * between each repeat cycle and/or cause the repeat cycles to yoyo, appearing to reverse direction + * every other cycle.
    • + * + *
    • listen for START, UPDATE, REPEAT, REVERSE_COMPLETE, and COMPLETE events.
    • + * + *
    • get the active tweens in the timeline with getActive().
    • + * + *
    • By passing useFrames:true in the vars parameter, you can + * base the timing on frames instead of seconds. Please note, however, that + * the timeline's timing mode dictates its childrens' timing mode as well.
    • + * + *
    • Get the currentLabel() or find labels at various positions in the timeline + * using getLabelAfter() and getLabelBefore()
    • + * + *
    • You can export all the tween/timelines from the root (master) timeline anytime into + * a TimelineLite instance using TimelineLite.exportRoot() so that + * you can pause() them all or reverse() or alter their + * timeScale, etc. without affecting tweens/timelines that you create in + * the future. Imagine a game that has all its animation driven by the GreenSock + * Animation Platform and it needs to pause or slow down while a status screen pops up. + * Very easy.
    • + * + *
    + * + * + *

    SPECIAL PROPERTIES:

    + *

    You can optionally use the constructor's vars parameter to define any of + * the special properties below (syntax example: new TimelineMax({onComplete:myFunction, repeat:2, repeatDelay:1, yoyo:true});

    + * + *
      + *
    • delay : Number - + * Amount of delay in seconds (or frames for frames-based tweens) before the timeline should begin.
    • + * + *
    • paused : Boolean - + * If true, the timeline will pause itself immediately upon creation (by default, + * timelines automatically begin playing immediately). If you plan to create a TimelineMax and + * then populate it later (after one or more frames elapse), it is typically best to set + * paused:true and then play() after you populate it.
    • + * + *
    • onComplete : Function - + * A function that should be called when the timeline has completed
    • + * + *
    • onCompleteParams : Array - + * An Array of parameters to pass the onComplete function. For example, + * new TimelineMax({onComplete:myFunction, onCompleteParams:["param1", "param2"]}); + * To self-reference the timeline instance itself in one of the parameters, use "{self}", + * like: onCompleteParams:["{self}", "param2"]
    • + * + *
    • useFrames : Boolean - + * If useFrames is true, the timelines's timing will be + * based on frames instead of seconds because it is intially added to the root + * frames-based timeline. This causes both its duration + * and delay to be based on frames. An animations's timing mode is + * always determined by its parent timeline.
    • + * + *
    • tweens : Array - + * To immediately insert several tweens into the timeline, use the tweens + * special property to pass in an Array of TweenLite/TweenMax/TimelineLite/TimelineMax + * instances. You can use this in conjunction with the align and + * stagger special properties to set up complex sequences with minimal code. + * These values simply get passed to the add() method.
    • + * + *
    • align : String - + * Only used in conjunction with the tweens special property when multiple + * tweens are to be inserted immediately. The value simply gets passed to the + * add() method. The default is "normal". + * Options are: + *
        + *
      • "sequence": aligns the tweens one-after-the-other in a sequence
      • + *
      • "start": aligns the start times of all of the tweens (ignores delays)
      • + *
      • "normal": aligns the start times of all the tweens (honors delays)
      • + *
      + * The align special property does not force all child + * tweens/timelines to maintain relative positioning, so for example, if you use + * "sequence" and then later change the duration of one of the nested tweens, + * it does not force all subsequent timelines to change their position. + * The align special property only affects the alignment of the tweens that are + * initially placed into the timeline through the tweens special property of + * the vars object.
    • + * + *
    • stagger : Number - + * Only used in conjunction with the tweens special property when multiple + * tweens are to be inserted immediately. It staggers the tweens by a set amount of time + * in seconds (or in frames if useFrames is true). For example, if the + * stagger value is 0.5 and the "align" property is set to "start", the + * second tween will start 0.5 seconds after the first one starts, then 0.5 seconds + * later the third one will start, etc. If the align property is "sequence", + * there would be 0.5 seconds added between each tween. This value simply gets + * passed to the add() method. Default is 0.
    • + * + *
    • onStart : Function - + * A function that should be called when the timeline begins (when its time + * changes from 0 to some other value which can happen more than once if the + * timeline is restarted multiple times).
    • + * + *
    • onStartParams : Array - + * An Array of parameters to pass the onStart function. For example, + * new TimelineMax({onStart:myFunction, onStartParams:["param1", "param2"]}); + * To self-reference the timeline instance itself in one of the parameters, use "{self}", + * like: onStartParams:["{self}", "param2"]
    • + * + *
    • onUpdate : Function - + * A function that should be called every time the timeline updates + * (on every frame while the timeline is active)
    • + * + *
    • onUpdateParams : Array - + * An Array of parameters to pass the onUpdate function. For example, + * new TimelineMax({onUpdate:myFunction, onUpdateParams:["param1", "param2"]}); + * To self-reference the timeline instance itself in one of the parameters, use "{self}", + * like: onUpdateParams:["{self}", "param2"]
    • + * + *
    • onReverseComplete : Function - + * A function that should be called when the timeline has reached its beginning again from the + * reverse direction. For example, if reverse() is called, the timeline will move + * back towards its beginning and when its time reaches 0, onReverseComplete + * will be called. This can also happen if the timeline is placed in a TimelineLite or TimelineMax + * instance that gets reversed and plays the timeline backwards to (or past) the beginning.
    • + * + *
    • onReverseCompleteParams : Array - + * An Array of parameters to pass the onReverseComplete function. For example, + * new TimelineMax({onReverseComplete:myFunction, onReverseCompleteParams:["param1", "param2"]}); + * To self-reference the timeline instance itself in one of the parameters, use "{self}", + * like: onReverseCompleteParams:["{self}", "param2"]
    • + * + *
    • autoRemoveChildren : Boolean - + * If autoRemoveChildren is set to true, as soon as child + * tweens/timelines complete, they will automatically get killed/removed. This is normally + * undesireable because it prevents going backwards in time (like if you want to + * reverse() or set the progress lower, etc.). It can, however, + * improve speed and memory management. The root timelines use autoRemoveChildren:true.
    • + * + *
    • smoothChildTiming : Boolean - + * Controls whether or not child tweens/timelines are repositioned automatically + * (changing their startTime) in order to maintain smooth playback when + * properties are changed on-the-fly. For example, imagine that the timeline's playhead is + * on a child tween that is 75% complete, moving mc.x from 0 to 100 and then that tween's + * reverse() method is called. If smoothChildTiming is false + * (the default except for the root timelines), the tween would flip in place, keeping its + * startTime consistent. Therefore the playhead of the timeline would now be + * at the tween's 25% completion point instead of 75%. Remember, the timeline's playhead + * position and direction are unaffected by child tween/timeline changes. mc.x would jump + * from 75 to 25, but the tween's position in the timeline would remain consistent. However, + * if smoothChildTiming is true, that child tween's + * startTime would be adjusted so that the timeline's playhead intersects + * with the same spot on the tween (75% complete) as it had immediately before + * reverse() was called, thus playback appears perfectly smooth. mc.x + * would still be 75 and it would continue from there as the playhead moves on, but + * since the tween is reversed now mc.x will travel back towards 0 instead of 100. + * Ultimately it's a decision between prioritizing smooth on-the-fly playback + * (true) or consistent position(s) of child tweens/timelines + * (false). + * + * Some examples of on-the-fly changes to child tweens/timelines that could cause their + * startTime to change when smoothChildTiming is true + * are: reversed, timeScale, progress, totalProgress, time, totalTime, delay, pause, + * resume, duration, and totalDuration.
    • + * + *
    • repeat : Number - + * Number of times that the timeline should repeat after its first iteration. For example, + * if repeat is 1, the timeline will play a total of twice (the initial play + * plus 1 repeat). To repeat indefinitely, use -1. repeat should always be an integer.
    • + * + *
    • repeatDelay : Number - + * Amount of time in seconds (or frames for frames-based timelines) between repeats. For example, + * if repeat is 2 and repeatDelay is 1, the timeline will play initially, + * then wait for 1 second before it repeats, then play again, then wait 1 second again before + * doing its final repeat.
    • + * + *
    • yoyo : Boolean - + * If true, every other repeat cycle will run in the opposite + * direction so that the timeline appears to go back and forth (forward then backward). + * This has no affect on the "reversed" property though. So if repeat + * is 2 and yoyo is false, it will look like: + * start - 1 - 2 - 3 - 1 - 2 - 3 - 1 - 2 - 3 - end. But if yoyo is true, + * it will look like: start - 1 - 2 - 3 - 3 - 2 - 1 - 1 - 2 - 3 - end.
    • + * + *
    • onRepeat : Function - + * A function that should be called each time the timeline repeats
    • + * + *
    • onRepeatParams : Array - + * An Array of parameters to pass the onRepeat function. For example, + * new TimelineMax({repeat:3, onRepeat:myFunction, onRepeatParams:[mc, "param2"]}); + * To self-reference the timeline instance itself in one of the parameters, use "{self}", + * like: onRepeatParams:["{self}", "param2"]
    • + * + *
    • onStartListener : Function (AS3 only) - + * A function that should be called (and passed an event parameter) when the timeline begins + * (when its totalTime changes from 0 to some other value which can happen more + * than once if the timeline is restarted multiple times). Identical to onStart except + * that the function will always be passed an event parameter whose target property points + * to the timeline. It's the same as doing myTimeline.addEventListener("start", myFunction);. + * Unless you need the event parameter, it's better/faster to use onStart.
    • + * + *
    • onUpdateListener : Function (AS3 only) - + * A function that should be called (and passed an event parameter) each time the timeline updates + * (on every frame while the timeline is active). Identical to onUpdate except + * that the function will always be passed an event parameter whose target property points + * to the timeline. It's the same as doing myTimeline.addEventListener("update", myFunction);. + * Unless you need the event parameter, it's better/faster to use onUpdate.
    • + * + *
    • onCompleteListener : Function (AS3 only) - + * A function that should be called (and passed an event parameter) each time the timeline completes. + * Identical to onComplete except that the function will always be passed an event + * parameter whose target property points to the timeline. It's the same as doing + * myTimeline.addEventListener("complete", myFunction);. + * Unless you need the event parameter, it's better/faster to use onComplete.
    • + * + *
    • onReverseCompleteListener : Function (AS3 only) - + * A function that should be called (and passed an event parameter) each time the timeline has reached + * its beginning again from the reverse direction. For example, if reverse() is called + * the timeline will move back towards its beginning and when its totalTime reaches 0, + * onReverseCompleteListener will be called. This can also happen if the timeline is placed + * in another TimelineLite or TimelineMax instance that gets reversed and plays the timeline backwards to + * (or past) the beginning. Identical to onReverseComplete except that the function + * will always be passed an event parameter whose target property points to the timeline. + * It's the same as doing myTimeline.addEventListener("reverseComplete", myFunction);. + * Unless you need the event parameter, it's better/faster to use onReverseComplete.
    • + * + *
    • onRepeatListener : Function (AS3 only) - + * A function that should be called (and passed an event parameter) each time the timeline repeats. + * Identical to onRepeat except that the function will always be passed an event + * parameter whose target property points to the timeline. It's the same as doing + * myTimeline.addEventListener("repeat", myFunction);. + * Unless you need the event parameter, it's better/faster to use onRepeat.
    • + * + *
    + * + * @example Sample code:+//create the timeline that repeats 3 times with 1 second between each repeat and then calls myFunction() when it completes +var tl = new TimelineMax({repeat:3, repeatDelay:1, onComplete:myFunction}); + +//add a tween +tl.add( new TweenLite(mc, 1, {x:200, y:100}) ); + +//add another tween at the end of the timeline (makes sequencing easy) +tl.add( new TweenLite(mc, 0.5, {alpha:0}) ); + +//append a tween using the convenience method (shorter syntax) and offset it by 0.5 seconds +tl.to(mc, 1, {rotation:30}, "+=0.5"); + +//reverse anytime +tl.reverse(); + +//Add a "spin" label 3-seconds into the timeline +tl.addLabel("spin", 3); + +//insert a rotation tween at the "spin" label (you could also define the insertion point as the time instead of a label) +tl.add( new TweenLite(mc, 2, {rotation:"360"}), "spin"); + +//go to the "spin" label and play the timeline from there +tl.play("spin"); + +//nest another TimelineMax inside your timeline... +var nested = new TimelineMax(); +nested.to(mc2, 1, {x:200})); +tl.add(nested); + + * + *

    How do timelines work? What are the mechanics like?

    + *

    Every animation (tween and timeline) is placed on a parent timeline (except the 2 root timelines - there's one for normal tweens and another for "useFrames" ones). + * In a sense, they all have their own playheads (that's what its "time" refers to, or "totalTime" which is identical except that it includes repeats and repeatDelays) + * but generally they're not independent because they're sitting on a timeline whose playhead moves. + * When the parent's playhead moves to a new position, it updates the childrens' too.

    + * + *

    When a timeline renders at a particular time, it loops through its children and says "okay, you should render as if your playhead is at ____" and if that child + * is a timeline with children, it does the same to its children, right on down the line.

    + * + *

    The only exception is when the tween/timeline is paused in which case its internal playhead acts like it's "locked". So in that case, + * it's possible (likely in fact) that the child's playhead would not be synced with the parent's. + * When you unpause it (resume()), it essentially picks it up and moves it so that its internal playhead + * is synchronized with wherever the parent's playhead is at that moment, thus things play perfectly smoothly. + * That is, unless the timeline's smoothChildTiming is to false in which case it won't move - + * its startTime will remain locked to where it was.

    + * + *

    So basically, when smoothChildTiming is true, the engine will rearrange things on + * the fly to ensure the playheads line up so that playback is seamless and smooth. The same thing happens when you reverse() + * or alter the timeScale, etc. But sometimes you might not want that behavior - you prefer to have tight + * control over exactly where your tweens line up in the timeline - that's when smoothChildTiming:false is handy.

    + * + *

    One more example: let's say you've got a 10-second tween that's just sitting on the root timeline and you're 2-seconds into the tween. + * Let's assume it started at exactly 0 on the root to make this easy, and then when it's at 2-seconds, you do tween.seek(5). + * The playhead of the root isn't affected - it keeps going exactly as it always did, but in order to make that tween jump to 5 seconds + * and play appropriately, the tween's startTime gets changed to -3. That way, the tween's playhead and the root + * playhead are perfectly aligned.

    + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + * + **/ + public class TimelineMax extends TimelineLite implements IEventDispatcher { + /** @private **/ + public static const version:String = "12.1.5"; + /** @private **/ + protected static var _listenerLookup:Object = {onCompleteListener:TweenEvent.COMPLETE, onUpdateListener:TweenEvent.UPDATE, onStartListener:TweenEvent.START, onRepeatListener:TweenEvent.REPEAT, onReverseCompleteListener:TweenEvent.REVERSE_COMPLETE}; + /** @private **/ + protected static var _easeNone:Ease = new Ease(null, null, 1, 0); + + /** @private **/ + protected var _repeat:int; + /** @private **/ + protected var _repeatDelay:Number; + /** @private **/ + protected var _cycle:int = 0; + /** @private **/ + protected var _locked:Boolean; + /** @private **/ + protected var _dispatcher:EventDispatcher; + /** @private **/ + protected var _hasUpdateListener:Boolean; + + /** + * @private + * Works in conjunction with the repeat property, determining the behavior of each cycle; when yoyo is true, + * the timeline will go back and forth, appearing to reverse every other cycle (this has no affect on the reversed property though). + * So if repeat is 2 and yoyo is false, it will look like: start - 1 - 2 - 3 - 1 - 2 - 3 - 1 - 2 - 3 - end. + * But if repeat is 2 and yoyo is true, it will look like: start - 1 - 2 - 3 - 3 - 2 - 1 - 1 - 2 - 3 - end. + **/ + protected var _yoyo:Boolean; + + /** + * Constructor. + * + *

    SPECIAL PROPERTIES

    + *

    The following special properties may be passed in via the constructor's vars parameter, like + * new TimelineMax({paused:true, onComplete:myFunction, repeat:2, yoyo:true})

    + * + *
      + *
    • delay : Number - + * Amount of delay in seconds (or frames for frames-based tweens) before the timeline should begin.
    • + * + *
    • paused : Boolean - + * If true, the timeline will pause itself immediately upon creation (by default, + * timelines automatically begin playing immediately). If you plan to create a TimelineMax and + * then populate it later (after one or more frames elapse), it is typically best to set + * paused:true and then play() after you populate it.
    • + * + *
    • onComplete : Function - + * A function that should be called when the timeline has completed
    • + * + *
    • onCompleteParams : Array - + * An Array of parameters to pass the onComplete function. For example, + * new TimelineMax({onComplete:myFunction, onCompleteParams:["param1", "param2"]});
    • + * + *
    • useFrames : Boolean - + * If useFrames is true, the timelines's timing will be + * based on frames instead of seconds because it is intially added to the root + * frames-based timeline. This causes both its duration + * and delay to be based on frames. An animations's timing mode is + * always determined by its parent timeline.
    • + * + *
    • tweens : Array - + * To immediately insert several tweens into the timeline, use the tweens + * special property to pass in an Array of TweenLite/TweenMax/TimelineLite/TimelineMax + * instances. You can use this in conjunction with the align and + * stagger special properties to set up complex sequences with minimal code. + * These values simply get passed to the add() method.
    • + * + *
    • align : String - + * Only used in conjunction with the tweens special property when multiple + * tweens are to be inserted immediately. The value simply gets passed to the + * add() method. The default is "normal". + * Options are: + *
        + *
      • "sequence": aligns the tweens one-after-the-other in a sequence
      • + *
      • "start": aligns the start times of all of the tweens (ignores delays)
      • + *
      • "normal": aligns the start times of all the tweens (honors delays)
      • + *
      + * The align special property does not force all child + * tweens/timelines to maintain relative positioning, so for example, if you use + * "sequence" and then later change the duration of one of the nested tweens, + * it does not force all subsequent timelines to change their position. + * The align special property only affects the alignment of the tweens that are + * initially placed into the timeline through the tweens special property of + * the vars object.
    • + * + *
    • stagger : Number - + * Only used in conjunction with the tweens special property when multiple + * tweens are to be inserted immediately. It staggers the tweens by a set amount of time + * in seconds (or in frames if useFrames is true). For example, if the + * stagger value is 0.5 and the "align" property is set to "start", the + * second tween will start 0.5 seconds after the first one starts, then 0.5 seconds + * later the third one will start, etc. If the align property is "sequence", + * there would be 0.5 seconds added between each tween. This value simply gets + * passed to the add() method. Default is 0.
    • + * + *
    • onStart : Function - + * A function that should be called when the timeline begins (when its time + * changes from 0 to some other value which can happen more than once if the + * timeline is restarted multiple times).
    • + * + *
    • onStartParams : Array - + * An Array of parameters to pass the onStart function. For example, + * new TimelineMax({onStart:myFunction, onStartParams:["param1", "param2"]});
    • + * + *
    • onUpdate : Function - + * A function that should be called every time the timeline updates + * (on every frame while the timeline is active)
    • + * + *
    • onUpdateParams : Array - + * An Array of parameters to pass the onUpdate function. For example, + * new TimelineMax({onUpdate:myFunction, onUpdateParams:["param1", "param2"]});
    • + * + *
    • onReverseComplete : Function - + * A function that should be called when the timeline has reached its beginning again from the + * reverse direction. For example, if reverse() is called, the timeline will move + * back towards its beginning and when its time reaches 0, onReverseComplete + * will be called. This can also happen if the timeline is placed in a TimelineLite or TimelineMax + * instance that gets reversed and plays the timeline backwards to (or past) the beginning.
    • + * + *
    • onReverseCompleteParams : Array - + * An Array of parameters to pass the onReverseComplete function. For example, + * new TimelineMax({onReverseComplete:myFunction, onReverseCompleteParams:["param1", "param2"]});
    • + * + *
    • autoRemoveChildren : Boolean - + * If autoRemoveChildren is set to true, as soon as child + * tweens/timelines complete, they will automatically get killed/removed. This is normally + * undesireable because it prevents going backwards in time (like if you want to + * reverse() or set the progress lower, etc.). It can, however, + * improve speed and memory management. The root timelines use autoRemoveChildren:true.
    • + * + *
    • smoothChildTiming : Boolean - + * Controls whether or not child tweens/timelines are repositioned automatically + * (changing their startTime) in order to maintain smooth playback when + * properties are changed on-the-fly. For example, imagine that the timeline's playhead is + * on a child tween that is 75% complete, moving mc.x from 0 to 100 and then that tween's + * reverse() method is called. If smoothChildTiming is false + * (the default except for the root timelines), the tween would flip in place, keeping its + * startTime consistent. Therefore the playhead of the timeline would now be + * at the tween's 25% completion point instead of 75%. Remember, the timeline's playhead + * position and direction are unaffected by child tween/timeline changes. mc.x would jump + * from 75 to 25, but the tween's position in the timeline would remain consistent. However, + * if smoothChildTiming is true, that child tween's + * startTime would be adjusted so that the timeline's playhead intersects + * with the same spot on the tween (75% complete) as it had immediately before + * reverse() was called, thus playback appears perfectly smooth. mc.x + * would still be 75 and it would continue from there as the playhead moves on, but + * since the tween is reversed now mc.x will travel back towards 0 instead of 100. + * Ultimately it's a decision between prioritizing smooth on-the-fly playback + * (true) or consistent position(s) of child tweens/timelines + * (false). + * + * Some examples of on-the-fly changes to child tweens/timelines that could cause their + * startTime to change when smoothChildTiming is true + * are: reversed, timeScale, progress, totalProgress, time, totalTime, delay, pause, + * resume, duration, and totalDuration.
    • + * + *
    • repeat : Number - + * Number of times that the timeline should repeat after its first iteration. For example, + * if repeat is 1, the timeline will play a total of twice (the initial play + * plus 1 repeat). To repeat indefinitely, use -1. repeat should always be an integer.
    • + * + *
    • repeatDelay : Number - + * Amount of time in seconds (or frames for frames-based timelines) between repeats. For example, + * if repeat is 2 and repeatDelay is 1, the timeline will play initially, + * then wait for 1 second before it repeats, then play again, then wait 1 second again before + * doing its final repeat.
    • + * + *
    • yoyo : Boolean - + * If true, every other repeat cycle will run in the opposite + * direction so that the timeline appears to go back and forth (forward then backward). + * This has no affect on the "reversed" property though. So if repeat + * is 2 and yoyo is false, it will look like: + * start - 1 - 2 - 3 - 1 - 2 - 3 - 1 - 2 - 3 - end. But if yoyo is true, + * it will look like: start - 1 - 2 - 3 - 3 - 2 - 1 - 1 - 2 - 3 - end.
    • + * + *
    • onRepeat : Function - + * A function that should be called each time the timeline repeats
    • + * + *
    • onRepeatParams : Array - + * An Array of parameters to pass the onRepeat function. For example, + * new TimelineMax({repeat:3, onRepeat:myFunction, onRepeatParams:[mc, "param2"]});
    • + * + *
    • onStartListener : Function - + * A function that should be called (and passed an event parameter) when the timeline begins + * (when its totalTime changes from 0 to some other value which can happen more + * than once if the timeline is restarted multiple times). Identical to onStart except + * that the function will always be passed an event parameter whose target property points + * to the timeline. It's the same as doing myTimeline.addEventListener("start", myFunction);. + * Unless you need the event parameter, it's better/faster to use onStart.
    • + * + *
    • onUpdateListener : Function - + * A function that should be called (and passed an event parameter) each time the timeline updates + * (on every frame while the timeline is active). Identical to onUpdate except + * that the function will always be passed an event parameter whose target property points + * to the timeline. It's the same as doing myTimeline.addEventListener("update", myFunction);. + * Unless you need the event parameter, it's better/faster to use onUpdate.
    • + * + *
    • onCompleteListener : Function - + * A function that should be called (and passed an event parameter) each time the timeline completes. + * Identical to onComplete except that the function will always be passed an event + * parameter whose target property points to the timeline. It's the same as doing + * myTimeline.addEventListener("complete", myFunction);. + * Unless you need the event parameter, it's better/faster to use onComplete.
    • + * + *
    • onReverseCompleteListener : Function - + * A function that should be called (and passed an event parameter) each time the timeline has reached + * its beginning again from the reverse direction. For example, if reverse() is called + * the timeline will move back towards its beginning and when its totalTime reaches 0, + * onReverseCompleteListener will be called. This can also happen if the timeline is placed + * in another TimelineLite or TimelineMax instance that gets reversed and plays the timeline backwards to + * (or past) the beginning. Identical to onReverseComplete except that the function + * will always be passed an event parameter whose target property points to the timeline. + * It's the same as doing myTimeline.addEventListener("reverseComplete", myFunction);. + * Unless you need the event parameter, it's better/faster to use onReverseComplete.
    • + * + *
    • onRepeatListener : Function - + * A function that should be called (and passed an event parameter) each time the timeline repeats. + * Identical to onRepeat except that the function will always be passed an event + * parameter whose target property points to the timeline. It's the same as doing + * myTimeline.addEventListener("repeat", myFunction);. + * Unless you need the event parameter, it's better/faster to use onRepeat.
    • + * + *
    + * + * @param vars optionally pass in special properties like useFrames, onComplete, onCompleteParams, onUpdate, onUpdateParams, onStart, onStartParams, tweens, align, stagger, delay, autoRemoveChildren, onCompleteListener, onStartListener, onUpdateListener, repeat, repeatDelay, and/or yoyo. + */ + public function TimelineMax(vars:Object=null) { + super(vars); + _repeat = this.vars.repeat || 0; + _repeatDelay = this.vars.repeatDelay || 0; + _yoyo = (this.vars.yoyo == true); + _dirty = true; + if (this.vars.onCompleteListener || this.vars.onUpdateListener || this.vars.onStartListener || this.vars.onRepeatListener || this.vars.onReverseCompleteListener) { + _initDispatcher(); + } + } + + /** @inheritDoc **/ + override public function invalidate():* { + _yoyo = Boolean(this.vars.yoyo == true); + _repeat = this.vars.repeat || 0; + _repeatDelay = this.vars.repeatDelay || 0; + _hasUpdateListener = false; + _initDispatcher(); + _uncache(true); + return super.invalidate(); + } + + /** + * Inserts a callback at a particular position. The callback is technically considered a + * zero-duration tween, so if you getChildren() there will be a tween returned for each callback. + * You can discern a callback from other tweens by the fact that its target is a function matching + * its vars.onComplete and its duration is zero. + * + *

    If your goal is to append the callback to the end of the timeline, it would be easier + * (more concise) to use the call() method. Technically the add() method + * can accommodate adding a callback too (like myTimeline.add(myFunction, 2) + * or myTimeline.add(myFunction, "+=2")) but add() doesn't accommodate parameters.

    + * + *

    JavaScript and AS2 note: - Due to the way JavaScript and AS2 don't + * maintain scope (what "this" refers to, or the context) in function calls, + * it can be useful to define the scope specifically. Therefore, in the JavaScript and AS2 + * versions accept an extra (4th) parameter for scope.

    + * + * @param function The function to be called + * @param position The time in seconds (or frames for frames-based timelines) or label at which the callback should be inserted. For example, myTimeline.addCallback(myFunction, 3) would call myFunction() 3 seconds into the timeline, and myTimeline.addCallback(myFunction, "myLabel") would call it at the "myLabel" label. myTimeline.addCallback(myFunction, "+=2") would insert the callback 2 seconds after the end of the timeline. + * @param params An Array of parameters to pass the callback + * @return self (makes chaining easier) + * + * @see #call() + * @see #add() + * @see #removeCallback() + */ + public function addCallback(callback:Function, position:*, params:Array=null):TimelineMax { + return add( TweenLite.delayedCall(0, callback, params), position) as TimelineMax; + } + + /** + * Removes a callback. If the position parameter + * is null, all callbacks of that function are removed from the timeline. + * + * @param function callback function to be removed + * @param position the time in seconds (or frames for frames-based timelines) or label from which the callback should be removed. For example, myTimeline.removeCallback(myFunction, 3) would remove the callback from 3-seconds into the timeline, and myTimeline.removeCallback(myFunction, "myLabel") would remove it from the "myLabel" label, and myTimeline.removeCallback(myFunction, null) would remove ALL callbacks of that function regardless of where they are on the timeline. + * @return self (makes chaining easier) + * + * @see #addCallback() + * @see #call() + * @see #kill() + */ + public function removeCallback(callback:Function, position:*=null):TimelineMax { + if (callback != null) { + if (position == null) { + _kill(null, callback); + } else { + var a:Array = getTweensOf(callback, false), + i:int = a.length, + time:Number = _parseTimeOrLabel(position); + while (--i > -1) { + if (a[i]._startTime === time) { + a[i]._enabled(false, false); + } + } + } + } + return this; + } + + /** + * Creates a linear tween that essentially scrubs the playhead to a particular time or label and + * then stops. For example, to make the TimelineMax play to the "myLabel2" label, simply do: + * + *

    + * myTimeline.tweenTo("myLabel2"); + *

    + * + *

    If you want advanced control over the tween, like adding an onComplete or changing the ease or + * adding a delay, just pass in a vars object with the appropriate properties. For example, + * to tween to the 5-second point on the timeline and then call a function named myFunction + * and pass in a parameter that's references this TimelineMax and use a Strong.easeOut ease, you'd do:

    + * + *

    + * myTimeline.tweenTo(5, {onComplete:myFunction, onCompleteParams:[myTimeline], ease:Strong.easeOut}); + *

    + * + *

    Remember, this method simply creates a TweenLite instance that pauses the timeline and then tweens + * the time() of the timeline. So you can store a reference to that tween if you want, and + * you can kill() it anytime. Also note that tweenTo() does NOT affect the timeline's + * reversed state. So if your timeline is oriented normally (not reversed) and you tween to + * a time/label that precedes the current time, it will appear to go backwards but the reversed + * state will not change to true. Also note that tweenTo() + * pauses the timeline immediately before tweening its time(), and it does not automatically + * resume after the tween completes. If you need to resume playback, you could always use an onComplete + * to call the timeline's resume() method.

    + * + *

    If you plan to sequence multiple playhead tweens one-after-the-other, it is typically better to use + * tweenFromTo() so that you can define the starting point and ending point, allowing the + * duration to be accurately determined immediately.

    + * + * @param position The destination time in seconds (or frame if the timeline is frames-based) or label to which the timeline should play. For example, myTimeline.tweenTo(5) would play from wherever the timeline is currently to the 5-second point whereas myTimeline.tweenTo("myLabel") would play to wherever "myLabel" is on the timeline. + * @param vars An optional vars object that will be passed to the TweenLite instance. This allows you to define an onComplete, ease, delay, or any other TweenLite special property. + * @return A TweenLite instance that handles tweening the timeline to the desired time/label. + * + * @see #tweenFromTo() + * @see #seek() + */ + public function tweenTo(position:*, vars:Object=null):TweenLite { + vars = vars || {}; + var copy:Object = {ease:_easeNone, overwrite:(vars.delay ? 2 : 1), useFrames:usesFrames(), immediateRender:false}; + for (var p:String in vars) { + copy[p] = vars[p]; + } + copy.time = _parseTimeOrLabel(position); + var duration:Number = (Math.abs(Number(copy.time) - _time) / _timeScale) || 0.001; + var t:TweenLite = new TweenLite(this, duration, copy); + copy.onStart = function():void { + t.target.paused(true); + if (t.vars.time != t.target.time() && duration === t.duration()) { //don't make the duration zero - if it's supposed to be zero, don't worry because it's already initting the tween and will complete immediately, effectively making the duration zero anyway. If we make duration zero, the tween won't run at all. + t.duration( Math.abs( t.vars.time - t.target.time()) / t.target._timeScale ); + } + if (vars.onStart) { //in case the user had an onStart in the vars - we don't want to overwrite it. + vars.onStart.apply(null, vars.onStartParams); + } + } + return t; + } + + /** + * Creates a linear tween that essentially scrubs the playhead from a particular time or label + * to another time or label and then stops. If you plan to sequence multiple playhead tweens + * one-after-the-other, tweenFromTo() is better to use than tweenTo() + * because it allows the duration to be determined immediately, ensuring that subsequent tweens + * that are appended to a sequence are positioned appropriately. For example, to make the + * TimelineMax play from the label "myLabel1" to the "myLabel2" label, and then from "myLabel2" + * back to the beginning (a time of 0), simply do: + * + * +var tl:TimelineMax = new TimelineMax(); +tl.add( myTimeline.tweenFromTo("myLabel1", "myLabel2") ); +tl.add( myTimeline.tweenFromTo("myLabel2", 0) ); + + * + *

    If you want advanced control over the tween, like adding an onComplete or changing the ease + * or adding a delay, just pass in a vars object with the appropriate properties. For example, + * to tween from the start (0) to the 5-second point on the timeline and then call a function + * named myFunction and pass in a parameter that references this TimelineMax and + * use a Strong.easeOut ease, you'd do:

    + * + *

    + * myTimeline.tweenFromTo(0, 5, {onComplete:myFunction, onCompleteParams:[myTimeline], ease:Strong.easeOut}); + *

    + * + *

    Remember, this method simply creates a TweenLite instance that tweens the time() + * of your timeline. So you can store a reference to that tween if you want, and you can kill() + * it anytime. Also note that tweenFromTo() does NOT affect the timeline's + * reversed property. So if your timeline is oriented normally (not reversed) and you + * tween to a time/label that precedes the current time, it will appear to go backwards but the + * reversed property will not change to true. Also note that + * tweenFromTo() pauses the timeline immediately before tweening its time(), + * and it does not automatically resume after the tween completes. If you need to resume playback, + * you can always use an onComplete to call the resume() method.

    + * + *

    Like all from-type methods in GSAP, immediateRender is true by default, + * meaning the timeline will immediately jump to the "from" time/label unless you set immediateRender:false

    + * + * @param fromPosition The beginning time in seconds (or frame if the timeline is frames-based) or label from which the timeline should play. For example, myTimeline.tweenTo(0, 5) would play from 0 (the beginning) to the 5-second point whereas myTimeline.tweenFromTo("myLabel1", "myLabel2") would play from "myLabel1" to "myLabel2". + * @param toPosition The destination time in seconds (or frame if the timeline is frames-based) or label to which the timeline should play. For example, myTimeline.tweenTo(0, 5) would play from 0 (the beginning) to the 5-second point whereas myTimeline.tweenFromTo("myLabel1", "myLabel2") would play from "myLabel1" to "myLabel2". + * @param vars An optional vars object that will be passed to the TweenLite instance. This allows you to define an onComplete, ease, delay, or any other TweenLite special property. onInit is the only special property that is not available (tweenFromTo() sets it internally) + * @return TweenLite instance that handles tweening the timeline between the desired times/labels. + * + * @see #tweenTo() + * @see #seek() + */ + public function tweenFromTo(fromPosition:*, toPosition:*, vars:Object=null):TweenLite { + vars = vars || {}; + fromPosition = _parseTimeOrLabel(fromPosition); + vars.startAt = {onComplete:seek, onCompleteParams:[fromPosition]}; + vars.immediateRender = (vars.immediateRender !== false); + var t:TweenLite = tweenTo(toPosition, vars); + return t.duration((Math.abs( t.vars.time - fromPosition) / _timeScale) || 0.001) as TweenLite; + } + + + /** @private **/ + override public function render(time:Number, suppressEvents:Boolean=false, force:Boolean=false):void { + if (_gc) { + _enabled(true, false); + } + var totalDur:Number = (!_dirty) ? _totalDuration : totalDuration(), + prevTime:Number = _time, + prevTotalTime:Number = _totalTime, + prevStart:Number = _startTime, + prevTimeScale:Number = _timeScale, + prevRawPrevTime:Number = _rawPrevTime, + prevPaused:Boolean = _paused, + prevCycle:int = _cycle, + tween:Animation, isComplete:Boolean, next:Animation, dur:Number, callback:String, internalForce:Boolean; + + if (time >= totalDur) { + if (!_locked) { + _totalTime = totalDur; + _cycle = _repeat; + } + if (!_reversed) if (!_hasPausedChild()) { + isComplete = true; + callback = "onComplete"; + if (_duration === 0) if (time === 0 || _rawPrevTime < 0 || _rawPrevTime === _tinyNum) if (_rawPrevTime !== time && _first != null) { + internalForce = true; + if (_rawPrevTime > _tinyNum) { + callback = "onReverseComplete"; + } + } + } + _rawPrevTime = (_duration || !suppressEvents || time !== 0 || _rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline or tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient. + if (_yoyo && (_cycle & 1) != 0) { + _time = time = 0; + } else { + _time = _duration; + time = _duration + 0.0001; //to avoid occasional floating point rounding errors in Flash - sometimes child tweens/timelines were not being fully completed (their progress might be 0.999999999999998 instead of 1 because when Flash performed _time - tween._startTime, floating point errors would return a value that was SLIGHTLY off) + } + + } else if (time < 0.0000001) { //to work around occasional floating point math artifacts, round super small values to 0. + if (!_locked) { + _totalTime = _cycle = 0; + } + _time = 0; + if (prevTime !== 0 || (_duration === 0 && _rawPrevTime !== _tinyNum && (_rawPrevTime > 0 || (time < 0 && _rawPrevTime >= 0)) && !_locked)) { + callback = "onReverseComplete"; + isComplete = _reversed; + } + if (time < 0) { + _active = false; + if (_rawPrevTime >= 0 && _first) { //zero-duration timelines are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the "playhead" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's "playhead" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered. + internalForce = true; + } + _rawPrevTime = time; + } else { + _rawPrevTime = (_duration || !suppressEvents || time !== 0 || _rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline or tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient. + time = 0; //to avoid occasional floating point rounding errors (could cause problems especially with zero-duration tweens at the very beginning of the timeline) + if (!_initted) { + internalForce = true; + } + } + + } else { + if (_duration === 0 && _rawPrevTime < 0) { //without this, zero-duration repeating timelines (like with a simple callback nested at the very beginning and a repeatDelay) wouldn't render the first time through. + internalForce = true; + } + _time = _rawPrevTime = time; + if (!_locked) { + _totalTime = time; + if (_repeat != 0) { + var cycleDuration:Number = _duration + _repeatDelay; + _cycle = (_totalTime / cycleDuration) >> 0; //originally _totalTime % cycleDuration but floating point errors caused problems, so I normalized it. (4 % 0.8 should be 0 but Flash reports it as 0.79999999!) + if (_cycle !== 0) if (_cycle === _totalTime / cycleDuration) { + _cycle--; //otherwise when rendered exactly at the end time, it will act as though it is repeating (at the beginning) + } + _time = _totalTime - (_cycle * cycleDuration); + if (_yoyo) if ((_cycle & 1) != 0) { + _time = _duration - _time; + } + if (_time > _duration) { + _time = _duration; + time = _duration + 0.0001; //to avoid occasional floating point rounding errors in Flash - sometimes child tweens/timelines were not being fully completed (their progress might be 0.999999999999998 instead of 1 because when Flash performed _time - tween._startTime, floating point errors would return a value that was SLIGHTLY off) + } else if (_time < 0) { + _time = time = 0; + } else { + time = _time; + } + } + } + } + + if (_cycle != prevCycle) if (!_locked) { + /* + make sure children at the end/beginning of the timeline are rendered properly. If, for example, + a 3-second long timeline rendered at 2.9 seconds previously, and now renders at 3.2 seconds (which + would get transated to 2.8 seconds if the timeline yoyos or 0.2 seconds if it just repeats), there + could be a callback or a short tween that's at 2.95 or 3 seconds in which wouldn't render. So + we need to push the timeline to the end (and/or beginning depending on its yoyo value). Also we must + ensure that zero-duration tweens at the very beginning or end of the TimelineMax work. + */ + var backwards:Boolean = (_yoyo && (prevCycle & 1) !== 0), + wrap:Boolean = (backwards == (_yoyo && (_cycle & 1) !== 0)), + recTotalTime:Number = _totalTime, + recCycle:int = _cycle, + recRawPrevTime:Number = _rawPrevTime, + recTime:Number = _time; + + _totalTime = prevCycle * _duration; + if (_cycle < prevCycle) { + backwards = !backwards; + } else { + _totalTime += _duration; + } + _time = prevTime; //temporarily revert _time so that render() renders the children in the correct order. Without this, tweens won't rewind correctly. We could arhictect things in a "cleaner" way by splitting out the rendering queue into a separate method but for performance reasons, we kept it all inside this method. + + _rawPrevTime = prevRawPrevTime; + _cycle = prevCycle; + _locked = true; //prevents changes to totalTime and skips repeat/yoyo behavior when we recursively call render() + prevTime = (backwards) ? 0 : _duration; + render(prevTime, suppressEvents, false); + if (!suppressEvents) if (!_gc) { + if (vars.onRepeat) { + vars.onRepeat.apply(null, vars.onRepeatParams); + } + if (_dispatcher) { + _dispatcher.dispatchEvent(new TweenEvent(TweenEvent.REPEAT)); + } + } + if (wrap) { + prevTime = (backwards) ? _duration + 0.0001 : -0.0001; + render(prevTime, true, false); + } + _locked = false; + if (_paused && !prevPaused) { //if the render() triggered callback that paused this timeline, we should abort (very rare, but possible) + return; + } + _time = recTime; + _totalTime = recTotalTime; + _cycle = recCycle; + _rawPrevTime = recRawPrevTime; + } + + if ((_time == prevTime || !_first) && !force && !internalForce) { + if (prevTotalTime !== _totalTime) if (_onUpdate != null) if (!suppressEvents) { //so that onUpdate fires even during the repeatDelay - as long as the totalTime changed, we should trigger onUpdate. + _onUpdate.apply(vars.onUpdateScope || this, vars.onUpdateParams); + } + return; + } else if (!_initted) { + _initted = true; + } + + if (!_active) if (!_paused && _totalTime !== prevTotalTime && time > 0) { + _active = true; //so that if the user renders the timeline (as opposed to the parent timeline rendering it), it is forced to re-render and align it with the proper time/frame on the next rendering cycle. Maybe the timeline already finished but the user manually re-renders it as halfway done, for example. + } + + if (prevTotalTime == 0) if (_totalTime != 0) if (!suppressEvents) { + if (vars.onStart) { + vars.onStart.apply(this, vars.onStartParams); + } + if (_dispatcher) { + _dispatcher.dispatchEvent(new TweenEvent(TweenEvent.START)); + } + } + + if (_time >= prevTime) { + tween = _first; + while (tween) { + next = tween._next; //record it here because the value could change after rendering... + if (_paused && !prevPaused) { //in case a tween pauses the timeline when rendering + break; + } else if (tween._active || (tween._startTime <= _time && !tween._paused && !tween._gc)) { + + if (!tween._reversed) { + tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, force); + } else { + tween.render(((!tween._dirty) ? tween._totalDuration : tween.totalDuration()) - ((time - tween._startTime) * tween._timeScale), suppressEvents, force); + } + + } + tween = next; + } + } else { + tween = _last; + while (tween) { + next = tween._prev; //record it here because the value could change after rendering... + if (_paused && !prevPaused) { //in case a tween pauses the timeline when rendering + break; + } else if (tween._active || (tween._startTime <= prevTime && !tween._paused && !tween._gc)) { + + if (!tween._reversed) { + tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, force); + } else { + tween.render(((!tween._dirty) ? tween._totalDuration : tween.totalDuration()) - ((time - tween._startTime) * tween._timeScale), suppressEvents, force); + } + + } + tween = next; + } + } + + if (_onUpdate != null) if (!suppressEvents) { + _onUpdate.apply(null, vars.onUpdateParams); + } + if (_hasUpdateListener) if (!suppressEvents) { + _dispatcher.dispatchEvent(new TweenEvent(TweenEvent.UPDATE)); + } + + if (callback) if (!_locked) if (!_gc) if (prevStart === _startTime || prevTimeScale !== _timeScale) if (_time === 0 || totalDur >= totalDuration()) { //if one of the tweens that was rendered altered this timeline's startTime (like if an onComplete reversed the timeline), it probably isn't complete. If it is, don't worry, because whatever call altered the startTime would complete if it was necessary at the new time. The only exception is the timeScale property. Also check _gc because there's a chance that kill() could be called in an onUpdate + if (isComplete) { + if (_timeline.autoRemoveChildren) { + _enabled(false, false); + } + _active = false; + } + if (!suppressEvents) { + if (vars[callback]) { + vars[callback].apply(null, vars[callback + "Params"]); + } + if (_dispatcher) { + _dispatcher.dispatchEvent(new TweenEvent(((callback == "onComplete") ? TweenEvent.COMPLETE : TweenEvent.REVERSE_COMPLETE))); + } + } + } + } + + /** + * Returns the tweens/timelines that are currently active in the timeline, meaning the timeline's + * playhead is positioned on the child tween/timeline and the child isn't paused. + * + * @param nested Determines whether or not tweens and/or timelines that are inside nested timelines should be returned. If you only want the "top level" tweens/timelines, set this to false. + * @param tweens Determines whether or not tweens (TweenLite and TweenMax instances) should be included in the results + * @param timelines Determines whether or not child timelines (TimelineLite and TimelineMax instances) should be included in the results + * @return an Array of active tweens/timelines + */ + public function getActive(nested:Boolean=true, tweens:Boolean=true, timelines:Boolean=false):Array { + var a:Array = [], + all:Array = getChildren(nested, tweens, timelines), + cnt:int = 0, + l:int = all.length, + i:int, tween:Animation; + for (i = 0; i < l; i++) { + tween = all[i]; + //note: we cannot just check tween.active because timelines that contain paused children will continue to have "active" set to true even after the playhead passes their end point (technically a timeline can only be considered complete after all of its children have completed too, but paused tweens are...well...just waiting and until they're unpaused we don't know where their end point will be). + if (!tween._paused) if (tween._timeline._time >= tween._startTime) if (tween._timeline._time < tween._startTime + tween._totalDuration / tween._timeScale) if (!_getGlobalPaused(tween._timeline)) { + a[cnt++] = tween; + } + } + return a; + } + + /** @private **/ + protected static function _getGlobalPaused(tween:Animation):Boolean { + while (tween) { + if (tween._paused) { + return true; + } + tween = tween._timeline; + } + return false; + } + + /** + * Returns the next label (if any) that occurs after the time parameter. + * It makes no difference if the timeline is reversed ("after" means later in the timeline's local time zone). + * A label that is positioned exactly at the same time as the time parameter will be ignored. + * + *

    You could use getLabelAfter() in conjunction with tweenTo() to make + * the timeline tween to the next label like this:

    + * + *

    + * myTimeline.tweenTo( myTimeline.getLabelAfter() ); + *

    + * + * @param time Time after which the label is searched for. If you do not pass a time in, the current time will be used. + * @return Name of the label that is after the time passed to getLabelAfter() + * + * @see #getLabelBefore() + * @see #currentLabel() + */ + public function getLabelAfter(time:Number=NaN):String { + if (!time) if (time != 0) { //faster than isNan() + time = _time; + } + var labels:Array = getLabelsArray(), + l:int = labels.length, + i:int; + for (i = 0; i < l; i++) { + if (labels[i].time > time) { + return labels[i].name; + } + } + return null; + } + + /** + * Returns the previous label (if any) that occurs before the time parameter. + * It makes no difference if the timeline is reversed ("before" means earlier in the timeline's local time zone). + * A label that is positioned exactly at the same time as the time parameter will be ignored. + * + *

    You could use getLabelBefore() in conjunction with tweenTo() to make + * the timeline tween back to the previous label like this:

    + * + *

    + * myTimeline.tweenTo( myTimeline.getLabelBefore() ); + *

    + * + * @param time Time before which the label is searched for. If you do not pass a time in, the current time will be used. + * @return Name of the label that is before the time passed to getLabelBefore() + * + * @see #getLabelBefore() + * @see #currentLabel() + */ + public function getLabelBefore(time:Number=NaN):String { + if (!time) if (time != 0) { //faster than isNan() + time = _time; + } + var labels:Array = getLabelsArray(), + i:int = labels.length; + while (--i > -1) { + if (labels[i].time < time) { + return labels[i].name; + } + } + return null; + } + + /** + * Returns an Array of label objects, each with a "time" and "name" property, in the order that they occur in the timeline. + * For example, to loop through all the labels in order and trace() them to the screen (or console.log() in JavaScript): + * + * +var labels = myTimeline.getLabelsArray(); +for (var i = 0; i < labels.length; i++) { + trace("label name: " + labels[i].name + ", time: " + labels[i].time); //or in JS, console.log("label name: " + labels[i].name + ", time: " + labels[i].time); +} + + *

    Note: changing the values in this array will have no effect on the actual labels inside the TimelineMax. To add/remove labels, + * use the corresponding methods (addLabel(), removeLabel()).

    + * + * @return An array of generic objects (one for each label) with a "name" property and a "time" property in the order they occur in the TimelineMax. + **/ + public function getLabelsArray():Array { + var a:Array = [], + cnt:int = 0, + p:String; + for (p in _labels) { + a[cnt++] = {time:_labels[p], name:p}; + } + a.sortOn("time", Array.NUMERIC); + return a; + } + + +//---- EVENT DISPATCHING ---------------------------------------------------------------------------------------------------------- + + /** @private **/ + protected function _initDispatcher():Boolean { + var found:Boolean = false, p:String; + for (p in _listenerLookup) { + if (p in vars) if (vars[p] is Function) { + if (_dispatcher == null) { + _dispatcher = new EventDispatcher(this); + } + _dispatcher.addEventListener(_listenerLookup[p], vars[p], false, 0, true); + found = true; + } + } + return found; + } + + /** + * (AS3 only) + * Registers a function that should be called each time a particular type of event occurs, like + * "complete" or "update". The function will be passed a single "event" + * parameter whose "target" property refers to the timeline. Typically it is more efficient + * to use callbacks like onComplete, onUpdate, onStart, onReverseComplete, and onRepeat + * unless you need the event parameter or if you need to register more than one listener for the same + * type of event. + * + * If you no longer need an event listener, remove it by calling removeEventListener(), or memory + * problems could result. Event listeners are not automatically removed from memory because the garbage + * collector does not remove the listener as long as the dispatching object exists (unless the + * useWeakReference parameter is set to true). + * + * @param type The type of event + * @param listener The listener function that processes the event. This function must accept an Event object as its only parameter + * @param useCapture (not typically used) Determines whether the listener works in the capture phase or the target and bubbling phases. If useCapture is set to true, the listener processes the event only during the capture phase and not in the target or bubbling phase. If useCapture is false, the listener processes the event only during the target or bubbling phase. To listen for the event in all three phases, call addEventListener twice, once with useCapture set to true, then again with useCapture set to false. + * @param priority The priority level of the event listener. The priority is designated by a signed 32-bit integer. The higher the number, the higher the priority. All listeners with priority n are processed before listeners of priority n-1. If two or more listeners share the same priority, they are processed in the order in which they were added. The default priority is 0. + * @param useWeakReference Determines whether the reference to the listener is strong or weak. A strong reference (the default) prevents your listener from being garbage-collected. A weak reference does not. + * @see #removeEventListener() + **/ + public function addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false):void { + if (_dispatcher == null) { + _dispatcher = new EventDispatcher(this); + } + if (type == TweenEvent.UPDATE) { + _hasUpdateListener = true; + } + _dispatcher.addEventListener(type, listener, useCapture, priority, useWeakReference); + } + + /** + * (AS3 only) + * Removes a listener from the EventDispatcher object. If there is no matching listener registered + * with the EventDispatcher object, a call to this method has no effect. + * + * @param type The type of event + * @param listener The listener object to remove. + * @param useCapture Specifies whether the listener was registered for the capture phase or the target and bubbling phases. If the listener was registered for both the capture phase and the target and bubbling phases, two calls to removeEventListener() are required to remove both, one call with useCapture() set to true, and another call with useCapture() set to false. + **/ + public function removeEventListener(type:String, listener:Function, useCapture:Boolean=false):void { + if (_dispatcher != null) { + _dispatcher.removeEventListener(type, listener, useCapture); + } + } + + /** @private **/ + public function hasEventListener(type:String):Boolean { + return (_dispatcher == null) ? false : _dispatcher.hasEventListener(type); + } + + /** @private **/ + public function willTrigger(type:String):Boolean { + return (_dispatcher == null) ? false : _dispatcher.willTrigger(type); + } + + /** @private **/ + public function dispatchEvent(event:Event):Boolean { + return (_dispatcher == null) ? false : _dispatcher.dispatchEvent(event); + } + + +//---- GETTERS / SETTERS ------------------------------------------------------------------------------------------------------- + + /** + * Gets or sets the timeline's progress which is a value between 0 and 1 indicating the position + * of the virtual playhead (excluding repeats) where 0 is at the beginning, 0.5 is halfway complete, + * and 1 is complete. If the timeline has a non-zero repeat defined, progress + * and totalProgress will be different because progress doesn't include any + * repeats or repeatDelays whereas totalProgress does. For example, if a TimelineMax instance + * is set to repeat once, at the end of the first cycle totalProgress would only be 0.5 + * whereas progress would be 1. If you watched both properties over the course of the entire + * animation, you'd see progress go from 0 to 1 twice (once for each cycle) in the + * same time it takes the totalProgress to go from 0 to 1 once. + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining, like myTimeline.progress(0.5).play();

    + * + * +var progress = myTimeline.progress(); //gets current progress +myTimeline.progress( 0.25 ); //sets progress to one quarter finished + + * + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * @param suppressEvents If true, no events or callbacks will be triggered when the playhead moves to the new position. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * + * @see #totalProgress() + * @see #seek() + * @see #time() + * @see #totalTime() + **/ + override public function progress(value:Number=NaN, suppressEvents:Boolean=false):* { + return (!arguments.length) ? _time / duration() : totalTime( duration() * ((_yoyo && (_cycle & 1) !== 0) ? 1 - value : value) + (_cycle * (_duration + _repeatDelay)), suppressEvents); + } + + /** + * Gets or sets the timeline's total progress which is a value between 0 and 1 indicating the position + * of the virtual playhead (including repeats) where 0 is at the beginning, 0.5 is + * at the halfway point, and 1 is at the end (complete). If the timeline has a non-zero repeat defined, + * progress() and totalProgress() will be different because progress() + * doesn't include the repeat or repeatDelay whereas totalProgress() does. For example, + * if a TimelineMax instance is set to repeat once, at the end of the first cycle totalProgress() + * would only be 0.5 whereas progress would be 1. If you watched both properties over the + * course of the entire animation, you'd see progress go from 0 to 1 twice (once for + * each cycle) in the same time it takes the totalProgress() to go from 0 to 1 once. + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining, like myAnimation.totalProgress(0.5).play();

    + * + * +var progress = myAnimation.totalProgress(); //gets total progress +myAnimation.totalProgress(0.25); //sets total progress to one quarter finished + + * + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * @param suppressEvents If true, no events or callbacks will be triggered when the playhead moves to the new position. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * + * @see #progress() + * @see #seek() + * @see #time() + * @see #totalTime() + **/ + override public function totalProgress(value:Number=NaN, suppressEvents:Boolean=true):* { + return (!arguments.length) ? _totalTime / totalDuration() : totalTime( totalDuration() * value, suppressEvents); + } + + /** + * Gets or sets the total duration of the timeline in seconds (or frames for frames-based timelines) + * including any repeats or repeatDelays. duration, by contrast, does + * NOT include repeats and repeatDelays. For example, if the timeline has a + * duration of 10, a repeat of 1 and a repeatDelay of 2, + * the totalDuration would be 22. + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining.

    + * + * +var total = myTimeline.totalDuration(); //gets total duration +myTimeline.totalDuration(10); //sets the total duration + + * + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. Negative values will be interpreted from the END of the animation. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * + * @see #duration() + * @see #timeScale() + **/ + override public function totalDuration(value:Number=NaN):* { + if (!arguments.length) { + if (_dirty) { + super.totalDuration(); //just forces refresh + //Instead of Infinity, we use 999999999999 so that we can accommodate reverses. + _totalDuration = (_repeat == -1) ? 999999999999 : _duration * (_repeat + 1) + (_repeatDelay * _repeat); + } + return _totalDuration; + } + return (_repeat == -1) ? this : duration( (value - (_repeat * _repeatDelay)) / (_repeat + 1) ); + } + + /** + * Gets or sets the local position of the playhead (essentially the current time), not + * including any repeats or repeatDelays. If the timeline has a non-zero repeat, its time + * goes back to zero upon repeating even though the totalTime continues forward linearly + * (or if yoyo is true, the time alternates between moving forward + * and backward). time never exceeds the duration whereas the totalTime reflects + * the overall time including any repeats and repeatDelays. + * + *

    For example, if a TimelineMax instance has a duration of 2 and a repeat of 3, + * totalTime will go from 0 to 8 during the course of the timeline (plays once then + * repeats 3 times, making 4 total cycles) whereas time would go from 0 to 2 a + * total of 4 times.

    + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining.

    + * + * +var currentTime = myTimeline.time(); //gets current time +myTimeline.time(2); //sets time, jumping to new value just like seek(). + + * + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. Negative values will be interpreted from the END of the animation. + * @param suppressEvents If true, no events or callbacks will be triggered when the playhead moves to the new position defined in the value parameter. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * + * @see #seek() + * @see #play() + * @see #reverse() + * @see #pause() + * @see #totalTime() + **/ + override public function time(value:Number=NaN, suppressEvents:Boolean=false):* { + if (!arguments.length) { + return _time; + } + if (_dirty) { + totalDuration(); + } + if (value > _duration) { + value = _duration; + } + if (_yoyo && (_cycle & 1) !== 0) { + value = (_duration - value) + (_cycle * (_duration + _repeatDelay)); + } else if (_repeat != 0) { + value += _cycle * (_duration + _repeatDelay); + } + return totalTime(value, suppressEvents); + } + + /** + * Gets or sets the number of times that the timeline should repeat after its first iteration. For + * example, if repeat is 1, the timeline will play a total of twice (the initial play + * plus 1 repeat). To repeat indefinitely, use -1. repeat should always be an integer. + * + *

    To cause the repeats to alternate between forward and backward, set yoyo to + * true. To add a time gap between repeats, use repeatDelay. You can + * set the initial repeat value via the vars parameter, like:

    + * + *

    + * var tl = new TimelineMax({repeat:2}); + *

    + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining, like myTimeline.repeat(2).yoyo(true).play();

    + * + * +var repeat = myTimeline.repeat(); //gets current repeat value +myTimeline.repeat(2); //sets repeat to 2 + + * + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * + * @see #repeatDelay() + * @see #yoyo() + **/ + public function repeat(value:Number=0):* { + if (!arguments.length) { + return _repeat; + } + _repeat = value; + return _uncache(true); + } + + /** + * Gets or sets the amount of time in seconds (or frames for frames-based timelines) between repeats. + * For example, if repeat is 2 and repeatDelay is 1, the timeline will + * play initially, then wait for 1 second before it repeats, then play again, then wait 1 second + * again before doing its final repeat. You can set the initial repeatDelay value + * via the vars parameter, like: + * + *

    + * var tl = new TimelineMax({repeat:2, repeatDelay:1}); + *

    + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining, like myTimeline.repeat(2).yoyo(true).repeatDelay(0.5).play();

    + * + * +var repeatDelay = myTimeline.repeatDelay(); //gets current repeatDelay value +myTimeline.repeatDelay(2); //sets repeatDelay to 2 + + * + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * + * @see #repeat() + * @see #yoyo() + **/ + public function repeatDelay(value:Number=0):* { + if (!arguments.length) { + return _repeatDelay; + } + _repeatDelay = value; + return _uncache(true); + } + + /** + * Gets or sets the timeline's yoyo state, where true causes + * the timeline to go back and forth, alternating backward and forward on each + * repeat. yoyo works in conjunction with repeat, + * where repeat controls how many times the timeline repeats, and yoyo + * controls whether or not each repeat alternates direction. So in order to make a timeline yoyo, + * you must set its repeat to a non-zero value. + * Yoyo-ing, has no affect on the timeline's "reversed" property. For example, + * if repeat is 2 and yoyo is false, it will look like: + * start - 1 - 2 - 3 - 1 - 2 - 3 - 1 - 2 - 3 - end. But if yoyo is true, + * it will look like: start - 1 - 2 - 3 - 3 - 2 - 1 - 1 - 2 - 3 - end. + * + *

    You can set the yoyo property initially by passing yoyo:true + * in the vars parameter, like: new TimelineMax({repeat:1, yoyo:true});

    + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining, like myTimeline.yoyo(true).repeat(3).timeScale(2).play(0.5);

    + * + * +var yoyo = myTimeline.yoyo(); //gets current yoyo state +myTimeline.yoyo( true ); //sets yoyo to true + + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * + * @see #repeat() + * @see #repeatDelay() + **/ + public function yoyo(value:Boolean=false):* { + if (!arguments.length) { + return _yoyo; + } + _yoyo = value; + return this; + } + + /** + * Gets the closest label that is at or before the current time, or jumps to a provided label + * (behavior depends on whether or not you pass a parameter to the method). + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining.

    + * + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * + * @see #getLabelAfter() + * @see #getLabelBefore() + **/ + public function currentLabel(value:String=null):* { + if (!arguments.length) { + return getLabelBefore(_time + 0.00000001); + } + return seek(value, true); + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/TweenAlign.as b/FairyGUI-as3/src/com/greensock/TweenAlign.as new file mode 100644 index 0000000..498651f --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/TweenAlign.as @@ -0,0 +1,22 @@ +/** + * VERSION: 0.86 + * DATE: 6/15/2009 + * AS2 (AS3 version is also available) + * UPDATES AND DOCUMENTATION AT: http://www.TweenLite.com + **/ +package com.greensock { +/** + * @private + * Static constants for defining tween alignment. + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + public class TweenAlign { + public static const NORMAL:String = "normal"; + public static const SEQUENCE:String = "sequence"; + public static const START:String = "start"; + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/TweenLite.as b/FairyGUI-as3/src/com/greensock/TweenLite.as new file mode 100644 index 0000000..3704f33 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/TweenLite.as @@ -0,0 +1,1353 @@ +/** + * VERSION: 12.1.5 + * DATE: 2014-07-19 + * AS3 (AS2 version is also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock { + import com.greensock.core.Animation; + import com.greensock.core.PropTween; + import com.greensock.core.SimpleTimeline; + import com.greensock.easing.Ease; + + import flash.display.Shape; + import flash.events.Event; + import flash.utils.Dictionary; + +/** + * TweenLite is an extremely fast, lightweight, and flexible animation tool that serves as the foundation of + * the GreenSock Animation Platform (GSAP), available in AS2, AS3, and JavaScript. A TweenLite instance handles + * tweening one or more properties of any object (or array of objects) over time. TweenLite + * can be used on its own to accomplish most animation chores with minimal file size or it can be use in + * conjuction with advanced sequencing tools like TimelineLite or TimelineMax to make complex tasks much + * simpler. With scores of other animation frameworks to choose from, why consider the GreenSock Animation Platform?: + * + *
      + *
    • SPEED - The platform has been highly optimized for maximum performance. See some + * speed comparisons yourself at http://www.greensock.com/tweening-speed-test/
    • + * + *
    • Freakishly robust feature set - In addition to tweening any numeric property of any object, + * TweenLite has plugins that give it the ability to tween hex colors, beziers, arrays, filters, plus + * LOTS more. It can round values, use relative values, smoothly reverse() on the + * fly, automatically detect and accommodate getter/setter functions, employ virtually any easing + * equation, pause()/resume() anytime, and intelligently manage conflicting tweens of + * the same object with various overwrite modes. TweenMax extends TweenLite and adds even + * more capabilities like repeat, yoyo, repeatDelay, on-the-fly destination value + * updates and more.
    • + * + *
    • Sequencing, grouping, and management features - TimelineLite and TimelineMax + * make it surprisingly simple to create complex sequences or groups of tweens that you can + * control as a whole. play(), pause(), restart(), or reverse(). You can even tween a timeline's + * time or progress to fastforward or rewind the entire timeline. Add + * labels, change the timeline's timeScale, nest timelines within timelines, and much more. + * This can revolutionize your animation workflow, making it more modular and concise.
    • + * + *
    • AS3, AS2, and JavaScript - Most other engines are only developed for one language, + * but the GreenSock Animation Platform allows you to use a consistent API across all your Flash and + * HTML5 projects.
    • + * + *
    • Ease of use - Designers and Developers alike rave about how intuitive the platform is.
    • + * + *
    • Support and reliability - With frequent updates, dedicated forums, + * committed authorship, a solid track record, a proven funding mechansim, and a thriving community of users, + * the platform is a safe long-term bet (unlike many open source projects).
    • + * + *
    • Expandability - With its plugin architecture, you can activate as many (or as few) + * extra features as your project requires. Write your own plugin to handle particular special + * properties in custom ways. Minimize bloat and maximize performance.
    • + * + *
    + * + *

    USAGE

    + *

    The most common type of tween is a to() tween which allows you + * to define the destination values:

    + * + *

    + * TweenLite.to(myObject, 2, {x:100, y:200}); + *

    + * + *

    The above code will tween myObject.x from whatever it currently is to 100 and + * myObject.y property to 200 over the course of 2 seconds. Notice the x and y values are + * defined inside a generic object (between curly braces). Put as many properties there as you want.

    + * + *

    By default, tweens begin immediately, although you can delay them using the delay + * special property or pause them initially using the paused special property (see below).

    + * + *

    The target can also be an array of objects. For example, the following tween will + * tween the alpha property to 0.5 and y property to 100 for obj1, obj2, and obj3:

    + * + *

    + * TweenLite.to([obj1, obj2, obj3], 1, {alpha:0.5, y:100}); + *

    + * + *

    You can also use a from() tween if you want to define the + * starting values instead of the ending values so that the target tweens from + * the defined values to wherever they currently are. Or a fromTo() + * lets you define both starting and ending values.

    + * + *

    Although the to(), from(), and fromTo() static methods + * are popular because they're quick and can avoid some garbage collection hassles, you can also + * use the more object-oriented syntax like this:

    + * + *

    + * var tween = new TweenLite(myObject, 2, {x:100, y:200}); + *

    + * + *

    or even:

    + * + *

    + * var tween = TweenLite.to(myObject, 2, {x:100, y:200}); + *

    + * + * + *

    SPECIAL PROPERTIES (no plugins required):

    + *

    Typically the vars parameter is used to define ending values for tweening + * properties of the target (or beginning values for from() tweens) + * like {x:100, y:200, alpha:0}, but the following optional special properties + * serve other purposes:

    + * + *
      + *
    • delay : Number - + * Amount of delay in seconds (or frames for frames-based tweens) before the tween should begin.
    • + * + *
    • ease : Ease (or Function) - + * You can choose from various eases to control the rate of change during + * the animation, giving it a specific "feel". For example, ElasticOut.ease + * or StrongInOut.ease. For best performance, use one of the GreenSock eases + * (which are in the com.greensock.easing package). TweenLite also works with + * any standard easing equation that uses the typical 4 parameters (time, start, + * change, duration) like Adobe's fl.motion.easing eases. + * The default is Power1.easeOut. For linear animation, use the GreenSock + * Linear.ease ease
    • + * + *
    • onComplete : Function - + * A function that should be called when the tween has completed
    • + * + *
    • onCompleteParams : Array - + * An Array of parameters to pass the onComplete function. For example, + * TweenLite.to(mc, 1, {x:100, onComplete:myFunction, onCompleteParams:[mc, "param2"]}); + * To self-reference the tween instance itself in one of the parameters, use "{self}", + * like: onCompleteParams:["{self}", "param2"]
    • + * + *
    • useFrames : Boolean - + * If useFrames is true, the tweens's timing will be + * based on frames instead of seconds because it is intially added to the root + * frames-based timeline. This causes both its duration + * and delay to be based on frames. An animations's timing mode is + * always determined by its parent timeline.
    • + * + *
    • easeParams : Array [deprecated] - + * Some GreenSock eases (like OutIn or ElasticOut) have a config() + * method that allows them to be configured to change their behavior (like TweenLite.to(mc, 1, {x:100, ease:ElasticOut.ease.config(0.5, 1)}) + * but if you are using a non-GreenSock ease that accepts extra parameters like Adobe's + * fl.motion.easing.Elastic, easeParams allows you to define + * those extra parameters as an array like TweenLite.to(mc, 1, {x:100, ease:Elastic.easeOut, easeParams:[0.5, 1]}). + * Most easing equations, however, don't require extra parameters so you won't need to + * pass in any easeParams. GreenSock eases provide the best performance, so use them + * whenever possible.
    • + * + *
    • immediateRender : Boolean - + * Normally when you create a tween, it begins rendering on the very next frame (update cycle) + * unless you specify a delay. However, if you prefer to force the tween to + * render immediately when it is created, set immediateRender to true. + * Or to prevent a from() from rendering immediately, set immediateRender + * to false. By default, from() tweens set immediateRender to true.
    • + * + *
    • onStart : Function - + * A function that should be called when the tween begins (when its time + * changes from 0 to some other value which can happen more than once if the + * tween is restarted multiple times).
    • + * + *
    • onStartParams : Array - + * An Array of parameters to pass the onStart function. For example, + * TweenLite.to(mc, 1, {x:100, delay:1, onStart:myFunction, onStartParams:[mc, "param2"]}); + * To self-reference the tween instance itself in one of the parameters, use "{self}", + * like: onStartParams:["{self}", "param2"]
    • + * + *
    • onUpdate : Function - + * A function that should be called every time the tween updates + * (on every frame while the tween is active)
    • + * + *
    • onUpdateParams : Array - + * An Array of parameters to pass the onUpdate function. For example, + * TweenLite.to(mc, 1, {x:100, onUpdate:myFunction, onUpdateParams:[mc, "param2"]}); + * To self-reference the tween instance itself in one of the parameters, use "{self}", + * like: onUpdateParams:["{self}", "param2"]
    • + * + *
    • onReverseComplete : Function - + * A function that should be called when the tween has reached its beginning again from the + * reverse direction. For example, if reverse() is called the tween will move + * back towards its beginning and when its time reaches 0, onReverseComplete + * will be called. This can also happen if the tween is placed in a TimelineLite or TimelineMax instance + * that gets reversed and plays the tween backwards to (or past) the beginning.
    • + * + *
    • onReverseCompleteParams : Array - + * An Array of parameters to pass the onReverseComplete function. For example, + * TweenLite.to(mc, 1, {x:100, onReverseComplete:myFunction, onReverseCompleteParams:[mc, "param2"]}); + * To self-reference the tween instance itself in one of the parameters, use "{self}", + * like: onReverseCompleteParams:["{self}", "param2"]
    • + * + *
    • paused : Boolean - + * If true, the tween will pause itself immediately upon creation.
    • + * + *
    • overwrite : String (or integer) - + * Controls how (and if) other tweens of the same target are overwritten. + * There are several modes to choose from, but "auto" is the default (although + * you can change the default mode using the TweenLite.defaultOverwrite property): + *
        + *
      • "none" (0) (or false) - no overwriting will occur.
      • + * + *
      • "all" (1) (or true) - immediately overwrites all existing + * tweens of the same target even if they haven't started yet or don't have + * conflicting properties.
      • + * + *
      • "auto" (2) - when the tween renders for the first time, it will analyze + * tweens of the same target that are currently active/running and only overwrite + * individual tweening properties that overlap/conflict. Tweens that haven't begun + * yet are ignored. For example, if another active tween is found that is tweening + * 3 properties, only 1 of which it shares in common with the new tween, the other + * 2 properties will be left alone. Only the conflicting property gets overwritten/killed. + * This is the default mode and typically the most intuitive for developers.
      • + * + *
      • "concurrent" (3) - when the tween renders for the first time, it kills + * only the active (in-progress) tweens of the same target regardless of whether + * or not they contain conflicting properties. Like a mix of "all" + * and "auto". Good for situations where you only want one tween + * controling the target at a time.
      • + * + *
      • "allOnStart" (4) - Identical to "all" but waits to run + * the overwrite logic until the tween begins (after any delay). Kills + * tweens of the same target even if they don't contain conflicting properties + * or haven't started yet.
      • + * + *
      • "preexisting" (5) - when the tween renders for the first time, it kills + * only the tweens of the same target that existed BEFORE this tween was created + * regardless of their scheduled start times. So, for example, if you create a tween + * with a delay of 10 and then a tween with a delay of 1 and then a tween with a + * delay of 2 (all of the same target), the 2nd tween would overwrite the first + * but not the second even though scheduling might seem to dictate otherwise. + * "preexisting" only cares about the order in which the instances + * were actually created. This can be useful when the order in which your code runs + * plays a critical role.
      • + * + *
    • + *
    + * + *

    AS3 note: In AS3, using a TweenLiteVars + * instance instead of a generic object to define your vars is a bit more verbose but provides + * code hinting and improved debugging because it enforces strict data typing. Use whichever one you prefer.

    + * + * + *

    PLUGINS:

    + * + *

    Think of plugins like special properties that are dynamically added, delivering extra abilities without + * forcing them to be baked into the core engine, keeping it relatively lean and mean. Each plugin is associated + * with a property name and it takes responsibility for handling that property. For example, the TintPlugin + * is associated with the "tint" property name so if it is activated it will intercept the "tint" property + * in the following tween and manage it uniquely:

    + * + *

    + * TweenLite.to(mc, 1, {tint:0xFF0000}); + *

    + * + *

    If the TintPlugin wasn't activated, TweenLite would act as though you were trying to literally tween the + * mc.tint property (and there is no such thing).

    + * + *

    In the JavaScript version of TweenLite, activating a plugin is as simple as loading the associated .js file. + * No extra activation code is necessary. In the ActionScript version, activating a plugin requires a single line + * of code and you only need to do it once, so it's pretty easy. Simply pass an Array containing the names of all + * the plugins you'd like to activate to the TweenPlugin.activate() method, like this:

    + * + *

    + * TweenPlugin.activate([FrameLabelPlugin, ColorTransformPlugin, TintPlugin]); + *

    + * + *

    To make it even easier, there is a Plugin Explorer + * which writes the code for you. All you need to do is select the plugins and copy/paste the code + * from the bottom of the tool. It also displays interactive examples of each plugin and the assocaited + * code so that it’s easy to see the correct syntax.

    + * + * + *

    EXAMPLES:

    + * + *

    Please see http://www.greensock.com for examples, tutorials, and interactive demos.

    + * + * NOTES / TIPS: + *
      + *
    • Passing values as Strings and a preceding "+=" or "-=" will make the tween relative to the + * current value. For example, if you do TweenLite.to(mc, 2, {x:"-=20"}); it'll + * tween mc.x to the left 20 pixels. {x:"+=20"} would move it to the right.
    • + * + *
    • You can change the TweenLite.defaultEase if you prefer something other + * than Power1.easeOut.
    • + * + *
    • Kill all tweens of a particular object anytime with TweenLite.killTweensOf(myObject);
    • + * + *
    • You can kill all delayedCalls to a particular function using TweenLite.killDelayedCallsTo(myFunction); + * or TweenLite.killTweensOf(myFunction);
    • + * + *
    • Use the TweenLite.from() method to animate things into place. For example, + * if you have things set up on the stage in the spot where they should end up, and you + * just want to animate them into place, you can pass in the beginning x and/or y and/or + * alpha (or whatever properties you want).
    • + * + *
    • If you find this class useful, please consider joining Club GreenSock + * which not only helps to sustain ongoing development, but also gets you bonus plugins, classes + * and other benefits that are ONLY available to members. Learn more at + * http://www.greensock.com/club/
    • + *
    + * + *

    Copyright 2006-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class TweenLite extends Animation { + + /** @private **/ + public static const version:String = "12.1.5"; + + /** Provides An easy way to change the default easing equation. Choose from any of the GreenSock eases in the com.greensock.easing package. @default Power1.easeOut **/ + public static var defaultEase:Ease = new Ease(null, null, 1, 1); + + /** Provides An easy way to change the default overwrite mode. Choose from any of the following: "auto", "all", "none", "allOnStart", "concurrent", "preexisting". @default "auto" **/ + public static var defaultOverwrite:String = "auto"; + + /** + * The object that dispatches a "tick" event each time the engine updates, making it easy for + * you to add your own listener(s) to run custom logic after each update (great for game developers). + * Add as many listeners as you want. The basic syntax is the same for all versions (AS2, AS3, and JavaScript): + * + *

    Basic example (AS2, AS3, and JavaScript):

    + //add listener + TweenLite.ticker.addEventListener("tick", myFunction); + + function myFunction(event) { + //executes on every tick after the core engine updates + } + + //to remove the listener later... + TweenLite.ticker.removeEventListener("tick", myFunction); + + * + *

    Due to differences in the core languages (and to maximize efficiency), the advanced syntax is slightly different + * for the AS3 version compared to AS2 and JavaScript. The parameters beyond the first 2 in the addEventListener() + * method are outlined below:

    + * + *

    JavaScript and AS2

    + *

    addEventListener(type, callback, scope, useParam, priority)

    + *

    Parameters: + *

      + *
    1. type : String - type of listener, should always be "tick"
    2. + *
    3. callback : Function - the function to call when the event occurs
    4. + *
    5. scope : Object - binds the scope to a particular object (scope is basically what "this" refers to in your function). This can be very useful in JavaScript and AS2 because scope isn't generally maintained.
    6. + *
    7. useParam : Boolean - if true, an event object will be generated and fed to the callback each time the event occurs. The event is a generic object and has two properties: type (always "tick") and target which refers to the ticker instance. The default for useParam is false because it improves performance.
    8. + *
    9. priority : Integer - influences the order in which the listeners are called. Listeners with lower priorities are called after ones with higher priorities.
    10. + *
    + *

    + * + *

    Advanced example (JavaScript and AS2):

    + //add listener that requests an event object parameter, binds scope to the current scope (this), and sets priority to 1 so that it is called before any other listeners that had a priority lower than 1... + TweenLite.ticker.addEventListener("tick", myFunction, this, true, 1); + + function myFunction(event) { + //executes on every tick after the core engine updates + } + + //to remove the listener later... + TweenLite.ticker.removeEventListener("tick", myFunction); + + * + *

    AS3

    + *

    The AS3 version uses the standard EventDispatcher.addEventListener() syntax which + * basically allows you to define a priority and whether or not to use weak references (see Adobe's + * docs for details).

    + * + *

    Advanced example [AS3 only]:

    + import flash.events.Event; + + //add listener with weak reference (standard syntax - notice the 5th parameter is true) + TweenLite.ticker.addEventListener("tick", myFunction, false, 0, true); + + function myFunction(event:Event):void { + //executes on every tick after the core engine updates + } + + //to remove the listener later... + TweenLite.ticker.removeEventListener("tick", myFunction); + + **/ + public static var ticker:Shape = Animation.ticker; + + /** @private When plugins are activated, the class is added (named based on the special property) to this object so that we can quickly look it up in the _initProps() method.**/ + public static var _plugins:Object = {}; + + /** @private For notifying plugins of significant events like when the tween finishes initializing or when it is disabled/enabled (some plugins need to take actions when those events occur). TweenPlugin sets this (in order to keep file size small, avoiding dependencies on that or other classes) **/ + public static var _onPluginEvent:Function; + + /** @private Holds references to all our tween instances organized by target for quick lookups (for overwriting). **/ + protected static var _tweenLookup:Dictionary = new Dictionary(false); + + /** @private Lookup for all of the reserved "special property" keywords (excluding plugins).**/ + protected static var _reservedProps:Object = {ease:1, delay:1, overwrite:1, onComplete:1, onCompleteParams:1, onCompleteScope:1, useFrames:1, runBackwards:1, startAt:1, onUpdate:1, onUpdateParams:1, onUpdateScope:1, onStart:1, onStartParams:1, onStartScope:1, onReverseComplete:1, onReverseCompleteParams:1, onReverseCompleteScope:1, onRepeat:1, onRepeatParams:1, onRepeatScope:1, easeParams:1, yoyo:1, onCompleteListener:1, onUpdateListener:1, onStartListener:1, onReverseCompleteListener:1, onRepeatListener:1, orientToBezier:1, immediateRender:1, repeat:1, repeatDelay:1, data:1, paused:1, reversed:1}; + + /** @private An object for associating String overwrite modes with their corresponding integers (faster) **/ + protected static var _overwriteLookup:Object; + + + /** [READ-ONLY] Target object (or array of objects) whose properties the tween affects. **/ + public var target:Object; + + /** @private The result of feeding the tween's current progress (0-1) into the easing equation - typically between 0 and 1 but not always (like with ElasticOut.ease). **/ + public var ratio:Number; + + /** @private Lookup object for PropTween objects. For example, if this tween is handling the "x" and "y" properties of the target, the _propLookup object will have an "x" and "y" property, each pointing to the associated PropTween object (for tweens with targets that are arrays, _propTween will be an Array with corresponding objects). This can be very helpful for speeding up overwriting. **/ + public var _propLookup:Object; + + /** @private First PropTween instance in the linked list. **/ + public var _firstPT:PropTween; + + /** @private Only used for tweens whose target is an array. **/ + protected var _targets:Array; + + /** @private Ease to use which determines the rate of change during the animation. Examples are ElasticOut.ease, StrongIn.ease, etc. (all in the com.greensock.easing package) **/ + public var _ease:Ease; + + /** @private To speed the handling of the ease, we store the type here (1 = easeOut, 2 = easeIn, 3 = easeInOut, and 0 = none of these) **/ + protected var _easeType:int; + + /** @private To speed handling of the ease, we store its strength here (Linear is 0, Quad is 1, Cubic is 2, Quart is 3, Quint (and Strong) is 4, etc.) **/ + protected var _easePower:int; + + /** @private The array that stores the tweens of the same target (or targets) for the purpose of speeding overwrites. **/ + protected var _siblings:Array; + + /** @private Overwrite mode (0 = none, 1 = all, 2 = auto, 3 = concurrent, 4 = allOnStart, 5 = preexisting) **/ + protected var _overwrite:int; + + /** @private When properties are overwritten in this tween, the properties get added to this object because sometimes properties are overwritten BEFORE the tween inits. **/ + protected var _overwrittenProps:Object; + + /** @private If this tween has any TweenPlugins that need to be notified of a change in the "enabled" status, this will be true. (speeds things up in the _enable() setter) **/ + protected var _notifyPluginsOfEnabled:Boolean; + + /** @private Only used in tweens where a startAt is defined (like fromTo() tweens) so that we can record the pre-tween starting values and revert to them properly if/when the playhead on the timeline moves backwards, before this tween started. In other words, if alpha is at 1 and then someone does a fromTo() tween that makes it go from 0 to 1 and then the playhead moves BEFORE that tween, alpha should jump back to 1 instead of reverting to 0. **/ + protected var _startAt:TweenLite; + + + /** + * Constructor + * + * @param target Target object (or array of objects) whose properties this tween affects + * @param duration Duration in seconds (or frames if useFrames:true is set in the vars parameter) + * @param vars An object defining the end value for each property that should be tweened as well as any special properties like onComplete, ease, etc. For example, to tween mc.x to 100 and mc.y to 200 and then call myFunction, do this: new TweenLite(mc, 1, {x:100, y:200, onComplete:myFunction}). + */ + public function TweenLite(target:Object, duration:Number, vars:Object) { + super(duration, vars); + + if (target == null) { + throw new Error("Cannot tween a null object. Duration: "+duration+", data: "+this.data); + } + + if (!_overwriteLookup) { + _overwriteLookup = {none:0, all:1, auto:2, concurrent:3, allOnStart:4, preexisting:5, "true":1, "false":0}; + ticker.addEventListener("enterFrame", _dumpGarbage, false, -1, true); + } + + ratio = 0; + this.target = target; + _ease = defaultEase; //temporary - we'll replace it in _init(). We need to set it here for speed purposes so that on the first render(), it doesn't throw an error. + + _overwrite = (!("overwrite" in this.vars)) ? _overwriteLookup[defaultOverwrite] : (typeof(this.vars.overwrite) === "number") ? this.vars.overwrite >> 0 : _overwriteLookup[this.vars.overwrite]; + + if (this.target is Array && typeof(this.target[0]) === "object") { + _targets = this.target.concat(); + _propLookup = []; + _siblings = []; + var i:int = _targets.length; + while (--i > -1) { + _siblings[i] = _register(_targets[i], this, false); + if (_overwrite == 1) if (_siblings[i].length > 1) { + _applyOverwrite(_targets[i], this, null, 1, _siblings[i]); + } + } + + } else { + _propLookup = {}; + _siblings = _tweenLookup[target] + if (_siblings == null) { //the next few lines accomplish the same thing as _siblings = _register(target, this, false) but faster and only slightly more verbose. + _siblings = _tweenLookup[target] = [this]; + } else { + _siblings[_siblings.length] = this; + if (_overwrite == 1) { + _applyOverwrite(target, this, null, 1, _siblings); + } + } + } + + if (this.vars.immediateRender || (duration == 0 && _delay == 0 && this.vars.immediateRender != false)) { + render(-_delay, false, true); + } + } + + /** + * @private + * Initializes the tween + */ + protected function _init():void { + var immediate:Boolean = vars.immediateRender, + i:int, initPlugins:Boolean, pt:PropTween, p:String, copy:Object; + if (vars.startAt) { + if (_startAt != null) { + _startAt.render(-1, true); //if we've run a startAt previously (when the tween instantiated), we should revert it so that the values re-instantiate correctly particularly for relative tweens. Without this, a TweenLite.fromTo(obj, 1, {x:"+=100"}, {x:"-=100"}), for example, would actually jump to +=200 because the startAt would run twice, doubling the relative change. + } + vars.startAt.overwrite = 0; + vars.startAt.immediateRender = true; + _startAt = new TweenLite(target, 0, vars.startAt); + if (immediate) { + if (_time > 0) { + _startAt = null; //tweens that render immediately (like most from() and fromTo() tweens) shouldn't revert when their parent timeline's playhead goes backward past the startTime because the initial render could have happened anytime and it shouldn't be directly correlated to this tween's startTime. Imagine setting up a complex animation where the beginning states of various objects are rendered immediately but the tween doesn't happen for quite some time - if we revert to the starting values as soon as the playhead goes backward past the tween's startTime, it will throw things off visually. Reversion should only happen in TimelineLite/Max instances where immediateRender was false (which is the default in the convenience methods like from()). + } else if (_duration !== 0) { + return; //we skip initialization here so that overwriting doesn't occur until the tween actually begins. Otherwise, if you create several immediateRender:true tweens of the same target/properties to drop into a TimelineLite or TimelineMax, the last one created would overwrite the first ones because they didn't get placed into the timeline yet before the first render occurs and kicks in overwriting. + } + } + } else if (vars.runBackwards && _duration !== 0) { + //from() tweens must be handled uniquely: their beginning values must be rendered but we don't want overwriting to occur yet (when time is still 0). Wait until the tween actually begins before doing all the routines like overwriting. At that time, we should render at the END of the tween to ensure that things initialize correctly (remember, from() tweens go backwards) + if (_startAt != null) { + _startAt.render(-1, true); + _startAt = null; + } else { + copy = {}; + for (p in vars) { //copy props into a new object and skip any reserved props, otherwise onComplete or onUpdate or onStart could fire. We should, however, permit autoCSS to go through. + if (!(p in _reservedProps)) { + copy[p] = vars[p]; + } + } + copy.overwrite = 0; + copy.data = "isFromStart"; //we tag the tween with as "isFromStart" so that if [inside a plugin] we need to only do something at the very END of a tween, we have a way of identifying this tween as merely the one that's setting the beginning values for a "from()" tween. For example, clearProps in HTML5's CSSPlugin should only get applied at the very END of a tween and without this tag, from(...{height:100, clearProps:"height", delay:1}) would wipe the height at the beginning of the tween and after 1 second, it'd kick back in. + _startAt = TweenLite.to(target, 0, copy); + if (!immediate) { + _startAt.render(-1, true); //for tweens that aren't rendered immediately, we still need to use the _startAt to record the starting values so that we can revert to them if the parent timeline's playhead goes backward beyond the beginning, but we immediately revert the tween back otherwise the parent tween that's currently instantiating wouldn't see the wrong starting values (since they were changed by the _startAt tween) + } else if (_time === 0) { + return; + } + } + } + + if (vars.ease is Ease) { + _ease = (vars.easeParams is Array) ? vars.ease.config.apply(vars.ease, vars.easeParams) : vars.ease; + } else if (typeof(vars.ease) === "function") { + _ease = new Ease(vars.ease, vars.easeParams); + } else { + _ease = defaultEase; + } + _easeType = _ease._type; + _easePower = _ease._power; + _firstPT = null; + + if (_targets) { + i = _targets.length; + while (--i > -1) { + if ( _initProps( _targets[i], (_propLookup[i] = {}), _siblings[i], (_overwrittenProps ? _overwrittenProps[i] : null)) ) { + initPlugins = true; + } + } + } else { + initPlugins = _initProps(target, _propLookup, _siblings, _overwrittenProps); + } + + if (initPlugins) { + _onPluginEvent("_onInitAllProps", this); //reorders the array in order of priority. Uses a static TweenPlugin method in order to minimize file size in TweenLite + } + if (_overwrittenProps) if (_firstPT == null) if (typeof(target) !== "function") { //if all tweening properties have been overwritten, kill the tween. If the target is a function, it's most likely a delayedCall so let it live. + _enabled(false, false); + } + if (vars.runBackwards) { + pt = _firstPT; + while (pt) { + pt.s += pt.c; + pt.c = -pt.c; + pt = pt._next; + } + } + _onUpdate = vars.onUpdate; + _initted = true; + } + + /** @private Loops through the vars properties, captures starting values, triggers overwriting if necessary, etc. **/ + protected function _initProps(target:Object, propLookup:Object, siblings:Array, overwrittenProps:Object):Boolean { + var vars:Object = this.vars, + p:String, i:int, initPlugins:Boolean, plugin:Object, val:Object; + if (target == null) { + return false; + } + for (p in vars) { + val = vars[p]; + if (p in _reservedProps) { + if (val is Array) if (val.join("").indexOf("{self}") !== -1) { + vars[p] = _swapSelfInParams(val as Array); + } + + } else if ((p in _plugins) && (plugin = new _plugins[p]())._onInitTween(target, val, this)) { + _firstPT = new PropTween(plugin, "setRatio", 0, 1, p, true, _firstPT, plugin._priority); + i = plugin._overwriteProps.length; + while (--i > -1) { + propLookup[plugin._overwriteProps[i]] = _firstPT; + } + if (plugin._priority || ("_onInitAllProps" in plugin)) { + initPlugins = true; + } + if (("_onDisable" in plugin) || ("_onEnable" in plugin)) { + _notifyPluginsOfEnabled = true; + } + + } else { + _firstPT = propLookup[p] = new PropTween(target, p, 0, 1, p, false, _firstPT); + _firstPT.s = (!_firstPT.f) ? Number(target[p]) : target[ ((p.indexOf("set") || !("get" + p.substr(3) in target)) ? p : "get" + p.substr(3)) ](); + _firstPT.c = (typeof(val) === "number") ? Number(val) - _firstPT.s : (typeof(val) === "string" && val.charAt(1) === "=") ? int(val.charAt(0)+"1") * Number(val.substr(2)) : Number(val) || 0; + } + } + + if (overwrittenProps) if (_kill(overwrittenProps, target)) { //another tween may have tried to overwrite properties of this tween before init() was called (like if two tweens start at the same time, the one created second will run first) + return _initProps(target, propLookup, siblings, overwrittenProps); + } + if (_overwrite > 1) if (_firstPT != null) if (siblings.length > 1) if (_applyOverwrite(target, this, propLookup, _overwrite, siblings)) { + _kill(propLookup, target); + return _initProps(target, propLookup, siblings, overwrittenProps); + } + return initPlugins; + } + + + + /** @private (see Animation.render() for notes) **/ + override public function render(time:Number, suppressEvents:Boolean=false, force:Boolean=false):void { + var isComplete:Boolean, callback:String, pt:PropTween, rawPrevTime:Number, prevTime:Number = _time; + if (time >= _duration) { + _totalTime = _time = _duration; + ratio = _ease._calcEnd ? _ease.getRatio(1) : 1; + if (!_reversed) { + isComplete = true; + callback = "onComplete"; + } + if (_duration == 0) { //zero-duration tweens are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the "playhead" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's "playhead" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered. + rawPrevTime = _rawPrevTime; + if (_startTime === _timeline._duration) { //if a zero-duration tween is at the VERY end of a timeline and that timeline renders at its end, it will typically add a tiny bit of cushion to the render time to prevent rounding errors from getting in the way of tweens rendering their VERY end. If we then reverse() that timeline, the zero-duration tween will trigger its onReverseComplete even though technically the playhead didn't pass over it again. It's a very specific edge case we must accommodate. + time = 0; + } + if (time === 0 || rawPrevTime < 0 || rawPrevTime === _tinyNum) if (rawPrevTime !== time) { + force = true; + if (rawPrevTime > 0 && rawPrevTime !== _tinyNum) { + callback = "onReverseComplete"; + } + } + _rawPrevTime = rawPrevTime = (!suppressEvents || time !== 0 || _rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient. + } + + } else if (time < 0.0000001) { //to work around occasional floating point math artifacts, round super small values to 0. + _totalTime = _time = 0; + ratio = _ease._calcEnd ? _ease.getRatio(0) : 0; + if (prevTime !== 0 || (_duration === 0 && _rawPrevTime > 0 && _rawPrevTime !== _tinyNum)) { + callback = "onReverseComplete"; + isComplete = _reversed; + } + if (time < 0) { + _active = false; + if (_duration == 0) { //zero-duration tweens are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the "playhead" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's "playhead" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered. + if (_rawPrevTime >= 0) { + force = true; + } + _rawPrevTime = rawPrevTime = (!suppressEvents || time !== 0 || _rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient. + } + } else if (!_initted) { //if we render the very beginning (time == 0) of a fromTo(), we must force the render (normal tweens wouldn't need to render at a time of 0 when the prevTime was also 0). This is also mandatory to make sure overwriting kicks in immediately. + force = true; + } + + } else { + _totalTime = _time = time; + if (_easeType) { + var r:Number = time / _duration; + if (_easeType == 1 || (_easeType == 3 && r >= 0.5)) { + r = 1 - r; + } + if (_easeType == 3) { + r *= 2; + } + if (_easePower == 1) { + r *= r; + } else if (_easePower == 2) { + r *= r * r; + } else if (_easePower == 3) { + r *= r * r * r; + } else if (_easePower == 4) { + r *= r * r * r * r; + } + if (_easeType == 1) { + ratio = 1 - r; + } else if (_easeType == 2) { + ratio = r; + } else if (time / _duration < 0.5) { + ratio = r / 2; + } else { + ratio = 1 - (r / 2); + } + + } else { + ratio = _ease.getRatio(time / _duration); + } + + } + + if (_time == prevTime && !force) { + return; + } else if (!_initted) { + _init(); + if (!_initted || _gc) { //immediateRender tweens typically won't initialize until the playhead advances (_time is greater than 0) in order to ensure that overwriting occurs properly. Also, if all of the tweening properties have been overwritten (which would cause _gc to be true, as set in _init()), we shouldn't continue otherwise an onStart callback could be called for example. + return; + } + //_ease is initially set to defaultEase, so now that init() has run, _ease is set properly and we need to recalculate the ratio. Overall this is faster than using conditional logic earlier in the method to avoid having to set ratio twice because we only init() once but renderTime() gets called VERY frequently. + if (_time && !isComplete) { + ratio = _ease.getRatio(_time / _duration); + } else if (isComplete && _ease._calcEnd) { + ratio = _ease.getRatio((_time === 0) ? 0 : 1); + } + } + + if (!_active) if (!_paused && _time !== prevTime && time >= 0) { + _active = true; //so that if the user renders a tween (as opposed to the timeline rendering it), the timeline is forced to re-render and align it with the proper time/frame on the next rendering cycle. Maybe the tween already finished but the user manually re-renders it as halfway done. + } + if (prevTime == 0) { + if (_startAt != null) { + if (time >= 0) { + _startAt.render(time, suppressEvents, force); + } else if (!callback) { + callback = "_dummyGS"; //if no callback is defined, use a dummy value just so that the condition at the end evaluates as true because _startAt should render AFTER the normal render loop when the time is negative. We could handle this in a more intuitive way, of course, but the render loop is the MOST important thing to optimize, so this technique allows us to avoid adding extra conditional logic in a high-frequency area. + } + } + if (vars.onStart) if (_time != 0 || _duration == 0) if (!suppressEvents) { + vars.onStart.apply(null, vars.onStartParams); + } + } + + pt = _firstPT; + while (pt) { + if (pt.f) { + pt.t[pt.p](pt.c * ratio + pt.s); + } else { + pt.t[pt.p] = pt.c * ratio + pt.s; + } + pt = pt._next; + } + + if (_onUpdate != null) { + if (time < 0 && _startAt != null && _startTime != 0) { //if the tween is positioned at the VERY beginning (_startTime 0) of its parent timeline, it's illegal for the playhead to go back further, so we should not render the recorded startAt values. + _startAt.render(time, suppressEvents, force); //note: for performance reasons, we tuck this conditional logic inside less traveled areas (most tweens don't have an onUpdate). We'd just have it at the end before the onComplete, but the values should be updated before any onUpdate is called, so we ALSO put it here and then if it's not called, we do so later near the onComplete. + } + if (!suppressEvents) if (_time !== prevTime || isComplete) { + _onUpdate.apply(null, vars.onUpdateParams); + } + } + + if (callback) if (!_gc) { //check gc because there's a chance that kill() could be called in an onUpdate + + if (time < 0 && _startAt != null && _onUpdate == null && _startTime != 0) { //if the tween is positioned at the VERY beginning (_startTime 0) of its parent timeline, it's illegal for the playhead to go back further, so we should not render the recorded startAt values. + _startAt.render(time, suppressEvents, force); + } + if (isComplete) { + if (_timeline.autoRemoveChildren) { + _enabled(false, false); + } + _active = false; + } + if (!suppressEvents) if (vars[callback]) { + vars[callback].apply(null, vars[callback + "Params"]); + } + if (_duration === 0 && _rawPrevTime === _tinyNum && rawPrevTime !== _tinyNum) { //the onComplete or onReverseComplete could trigger movement of the playhead and for zero-duration tweens (which must discern direction) that land directly back on their start time, we don't want to fire again on the next render. Think of several addPause()'s in a timeline that forces the playhead to a certain spot, but what if it's already paused and another tween is tweening the "time" of the timeline? Each time it moves [forward] past that spot, it would move back, and since suppressEvents is true, it'd reset _rawPrevTime to _tinyNum so that when it begins again, the callback would fire (so ultimately it could bounce back and forth during that tween). Again, this is a very uncommon scenario, but possible nonetheless. + _rawPrevTime = 0; + } + } + + } + + /** @private Same as kill() except that it returns a Boolean indicating if any significant properties were changed (some plugins like MotionBlurPlugin may perform cleanup tasks that alter alpha, etc.). **/ + override public function _kill(vars:Object=null, target:Object=null):Boolean { + if (vars === "all") { + vars = null; + } + if (vars == null) if (target == null || target == this.target) { + return _enabled(false, false); + } + target = target || _targets || this.target; + var i:int, overwrittenProps:Object, p:String, pt:PropTween, propLookup:Object, changed:Boolean, killProps:Object, record:Boolean; + if (target is Array && typeof(target[0]) === "object") { + i = target.length; + while (--i > -1) { + if (_kill(vars, target[i])) { + changed = true; + } + } + } else { + if (_targets) { + i = _targets.length; + while (--i > -1) { + if (target === _targets[i]) { + propLookup = _propLookup[i] || {}; + _overwrittenProps = _overwrittenProps || []; + overwrittenProps = _overwrittenProps[i] = vars ? _overwrittenProps[i] || {} : "all"; + break; + } + } + } else if (target !== this.target) { + return false; + } else { + propLookup = _propLookup; + overwrittenProps = _overwrittenProps = vars ? _overwrittenProps || {} : "all"; + } + if (propLookup) { + killProps = vars || propLookup; + record = (vars != overwrittenProps && overwrittenProps != "all" && vars != propLookup && (typeof(vars) != "object" || vars._tempKill != true)); //_tempKill is a super-secret way to delete a particular tweening property but NOT have it remembered as an official overwritten property (like in BezierPlugin) + for (p in killProps) { + pt = propLookup[p] + if (pt != null) { + if (pt.pg && pt.t._kill(killProps)) { + changed = true; //some plugins need to be notified so they can perform cleanup tasks first + } + if (!pt.pg || pt.t._overwriteProps.length === 0) { + if (pt._prev) { + pt._prev._next = pt._next; + } else if (pt == _firstPT) { + _firstPT = pt._next; + } + if (pt._next) { + pt._next._prev = pt._prev; + } + pt._next = pt._prev = null; + } + delete propLookup[p]; + } + if (record) { + overwrittenProps[p] = 1; + } + } + if (_firstPT == null && _initted) { //if all tweening properties are killed, kill the tween. Without this line, if there's a tween with multiple targets and then you killTweensOf() each target individually, the tween would technically still remain active and fire its onComplete even though there aren't any more properties tweening. + _enabled(false, false); + } + } + } + return changed; + } + + /** @inheritDoc **/ + override public function invalidate():* { + if (_notifyPluginsOfEnabled) { + _onPluginEvent("_onDisable", this); + } + _firstPT = null; + _overwrittenProps = null; + _onUpdate = null; + _startAt = null; + _initted = _active = _notifyPluginsOfEnabled = false; + _propLookup = (_targets) ? {} : []; + return this; + } + + /** @private (see Animation._enabled() for notes) **/ + override public function _enabled(enabled:Boolean, ignoreTimeline:Boolean=false):Boolean { + if (enabled && _gc) { + if (_targets) { + var i:int = _targets.length; + while (--i > -1) { + _siblings[i] = _register(_targets[i], this, true); + } + } else { + _siblings = _register(target, this, true); + } + } + super._enabled(enabled, ignoreTimeline); + if (_notifyPluginsOfEnabled) if (_firstPT != null) { + return _onPluginEvent(((enabled) ? "_onEnable" : "_onDisable"), this); + } + return false; + } + + + +//---- STATIC FUNCTIONS ----------------------------------------------------------------------------------- + + /** + * Static method for creating a TweenLite instance that animates to the specified destination values + * (from the current values). The following lines of code all produce identical results: + * + * +TweenLite.to(mc, 1, {x:100}); +var myTween = new TweenLite(mc, 1, {x:100}); +var myTween = TweenLite.to(mc, 1, {x:100}); + + * + *

    Each line above will tween the "x" property of the mc object + * to a value of 100 over the coarse of 1 second. They each use a slightly different syntax, + * all of which are valid. If you don't need to store a reference of the tween, just use the + * static TweenLite.to( ) call.

    + * + *

    Since the target parameter can also be an array of objects, the following + * code will tween the x property of mc1, mc2, and mc3 to a value of 100 simultaneously:

    + * + * +TweenLite.to([mc1, mc2, mc3], 1, {x:100}); + + *

    Even though 3 objects are animating, there is still only one tween created. + * In order to stagger or offset the start times of each object animating, please see + * the staggerTo() method of TimelineLite or TweenMax.

    + * + *

    For simple sequencing, you can use the delay special property + * (like TweenLite.to(mc, 1, {x:100, delay:0.5})), + * but it is highly recommended that you consider using TimelineLite (or TimelineMax) + * for all but the simplest sequencing tasks. It has an identical to() method + * that allows you to append tweens one-after-the-other and then control the entire sequence + * as a whole. You can even have the tweens overlap as much as you want.

    + * + * @param target Target object (or array of objects) whose properties this tween affects. + * @param duration Duration in seconds (or frames if useFrames:true is set in the vars parameter) + * @param vars An object defining the end value for each property that should be tweened as well as any special properties like onComplete, ease, etc. For example, to tween mc.x to 100 and mc.y to 200 and then call myFunction, do this: TweenLite.to(mc, 1, {x:100, y:200, onComplete:myFunction}); + * @return TweenLite instance + * @see com.greensock.TimelineLite#to() + * @see com.greensock.TimelineLite#staggerTo() + * @see com.greensock.TweenMax#staggerTo() + * @see #from() + * @see #fromTo() + */ + public static function to(target:Object, duration:Number, vars:Object):TweenLite { + return new TweenLite(target, duration, vars); + } + + /** + * Static method for creating a TweenLite instance that tweens backwards - + * you define the BEGINNING values and the current values are used + * as the destination values which is great for doing things like animating objects + * onto the screen because you can set them up initially the way you want them to look + * at the end of the tween and then animate in from elsewhere. + * + *

    NOTE: By default, immediateRender is true in + * from() tweens, meaning that they immediately render their starting state + * regardless of any delay that is specified. You can override this behavior by passing + * immediateRender:false in the vars parameter so that it will + * wait to render until the tween actually begins (often the desired behavior when inserting + * into TimelineLite or TimelineMax instances). To illustrate the default behavior, the + * following code will immediately set the alpha of mc + * to 0 and then wait 2 seconds before tweening the alpha back to 1 over + * the course of 1.5 seconds:

    + * + *

    + * TweenLite.from(mc, 1.5, {alpha:0, delay:2}); + *

    + * + *

    Since the target parameter can also be an array of objects, the following + * code will tween the alpha property of mc1, mc2, and mc3 from a value of 0 simultaneously:

    + * + * +TweenLite.from([mc1, mc2, mc3], 1.5, {alpha:0}); + + *

    Even though 3 objects are animating, there is still only one tween created. + * In order to stagger or offset the start times of each object animating, please see + * the staggerFrom() method of TimelineLite or TweenMax.

    + * + *

    For simple sequencing, you can use the delay special property + * (like TweenLite.from(mc, 1, {alpha:0, delay:0.5})), + * but it is highly recommended that you consider using TimelineLite (or TimelineMax) + * for all but the simplest sequencing tasks. It has an identical from() method + * that allows you to append tweens one-after-the-other and then control the entire sequence + * as a whole. You can even have the tweens overlap as much as you want.

    + * + * @param target Target object (or array of objects) whose properties this tween affects. + * @param duration Duration in seconds (or frames if useFrames:true is set in the vars parameter) + * @param vars An object defining the starting value for each property that should be tweened as well as any special properties like onComplete, ease, etc. For example, to tween mc.x from 100 and mc.y from 200 and then call myFunction, do this: TweenLite.from(mc, 1, {x:100, y:200, onComplete:myFunction}); + * @return TweenLite instance + * @see #to() + * @see #fromTo() + * @see com.greensock.TimelineLite#from() + * @see com.greensock.TimelineLite#staggerFrom() + * @see com.greensock.TweenMax#staggerFrom() + */ + public static function from(target:Object, duration:Number, vars:Object):TweenLite { + vars = _prepVars(vars, true); + vars.runBackwards = true; + return new TweenLite(target, duration, vars); + } + + /** + * Static method for creating a TweenLite instance that allows you to define both the starting + * and ending values (as opposed to to() and from() tweens which are + * based on the target's current values at one end or the other). + * + *

    NOTE: Only put starting values in the fromVars parameter - all + * special properties for the tween (like onComplete, onUpdate, delay, etc.) belong in the toVars + * parameter.

    + * + *

    By default, immediateRender is true in + * fromTo() tweens, meaning that they immediately render their starting state + * regardless of any delay that is specified. This is done for convenience because it is + * often the preferred behavior when setting things up on the screen to animate into place, but + * you can override this behavior by passing immediateRender:false in the + * fromVars or toVars parameter so that it will wait to render + * the starting values until the tween actually begins (often the desired behavior when inserting + * into TimelineLite or TimelineMax instances).

    + * + *

    Since the target parameter can also be an array of objects, the following + * code will tween the x property of mc1, mc2, and mc3 from 0 to 100 simultaneously:

    + * + * +TweenLite.fromTo([mc1, mc2, mc3], 1, {x:0}, {x:100}); + + *

    Even though 3 objects are animating, there is still only one tween created. + * In order to stagger or offset the start times of each object animating, please see + * the staggerFromTo() method of TimelineLite or TweenMax.

    + * + *

    For simple sequencing, you can use the delay special property + * (like TweenLite.fromTo(mc, 1, {x:0}, {x:100, delay:0.5})), + * but it is highly recommended that you consider using TimelineLite (or TimelineMax) + * for all but the simplest sequencing tasks. It has an identical fromTo() method + * that allows you to append tweens one-after-the-other and then control the entire sequence + * as a whole. You can even have the tweens overlap as much as you want.

    + * + * @param target Target object (or array of objects) whose properties this tween affects. + * @param duration Duration in seconds (or frames if useFrames:true is set in the vars parameter) + * @param fromVars An object defining the starting value for each property that should be tweened. For example, to tween mc.x from 100 and mc.y from 200, fromVars would look like this: {x:100, y:200}. + * @param toVars An object defining the end value for each property that should be tweened as well as any special properties like onComplete, ease, etc. For example, to tween mc.x from 0 to 100 and mc.y from 0 to 200 and then call myFunction, do this: TweenLite.fromTo(mc, 1, {x:0, y:0}, {x:100, y:200, onComplete:myFunction}); + * @return TweenLite instance + * @see #to() + * @see #from() + * @see com.greensock.TimelineLite#fromTo() + * @see com.greensock.TimelineLite#staggerFromTo() + * @see com.greensock.TweenMax#staggerFromTo() + */ + public static function fromTo(target:Object, duration:Number, fromVars:Object, toVars:Object):TweenLite { + toVars = _prepVars(toVars, true); + fromVars = _prepVars(fromVars); + toVars.startAt = fromVars; + toVars.immediateRender = (toVars.immediateRender != false && fromVars.immediateRender != false); + return new TweenLite(target, duration, toVars); + } + + /** @private Accommodates TweenLiteVars instances for strong data typing and code hinting **/ + protected static function _prepVars(vars:Object, immediateRender:Boolean=false):Object { + if (vars._isGSVars) { + vars = vars.vars; + } + if (immediateRender && !("immediateRender" in vars)) { + vars.immediateRender = true; + } + return vars; + } + + /** + * Provides a simple way to call a function after a set amount of time (or frames). You can + * optionally pass any number of parameters to the function too. + * + *

    JavaScript and AS2 note: - Due to the way JavaScript and AS2 don't + * maintain scope (what "this" refers to, or the context) in function calls, + * it can be useful to define the scope specifically. Therefore, in the JavaScript and AS2 + * versions the 4th parameter is scope, bumping useFrames + * back to the 5th parameter:

    + * + *

    TweenLite.delayedCall(delay, callback, params, scope, useFrames) [JavaScript and AS2 only]

    + * + * +//calls myFunction after 1 second and passes 2 parameters: +TweenLite.delayedCall(1, myFunction, ["param1", 2]); + +function myFunction(param1, param2) { + //do stuff +} + + * + * @param delay Delay in seconds (or frames if useFrames is true) before the function should be called + * @param callback Function to call + * @param params An Array of parameters to pass the function (optional). + * @param useFrames If the delay should be measured in frames instead of seconds, set useFrames to true (default is false) + * @return TweenLite instance + * @see com.greensock.TimelineLite#call() + * @see com.greensock.TimelineMax#addCallback() + */ + public static function delayedCall(delay:Number, callback:Function, params:Array=null, useFrames:Boolean=false):TweenLite { + return new TweenLite(callback, 0, {delay:delay, onComplete:callback, onCompleteParams:params, onReverseComplete:callback, onReverseCompleteParams:params, immediateRender:false, useFrames:useFrames, overwrite:0}); + } + + /** + * Immediately sets properties of the target accordingly - essentially a zero-duration to() tween with a more + * intuitive name. So the following lines produce identical results: + * + * +TweenLite.set(myObject, {x:100, y:50, alpha:0}); +TweenLite.to(myObject, 0, {x:100, y:50, alpha:0}); + + * + *

    And of course you can use an array to set the properties of multiple targets at the same time, like:

    + * + * +TweenLite.set([obj1, obj2, obj3], {x:100, y:50, alpha:0}); + + * + * @param target Target object (or array of objects) whose properties will be affected. + * @param vars An object defining the value for each property that should be set. For example, to set mc.x to 100 and mc.y to 200, do this: TweenLite.set(mc, {x:100, y:200}); + * @return A TweenLite instance (with a duration of 0) which can optionally be inserted into a TimelineLite/Max instance (although it's typically more concise to just use the timeline's set() method). + */ + public static function set(target:Object, vars:Object):TweenLite { + return new TweenLite(target, 0, vars); + } + + /** @private **/ + private static function _dumpGarbage(event:Event):void { + if ((_rootFrame / 60) >> 0 === _rootFrame / 60) { //faster than !(_rootFrame % 60) + var i:int, a:Array, tgt:Object; + for (tgt in _tweenLookup) { + a = _tweenLookup[tgt]; + i = a.length; + while (--i > -1) { + if (a[i]._gc) { + a.splice(i, 1); + } + } + if (a.length === 0) { + delete _tweenLookup[tgt]; + } + } + } + } + + + + /** + * Kills all the tweens (or specific tweening properties) of a particular object or delayedCalls + * to a particular function. If, for example, you want to kill all tweens of myObject, + * you'd do this: + * + *

    + * TweenLite.killTweensOf(myObject); + *

    + * + *

    To kill only active (currently animating) tweens of myObject, you'd do this:

    + * + *

    + * TweenLite.killTweensOf(myObject, true); + *

    + * + *

    To kill only particular tweening properties of the object, use the third parameter. + * For example, if you only want to kill all the tweens of myObject.alpha and + * myObject.x, you'd do this:

    + * + *

    + * TweenLite.killTweensOf(myObject, false, {alpha:true, x:true}); + *

    + * + *

    To kill all the delayedCalls that were created like TweenLite.delayedCall(5, myFunction);, + * you can simply call TweenLite.killTweensOf(myFunction); because delayedCalls + * are simply tweens that have their target and onComplete set to + * the same function (as well as a delay of course).

    + * + *

    killTweensOf() affects tweens that haven't begun yet too. If, for example, + * a tween of myObject has a delay of 5 seconds and + * TweenLite.killTweensOf(mc) is called 2 seconds after the tween was created, + * it will still be killed even though it hasn't started yet.

    + * + * @param target Object whose tweens should be killed immediately or selector text to feed the selector engine to find the target(s). + * @param onlyActive If true, only tweens that are currently active will be killed (a tween is considered "active" if the virtual playhead is actively moving across the tween and it is not paused, nor are any of its ancestor timelines paused). + * @param vars To kill only specific properties, use a generic object containing enumerable properties corresponding to the ones that should be killed like {x:true, y:true}. The values assigned to each property of the object don't matter - the sole purpose of the object is for iteration over the named properties (in this case, x and y). If no object (or null) is defined, all matched tweens will be killed in their entirety. + **/ + public static function killTweensOf(target:*, onlyActive:*=false, vars:Object=null):void { + if (typeof(onlyActive) === "object") { + vars = onlyActive; //for backwards compatibility (before "onlyActive" parameter was inserted) + onlyActive = false; + } + var a:Array = TweenLite.getTweensOf(target, onlyActive), + i:int = a.length; + while (--i > -1) { + a[i]._kill(vars, target); + } + } + + /** + * Immediately kills all of the delayedCalls to a particular function. If, for example, + * you want to kill all delayedCalls to myFunction, you'd do this: + * + *

    + * TweenLite.killDelayedCallsTo(myFunction); + *

    + * + *

    Since a delayedCall is just a tween that uses the function/callback as both its target + * and its onComplete, TweenLite.killTweensOf(myFunction) produces exactly the + * same result as TweenLite.killDelayedCallsTo(myFunction).

    + * + *

    This method affects all delayedCalls that were created using TweenLite.delayedCall() + * or TweenMax.delayedCall() or the call() or addCallback() methods + * of TimelineLite or TimelineMax. Basically, any tween whose target is the function you supply will + * be killed.

    + * + * @param func The function for which all delayedCalls should be killed/cancelled. + **/ + public static function killDelayedCallsTo(func:Function):void { + killTweensOf(func); + } + + /** + * Returns an array containing all the tweens of a particular target (or group of targets) that have not + * been released for garbage collection yet which typically happens within a few seconds after the tween completes. + * For example, TweenLite.getTweensOf(myObject) returns an array of all tweens + * of myObject, even tweens that haven't begun yet. TweenLite.getTweensOf([myObject1, myObject2]); + * will return a condensed array of the tweens of myObject1 plus all the tweens + * of myObject2 combined into one array with duplicates removed. + * + *

    Since the method only finds tweens that haven't been released for garbage collection, if you create a tween + * and then let it finish and then a while later try to find it with getTweensOf(), it may not be found + * because it was released by the engine for garbage collection. Remember, one of the best parts of GSAP is that it + * saves you from the headache of managing gc. Otherwise, you'd need to manually dispose each tween you create, making + * things much more cumbersome.

    + * + * +TweenLite.to(myObject1, 1, {x:100}); +TweenLite.to(myObject2, 1, {x:100}); +TweenLite.to([myObject1, myObject2], 1, {alpha:0}); + +var a1 = TweenLite.getTweensOf(myObject1); //finds 2 tweens +var a2 = TweenLite.getTweensOf([myObject1, myObject2]); //finds 3 tweens + + * @param target The target whose tweens should be returned, or an array of such targets + * @param onlyActive If true, only tweens that are currently active will be returned (a tween is considered "active" if the virtual playhead is actively moving across the tween and it is not paused, nor are any of its ancestor timelines paused). + * @return An array of tweens + **/ + public static function getTweensOf(target:*, onlyActive:Boolean=false):Array { + var i:int, a:Array, j:int, t:TweenLite; + if (target is Array && typeof(target[0]) != "string" && typeof(target[0]) != "number") { + i = target.length; + a = []; + while (--i > -1) { + a = a.concat(getTweensOf(target[i], onlyActive)); + } + i = a.length; + //now get rid of any duplicates (tweens of arrays of objects could cause duplicates) + while (--i > -1) { + t = a[i]; + j = i; + while (--j > -1) { + if (t === a[j]) { + a.splice(i, 1); + } + } + } + } else { + a = _register(target).concat(); + i = a.length; + while (--i > -1) { + if (a[i]._gc || (onlyActive && !a[i].isActive())) { + a.splice(i, 1); + } + } + } + return a; + } + + /** + * @private + * Used for one or more of the following purposes: + * 1) Register a target, putting it into the lookup/Dictionary for easy lookup later + * 2) Returns an array of sibling tweens (tweens of the same target) + * 3) scrubs the siblings array of duplicate instances of the tween (typically only used when re-enabling a tween instance). + **/ + protected static function _register(target:Object, tween:TweenLite=null, scrub:Boolean=false):Array { + var a:Array = _tweenLookup[target], + i:int; + if (a == null) { + a = _tweenLookup[target] = []; + } + if (tween) { + i = a.length; + a[i] = tween; + if (scrub) { + while (--i > -1) { + if (a[i] === tween) { + a.splice(i, 1); + } + } + } + } + return a; + } + + /** @private Performs overwriting **/ + protected static function _applyOverwrite(target:Object, tween:TweenLite, props:Object, mode:int, siblings:Array):Boolean { + var i:int, changed:Boolean, curTween:TweenLite; + if (mode == 1 || mode >= 4) { + var l:int = siblings.length; + for (i = 0; i < l; i++) { + curTween = siblings[i]; + if (curTween != tween) { + if (!curTween._gc) if (curTween._enabled(false, false)) { + changed = true; + } + } else if (mode == 5) { + break; + } + } + return changed; + } + //NOTE: Add 0.0000000001 to overcome floating point errors that can cause the startTime to be VERY slightly off (when a tween's time() is set for example) + var startTime:Number = tween._startTime + 0.0000000001, overlaps:Array = [], oCount:int = 0, zeroDur:Boolean = (tween._duration == 0), globalStart:Number; + i = siblings.length; + while (--i > -1) { + curTween = siblings[i]; + if (curTween === tween || curTween._gc || curTween._paused) { + //ignore + } else if (curTween._timeline != tween._timeline) { + globalStart = globalStart || _checkOverlap(tween, 0, zeroDur); + if (_checkOverlap(curTween, globalStart, zeroDur) === 0) { + overlaps[oCount++] = curTween; + } + } else if (curTween._startTime <= startTime) if (curTween._startTime + curTween.totalDuration() / curTween._timeScale > startTime) if (!((zeroDur || !curTween._initted) && startTime - curTween._startTime <= 0.0000000002)) { + overlaps[oCount++] = curTween; + } + } + + i = oCount; + while (--i > -1) { + curTween = overlaps[i]; + if (mode == 2) if (curTween._kill(props, target)) { + changed = true; + } + if (mode !== 2 || (!curTween._firstPT && curTween._initted)) { + if (curTween._enabled(false, false)) { //if all property tweens have been overwritten, kill the tween. + changed = true; + } + } + } + return changed; + } + + /** + * @private + * Checks if a tween overlaps with a particular global time value. "reference" is the point in time on the global (root) timeline, + * and if the tween overlaps with it, 0 is returned. If the tween starts AFTER the reference, the difference between the two (positive + * value) is returned. If reference is AFTER the end of the tween, the negative offset is given (reference time minus where the end of + * the tween is on the global timeline). If the tween lands EXACTLY on the reference, it will check to see if the tween's _initted property + * is true. If not, 0.0000000001 is returned, indicating that the tween shouldn't be overwritten. If any of the child's anscestor timelines + * are paused, -100 is returned. This wraps a lot of functionality into a relatively concise method (keeps file size low and performance high) + **/ + private static function _checkOverlap(tween:Animation, reference:Number, zeroDur:Boolean):Number { + var tl:SimpleTimeline = tween._timeline, + ts:Number = tl._timeScale, + t:Number = tween._startTime, + min:Number = 0.0000000001; + while (tl._timeline) { + t += tl._startTime; + ts *= tl._timeScale; + if (tl._paused) { + return -100; + } + tl = tl._timeline; + } + t /= ts; + return (t > reference) ? t - reference : ((zeroDur && t == reference) || (!tween._initted && t - reference < 2 * min)) ? min : ((t += tween.totalDuration() / tween._timeScale / ts) > reference + min) ? 0 : t - reference - min; + } + + + } + +} + diff --git a/FairyGUI-as3/src/com/greensock/TweenMax.as b/FairyGUI-as3/src/com/greensock/TweenMax.as new file mode 100644 index 0000000..29823b7 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/TweenMax.as @@ -0,0 +1,2045 @@ +/** + * VERSION: 12.1.5 + * DATE: 2014-07-19 + * AS3 (AS2 version is also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock { + import com.greensock.TweenLite; + import com.greensock.core.Animation; + import com.greensock.core.PropTween; + import com.greensock.core.SimpleTimeline; + import com.greensock.events.TweenEvent; + import com.greensock.plugins.*; + + import flash.display.DisplayObject; + import flash.display.DisplayObjectContainer; + import flash.display.Shape; + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.events.IEventDispatcher; + import flash.utils.getTimer; +/** + * TweenMax extends TweenLite, adding many useful (but non-essential) features like repeat(), + * repeatDelay(), yoyo(), AS3 event dispatching, updateTo(), pauseAll(), and more. It also activates many extra plugins + * by default, making it extremely full-featured. Any of the plugins can work with TweenLite too, but TweenMax saves + * you the step of activating the common ones. Since TweenMax extends TweenLite, it can do ANYTHING + * TweenLite can do plus more. The syntax is identical. You can mix and match TweenLite and TweenMax in your + * project as you please, but if file size is a concern it is best to stick with TweenLite unless you need + * a particular TweenMax-only feature. + * + *

    Like TweenLite, a TweenMax instance handles tweening one or more properties of any object + * (or array of objects) over time. TweenMax can be used on its own or in conjuction with advanced sequencing + * tools like TimelineLite or TimelineMax to make complex tasks much simpler. With scores of other animation + * frameworks to choose from, why consider the GreenSock Animation Platform?:

    + * + *
      + *
    • SPEED - The platform has been highly optimized for maximum performance. + * See some speed comparisons yourself at + * http://www.greensock.com/tweening-speed-test/
    • + * + *
    • Freakishly robust feature set - In addition to tweening any numeric property + * of any object, plugins can be activated to tween hex colors, beziers, arrays, filters, plus + * LOTS more. It can round values, use relative values, smoothly reverse() on the + * fly, automatically detect and accommodate getter/setter functions, employ virtually any easing + * equation, pause()/resume() anytime, and intelligently manage conflicting tweens of + * the same object with various overwrite modes. TweenMax extends TweenLite and adds even + * more capabilities like repeat, yoyo, repeatDelay, on-the-fly destination value + * updates and more.
    • + * + *
    • Sequencing, grouping, and management features - TimelineLite and TimelineMax + * make it surprisingly simple to create complex sequences or groups of tweens that you can + * control as a whole. play(), pause(), restart(), or reverse(). You can even tween a timeline's + * time or progress to fastforward or rewind the entire timeline. Add + * labels, change the timeline's timeScale, nest timelines within timelines, and much more. + * This can revolutionize your animation workflow, making it more modular and concise.
    • + * + *
    • AS3, AS2, and JavaScript - Most other engines are only developed for one language, + * but the GreenSock Animation Platform allows you to use a consistent API across all your Flash and + * HTML5 projects.
    • + * + *
    • Ease of use - Designers and Developers alike rave about how intuitive the platform is.
    • + * + *
    • Support and reliability - With frequent updates, dedicated forums, + * committed authorship, a solid track record, a proven funding mechansim, and a thriving community of users, + * the platform is a safe long-term bet (unlike many open source projects).
    • + * + *
    • Expandability - With its plugin architecture, you can activate as many (or as few) + * extra features as your project requires. Write your own plugin to handle particular special + * properties in custom ways. Minimize bloat and maximize performance.
    • + * + *
    + * + *

    USAGE

    + *

    The most common type of tween is a to() tween which allows you + * to define the destination values:

    + * + *

    + * TweenMax.to(myObject, 2, {x:100, y:200}); + *

    + * + *

    The above code will tween myObject.x from whatever it currently is to 100 and + * myObject.y property to 200 over the course of 2 seconds. Notice the x and y values are + * defined inside a generic object (between curly braces). Put as many properties there as you want.

    + * + *

    By default, tweens begin immediately, although you can delay them using the delay + * special property or pause them initially using the paused special property (see below).

    + * + *

    The target can also be an array of objects. For example, the following tween will + * tween the alpha property to 0.5 and y property to 100 for obj1, obj2, and obj3:

    + * + *

    + * TweenMax.to([obj1, obj2, obj3], 1, {alpha:0.5, y:100}); + *

    + * + *

    You can also use a from() tween if you want to define the + * starting values instead of the ending values so that the target tweens from + * the defined values to wherever they currently are. Or a fromTo() + * lets you define both starting and ending values.

    + * + *

    Although the to(), from(), and fromTo() static methods + * are popular because they're quick and can avoid some garbage collection hassles, you can also + * use the more object-oriented syntax like this:

    + * + *

    + * var tween = new TweenMax(myObject, 2, {x:100, y:200}); + *

    + * + *

    or even:

    + * + *

    + * var tween = TweenMax.to(myObject, 2, {x:100, y:200}); + *

    + * + * + *

    SPECIAL PROPERTIES:

    + *

    Typically the vars parameter is used to define ending values for tweening + * properties of the target (or beginning values for from() tweens) + * like {x:100, y:200, alpha:0}, but the following optional special properties + * serve other purposes:

    + * + *
      + *
    • delay : Number - + * Amount of delay in seconds (or frames for frames-based tweens) before the tween should begin.
    • + * + *
    • ease : Ease (or Function) - + * You can choose from various eases to control the rate of change during + * the animation, giving it a specific "feel". For example, ElasticOut.ease + * or StrongInOut.ease. For best performance, use one of the GreenSock eases + * (which are in the com.greensock.easing package). TweenMax also works with + * any standard easing equation that uses the typical 4 parameters (time, start, + * change, duration) like Adobe's fl.motion.easing eases. + * The default is Power1.easeOut. For linear animation, use the GreenSock + * Linear.ease ease
    • + * + *
    • onComplete : Function - + * A function that should be called when the tween has completed
    • + * + *
    • onCompleteParams : Array - + * An Array of parameters to pass the onComplete function. For example, + * TweenMax.to(mc, 1, {x:100, onComplete:myFunction, onCompleteParams:[mc, "param2"]}); + * To self-reference the tween instance itself in one of the parameters, use "{self}", + * like: onCompleteParams:["{self}", "param2"]
    • + * + *
    • useFrames : Boolean - + * If useFrames is true, the tweens's timing will be + * based on frames instead of seconds because it is intially added to the root + * frames-based timeline. This causes both its duration + * and delay to be based on frames. An animations's timing mode is + * always determined by its parent timeline.
    • + * + *
    • easeParams : Array [deprecated] - + * Some GreenSock eases (like OutIn or ElasticOut) have a config() + * method that allows them to be configured to change their behavior (like TweenMax.to(mc, 1, {x:100, ease:ElasticOut.ease.config(0.5, 1)}) + * but if you are using a non-GreenSock ease that accepts extra parameters like Adobe's + * fl.motion.easing.Elastic, easeParams allows you to define + * those extra parameters as an array like TweenMax.to(mc, 1, {x:100, ease:Elastic.easeOut, easeParams:[0.5, 1]}). + * Most easing equations, however, don't require extra parameters so you won't need to + * pass in any easeParams. GreenSock eases provide the best performance, so use them + * whenever possible.
    • + * + *
    • immediateRender : Boolean - + * Normally when you create a tween, it begins rendering on the very next frame (update cycle) + * unless you specify a delay. However, if you prefer to force the tween to + * render immediately when it is created, set immediateRender to true. + * Or to prevent a from() from rendering immediately, set immediateRender + * to false. By default, from() tweens set immediateRender to true.
    • + * + *
    • onStart : Function - + * A function that should be called when the tween begins (when its time + * changes from 0 to some other value which can happen more than once if the + * tween is restarted multiple times).
    • + * + *
    • onStartParams : Array - + * An Array of parameters to pass the onStart function. For example, + * TweenMax.to(mc, 1, {x:100, delay:1, onStart:myFunction, onStartParams:[mc, "param2"]}); + * To self-reference the tween instance itself in one of the parameters, use "{self}", + * like: onStartParams:["{self}", "param2"]
    • + * + *
    • onUpdate : Function - + * A function that should be called every time the tween updates + * (on every frame while the tween is active)
    • + * + *
    • onUpdateParams : Array - + * An Array of parameters to pass the onUpdate function. For example, + * TweenMax.to(mc, 1, {x:100, onUpdate:myFunction, onUpdateParams:[mc, "param2"]}); + * To self-reference the tween instance itself in one of the parameters, use "{self}", + * like: onUpdateParams:["{self}", "param2"]
    • + * + *
    • onReverseComplete : Function - + * A function that should be called when the tween has reached its beginning again from the + * reverse direction. For example, if reverse() is called the tween will move + * back towards its beginning and when its time reaches 0, onReverseComplete + * will be called. This can also happen if the tween is placed in a TimelineLite or TimelineMax instance + * that gets reversed and plays the tween backwards to (or past) the beginning.
    • + * + *
    • onReverseCompleteParams : Array - + * An Array of parameters to pass the onReverseComplete function. For example, + * TweenMax.to(mc, 1, {x:100, onReverseComplete:myFunction, onReverseCompleteParams:[mc, "param2"]}); + * To self-reference the tween instance itself in one of the parameters, use "{self}", + * like: onReverseCompleteParams:["{self}", "param2"]
    • + * + *
    • paused : Boolean - + * If true, the tween will pause itself immediately upon creation.
    • + * + *
    • overwrite : String (or integer) - + * Controls how (and if) other tweens of the same target are overwritten. + * There are several modes to choose from, but "auto" is the default (although + * you can change the default mode using the TweenLite.defaultOverwrite property): + *
        + *
      • "none" (0) (or false) - no overwriting will occur.
      • + * + *
      • "all" (1) (or true) - immediately overwrites all existing + * tweens of the same target even if they haven't started yet or don't have + * conflicting properties.
      • + * + *
      • "auto" (2) - when the tween renders for the first time, it will analyze + * tweens of the same target that are currently active/running and only overwrite + * individual tweening properties that overlap/conflict. Tweens that haven't begun + * yet are ignored. For example, if another active tween is found that is tweening + * 3 properties, only 1 of which it shares in common with the new tween, the other + * 2 properties will be left alone. Only the conflicting property gets overwritten/killed. + * This is the default mode and typically the most intuitive for developers.
      • + * + *
      • "concurrent" (3) - when the tween renders for the first time, it kills + * only the active (in-progress) tweens of the same target regardless of whether + * or not they contain conflicting properties. Like a mix of "all" + * and "auto". Good for situations where you only want one tween + * controling the target at a time.
      • + * + *
      • "allOnStart" (4) - Identical to "all" but waits to run + * the overwrite logic until the tween begins (after any delay). Kills + * tweens of the same target even if they don't contain conflicting properties + * or haven't started yet.
      • + * + *
      • "preexisting" (5) - when the tween renders for the first time, it kills + * only the tweens of the same target that existed BEFORE this tween was created + * regardless of their scheduled start times. So, for example, if you create a tween + * with a delay of 10 and then a tween with a delay of 1 and then a tween with a + * delay of 2 (all of the same target), the 2nd tween would overwrite the first + * but not the second even though scheduling might seem to dictate otherwise. + * "preexisting" only cares about the order in which the instances + * were actually created. This can be useful when the order in which your code runs + * plays a critical role.
      • + * + *
    • + * + *
    • repeat : Number - + * Number of times that the tween should repeat after its first iteration. For example, + * if repeat is 1, the tween will play a total of twice (the initial play + * plus 1 repeat). To repeat indefinitely, use -1. repeat should always be an integer.
    • + * + *
    • repeatDelay : Number - + * Amount of time in seconds (or frames for frames-based tweens) between repeats. For example, + * if repeat is 2 and repeatDelay is 1, the tween will play initially, + * then wait for 1 second before it repeats, then play again, then wait 1 second again before + * doing its final repeat.
    • + * + *
    • yoyo : Boolean - + * If true, every other repeat cycle will run in the opposite + * direction so that the tween appears to go back and forth (forward then backward). + * This has no affect on the "reversed" property though. So if repeat + * is 2 and yoyo is false, it will look like: + * start - 1 - 2 - 3 - 1 - 2 - 3 - 1 - 2 - 3 - end. But if yoyo is true, + * it will look like: start - 1 - 2 - 3 - 3 - 2 - 1 - 1 - 2 - 3 - end.
    • + * + *
    • onRepeat : Function - + * A function that should be called each time the tween repeats
    • + * + *
    • onRepeatParams : Array - + * An Array of parameters to pass the onRepeat function. For example, + * TweenMax.to(mc, 1, {x:100, onRepeat:myFunction, onRepeatParams:[mc, "param2"]}); + * To self-reference the tween instance itself in one of the parameters, use "{self}", + * like: onRepeatParams:["{self}", "param2"]
    • + * + *
    • onStartListener : Function [AS3 only] - + * A function that should be called (and passed an event parameter) when the tween begins + * (when its totalTime changes from 0 to some other value which can happen more + * than once if the tween is restarted multiple times). Identical to onStart except + * that the function will always be passed an event parameter whose target property points + * to the tween. It's the same as doing myTween.addEventListener("start", myFunction);. + * Unless you need the event parameter, it's better/faster to use onStart.
    • + * + *
    • onUpdateListener : Function [AS3 only] - + * A function that should be called (and passed an event parameter) each time the tween updates + * (on every frame while the tween is active). Identical to onUpdate except + * that the function will always be passed an event parameter whose target property points + * to the tween. It's the same as doing myTween.addEventListener("update", myFunction);. + * Unless you need the event parameter, it's better/faster to use onUpdate.
    • + * + *
    • onCompleteListener : Function [AS3 only] - + * A function that should be called (and passed an event parameter) each time the tween completes. + * Identical to onComplete except that the function will always be passed an event + * parameter whose target property points to the tween. It's the same as doing + * myTween.addEventListener("complete", myFunction);. + * Unless you need the event parameter, it's better/faster to use onComplete.
    • + * + *
    • onReverseCompleteListener : Function [AS3 only] - + * A function that should be called (and passed an event parameter) each time the tween has reached + * its beginning again from the reverse direction. For example, if reverse() is called + * the tween will move back towards its beginning and when its totalTime reaches 0, + * onReverseCompleteListener will be called. This can also happen if the tween is placed + * in a TimelineLite or TimelineMax instance that gets reversed and plays the tween backwards to + * (or past) the beginning. Identical to onReverseComplete except that the function + * will always be passed an event parameter whose target property points to the tween. + * It's the same as doing myTween.addEventListener("reverseComplete", myFunction);. + * Unless you need the event parameter, it's better/faster to use onReverseComplete.
    • + * + *
    • onRepeatListener : Function [AS3 only] - + * A function that should be called (and passed an event parameter) each time the tween repeats. + * Identical to onRepeat except that the function will always be passed an event + * parameter whose target property points to the tween. It's the same as doing + * myTween.addEventListener("repeat", myFunction);. + * Unless you need the event parameter, it's better/faster to use onRepeat.
    • + * + *
    • startAt : Object - + * Allows you to define the starting values for tweening properties. Typically, TweenMax uses + * the current value (whatever it happens to be at the time the tween begins) as the starting + * value, but startAt allows you to override that behavior. Simply pass an object + * in with whatever properties you'd like to set just before the tween begins. For example, + * if mc.x is currently 100, and you'd like to tween it from 0 to 500, do + * TweenMax.to(mc, 2, {x:500, startAt:{x:0}});
    • + *
    + * + *

    AS3 note: In AS3, using a TweenMaxVars + * instance instead of a generic object to define your vars is a bit more verbose but provides + * code hinting and improved debugging because it enforces strict data typing. Use whichever one you prefer.

    + * + * + * + *

    PLUGINS:

    + * + *

    Think of plugins like special properties that are dynamically added, delivering extra abilities without + * forcing them to be baked into the core engine, keeping it relatively lean and mean. Each plugin is associated + * with a property name and it takes responsibility for handling that property. For example, the TintPlugin + * is associated with the "tint" property name so if it is activated it will intercept the "tint" property + * in the following tween and manage it uniquely:

    + * + *

    + * TweenLite.to(mc, 1, {tint:0xFF0000}); + *

    + * + *

    If the TintPlugin wasn't activated, TweenLite would act as though you were trying to literally tween the + * mc.tint property (and there is no such thing).

    + * + *

    In the JavaScript version of TweenMax, activating a plugin is as simple as loading the associated .js file. + * No extra activation code is necessary. And by default, the JavaScript version of TweenMax includes the CSSPlugin + * and RoundPropsPlugin so you don't need to load those separately. In the ActionScript version, activating a plugin + * requires a single line of code and you only need to do it once, so it's pretty easy. Simply pass an Array containing + * the names of all the plugins you'd like to activate to the TweenPlugin.activate() method, like this:

    + * + *

    + * TweenPlugin.activate([FrameLabelPlugin, ColorTransformPlugin, TintPlugin]); + *

    + * + *

    To make it even easier, there is a Plugin Explorer + * which writes the code for you. All you need to do is select the plugins and copy/paste the code + * from the bottom of the tool. It also displays interactive examples of each plugin and the assocaited + * code so that it’s easy to see the correct syntax.

    + * + *

    The following plugins are automatically activated by TweenMax:

    + * + *
      + *
    • autoAlpha : Number - + * autoAlpha is identical to tweening alpha except that it also + * automatically hides the target when the value hits zero, and shows the target when the + * value isn't zero. In AS3, this means it toggles the target's visible property. + * In AS2, the _visible property is toggled, and in JS the visibility + * style property is set to "hidden" to hide. This can help improve rendering performance.
    • + * + *
    • visible : Boolean [AS3/AS2 only] - + * hides or shows the target when the tween completes. In AS3, this means it toggles the target's + * visible property. In AS2, the _visible property is toggled, and in + * JS the display style is set to "none" to hide.
    • + * + *
    • volume : Number [AS3/AS2 only] - + * Tweens the volume of an object. In AS3, it can handle anything with a soundTransform + * property (MovieClip/SoundChannel/NetStream, etc.). In AS2, it is for MovieClips or Sound objects.
    • + * + *
    • tint : Number [AS3/AS2 only] - + * Tweens the color (tint) of the target. Use a hex value, for example: 0xFF0000 for red or 0x0000FF + * for blue, etc. To remove the tint, use null.
    • + * + *
    • frame : Number [AS3/AS2 only] - + * Tweens a MovieClip to a particular frame. To tween to a label, use the FrameLabelPlugin.
    • + * + *
    • bezier : Array - + * Bezier tweening allows you to tween in a non-linear way. For example, you may want to tween + * the target's position from the origin (0,0) 500 pixels to the right (500,0) but curve downwards + * through the middle of the tween. Simply pass as many objects in the bezier array as you'd like, + * one for each "control point". See the BezierPlugin documentation for more details. In this example, + * let's say the control point would be at x/y coordinates 250,50. Just make sure your mc is at + * coordinates 0,0 and then do: TweenMax.to(my_mc, 3, {bezier:[{x:250, y:50}, {x:500, y:0}]});
    • + * + *
    • bezierThrough : Array - + * Identical to bezier except that instead of passing bezier control point values, you + * pass values through which the bezier values should move. This can be more intuitive than using + * control points.
    • + * + *
    • orientToBezier : Boolean (or Array) - + * When doing a bezier or bezierThrough tween, you can use + * orientToBezier to cause the target to alter its rotation in the direction + * of the bezier, making it appear to turn with the curves. The simplest way is to set + * orientToBezier to true, but you can accomplish advanced effects + * like using a different property than "rotation" or adding a certain number of degrees to the + * standard rotational value, etc. by using an array instead. The array should contain the + * following 4 elements (in this order): + *
        + *
      1. Position property 1 (typically "x")
      2. + *
      3. Position property 2 (typically "y")
      4. + *
      5. Rotational property (typically "rotation")
      6. + *
      7. Number of degrees to add (optional - makes it easy to orient your target properly)
      8. + *
      + * For maximum flexibility, you can pass in any number of arrays inside the container array, one + * for each rotational property. This can be convenient when working in 3D because you can rotate + * on multiple axis. If you're doing a standard 2D x/y tween on a bezier, you can simply pass + * in a boolean value of true and TweenMax will use a typical setup, [["x", "y", "rotation", 0]]. + * Hint: Don't forget the container Array (notice the double outer brackets)
    • + * + *
    • hexColors : Object - + * Although hex colors are technically numbers, if you try to tween them conventionally, + * you'll notice that they don't tween smoothly. To tween them properly, the red, green, and + * blue components must be extracted and tweened independently. TweenMax makes it easy. To tween + * a property of your object that's a hex color, just pass an Object with properties named the + * same as your object's hex color properties that should be tweened. For example, if your mc + * object has a "myHexProp" property that you'd like to tween to red (0xFF0000) over the course + * of 2 seconds, do: TweenMax.to(mc, 2, {hexColors:{myHexProp:0xFF0000}}); + * You can pass in any number of hexColor properties.
    • + * + *
    • shortRotation : Object - + * For rotational tweens, it can be useful to have the engine figure out the shortest direction + * to the destination value and go that way. For example, if the target's rotation property is + * at 0 and you need to rotate to 270, it would actually be shorter to go from 0 to -90. + * If rotation is currently 170 degrees and you want to tween it to -170 degrees, + * a normal rotation tween would travel a total of 340 degrees in the counter-clockwise direction, + * but if you use shortRotation, it would travel 20 degrees in the clockwise direction instead. + * In order to accommodate any rotational property (including 3D ones like rotationX, rotationY, + * and rotationZ or even a custom one), shortRotation should be an object whose properties + * correspond to the ones you want tweened. For example, to tween mc.rotation to 270 in ths shortest + * direction, do: TweenMax.to(mc, 1, {shortRotation:{rotation:270}}); or to tween + * its rotationX to -80 and rotationY to 30 in the shortest direction, do: + * TweenMax.to(mc, 1, {shortRotation:{rotationX:-80, rotationY:30}});
    • + * + *
    • roundProps : String - + * A comma-delimited list of property names whose value should be rounded to the nearest integer + * anytime they are updated during the tween. For example, if you're tweening the + * x, y, and alpha properties of mc and you want to round the x and y values (not alpha) + * every time the tween is rendered, do: + * TweenMax.to(mc, 2, {x:300, y:200, alpha:0.5, roundProps:"x,y"});
    • + * + *
    • blurFilter : Object [AS3/AS2 only] - + * Creates a BlurFilter tween affecting any of the following properties: + * blurX, blurY, quality, remove, addFilter, index. For example, + * to blur the object 20 pixels on each axis, do: + * TweenMax.to(mc, 1, {blurFilter:{blurX:20, blurY:20}}); + * To remove the filter as soon as the tween completes, set remove:true + * inside the blurFilter object.
    • + * + *
    • glowFilter : Object [AS3/AS2 only] - + * Creates a GlowFilter tween affecting any of the following properties: + * alpha, blurX, blurY, color, strength, quality, inner, knockout, remove, addFilter, index. + * For example, to create a 20 pixel red glow with a strength of 1.5 and alpha of 1, do: + * TweenMax.to(mc, 1, {glowFilter:{blurX:20, blurY:20, color:0xFF0000, strength:1.5, alpha:1}}); + * To remove the filter as soon as the tween completes, set remove:true + * inside the glowFilter object.
    • + * + *
    • colorMatrixFilter : Object [AS3/AS2 only] - + * Creates a ColorMatrixFilter tween affecting any of the following properties: + * colorize, amount, contrast, brightness, saturation, hue, threshold, relative, matrix, remove, addFilter, index + * For example, to completely desaturate the target, do: + * TweenMax.to(mc, 1, {colorMatrixFilter:{saturation:0}}); + * Or to colorize the object red at 50% strength, do: + * TweenMax.to(mc, 1, {colorMatrixFilter:{colorize:0xFF0000, amount:0.5}}); + * To remove the filter as soon as the tween completes, set remove:true + * inside the colorMatrixFilter object.
    • + * + *
    • dropShadowFilter : Object [AS3/AS2 only] - + * Creates a DropShadowFilter tween affecting any of the following properties: + * alpha, angle, blurX, blurY, color, distance, strength, quality, remove, addFilter, index + * For example, to create a 10 pixel red drop shadow with an alpha of 0.8 and an angle of 45, do: + * TweenMax.to(mc, 1, {dropShadowFilter:{blurX:10, blurY:10, color:0xFF0000, angle:45, alpha:0.8}}); + * To remove the filter as soon as the tween completes, set remove:true + * inside the dropShadowFilter object.
    • + * + *
    • bevelFilter : Object [AS3/AS2 only] - + * Creates a BevelFilter tween affecting any of the following properties: + * angle, blurX, blurY, distance, highlightAlpha, highlightColor, shadowAlpha, shadowColor, strength, quality, remove, addFilter, index + * For example, to create a 10 pixel bevel with a strength of 1.5 and distance of 10 and shadowAlpha of 0.8, do: + * TweenMax.to(mc, 1, {bevelFilter:{blurX:10, blurY:10, strength:1.5, distance:10, shadowAlpha:0.8}}); + * To remove the filter as soon as the tween completes, set remove:true + * inside the bevelFilter object.
    • + *
    + * + * + *

    EXAMPLES:

    + *

    Please see http://www.greensock.com for + * examples, tutorials, and interactive demos.

    + * + * NOTES / TIPS: + *
      + *
    • Passing values as Strings and a preceding "+=" or "-=" will make the tween relative to the + * current value. For example, if you do TweenMax.to(mc, 2, {x:"-=20"}); it'll + * tween mc.x to the left 20 pixels. {x:"+=20"} would move it to the right.
    • + * + *
    • You can use addEventListener() to add listeners to the tween instance manually + * instead of using the onCompleteListener, onStartListener, and onUpdateListener special properties. + * Like myTween.addEventListener("complete", myFunction);
    • + * + *
    • You can change the default ease by setting the TweenLite.defaultEase static property. + * The default is Power1.easeOut.
    • + * + *
    • You can kill all tweens of a particular object anytime with TweenMax.killTweensOf(myObject);
    • + * + *
    • You can kill all delayedCalls to a particular function with TweenMax.killDelayedCallsTo(myFunction) + * or TweenMax.killTweensOf(myFunction);
    • + * + *
    • Use the TweenMax.from() method to animate things into place. For example, + * if you have things set up on the stage in the spot where they should end up, and you + * just want to animate them into place, you can pass in the beginning x and/or y and/or + * alpha (or whatever properties you want).
    • + * + *
    • If you find this class useful, please consider joining Club GreenSock + * which not only helps to sustain ongoing development, but also gets you bonus plugins, classes + * and other benefits that are ONLY available to members. Learn more at + * http://www.greensock.com/club/
    • + *
    + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class TweenMax extends TweenLite implements IEventDispatcher { + /** @private **/ + public static const version:String = "12.1.5"; + + TweenPlugin.activate([ + + //ACTIVATE (OR DEACTIVATE) PLUGINS HERE... + + AutoAlphaPlugin, //tweens alpha and then toggles "visible" to false if/when alpha is zero + EndArrayPlugin, //tweens numbers in an Array + FramePlugin, //tweens MovieClip frames + RemoveTintPlugin, //allows you to remove a tint + TintPlugin, //tweens tints + VisiblePlugin, //tweens a target's "visible" property + VolumePlugin, //tweens the volume of a MovieClip or SoundChannel or anything with a "soundTransform" property + BevelFilterPlugin, //tweens BevelFilters + BezierPlugin, //enables bezier tweening + BezierThroughPlugin, //enables bezierThrough tweening + BlurFilterPlugin, //tweens BlurFilters + ColorMatrixFilterPlugin, //tweens ColorMatrixFilters (including hue, saturation, colorize, contrast, brightness, and threshold) + ColorTransformPlugin, //tweens advanced color properties like exposure, brightness, tintAmount, redOffset, redMultiplier, etc. + DropShadowFilterPlugin, //tweens DropShadowFilters + FrameLabelPlugin, //tweens a MovieClip to particular label + GlowFilterPlugin, //tweens GlowFilters + HexColorsPlugin, //tweens hex colors + RoundPropsPlugin, //enables the roundProps special property for rounding values + ShortRotationPlugin //tweens rotation values in the shortest direction + + ]); + + /** @private **/ + protected static var _listenerLookup:Object = {onCompleteListener:TweenEvent.COMPLETE, onUpdateListener:TweenEvent.UPDATE, onStartListener:TweenEvent.START, onRepeatListener:TweenEvent.REPEAT, onReverseCompleteListener:TweenEvent.REVERSE_COMPLETE}; + + /** + * The object that dispatches a "tick" event each time the engine updates, making it easy for + * you to add your own listener(s) to run custom logic after each update (great for game developers). + * Add as many listeners as you want. The basic syntax is the same for all versions (AS2, AS3, and JavaScript): + * + *

    Basic example (AS2, AS3, and JavaScript):

    + //add listener + TweenMax.ticker.addEventListener("tick", myFunction); + + function myFunction(event) { + //executes on every tick after the core engine updates + } + + //to remove the listener later... + TweenMax.ticker.removeEventListener("tick", myFunction); + + * + *

    Due to differences in the core languages (and to maximize efficiency), the advanced syntax is slightly different + * for the AS3 version compared to AS2 and JavaScript. The parameters beyond the first 2 in the addEventListener() + * method are outlined below:

    + * + *

    JavaScript and AS2

    + *

    addEventListener(type, callback, scope, useParam, priority)

    + *

    Parameters: + *

      + *
    1. type : String - type of listener, should always be "tick"
    2. + *
    3. callback : Function - the function to call when the event occurs
    4. + *
    5. scope : Object - binds the scope to a particular object (scope is basically what "this" refers to in your function). This can be very useful in JavaScript and AS2 because scope isn't generally maintained.
    6. + *
    7. useParam : Boolean - if true, an event object will be generated and fed to the callback each time the event occurs. The event is a generic object and has two properties: type (always "tick") and target which refers to the ticker instance. The default for useParam is false because it improves performance.
    8. + *
    9. priority : Integer - influences the order in which the listeners are called. Listeners with lower priorities are called after ones with higher priorities.
    10. + *
    + *

    + * + *

    Advanced example (JavaScript and AS2):

    + //add listener that requests an event object parameter, binds scope to the current scope (this), and sets priority to 1 so that it is called before any other listeners that had a priority lower than 1... + TweenMax.ticker.addEventListener("tick", myFunction, this, true, 1); + + function myFunction(event) { + //executes on every tick after the core engine updates + } + + //to remove the listener later... + TweenMax.ticker.removeEventListener("tick", myFunction); + + * + *

    AS3

    + *

    The AS3 version uses the standard EventDispatcher.addEventListener() syntax which + * basically allows you to define a priority and whether or not to use weak references (see Adobe's + * docs for details).

    + * + *

    Advanced example [AS3 only]:

    + import flash.events.Event; + + //add listener with weak reference (standard syntax - notice the 5th parameter is true) + TweenMax.ticker.addEventListener("tick", myFunction, false, 0, true); + + function myFunction(event:Event):void { + //executes on every tick after the core engine updates + } + + //to remove the listener later... + TweenMax.ticker.removeEventListener("tick", myFunction); + + **/ + public static var ticker:Shape = Animation.ticker; + + + /** + * Kills all the tweens (or specific tweening properties) of a particular object or + * the delayedCalls to a particular function. If, for example, you want to kill all + * tweens of myObject, you'd do this: + * + *

    + * TweenMax.killTweensOf(myObject); + *

    + * + *

    To kill only active (currently animating) tweens of myObject, you'd do this:

    + * + *

    + * TweenLite.killTweensOf(myObject, true); + *

    + * + *

    To kill only particular tweening properties of the object, use the second parameter. + * For example, if you only want to kill all the tweens of myObject.alpha and + * myObject.x, you'd do this:

    + * + *

    + * TweenMax.killTweensOf(myObject, false, {alpha:true, x:true}); + *

    + * + *

    To kill all the delayedCalls (like ones created using TweenMax.delayedCall(5, myFunction);), + * you can simply call TweenMax.killTweensOf(myFunction); because delayedCalls + * are simply tweens that have their target and onComplete set to + * the same function (as well as a delay of course).

    + * + *

    killTweensOf() affects tweens that haven't begun yet too. If, for example, + * a tween of myObject has a delay of 5 seconds and + * TweenLite.killTweensOf(mc) is called 2 seconds after the tween was created, + * it will still be killed even though it hasn't started yet.

    + * + * @param target Object whose tweens should be killed immediately + * @param onlyActive If true, only tweens that are currently active will be killed (a tween is considered "active" if the virtual playhead is actively moving across the tween and it is not paused, nor are any of its ancestor timelines paused). + * @param vars To kill only specific properties, use a generic object containing enumerable properties corresponding to the ones that should be killed like {x:true, y:true}. The values assigned to each property of the object don't matter - the sole purpose of the object is for iteration over the named properties (in this case, x and y). If no object (or null) is defined, all matched tweens will be killed in their entirety. + */ + public static function killTweensOf(target:*, onlyActive:*=false, vars:Object=null):void { + TweenLite.killTweensOf(target, onlyActive, vars); + } + + /** + * Immediately kills all of the delayedCalls to a particular function. If, for example, + * you want to kill all delayedCalls to myFunction, you'd do this: + * + *

    + * TweenMax.killDelayedCallsTo(myFunction); + *

    + * + *

    Since a delayedCall is just a tween that uses the function/callback as both its target + * and its onComplete, TweenMax.killTweensOf(myFunction) produces exactly the + * same result as TweenMax.killDelayedCallsTo(myFunction).

    + * + *

    This method affects all delayedCalls that were created using TweenLite.delayedCall() + * or TweenMax.delayedCall() or the call() or addCallback() methods + * of TimelineLite or TimelineMax. Basically, any tween whose target is the function you supply will + * be killed.

    + * + * @param func The function for which all delayedCalls should be killed/cancelled. + **/ + public static function killDelayedCallsTo(func:Function):void { + TweenLite.killTweensOf(func); + } + + /** + * Returns an array containing all the tweens of a particular target (or group of targets) that have not + * been released for garbage collection yet which typically happens within a few seconds after the tween completes. + * For example, TweenMax.getTweensOf(myObject) returns an array of all tweens + * of myObject, even tweens that haven't begun yet. TweenMax.getTweensOf([myObject1, myObject2]); + * will return a condensed array of the tweens of myObject1 plus all the tweens + * of myObject2 combined into one array with duplicates removed. + * + *

    Since the method only finds tweens that haven't been released for garbage collection, if you create a tween + * and then let it finish and then a while later try to find it with getTweensOf(), it may not be found + * because it was released by the engine for garbage collection. Remember, one of the best parts of GSAP is that it + * saves you from the headache of managing gc. Otherwise, you'd need to manually dispose each tween you create, making + * things much more cumbersome.

    + * + * +TweenMax.to(myObject1, 1, {x:100}); +TweenMax.to(myObject2, 1, {x:100}); +TweenMax.to([myObject1, myObject2], 1, {alpha:0}); + +var a1 = TweenMax.getTweensOf(myObject1); //finds 2 tweens +var a2 = TweenMax.getTweensOf([myObject1, myObject2]); //finds 3 tweens + + * @param target The target whose tweens should be returned, or an array of such targets + * @param onlyActive If true, only tweens that are currently active will be returned (a tween is considered "active" if the virtual playhead is actively moving across the tween and it is not paused, nor are any of its ancestor timelines paused). + * @return An array of tweens + **/ + public static function getTweensOf(target:*, onlyActive:Boolean=false):Array { + return TweenLite.getTweensOf(target, onlyActive); + } + + /** @private **/ + protected var _dispatcher:EventDispatcher; + /** @private **/ + protected var _hasUpdateListener:Boolean; + /** @private **/ + protected var _repeat:int = 0; + /** @private **/ + protected var _repeatDelay:Number = 0; + /** @private **/ + protected var _cycle:int = 0; + /** @private **/ + public var _yoyo:Boolean; + + /** + * Constructor + * + * @param target Target object (or array of objects) whose properties this tween affects + * @param duration Duration in seconds (or frames if useFrames:true is set in the vars parameter) + * @param vars An object defining the end value for each property that should be tweened as well as any special properties like onComplete, ease, etc. For example, to tween mc.x to 100 and mc.y to 200 and then call myFunction, do this: new TweenMax(mc, 1, {x:100, y:200, onComplete:myFunction}). + */ + public function TweenMax(target:Object, duration:Number, vars:Object) { + super(target, duration, vars); + _yoyo = (this.vars.yoyo == true); + _repeat = int(this.vars.repeat); + _repeatDelay = this.vars.repeatDelay || 0; + _dirty = true; //ensures that if there is any repeat, the _totalDuration will get recalculated to accurately report it. + if (this.vars.onCompleteListener || this.vars.onUpdateListener || this.vars.onStartListener || this.vars.onRepeatListener || this.vars.onReverseCompleteListener) { + _initDispatcher(); + if (_duration == 0) if (_delay == 0) if (this.vars.immediateRender) { + _dispatcher.dispatchEvent(new TweenEvent(TweenEvent.UPDATE)); + _dispatcher.dispatchEvent(new TweenEvent(TweenEvent.COMPLETE)); + } + } + } + + /** @inheritDoc **/ + override public function invalidate():* { + _yoyo = Boolean(this.vars.yoyo == true); + _repeat = this.vars.repeat || 0; + _repeatDelay = this.vars.repeatDelay || 0; + _hasUpdateListener = false; + _initDispatcher(); + _uncache(true); + return super.invalidate(); + } + + /** + * Updates tweening values on the fly so that they appear to seamlessly change course even if + * the tween is in-progress. Think of it like dynamically updating the vars object + * that was passed in to the tween when it was originally created. You do NOT + * need to redefine all of the vars properties/values - only the ones that you want + * to update. You can even define new properties that you didn't define in the original vars + * object. + * + *

    If the resetDuration parameter is true and the tween has already + * started (or finished), updateTo() will restart the tween. Otherwise, the tween's + * timing will be honored. And if resetDuration is false and the tween + * is in-progress, the starting values of each property will be adjusted so that the tween appears + * to seamlessly redirect to the new destination values. This is typically not advisable if you + * plan to reverse the tween later on or jump to a previous point because the starting values would + * have been adjusted.

    + * + *

    updateTo() is only meant for non-plugin values. It's much more complicated to + * dynamically update values that are being handled inside plugins - that is not what this method + * is intended to do.

    + * + *

    Note: If you plan to constantly update values, please look into using the DynamicPropsPlugin.

    + * + * +//create the tween +var tween:TweenMax = new TweenMax(mc, 2, {x:100, y:200, alpha:0.5}); + +//then later, update the destination x and y values, restarting the tween +tween.updateTo({x:300, y:0}, true); + +//or to update the values mid-tween without restarting, do this: +tween.updateTo({x:300, y:0}, false); + + * + * @param vars Object containing properties with the destination values that should be udpated. You do NOT need to redefine all of the original vars values - only the ones that should be updated (although if you change a plugin value, you will need to fully define it). For example, to update the destination x value to 300 and the destination y value to 500, pass: {x:300, y:500}. + * @param resetDuration If the tween has already started (or finished) and resetDuration is true, the tween will restart. If resetDuration is false, the tween's timing will be honored (no restart) and each tweening property's starting value will be adjusted so that it appears to seamlessly redirect to the new destination value. + * @return self (makes chaining easier) + **/ + public function updateTo(vars:Object, resetDuration:Boolean=false):* { + var curRatio:Number = ratio; + if (resetDuration) if (_startTime < _timeline._time) { + _startTime = _timeline._time; + _uncache(false); + if (_gc) { + _enabled(true, false); + } else { + _timeline.insert(this, _startTime - _delay); //ensures that any necessary re-sequencing of Animations in the timeline occurs to make sure the rendering order is correct. + } + } + for (var p:String in vars) { + this.vars[p] = vars[p]; + } + if (_initted) { + if (resetDuration) { + _initted = false; + } else { + if (_gc) { + _enabled(true, false); + } + if (_notifyPluginsOfEnabled) if (_firstPT != null) { + _onPluginEvent("_onDisable", this); //in case a plugin like MotionBlur must perform some cleanup tasks + } + if (_time / _duration > 0.998) { //if the tween has finished (or come extremely close to finishing), we just need to rewind it to 0 and then render it again at the end which forces it to re-initialize (parsing the new vars). We allow tweens that are close to finishing (but haven't quite finished) to work this way too because otherwise, the values are so small when determining where to project the starting values that binary math issues creep in and can make the tween appear to render incorrectly when run backwards. + var prevTime:Number = _time; + render(0, true, false); + _initted = false; + render(prevTime, true, false); + } else if (_time > 0) { + _initted = false; + _init(); + var inv:Number = 1 / (1 - curRatio), + pt:PropTween = _firstPT, endValue:Number; + while (pt) { + endValue = pt.s + pt.c; + pt.c *= inv; + pt.s = endValue - pt.c; + pt = pt._next; + } + } + } + } + return this; + } + + /** + * @private + * Renders the tween at a particular time (or frame number for frames-based tweens). + * The time is based simply on the overall duration. For example, if a tween's duration + * is 3, renderTime(1.5) would render it at the halfway finished point. + * + * @param time time (or frame number for frames-based tweens) to render. + * @param suppressEvents If true, no events or callbacks will be triggered for this render (like onComplete, onUpdate, onReverseComplete, etc.) + * @param force Normally the tween will skip rendering if the time matches the cachedTotalTime (to improve performance), but if force is true, it forces a render. This is primarily used internally for tweens with durations of zero in TimelineLite/Max instances. + */ + override public function render(time:Number, suppressEvents:Boolean=false, force:Boolean=false):void { + if (!_initted) if (_duration === 0 && vars.repeat) { //zero duration tweens that render immediately have render() called from TweenLite's constructor, before TweenMax's constructor has finished setting _repeat, _repeatDelay, and _yoyo which are critical in determining totalDuration() so we need to call invalidate() which is a low-kb way to get those set properly. + invalidate(); + } + var totalDur:Number = (!_dirty) ? _totalDuration : totalDuration(), + prevTime:Number = _time, + prevTotalTime:Number = _totalTime, + prevCycle:Number = _cycle, + isComplete:Boolean, callback:String, pt:PropTween, rawPrevTime:Number; + if (time >= totalDur) { + _totalTime = totalDur; + _cycle = _repeat; + if (_yoyo && (_cycle & 1) != 0) { + _time = 0; + ratio = _ease._calcEnd ? _ease.getRatio(0) : 0; + } else { + _time = _duration; + ratio = _ease._calcEnd ? _ease.getRatio(1) : 1; + } + if (!_reversed) { + isComplete = true; + callback = "onComplete"; + } + if (_duration == 0) { //zero-duration tweens are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the "playhead" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's "playhead" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered. + rawPrevTime = _rawPrevTime; + if (_startTime === _timeline._duration) { //if a zero-duration tween is at the VERY end of a timeline and that timeline renders at its end, it will typically add a tiny bit of cushion to the render time to prevent rounding errors from getting in the way of tweens rendering their VERY end. If we then reverse() that timeline, the zero-duration tween will trigger its onReverseComplete even though technically the playhead didn't pass over it again. It's a very specific edge case we must accommodate. + time = 0; + } + if (time === 0 || rawPrevTime < 0 || rawPrevTime === _tinyNum) if (rawPrevTime !== time) { + force = true; + if (rawPrevTime > _tinyNum) { + callback = "onReverseComplete"; + } + } + _rawPrevTime = rawPrevTime = (!suppressEvents || time !== 0 || _rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient. + } + + } else if (time < 0.0000001) { //to work around occasional floating point math artifacts, round super small values to 0. + _totalTime = _time = _cycle = 0; + ratio = _ease._calcEnd ? _ease.getRatio(0) : 0; + if (prevTotalTime !== 0 || (_duration === 0 && _rawPrevTime > 0 && _rawPrevTime !== _tinyNum)) { + callback = "onReverseComplete"; + isComplete = _reversed; + } + if (time < 0) { + _active = false; + if (_duration == 0) { //zero-duration tweens are tricky because we must discern the momentum/direction of time in order to determine whether the starting values should be rendered or the ending values. If the "playhead" of its timeline goes past the zero-duration tween in the forward direction or lands directly on it, the end values should be rendered, but if the timeline's "playhead" moves past it in the backward direction (from a postitive time to a negative time), the starting values must be rendered. + if (_rawPrevTime >= 0) { + force = true; + } + _rawPrevTime = rawPrevTime = (!suppressEvents || time !== 0 || _rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient. + } + } else if (!_initted) { //if we render the very beginning (time == 0) of a fromTo(), we must force the render (normal tweens wouldn't need to render at a time of 0 when the prevTime was also 0). This is also mandatory to make sure overwriting kicks in immediately. + force = true; + } + } else { + _totalTime = _time = time; + if (_repeat != 0) { + var cycleDuration:Number = _duration + _repeatDelay; + _cycle = (_totalTime / cycleDuration) >> 0; //originally _totalTime % cycleDuration but floating point errors caused problems, so I normalized it. (4 % 0.8 should be 0 but Flash reports it as 0.79999999!) + if (_cycle !== 0) if (_cycle === _totalTime / cycleDuration) { + _cycle--; //otherwise when rendered exactly at the end time, it will act as though it is repeating (at the beginning) + } + _time = _totalTime - (_cycle * cycleDuration); + if (_yoyo) if ((_cycle & 1) != 0) { + _time = _duration - _time; + } + if (_time > _duration) { + _time = _duration; + } else if (_time < 0) { + _time = 0; + } + } + if (_easeType) { + var r:Number = _time / _duration, type:int = _easeType, pow:int = _easePower; + if (type == 1 || (type == 3 && r >= 0.5)) { + r = 1 - r; + } + if (type == 3) { + r *= 2; + } + if (pow == 1) { + r *= r; + } else if (pow == 2) { + r *= r * r; + } else if (pow == 3) { + r *= r * r * r; + } else if (pow == 4) { + r *= r * r * r * r; + } + + if (type == 1) { + ratio = 1 - r; + } else if (type == 2) { + ratio = r; + } else if (_time / _duration < 0.5) { + ratio = r / 2; + } else { + ratio = 1 - (r / 2); + } + + } else { + ratio = _ease.getRatio(_time / _duration); + } + } + + if (prevTime == _time && !force && _cycle === prevCycle) { + if (prevTotalTime !== _totalTime) if (_onUpdate != null) if (!suppressEvents) { //so that onUpdate fires even during the repeatDelay - as long as the totalTime changed, we should trigger onUpdate. + _onUpdate.apply(vars.onUpdateScope || this, vars.onUpdateParams); + } + return; + } else if (!_initted) { + _init(); + if (!_initted || _gc) { //immediateRender tweens typically won't initialize until the playhead advances (_time is greater than 0) in order to ensure that overwriting occurs properly. Also, if all of the tweening properties have been overwritten (which would cause _gc to be true, as set in _init()), we shouldn't continue otherwise an onStart callback could be called for example. + return; + } + //_ease is initially set to defaultEase, so now that init() has run, _ease is set properly and we need to recalculate the ratio. Overall this is faster than using conditional logic earlier in the method to avoid having to set ratio twice because we only init() once but renderTime() gets called VERY frequently. + if (_time && !isComplete) { + ratio = _ease.getRatio(_time / _duration); + } else if (isComplete && _ease._calcEnd) { + ratio = _ease.getRatio((_time === 0) ? 0 : 1); + } + } + if (!_active) if (!_paused && _time !== prevTime && time >= 0) { + _active = true; //so that if the user renders a tween (as opposed to the timeline rendering it), the timeline is forced to re-render and align it with the proper time/frame on the next rendering cycle. Maybe the tween already finished but the user manually re-renders it as halfway done. + } + if (prevTotalTime == 0) { + if (_startAt != null) { + if (time >= 0) { + _startAt.render(time, suppressEvents, force); + } else if (!callback) { + callback = "_dummyGS"; //if no callback is defined, use a dummy value just so that the condition at the end evaluates as true because _startAt should render AFTER the normal render loop when the time is negative. We could handle this in a more intuitive way, of course, but the render loop is the MOST important thing to optimize, so this technique allows us to avoid adding extra conditional logic in a high-frequency area. + } + } + if (_totalTime != 0 || _duration == 0) if (!suppressEvents) { + if (vars.onStart) { + vars.onStart.apply(null, vars.onStartParams); + } + if (_dispatcher) { + _dispatcher.dispatchEvent(new TweenEvent(TweenEvent.START)); + } + } + } + + pt = _firstPT; + while (pt) { + if (pt.f) { + pt.t[pt.p](pt.c * ratio + pt.s); + } else { + pt.t[pt.p] = pt.c * ratio + pt.s; + } + pt = pt._next; + } + + if (_onUpdate != null) { + if (time < 0 && _startAt != null && _startTime != 0) { + _startAt.render(time, suppressEvents, force); //note: for performance reasons, we tuck this conditional logic inside less traveled areas (most tweens don't have an onUpdate). We'd just have it at the end before the onComplete, but the values should be updated before any onUpdate is called, so we ALSO put it here and then if it's not called, we do so later near the onComplete. + } + if (!suppressEvents) if (_totalTime !== prevTotalTime || isComplete) { + _onUpdate.apply(null, vars.onUpdateParams); + } + } + if (_hasUpdateListener) { + if (time < 0 && _startAt != null && _onUpdate == null && _startTime != 0) { + _startAt.render(time, suppressEvents, force); + } + if (!suppressEvents) { + _dispatcher.dispatchEvent(new TweenEvent(TweenEvent.UPDATE)); + } + } + if (_cycle != prevCycle) if (!suppressEvents) if (!_gc) { + if (vars.onRepeat) { + vars.onRepeat.apply(null, vars.onRepeatParams); + } + if (_dispatcher) { + _dispatcher.dispatchEvent(new TweenEvent(TweenEvent.REPEAT)); + } + } + if (callback) if (!_gc) { //check gc because there's a chance that kill() could be called in an onUpdate + if (time < 0 && _startAt != null && _onUpdate == null && !_hasUpdateListener && _startTime != 0) { //if the tween is positioned at the VERY beginning (_startTime 0) of its parent timeline, it's illegal for the playhead to go back further, so we should not render the recorded startAt values. + _startAt.render(time, suppressEvents, true); + } + if (isComplete) { + if (_timeline.autoRemoveChildren) { + _enabled(false, false); + } + _active = false; + } + if (!suppressEvents) { + if (vars[callback]) { + vars[callback].apply(null, vars[callback + "Params"]); + } + if (_dispatcher) { + _dispatcher.dispatchEvent(new TweenEvent(((callback == "onComplete") ? TweenEvent.COMPLETE : TweenEvent.REVERSE_COMPLETE))); + } + } + if (_duration === 0 && _rawPrevTime === _tinyNum && rawPrevTime !== _tinyNum) { //the onComplete or onReverseComplete could trigger movement of the playhead and for zero-duration tweens (which must discern direction) that land directly back on their start time, we don't want to fire again on the next render. Think of several addPause()'s in a timeline that forces the playhead to a certain spot, but what if it's already paused and another tween is tweening the "time" of the timeline? Each time it moves [forward] past that spot, it would move back, and since suppressEvents is true, it'd reset _rawPrevTime to _tinyNum so that when it begins again, the callback would fire (so ultimately it could bounce back and forth during that tween). Again, this is a very uncommon scenario, but possible nonetheless. + _rawPrevTime = 0; + } + } + } + + +//---- EVENT DISPATCHING ---------------------------------------------------------------------------------------------------------- + + /** + * @private + * Initializes Event dispatching functionality + */ + protected function _initDispatcher():Boolean { + var found:Boolean = false, p:String; + for (p in _listenerLookup) { + if (p in vars) if (vars[p] is Function) { + if (_dispatcher == null) { + _dispatcher = new EventDispatcher(this); + } + _dispatcher.addEventListener(_listenerLookup[p], vars[p], false, 0, true); + found = true; + } + } + return found; + } + + /** + * [AS3 only] + * Registers a function that should be called each time a particular type of event occurs, like + * "complete" or "update". The function will be passed a single "event" + * parameter whose "target" property refers to the tween. Typically it is more efficient + * to use callbacks like onComplete, onUpdate, onStart, onReverseComplete, and onRepeat + * unless you need the event parameter or if you need to register more than one listener for the same + * type of event. + * + *

    If you no longer need an event listener, remove it by calling removeEventListener(), or memory + * problems could result. Event listeners are not automatically removed from memory because the garbage + * collector does not remove the listener as long as the dispatching object exists (unless the + * useWeakReference parameter is set to true).

    + * + * @param type The type of event + * @param listener The listener function that processes the event. This function must accept an Event object as its only parameter + * @param useCapture (not typically used) Determines whether the listener works in the capture phase or the target and bubbling phases. If useCapture is set to true, the listener processes the event only during the capture phase and not in the target or bubbling phase. If useCapture is false, the listener processes the event only during the target or bubbling phase. To listen for the event in all three phases, call addEventListener twice, once with useCapture set to true, then again with useCapture set to false. + * @param priority The priority level of the event listener. The priority is designated by a signed 32-bit integer. The higher the number, the higher the priority. All listeners with priority n are processed before listeners of priority n-1. If two or more listeners share the same priority, they are processed in the order in which they were added. The default priority is 0. + * @param useWeakReference Determines whether the reference to the listener is strong or weak. A strong reference (the default) prevents your listener from being garbage-collected. A weak reference does not. + * @see #removeEventListener() + **/ + public function addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false):void { + if (_dispatcher == null) { + _dispatcher = new EventDispatcher(this); + } + if (type == TweenEvent.UPDATE) { + _hasUpdateListener = true; + } + _dispatcher.addEventListener(type, listener, useCapture, priority, useWeakReference); + } + + /** + * [AS3 only] + * Removes a listener from the EventDispatcher object. If there is no matching listener registered + * with the EventDispatcher object, a call to this method has no effect. + * + * @param type The type of event + * @param listener The listener object to remove. + * @param useCapture Specifies whether the listener was registered for the capture phase or the target and bubbling phases. If the listener was registered for both the capture phase and the target and bubbling phases, two calls to removeEventListener() are required to remove both, one call with useCapture() set to true, and another call with useCapture() set to false. + **/ + public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void { + if (_dispatcher) { + _dispatcher.removeEventListener(type, listener, useCapture); + } + } + + /** @private **/ + public function hasEventListener(type:String):Boolean { + return (_dispatcher == null) ? false : _dispatcher.hasEventListener(type); + } + + /** @private **/ + public function willTrigger(type:String):Boolean { + return (_dispatcher == null) ? false : _dispatcher.willTrigger(type); + } + + /** @private **/ + public function dispatchEvent(event:Event):Boolean { + return (_dispatcher == null) ? false : _dispatcher.dispatchEvent(event); + } + + +//---- STATIC FUNCTIONS ----------------------------------------------------------------------------------------------------------- + + /** + * Static method for creating a TweenMax instance that animates to the specified destination values + * (from the current values). This static method can be more intuitive for some developers + * and shields them from potential garbage collection issues that could arise when assigning a + * tween instance to a persistent variable. The following lines of code produce identical results: + * + * +TweenMax.to(mc, 1, {x:100}); +var myTween = new TweenMax(mc, 1, {x:100}); +var myTween = TweenMax.to(mc, 1, {x:100}); + + *

    Each line above will tween the "x" property of the mc object + * to a value of 100 over the coarse of 1 second. They each use a slightly different syntax, + * all of which are valid. If you don't need to store a reference of the tween, just use the + * static TweenMax.to( ) call.

    + * + *

    Since the target parameter can also be an array of objects, the following + * code will tween the x property of mc1, mc2, and mc3 to a value of 100 simultaneously:

    + * + * +TweenMax.to([mc1, mc2, mc3], 1, {x:100}); + + *

    Even though 3 objects are animating, there is still only one tween created. + * In order to stagger or offset the start times of each object animating, please see + * the staggerTo() method (TimelineLite has one too).

    + * + *

    For simple sequencing, you can use the delay special property + * (like TweenMax.to(mc, 1, {x:100, delay:0.5})), + * but it is highly recommended that you consider using TimelineLite (or TimelineMax) + * for all but the simplest sequencing tasks. It has an identical to() method + * that allows you to append tweens one-after-the-other and then control the entire sequence + * as a whole. You can even have the tweens overlap as much as you want.

    + * + * @param target Target object (or array of objects) whose properties this tween affects. + * @param duration Duration in seconds (or frames if useFrames:true is set in the vars parameter) + * @param vars An object defining the end value for each property that should be tweened as well as any special properties like onComplete, ease, etc. For example, to tween mc.x to 100 and mc.y to 200 and then call myFunction, do this: TweenMax.to(mc, 1, {x:100, y:200, onComplete:myFunction}); + * @return TweenMax instance + * @see #from() + * @see #fromTo() + * @see #staggerTo() + * @see com.greensock.TimelineLite#to() + * @see com.greensock.TimelineLite#staggerTo() + */ + public static function to(target:Object, duration:Number, vars:Object):TweenMax { + return new TweenMax(target, duration, vars); + } + + /** + * Static method for creating a TweenMax instance that tweens backwards - + * you define the BEGINNING values and the current values are used + * as the destination values which is great for doing things like animating objects + * onto the screen because you can set them up initially the way you want them to look + * at the end of the tween and then animate in from elsewhere. + * + *

    NOTE: By default, immediateRender is true in + * from() tweens, meaning that they immediately render their starting state + * regardless of any delay that is specified. You can override this behavior by passing + * immediateRender:false in the vars parameter so that it will + * wait to render until the tween actually begins (often the desired behavior when inserting + * into TimelineLite or TimelineMax instances). To illustrate the default behavior, the + * following code will immediately set the alpha of mc + * to 0 and then wait 2 seconds before tweening the alpha back to 1 over + * the course of 1.5 seconds:

    + * + *

    + * TweenMax.from(mc, 1.5, {alpha:0, delay:2}); + *

    + * + *

    Since the target parameter can also be an array of objects, the following + * code will tween the alpha property of mc1, mc2, and mc3 from a value of 0 simultaneously:

    + * + * +TweenMax.from([mc1, mc2, mc3], 1.5, {alpha:0}); + + *

    Even though 3 objects are animating, there is still only one tween that is created. + * In order to stagger or offset the start times of each object animating, please see + * the staggerFrom() method (TimelineLite has one too).

    + * + *

    For simple sequencing, you can use the delay special property + * (like TweenMax.from(mc, 1, {alpha:0, delay:0.5})), + * but it is highly recommended that you consider using TimelineLite (or TimelineMax) + * for all but the simplest sequencing tasks. It has an identical from() method + * that allows you to append tweens one-after-the-other and then control the entire sequence + * as a whole. You can even have the tweens overlap as much as you want.

    + * + * @param target Target object (or array of objects) whose properties this tween affects. + * @param duration Duration in seconds (or frames if useFrames:true is set in the vars parameter) + * @param vars An object defining the starting value for each property that should be tweened as well as any special properties like onComplete, ease, etc. For example, to tween mc.x from 100 and mc.y from 200 and then call myFunction, do this: TweenMax.from(mc, 1, {x:100, y:200, onComplete:myFunction}); + * @return TweenMax instance + * @see #to() + * @see #fromTo() + * @see #staggerFrom() + * @see com.greensock.TimelineLite#from() + * @see com.greensock.TimelineLite#staggerFrom() + */ + public static function from(target:Object, duration:Number, vars:Object):TweenMax { + vars = _prepVars(vars, true); + vars.runBackwards = true; + return new TweenMax(target, duration, vars); + } + + /** + * Static method for creating a TweenMax instance that allows you to define both the starting + * and ending values (as opposed to to() and from() tweens which are + * based on the target's current values at one end or the other). + * + *

    NOTE: Only put starting values in the fromVars parameter - all + * special properties for the tween (like onComplete, onUpdate, delay, etc.) belong in the toVars + * parameter.

    + * + *

    By default, immediateRender is true in + * fromTo() tweens, meaning that they immediately render their starting state + * regardless of any delay that is specified. This is done for convenience because it is + * often the preferred behavior when setting things up on the screen to animate into place, but + * you can override this behavior by passing immediateRender:false in the + * fromVars or toVars parameter so that it will wait to render + * the starting values until the tween actually begins (often the desired behavior when inserting + * into TimelineLite or TimelineMax instances).

    + * + *

    Since the target parameter can also be an array of objects, the following + * code will tween the x property of mc1, mc2, and mc3 from 0 to 100 simultaneously:

    + * + * +TweenMax.fromTo([mc1, mc2, mc3], 1, {x:0}, {x:100}); + + *

    Even though 3 objects are animating, there is still only one tween created. + * In order to stagger or offset the start times of each object animating, please see + * the staggerFromTo() method (TimelineLite has one too).

    + * + *

    For simple sequencing, you can use the delay special property + * (like TweenMax.fromTo(mc, 1, {x:0}, {x:100, delay:0.5})), + * but it is highly recommended that you consider using TimelineLite (or TimelineMax) + * for all but the simplest sequencing tasks. It has an identical fromTo() method + * that allows you to append tweens one-after-the-other and then control the entire sequence + * as a whole. You can even have the tweens overlap as much as you want.

    + * + * @param target Target object (or array of objects) whose properties this tween affects. + * @param duration Duration in seconds (or frames if useFrames:true is set in the vars parameter) + * @param fromVars An object defining the starting value for each property that should be tweened. For example, to tween mc.x from 100 and mc.y from 200, fromVars would look like this: {x:100, y:200}. + * @param toVars An object defining the end value for each property that should be tweened as well as any special properties like onComplete, ease, etc. For example, to tween mc.x from 0 to 100 and mc.y from 0 to 200 and then call myFunction, do this: TweenMax.fromTo(mc, 1, {x:0, y:0}, {x:100, y:200, onComplete:myFunction}); + * @return TweenMax instance + * @see #to() + * @see #from() + * @see #staggerFromTo() + * @see com.greensock.TimelineLite#fromTo() + * @see com.greensock.TimelineLite#staggerFromTo() + */ + public static function fromTo(target:Object, duration:Number, fromVars:Object, toVars:Object):TweenMax { + toVars = _prepVars(toVars, false); + fromVars = _prepVars(fromVars, false); + toVars.startAt = fromVars; + toVars.immediateRender = (toVars.immediateRender != false && fromVars.immediateRender != false); + return new TweenMax(target, duration, toVars); + } + + /** + * Tweens an array of targets to a common set of destination values, but staggers their + * start times by a specified amount of time, creating an evenly-spaced sequence with a + * surprisingly small amount of code. For example, let's say you have an array containing + * references to a bunch of text fields that you'd like to fall away and fade out in a + * staggered fashion with 0.2 seconds between each tween's start time: + * + * +var textFields = [tf1, tf2, tf3, tf4, tf5]; +TweenMax.staggerTo(textFields, 1, {y:"+150", ease:CubicIn.ease}, 0.2); + + *

    staggerTo() simply loops through the targets array and creates + * a to() tween for each object and then returns an array containing all of + * the resulting tweens (one for each object).

    + * + *

    If you can afford the slight increase in file size, it is usually better to use + * TimelineLite's staggerTo() method because it wraps the tweens in a + * TimelineLite instead of an array which makes controlling the group as a whole much + * easier. That way you could pause(), resume(), reverse(), restart() or change the timeScale + * of everything at once.

    + * + *

    Note that if you define an onComplete (or any callback for that matter) + * in the vars parameter, it will be called for each tween rather than the whole + * sequence. This can be very useful, but if you want to call a function after the entire + * sequence of tweens has completed, use the onCompleteAll parameter (the 5th parameter).

    + * + *

    JavaScript and AS2 note: - Due to the way JavaScript and AS2 don't + * maintain scope (what "this" refers to, or the context) in function calls, + * it can be useful to define the scope specifically. Therefore, in the JavaScript and AS2 + * versions accept an extra (7th) parameter for onCompleteAllScope.

    + * + * @param targets An array of target objects whose properties should be affected + * @param duration Duration in seconds (or frames if useFrames:true is defined in the vars parameter) + * @param vars An object defining the end value for each property that should be tweened as well as any special properties like ease. For example, to tween x to 100 and y to 200 for mc1, mc2, and mc3, staggering their start time by 0.25 seconds and then call myFunction when they last one has finished, do this: TweenMax.staggerTo([mc1, mc2, mc3], 1, {x:100, y:200}, 0.25, myFunction}). + * @param stagger Amount of time in seconds (or frames for frames-based tweens) to stagger the start time of each tween. For example, you might want to have 5 objects move down 100 pixels while fading out, and stagger the start times by 0.2 seconds - you could do: TweenMax.staggerTo([mc1, mc2, mc3, mc4, mc5], 1, {y:"+100", alpha:0}, 0.2). + * @param onCompleteAll A function to call as soon as the entire sequence of tweens has completed. + * @param onCompleteAllParams An array of parameters to pass the onCompleteAll method. + * @return Array of TweenMax tweens (one for each object in the targets array) + * @see #staggerFrom() + * @see #staggerFromTo() + * @see com.greensock.TimelineLite#staggerTo() + */ + public static function staggerTo(targets:Array, duration:Number, vars:Object, stagger:Number=0, onCompleteAll:Function=null, onCompleteAllParams:Array=null):Array { + vars = _prepVars(vars, false); + var a:Array = [], + l:int = targets.length, + delay:Number = vars.delay || 0, + copy:Object, + i:int, + p:String; + for (i = 0; i < l; i++) { + copy = {}; + for (p in vars) { + copy[p] = vars[p]; + } + copy.delay = delay; + if (i == l - 1) if (onCompleteAll != null) { + copy.onComplete = function():void { + if (vars.onComplete) { + vars.onComplete.apply(null, arguments); + } + onCompleteAll.apply(null, onCompleteAllParams); + }; + } + a[i] = new TweenMax(targets[i], duration, copy); + delay += stagger; + } + return a; + } + + /** + * Tweens an array of targets from a common set of destination values (using the current + * values as the destination), but staggers their start times by a specified amount of time, + * creating an evenly-spaced sequence with a surprisingly small amount of code. For example, + * let's say you have an array containing references to a bunch of text fields that you'd + * like to drop into place while fading in, all in a staggered fashion with 0.2 seconds + * between each tween's start time: + * + * +var textFields = [tf1, tf2, tf3, tf4, tf5]; +TweenMax.staggerFrom(textFields, 1, {y:"+150"}, 0.2); + + *

    staggerFrom() simply loops through the targets array and creates + * a from() tween for each object and then returns an array containing all of + * the resulting tweens (one for each object).

    + * + *

    If you can afford the slight increase in file size, it is usually better to use + * TimelineLite's staggerFrom() method because it wraps the tweens in a + * TimelineLite instead of an array which makes controlling the group as a whole much + * easier. That way you could pause(), resume(), reverse(), restart() or change the timeScale + * of everything at once.

    + * + *

    Note that if you define an onComplete (or any callback for that matter) + * in the vars parameter, it will be called for each tween rather than the whole + * sequence. This can be very useful, but if you want to call a function after the entire + * sequence of tweens has completed, use the onCompleteAll parameter (the 5th parameter).

    + * + *

    By default, immediateRender is true in + * from() tweens, meaning that they immediately render their starting state + * regardless of any delay that is specified. You can override this behavior by passing + * immediateRender:false in the vars parameter so that it will + * wait to render until the tween actually begins.

    + * + *

    JavaScript and AS2 note: - Due to the way JavaScript and AS2 don't + * maintain scope (what "this" refers to, or the context) in function calls, + * it can be useful to define the scope specifically. Therefore, in the JavaScript and AS2 + * versions accept an extra (7th) parameter for onCompleteAllScope.

    + * + * @param targets An array of target objects whose properties should be affected + * @param duration Duration in seconds (or frames if useFrames:true is defined in the vars parameter) + * @param vars An object defining the end value for each property that should be tweened as well as any special properties like ease. For example, to tween x to 100 and y to 200 for mc1, mc2, and mc3, staggering their start time by 0.25 seconds and then call myFunction when they last one has finished, do this: TweenMax.staggerTo([mc1, mc2, mc3], 1, {x:100, y:200}, 0.25, myFunction}). + * @param stagger Amount of time in seconds (or frames for frames-based tweens) to stagger the start time of each tween. For example, you might want to have 5 objects move down 100 pixels while fading out, and stagger the start times by 0.2 seconds - you could do: TweenMax.staggerTo([mc1, mc2, mc3, mc4, mc5], 1, {y:"+100", alpha:0}, 0.2). + * @param onCompleteAll A function to call as soon as the entire sequence of tweens has completed + * @param onCompleteAllParams An array of parameters to pass the onCompleteAll method. + * @return An array of TweenMax instances (one for each object in the targets array) + * @see #staggerTo() + * @see #staggerFromTo() + * @see com.greensock.TimelineLite#staggerFrom() + */ + public static function staggerFrom(targets:Array, duration:Number, vars:Object, stagger:Number=0, onCompleteAll:Function=null, onCompleteAllParams:Array=null):Array { + vars = _prepVars(vars, true); + vars.runBackwards = true; + if (vars.immediateRender != false) { + vars.immediateRender = true; + } + return staggerTo(targets, duration, vars, stagger, onCompleteAll, onCompleteAllParams); + } + + /** + * Tweens an array of targets from and to a common set of values, but staggers their + * start times by a specified amount of time, creating an evenly-spaced sequence with a + * surprisingly small amount of code. For example, let's say you have an array containing + * references to a bunch of text fields that you'd like to fade from alpha:1 to alpha:0 in a + * staggered fashion with 0.2 seconds between each tween's start time: + * + * +var textFields = [tf1, tf2, tf3, tf4, tf5]; +TweenMax.staggerFromTo(textFields, 1, {alpha:1}, {alpha:0}, 0.2); + + *

    staggerFromTo() simply loops through the targets array and creates + * a fromTo() tween for each object and then returns an array containing all of + * the resulting tweens (one for each object).

    + * + *

    If you can afford the slight increase in file size, it is usually better to use + * TimelineLite's staggerFromTo() method because it wraps the tweens in a + * TimelineLite instead of an array which makes controlling the group as a whole much + * easier. That way you could pause(), resume(), reverse(), restart() or change the timeScale + * of everything at once.

    + * + *

    Note that if you define an onComplete (or any callback for that matter) + * in the vars parameter, it will be called for each tween rather than the whole + * sequence. This can be very useful, but if you want to call a function after the entire + * sequence of tweens has completed, use the onCompleteAll parameter (the 6th parameter).

    + * + *

    By default, immediateRender is true in + * staggerFromTo() tweens, meaning that they immediately render their starting state + * regardless of any delay that is specified. This is done for convenience because it is + * often the preferred behavior when setting things up on the screen to animate into place, but + * you can override this behavior by passing immediateRender:false in the + * fromVars or toVars parameter so that it will wait to render + * the starting values until the tweens actually begin (often the desired behavior when inserting + * into TimelineLite or TimelineMax instances).

    + * + *

    JavaScript and AS2 note: - Due to the way JavaScript and AS2 don't + * maintain scope (what "this" refers to, or the context) in function calls, + * it can be useful to define the scope specifically. Therefore, in the JavaScript and AS2 + * versions accept an extra (8th) parameter for onCompleteAllScope.

    + * + * @param targets An array of target objects whose properties should be affected + * @param duration Duration in seconds (or frames if useFrames:true is defined in the vars parameter) + * @param fromVars An object defining the starting value for each property that should be tweened. For example, to tween x from 100 and y from 200, fromVars would look like this: {x:100, y:200}. + * @param toVars An object defining the end value for each property that should be tweened as well as any special properties like ease. For example, to tween x from 0 to 100 and y from 0 to 200, staggering the start times by 0.2 seconds and then call myFunction when they all complete, do this: TweenMax.staggerFromTo([mc1, mc2, mc3], 1, {x:0, y:0}, {x:100, y:200}, 0.2, myFunction}); + * @param stagger Amount of time in seconds (or frames if the timeline is frames-based) to stagger the start time of each tween. For example, you might want to have 5 objects move down 100 pixels while fading out, and stagger the start times by 0.2 seconds - you could do: TweenMax.staggerTo([mc1, mc2, mc3, mc4, mc5], 1, {y:"+100", alpha:0}, 0.2). + * @param onCompleteAll A function to call as soon as the entire sequence of tweens has completed + * @param onCompleteAllParams An array of parameters to pass the onCompleteAll method. + * @return An array of TweenMax instances (one for each object in the targets array) + * @see #staggerTo() + * @see #staggerFrom() + * @see com.greensock.TimelineLite#staggerFromTo() + */ + public static function staggerFromTo(targets:Array, duration:Number, fromVars:Object, toVars:Object, stagger:Number=0, onCompleteAll:Function=null, onCompleteAllParams:Array=null):Array { + toVars = _prepVars(toVars, false); + fromVars = _prepVars(fromVars, false); + toVars.startAt = fromVars; + toVars.immediateRender = (toVars.immediateRender != false && fromVars.immediateRender != false); + return staggerTo(targets, duration, toVars, stagger, onCompleteAll, onCompleteAllParams); + } + + /** @private [deprecated] - included here as an alias for backward compatibility **/ + public static var allTo:Function = staggerTo; + + /** @private [deprecated] - included here as an alias for backward compatibility **/ + public static var allFrom:Function = staggerFrom; + + /** @private [deprecated] - included here as an alias for backward compatibility **/ + public static var allFromTo:Function = staggerFromTo; + + /** + * Provides a simple way to call a function after a set amount of time (or frames). You can + * optionally pass any number of parameters to the function too. + * + *

    JavaScript and AS2 note: - Due to the way JavaScript and AS2 don't + * maintain scope (what "this" refers to, or the context) in function calls, + * it can be useful to define the scope specifically. Therefore, in the JavaScript and AS2 + * versions the 4th parameter is scope, bumping useFrames + * back to the 5th parameter:

    + * + *

    TweenMax.delayedCall(delay, callback, params, scope, useFrames) [JavaScript and AS2 only]

    + * + * +//calls myFunction after 1 second and passes 2 parameters: +TweenMax.delayedCall(1, myFunction, ["param1", 2]); + +function myFunction(param1, param2) { + //do stuff +} + + * + * @param delay Delay in seconds (or frames if useFrames is true) before the function should be called + * @param callback Function to call + * @param params An Array of parameters to pass the function (optional). + * @param useFrames If the delay should be measured in frames instead of seconds, set useFrames to true (default is false) + * @return TweenMax instance + */ + public static function delayedCall(delay:Number, callback:Function, params:Array=null, useFrames:Boolean=false):TweenMax { + return new TweenMax(callback, 0, {delay:delay, onComplete:callback, onCompleteParams:params, onReverseComplete:callback, onReverseCompleteParams:params, immediateRender:false, useFrames:useFrames, overwrite:0}); + } + + /** + * Immediately sets properties of the target accordingly - essentially a zero-duration to() tween with a more + * intuitive name. So the following lines produce identical results: + * + * +TweenMax.set(myObject, {x:100, y:50, alpha:0}); +TweenMax.to(myObject, 0, {x:100, y:50, alpha:0}); + + * + *

    And of course you can use an array to set the properties of multiple targets at the same time, like:

    + * + * +TweenMax.set([obj1, obj2, obj3], {x:100, y:50, alpha:0}); + + * + * @param target Target object (or array of objects) whose properties will be affected. + * @param vars An object defining the value for each property that should be set. For example, to set mc.x to 100 and mc.y to 200, do this: TweenMax.set(mc, {x:100, y:200}); + * @return A TweenMax instance (with a duration of 0) which can optionally be inserted into a TimelineLite/Max instance (although it's typically more concise to just use the timeline's set() method). + */ + public static function set(target:Object, vars:Object):TweenMax { + return new TweenMax(target, 0, vars); + } + + /** + * Reports whether or not a particular object is actively tweening. If a tween + * is paused, is completed, or hasn't started yet, it isn't considered active. + * + * @param target Target object whose tweens you're checking + * @return Boolean value indicating whether or not any active tweens were found + */ + public static function isTweening(target:Object):Boolean { + return (TweenLite.getTweensOf(target, true).length > 0); + } + + /** + * Returns an array containing all tweens (and optionally timelines too, excluding the root timelines). + * If your goal is to affect all of the tweens/timelines/delayedCalls (like to pause() them + * or reverse() or alter their timeScale), you might want to consider using the + * static TimelineLite.exportRoot() method instead because it provides a single instance + * that you can use to control everything. + * + * @param includeTimelines If true, TimelineLite and TimelineMax instances will also be included. + * @return Array of tweens/timelines + * @see com.greensock.TimelineLite#exportRoot() + */ + public static function getAllTweens(includeTimelines:Boolean=false):Array { + var a:Array = _getChildrenOf(_rootTimeline, includeTimelines); + return a.concat( _getChildrenOf(_rootFramesTimeline, includeTimelines) ); + } + + /** @private **/ + protected static function _getChildrenOf(timeline:SimpleTimeline, includeTimelines:Boolean):Array { + if (timeline == null) { + return []; + } + var a:Array = [], + cnt:int = 0, + tween:Animation = timeline._first; + while (tween) { + if (tween is TweenLite) { + a[cnt++] = tween; + } else { + if (includeTimelines) { + a[cnt++] = tween; + } + a = a.concat(_getChildrenOf(SimpleTimeline(tween), includeTimelines)); + cnt = a.length; + } + tween = tween._next; + } + return a; + } + + /** + * Kills all tweens and/or delayedCalls/callbacks, and/or timelines, optionally forcing them to + * completion first. The various parameters provide a way to specify exactly which types you want + * to kill + * + * +//kill everything +TweenMax.killAll(); + +//kill only tweens, but not delayedCalls or timelines +TweenMax.killAll(false, true, false, false); + +//kill only delayedCalls +TweenMax.killAll(false, false, true, false); + + * + * @param complete Determines whether or not the tweens/delayedCalls/timelines should be forced to completion before being killed. + * @param tweens If true, all tweens will be killed (TweenLite and TweenMax instances) + * @param delayedCalls If true, all delayedCalls will be killed. TimelineMax callbacks are treated the same as delayedCalls. + * @param timelines If true, all TimelineLite and TimelineMax instances will be killed. + */ + public static function killAll(complete:Boolean=false, tweens:Boolean=true, delayedCalls:Boolean=true, timelines:Boolean=true):void { + var a:Array = getAllTweens(timelines), + l:int = a.length, + isDC:Boolean, + allTrue:Boolean = (tweens && delayedCalls && timelines), + tween:Animation, i:int; + for (i = 0; i < l; i++) { + tween = a[i]; + if (allTrue || (tween is SimpleTimeline) || ((isDC = (TweenLite(tween).target == TweenLite(tween).vars.onComplete)) && delayedCalls) || (tweens && !isDC)) { + if (complete) { + tween.totalTime(tween._reversed ? 0 : tween.totalDuration()); + } else { + tween._enabled(false, false); + } + } + } + } + + /** + * [AS3/AS2 only] + * Kills all tweens of the children of a particular MovieClip/DisplayObjectContainer, optionally forcing them to completion first. + * + * @param parent The parent MovieClip/DisplayObjectContainer whose children's tweens should be killed. + * @param complete If true, the tweens will be forced to completion before being killed. + */ + public static function killChildTweensOf(parent:DisplayObjectContainer, complete:Boolean=false):void { + var a:Array = getAllTweens(false), + l:int = a.length, i:int; + for (i = 0; i < l; i++) { + if (_containsChildOf(parent, a[i].target)) { + if (complete) { + a[i].totalTime(a[i].totalDuration()); + } else { + a[i]._enabled(false, false); + } + } + } + } + + /** @private **/ + private static function _containsChildOf(parent:DisplayObjectContainer, obj:Object):Boolean { + var i:int, curParent:DisplayObjectContainer; + if (obj is Array) { + i = obj.length; + while (--i > -1) { + if (_containsChildOf(parent, obj[i])) { + return true; + } + } + } else if (obj is DisplayObject) { + curParent = obj.parent; + while (curParent) { + if (curParent == parent) { + return true; + } + curParent = curParent.parent; + } + } + return false; + } + + /** + * [deprecated] Pauses all tweens and/or delayedCalls/callbacks and/or timelines. This literally + * changes the paused state of all affected tweens/delayedCalls/timelines, but a + * more flexible way to globally control things is to use the TimelineLite.exportRoot() method + * which essentially wraps all of the tweens/timelines/delayedCalls on the root timeline into a + * TimelineLite instance so that you can pause(), resume(), or even reverse() + * or alter the timeScale without affecting animations that you create after the export. + * This also avoids having to alter the paused state of every individual + * tween/delayedCall/timeline - controlling the TimelineLite that contains the exported animations + * delivers the same effect visually, but does so in a more elegant and flexible way. + * + * @param tweens If true, all tweens will be paused. + * @param delayedCalls If true, all delayedCalls will be paused. timeline callbacks are treated the same as delayedCalls. + * @param timelines If true, all TimelineLite and TimelineMax instances will be paused (at least the ones who haven't finished and been removed from their parent timeline) + * + * @see com.greensock.TimelineLite#exportRoot() + */ + public static function pauseAll(tweens:Boolean=true, delayedCalls:Boolean=true, timelines:Boolean=true):void { + _changePause(true, tweens, delayedCalls, timelines); + } + + /** + * [deprecated] Resumes all paused tweens and/or delayedCalls/callbacks and/or timelines. This literally + * changes the paused state of all affected tweens/delayedCalls/timelines, but a + * more flexible way to globally control things is to use the TimelineLite.exportRoot() method + * which essentially wraps all of the tweens/timelines/delayedCalls on the root timeline into a + * TimelineLite instance so that you can pause(), resume(), or even reverse() + * or alter the timeScale without affecting animations that you create after the export. + * This also avoids having to alter the paused state of every individual + * tween/delayedCall/timeline - controlling the TimelineLite that contains the exported animations + * delivers the same effect visually, but does so in a more elegant and flexible way. + * + * @param tweens If true, all tweens will be resumed. + * @param delayedCalls If true, all delayedCalls will be resumed. timeline callbacks are treated the same as delayedCalls. + * @param timelines If true, all TimelineLite and TimelineMax instances will be resumed (at least the ones who haven't finished and been removed from their parent timeline) + * @see com.greensock.TimelineLite#exportRoot() + */ + public static function resumeAll(tweens:Boolean=true, delayedCalls:Boolean=true, timelines:Boolean=true):void { + _changePause(false, tweens, delayedCalls, timelines); + } + + /** + * @private + * Changes the paused state of all tweens and/or delayedCalls/callbacks + * + * @param pause Desired paused state + * @param tweens If true, all tweens will be affected. + * @param delayedCalls If true, all delayedCalls will be affected. TimelineMax callbacks are treated the same as delayedCalls. + * @param timelines If true, all TimelineLite and TimelineMax instances will be affected (at least the ones who haven't finished and been removed from their parent timeline) + */ + private static function _changePause(pause:Boolean, tweens:Boolean=true, delayedCalls:Boolean=false, timelines:Boolean=true):void { + var a:Array = getAllTweens(timelines), + isDC:Boolean, + tween:Animation, + allTrue:Boolean = (tweens && delayedCalls && timelines), + i:int = a.length; + while (--i > -1) { + tween = a[i]; + isDC = (tween is TweenLite && TweenLite(tween).target == tween.vars.onComplete); + if (allTrue || (tween is SimpleTimeline) || (isDC && delayedCalls) || (tweens && !isDC)) { + tween.paused(pause); + } + } + } + + +//---- GETTERS / SETTERS ---------------------------------------------------------------------------------------------------------- + + + /** + * Gets or sets the tween's progress which is a value between 0 and 1 indicating the position + * of the virtual playhead (excluding repeats) where 0 is at the beginning, 0.5 is halfway complete, + * and 1 is complete. If the tween has a non-zero repeat defined, progress + * and totalProgress will be different because progress doesn't include any + * repeats or repeatDelays whereas totalProgress does. For example, if a TweenMax instance + * is set to repeat once, at the end of the first cycle totalProgress would only be 0.5 + * whereas progress would be 1. If you watched both properties over the course of the entire + * animation, you'd see progress go from 0 to 1 twice (once for each cycle) in the + * same time it takes the totalProgress to go from 0 to 1 once. + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining, like myTween.progress(0.5).play();

    + * + * +var progress = myTween.progress(); //gets current progress +myTween.progress( 0.25 ); //sets progress to one quarter finished + + * + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * @param suppressEvents If true, no events or callbacks will be triggered when the playhead moves to the new position. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * + * @see #totalProgress() + * @see #seek() + * @see #time() + * @see #totalTime() + **/ + override public function progress(value:Number=NaN, suppressEvents:Boolean=false):* { + return (!arguments.length) ? _time / duration() : totalTime( duration() * ((_yoyo && (_cycle & 1) !== 0) ? 1 - value : value) + (_cycle * (_duration + _repeatDelay)), suppressEvents); + } + + /** + * Gets or sets the tween's totalProgress which is a value between 0 and 1 indicating the position + * of the virtual playhead (including repeats) where 0 is at the beginning, 0.5 is halfway complete, + * and 1 is complete. If the tween has a non-zero repeat defined, progress + * and totalProgress will be different because progress doesn't include + * any repeats or repeatDelays whereas totalProgress does. For example, if a TweenMax + * instance is set to repeat once, at the end of the first cycle totalProgress would + * only be 0.5 whereas progress would be 1. If you watched both properties over the + * course of the entire animation, you'd see progress go from 0 to 1 twice (once for + * each cycle) in the same time it takes the totalProgress to go from 0 to 1 once. + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining, like myTween.totalProgress(0.5).play();

    + * + * +var progress = myTween.totalProgress(); //gets total progress +myTween.totalProgress( 0.25 ); //sets total progress to one quarter finished + + * + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * @param suppressEvents If true, no events or callbacks will be triggered when the playhead moves to the new position. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * + * @see #progress() + * @see #seek() + * @see #time() + * @see #totalTime() + **/ + override public function totalProgress(value:Number=NaN, suppressEvents:Boolean=false):* { + return (!arguments.length) ? _totalTime / totalDuration() : totalTime( totalDuration() * value, suppressEvents); + } + + /** + * Gets or sets the local position of the playhead (essentially the current time), not + * including any repeats or repeatDelays. If the tween has a non-zero repeat, its time + * goes back to zero upon repeating even though the totalTime continues forward linearly + * (or if yoyo is true, the time alternates between moving forward + * and backward). time never exceeds the duration whereas the totalTime reflects + * the overall time including any repeats and repeatDelays. + * + *

    For example, if a TweenMax instance has a duration of 2 and a repeat of 3, + * totalTime will go from 0 to 8 during the course of the tween (plays once then + * repeats 3 times, making 4 total cycles) whereas time would go from 0 to 2 a + * total of 4 times.

    + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining.

    + * + * +var currentTime = myTween.time(); //gets current time +myTween.time(2); //sets time, jumping to new value just like seek(). + + * + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. Negative values will be interpreted from the END of the animation. + * @param suppressEvents If true, no events or callbacks will be triggered when the playhead moves to the new position defined in the value parameter. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * + * @see #seek() + * @see #play() + * @see #reverse() + * @see #pause() + * @see #totalTime() + **/ + override public function time(value:Number=NaN, suppressEvents:Boolean=false):* { + if (!arguments.length) { + return _time; + } + if (_dirty) { + totalDuration(); + } + if (value > _duration) { + value = _duration; + } + if (_yoyo && (_cycle & 1) !== 0) { + value = (_duration - value) + (_cycle * (_duration + _repeatDelay)); + } else if (_repeat != 0) { + value += _cycle * (_duration + _repeatDelay); + } + return totalTime(value, suppressEvents); + } + + /** @inheritDoc **/ + override public function duration(value:Number=NaN):* { + if (!arguments.length) { + return this._duration; //don't set _dirty = false because there could be repeats that haven't been factored into the _totalDuration yet. Otherwise, if you create a repeated TweenMax and then immediately check its duration(), it would cache the value and the totalDuration would not be correct, thus repeats wouldn't take effect. + } + return super.duration(value); + } + + /** + * Gets or sets the total duration of the tween in seconds (or frames for frames-based tweens) + * including any repeats or repeatDelays. duration, by contrast, does + * NOT include repeats and repeatDelays. For example, if the tween has a + * duration of 10, a repeat of 1 and a repeatDelay of 2, + * the totalDuration would be 22. + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining.

    + * + * +var total = myTween.totalDuration(); //gets total duration +myTween.totalDuration(10); //sets the total duration + + * + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. Negative values will be interpreted from the END of the animation. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * + * @see #duration() + * @see #timeScale() + **/ + override public function totalDuration(value:Number=NaN):* { + if (!arguments.length) { + if (_dirty) { + //instead of Infinity, we use 999999999999 so that we can accommodate reverses + _totalDuration = (_repeat == -1) ? 999999999999 : _duration * (_repeat + 1) + (_repeatDelay * _repeat); + _dirty = false; + } + return _totalDuration; + } + return (_repeat == -1) ? this : duration( (value - (_repeat * _repeatDelay)) / (_repeat + 1) ); + } + + /** + * Gets or sets the number of times that the tween should repeat after its first iteration. For example, + * if repeat is 1, the tween will play a total of twice (the initial play + * plus 1 repeat). To repeat indefinitely, use -1. repeat should always be an integer. + * + *

    To cause the repeats to alternate between forward and backward, set yoyo to + * true. To add a time gap between repeats, use repeatDelay. You can + * set the initial repeat value via the vars parameter, like:

    + * + *

    + * TweenMax.to(mc, 1, {x:100, repeat:2}); + *

    + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining, like myTween.repeat(2).yoyo(true).play();

    + * + * +var repeat = myTween.repeat(); //gets current repeat value +myTween.repeat(2); //sets repeat to 2 + + * + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * + * @see #repeatDelay() + * @see #yoyo() + **/ + public function repeat(value:int=0):* { + if (!arguments.length) { + return _repeat; + } + _repeat = value; + return _uncache(true); + } + + /** + * Gets or sets the amount of time in seconds (or frames for frames-based tweens) between repeats. + * For example, if repeat is 2 and repeatDelay is 1, the tween will + * play initially, then wait for 1 second before it repeats, then play again, then wait 1 second + * again before doing its final repeat. You can set the initial repeatDelay value + * via the vars parameter, like: + * + *

    + * TweenMax.to(mc, 1, {x:100, repeat:2, repeatDelay:1}); + *

    + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining, like myTween.repeat(2).yoyo(true).repeatDelay(0.5).play();

    + * + * +var repeatDelay = myTween.repeatDelay(); //gets current repeatDelay value +myTween.repeatDelay(2); //sets repeatDelay to 2 + + * + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * + * @see #repeat() + * @see #yoyo() + **/ + public function repeatDelay(value:Number=NaN):* { + if (!arguments.length) { + return _repeatDelay; + } + _repeatDelay = value; + return _uncache(true); + } + + /** + * Gets or sets the tween's yoyo state, where true causes + * the tween to go back and forth, alternating backward and forward on each + * repeat. yoyo works in conjunction with repeat, + * where repeat controls how many times the tween repeats, and yoyo + * controls whether or not each repeat alternates direction. So in order to make a tween yoyo, + * you must set its repeat to a non-zero value. + * Yoyo-ing, has no affect on the tween's "reversed" property. For example, + * if repeat is 2 and yoyo is false, it will look like: + * start - 1 - 2 - 3 - 1 - 2 - 3 - 1 - 2 - 3 - end. But if yoyo is true, + * it will look like: start - 1 - 2 - 3 - 3 - 2 - 1 - 1 - 2 - 3 - end. + * + *

    You can set the yoyo property initially by passing yoyo:true + * in the vars parameter, like: TweenMax.to(mc, 1, {x:100, repeat:1, yoyo:true});

    + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining, like myAnimation.yoyo(true).repeat(3).timeScale(2).play(0.5);

    + * + * +var yoyo = myAnimation.yoyo(); //gets current yoyo state +myAnimation.yoyo( true ); //sets yoyo to true + + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * + * @see #repeat() + * @see #repeatDelay() + **/ + public function yoyo(value:Boolean=false):* { + if (!arguments.length) { + return _yoyo; + } + _yoyo = value; + return this; + } + + /** @private [deprecated] Multiplier describing the speed of the root timelines where 1 is normal speed, 0.5 is half-speed, 2 is double speed, etc. The lowest globalTimeScale possible is 0.0001. Deprecated in favor of TimelineLite.exportRoot() **/ + public static function globalTimeScale(value:Number=NaN):Number { + if (!arguments.length) { + return (_rootTimeline == null) ? 1 : _rootTimeline._timeScale; + } + value = value || 0.0001; //can't allow zero because it'll throw the math off + if (_rootTimeline == null) { + TweenLite.to({}, 0, {}); //forces initialization in case globalTimeScale is set before any tweens are created. + } + var tl:SimpleTimeline = _rootTimeline, + t:Number = (getTimer() / 1000); + tl._startTime = t - ((t - tl._startTime) * tl._timeScale / value); + tl = _rootFramesTimeline; + t = _rootFrame; + tl._startTime = t - ((t - tl._startTime) * tl._timeScale / value); + _rootFramesTimeline._timeScale = _rootTimeline._timeScale = value; + return value; + } + + + } +} + diff --git a/FairyGUI-as3/src/com/greensock/TweenNano.as b/FairyGUI-as3/src/com/greensock/TweenNano.as new file mode 100644 index 0000000..2556a8d --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/TweenNano.as @@ -0,0 +1,662 @@ +/** + * VERSION: 12.0.0 + * DATE: 2013-01-21 + * AS3 (AS2 is also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock { + import flash.display.Shape; + import flash.events.Event; + import flash.utils.getTimer; +/** + * [AS3/AS2 only] TweenNano is a super-lightweight (2k in AS3 and 2.6k in AS2) version of TweenLite + * and is only recommended for situations where you absolutely cannot afford the extra 4.7k that the normal + * TweenLite engine would cost and your project doesn't require any plugins. Normally, it is much better to + * use TweenLite because of the additional flexibility it provides via plugins and its compatibility with + * TimelineLite and TimelineMax. TweenNano can do everything TweenLite can do with the following exceptions: + *
      + *
    • No Plugins - One of the great things about TweenLite is that you can activate + * plugins in order to add features (like autoAlpha, tint, blurFilter, etc.). TweenNano, however, + * doesn't work with plugins.
    • + * + *
    • Incompatible with TimelineLite and TimelineMax - Complex sequencing and management + * of groups of tweens is much easier with TimelineLite and TimelineMax, but TweenNano instances cannot + * be inserted into TimelineLite or TimelineMax instances.
    • + * + * + *
    • Limited overwrite modes - By default, TweenNano doesn't overwrite any tweens + * but you can pass overwrite:"all" in the vars parameter to have it kill + * all tweens of the same target immediately. TweenLite, however, offers much more robust overwrite + * management, recognizing advanced modes like "auto" (which only overwrites individual + * tweening properties that overlap), "concurrent", "allOnStart", + * and "preexisting". See TweenLite's documentation for details.
    • + * + *
    • Fewer methods and properties TweenNano instances aren't meant to be altered + * on-the-fly, so they don't have methods like pause(), resume(), reverse(), seek(), restart(), etc. + * The essentials are covered, though, like to(), from(), delayedCall(), killTweensOf(), + * and kill().
    • + *
    + * + * + *

    USAGE

    + *

    The most common type of tween is a to() tween which allows you + * to define the destination values:

    + * + *

    + * TweenNano.to(myObject, 2, {x:100, y:200}); + *

    + * + *

    The above code will tween myObject.x from whatever it currently is to 100 and + * myObject.y property to 200 over the course of 2 seconds. Notice the x and y values are + * defined inside a generic object (between curly braces). Put as many properties there as you want.

    + * + *

    Tweens begin immediately.

    + * + *

    The target can also be an array of objects. For example, the following tween will + * tween the alpha property to 0.5 and y property to 100 for obj1, obj2, and obj3:

    + * + *

    + * TweenNano.to([obj1, obj2, obj3], 1, {alpha:0.5, y:100}); + *

    + * + *

    You can also use a from() tween if you want to define the + * starting values instead of the ending values so that the target tweens from + * the defined values to wherever they currently are.

    + * + *

    Although the to() and from() static methods + * are popular because they're quick and can avoid some garbage collection hassles, you can also + * use the more object-oriented syntax like this:

    + * + *

    + * var tween = new TweenNano(myObject, 2, {x:100, y:200}); + *

    + * + *

    or even:

    + * + *

    + * var tween = TweenNano.to(myObject, 2, {x:100, y:200}); + *

    + * + * + * + *

    EXAMPLES:

    + * + *

    Please see http://www.greensock.com/tweennano/ for examples, tutorials, and interactive demos.

    + * + * + *

    SPECIAL PROPERTIES:

    + *

    Typically the vars parameter is used to define ending values for tweening + * properties of the target (or beginning values for from() tweens) + * like {x:100, y:200, alpha:0}, but the following optional special properties + * serve other purposes:

    + * + *
      + *
    • delay : Number - + * Amount of delay in seconds (or frames for frames-based tweens) before the tween should begin.
    • + * + *
    • ease : Ease (or Function) - + * You can choose from various eases to control the rate of change during + * the animation, giving it a specific "feel". For example, ElasticOut.ease + * or StrongInOut.ease. TweenNano works with not only the easing equations + * in the com.greensock.easing package, but also standard easing equation that uses the + * typical 4 parameters (time, start, change, duration) like Adobe's + * fl.motion.easing eases. The default is QuadOut.ease. + * For linear animation, use the GreenSock Linear.ease ease.
    • + * + *
    • onComplete : Function - + * A function that should be called when the tween has completed
    • + * + *
    • onCompleteParams : Array - + * An Array of parameters to pass the onComplete function. For example, + * TweenNano.to(mc, 1, {x:100, onComplete:myFunction, onCompleteParams:[mc, "param2"]});
    • + * + *
    • useFrames : Boolean - + * If useFrames is true, the tweens's timing will be + * based on frames instead of seconds. This causes both its duration + * and delay to be based on frames.
    • + * + *
    • immediateRender : Boolean - + * Normally when you create a tween, it begins rendering on the very next frame (update cycle) + * unless you specify a delay. However, if you prefer to force the tween to + * render immediately when it is created, set immediateRender to true. + * Or to prevent a from() from rendering immediately, set immediateRender + * to false.
    • + * + *
    • onUpdate : Function - + * A function that should be called every time the tween updates + * (on every frame while the tween is active)
    • + * + *
    • onUpdateParams : Array - + * An Array of parameters to pass the onUpdate function. For example, + * TweenNano.to(mc, 1, {x:100, onUpdate:myFunction, onUpdateParams:[mc, "param2"]});
    • + * + *
    • overwrite : String - + * Controls how (and if) other tweens of the same target are overwritten. + * By default, no tweens are overwritten, but if you'd like to immediately overwrite + * other tweens of the same target, use overwrite:"all"
    • + *
    + * + * + * NOTES:

    + *
      + *
    • The base TweenNano class adds about 2k to your Flash file.
    • + * + *
    • Passing values as Strings and a preceding "+=" or "-=" will make the tween relative to the + * current value. For example, if you do TweenNano.to(mc, 2, {x:"-=20"}); it'll + * tween mc.x to the left 20 pixels. {x:"+=20"} would move it to the right.
    • + * + *
    • You can change the TweenNano.defaultEase if you prefer something other + * than QuadOut.ease.
    • + * + *
    • Kill all tweens of a particular object anytime with TweenNano.killTweensOf(myObject);
    • + * + *
    • You can kill all delayedCalls to a particular function using TweenNano.killTweensOf(myFunction);
    • + * + *
    • Use the TweenNano.from() method to animate things into place. For example, + * if you have things set up on the stage in the spot where they should end up, and you + * just want to animate them into place, you can pass in the beginning x and/or y and/or + * alpha (or whatever properties you want).
    • + * + *
    • If you find this class useful, please consider joining Club GreenSock + * which not only helps to sustain ongoing development, but also gets you bonus plugins, classes + * and other benefits that are ONLY available to members. Learn more at + * http://www.greensock.com/club/
    • + *
    + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class TweenNano { + /** @private **/ + protected static var _time:Number; + /** @private **/ + protected static var _frame:uint; + + /** + * The object that dispatches a "tick" event each time the engine updates, making it easy for + * you to add your own listener(s) to run custom logic after each update (great for game developers). + * Add as many listeners as you want. The basic syntax is the same for all versions (AS2, AS3, and Javascript): + * + *

    Basic example (AS2, AS3, and Javascript):

    +//add listener +TweenNano.ticker.addEventListener("tick", myFunction); + +function myFunction(event) { + //executes on every tick after the core engine updates +} + +//to remove the listener later... +TweenNano.ticker.removeEventListener("tick", myFunction); + + * + *

    Due to differences in the core languages (and to maximize efficiency), the advanced syntax is slightly different + * for the AS3 version compared to AS2 and Javascript. The parameters beyond the first 2 in the addEventListener() + * method are outlined below:

    + * + *

    Javascript and AS2

    + *

    addEventListener(type, callback, scope, useParam, priority)

    + *

    Parameters: + *

      + *
    1. type : String - type of listener, should always be "tick"
    2. + *
    3. callback : Function - the function to call when the event occurs
    4. + *
    5. scope : Object - binds the scope to a particular object (scope is basically what "this" refers to in your function). This can be very useful in Javascript and AS2 because scope isn't generally maintained.
    6. + *
    7. useParam : Boolean - if true, an event object will be generated and fed to the callback each time the event occurs. The event is a generic object and has two properties: type (always "tick") and target which refers to the ticker instance. The default for useParam is false because it improves performance.
    8. + *
    9. priority : Integer - influences the order in which the listeners are called. Listeners with lower priorities are called after ones with higher priorities.
    10. + *
    + *

    + * + *

    Advanced example (Javascript and AS2):

    +//add listener that requests an event object parameter, binds scope to the current scope (this), and sets priority to 1 so that it is called before any other listeners that had a priority lower than 1... +TweenNano.ticker.addEventListener("tick", myFunction, this, true, 1); + +function myFunction(event) { + //executes on every tick after the core engine updates +} + +//to remove the listener later... +TweenNano.ticker.removeEventListener("tick", myFunction); + + * + *

    AS3

    + *

    The AS3 version uses the standard EventDispatcher.addEventListener() syntax which + * basically allows you to define a priority and whether or not to use weak references (see Adobe's + * docs for details).

    + * + *

    Advanced example [AS3 only]:

    +import flash.events.Event; + +//add listener with weak reference (standard syntax - notice the 5th parameter is true) +TweenNano.ticker.addEventListener("tick", myFunction, false, 0, true); + +function myFunction(event:Event):void { + //executes on every tick after the core engine updates +} + +//to remove the listener later... +TweenNano.ticker.removeEventListener("tick", myFunction); + + **/ + public static var ticker:Shape = new Shape(); + + /** Provides An easy way to change the default easing equation. Choose from any of the GreenSock eases in the com.greensock.easing package or any standard easing function like the ones in Adobe's fl.motion.easing package. @default QuadOut.ease **/ + public static var defaultEase:Object = function (t:Number, b:Number, c:Number, d:Number):Number { + return -1 * (t /= d) * (t - 2); + } + /** @private **/ + protected static var _reservedProps:Object; + /** @private **/ + protected static var _tickEvent:Event = new Event("tick"); + /** @private **/ + protected static var _first:TweenNano; + /** @private **/ + protected static var _last:TweenNano; + + /** @private Duration of the tween in seconds (or in frames if "useFrames" is true). **/ + public var _duration:Number; + /** Stores variables (things like "alpha", "y" or whatever we're tweening, as well as special properties like "onComplete"). **/ + public var vars:Object; + /** @private Start time in seconds (or frames for frames-based tweens) **/ + public var _startTime:Number; + /** Target object whose properties this tween affects. This can be ANY object or even an array. **/ + public var target:Object; + /** @private Flagged for garbage collection **/ + public var _gc:Boolean; + /** @private Indicates that frames should be used instead of seconds for timing purposes. So if useFrames is true and the tween's duration is 10, it would mean that the tween should take 10 frames to complete, not 10 seconds. **/ + public var _useFrames:Boolean; + /** @private result of _ease(this.time, 0, 1, this.duration). Usually between 0 and 1, but not always (like with Elastic.easeOut). **/ + public var ratio:Number = 0; + + /** @private Easing method to use which determines how the values animate over time. Examples are Elastic.easeOut and Strong.easeIn. Many are found in the fl.motion.easing package or com.greensock.easing. **/ + protected var _ease:Function; + /** @private **/ + protected var _rawEase:Object; + /** @private Indicates whether or not init() has been called (where all the tween property start/end value information is recorded) **/ + protected var _initted:Boolean; + + /** @private **/ + protected var _firstPT:Object; + /** @private **/ + public var _next:TweenNano; + /** @private **/ + public var _prev:TweenNano; + /** @private **/ + public var _targets:Array; + + /** + * Constructor + * + * @param target Target object (or array of objects) whose properties this tween affects + * @param duration Duration in seconds (or frames if useFrames:true is set in the vars parameter) + * @param vars An object defining the end value for each property that should be tweened as well as any special properties like onComplete, ease, etc. For example, to tween mc.x to 100 and mc.y to 200 and then call myFunction, do this: new TweenNano(mc, 1, {x:100, y:200, onComplete:myFunction}). + */ + public function TweenNano(target:Object, duration:Number, vars:Object) { + if (!_reservedProps) { + _reservedProps = {ease:1, delay:1, useFrames:1, overwrite:1, onComplete:1, onCompleteParams:1, runBackwards:1, immediateRender:1, onUpdate:1, onUpdateParams:1, startAt:1}; + _time = getTimer() / 1000; + _frame = 0; + ticker.addEventListener(Event.ENTER_FRAME, _updateRoot, false, 0, true); + } + this.vars = vars; + _duration = duration; + this.target = target; + if (target is Array && typeof(target[0]) === "object") { + _targets = target.concat(); + } + _rawEase = this.vars.ease || defaultEase; + _ease = (typeof(_rawEase) == "function") ? _rawEase as Function : _rawEase.getRatio; + _useFrames = Boolean(vars.useFrames == true); + _startTime = (_useFrames ? _frame : _time) + (this.vars.delay || 0); + + if (this.vars.overwrite == "all" || int(this.vars.overwrite) == 1) { + killTweensOf(this.target); + } + + _prev = _last; + if (_last) { + _last._next = this; + } else { + _first = this; + } + _last = this; + + if (this.vars.immediateRender == true || (duration == 0 && this.vars.delay == 0 && this.vars.immediateRender != false)) { + _render(0); + } + } + + /** @private Initializes the property tweens, determining their start values and amount of change. **/ + public function _init():void { + if (vars.startAt) { + vars.startAt.immediateRender = true; + TweenNano.to(target, 0, vars.startAt); + } + var i:int, pt:Object; + if (_targets != null) { + i = _targets.length; + while (--i > -1) { + _initProps(_targets[i]); + } + } else { + _initProps(target); + } + if (vars.runBackwards) { + pt = _firstPT; + while (pt) { + pt.s += pt.c; + pt.c = -pt.c; + pt = pt._next; + } + } + _initted = true; + } + + /** @private **/ + protected function _initProps(target:*):void { + if (target != null) { + for (var p:String in vars) { + if (!(p in _reservedProps)) { + _firstPT = {_next:_firstPT, t:target, p:p, f:(typeof(target[p]) === "function")}; + _firstPT.s = (!_firstPT.f) ? Number(target[p]) : target[ ((p.indexOf("set") || typeof(target["get" + p.substr(3)]) !== "function") ? p : "get" + p.substr(3)) ](); + _firstPT.c = (typeof(vars[p]) === "number") ? Number(vars[p]) - _firstPT.s : (typeof(vars[p]) === "string" && vars[p].charAt(1) === "=") ? int(vars[p].charAt(0)+"1") * Number(vars[p].substr(2)) : Number(vars[p]) || 0; + if (_firstPT._next) { + _firstPT._next._prev = _firstPT; + } + } + } + } + } + + /** + * @private + * Renders the tween at a particular time (or frame number for frames-based tweens) + * WITHOUT changing its _startTime, meaning if the tween is in progress when you call + * _render(), it will not adjust the tween's timing to continue from the new time. + * The time is based simply on the overall duration. For example, if a tween's duration + * is 3, _render(1.5) would render it at the halfway finished point. + * + * @param time time (or frame number for frames-based tweens) to render. + */ + public function _render(time:Number):void { + if (!_initted) { + _init(); + } + if (time >= _duration) { + time = _duration; + this.ratio = (_ease != _rawEase && _rawEase._calcEnd) ? _ease.call(_rawEase, 1) : 1; + } else if (time <= 0) { + this.ratio = (_ease != _rawEase && _rawEase._calcEnd) ? _ease.call(_rawEase, 0) : 0; + } else { + this.ratio = (_ease == _rawEase) ? _ease(time, 0, 1, _duration) : _ease.call(_rawEase, time / _duration); + } + var pt:Object = _firstPT; + while (pt) { + if (pt.f) { + pt.t[pt.p](pt.c * ratio + pt.s); + } else { + pt.t[pt.p] = pt.c * ratio + pt.s; + } + pt = pt._next; + } + if (vars.onUpdate) { + vars.onUpdate.apply(null, vars.onUpdateParams); + } + if (time == _duration) { + kill(); + if (vars.onComplete) { + vars.onComplete.apply(null, vars.onCompleteParams); + } + } + } + + /** + * Kills the tween, stopping it immediately. You can optionally define a particular target + * to isolate (or an array of targets) which is only useful in tweens whose target is + * an array. For example, let's say we have a tween like this: + * + *

    + * var tween = TweenNan.to([mc1, mc2, mc3], 2, {x:100}); + *

    + * + *

    Later, we could kill only the mc2 portion of the tween like this:

    + * + *

    + * tween.kill(mc2); + *

    + * + *

    To kill the entire tween, simply omit the target parameter, like tween.kill()

    + * + * @param target [optional] To kill only aspects of the animation related to a particular target (or targets), reference it here. It can be an array or a single object. For example, to kill only parts having to do with myObject, do kill(myObject) or to kill only parts having to do with myObject1 and myObject2, do kill([myObject1, myObject2]). If no target is defined, ALL targets will be affected. + **/ + public function kill(target:*=null):void { + var i:int, pt:Object = _firstPT; + target = target || _targets || this.target; + if (target is Array && typeof(target[0]) === "object") { + i = target.length; + while (--i > -1) { + kill(target[i]); + } + return; + } else if (_targets != null) { + i = _targets.length; + while (--i > -1) { + if (target == _targets[i]) { + _targets.splice(i, 1); + } + } + while (pt) { + if (pt.t == target) { + if (pt._next) { + pt._next._prev = pt._prev; + } + if (pt._prev) { + pt._prev._next = pt._next; + } else { + _firstPT = pt._next; + } + } + pt = pt._next; + } + } + if (_targets == null || _targets.length == 0) { + _gc = true; + if (_prev) { + _prev._next = _next; + } else if (this == _first) { + _first = _next; + } + if (_next) { + _next._prev = _prev; + } else if (this == _last) { + _last = _prev; + } + _next = _prev = null; + } + } + + +//---- STATIC FUNCTIONS ------------------------------------------------------------------------- + + /** + * Static method for creating a TweenNano instance that animates to the specified destination values + * (from the current values). The following lines of code all produce identical results: + * + * +TweenNano.to(mc, 1, {x:100}); +var myTween = new TweenNano(mc, 1, {x:100}); +var myTween = TweenNano.to(mc, 1, {x:100}); + + * + *

    Each line above will tween the "x" property of the mc object + * to a value of 100 over the coarse of 1 second. They each use a slightly different syntax, + * all of which are valid. If you don't need to store a reference of the tween, just use the + * static TweenNano.to( ) call.

    + * + *

    Since the target parameter can also be an array of objects, the following + * code will tween the x property of mc1, mc2, and mc3 to a value of 100 simultaneously:

    + * + * +TweenNano.to([mc1, mc2, mc3], 1, {x:100}); + + *

    Even though 3 objects are animating, there is still only one tween created.

    + * + *

    For simple sequencing, you can use the delay special property + * (like TweenNano.to(mc, 1, {x:100, delay:0.5})), + * but it is highly recommended that you consider using TimelineLite (or TimelineMax) + * for all but the simplest sequencing tasks. It has an identical to() method + * that allows you to append tweens one-after-the-other and then control the entire sequence + * as a whole. You can even have the tweens overlap as much as you want.

    + * + * @param target Target object (or array of objects) whose properties this tween affects. + * @param duration Duration in seconds (or frames if useFrames:true is set in the vars parameter) + * @param vars An object defining the end value for each property that should be tweened as well as any special properties like onComplete, ease, etc. For example, to tween mc.x to 100 and mc.y to 200 and then call myFunction, do this: TweenNano.to(mc, 1, {x:100, y:200, onComplete:myFunction}); + * @return TweenNano instance + * @see com.greensock.TimelineLite#to() + * @see #from() + */ + public static function to(target:Object, duration:Number, vars:Object):TweenNano { + return new TweenNano(target, duration, vars); + } + + /** + * Static method for creating a TweenNano instance that tweens backwards - + * you define the BEGINNING values and the current values are used + * as the destination values which is great for doing things like animating objects + * onto the screen because you can set them up initially the way you want them to look + * at the end of the tween and then animate in from elsewhere. + * + *

    NOTE: By default, immediateRender is true in + * from() tweens, meaning that they immediately render their starting state + * regardless of any delay that is specified. You can override this behavior by passing + * immediateRender:false in the vars parameter so that it will + * wait to render until the tween actually begins. To illustrate the default behavior, the + * following code will immediately set the alpha of mc + * to 0 and then wait 2 seconds before tweening the alpha back to 1 over + * the course of 1.5 seconds:

    + * + *

    + * TweenNano.from(mc, 1.5, {alpha:0, delay:2}); + *

    + * + *

    Since the target parameter can also be an array of objects, the following + * code will tween the alpha property of mc1, mc2, and mc3 from a value of 0 simultaneously:

    + * + * +TweenNano.from([mc1, mc2, mc3], 1.5, {alpha:0}); + + *

    Even though 3 objects are animating, there is still only one tween created.

    + * + *

    For simple sequencing, you can use the delay special property + * (like TweenNano.from(mc, 1, {alpha:0, delay:0.5})), + * but it is highly recommended that you consider using TimelineLite (or TimelineMax) + * for all but the simplest sequencing tasks. It has an identical from() method + * that allows you to append tweens one-after-the-other and then control the entire sequence + * as a whole. You can even have the tweens overlap as much as you want.

    + * + * @param target Target object (or array of objects) whose properties this tween affects. + * @param duration Duration in seconds (or frames if useFrames:true is set in the vars parameter) + * @param vars An object defining the starting value for each property that should be tweened as well as any special properties like onComplete, ease, etc. For example, to tween mc.x from 100 and mc.y from 200 and then call myFunction, do this: TweenNano.from(mc, 1, {x:100, y:200, onComplete:myFunction}); + * @return TweenNano instance + * @see #to() + * @see com.greensock.TimelineLite#from() + * @see com.greensock.TimelineLite#staggerFrom() + */ + public static function from(target:Object, duration:Number, vars:Object):TweenNano { + vars.runBackwards = true; + if (!("immediateRender" in vars)) { + vars.immediateRender = true; + } + return new TweenNano(target, duration, vars); + } + + /** + * Provides a simple way to call a function after a set amount of time (or frames). You can + * optionally pass any number of parameters to the function too. + * + *

    Javascript and AS2 note: - Due to the way Javascript and AS2 don't + * maintain scope (what "this" refers to, or the context) in function calls, + * it can be useful to define the scope specifically. Therefore, in the Javascript and AS2 + * versions the 4th parameter is scope, bumping useFrames + * back to the 5th parameter:

    + * + *

    TweenNano.delayedCall(delay, callback, params, scope, useFrames) [Javascript and AS2 only]

    + * + * +//calls myFunction after 1 second and passes 2 parameters: +TweenNano.delayedCall(1, myFunction, ["param1", 2]); + +function myFunction(param1, param2) { + //do stuff +} + + * + * @param delay Delay in seconds (or frames if useFrames is true) before the function should be called + * @param callback Function to call + * @param params An Array of parameters to pass the function (optional). + * @param useFrames If the delay should be measured in frames instead of seconds, set useFrames to true (default is false) + * @return TweenNano instance + * @see com.greensock.TimelineLite#call() + */ + public static function delayedCall(delay:Number, callback:Function, params:Array=null, useFrames:Boolean=false):TweenNano { + return new TweenNano(callback, 0, {delay:delay, onComplete:callback, onCompleteParams:params, useFrames:useFrames}); + } + + /** + * @private + * Updates active tweens and inits those whose startTime precedes the current _time/_frame. + * + * @param e ENTER_FRAME Event + */ + public static function _updateRoot(e:Event=null):void { + _frame += 1; + _time = getTimer() * 0.001; + var tween:TweenNano = _first, + next:TweenNano, + t:Number; + while (tween) { + next = tween._next; + t = (tween._useFrames) ? _frame : _time; + if (t >= tween._startTime && !tween._gc) { + tween._render(t - tween._startTime); + } + tween = next; + } + ticker.dispatchEvent(_tickEvent); + } + + /** + * Kills all the tweens of a particular object or the delayedCalls to a particular function. + * If, for example, you want to kill all tweens of myObject, you'd do this: + * + *

    + * TweenNano.killTweensOf(myObject); + *

    + * + *

    To kill all the delayedCalls that were created like TweenNano.delayedCall(5, myFunction);, + * you can simply call TweenNano.killTweensOf(myFunction); because delayedCalls + * are simply tweens that have their target and onComplete set to + * the same function (as well as a delay of course).

    + * + *

    killTweensOf() affects tweens that haven't begun yet too. If, for example, + * a tween of myObject has a delay of 5 seconds and + * TweenNano.killTweensOf(mc) is called 2 seconds after the tween was created, + * it will still be killed even though it hasn't started yet.

    + * + * @param target Object whose tweens should be killed immediately + **/ + public static function killTweensOf(target:Object):void { + var t:TweenNano = _first, + next:TweenNano; + while (t) { + next = t._next; + if (t.target == target) { + t.kill(); + } else if (t._targets != null) { + t.kill(target); + } + t = next; + } + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/core/Animation.as b/FairyGUI-as3/src/com/greensock/core/Animation.as new file mode 100644 index 0000000..2f27870 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/core/Animation.as @@ -0,0 +1,1095 @@ +/** + * VERSION: 12.1.1 + * DATE: 2013-12-07 + * AS3 (AS2 version is also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.core { + import flash.display.Shape; + import flash.events.Event; + import flash.utils.getTimer; +/** + * Base class for all TweenLite, TweenMax, TimelineLite, and TimelineMax classes, providing + * core methods/properties/functionality, but there is no reason to create an instance of this + * class directly. It can be very useful, however, as a data type in AS3/AS2 for methods/properties that + * can contain tweens or timelines. For example, maybe you build an animateIn() and + * animateOut() method for many of your own custom classes, and they each return an + * Animation instance which could be a tween or a timeline: + * + * +function animateIn():Animation { + return TweenLite.to(this, 1, {scaleX:1, scaleY:1, autoAlpha:1}); +} + +function animateOut():Animation { + var tl:TimelineLite = new TimelineLite(); + tl.to(this, 1, {scaleX:0.5, scaleY:0.5}); + tl.to(this, 0.5, {autoAlpha:0}, "-=0.25"); + return tl; +} + +var anim:Animation = animateIn(); + +//now we can control the animation with the common methods: +anim.pause(); +anim.play(); +anim.reverse(); + +//or somewhere else, we could build a sequence like this: +var tl:TimelineLite = new TimelineLite(); +tl.add( animateIn() ); +tl.add( animateOut(), 3); + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class Animation { + /** @private **/ + public static const version:String = "12.1.1"; + + /** + * The object that dispatches a "tick" event each time the engine updates, making it easy for + * you to add your own listener(s) to run custom logic after each update (great for game developers). + * Add as many listeners as you want. The basic syntax is the same for all versions (AS2, AS3, and JavaScript): + * + *

    Basic example (AS2, AS3, and JavaScript):

    +//add listener +Animation.ticker.addEventListener("tick", myFunction); + +function myFunction(event) { + //executes on every tick after the core engine updates +} + +//to remove the listener later... +Animation.ticker.removeEventListener("tick", myFunction); + + * + *

    Due to differences in the core languages (and to maximize efficiency), the advanced syntax is slightly different + * for the AS3 version compared to AS2 and JavaScript. The parameters beyond the first 2 in the addEventListener() + * method are outlined below:

    + * + *

    JavaScript and AS2

    + *

    addEventListener(type, callback, scope, useParam, priority)

    + *

    Parameters: + *

      + *
    1. type : String - type of listener, should always be "tick"
    2. + *
    3. callback : Function - the function to call when the event occurs
    4. + *
    5. scope : Object - binds the scope to a particular object (scope is basically what "this" refers to in your function). This can be very useful in JavaScript and AS2 because scope isn't generally maintained.
    6. + *
    7. useParam : Boolean - if true, an event object will be generated and fed to the callback each time the event occurs. The event is a generic object and has two properties: type (always "tick") and target which refers to the ticker instance. The default for useParam is false because it improves performance.
    8. + *
    9. priority : Integer - influences the order in which the listeners are called. Listeners with lower priorities are called after ones with higher priorities.
    10. + *
    + *

    + * + *

    In JavaScript, the Animation object/class is located at com.greensock.core.Animation - it is not added to the global namespace in order to avoid polluting it (developers rarely directly access the Animation class)

    + * + *

    Advanced example (JavaScript and AS2):

    +//add listener that requests an event object parameter, binds scope to the current scope (this), and sets priority to 1 so that it is called before any other listeners that had a priority lower than 1... +Animation.ticker.addEventListener("tick", myFunction, this, true, 1); + +function myFunction(event) { + //executes on every tick after the core engine updates +} + +//to remove the listener later... +Animation.ticker.removeEventListener("tick", myFunction); + + * + *

    AS3

    + *

    The AS3 version uses the standard EventDispatcher.addEventListener() syntax which + * basically allows you to define a priority and whether or not to use weak references (see Adobe's + * docs for details).

    + * + *

    Advanced example [AS3 only]:

    +import flash.events.Event; + +//add listener with weak reference (standard syntax - notice the 5th parameter is true) +Animation.ticker.addEventListener("tick", myFunction, false, 0, true); + +function myFunction(event:Event):void { + //executes on every tick after the core engine updates +} + +//to remove the listener later... +Animation.ticker.removeEventListener("tick", myFunction); + + **/ + public static var ticker:Shape = new Shape(); + /** @private root timeline on which all time-based tweens/timelines are initially placed (_rootFramesTimeline is for frames-based tweens/timelines where useFrames:true is defined in the constructor's vars parameter). **/ + public static var _rootTimeline:SimpleTimeline; + /** @private root timeline on which all frames-based tweens/timelines are initially placed (_rootTimeline is for time-based tweens/timelines). A frames-based animation is one that has useFrames:true defined in the constructor's vars parameter or it is placed into a parent timeline that is frames-based (the parent timeline always defines the timing mode). **/ + public static var _rootFramesTimeline:SimpleTimeline; + /** @private Each time the root timelines are updated, _rootFrame is incremented in order to keep track of how many frames have been rendered. **/ + protected static var _rootFrame:Number = -1; + /** @private We reuse this event instance for better memory management rather than recreating a new instance on every frame. **/ + protected static var _tickEvent:Event = new Event("tick"); + /** @private **/ + protected static var _tinyNum:Number = 0.0000000001; + + /** @private The onUpdate callback (if one is defined). Checking an instance property is faster than looking it up in the vars object on every render. This is purely a speed optimization **/ + protected var _onUpdate:Function; + + /** @private Delay in seconds (or frames for frames-based tweens/timelines) **/ + public var _delay:Number; + /** @private Primarily used for zero-duration tweens to determine the direction/momentum of time in its parent timeline which controls whether the starting or ending values should be rendered. See the render() method for usage (which is slightly different in tweens versus timelines) **/ + public var _rawPrevTime:Number; + /** @private Indicates whether or not the tween is currently active (typically when the parent timeline's playhead is between the start and end time of this animation). Makes conditional logic faster in the rendering queue of the parent timeline because if a tween is active, it'll always get rendered and we can flip _acitve to false when it completes. **/ + public var _active:Boolean; + /** @private Flagged for garbage collection (indicates the tween has been disabled, but keep in mind that a tween can be re-enabled later too!) **/ + public var _gc:Boolean; + /** @private Indicates whether or not the animation has been initialized (for tweens, this is when all the tweening properties get analyzed and their start/end values recorded, etc.) **/ + public var _initted:Boolean; + /** @private The time at which the animation begins, according to its parent timeline's time. For example, if the tween starts at exactly 3 seconds into the timeline on which it is placed, startTime would be 3. **/ + public var _startTime:Number; + /** @private The local position of the playhead (essentially the current time). If the animation has a non-zero repeat (only available on TweenMax and TimelineMax instances), its time goes back to zero upon repeating even though the totalTime continues forward linearly (or if it yoyo is true, the time alternates between moving forward and backward). time never exceeds the duration whereas the totalTime reflects the overall time including any repeats and repeatDelays. For example, if a TweenMax instance has a duration of 2 and a repeat of 3, totalTime will go from 0 to 8 during the course of the tween (plays once then repeats 3 times, making 4 total cycles) whereas time will go from 0 to 2 a total of 4 times. **/ + public var _time:Number; + /** @private The overall position of the playhead including any repeats and repeatDelays (which are only available in TweenMax and TimelineMax). For example, if a TweenMax instance has a duration of 2 and a repeat of 3, totalTime will go from 0 to 8 during the course of the tween (plays once then repeats 3 times, making 4 total cycles) whereas time will go from 0 to 2 a total of 4 times. **/ + public var _totalTime:Number; + /** @private Duration of the animation, not including any repeats or repeatDelays (which are only available in TweenMax and TimelineMax). For example, if a TweenMax instance has a duration of 2 and a repeat of 3, its totalDuration would be 8 (one standard play plus 3 repeats equals 4 total cycles). **/ + public var _duration:Number; + /** @private Total duration of the animation including any repeats or repeatDelays (which are only available in TweenMax and TimelineMax). For example, if a TweenMax instance has a duration of 2 and a repeat of 3, its totalDuration would be 8 (one standard play plus 3 repeats equals 4 total cycles). **/ + public var _totalDuration:Number; + /** @private Records the parent timeline's rawTime when the animation is paused (so that we can place it at the appropriate time when it is unpaused). NaN when the animation isn't paused. **/ + public var _pauseTime:Number; + /** @private Factor that's used to scale the time in the animation where 1 = normal speed, 0.5 = half speed, 2 = double speed, etc. For example, if a tween's duration is 2 but its timeScale is 0.5, it will take 4 seconds to finish. If you nest that tween in a TimelineLite that has a timeScale of 0.5 as well, it will take 8 seconds to finish. You can even tween another tween's (or timeline's) timeScale to gradually slow it down or speed it up. **/ + public var _timeScale:Number; + /** @private Indicates whether or not the animation is reversed. **/ + public var _reversed:Boolean; + /** @private The most recent parent timeline (only null for the _rootTimeline and _rootFramesTimeline). The timeline property (no "_" prefix) is null whenever the animation is removed from its parent timeline. We use this internally in slightly different ways. We need to always maintain a reference to the last parent timeline so that if the animation is re-enabled, we know where to put it. "_gc" is different in that a Animation could be eligible for gc yet not removed from its timeline, like when a TimelineLite completes for example. It makes things much faster to enable again if/when necessary, like if the TimelineLite gets restarted. **/ + public var _timeline:SimpleTimeline; + /** @private If true, the _duration or _totalDuration may need refreshing. For example, if a TimelineLite's child had a change in duration or startTime, it could affect the parent timeline's duration but we don't want to always make the update immediately because there may be many more changes made before the timeline actually need to be rendered again, so this helps improve performance. If the _dirty is false, we can skip the method call and quickly read from the _duration and/or _totalDuration. **/ + public var _dirty:Boolean; + /** @private Provides a quick way to check whether or not a animation is currently paused (skipping the paused() method call). **/ + public var _paused:Boolean; + /** @private Next Animation in the linked list. **/ + public var _next:Animation; + /** @private Previous Animation in the linked list. **/ + public var _prev:Animation; + + /** The vars object passed into the constructor which stores configuration variables like onComplete, onUpdate, etc. as well as tweening properties like opacity, x, y or whatever. **/ + public var vars:Object; + /** [Read-only] Parent timeline. Every animation is placed onto a timeline (the root timeline by default) and can only have one parent. An instance cannot exist in multiple timelines at once. **/ + public var timeline:SimpleTimeline; + /** A place to store any data you want (initially populated with vars.data if it exists). **/ + public var data:*; + + /** + * Constructor + * + * @param duration duration in seconds (or frames for frames-based tweens) + * @param vars configuration variables (for example, {x:100, y:0, opacity:0.5, onComplete:myFunction}) + */ + public function Animation(duration:Number=0, vars:Object=null) { + this.vars = vars || {}; + if (this.vars._isGSVars) { + this.vars = this.vars.vars; + } + _duration = _totalDuration = duration || 0; + _delay = Number(this.vars.delay) || 0; + _timeScale = 1; + _totalTime = _time = 0; + data = this.vars.data; + _rawPrevTime = -1; + + if (_rootTimeline == null) { + if (_rootFrame == -1) { + _rootFrame = 0; + _rootFramesTimeline = new SimpleTimeline(); + _rootTimeline = new SimpleTimeline(); + _rootTimeline._startTime = getTimer() / 1000; + _rootFramesTimeline._startTime = 0; + _rootTimeline._active = _rootFramesTimeline._active = true; + ticker.addEventListener("enterFrame", _updateRoot, false, 0, true); + } else { + return; + } + } + + var tl:SimpleTimeline = (this.vars.useFrames) ? _rootFramesTimeline : _rootTimeline; + tl.add(this, tl._time); + + _reversed = (this.vars.reversed == true); + if (this.vars.paused) { + paused(true); + } + } + + + /** + * Begins playing forward, optionally from a specific time (by default playback begins from + * wherever the playhead currently is). This also ensures that the instance is neither paused + * nor reversed. + * + *

    If you define a "from" time (the first parameter, which could also be a label for TimelineLite + * or TimelineMax instances), the playhead moves there immediately and if there are any + * events/callbacks inbetween where the playhead was and the new time, they will not be triggered + * because by default suppressEvents (the 2nd parameter) is true. + * Think of it like picking the needle up on a record player and moving it to a new position + * before placing it back on the record. If, however, you do not want the events/callbacks suppressed + * during that initial move, simply set the suppressEvents parameter to false.

    + * + * +//begins playing from wherever the playhead currently is: +myAnimation.play(); + +//begins playing from exactly 2-seconds into the animation: +myAnimation.play(2); + +//begins playing from exactly 2-seconds into the animation but doesn't suppress events during the initial move: +myAnimation.play(2, false); + + * + * @param from The time (or label for TimelineLite/TimelineMax instances) from which the animation should begin playing (if none is defined, it will begin playing from wherever the playhead currently is). + * @param suppressEvents If true (the default), no events or callbacks will be triggered when the playhead moves to the new position defined in the from parameter. + * @return self (makes chaining easier) + */ + public function play(from:*=null, suppressEvents:Boolean=true):* { + if (from != null) { + seek(from, suppressEvents); + } + reversed(false); + return paused(false); + } + + /** + * Pauses the instance, optionally jumping to a specific time. + * + *

    If you define a time to jump to (the first parameter, which could also be a label for TimelineLite + * or TimelineMax instances), the playhead moves there immediately and if there are any + * events/callbacks inbetween where the playhead was and the new time, they will not be triggered + * because by default suppressEvents (the 2nd parameter) is true. + * Think of it like picking the needle up on a record player and moving it to a new position + * before placing it back on the record. If, however, you do not want the events/callbacks suppressed + * during that initial move, simply set the suppressEvents parameter to false.

    + * + * + //pauses wherever the playhead currently is: + myAnimation.pause(); + + //jumps to exactly 2-seconds into the animation and then pauses: + myAnimation.pause(2); + + //jumps to exactly 2-seconds into the animation and pauses but doesn't suppress events during the initial move: + myAnimation.pause(2, false); + + * + * @param atTime The time (or label for TimelineLite/TimelineMax instances) that the instance should jump to before pausing (if none is defined, it will pause wherever the playhead is currently located). + * @param suppressEvents If true (the default), no events or callbacks will be triggered when the playhead moves to the new position defined in the atTime parameter. + * @return self (makes chaining easier) + */ + public function pause(atTime:*=null, suppressEvents:Boolean=true):* { + if (atTime != null) { + seek(atTime, suppressEvents); + } + return paused(true); + } + + /** + * Resumes playing without altering direction (forward or reversed), optionally jumping to a specific time first. + * + *

    If you define a time to jump to (the first parameter, which could also be a label for TimelineLite + * or TimelineMax instances), the playhead moves there immediately and if there are any + * events/callbacks inbetween where the playhead was and the new time, they will not be triggered + * because by default suppressEvents (the 2nd parameter) is true. + * Think of it like picking the needle up on a record player and moving it to a new position + * before placing it back on the record. If, however, you do not want the events/callbacks suppressed + * during that initial move, simply set the suppressEvents parameter to false.

    + * + * + //resumes from wherever the playhead currently is: + myAnimation.resume(); + + //jumps to exactly 2-seconds into the animation and then resumes playback: + myAnimation.resume(2); + + //jumps to exactly 2-seconds into the animation and resumes playbck but doesn't suppress events during the initial move: + myAnimation.resume(2, false); + + * + * @param from The time (or label for TimelineLite/TimelineMax instances) that the instance should jump to before resuming playback (if none is defined, it will resume wherever the playhead is currently located). + * @param suppressEvents If true (the default), no events or callbacks will be triggered when the playhead moves to the new position defined in the from parameter. + * @return self (makes chaining easier) + */ + public function resume(from:*=null, suppressEvents:Boolean=true):* { + if (from != null) { + seek(from, suppressEvents); + } + return paused(false); + } + + /** + * Jumps to a specific time without affecting whether or not the instance is paused or reversed. + * + *

    If there are any events/callbacks inbetween where the playhead was and the new time, + * they will not be triggered because by default suppressEvents (the 2nd parameter) + * is true. Think of it like picking the needle up on a record player and moving it + * to a new position before placing it back on the record. If, however, you do not want the + * events/callbacks suppressed during that initial move, simply set the suppressEvents + * parameter to false.

    + * + * + //jumps to exactly 2 seconds + myAnimation.seek(2); + + //jumps to exactly 2 seconds but doesn't suppress events during the initial move: + myAnimation.seek(2, false); + + * + * @param time The time (or label for TimelineLite/TimelineMax instances) to go to. + * @param suppressEvents If true (the default), no events or callbacks will be triggered when the playhead moves to the new position defined in the time parameter. + * @return self (makes chaining easier) + */ + public function seek(time:*, suppressEvents:Boolean=true):* { + return totalTime(Number(time), suppressEvents); + } + + /** + * Restarts and begins playing forward from the beginning. + * + * + //restarts, not including any delay that was defined + myAnimation.restart(); + + //restarts, including any delay, and doesn't suppress events during the initial move back to time:0 + myAnimation.restart(true, false); + + * + * @param includeDelay Determines whether or not the delay (if any) is honored when restarting. For example, if a tween has a delay of 1 second, like new TweenLite(mc, 2, {x:100, delay:1}); and then later restart() is called, it will begin immediately, but restart(true) will cause the delay to be honored so that it won't begin for another 1 second. + * @param suppressEvents If true (the default), no events or callbacks will be triggered when the playhead moves to the new position defined in the time parameter. + * @return self (makes chaining easier) + */ + public function restart(includeDelay:Boolean=false, suppressEvents:Boolean=true):* { + reversed(false); + paused(false); + return totalTime((includeDelay ? -_delay : 0), suppressEvents, true); + } + + /** + * Reverses playback so that all aspects of the animation are oriented backwards including, for example, + * a tween's ease. This will cause the instance's time and totalTime to move + * back towards zero as well. You can optionally define a specific time to jump to before reversing + * (by default it begins playing in reverse from wherever the playhead currently is). + * Calling reverse() also ensures that the instance is neither paused nor reversed. + * + *

    To jump to the very end of the animation and play in reverse from there, use 0 as the + * "from" parameter, like reverse(0).

    + * + *

    To check whether or not the instance is reversed, use the reversed() method, like + * if (myAnimation.reversed()) {...}

    + * + *

    If you define a "from" time (the first parameter, which could also be a label for TimelineLite + * or TimelineMax instances), the playhead moves there immediately and if there are any + * events/callbacks inbetween where the playhead was and the new time, they will not be triggered + * because by default suppressEvents (the 2nd parameter) is true. + * Think of it like picking the needle up on a record player and moving it to a new position + * before placing it back on the record. If, however, you do not want the events/callbacks suppressed + * during that initial move, simply set the suppressEvents parameter to false.

    + * + * + //reverses playback from wherever the playhead currently is: + myAnimation.reverse(); + + //reverses playback from exactly 2 seconds into the animation: + myAnimation.reverse(2); + + //reverses playback from exactly 2 seconds into the animation but doesn't suppress events during the initial move: + myAnimation.reverse(2, false); + + //reverses playback from the very END of the animation: + myAnimation.reverse(0); + + //reverses playback starting from exactly 1 second before the end of the animation: + myAnimation.reverse(-1); + + //flips the orientation (if it's forward, it will go backward, if it is backward, it will go forward): + if (myAnimation.reversed()) { + myAnimation.play(); + } else { + myAnimation.reverse(); + } + + //flips the orientation using the reversed() method instead (shorter version of the code above): + myAnimation.reversed( !myAnimation.reversed() ); + + * + * @param from The time (or label for TimelineLite/TimelineMax instances) from which the animation should begin playing in reverse (if none is defined, it will begin playing from wherever the playhead currently is). To begin at the very end of the animation, use 0. Negative numbers are relative to the end of the animation, so -1 would be 1 second from the end. + * @param suppressEvents If true (the default), no events or callbacks will be triggered when the playhead moves to the new position defined in the from parameter. + * @return self (makes chaining easier) + */ + public function reverse(from:*=null, suppressEvents:Boolean=true):* { + if (from != null) { + seek((from || totalDuration()), suppressEvents); + } + reversed(true); + return paused(false); + } + + /** + * @private + * Renders the animation at a particular time (or frame number for frames-based tweens). + * The time is based simply on the overall duration. For example, if an animations's duration + * is 3, render(1.5) would render it as halfway finished. + * + * @param time time (or frame number for frames-based animations) to render. If a negative value is used, it will act like 0. If the value exceeds the totalDuration, it will act like the totalDuration. + * @param suppressEvents If true, no events or callbacks will be triggered for this render (like onComplete, onUpdate, onReverseComplete, etc.) + * @param force Normally the animation will skip rendering if the time matches the _totalTime (to improve performance), but if force is true, it forces a render. This is primarily used internally for tweens with durations of zero in TimelineLite/Max instances. + */ + public function render(time:Number, suppressEvents:Boolean=false, force:Boolean=false):void { + + } + + + /** + * Clears any initialization data (like starting/ending values in tweens) which can be useful if, for example, + * you want to restart a tween without reverting to any previously recorded starting values. When you invalidate() + * an animation, it will be re-initialized the next time it renders and its vars object will be re-parsed. + * The timing of the animation (duration, startTime, delay) will not be affected. + * + *

    Another example would be if you have a TweenMax(mc, 1, {x:100, y:100}) that ran when mc.x and mc.y + * were initially at 0, but now mc.x and mc.y are 200 and you want them tween to 100 again, you could simply + * invalidate() the tween and restart() it. Without invalidating first, restarting it + * would cause the values jump back to 0 immediately (where they started when the tween originally began). + * When you invalidate a TimelineLite/TimelineMax, it automatically invalidates all of its children.

    + * @return self (makes chaining easier) + **/ + public function invalidate():* { + return this; + } + + /** + * Indicates whether or not the animation is currently active (meaning the virtual playhead is actively moving across + * this instance's time span and it is not paused, nor are any of its ancestor timelines). + * So for example, if a tween is in the middle of tweening, it's active, but after it is finished (or before + * it begins), it is not active. If it is paused or if it is placed inside of a timeline that's paused + * (or if any of its ancestor timelines are paused), isActive() will return false. If the + * playhead is directly on top of the animation's start time (even if it hasn't rendered quite yet), that counts + * as "active". + * + *

    You may also check the progress() or totalProgress(), but those don't take into consideration + * the paused state or the position of the parent timeline's playhead.

    + * + * @see #progress() + * @see #totalProgress() + **/ + public function isActive():Boolean { + var tl:SimpleTimeline = _timeline, //the 2 root timelines won't have a _timeline; they're always active. + rawTime:Number; + return ((tl == null) || (!_gc && !_paused && tl.isActive() && (rawTime = tl.rawTime()) >= _startTime && rawTime < _startTime + totalDuration() / _timeScale)); + } + + /** + * @private + * If an animation is enabled, it is eligible to be rendered (unless it is paused). Disabling it + * essentially removes it from its parent timeline and stops protecting it from garbage collection. + * + * @param enabled Enabled state of the animation + * @param ignoreTimeline By default, the tween/timeline will remove itself from its parent timeline when it is disabled and add itself when it is enabled, but this parameter allows you to skip that behavior. + * @return Boolean value indicating whether or not important properties may have changed when the animation was enabled/disabled. For example, when a MotionBlurPlugin is disabled, it swaps out a BitmapData for the target and may alter the opacity. We need to know this in order to determine whether or not a new tween that is overwriting this one should be re-initialized with the changed properties. + **/ + public function _enabled(enabled:Boolean, ignoreTimeline:Boolean=false):Boolean { + _gc = !enabled; //note: it is possible for _gc to be true and timeline not to be null in situations where a parent TimelineLite/Max has completed and is removed - the developer might hold a reference to that timeline and later restart() it or something. + _active = Boolean(enabled && !_paused && _totalTime > 0 && _totalTime < _totalDuration); + if (!ignoreTimeline) { + if (enabled && timeline == null) { + _timeline.add(this, _startTime - _delay); + } else if (!enabled && timeline != null) { + _timeline._remove(this, true); + } + } + + return false; + } + + /** @private Same as kill() except that it returns a Boolean that indicates whether or not important properties may have changed when the animation was killed. For example, when a MotionBlurPlugin is disabled, it swaps out a BitmapData for the target and may alter the opacity. We need to know this in order to determine whether or not a new tween that is overwriting this one should be re-initialized with the changed properties. **/ + public function _kill(vars:Object=null, target:Object=null):Boolean { + return _enabled(false, false); + } + + /** + * Kills the animation entirely or in part depending on the parameters. Simply calling kill() + * (omitting the parameters) will immediately stop the animation and release it for garbage collection. + * To kill only particular tweening properties of the animation, use the first parameter which should + * be a generic object with enumerable properties corresponding to those that should be killed, + * like {x:true, y:true}. The second parameter allows you to define a target + * (or array of targets) to affect. + * + *

    Note: the values assigned to each property of the vars parameter object don't + * matter - the sole purpose of the object is for iteration over the named properties. In other + * words, {x:true, y:true} would produce the same results as {x:false, y:false}.

    + * + * + //kill the entire animation: + myAnimation.kill(); + + //kill only the "x" and "y" properties of the animation (all targets): + myAnimation.kill({x:true, y:true}); + + //kill all parts of the animation related to the target "myObject" (if the tween has multiple targets, the others will not be affected): + myAnimation.kill(null, myObject); + + //kill only the "x" and "y" properties of animations of the target "myObject": + myAnimation.kill({x:true, y:true}, myObject); + + //kill only the "opacity" properties of animations of the targets "myObject1" and "myObject2": + myAnimation.kill({opacity:true}, [myObject1, myObject2]); + + * + * @param vars To kill only specific properties, use a generic object containing enumerable properties corresponding to the ones that should be killed, like {x:true, y:true}. The values assigned to each property of the object don't matter - the sole purpose of the object is for iteration over the named properties (in this case, x and y). If no object (or null) is defined, ALL properties will be killed. + * @param target To kill only aspects of the animation related to a particular target (or targets), reference it here. For example, to kill only parts having to do with myObject, do kill(null, myObject) or to kill only parts having to do with myObject1 and myObject2, do kill(null, [myObject1, myObject2]). If no target is defined, ALL targets will be affected. + * @return self (makes chaining easier) + **/ + public function kill(vars:Object=null, target:Object=null):* { + _kill(vars, target); + return this; + } + + /** + * @private + * Sets the _dirty property of all anscestor timelines (and optionally this instance too). Setting + * the _dirty property to true forces any necessary recalculation of its _duration and + * _totalDuration properties and sorts the affected timelines' children animations so that they're in the proper order + * next time the duration or totalDuration is requested. We don't just recalculate them + * immediately because it can be much faster to do it this way. + * + * @param includeSelf indicates whether or not this tween's _dirty property should be affected. + * @return self (makes chaining easier) + */ + protected function _uncache(includeSelf:Boolean):* { + var tween:Animation = includeSelf ? this : timeline; + while (tween) { + tween._dirty = true; + tween = tween.timeline; + } + return this; + } + + /** @private This method gets called on every frame and is responsible for rendering/updating the root timelines. If you want to unhook the engine from its ticker, you could do Animation.ticker.removeEventListener("enterFrame", _updateRoot) and then call it yourself whenever you want to update. **/ + public static function _updateRoot(event:Event=null):void { + _rootFrame++; + _rootTimeline.render((getTimer() / 1000 - _rootTimeline._startTime) * _rootTimeline._timeScale, false, false); + _rootFramesTimeline.render((_rootFrame - _rootFramesTimeline._startTime) * _rootFramesTimeline._timeScale, false, false); + ticker.dispatchEvent(_tickEvent); + } + + /** @private **/ + protected function _swapSelfInParams(params:Array):Array { + var i:int = params.length, + copy:Array = params.concat(); + while (--i > -1) { + if (params[i] === "{self}") { + copy[i] = this; + } + } + return copy; + } + + +//---- GETTERS / SETTERS ------------------------------------------------------------ + + + + /** + * Gets or sets an event callback like "onComplete", "onUpdate", "onStart", "onReverseComplete" + * or "onRepeat" (onRepeat only applies to TweenMax or TimelineMax instances) + * along with any parameters that should be passed to that callback. This is the same as defining + * the values directly in the constructor's vars parameter initially, so the following + * two lines are functionally equivalent: + * + * +//the following two lines produce IDENTICAL results: +var myAnimation = new TweenLite(mc, 1, {x:100, onComplete:myFunction, onCompleteParams:["param1","param2"]}); +myAnimation.eventCallback("onComplete", myFunction, ["param1","param2"]); + + *

    The benefit of using eventCallback() is that it allows you to set callbacks + * even after the animation instance has been created and it also allows you to inspect the + * callback references or even delete them on-the-fly (use null to delete the + * event callback).

    + * + * +//deletes the onUpdate +myAnimation.eventCallback("onUpdate", null); + + * + *

    IMPORTANT:Animation instances can only have one callback associated with each + * event type (one onComplete, one onUpdate, one onStart, etc.). + * So setting a new value will overwrite the old one. All of the values populate the vars + * object too which was originally passed into the constructor (think of that like a storage place for + * configuration data).

    + * + *

    This method serves as both a getter and setter. Omitting all but the first parameter returns + * the current value (getter), whereas defining more than the first parameter sets the value (setter) + * and returns the instance itself for easier chaining, like + * myAnimation.eventCallback("onComplete", completeHandler).eventCallback("onUpdate", updateHandler, ["param1","{self}"]).play(1);

    + * + * +var currentOnComplete = myAnimation.eventCallback("onComplete"); //gets current onComplete +myAnimation.eventCallback("onComplete", myFunction); //sets the onComplete + + * + *

    JavaScript and AS2 note: - Due to the way JavaScript and AS2 don't + * maintain scope (what "this" refers to, or the context) in function calls, + * it can be useful to define the scope specifically. Therefore, in the JavaScript and AS2 + * versions accept an extra (4th) parameter for scope.

    + * + * @param type The type of event callback, like "onComplete", "onUpdate", "onStart" or "onRepeat". This is case-sensitive. + * @param callback The function that should be called when the event occurs. + * @param params An array of parameters to pass the callback. Use "{self}" to refer to the animation instance itself. Example: ["param1","{self}"] + * @return Omitting the all but the first parameter returns the current value (getter), whereas defining more than the first parameter sets the callback (setter) and returns the instance itself for easier chaining. + */ + public function eventCallback(type:String, callback:Function=null, params:Array=null):* { + if (type == null) { + return null; + } else if (type.substr(0,2) == "on") { + if (arguments.length == 1) { + return vars[type]; + } + if (callback == null) { + delete vars[type]; + } else { + vars[type] = callback; + vars[type + "Params"] = ((params is Array) && params.join("").indexOf("{self}") !== -1) ? _swapSelfInParams(params) : params; + } + if (type == "onUpdate") { + _onUpdate = callback; + } + } + return this; + } + + + /** + * Gets or sets the animation's initial delay which is the length of time in seconds + * (or frames for frames-based tweens) before the animation should begin. + * A tween's starting values are not recorded until after the delay has expired (except in + * from() tweens which render immediately by default unless immediateRender:false + * is set in the vars parameter). An animation's delay is unaffected + * by its timeScale, so if you were to change timeScale from 1 to 10, + * for example, it wouldn't cause the delay to grow tenfold. + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining, like myAnimation.delay(2).timeScale(0.5).play(1);

    + * + * + var currentDelay = myAnimation.delay(); //gets current delay + myAnimation.delay(2); //sets delay + + * + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + **/ + public function delay(value:Number=NaN):* { + if (!arguments.length) { + return _delay; + } + if (_timeline.smoothChildTiming) { + startTime( _startTime + value - _delay ); + } + _delay = value; + return this; + } + + /** + * Gets or sets the animation's duration, not including any repeats or repeatDelays + * (which are only available in TweenMax and TimelineMax). For example, if a TweenMax instance has + * a duration of 2 and a repeat of 3, its totalDuration + * would be 8 (one standard play plus 3 repeats equals 4 total cycles). + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining, like myAnimation.duration(2).delay(0.5).play(1);

    + * + * + var currentDuration = myAnimation.duration(); //gets current duration + myAnimation.duration(2); //sets duration + + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * + * @see #totalDuration() + * @see #timeScale() + **/ + public function duration(value:Number=NaN):* { + if (!arguments.length) { + _dirty = false; + return _duration; + } + _duration = _totalDuration = value; + _uncache(true); //true in case it's a TweenMax or TimelineMax that has a repeat - we'll need to refresh the totalDuration. + if (_timeline.smoothChildTiming) if (_time > 0) if (_time < _duration) if (value != 0) { + totalTime(_totalTime * (value / _duration), true); + } + return this; + } + + /** + * Gets or sets the animation's total duration including + * any repeats or repeatDelays (which are only available in TweenMax and TimelineMax). + * For example, if a TweenMax instance has a duration of 2 and a repeat of 3, + * its totalDuration would be 8 (one standard play plus 3 repeats equals 4 total cycles). + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining, like myAnimation.totalDuration(2).delay(0.5).play(1);

    + * + * + var ctd = myAnimation.totalDuration(); //gets current total duration + myAnimation.totalDuration(2); //sets total duration + + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * + * @see #duration() + * @see #timeScale() + **/ + public function totalDuration(value:Number=NaN):* { + _dirty = false; + return (!arguments.length) ? _totalDuration : duration(value); + } + + /** + * Gets or sets the local position of the playhead (essentially the current time), + * described in seconds (or frames for frames-based animations) which + * will never be less than 0 or greater than the animation's duration. + * For example, if the duration is 10 and you were to watch the + * time during the course of the animation, you'd see it go from 0 + * at the beginning to 10 at the end. Setting time to 5 would cause the + * animation to jump to its midway point (because it's half of the duration). + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining.

    + * + * +var currentTime = myAnimation.time(); //gets current time +myAnimation.time(2); //sets time, jumping to new value just like seek(). + + * + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. Negative values will be interpreted from the END of the animation. + * @param suppressEvents If true, no events or callbacks will be triggered when the playhead moves to the new position defined in the value parameter. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * + * @see #seek() + * @see #play() + * @see #reverse() + * @see #pause() + * @see #totalTime() + **/ + public function time(value:Number=NaN, suppressEvents:Boolean=false):* { + if (!arguments.length) { + return _time; + } + if (_dirty) { + totalDuration(); + } + if (value > _duration) { + value = _duration; + } + return totalTime(value, suppressEvents); + } + + /** + * Gets or sets the position of the playhead according to the totalDuration + * which includes any repeats and repeatDelays (only available + * in TweenMax and TimelineMax). For example, if a TweenMax instance has a + * duration of 2 and a repeat of 3, totalTime + * will go from 0 to 8 during the course of the tween (plays once then repeats 3 times, + * making 4 total cycles) whereas time will go from 0 to 2 a total of 4 times. + * If you added a repeatDelay of 1, that would make the totalTime + * go from 0 to 11 over the course of the tween. + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining.

    + * + *

    totalTime will never exceed the totalDuration, nor will it be + * less than 0 (values will be clipped appropriately). Negative values will be interpreted from + * the END of the animation. For example, -2 would be 2 seconds before the end. If the + * animation's totalDuration is 6 and you do myAnimation.totalTime(-2), + * it will jump to a totalTime of 4.

    + * + * + var tt = myAnimation.totalTime(); //gets total time + myAnimation.totalTime(2); //sets total time, jumping to new value just like seek(). + + * + * @param time Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. Negative values will be interpreted from the END of the animation. + * @param suppressEvents If true, no events or callbacks will be triggered when the playhead moves to the new position defined in the time parameter. + * @param uncapped By default, the time will be capped at totalDuration and if a negative number is used, it will be measured from the END of the animation, but if uncapped is true, the time won't be adjusted at all (negatives will be allowed, as will values that exceed totalDuration). + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * + * @see #time() + * @see #seek() + * @see #play() + * @see #reverse() + * @see #pause() + **/ + public function totalTime(time:Number=NaN, suppressEvents:Boolean=false, uncapped:Boolean=false):* { + if (!arguments.length) { + return _totalTime; + } + if (_timeline) { + if (time < 0 && !uncapped) { + time += totalDuration(); + } + if (_timeline.smoothChildTiming) { + if (_dirty) { + totalDuration(); + } + if (time > _totalDuration && !uncapped) { + time = _totalDuration; + } + var tl:SimpleTimeline = _timeline; + _startTime = (_paused ? _pauseTime : tl._time) - ((!_reversed ? time : _totalDuration - time) / _timeScale); + if (!_timeline._dirty) { //for performance improvement. If the parent's cache is already dirty, it already took care of marking the anscestors as dirty too, so skip the function call here. + _uncache(false); + } + //in case any of the ancestor timelines had completed but should now be enabled, we should reset their totalTime() which will also ensure that they're lined up properly and enabled. Skip for animations that are on the root (wasteful). Example: a TimelineLite.exportRoot() is performed when there's a paused tween on the root, the export will not complete until that tween is unpaused, but imagine a child gets restarted later, after all [unpaused] tweens have completed. The startTime of that child would get pushed out, but one of the ancestors may have completed. + if (tl._timeline != null) { + while (tl._timeline) { + if (tl._timeline._time !== (tl._startTime + tl._totalTime) / tl._timeScale) { + tl.totalTime(tl._totalTime, true); + } + tl = tl._timeline; + } + } + } + if (_gc) { + _enabled(true, false); + } + if (_totalTime != time || _duration === 0) { + render(time, suppressEvents, false); + } + } + return this; + } + + /** + * Gets or sets the animations's progress which is a value between 0 and 1 indicating the position + * of the virtual playhead (excluding repeats) where 0 is at the beginning, 0.5 is at the halfway point, + * and 1 is at the end (complete). If the animation has a non-zero repeat defined (only available in TweenMax and TimelineMax), + * progress() and totalProgress() will be different because progress() doesn't include the + * repeat or repeatDelay whereas totalProgress() does. For example, if a TimelineMax instance + * is set to repeat once, at the end of the first cycle totalProgress() would only be 0.5 + * whereas progress() would be 1. If you watched both properties over the course of the entire + * animation, you'd see progress() go from 0 to 1 twice (once for each cycle) in the + * same time it takes the totalProgress() to go from 0 to 1 once. + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining, like myAnimation.progress(0.5).play();

    + * + * +var progress = myAnimation.progress(); //gets current progress +myAnimation.progress(0.25); //sets progress to one quarter finished + + * + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * @param suppressEvents If true, no events or callbacks will be triggered when the playhead moves to the new position. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * + * @see #seek() + * @see #time() + * @see #totalTime() + * @see #totalProgress() + **/ + public function progress(value:Number=NaN, suppressEvents:Boolean=false):* { + return (!arguments.length) ? _time / duration() : totalTime(duration() * value, suppressEvents); + } + + /** + * Gets or sets the animation's total progress which is a value between 0 and 1 indicating the position + * of the virtual playhead (including repeats) where 0 is at the beginning, 0.5 is + * at the halfway point, and 1 is at the end (complete). If the animation has a non-zero repeat defined (only available in TweenMax and TimelineMax), + * progress() and totalProgress() will be different because progress() + * doesn't include the repeat or repeatDelay whereas totalProgress() does. For example, + * if a TimelineMax instance is set to repeat once, at the end of the first cycle totalProgress() + * would only be 0.5 whereas progress would be 1. If you watched both properties over the + * course of the entire animation, you'd see progress go from 0 to 1 twice (once for + * each cycle) in the same time it takes the totalProgress() to go from 0 to 1 once. + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining, like myAnimation.totalProgress(0.5).play();

    + * + * +var progress = myAnimation.totalProgress(); //gets total progress +myAnimation.totalProgress(0.25); //sets total progress to one quarter finished + + * + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * @param suppressEvents If true, no events or callbacks will be triggered when the playhead moves to the new position. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * + * @see #progress() + * @see #seek() + * @see #time() + * @see #totalTime() + **/ + public function totalProgress(value:Number=NaN, suppressEvents:Boolean=false):* { + return (!arguments.length) ? _time / duration() : totalTime(duration() * value, suppressEvents); + } + + /** + * Gets or sets the time at which the animation begins on its parent timeline (after any delay + * that was defined). For example, if a tween starts at exactly 3 seconds into the timeline + * on which it is placed, the tween's startTime would be 3. + * + *

    The startTime may be automatically adjusted to make the timing appear + * seamless if the parent timeline's smoothChildTiming property is true + * and a timing-dependent change is made on-the-fly, like reverse() is called or + * timeScale() is changed, etc. See the documentation for the smoothChildTiming + * property of timelines for more details.

    + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining.

    + * + * +var start = myAnimation.startTime(); //gets current start time +myAnimation.startTime(2); //sets the start time + + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + **/ + public function startTime(value:Number=NaN):* { + if (!arguments.length) { + return _startTime; + } + if (value != _startTime) { + _startTime = value; + if (timeline) if (timeline._sortChildren) { + timeline.add(this, value - _delay); //ensures that any necessary re-sequencing of Animations in the timeline occurs to make sure the rendering order is correct. + } + } + return this; + } + + /** + * Factor that's used to scale time in the animation where 1 = normal speed (the default), + * 0.5 = half speed, 2 = double speed, etc. For example, if an animation's duration + * is 2 but its timeScale is 0.5, it will take 4 seconds to finish. If you nest that + * animation in a timeline whose timeScale is 0.5 as well, it would take 8 seconds + * to finish. You can even tween the timeScale to gradually slow it down or speed it up. + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining, like myAnimation.timeScale(2).play(1);

    + * + * +var currentTimeScale = myAnimation.timeScale(); //gets current timeScale +myAnimation.timeScale( 0.5 ); //sets timeScale to half-speed + + * + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * + * @see #duration() + **/ + public function timeScale(value:Number=NaN):* { + if (!arguments.length) { + return _timeScale; + } + value = value || 0.000001; //can't allow zero because it'll throw the math off + if (_timeline && _timeline.smoothChildTiming) { + var t:Number = (_pauseTime || _pauseTime == 0) ? _pauseTime : _timeline._totalTime; + _startTime = t - ((t - _startTime) * _timeScale / value); + } + _timeScale = value; + return _uncache(false); + } + + /** + * Gets or sets the animation's reversed state which indicates whether or not the animation + * should be played backwards. This value is not affected by yoyo repeats + * (TweenMax and TimelineMax only) and it does not take into account the reversed state of + * anscestor timelines. So for example, a tween that is not reversed might appear reversed + * if its parent timeline (or any ancenstor timeline) is reversed. + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining.

    + * + * +var rev = myAnimation.reversed(); //gets current orientation +myAnimation.reversed( true ); //sets the orientation to reversed +myAnimation.reversed( !myAnimation.reversed() ); //toggles the orientation + + * + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * + * @see #reverse() + * @see #play() + **/ + public function reversed(value:Boolean=false):* { + if (!arguments.length) { + return _reversed; + } + if (value != _reversed) { + _reversed = value; + totalTime(((_timeline && !_timeline.smoothChildTiming) ? totalDuration() - _totalTime : _totalTime), true); + } + return this; + } + + /** + * Gets or sets the animation's paused state which indicates whether or not the animation + * is currently paused. This does not take into account anscestor timelines. So for example, + * a tween that is not paused might appear paused if its parent timeline (or any ancenstor + * timeline) is paused. Pausing an animation doesn't remove it from its parent timeline, + * but it does cause it not to be factored into the parent timeline's + * duration/totalDuration. When an animation completes, it does + * NOT alter its paused state. + * + *

    In most cases, it is easiest to use the pause() method to pause + * the animation, and resume() to resume it. But to check the current + * state, you must use the paused() method. It can also be useful for + * toggling like myAnimation.paused( !myAnimation.paused() );

    + * + *

    You can set the paused state initially by passing paused:true + * in the vars parameter.

    + * + *

    This method serves as both a getter and setter. Omitting the parameter returns the current + * value (getter), whereas defining the parameter sets the value (setter) and returns the instance + * itself for easier chaining, like myAnimation.paused(true).delay(2).timeScale(0.5);

    + * + * + var paused = myAnimation.paused(); //gets current paused state + myAnimation.paused( true ); //sets paused state to true (just like pause()) + myAnimation.paused( !myAnimation.paused() ); //toggles the paused state + + * @param value Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * @return Omitting the parameter returns the current value (getter), whereas defining the parameter sets the value (setter) and returns the instance itself for easier chaining. + * + * @see #pause() + * @see #resume() + * @see #play() + **/ + public function paused(value:Boolean=false):* { + if (!arguments.length) { + return _paused; + } + if (value != _paused) if (_timeline) { + var raw:Number = _timeline.rawTime(), + elapsed:Number = raw - _pauseTime; + if (!value && _timeline.smoothChildTiming) { + _startTime += elapsed; + _uncache(false); + } + _pauseTime = value ? raw : NaN; + _paused = value; + _active = (!value && _totalTime > 0 && _totalTime < _totalDuration); + if (!value && elapsed != 0 && _initted && duration() !== 0) { + render((_timeline.smoothChildTiming ? _totalTime : (raw - _startTime) / _timeScale), true, true); //in case the target's properties changed via some other tween or manual update by the user, we should force a render. + } + } + if (_gc && !value) { + _enabled(true, false); + } + return this; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/core/PropTween.as b/FairyGUI-as3/src/com/greensock/core/PropTween.as new file mode 100644 index 0000000..a728289 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/core/PropTween.as @@ -0,0 +1,67 @@ +/** + * VERSION: 12.0.0 + * DATE: 2012-02-23 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.core { +/** + * @private + * Stores information about an individual property tween. There is no reason to use this class directly - TweenLite, TweenMax, and some plugins use it internally. + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + final public class PropTween { + /** Target object **/ + public var t:Object; + /** Name of the property that is being tweened on the target (for plugins, this is always "setRatio", but the actual property name of the orignal target is stored in the "n" property of the PropTween instance) **/ + public var p:String; + /** Starting value **/ + public var s:Number; + /** Amount to change (basically, the difference between the starting value and ending value) **/ + public var c:Number; + /** Indicates whether or not the target's property that is being tweened is a function (true) or not (false). If it's a function, it must be set with t.p(value) rather than t.p = value. **/ + public var f:Boolean; + /** Priority in the rendering queue. The lower the value the later it will be tweened. The default value is 0, but some plugins must be rendered later (or earlier). **/ + public var pr:int; + /** Indicates whether or not the target is a TweenPlugin. **/ + public var pg:Boolean; + /** The name associated with the original target property. Typically this is the same as PropTween.p but for TweenPlugin tweens it is often different. For example an autoAlpha tween would create a PropTween of the AutoAlphaPlugin instance and p would be "setRatio", but n would be "autoAlpha". **/ + public var n:String; + /** If true, the property should be rounded. **/ + public var r:Boolean; + /** Next PropTween in the linked list **/ + public var _next:PropTween; + /** Previous PropTween in the linked list **/ + public var _prev:PropTween; + + /** + * Constructor + * + * @param target Target object + * @param property Name of the property that is being tweened on the target (for plugins, this is always "setRatio", but the actual property name of the orignal target is stored in the "n" property of the PropTween instance) + * @param start Starting value + * @param change Amount to change (basically, the difference between the starting value and ending value) + * @param name The name associated with the original target property. Typically this is the same as PropTween.p but for TweenPlugin tweens it is often different. For example an autoAlpha tween would create a PropTween of the AutoAlphaPlugin instance and p would be "setRatio", but n would be "autoAlpha". + * @param isPlugin Indicates whether or not the target is a TweenPlugin. + * @param nextNode Next PropTween in the linked list + * @param priority Priority in the rendering queue. The lower the value the later it will be tweened. The default value is 0, but some plugins must be rendered later (or earlier). + */ + public function PropTween(target:Object, property:String, start:Number, change:Number, name:String, isPlugin:Boolean, next:PropTween=null, priority:int=0) { + this.t = target; + this.p = property; + this.s = start; + this.c = change; + this.n = name; + this.f = (target[property] is Function); + this.pg = isPlugin; + if (next) { + next._prev = this; + this._next = next; + } + this.pr = priority; + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/core/SimpleTimeline.as b/FairyGUI-as3/src/com/greensock/core/SimpleTimeline.as new file mode 100644 index 0000000..a1e80e8 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/core/SimpleTimeline.as @@ -0,0 +1,193 @@ +/** + * VERSION: 12.0.4 + * DATE: 2014-07-08 + * AS3 (AS2 version is also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.core { +/** + * SimpleTimeline is the base class for TimelineLite and TimelineMax, providing the + * most basic timeline functionality and it is used for the root timelines in TweenLite but is only + * intended for internal use in the GreenSock tweening platform. It is meant to be very fast and lightweight. + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class SimpleTimeline extends Animation { + + /** If true, child tweens/timelines will be removed as soon as they complete. (false by default except on the root timeline(s)) **/ + public var autoRemoveChildren:Boolean; + + /** + * Controls whether or not child tweens/timelines are repositioned automatically (changing their startTime) + * in order to maintain smooth playback when properties are changed on-the-fly. For example, imagine that + * the timeline's playhead is on a child tween that is 75% complete, moving mc.x from 0 to 100 and then + * that tween's reverse() method is called. If smoothChildTiming is false + * (the default except for the root timelines), the tween would flip in place, keeping its startTime + * consistent. Therefore the playhead of the timeline would now be at the tween's 25% completion point instead + * of 75%. Remember, the timeline's playhead position and direction are unaffected by child tween/timeline changes. + * mc.x would jump from 75 to 25, but the tween's position in the timeline would remain consistent. + * However, if smoothChildTiming is true, that child tween's startTime would + * be adjusted so that the timeline's playhead intersects with the same spot on the tween (75% complete) as it had + * immediately before reverse() was called, thus playback appears perfectly smooth. mc.x would + * still be 75 and it would continue from there as the playhead moves on, but since the tween is reversed now + * mc.x will travel back towards 0 instead of 100. Ultimately it's a decision between prioritizing smooth + * on-the-fly playback (true) or consistent position(s) of child tweens/timelines (false). + * + *

    Some examples of on-the-fly changes to child tweens/timelines that could cause their startTime + * to change when smoothChildTiming is true are: reversed, timeScale, progress, + * totalProgress, time, totalTime, delay, pause, resume, duration, and totalDuration.

    + **/ + public var smoothChildTiming:Boolean; + + /** @private If true, children are sorted in order of their startTime when inserted (improves rendering accuracy in certain situations) **/ + public var _sortChildren:Boolean; + + /** @private first child in the linked list **/ + public var _first:Animation; + + /** @private last child in the linked list **/ + public var _last:Animation; + + /** + * Constructor + * + * @param vars Object containing configuration variables like onComplete, onUpdate, onStart, data, etc. + */ + public function SimpleTimeline(vars:Object=null) { + super(0, vars); + this.autoRemoveChildren = this.smoothChildTiming = true; + } + + /** + * @private + * [Deprecated in favor of add()] + * Inserts a TweenLite, TweenMax, TimelineLite, or TimelineMax instance into the timeline at a specific time. + * In classes like TimelineLite and TimelineMax that override this method, it allows things like callbacks, + * labels, and arrays of tweens/timelines/callbacks/labels to be inserted too. They also allow the time to + * be defined in terms of either a numeric time or a label (String). + * + * @param child TweenLite, TweenMax, TimelineLite, or TimelineMax instance to insert + * @param position The time in seconds (or frames for frames-based timelines) at which the tween/timeline should be inserted. For example, myTimeline.insert(myTween, 3) would insert myTween 3 seconds into the timeline. + * @return this timeline instance (useful for chaining like myTimeline.insert(...).insert(...)) + */ + public function insert(child:*, position:*=0):* { + return add(child, position || 0); + } + + /** + * Adds a TweenLite, TweenMax, TimelineLite, or TimelineMax instance to the timeline at a specific time. + * In classes like TimelineLite and TimelineMax that override this method, it allows things like callbacks, + * labels, and arrays of tweens/timelines/callbacks/labels to be inserted too. They also allow the position to + * be defined in terms of either a numeric time or a label (String). + * + * @param child TweenLite, TweenMax, TimelineLite, or TimelineMax instance to insert + * @param position The position at which the tween/timeline should be inserted which can be expressed as a number (for an absolute time as seconds or frames for frames-based timelines) or a string, using "+=" or "-=" prefix to indicate a relative value (relative to the END of the timeline). For example, myTimeline.insert(myTween, 3) would insert myTween 3 seconds into the timeline. + * @param align Determines how the tweens/timelines/callbacks/labels will be aligned in relation to each other before getting inserted. Options are: "sequence" (aligns them one-after-the-other in a sequence), "start" (aligns the start times of all of the objects (ignoring delays)), and "normal" (aligns the start times of all the tweens (honoring delays)). The default is "normal". + * @param stagger Staggers the inserted objects by a set amount of time (in seconds) (or in frames for frames-based timelines). For example, if the stagger value is 0.5 and the "align" parameter is set to "start", the second one will start 0.5 seconds after the first one starts, then 0.5 seconds later the third one will start, etc. If the align property is "sequence", there would be 0.5 seconds added between each tween. Default is 0. + * @return this timeline instance (useful for chaining like myTimeline.add(...).add(...)) + */ + public function add(child:*, position:*="+=0", align:String="normal", stagger:Number=0):* { + child._startTime = Number(position || 0) + child._delay; + if (child._paused) if (this != child._timeline) { //we only adjust the _pauseTime if it wasn't in this timeline already. Remember, sometimes a tween will be inserted again into the same timeline when its startTime is changed so that the tweens in the TimelineLite/Max are re-ordered properly in the linked list (so everything renders in the proper order). + child._pauseTime = child._startTime + ((rawTime() - child._startTime) / child._timeScale); + } + if (child.timeline) { + child.timeline._remove(child, true); //removes from existing timeline so that it can be properly added to this one. + } + child.timeline = child._timeline = this; + if (child._gc) { + child._enabled(true, true); + } + + var prevTween:Animation = _last; + if (_sortChildren) { + var st:Number = child._startTime; + while (prevTween && prevTween._startTime > st) { + prevTween = prevTween._prev; + } + } + if (prevTween) { + child._next = prevTween._next; + prevTween._next = Animation(child); + } else { + child._next = _first; + _first = Animation(child); + } + if (child._next) { + child._next._prev = child; + } else { + _last = Animation(child); + } + child._prev = prevTween; + + if (_timeline) { + _uncache(true); + } + + return this; + } + + /** @private **/ + public function _remove(tween:Animation, skipDisable:Boolean=false):* { + if (tween.timeline == this) { + if (!skipDisable) { + tween._enabled(false, true); + } + + if (tween._prev) { + tween._prev._next = tween._next; + } else if (_first === tween) { + _first = tween._next; + } + if (tween._next) { + tween._next._prev = tween._prev; + } else if (_last === tween) { + _last = tween._prev; + } + tween._next = tween._prev = tween.timeline = null; + + if (_timeline) { + _uncache(true); + } + } + return this; + } + + /** @inheretDoc **/ + override public function render(time:Number, suppressEvents:Boolean=false, force:Boolean=false):void { + var tween:Animation = _first, next:Animation; + _totalTime = _time = _rawPrevTime = time; + while (tween) { + next = tween._next; //record it here because the value could change after rendering... + if (tween._active || (time >= tween._startTime && !tween._paused)) { + if (!tween._reversed) { + tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, force); + } else { + tween.render(((!tween._dirty) ? tween._totalDuration : tween.totalDuration()) - ((time - tween._startTime) * tween._timeScale), suppressEvents, force); + } + } + tween = next; + } + } + + +//---- GETTERS / SETTERS ------------------------------------------------------------------------------ + + /** + * @private + * Reports the totalTime of the timeline without capping the number at the totalDuration (max) and zero (minimum) + * which can be useful when unpausing tweens/timelines. Imagine a case where a paused tween is in a timeline that has already + * reached the end, but then the tween gets unpaused - it needs a way to place itself accurately in time AFTER what was + * previously the timeline's end time. In a SimpleTimeline, rawTime is always the same as _totalTime, + * but in TimelineLite and TimelineMax, it can be different. + * + * @return The totalTime of the timeline without capping the number at the totalDuration (max) and zero (minimum) + */ + public function rawTime():Number { + return _totalTime; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/data/TweenLiteVars.as b/FairyGUI-as3/src/com/greensock/data/TweenLiteVars.as new file mode 100644 index 0000000..9405159 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/data/TweenLiteVars.as @@ -0,0 +1,1204 @@ +/** + * VERSION: 12.01 + * DATE: 2012-09-10 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/tweenvars/ + **/ +package com.greensock.data { + import com.greensock.TweenLite; + import com.greensock.motionPaths.MotionPath; + + import flash.display.Stage; + import flash.geom.Point; +/** + * [AS3 only] There are 3 primary benefits of using a TweenLiteVars instance to define your TweenLite's "vars" parameter: + *
      + *
    1. In most code editors, code hinting will be activated which helps remind you which special properties are available.
    2. + *
    3. It allows you to code using strict data typing which can improve debugging.
    4. + *
    5. It will trace() a warning if you forgot to activate a particular plugin. For example, if you define an autoAlpha value in a TweenLiteVars instance but you didn't activate() the plugin, you'll see a trace() output when you test/compile the file (an Error isn't thrown because in some very rare circumstances it can be perfectly legitimate to avoid activating the plugin)
    6. + *
    + * + *

    The down side, of course, is that the code is more verbose and TweenLiteVars adds about 5kb to your published swf.

    + * + *

    USAGE:

    + *

    Note that each method returns the TweenLiteVars object, so you can reduce the lines of code by method chaining (see example below).

    + * + *

    Without TweenLiteVars:

    + *

    TweenLite.to(mc, 1, {x:300, y:100, tint:0xFF0000, onComplete:myFunction, onCompleteParams:[mc]})

    + * + *

    With TweenLiteVars

    + *

    TweenLite.to(mc, 1, new TweenLiteVars().move(300, 100).tint(0xFF0000).onComplete(myFunction, [mc]));

    + * + *

    You can use the prop() method to set individual generic properties (like "myCustomProperty" or "rotationY") or you can + * pass a generic Object into the constructor to make it a bit more concise, like this:

    + * + *

    TweenLite.to(mc, 1, new TweenLiteVars({myCustomProperty:300, rotationY:100}).tint(0xFF0000).onComplete(myFunction, [mc]));

    + * + *

    NOTES:

    + *
      + *
    • To get the generic vars object that TweenLiteVars builds internally, simply access its "vars" property. + * In fact, if you want maximum backwards compatibility, you can tack ".vars" onto the end of your chain like this: + * TweenLite.to(mc, 1, new TweenLiteVars({x:300, y:100}).tint(0xFF0000).onComplete(myFunction, [mc]).vars);
    • + *
    • This class adds about 6kb to your published SWF (not including TweenLite or any plugins).
    • + *
    • Using TweenLiteVars is completely optional. If you prefer the shorter generic object synatax, feel + * free to use it. The purpose of this utility is simply to enable code hinting and to allow for strict datatyping.
    • + *
    + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class TweenLiteVars { + /** @private **/ + public static const version:Number = 12.0; + + /** @private **/ + protected var _vars:Object; + + /** + * Constructor + * @param vars A generic Object containing properties that you'd like added (copied) to this TweenLiteVars instance. This is particularly useful for generic properties that don't have a corresponding method for setting the values (although you can use it for properties that do have corresponding methods too). For example, to tween the x and y properties of a DisplayObject, new TweenLiteVars({x:300, y:0}) + */ + public function TweenLiteVars(vars:Object=null) { + _vars = {}; + if (vars != null) { + for (var p:String in vars) { + _vars[p] = vars[p]; + } + } + } + + /** @private **/ + protected function _set(property:String, value:*, requirePlugin:Boolean=false):TweenLiteVars { + if (value == null) { + delete _vars[property]; //in case it was previously set + } else { + _vars[property] = value; + } + if (requirePlugin && !(property in TweenLite._plugins)) { + trace("WARNING: you must activate() the " + property + " plugin in order for the feature to work in TweenLite. See http://www.greensock.com/tweenlite/#plugins for details."); + } + return this; + } + + /** + * Adds a dynamic property for tweening and allows you to indicate whether the value is relative or not. + * For example, to tween "x" to 50 less than whatever it currently is: + * + *

    prop("x", -50, true);

    + * + * @param property Property name + * @param value Numeric end value (or beginning value for from() tweens) + * @param relative If true, the value will be interpreted as relative to the target's current value. For example, if mc.x is currently 300 and you do prop("x", 200, true), the end value will be 500. + */ + public function prop(property:String, value:Number, relative:Boolean=false):TweenLiteVars { + return _set(property, (!relative) ? value : (value < 0) ? "-=" + (-value) : "+=" + value); + } + + +//---- BUILT-IN SPECIAL PROPERTIES (NO PLUGIN ACTIVATION REQUIRED) -------------------------------------------------------------- + + /** Any generic data that you'd like associated with your tween. **/ + public function data(data:*):TweenLiteVars { + return _set("data", data); + } + + /** The number of seconds (or frames for frames-based tweens) to delay before the tween begins. **/ + public function delay(delay:Number):TweenLiteVars { + return _set("delay", delay); + } + + /** + * Controls the rate of change. Use any standard easing equation like ElasticOut.ease. The Default is QuadOut.ease. + * + * @param ease An ease (i.e. com.greensock.easing.ElasticOut.ease) The default is QuadOut.ease. + * @param easeParams An Array of extra parameter values to feed the easing equation (beyond the standard 4). This can be useful with easing equations like Elastic that accept extra parameters like the amplitude and period. Most easing equations, however, don't accept extra parameters so you won't need to pass in any easeParams. + **/ + public function ease(ease:*, easeParams:Array=null):TweenLiteVars { + _set("easeParams", easeParams); + return _set("ease", ease); + } + + /** + * Normally when you create a tween, it begins rendering on the very next frame (when + * the Flash Player dispatches an ENTER_FRAME event) unless you specify a delay. + * This allows you to insert tweens into timelines and perform other actions that may affect + * its timing. However, if you prefer to force the tween to render immediately when it is + * created, set immediateRender to true. from() tweens + * render immediately by default, so to prevent that behavior, set immediateRender + * to false. + **/ + public function immediateRender(value:Boolean):TweenLiteVars { + return _set("immediateRender", value, false); + } + + /** + * A function that should be called when the tween has completed. + * + * @param func A function that should be called when the tween has completed. + * @param params An Array of parameters to pass the onComplete function + **/ + public function onComplete(func:Function, params:Array=null):TweenLiteVars { + _set("onCompleteParams", params); + return _set("onComplete", func); + } + + /** + * A function that should be called after the tween has completed and rendered its final state to the stage (waits for the next ENTER_FRAME event is dispatched after the tween finishes). Target must be a DisplayObject. + * + * @param func A function that should be called after the tween has completed and rendered its final state to the stage (waits for the next ENTER_FRAME event is dispatched after the tween finishes). + * @param params An Array of parameters to pass the onCompleteRender function + **/ + public function onCompleteRender(func:Function, params:Array=null):TweenLiteVars { + _set("onCompleteRenderParams", params); + return _set("onCompleteRender", func, true); + } + + /** + * A function that should be called when the tween begins (when its time() is at 0 + * and changes to some other value which can happen more than once if the tween is restarted multiple times). + * + * @param func A function that should be called when the tween begins. + * @param params An Array of parameters to pass the onStart function. + **/ + public function onStart(func:Function, params:Array=null):TweenLiteVars { + _set("onStartParams", params); + return _set("onStart", func); + } + + /** + * A function to call whenever the tweening values are updated (on every frame during the time the tween is active). + * + * @param func A function to call whenever the tweening values are updated. + * @param params An Array of parameters to pass the onUpdate function + **/ + public function onUpdate(func:Function, params:Array=null):TweenLiteVars { + _set("onUpdateParams", params); + return _set("onUpdate", func); + } + + /** + * A function that should be called when the tween has reached its starting point again after having been reversed. + * + * @param func A function that should be called when the tween has reached its starting point again after having been reversed. + * @param params An Array of parameters to pass the onReverseComplete function + **/ + public function onReverseComplete(func:Function, params:Array=null):TweenLiteVars { + _set("onReverseCompleteParams", params); + return _set("onReverseComplete", func); + } + + /** + * Controls how (and if) other tweens of the same target are overwritten. + * There are several modes to choose from, but "auto" is the default (although + * you can change the default mode using the TweenLite.defaultOverwrite property): + *
      + *
    • "none" - no overwriting will occur.
    • + * + *
    • "all" - immediately overwrites all existing + * tweens of the same target even if they haven't started yet or don't have + * conflicting properties.
    • + * + *
    • "auto" - when the tween renders for the first time, it will analyze + * tweens of the same target that are currently active/running and only overwrite + * individual tweening properties that overlap/conflict. Tweens that haven't begun + * yet are ignored. For example, if another active tween is found that is tweening + * 3 properties, only 1 of which it shares in common with the new tween, the other + * 2 properties will be left alone. Only the conflicting property gets overwritten/killed. + * This is the default mode and typically the most intuitive for developers.
    • + * + *
    • "concurrent" - when the tween renders for the first time, it kills + * only the active (in-progress) tweens of the same target regardless of whether + * or not they contain conflicting properties. Like a mix of "all" + * and "auto". Good for situations where you only want one tween + * controling the target at a time.
    • + * + *
    • "allOnStart" - Identical to "all" but waits to run + * the overwrite logic until the tween begins (after any delay). Kills + * tweens of the same target even if they don't contain conflicting properties + * or haven't started yet.
    • + * + *
    • "preexisting" - when the tween renders for the first time, it kills + * only the tweens of the same target that existed BEFORE this tween was created + * regardless of their scheduled start times. So, for example, if you create a tween + * with a delay of 10 and then a tween with a delay of 1 and then a tween with a + * delay of 2 (all of the same target), the 2nd tween would overwrite the first + * but not the second even though scheduling might seem to dictate otherwise. + * "preexisting" only cares about the order in which the instances + * were actually created. This can be useful when the order in which your code runs + * plays a critical role.
    • + *
    + **/ + public function overwrite(value:String):TweenLiteVars { + return _set("overwrite", value, false); + } + + /** Controls the paused state of the tween - if true, the tween will be paused initially. **/ + public function paused(value:Boolean):TweenLiteVars { + return _set("paused", value, false); + } + + /** When true, the tween will flip the start and end values which is exactly what TweenLite.from() does. **/ + public function runBackwards(value:Boolean):TweenLiteVars { + return _set("runBackwards", value, false); + } + + /** + * If useFrames is set to true, the tweens's timing mode will be based on frames. + * Otherwise, it will be based on seconds/time. NOTE: a tween's timing mode is always + * determined by its parent timeline. + **/ + public function useFrames(value:Boolean):TweenLiteVars { + return _set("useFrames", value, false); + } + + +//---- COMMON CONVENIENCE PROPERTIES (NO PLUGIN REQUIRED) ------------------------------------------------------------------- + + /** Tweens the "x" and "y" properties of the target **/ + public function move(x:Number, y:Number, relative:Boolean=false):TweenLiteVars { + prop("x", x, relative); + return prop("y", y, relative); + } + + /** Tweens the "scaleX" and "scaleY" properties of the target **/ + public function scale(value:Number, relative:Boolean=false):TweenLiteVars { + prop("scaleX", value, relative); + return prop("scaleY", value, relative); + } + + /** Tweens the "rotation" property of the target **/ + public function rotation(value:Number, relative:Boolean=false):TweenLiteVars { + return prop("rotation", value, relative); + } + + /** Tweens the "scaleX" property of the target **/ + public function scaleX(value:Number, relative:Boolean=false):TweenLiteVars { + return prop("scaleX", value, relative); + } + + /** Tweens the "scaleY" property of the target **/ + public function scaleY(value:Number, relative:Boolean=false):TweenLiteVars { + return prop("scaleY", value, relative); + } + + /** Tweens the "width" property of the target **/ + public function width(value:Number, relative:Boolean=false):TweenLiteVars { + return prop("width", value, relative); + } + + /** Tweens the "height" property of the target **/ + public function height(value:Number, relative:Boolean=false):TweenLiteVars { + return prop("height", value, relative); + } + + /** Tweens the "x" property of the target **/ + public function x(value:Number, relative:Boolean=false):TweenLiteVars { + return prop("x", value, relative); + } + + /** Tweens the "y" property of the target **/ + public function y(value:Number, relative:Boolean=false):TweenLiteVars { + return prop("y", value, relative); + } + + +//---- PLUGIN REQUIRED ------------------------------------------------------------------------------------------- + + /** Same as changing the "alpha" property but with the additional feature of toggling the "visible" property to false whenever alpha is 0, thus improving rendering performance in the Flash Player. **/ + public function autoAlpha(alpha:Number):TweenLiteVars { + return _set("autoAlpha", alpha, true); + } + + /** + * Tweens a BevelFilter + * + * @param distance The offset distance of the bevel. + * @param angle The angle of the bevel. + * @param highlightColor The highlight color of the bevel. + * @param highlightAlpha The alpha transparency value of the highlight color. + * @param shadowColor The shadow color of the bevel. + * @param shadowAlpha The alpha transparency value of the shadow color. + * @param blurX The amount of horizontal blur, in pixels. + * @param blurY The amount of vertical blur, in pixels. + * @param strength The strength of the imprint or spread. + * @param quality The number of times to apply the filter. + * @param remove If true, the filter will be removed as soon as the tween completes + * @param addFilter If true, a new BevelFilter will be added to the target even if a BevelFilter is already in its filters array. + * @param index Allows you to target a particular BevelFilter if there are multiple BevelFilters in the target's filters array - simply define the index value corresponding to the BevelFilter's position in the filters array. + * @return The TweenLiteVars instance + */ + public function bevelFilter(distance:Number=4, angle:Number=45, highlightColor:uint=0xFFFFFF, highlightAlpha:Number=0.5, shadowColor:uint=0x000000, shadowAlpha:Number=0.5, blurX:Number=4, blurY:Number=4, strength:Number=1, quality:int=2, remove:Boolean=false, addFilter:Boolean=false, index:int=-1):TweenLiteVars { + var filter:Object = {distance:distance, angle:angle, highlightColor:highlightColor, highlightAlpha:highlightAlpha, shadowColor:shadowColor, shadowAlpha:shadowAlpha, blurX:blurX, blurY:blurY, strength:strength, quality:quality, addFilter:addFilter, remove:remove}; + if (index > -1) { + filter.index = index; + } + return _set("bevelFilter", filter, true); + } + + /** + * Bezier tweening allows you to tween in a non-linear way. For example, you may want to tween + * a MovieClip's position from the origin (0,0) 500 pixels to the right (500,0) but curve downwards + * through the middle of the tween. Simply pass as many objects in the bezier Array as you'd like, + * one for each "control point" (see documentation on Flash's curveTo() drawing method for more + * about how control points work). + * + *

    Keep in mind that you can bezier tween ANY properties, not just x/y.

    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.data.TweenLiteVars; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.BezierPlugin; +TweenPlugin.activate([BezierPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 3, new TweenLiteVars().bezier([{x:250, y:50}, {x:500, y:0}])); //makes my_mc travel through 250,50 and end up at 500,0. + + * + * @param values An array of objects with key/value pairs that define the bezier points like [{x:250, y:50}, {x:500, y:0}] + * @see #bezierThrough() + **/ + public function bezier(values:Array):TweenLiteVars { + return _set("bezier", values, true); + } + + /** + * Identical to bezier except that instead of passing Bezier control point values, you pass values through + * which the Bezier values should move. This can be more intuitive than using control points. + * + * @param values An array of objects with key/value pairs that define the bezier points like [{x:250, y:50}, {x:500, y:0}] + * @see #bezier() + **/ + public function bezierThrough(values:Array):TweenLiteVars { + return _set("bezierThrough", values, true); + } + + /** + * Tweens a BlurFilter + * + * @param blurX The amount of horizontal blur. + * @param blurY The amount of vertical blur. + * @param quality The number of times to perform the blur. + * @param remove If true, the filter will be removed as soon as the tween completes + * @param addFilter If true, a new BlurFilter will be added to the target even if a BlurFilter is already in its filters array. + * @param index Allows you to target a particular BlurFilter if there are multiple BlurFilters in the target's filters array - simply define the index value corresponding to the BlurFilter's position in the filters array. + * @return The TweenLiteVars instance + */ + public function blurFilter(blurX:Number, blurY:Number, quality:int=2, remove:Boolean=false, addFilter:Boolean=false, index:int=-1):TweenLiteVars { + var filter:Object = {blurX:blurX, blurY:blurY, quality:quality, addFilter:addFilter, remove:remove}; + if (index > -1) { + filter.index = index; + } + return _set("blurFilter", filter, true); + } + + /** + * Tweens an object along a CirclePath2D motion path in any direction (clockwise, counter-clockwise, or shortest). + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.data.TweenLiteVars; +import com.greensock.plugins.~~; +import com.greensock.motionPaths.~~ +TweenPlugin.activate([CirclePath2DPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +var circle:CirclePath2D = new CirclePath2D(150, 150, 100); +TweenLite.to(mc, 2, new TweenLiteVars().circlePath2D(circle, 90, 270, false, Direction.CLOCKWISE, 2)); + + * + * @param path The CirclePath2D instance to follow (com.greensock.motionPaths.CirclePath2D) + * @param startAngle The position at which the target should begin its rotation (described in degrees unless useRadians is true in which case it is described in radians). For example, to begin at the top of the circle, use 270 or -90 as the startAngle. + * @param endAngle The position at which the target should end its rotation (described in degrees unless useRadians is true in which case it is described in radians). For example, to end at the bottom of the circle, use 90 as the endAngle. + * @param autoRotate When autoRotate is true, the target will automatically be rotated so that it is oriented to the angle of the path. To offset this value (like to always add 90 degrees for example), use the rotationOffset property. + * @param direction The direction in which the target should travel around the path. Options are Direction.CLOCKWISE ("clockwise"), Direction.COUNTER_CLOCKWISE ("counterClockwise"), or Direction.SHORTEST ("shortest"). + * @param extraRevolutions If instead of going directly to the endAngle, you want the target to travel one or more extra revolutions around the path before going to the endAngle, define that number of revolutions here. + * @param rotationOffset When autoRotate is true, this value will always be added to the resulting rotation of the target. + * @param useRadians If you prefer to define values in radians instead of degrees, set useRadians to true. + * @return The TweenLiteVars instance + */ + public function circlePath2D(path:MotionPath, startAngle:Number, endAngle:Number, autoRotate:Boolean=false, direction:String="clockwise", extraRevolutions:uint=0, rotationOffset:Number=0, useRadians:Boolean=false):TweenLiteVars { + return _set("circlePath2D", {path:path, startAngle:startAngle, endAngle:endAngle, autoRotate:autoRotate, direction:direction, extraRevolutions:extraRevolutions, rotationOffset:rotationOffset, useRadians:useRadians}, true); + } + + /** + * ColorMatrixFilter tweening offers an easy way to tween a DisplayObject's saturation, hue, contrast, + * brightness, and colorization. + * + *

    HINT: If you'd like to match the ColorMatrixFilter values you created in the Flash IDE on a particular object, + * you can get its matrix like this:

    + * + * +import flash.display.DisplayObject; +import flash.filters.ColorMatrixFilter; + +function getColorMatrix(mc:DisplayObject):Array { + var f:Array = mc.filters, i:uint; + for (i = 0; i < f.length; i++) { + if (f[i] is ColorMatrixFilter) { + return f[i].matrix; + } + } + return null; +} + +var myOriginalMatrix:Array = getColorMatrix(my_mc); //store it so you can tween back to it anytime + + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.data.TweenLiteVars; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.ColorMatrixFilterPlugin; +TweenPlugin.activate([ColorMatrixFilterPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, new TweenLiteVars().colorMatrixFilter(0xFF0000)); + + * + * @param colorize The color to use for the colorizing effect - colorizing a DisplayObject makes it look as though you're seeing it through a colored piece of glass whereas tinting it makes every pixel exactly that color. You can control the amount of colorization using the "amount" parameter where 1 is full strength, 0.5 is half-strength, and 0 has no colorization effect. + * @param amount A number between 0 and 1 that determines the potency of the colorize effect. This parameter is ignored if the colorize parameter is left at its default value of 0xFFFFFF. + * @param saturation A number indicating the saturation where 1 is normal saturation, 0 makes the target look grayscale, and 2 would be double the normal saturation. + * @param contrast A number indicating the contrast where 1 is normal contrast, 0 is no contrast, and 2 is double the normal contrast, etc. + * @param brightness A number indicating the brightness where 1 is normal brightness, 0 is much darker than normal, and 2 is twice the normal brightness, etc. + * @param hue An angle-like number between 0 and 360 indicating the change in hue. Think of it as degrees, so 180 would be rotating the hue to be exactly opposite as normal, 360 would be the same as 0, etc. + * @param threshold A number from 0 to 255 that controls the threshold of where the pixels turn white or black (leave as -1 to avoid any threshold effect whatsoever). + * @param remove If true, the filter will be removed as soon as the tween completes + * @param addFilter If true, a new ColorMatrixFilter will be added to the target even if a ColorMatrixFilter is already in its filters array. + * @param index Allows you to target a particular ColorMatrixFilter if there are multiple ColorMatrixFilters in the target's filters array - simply define the index value corresponding to the ColorMatrixFilter's position in the filters array. + * @return The TweenLiteVars instance + */ + public function colorMatrixFilter(colorize:uint=0xFFFFFF, amount:Number=1, saturation:Number=1, contrast:Number=1, brightness:Number=1, hue:Number=0, threshold:Number=-1, remove:Boolean=false, addFilter:Boolean=false, index:int=-1):TweenLiteVars { + var filter:Object = {saturation:saturation, contrast:contrast, brightness:brightness, hue:hue, addFilter:addFilter, remove:remove}; + if (colorize != 0xFFFFFF) { + filter.colorize = colorize; + filter.amount = amount; + } + if (threshold > -1) { + filter.threshold = threshold; + } + if (index > -1) { + filter.index = index; + } + return _set("colorMatrixFilter", filter, true); + } + + /** + * Tweens ColorTransform properties of a DisplayObject to do advanced effects like overexposing, altering + * the brightness or setting the percent/amount of tint. + * + * @param tint The color value for a ColorTransform object. + * @param tintAmount A numeric value between 0 and 1 indicating the potency of the tint. For example, if tint is 0xFF0000 and tintAmount is 0.5, the target would be tinted halfway to red. + * @param exposure A numeric value between 0 and 2 where 1 is normal exposure, 0, is completely underexposed, and 2 is completely overexposed. Overexposing an object is different then changing the brightness - it seems to almost bleach the image and looks more dynamic and interesting (subjectively speaking). + * @param brightness A numeric value between 0 and 2 where 1 is normal brightness, 0 is completely dark/black, and 2 is completely bright/white + * @param redMultiplier A decimal value that is multiplied with the red channel value. + * @param greenMultiplier A decimal value that is multiplied with the green channel value. + * @param blueMultiplier A decimal value that is multiplied with the blue channel value. + * @param alphaMultiplier A decimal value that is multiplied with the alpha transparency channel value. + * @param redOffset A number from -255 to 255 that is added to the red channel value after it has been multiplied by the redMultiplier value. + * @param greenOffset A number from -255 to 255 that is added to the green channel value after it has been multiplied by the greenMultiplier value. + * @param blueOffset A number from -255 to 255 that is added to the blue channel value after it has been multiplied by the blueMultiplier value. + * @param alphaOffset A number from -255 to 255 that is added to the alpha transparency channel value after it has been multiplied by the alphaMultiplier value. + * @return The TweenLiteVars instance + */ + public function colorTransform(tint:Number=NaN, tintAmount:Number=NaN, exposure:Number=NaN, brightness:Number=NaN, redMultiplier:Number=NaN, greenMultiplier:Number=NaN, blueMultiplier:Number=NaN, alphaMultiplier:Number=NaN, redOffset:Number=NaN, greenOffset:Number=NaN, blueOffset:Number=NaN, alphaOffset:Number=NaN):TweenLiteVars { + var values:Object = {tint:tint, tintAmount:isNaN(tint) ? NaN : tintAmount, exposure:exposure, brightness:brightness, redMultiplier:redMultiplier, greenMultiplier:greenMultiplier, blueMultiplier:blueMultiplier, alphaMultiplier:alphaMultiplier, redOffset:redOffset, greenOffset:greenOffset, blueOffset:blueOffset, alphaOffset:alphaOffset}; + for (var p:String in values) { + if (isNaN(values[p])) { + delete values[p]; + } + } + return _set("colorTransform", values, true); + } + + /** + * Tweens a DropShadowFilter. + * + * @param distance The offset distance for the shadow, in pixels. + * @param blurX The amount of horizontal blur. + * @param blurY The amount of vertical blur. + * @param alpha The alpha transparency value for the shadow color. + * @param angle The angle of the shadow. + * @param color The color of the shadow. + * @param strength The strength of the imprint or spread. + * @param inner Indicates whether or not the shadow is an inner shadow. + * @param knockout Applies a knockout effect (true), which effectively makes the object's fill transparent and reveals the background color of the document. + * @param hideObject Indicates whether or not the object is hidden. + * @param quality The number of times to apply the filter. + * @param remove If true, the filter will be removed as soon as the tween completes + * @param addFilter If true, a new DropShadowFilter will be added to the target even if a DropShadowFilter is already in its filters array. + * @param index Allows you to target a particular DropShadowFilter if there are multiple DropShadowFilters in the target's filters array - simply define the index value corresponding to the DropShadowFilter's position in the filters array. + * @return The TweenLiteVars instance + */ + public function dropShadowFilter(distance:Number=4, blurX:Number=4, blurY:Number=4, alpha:Number=1, angle:Number=45, color:uint=0x000000, strength:Number=2, inner:Boolean=false, knockout:Boolean=false, hideObject:Boolean=false, quality:uint=2, remove:Boolean=false, addFilter:Boolean=false, index:int=-1):TweenLiteVars { + var filter:Object = {distance:distance, blurX:blurX, blurY:blurY, alpha:alpha, angle:angle, color:color, strength:strength, inner:inner, knockout:knockout, hideObject:hideObject, quality:quality, addFilter:addFilter, remove:remove}; + if (index > -1) { + filter.index = index; + } + return _set("dropShadowFilter", filter, true); + } + + /** + * If you'd like to tween something to a destination value that may change at any time, + * dynamicProps allows you to simply associate a function with a property so that + * every time the tween is rendered, it calls that function to get the new destination value + * for the associated property. For example, if you want a MovieClip to tween to wherever the + * mouse happens to be, you could do: + * + * +TweenLite.to(mc, 3, new TweenLiteVars().dynamicProps({x:getMouseX, y:getMouseY})); +function getMouseX():Number { + return this.mouseX; +} +function getMouseY():Number { + return this.mouseY; +} + + * + *

    Of course you can get as complex as you want inside your custom function, as long as + * it returns the destination value, TweenLite/Max will take care of adjusting things + * on the fly.

    + * + *

    You can optionally pass any number of parameters to functions using the "params" + * parameter like so:

    + * + * +TweenLite.to(mc, 3, new TweenLiteVars().dynamicProps({x:myFunction, y:myFunction}, {x:[mc2, "x"], y:[mc2, "y"]})); +function myFunction(object:MovieClip, propName:String):Number { + return object[propName]; +} + + * + *

    DynamicPropsPlugin is a Club GreenSock membership benefit. + * You must have a valid membership to use this class without violating the terms of use. + * Visit http://www.greensock.com/club/ to sign up or get + * more details.

    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.data.TweenLiteVars; +import com.greensock.plugins.~~; +TweenPlugin.activate([DynamicPropsPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(my_mc, 3, new TweenLiteVars().dynamicProps({x:getMouseX, y:getMouseY})); + +function getMouseX():Number { + return this.mouseX; +} +function getMouseY():Number { + return this.mouseY; +} + + * @param props An object containing properties that are named cooresponding to the properties of the target that should be affected, and the value should point to the function that handles returning the appropriate value, like {x:getMouseX, y:getMouseY}. + * @param params An object containing properties that are named corresponding to the properties of the target that should be affected, and the value should be an array of parameters that are passed to the corresponding function, like {x:[mc, "param2"], y:[mc, "param2"]} + * @return self + **/ + public function dynamicProps(props:Object, params:Object=null):TweenLiteVars { + if (params != null) { + props.params = params; + } + return _set("dynamicProps", props, true); + } + + /** An Array containing numeric end values of the target Array. Keep in mind that the target of the tween must be an Array with at least the same length as the endArray. **/ + public function endArray(values:Array):TweenLiteVars { + return _set("endArray", values, true); + } + + /** + * Tweens a MovieClip to a particular frame. + * + *

    USAGE:

    + * + * +import com.greensock.TweenLite; +import com.greensock.data.TweenLiteVars; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.FramePlugin; +TweenPlugin.activate([FramePlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, new TweenLiteVars().frame(125)); + + * + *

    Note: When tweening the frames of a MovieClip, any audio that is embedded on the MovieClip's timeline + * (as "stream") will not be played. Doing so would be impossible because the tween might speed up or slow + * down the MovieClip to any degree.

    + * + * @param value The frame to which the MovieClip should be tweened (or if relative is true, this value would represent the number of frames to travel from the current frame) + * @param relative If true, the frame value will be interpreted as relative to the current frame. So for example, if the MovieClip is at frame 5 currently and frame(10, true) is used, the MovieClip will tween 10 frames and end up on frame 15. + **/ + public function frame(value:int, relative:Boolean=false):TweenLiteVars { + return _set("frame", (relative) ? String(value) : value, true); + } + + /** + * Tweens a MovieClip backward to a particular frame number, wrapping it if/when it reaches the beginning + * of the timeline. For example, if your MovieClip has 20 frames total and it is currently at frame 10 + * and you want tween to frame 15, a normal frame tween would go forward from 10 to 15, but a frameBackward + * would go from 10 to 1 (the beginning) and wrap to the end and continue tweening from 20 to 15. + **/ + public function frameBackward(frame:int):TweenLiteVars { + return _set("frameBackward", frame, true); + } + + /** + * Tweens a MovieClip forward to a particular frame number, wrapping it if/when it reaches the end + * of the timeline. For example, if your MovieClip has 20 frames total and it is currently at frame 10 + * and you want tween to frame 5, a normal frame tween would go backwards from 10 to 5, but a frameForward + * would go from 10 to 20 (the end) and wrap to the beginning and continue tweening from 1 to 5. + **/ + public function frameForward(frame:int):TweenLiteVars { + return _set("frameForward", frame, true); + } + + /** Tweens a MovieClip to a particular frame. **/ + public function frameLabel(label:String):TweenLiteVars { + return _set("frameLabel", label, true); + } + + + /** + * Tweens a GlowFilter + * + * @param blurX The amount of horizontal blur. + * @param blurY The amount of vertical blur. + * @param color The color of the glow. + * @param alpha The alpha transparency value for the color. + * @param strength The strength of the imprint or spread. + * @param inner Specifies whether the glow is an inner glow. + * @param knockout Specifies whether the object has a knockout effect. + * @param quality The number of times to apply the filter. + * @param remove If true, the filter will be removed as soon as the tween completes + * @param addFilter If true, a new GlowFilter will be added to the target even if a GlowFilter is already in its filters array. + * @param index Allows you to target a particular GlowFilter if there are multiple GlowFilters in the target's filters array - simply define the index value corresponding to the GlowFilter's position in the filters array. + * @return The TweenLiteVars instance + */ + public function glowFilter(blurX:Number=10, blurY:Number=10, color:uint=0xFFFFFF, alpha:Number=1, strength:Number=2, inner:Boolean=false, knockout:Boolean=false, quality:uint=2, remove:Boolean=false, addFilter:Boolean=false, index:int=-1):TweenLiteVars { + var filter:Object = {blurX:blurX, blurY:blurY, color:color, alpha:alpha, strength:strength, inner:inner, knockout:knockout, quality:quality, addFilter:addFilter, remove:remove}; + if (index > -1) { + filter.index = index; + } + return _set("glowFilter", filter, true); + } + + /** + * Although hex colors are technically numbers, if you try to tween them conventionally, + * you'll notice that they don't tween smoothly. To tween them properly, the red, green, and + * blue components must be extracted and tweened independently. The HexColorsPlugin makes it easy. + * To tween a property of your object that's a hex color to another hex color, just pass a hexColors + * Object with properties named the same as your object's hex color properties. For example, + * if myObject has a "myHexColor" property that you'd like to tween to red (0xFF0000) over the + * course of 2 seconds, you'd do: + * + *

    + * TweenMax.to(myObject, 2, new TweenLiteVars().hexColors({myHexColor:0xFF0000})); + *

    + * + *

    You can pass in any number of hexColor properties.

    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.data.TweenLiteVars; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.HexColorsPlugin; +TweenPlugin.activate([HexColorsPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(myObject, 2, new TweenLiteVars().hexColors({myHexColor:0xFF0000})); + + *

    Or if you just want to tween a color and apply it somewhere on every frame, you could do:

    + * +var myColor:Object = {hex:0xFF0000}; +TweenLite.to(myColor, 2, new TweenLiteVars().hexColors({hex:0x0000FF}).onUpdate(applyColor)); +function applyColor():void { + mc.graphics.clear(); + mc.graphics.beginFill(myColor.hex, 1); + mc.graphics.drawRect(0, 0, 100, 100); + mc.graphics.endFill(); +} + + * + **/ + public function hexColors(values:Object):TweenLiteVars { + return _set("hexColors", values, true); + } + + + /** + * MotionBlurPlugin provides an easy way to apply a directional blur to a DisplayObject based on its velocity + * and angle of movement in 2D (x/y). This creates a much more realistic effect than a standard BlurFilter for + * several reasons: + *
      + *
    1. A regular BlurFilter is limited to blurring horizontally and/or vertically whereas the motionBlur + * gets applied at the angle at which the object is moving.
    2. + * + *
    3. A BlurFilter tween has static start/end values whereas a motionBlur tween dynamically adjusts the + * values on-the-fly during the tween based on the velocity of the object. So if you use a Strong.easeInOut + * for example, the strength of the blur will start out low, then increase as the object moves faster, and + * reduce again towards the end of the tween.
    4. + *
    + * + *

    motionBlur even works on bezier/bezierThrough tweens!

    + * + *

    To accomplish the effect, MotionBlurPlugin creates a Bitmap that it places over the original object, changing + * alpha of the original to [almost] zero during the course of the tween. The original DisplayObject still follows the + * course of the tween, so MouseEvents are properly dispatched. You shouldn't notice any loss of interactivity. + * The DisplayObject can also have animated contents - MotionBlurPlugin automatically updates on every frame. + * Be aware, however, that as with most filter effects, MotionBlurPlugin is somewhat CPU-intensive, so it is not + * recommended that you tween large quantities of objects simultaneously. You can activate fastMode + * to significantly speed up rendering if the object's contents and size/color doesn't need to change during the + * course of the tween.

    + * + * @param strength Determines the strength of the blur. The default is 1. For a more powerful blur, increase the number. Or reduce it to make the effect more subtle. + * @param fastMode Setting fastMode to true will significantly improve rendering performance but it is only appropriate for situations when the target object's contents, size, color, filters, etc. do not need to change during the course of the tween. It works by essentially taking a BitmapData snapshot of the target object at the beginning of the tween and then reuses that throughout the tween, blurring it appropriately. The default value for fastMode is false. + * @param quality The lower the quality, the less CPU-intensive the effect will be. Options are 1, 2, or 3. The default is 2. + * @param padding padding controls the amount of space around the edges of the target object that is included in the BitmapData capture (the default is 10 pixels). If the target object has filters applied to it like a GlowFilter or DropShadowFilter that extend beyond the bounds of the object itself, you might need to increase the padding to accommodate the filters. + * @return The TweenLiteVars instance + */ + public function motionBlur(strength:Number=1, fastMode:Boolean=false, quality:int=2, padding:int=10):TweenLiteVars { + return _set("motionBlur", {strength:strength, fastMode:fastMode, quality:quality, padding:padding}, true); + } + + /** + * A common effect that designers/developers want is for a MovieClip/Sprite to orient itself in the direction of + * a Bezier path (alter its rotation). orientToBezier makes it easy. In order to alter a rotation property accurately, + * TweenLite/Max needs 4 pieces of information: + *
      + *
    1. Position property 1 (typically "x")
    2. + *
    3. Position property 2 (typically "y")
    4. + *
    5. Rotational property (typically "rotation")
    6. + *
    7. Number of degrees to add (optional - makes it easy to orient your MovieClip/Sprite properly)
    8. + *
    + * + *

    The orientToBezier property should be an Array containing one Array for each set of these values. + * For maximum flexibility, you can pass in any number of Arrays inside the container Array, one for + * each rotational property. This can be convenient when working in 3D because you can rotate on multiple axis. + * If you're doing a standard 2D x/y tween on a bezier, you can simply pass in a boolean value of true and + * TweenMax will use a typical setup, [["x", "y", "rotation", 0]]. + * Hint: Don't forget the container Array (notice the double outer brackets)

    + * + *

    To use the default value ([["x", "y", "rotation", 0]]), you can simply leave the values parameter as null.

    + */ + public function orientToBezier(values:Object=null):TweenLiteVars { + return _set("orientToBezier", (values == null) ? true : values, false); + } + + + /** + * Provides simple physics functionality for tweening a DisplayObject's x and y coordinates based on a + * combination of velocity, angle, gravity, acceleration, accelerationAngle, and/or friction. It is not intended + * to replace a full-blown physics engine and does not offer collision detection, but serves + * as a way to easily create interesting physics-based effects with the GreenSock tweening platform. Parameters + * are not intended to be dynamically updateable, but one unique convenience is that everything is reverseable. + * So if you spawn a bunch of particle tweens, for example, and throw them into a TimelineLite, you could + * simply call reverse() on the timeline to watch the particles retrace their steps right back to the beginning. + * Keep in mind that any easing equation you define for your tween will be completely ignored for these properties. + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.TweenLiteVars; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.Physics2DPlugin; +TweenPlugin.activate([Physics2DPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 2, new TweenLiteVars().physics2D(300, -60, 400)); + + * + *

    Physics2DPlugin is a Club GreenSock membership benefit. You must have a valid membership to use this class + * without violating the terms of use. Visit http://www.greensock.com/club/ to sign up or get more details.

    + * + * @param velocity The initial velocity of the object measured in pixels per time unit (usually seconds, but for tweens where useFrames is true, it would be measured in frames). The default is zero. + * @param angle The initial angle (in degrees) at which the object is traveling. Only pertinent when a velocity is defined. For example, if the object should start out traveling at -60 degrees (towards the upper right), the angle would be -60. The default is zero. + * @param acceleration The amount of acceleration applied to the object, measured in pixels per time unit (usually seconds, but for tweens where useFrames is true, it would be measured in frames). To apply the acceleration in a specific direction that is different than the angle, use the accelerationAngle property. + * @param accelerationAngle The angle at which acceleration is applied (if any), measured in degrees. So if, for example, you want the object to accelerate towards the left side of the screen, you'd use an accelerationAngle of 180. + * @param friction A value between 0 and 1 where 0 is no friction, 0.08 is a small amount of friction, and 1 will completely prevent any movement. This is not meant to be precise or scientific in any way, but rather serves as an easy way to apply a friction-like physics effect to your tween. Generally it is best to experiment with this number a bit. Also note that friction requires more processing than physics tweens without any friction. + * @return The TweenLiteVars instance + * @see #physicsProps() + */ + public function physics2D(velocity:Number, angle:Number, acceleration:Number=0, accelerationAngle:Number=90, friction:Number=0):TweenLiteVars { + return _set("physics2D", {velocity:velocity, angle:angle, acceleration:acceleration, accelerationAngle:accelerationAngle, friction:friction}, true); + } + + /** + * Sometimes you want to tween a property (or several) but you don't have a specific end value in mind - instead, + * you'd rather describe the movement in terms of physics concepts, like velocity, acceleration, + * and/or friction. physicsProps allows you to tween any numeric property of any object based + * on these concepts. Keep in mind that any easing equation you define for your tween will be completely + * ignored for these properties. Instead, the physics parameters will determine the movement/easing. + * These parameters, by the way, are not intended to be dynamically updateable, but one unique convenience + * is that everything is reverseable. So if you create several physics-based tweens, for example, and + * throw them into a TimelineLite, you could simply call reverse() on the timeline to watch the objects + * retrace their steps right back to the beginning. Here are the parameters you can define (note that + * friction and acceleration are both completely optional): + *
      + *
    • velocity : Number - the initial velocity of the object measured in units per time + * unit (usually seconds, but for tweens where useFrames is true, it would + * be measured in frames). The default is zero.
    • + *
    • acceleration : Number [optional] - the amount of acceleration applied to the object, measured + * in units per time unit (usually seconds, but for tweens where useFrames + * is true, it would be measured in frames). The default is zero.
    • + *
    • friction : Number [optional] - a value between 0 and 1 where 0 is no friction, 0.08 is a small amount of + * friction, and 1 will completely prevent any movement. This is not meant to be precise or + * scientific in any way, but rather serves as an easy way to apply a friction-like + * physics effect to your tween. Generally it is best to experiment with this number a bit. + * Also note that friction requires more processing than physics tweens without any friction.
    • + *
    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.data.TweenLiteVars; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.PhysicsPropsPlugin; +TweenPlugin.activate([PhysicsPropsPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 2, new TweenLiteVars().physicsProps({ + x:{velocity:100, acceleration:200}, + y:{velocity:-200, friction:0.1} + } +)); + + * + *

    PhysicsPropsPlugin is a Club GreenSock membership benefit. You must have a valid membership to use this class + * without violating the terms of use. Visit http://www.greensock.com/club/ to sign up or get more details.

    + * + * @see #physics2D() + **/ + public function physicsProps(values:Object):TweenLiteVars { + return _set("physicsProps", values, true); + } + + /** An object with properties that correspond to the quaternion properties of the target object. For example, if your my3DObject has "orientation" and "childOrientation" properties that contain quaternions, and you'd like to tween them both, you'd do: {orientation:myTargetQuaternion1, childOrientation:myTargetQuaternion2}. Quaternions must have the following properties: x, y, z, and w. **/ + public function quaternions(values:Object):TweenLiteVars { + return _set("quaternions", values, true); + } + + /** Removes the tint of a DisplayObject over time. **/ + public function removeTint(remove:Boolean=true):TweenLiteVars { + return _set("removeTint", remove, true); + } + + /** + * Tweens the scrollRect property of a DisplayObject. You can define any (or all) of the following properties: + * + *
      + *
    • x : Number
    • + *
    • y : Number
    • + *
    • width : Number
    • + *
    • height : Number
    • + *
    • top : Number
    • + *
    • bottom : Number
    • + *
    • left : Number
    • + *
    • right : Number
    • + *
    + *
    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.data.TweenLiteVars +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.ScrollRectPlugin; +TweenPlugin.activate([ScrollRectPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, new TweenLiteVars().scrollRect({x:50, y:300, width:100, height:100})); + + **/ + public function scrollRect(props:Object):TweenLiteVars { + return _set("scrollRect", props, true); + } + + /** + * Some components require resizing with setSize() instead of standard tweens of width/height in + * order to scale properly. The SetSizePlugin accommodates this easily. You can define the width, + * height, or both. + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.data.TweenLiteVars; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.SetSizePlugin; +TweenPlugin.activate([SetSizePlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(myComponent, 1, new TweenLiteVars().setSize(200, 30)); + + **/ + public function setSize(width:Number=NaN, height:Number=NaN):TweenLiteVars { + var values:Object = {}; + if (!isNaN(width)) { + values.width = width; + } + if (!isNaN(height)) { + values.height = height; + } + return _set("setSize", values, true); + } + + /** + * To tween any rotation property of the target object in the shortest direction, use "shortRotation" + * For example, if myObject.rotation is currently 170 degrees and you want to tween it to + * -170 degrees, a normal rotation tween would travel a total of 340 degrees in the counter-clockwise + * direction, but if you use shortRotation, it would travel 20 degrees in the clockwise direction instead. + * You can define any number of rotation properties in the shortRotation object which makes 3D tweening + * easier, like: + * + *

    + * TweenLite.to(mc, 2, new TweenLiteVars().shortRotation({rotationX:-170, rotationY:35, rotationZ:200})); + *

    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.data.TweenLiteVars; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.ShortRotationPlugin; +TweenPlugin.activate([ShortRotationPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, new TweenLiteVars().shortRotation({rotation:-170})); + +//or for a 3D tween with multiple rotation values... +TweenLite.to(mc, 1, new TweenLiteVars().shortRotation({rotationX:-170, rotationY:35, rotationZ:10})); + + **/ + public function shortRotation(values:Object):TweenLiteVars { + if (typeof(values) == "number") { + values = {rotation:values}; + } + return _set("shortRotation", values, true); + } + + + /** + * Tweens properties of an object's soundTransform property (like the volume, pan, leftToRight, etc. + * of a MovieClip/SoundChannel/NetStream). + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.data.TweenLiteVars; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.SoundTransformPlugin; +TweenPlugin.activate([SoundTransformPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, new TweenLiteVars().soundTransform(0.2, 0.5)); + + * + * @param volume The volume, ranging from 0 (silent) to 1 (full volume). + * @param pan The left-to-right panning of the sound, ranging from -1 (full pan left) to 1 (full pan right). + * @param leftToLeft A value, from 0 (none) to 1 (all), specifying how much of the left input is played in the left speaker. + * @param leftToRight A value, from 0 (none) to 1 (all), specifying how much of the left input is played in the right speaker. + * @param rightToLeft A value, from 0 (none) to 1 (all), specifying how much of the right input is played in the left speaker. + * @param rightToRight A value, from 0 (none) to 1 (all), specifying how much of the right input is played in the right speaker. + * @return The TweenLiteVars instance + */ + public function soundTransform(volume:Number=1, pan:Number=0, leftToLeft:Number=1, leftToRight:Number=0, rightToLeft:Number=0, rightToRight:Number=1):TweenLiteVars { + return _set("soundTransform", {volume:volume, pan:pan, leftToLeft:leftToLeft, leftToRight:leftToRight, rightToLeft:rightToLeft, rightToRight:rightToRight}, true); + } + + /** + * Sets the stage's quality to a particular value during a tween and another value after + * the tween which can be useful for improving rendering performance in the Flash Player while things are animating. + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.data.TweenLiteVars; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.StageQualityPlugin; +import flash.display.StageQuality; +TweenPlugin.activate([StageQualityPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, new TweenLiteVars().prop("x", 100).stageQuality(this.stage, StageQuality.LOW, StageQuality.HIGH)); + + * + * @param stage A reference to the stage + * @param during The stage quality that should be used during the tween + * @param after The stage quality that should be set after the tween completes + * @return The TweenLiteVars instance + */ + public function stageQuality(stage:Stage, during:String="medium", after:String=null):TweenLiteVars { + if (after == null) { + after = stage.quality; + } + return _set("stageQuality", {stage:stage, during:during, after:after}, true); + } + + /** + * Allows you to define an initial velocity at which a property (or multiple properties) will start tweening, + * as well as [optional] maximum and/or minimum end values and then it will calculate the appropriate landing + * position and plot a smooth course to it based on the easing equation you define (Quad.easeOut by default, + * as set in TweenLite). This is perfect for flick-scrolling or animating things as though they are being thrown. + * + *

    In its simplest form, you can pass just the initial velocity for each property like this: + * {x:500, y:-300}

    + * + *

    In the above example, x will animate at 500 pixels per second initially and + * y will animate at -300 pixels per second. Both will decelerate smoothly + * until they come to rest based on the tween's duration.

    + * + *

    To impose maximum and minimum boundaries on the end values, use the nested object syntax + * with the max and min special properties like this: + * {x:{velocity:500, max:1024, min:0}, y:{velocity:-300, max:720, min:0}}; + *

    + * + *

    Notice the nesting of the objects ({}). The max and min values refer + * to the range for the final resting position (coordinates in this case), NOT the velocity. + * So x would always land between 0 and 1024 in this case, and y + * would always land between 0 and 720. If you want the target object to land on a specific value + * rather than within a range, simply set max and min to identical values. + * Also notice that you must define a velocity value for each property in the object syntax.

    + * + *

    throwProps isn't just for tweening x and y coordinates. It works with any numeric + * property, so you could use it for spinning the rotation of an object as well. Or the + * scaleX/scaleY properties. Maybe the user drags to spin a wheel and + * lets go and you want it to continue increasing the rotation at that velocity, + * decelerating smoothly until it stops.

    + * + *

    ThrowPropsPlugin is a Club GreenSock membership benefit. + * You must have a valid membership to use this class without violating the terms of use. Visit + * http://www.greensock.com/club/ to sign up or get more details.

    + **/ + public function throwProps(props:Object):TweenLiteVars { + return _set("throwProps", props, true); + } + + /** + * To change a DisplayObject's tint, set this to the hex value of the color you'd like the DisplayObject + * to end up at (or begin at if you're using TweenLite.from()). An example hex value would be 0xFF0000. + * If you'd like to remove the tint from a DisplayObject, use the removeTint special property. + * @see #removeTint() + * @see #colorMatrixFilter() + * @see #colorTransform() + **/ + public function tint(color:uint):TweenLiteVars { + return _set("tint", color, true); + } + + /** + * Normally, all transformations (scale, rotation, and position) are based on the DisplayObject's registration + * point (most often its upper left corner), but TransformAroundCenter allows you to make the transformations + * occur around the DisplayObject's center. + * + *

    If you define an x or y value in the transformAroundCenter object, it will correspond to the center which + * makes it easy to position (as opposed to having to figure out where the original registration point + * should tween to). If you prefer to define the x/y in relation to the original registration point, do so outside + * the transformAroundCenter object, like:

    + * + *

    + * TweenLite.to(mc, 3, new TweenLiteVars().prop("x", 50).prop("y", 40).transformAroundCenter({scale:0.5, rotation:30})); + *

    + * + *

    TransformAroundCenterPlugin is a Club GreenSock membership benefit. + * You must have a valid membership to use this class without violating the terms of use. Visit + * http://www.greensock.com/club/ to sign up or get more details.

    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.data.TweenLiteVars; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.TransformAroundCenterPlugin; +TweenPlugin.activate([TransformAroundCenterPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, new TweenLiteVars().transformAroundCenter({scale:1.5, rotation:150})); + + * @see #transformAroundPoint() + **/ + public function transformAroundCenter(props:Object):TweenLiteVars { + return _set("transformAroundCenter", props, true); + } + + /** + * Normally, all transformations (scale, rotation, and position) are based on the DisplayObject's registration + * point (most often its upper left corner), but TransformAroundPoint allows you to define ANY point around which + * transformations will occur during the tween. For example, you may have a dynamically-loaded image that you + * want to scale from its center or rotate around a particular point on the stage. + * + *

    If you define an x or y value in the transformAroundPoint object, it will correspond to the custom registration + * point which makes it easy to position (as opposed to having to figure out where the original registration point + * should tween to). If you prefer to define the x/y in relation to the original registration point, do so outside + * the transformAroundPoint object, like:

    + * + *

    + * TweenLite.to(mc, 3, new TweenLiteVars().prop("x", 50).prop("y", 40).transformAroundPoint(new Point(200, 300), {scale:0.5, rotation:30})); + *

    + * + *

    TransformAroundPointPlugin is a Club GreenSock membership benefit. + * You must have a valid membership to use this class without violating the terms of use. Visit + * http://www.greensock.com/club/ to sign up or get more details.

    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.data.TweenLiteVars; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.TransformAroundPointPlugin; +TweenPlugin.activate([TransformAroundPointPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, new TweenLiteVars().transformAroundPoint(new Point(100, 300), {scaleX:2, scaleY:1.5, rotation:150})); + + * @see #transformAroundCenter() + **/ + public function transformAroundPoint(point:Point, props:Object):TweenLiteVars { + props.point = point; + return _set("transformAroundPoint", props, true); + } + + /** + * transformMatrix tweens a DisplayObject's transform.matrix values directly either using + * the standard matrix properties (a, b, c, d, tx, and ty) or common properties + * like x, y, scaleX, scaleY, skewX, skewY, rotation and even shortRotation. + * To skew without adjusting scale visually, use skewX2 and skewY2 instead of skewX and skewY. + * + * + *

    transformMatrix tween will affect all of the DisplayObject's transform properties, so do not use + * it in conjunction with regular x/y/scaleX/scaleY/rotation tweens concurrently.

    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.data.TweenLiteVars; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.TransformMatrixPlugin; +TweenPlugin.activate([TransformMatrixPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, new TweenLiteVars().transformMatrix({x:50, y:300, scaleX:2, scaleY:2})); + +//-OR- + +TweenLite.to(mc, 1, new TweenLiteVars().transformMatrix({tx:50, ty:300, a:2, d:2})); + + **/ + public function transformMatrix(properties:Object):TweenLiteVars { + return _set("transformMatrix", properties, true); + } + + /** Sets a DisplayObject's "visible" property at the end of the tween. **/ + public function visible(value:Boolean):TweenLiteVars { + return _set("visible", value, true); + } + + /** Changes the volume of any object that has a soundTransform property (MovieClip, SoundChannel, NetStream, etc.) **/ + public function volume(volume:Number):TweenLiteVars { + return _set("volume", volume, true); + } + + +//---- GETTERS / SETTERS ------------------------------------------------------------------------------------------------------------- + + /** The generic object populated by all of the method calls in the TweenLiteVars instance. This is the raw data that gets passed to the tween. **/ + public function get vars():Object { + return _vars; + } + + /** @private **/ + public function get _isGSVars():Boolean { + return true; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/data/TweenMaxVars.as b/FairyGUI-as3/src/com/greensock/data/TweenMaxVars.as new file mode 100644 index 0000000..45fac00 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/data/TweenMaxVars.as @@ -0,0 +1,1285 @@ +/** + * VERSION: 12.01 + * DATE: 2012-09-11 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/tweenvars/ + **/ +package com.greensock.data { + import com.greensock.TweenLite; + import com.greensock.TweenMax; + import com.greensock.motionPaths.MotionPath; + + import flash.display.Stage; + import flash.geom.Point; +/** + * [AS3 only] There are 3 primary benefits of using a TweenMaxVars instance to define your TweenMax's "vars" parameter: + *
      + *
    1. In most code editors, code hinting will be activated which helps remind you which special properties are available.
    2. + *
    3. It allows you to code using strict data typing which can improve debugging.
    4. + *
    5. It will trace() a warning if you forgot to activate a particular plugin. For example, if you define an autoAlpha value in a TweenMaxVars instance but you didn't activate() the plugin, you'll see a trace() output when you test/compile the file (an Error isn't thrown because in some very rare circumstances it can be perfectly legitimate to avoid activating the plugin)
    6. + *
    + * + *

    The down side, of course, is that the code is more verbose and TweenMaxVars adds about 6kb to your published swf.

    + * + *

    USAGE:

    + *

    Note that each method returns the TweenMaxVars object, so you can reduce the lines of code by method chaining (see example below).

    + * + *

    Without TweenMaxVars:

    + *

    TweenMax.to(mc, 1, {x:300, y:100, tint:0xFF0000, onComplete:myFunction, onCompleteParams:[mc]})

    + * + *

    With TweenMaxVars

    + *

    TweenMax.to(mc, 1, new TweenMaxVars().move(300, 100).tint(0xFF0000).onComplete(myFunction, [mc]));

    + * + *

    You can use the prop() method to set individual generic properties (like "myCustomProperty" or "rotationY") or you can + * pass a generic Object into the constructor to make it a bit more concise, like this:

    + * + *

    TweenMax.to(mc, 1, new TweenMaxVars({myCustomProperty:300, rotationY:100}).tint(0xFF0000).onComplete(myFunction, [mc]));

    + * + *

    NOTES:

    + *
      + *
    • To get the generic vars object that TweenMaxVars builds internally, simply access its "vars" property. + * In fact, if you want maximum backwards compatibility, you can tack ".vars" onto the end of your chain like this: + * TweenMax.to(mc, 1, new TweenMaxVars({x:300, y:100}).tint(0xFF0000).onComplete(myFunction, [mc]).vars);
    • + *
    • This class adds about 6kb to your published SWF (not including TweenMax or any plugins).
    • + *
    • Using TweenMaxVars is completely optional. If you prefer the shorter generic object synatax, feel + * free to use it. The purpose of this utility is simply to enable code hinting and to allow for strict datatyping.
    • + *
    + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class TweenMaxVars { + /** @private **/ + public static const version:String = "12.0.0"; + + /** @private **/ + protected var _vars:Object; + + /** + * Constructor + * @param vars A generic Object containing properties that you'd like added (copied) to this TweenMaxVars instance. This is particularly useful for generic properties that don't have a corresponding method for setting the values (although you can use it for properties that do have corresponding methods too). For example, to tween the x and y properties of a DisplayObject, new TweenMaxVars({x:300, y:0}) + */ + public function TweenMaxVars(vars:Object=null) { + _vars = {}; + if (vars != null) { + for (var p:String in vars) { + _vars[p] = vars[p]; + } + } + } + + /** @private **/ + protected function _set(property:String, value:*, requirePlugin:Boolean=false):TweenMaxVars { + if (value == null) { + delete _vars[property]; //in case it was previously set + } else { + _vars[property] = value; + } + if (requirePlugin && !(property in TweenLite._plugins)) { + trace("WARNING: you must activate() the " + property + " plugin in order for the feature to work in TweenMax. See http://www.greensock.com/tweenlite/#plugins for details."); + } + return this; + } + + /** + * Adds a dynamic property for tweening and allows you to indicate whether the value is relative or not. + * For example, to tween "x" to 50 less than whatever it currently is: + * + *

    prop("x", -50, true);

    + * + * @param property Property name + * @param value Numeric end value (or beginning value for from() tweens) + * @param relative If true, the value will be interpreted as relative to the target's current value. For example, if mc.x is currently 300 and you do prop("x", 200, true), the end value will be 500. + */ + public function prop(property:String, value:Number, relative:Boolean=false):TweenMaxVars { + return _set(property, (!relative) ? value : (value < 0) ? "-=" + (-value) : "+=" + value); + } + + +//---- BUILT-IN SPECIAL PROPERTIES (NO PLUGIN ACTIVATION REQUIRED) -------------------------------------------------------------- + + /** Any generic data that you'd like associated with your tween. **/ + public function data(data:*):TweenMaxVars { + return _set("data", data); + } + + /** The number of seconds (or frames for frames-based tweens) to delay before the tween begins. **/ + public function delay(delay:Number):TweenMaxVars { + return _set("delay", delay); + } + + /** + * Controls the rate of change. Use any standard easing equation like ElasticOut.ease. The Default is QuadOut.ease. + * + * @param ease An ease (i.e. com.greensock.easing.ElasticOut.ease) The default is QuadOut.ease. + * @param easeParams An Array of extra parameter values to feed the easing equation (beyond the standard 4). This can be useful with easing equations like Elastic that accept extra parameters like the amplitude and period. Most easing equations, however, don't accept extra parameters so you won't need to pass in any easeParams. + **/ + public function ease(ease:*, easeParams:Array=null):TweenMaxVars { + _set("easeParams", easeParams); + return _set("ease", ease); + } + + /** + * Normally when you create a tween, it begins rendering on the very next frame (when + * the Flash Player dispatches an ENTER_FRAME event) unless you specify a delay. + * This allows you to insert tweens into timelines and perform other actions that may affect + * its timing. However, if you prefer to force the tween to render immediately when it is + * created, set immediateRender to true. from() tweens + * render immediately by default, so to prevent that behavior, set immediateRender + * to false. + **/ + public function immediateRender(value:Boolean):TweenMaxVars { + return _set("immediateRender", value, false); + } + + /** + * A function that should be called when the tween has completed. + * + * @param func A function that should be called when the tween has completed. + * @param params An Array of parameters to pass the onComplete function + **/ + public function onComplete(func:Function, params:Array=null):TweenMaxVars { + _set("onCompleteParams", params); + return _set("onComplete", func); + } + + /** + * A function that should be called after the tween has completed and rendered its final state to the stage (waits for the next ENTER_FRAME event is dispatched after the tween finishes). Target must be a DisplayObject. + * + * @param func A function that should be called after the tween has completed and rendered its final state to the stage (waits for the next ENTER_FRAME event is dispatched after the tween finishes). + * @param params An Array of parameters to pass the onCompleteRender function + **/ + public function onCompleteRender(func:Function, params:Array=null):TweenMaxVars { + _set("onCompleteRenderParams", params); + return _set("onCompleteRender", func, true); + } + + /** A function to which the TweenMax instance should dispatch a TweenEvent when it completes. This is the same as doing myTween.addEventListener(TweenEvent.COMPLETE, myFunction); **/ + public function onCompleteListener(func:Function):TweenMaxVars { + return _set("onCompleteListener", func); + } + + /** + * A function that should be called when the tween begins (when its time() is at 0 + * and changes to some other value which can happen more than once if the tween is restarted multiple times). + * + * @param func A function that should be called when the tween begins. + * @param params An Array of parameters to pass the onStart function. + **/ + public function onStart(func:Function, params:Array=null):TweenMaxVars { + _set("onStartParams", params); + return _set("onStart", func); + } + + /** A function to which the TweenMax instance should dispatch a TweenEvent when it begins. This is the same as doing myTween.addEventListener(TweenEvent.START, myFunction); **/ + public function onStartListener(func:Function):TweenMaxVars { + return _set("onStartListener", func) + } + + /** + * A function to call whenever the tweening values are updated (on every frame during the time the tween is active). + * + * @param func A function to call whenever the tweening values are updated. + * @param params An Array of parameters to pass the onUpdate function + **/ + public function onUpdate(func:Function, params:Array=null):TweenMaxVars { + _set("onUpdateParams", params); + return _set("onUpdate", func); + } + + /** A function to which the TweenMax instance should dispatch a TweenEvent every time it updates values. This is the same as doing myTween.addEventListener(TweenEvent.UPDATE, myFunction); **/ + public function onUpdateListener(func:Function):TweenMaxVars { + return _set("onUpdateListener", func); + } + + /** + * A function that should be called every time the tween repeats + * + * @param func A function that should be called every time the tween repeats + * @param params An Array of parameters to pass the onRepeat function + **/ + public function onRepeat(func:Function, params:Array=null):TweenMaxVars { + _set("onRepeatParams", params); + return _set("onRepeat", func); + } + + /** + * A function that should be called when the tween has reached its starting point again after having been reversed. + * + * @param func A function that should be called when the tween has reached its starting point again after having been reversed. + * @param params An Array of parameters to pass the onReverseComplete function + **/ + public function onReverseComplete(func:Function, params:Array=null):TweenMaxVars { + _set("onReverseCompleteParams", params); + return _set("onReverseComplete", func); + } + + /** A function to which the TweenMax instance should dispatch a TweenEvent when it has reached its starting point again after having been reversed **/ + public function onReverseCompleteListener(func:Function):TweenMaxVars { + return _set("onReverseCompleteListener", func); + } + + /** + * Controls how (and if) other tweens of the same target are overwritten. + * There are several modes to choose from, but "auto" is the default (although + * you can change the default mode using the TweenLite.defaultOverwrite property): + *
      + *
    • "none" - no overwriting will occur.
    • + * + *
    • "all" - immediately overwrites all existing + * tweens of the same target even if they haven't started yet or don't have + * conflicting properties.
    • + * + *
    • "auto" - when the tween renders for the first time, it will analyze + * tweens of the same target that are currently active/running and only overwrite + * individual tweening properties that overlap/conflict. Tweens that haven't begun + * yet are ignored. For example, if another active tween is found that is tweening + * 3 properties, only 1 of which it shares in common with the new tween, the other + * 2 properties will be left alone. Only the conflicting property gets overwritten/killed. + * This is the default mode and typically the most intuitive for developers.
    • + * + *
    • "concurrent" - when the tween renders for the first time, it kills + * only the active (in-progress) tweens of the same target regardless of whether + * or not they contain conflicting properties. Like a mix of "all" + * and "auto". Good for situations where you only want one tween + * controling the target at a time.
    • + * + *
    • "allOnStart" - Identical to "all" but waits to run + * the overwrite logic until the tween begins (after any delay). Kills + * tweens of the same target even if they don't contain conflicting properties + * or haven't started yet.
    • + * + *
    • "preexisting" - when the tween renders for the first time, it kills + * only the tweens of the same target that existed BEFORE this tween was created + * regardless of their scheduled start times. So, for example, if you create a tween + * with a delay of 10 and then a tween with a delay of 1 and then a tween with a + * delay of 2 (all of the same target), the 2nd tween would overwrite the first + * but not the second even though scheduling might seem to dictate otherwise. + * "preexisting" only cares about the order in which the instances + * were actually created. This can be useful when the order in which your code runs + * plays a critical role.
    • + *
    + **/ + public function overwrite(value:String):TweenMaxVars { + return _set("overwrite", value, false); + } + + /** Controls the paused state of the tween - if true, the tween will be paused initially. **/ + public function paused(value:Boolean):TweenMaxVars { + return _set("paused", value, false); + } + + /** Number of times that the tween should repeat (to repeat indefinitely, use -1). **/ + public function repeat(value:int):TweenMaxVars { + return _set("repeat", value); + } + + /** Amount of time in seconds (or frames for frames-based tween) between repeats. **/ + public function repeatDelay(value:Number):TweenMaxVars { + return _set("repeatDelay", value); + } + + /** + * If true, the tween will be reversed initially. This does not swap the starting/ending + * values in the tween - it literally changes its orientation/direction. Imagine the playhead + * moving backwards instead of forwards. This does NOT force it to the very end and start + * playing backwards. It simply affects the orientation of the tween, so if reversed is set to + * true initially, it will appear not to play because it is already at the beginning. To cause it to + * play backwards from the end, set reversed to true and then set the currentProgress + * property to 1 immediately after creating the tween (or set the currentTime to the duration). + **/ + public function reversed(value:Boolean):TweenMaxVars { + return _set("reversed", value); + } + + /** When true, the tween will flip the start and end values which is exactly what TweenMax.from() does. **/ + public function runBackwards(value:Boolean):TweenMaxVars { + return _set("runBackwards", value, false); + } + + /** Multiplier affecting the speed of the timeline where 1 is normal speed, 0.5 is half-speed, 2 is double speed, etc. **/ + public function timeScale(value:Number):TweenMaxVars { + return _set("timeScale", value, false); + } + + /** + * If useFrames is set to true, the tweens's timing mode will be based on frames. + * Otherwise, it will be based on seconds/time. NOTE: a tween's timing mode is always + * determined by its parent timeline. + **/ + public function useFrames(value:Boolean):TweenMaxVars { + return _set("useFrames", value, false); + } + + /** Allows you to define the starting values for properties. It is the same as defining the "from" parameter in a TweenMax.fromTo() call. **/ + public function startAt(vars:TweenMaxVars):TweenMaxVars { + return _set("startAt", vars.vars); + } + + /** + * Works in conjunction with the repeat property, determining the behavior of each + * cycle. When yoyo is true, the tween will go back and forth, appearing to reverse + * every other cycle (this has no affect on the "reversed" property though). So if repeat is + * 2 and yoyo is false, it will look like: start - 1 - 2 - 3 - 1 - 2 - 3 - 1 - 2 - 3 - end. But + * if repeat is 2 and yoyo is true, it will look like: start - 1 - 2 - 3 - 3 - 2 - 1 - 1 - 2 - 3 - end. + **/ + public function yoyo(value:Boolean):TweenMaxVars { + return _set("yoyo", value); + } + + //---- COMMON CONVENIENCE PROPERTIES (NO PLUGIN REQUIRED) ------------------------------------------------------------------- + + /** Tweens the "x" and "y" properties of the target **/ + public function move(x:Number, y:Number, relative:Boolean=false):TweenMaxVars { + prop("x", x, relative); + return prop("y", y, relative); + } + + /** Tweens the "scaleX" and "scaleY" properties of the target **/ + public function scale(value:Number, relative:Boolean=false):TweenMaxVars { + prop("scaleX", value, relative); + return prop("scaleY", value, relative); + } + + /** Tweens the "rotation" property of the target **/ + public function rotation(value:Number, relative:Boolean=false):TweenMaxVars { + return prop("rotation", value, relative); + } + + /** Tweens the "scaleX" property of the target **/ + public function scaleX(value:Number, relative:Boolean=false):TweenMaxVars { + return prop("scaleX", value, relative); + } + + /** Tweens the "scaleY" property of the target **/ + public function scaleY(value:Number, relative:Boolean=false):TweenMaxVars { + return prop("scaleY", value, relative); + } + + /** Tweens the "width" property of the target **/ + public function width(value:Number, relative:Boolean=false):TweenMaxVars { + return prop("width", value, relative); + } + + /** Tweens the "height" property of the target **/ + public function height(value:Number, relative:Boolean=false):TweenMaxVars { + return prop("height", value, relative); + } + + /** Tweens the "x" property of the target **/ + public function x(value:Number, relative:Boolean=false):TweenMaxVars { + return prop("x", value, relative); + } + + /** Tweens the "y" property of the target **/ + public function y(value:Number, relative:Boolean=false):TweenMaxVars { + return prop("y", value, relative); + } + + + +//---- PLUGIN REQUIRED ------------------------------------------------------------------------------------------- + + /** Same as changing the "alpha" property but with the additional feature of toggling the "visible" property to false whenever alpha is 0, thus improving rendering performance in the Flash Player. **/ + public function autoAlpha(alpha:Number):TweenMaxVars { + return _set("autoAlpha", alpha, true); + } + + /** + * Tweens a BevelFilter + * + * @param distance The offset distance of the bevel. + * @param angle The angle of the bevel. + * @param highlightColor The highlight color of the bevel. + * @param highlightAlpha The alpha transparency value of the highlight color. + * @param shadowColor The shadow color of the bevel. + * @param shadowAlpha The alpha transparency value of the shadow color. + * @param blurX The amount of horizontal blur, in pixels. + * @param blurY The amount of vertical blur, in pixels. + * @param strength The strength of the imprint or spread. + * @param quality The number of times to apply the filter. + * @param remove If true, the filter will be removed as soon as the tween completes + * @param addFilter If true, a new BevelFilter will be added to the target even if a BevelFilter is already in its filters array. + * @param index Allows you to target a particular BevelFilter if there are multiple BevelFilters in the target's filters array - simply define the index value corresponding to the BevelFilter's position in the filters array. + * @return The TweenMaxVars instance + */ + public function bevelFilter(distance:Number=4, angle:Number=45, highlightColor:uint=0xFFFFFF, highlightAlpha:Number=0.5, shadowColor:uint=0x000000, shadowAlpha:Number=0.5, blurX:Number=4, blurY:Number=4, strength:Number=1, quality:int=2, remove:Boolean=false, addFilter:Boolean=false, index:int=-1):TweenMaxVars { + var filter:Object = {distance:distance, angle:angle, highlightColor:highlightColor, highlightAlpha:highlightAlpha, shadowColor:shadowColor, shadowAlpha:shadowAlpha, blurX:blurX, blurY:blurY, strength:strength, quality:quality, addFilter:addFilter, remove:remove}; + if (index > -1) { + filter.index = index; + } + return _set("bevelFilter", filter, true); + } + + /** + * Bezier tweening allows you to tween in a non-linear way. For example, you may want to tween + * a MovieClip's position from the origin (0,0) 500 pixels to the right (500,0) but curve downwards + * through the middle of the tween. Simply pass as many objects in the bezier Array as you'd like, + * one for each "control point" (see documentation on Flash's curveTo() drawing method for more + * about how control points work). + * + *

    Keep in mind that you can bezier tween ANY properties, not just x/y.

    + * + *

    USAGE:

    + * +import com.greensock.TweenMax; +import com.greensock.data.TweenMaxVars; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.BezierPlugin; +TweenPlugin.activate([BezierPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenMax.to(mc, 3, new TweenMaxVars().bezier([{x:250, y:50}, {x:500, y:0}])); //makes my_mc travel through 250,50 and end up at 500,0. + + * + * @param values An array of objects with key/value pairs that define the bezier points like [{x:250, y:50}, {x:500, y:0}] + * @see #bezierThrough() + **/ + public function bezier(values:Array):TweenMaxVars { + return _set("bezier", values, true); + } + + /** + * Identical to bezier except that instead of passing Bezier control point values, you pass values through + * which the Bezier values should move. This can be more intuitive than using control points. + * + * @param values An array of objects with key/value pairs that define the bezier points like [{x:250, y:50}, {x:500, y:0}] + * @see #bezier() + **/ + public function bezierThrough(values:Array):TweenMaxVars { + return _set("bezierThrough", values, true); + } + + /** + * Tweens a BlurFilter + * + * @param blurX The amount of horizontal blur. + * @param blurY The amount of vertical blur. + * @param quality The number of times to perform the blur. + * @param remove If true, the filter will be removed as soon as the tween completes + * @param addFilter If true, a new BlurFilter will be added to the target even if a BlurFilter is already in its filters array. + * @param index Allows you to target a particular BlurFilter if there are multiple BlurFilters in the target's filters array - simply define the index value corresponding to the BlurFilter's position in the filters array. + * @return The TweenMaxVars instance + */ + public function blurFilter(blurX:Number, blurY:Number, quality:int=2, remove:Boolean=false, addFilter:Boolean=false, index:int=-1):TweenMaxVars { + var filter:Object = {blurX:blurX, blurY:blurY, quality:quality, addFilter:addFilter, remove:remove}; + if (index > -1) { + filter.index = index; + } + return _set("blurFilter", filter, true); + } + + /** + * Tweens an object along a CirclePath2D motion path in any direction (clockwise, counter-clockwise, or shortest). + * + *

    USAGE:

    + * + import com.greensock.TweenMax; + import com.greensock.data.TweenMaxVars; + import com.greensock.plugins.~~; + import com.greensock.motionPaths.~~ + TweenPlugin.activate([CirclePath2DPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + + var circle:CirclePath2D = new CirclePath2D(150, 150, 100); + TweenMax.to(mc, 2, new TweenMaxVars().circlePath2D(circle, 90, 270, false, Direction.CLOCKWISE, 2)); + + * + * @param path The CirclePath2D instance to follow (com.greensock.motionPaths.CirclePath2D) + * @param startAngle The position at which the target should begin its rotation (described in degrees unless useRadians is true in which case it is described in radians). For example, to begin at the top of the circle, use 270 or -90 as the startAngle. + * @param endAngle The position at which the target should end its rotation (described in degrees unless useRadians is true in which case it is described in radians). For example, to end at the bottom of the circle, use 90 as the endAngle. + * @param autoRotate When autoRotate is true, the target will automatically be rotated so that it is oriented to the angle of the path. To offset this value (like to always add 90 degrees for example), use the rotationOffset property. + * @param direction The direction in which the target should travel around the path. Options are Direction.CLOCKWISE ("clockwise"), Direction.COUNTER_CLOCKWISE ("counterClockwise"), or Direction.SHORTEST ("shortest"). + * @param extraRevolutions If instead of going directly to the endAngle, you want the target to travel one or more extra revolutions around the path before going to the endAngle, define that number of revolutions here. + * @param rotationOffset When autoRotate is true, this value will always be added to the resulting rotation of the target. + * @param useRadians If you prefer to define values in radians instead of degrees, set useRadians to true. + * @return The TweenMaxVars instance + */ + public function circlePath2D(path:MotionPath, startAngle:Number, endAngle:Number, autoRotate:Boolean=false, direction:String="clockwise", extraRevolutions:uint=0, rotationOffset:Number=0, useRadians:Boolean=false):TweenMaxVars { + return _set("circlePath2D", {path:path, startAngle:startAngle, endAngle:endAngle, autoRotate:autoRotate, direction:direction, extraRevolutions:extraRevolutions, rotationOffset:rotationOffset, useRadians:useRadians}, true); + } + + /** + * ColorMatrixFilter tweening offers an easy way to tween a DisplayObject's saturation, hue, contrast, + * brightness, and colorization. + * + *

    HINT: If you'd like to match the ColorMatrixFilter values you created in the Flash IDE on a particular object, + * you can get its matrix like this:

    + * + * + import flash.display.DisplayObject; + import flash.filters.ColorMatrixFilter; + + function getColorMatrix(mc:DisplayObject):Array { + var f:Array = mc.filters, i:uint; + for (i = 0; i < f.length; i++) { + if (f[i] is ColorMatrixFilter) { + return f[i].matrix; + } + } + return null; + } + + var myOriginalMatrix:Array = getColorMatrix(my_mc); //store it so you can tween back to it anytime + + * + *

    USAGE:

    + * + import com.greensock.TweenMax; + import com.greensock.data.TweenMaxVars; + import com.greensock.plugins.TweenPlugin; + import com.greensock.plugins.ColorMatrixFilterPlugin; + TweenPlugin.activate([ColorMatrixFilterPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + + TweenMax.to(mc, 1, new TweenMaxVars().colorMatrixFilter(0xFF0000)); + + * + * @param colorize The color to use for the colorizing effect - colorizing a DisplayObject makes it look as though you're seeing it through a colored piece of glass whereas tinting it makes every pixel exactly that color. You can control the amount of colorization using the "amount" parameter where 1 is full strength, 0.5 is half-strength, and 0 has no colorization effect. + * @param amount A number between 0 and 1 that determines the potency of the colorize effect. This parameter is ignored if the colorize parameter is left at its default value of 0xFFFFFF. + * @param saturation A number indicating the saturation where 1 is normal saturation, 0 makes the target look grayscale, and 2 would be double the normal saturation. + * @param contrast A number indicating the contrast where 1 is normal contrast, 0 is no contrast, and 2 is double the normal contrast, etc. + * @param brightness A number indicating the brightness where 1 is normal brightness, 0 is much darker than normal, and 2 is twice the normal brightness, etc. + * @param hue An angle-like number between 0 and 360 indicating the change in hue. Think of it as degrees, so 180 would be rotating the hue to be exactly opposite as normal, 360 would be the same as 0, etc. + * @param threshold A number from 0 to 255 that controls the threshold of where the pixels turn white or black (leave as -1 to avoid any threshold effect whatsoever). + * @param remove If true, the filter will be removed as soon as the tween completes + * @param addFilter If true, a new ColorMatrixFilter will be added to the target even if a ColorMatrixFilter is already in its filters array. + * @param index Allows you to target a particular ColorMatrixFilter if there are multiple ColorMatrixFilters in the target's filters array - simply define the index value corresponding to the ColorMatrixFilter's position in the filters array. + * @return The TweenMaxVars instance + */ + public function colorMatrixFilter(colorize:uint=0xFFFFFF, amount:Number=1, saturation:Number=1, contrast:Number=1, brightness:Number=1, hue:Number=0, threshold:Number=-1, remove:Boolean=false, addFilter:Boolean=false, index:int=-1):TweenMaxVars { + var filter:Object = {saturation:saturation, contrast:contrast, brightness:brightness, hue:hue, addFilter:addFilter, remove:remove}; + if (colorize != 0xFFFFFF) { + filter.colorize = colorize; + filter.amount = amount; + } + if (threshold > -1) { + filter.threshold = threshold; + } + if (index > -1) { + filter.index = index; + } + return _set("colorMatrixFilter", filter, true); + } + + /** + * Tweens ColorTransform properties of a DisplayObject to do advanced effects like overexposing, altering + * the brightness or setting the percent/amount of tint. + * + * @param tint The color value for a ColorTransform object. + * @param tintAmount A numeric value between 0 and 1 indicating the potency of the tint. For example, if tint is 0xFF0000 and tintAmount is 0.5, the target would be tinted halfway to red. + * @param exposure A numeric value between 0 and 2 where 1 is normal exposure, 0, is completely underexposed, and 2 is completely overexposed. Overexposing an object is different then changing the brightness - it seems to almost bleach the image and looks more dynamic and interesting (subjectively speaking). + * @param brightness A numeric value between 0 and 2 where 1 is normal brightness, 0 is completely dark/black, and 2 is completely bright/white + * @param redMultiplier A decimal value that is multiplied with the red channel value. + * @param greenMultiplier A decimal value that is multiplied with the green channel value. + * @param blueMultiplier A decimal value that is multiplied with the blue channel value. + * @param alphaMultiplier A decimal value that is multiplied with the alpha transparency channel value. + * @param redOffset A number from -255 to 255 that is added to the red channel value after it has been multiplied by the redMultiplier value. + * @param greenOffset A number from -255 to 255 that is added to the green channel value after it has been multiplied by the greenMultiplier value. + * @param blueOffset A number from -255 to 255 that is added to the blue channel value after it has been multiplied by the blueMultiplier value. + * @param alphaOffset A number from -255 to 255 that is added to the alpha transparency channel value after it has been multiplied by the alphaMultiplier value. + * @return The TweenMaxVars instance + */ + public function colorTransform(tint:Number=NaN, tintAmount:Number=NaN, exposure:Number=NaN, brightness:Number=NaN, redMultiplier:Number=NaN, greenMultiplier:Number=NaN, blueMultiplier:Number=NaN, alphaMultiplier:Number=NaN, redOffset:Number=NaN, greenOffset:Number=NaN, blueOffset:Number=NaN, alphaOffset:Number=NaN):TweenMaxVars { + var values:Object = {tint:tint, tintAmount:isNaN(tint) ? NaN : tintAmount, exposure:exposure, brightness:brightness, redMultiplier:redMultiplier, greenMultiplier:greenMultiplier, blueMultiplier:blueMultiplier, alphaMultiplier:alphaMultiplier, redOffset:redOffset, greenOffset:greenOffset, blueOffset:blueOffset, alphaOffset:alphaOffset}; + for (var p:String in values) { + if (isNaN(values[p])) { + delete values[p]; + } + } + return _set("colorTransform", values, true); + } + + /** + * Tweens a DropShadowFilter. + * + * @param distance The offset distance for the shadow, in pixels. + * @param blurX The amount of horizontal blur. + * @param blurY The amount of vertical blur. + * @param alpha The alpha transparency value for the shadow color. + * @param angle The angle of the shadow. + * @param color The color of the shadow. + * @param strength The strength of the imprint or spread. + * @param inner Indicates whether or not the shadow is an inner shadow. + * @param knockout Applies a knockout effect (true), which effectively makes the object's fill transparent and reveals the background color of the document. + * @param hideObject Indicates whether or not the object is hidden. + * @param quality The number of times to apply the filter. + * @param remove If true, the filter will be removed as soon as the tween completes + * @param addFilter If true, a new DropShadowFilter will be added to the target even if a DropShadowFilter is already in its filters array. + * @param index Allows you to target a particular DropShadowFilter if there are multiple DropShadowFilters in the target's filters array - simply define the index value corresponding to the DropShadowFilter's position in the filters array. + * @return The TweenMaxVars instance + */ + public function dropShadowFilter(distance:Number=4, blurX:Number=4, blurY:Number=4, alpha:Number=1, angle:Number=45, color:uint=0x000000, strength:Number=2, inner:Boolean=false, knockout:Boolean=false, hideObject:Boolean=false, quality:uint=2, remove:Boolean=false, addFilter:Boolean=false, index:int=-1):TweenMaxVars { + var filter:Object = {distance:distance, blurX:blurX, blurY:blurY, alpha:alpha, angle:angle, color:color, strength:strength, inner:inner, knockout:knockout, hideObject:hideObject, quality:quality, addFilter:addFilter, remove:remove}; + if (index > -1) { + filter.index = index; + } + return _set("dropShadowFilter", filter, true); + } + + /** + * If you'd like to tween something to a destination value that may change at any time, + * dynamicProps allows you to simply associate a function with a property so that + * every time the tween is rendered, it calls that function to get the new destination value + * for the associated property. For example, if you want a MovieClip to tween to wherever the + * mouse happens to be, you could do: + * + * + TweenMax.to(mc, 3, new TweenMaxVars().dynamicProps({x:getMouseX, y:getMouseY})); + function getMouseX():Number { + return this.mouseX; + } + function getMouseY():Number { + return this.mouseY; + } + + * + *

    Of course you can get as complex as you want inside your custom function, as long as + * it returns the destination value, TweenLite/Max will take care of adjusting things + * on the fly.

    + * + *

    You can optionally pass any number of parameters to functions using the "params" + * parameter like so:

    + * + * + TweenMax.to(mc, 3, new TweenMaxVars().dynamicProps({x:myFunction, y:myFunction}, {x:[mc2, "x"], y:[mc2, "y"]})); + function myFunction(object:MovieClip, propName:String):Number { + return object[propName]; + } + + * + *

    DynamicPropsPlugin is a Club GreenSock membership benefit. + * You must have a valid membership to use this class without violating the terms of use. + * Visit http://www.greensock.com/club/ to sign up or get + * more details.

    + * + *

    USAGE:

    + * + import com.greensock.TweenMax; + import com.greensock.data.TweenMaxVars; + import com.greensock.plugins.~~; + TweenPlugin.activate([DynamicPropsPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + + TweenMax.to(my_mc, 3, new TweenMaxVars().dynamicProps({x:getMouseX, y:getMouseY})); + + function getMouseX():Number { + return this.mouseX; + } + function getMouseY():Number { + return this.mouseY; + } + + * @param props An object containing properties that are named cooresponding to the properties of the target that should be affected, and the value should point to the function that handles returning the appropriate value, like {x:getMouseX, y:getMouseY}. + * @param params An object containing properties that are named corresponding to the properties of the target that should be affected, and the value should be an array of parameters that are passed to the corresponding function, like {x:[mc, "param2"], y:[mc, "param2"]} + * @return self + **/ + public function dynamicProps(props:Object, params:Object=null):TweenMaxVars { + if (params != null) { + props.params = params; + } + return _set("dynamicProps", props, true); + } + + /** An Array containing numeric end values of the target Array. Keep in mind that the target of the tween must be an Array with at least the same length as the endArray. **/ + public function endArray(values:Array):TweenMaxVars { + return _set("endArray", values, true); + } + + /** + * Tweens a MovieClip to a particular frame. + * + *

    USAGE:

    + * + * + import com.greensock.TweenMax; + import com.greensock.data.TweenMaxVars; + import com.greensock.plugins.TweenPlugin; + import com.greensock.plugins.FramePlugin; + TweenPlugin.activate([FramePlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + + TweenMax.to(mc, 1, new TweenMaxVars().frame(125)); + + * + *

    Note: When tweening the frames of a MovieClip, any audio that is embedded on the MovieClip's timeline + * (as "stream") will not be played. Doing so would be impossible because the tween might speed up or slow + * down the MovieClip to any degree.

    + * + * @param value The frame to which the MovieClip should be tweened (or if relative is true, this value would represent the number of frames to travel from the current frame) + * @param relative If true, the frame value will be interpreted as relative to the current frame. So for example, if the MovieClip is at frame 5 currently and frame(10, true) is used, the MovieClip will tween 10 frames and end up on frame 15. + **/ + public function frame(value:int, relative:Boolean=false):TweenMaxVars { + return _set("frame", (relative) ? String(value) : value, true); + } + + /** + * Tweens a MovieClip backward to a particular frame number, wrapping it if/when it reaches the beginning + * of the timeline. For example, if your MovieClip has 20 frames total and it is currently at frame 10 + * and you want tween to frame 15, a normal frame tween would go forward from 10 to 15, but a frameBackward + * would go from 10 to 1 (the beginning) and wrap to the end and continue tweening from 20 to 15. + **/ + public function frameBackward(frame:int):TweenMaxVars { + return _set("frameBackward", frame, true); + } + + /** + * Tweens a MovieClip forward to a particular frame number, wrapping it if/when it reaches the end + * of the timeline. For example, if your MovieClip has 20 frames total and it is currently at frame 10 + * and you want tween to frame 5, a normal frame tween would go backwards from 10 to 5, but a frameForward + * would go from 10 to 20 (the end) and wrap to the beginning and continue tweening from 1 to 5. + **/ + public function frameForward(frame:int):TweenMaxVars { + return _set("frameForward", frame, true); + } + + /** Tweens a MovieClip to a particular frame. **/ + public function frameLabel(label:String):TweenMaxVars { + return _set("frameLabel", label, true); + } + + + /** + * Tweens a GlowFilter + * + * @param blurX The amount of horizontal blur. + * @param blurY The amount of vertical blur. + * @param color The color of the glow. + * @param alpha The alpha transparency value for the color. + * @param strength The strength of the imprint or spread. + * @param inner Specifies whether the glow is an inner glow. + * @param knockout Specifies whether the object has a knockout effect. + * @param quality The number of times to apply the filter. + * @param remove If true, the filter will be removed as soon as the tween completes + * @param addFilter If true, a new GlowFilter will be added to the target even if a GlowFilter is already in its filters array. + * @param index Allows you to target a particular GlowFilter if there are multiple GlowFilters in the target's filters array - simply define the index value corresponding to the GlowFilter's position in the filters array. + * @return The TweenMaxVars instance + */ + public function glowFilter(blurX:Number=10, blurY:Number=10, color:uint=0xFFFFFF, alpha:Number=1, strength:Number=2, inner:Boolean=false, knockout:Boolean=false, quality:uint=2, remove:Boolean=false, addFilter:Boolean=false, index:int=-1):TweenMaxVars { + var filter:Object = {blurX:blurX, blurY:blurY, color:color, alpha:alpha, strength:strength, inner:inner, knockout:knockout, quality:quality, addFilter:addFilter, remove:remove}; + if (index > -1) { + filter.index = index; + } + return _set("glowFilter", filter, true); + } + + /** + * Although hex colors are technically numbers, if you try to tween them conventionally, + * you'll notice that they don't tween smoothly. To tween them properly, the red, green, and + * blue components must be extracted and tweened independently. The HexColorsPlugin makes it easy. + * To tween a property of your object that's a hex color to another hex color, just pass a hexColors + * Object with properties named the same as your object's hex color properties. For example, + * if myObject has a "myHexColor" property that you'd like to tween to red (0xFF0000) over the + * course of 2 seconds, you'd do: + * + *

    + * TweenMax.to(myObject, 2, new TweenMaxVars().hexColors({myHexColor:0xFF0000})); + *

    + * + *

    You can pass in any number of hexColor properties.

    + * + *

    USAGE:

    + * + import com.greensock.TweenMax; + import com.greensock.data.TweenMaxVars; + import com.greensock.plugins.TweenPlugin; + import com.greensock.plugins.HexColorsPlugin; + TweenPlugin.activate([HexColorsPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + + TweenMax.to(myObject, 2, new TweenMaxVars().hexColors({myHexColor:0xFF0000})); + + *

    Or if you just want to tween a color and apply it somewhere on every frame, you could do:

    + * + var myColor:Object = {hex:0xFF0000}; + TweenMax.to(myColor, 2, new TweenMaxVars().hexColors({hex:0x0000FF}).onUpdate(applyColor)); + function applyColor():void { + mc.graphics.clear(); + mc.graphics.beginFill(myColor.hex, 1); + mc.graphics.drawRect(0, 0, 100, 100); + mc.graphics.endFill(); + } + + * + **/ + public function hexColors(values:Object):TweenMaxVars { + return _set("hexColors", values, true); + } + + + /** + * MotionBlurPlugin provides an easy way to apply a directional blur to a DisplayObject based on its velocity + * and angle of movement in 2D (x/y). This creates a much more realistic effect than a standard BlurFilter for + * several reasons: + *
      + *
    1. A regular BlurFilter is limited to blurring horizontally and/or vertically whereas the motionBlur + * gets applied at the angle at which the object is moving.
    2. + * + *
    3. A BlurFilter tween has static start/end values whereas a motionBlur tween dynamically adjusts the + * values on-the-fly during the tween based on the velocity of the object. So if you use a Strong.easeInOut + * for example, the strength of the blur will start out low, then increase as the object moves faster, and + * reduce again towards the end of the tween.
    4. + *
    + * + *

    motionBlur even works on bezier/bezierThrough tweens!

    + * + *

    To accomplish the effect, MotionBlurPlugin creates a Bitmap that it places over the original object, changing + * alpha of the original to [almost] zero during the course of the tween. The original DisplayObject still follows the + * course of the tween, so MouseEvents are properly dispatched. You shouldn't notice any loss of interactivity. + * The DisplayObject can also have animated contents - MotionBlurPlugin automatically updates on every frame. + * Be aware, however, that as with most filter effects, MotionBlurPlugin is somewhat CPU-intensive, so it is not + * recommended that you tween large quantities of objects simultaneously. You can activate fastMode + * to significantly speed up rendering if the object's contents and size/color doesn't need to change during the + * course of the tween.

    + * + * @param strength Determines the strength of the blur. The default is 1. For a more powerful blur, increase the number. Or reduce it to make the effect more subtle. + * @param fastMode Setting fastMode to true will significantly improve rendering performance but it is only appropriate for situations when the target object's contents, size, color, filters, etc. do not need to change during the course of the tween. It works by essentially taking a BitmapData snapshot of the target object at the beginning of the tween and then reuses that throughout the tween, blurring it appropriately. The default value for fastMode is false. + * @param quality The lower the quality, the less CPU-intensive the effect will be. Options are 1, 2, or 3. The default is 2. + * @param padding padding controls the amount of space around the edges of the target object that is included in the BitmapData capture (the default is 10 pixels). If the target object has filters applied to it like a GlowFilter or DropShadowFilter that extend beyond the bounds of the object itself, you might need to increase the padding to accommodate the filters. + * @return The TweenMaxVars instance + */ + public function motionBlur(strength:Number=1, fastMode:Boolean=false, quality:int=2, padding:int=10):TweenMaxVars { + return _set("motionBlur", {strength:strength, fastMode:fastMode, quality:quality, padding:padding}, true); + } + + /** + * A common effect that designers/developers want is for a MovieClip/Sprite to orient itself in the direction of + * a Bezier path (alter its rotation). orientToBezier makes it easy. In order to alter a rotation property accurately, + * TweenLite/Max needs 4 pieces of information: + *
      + *
    1. Position property 1 (typically "x")
    2. + *
    3. Position property 2 (typically "y")
    4. + *
    5. Rotational property (typically "rotation")
    6. + *
    7. Number of degrees to add (optional - makes it easy to orient your MovieClip/Sprite properly)
    8. + *
    + * + *

    The orientToBezier property should be an Array containing one Array for each set of these values. + * For maximum flexibility, you can pass in any number of Arrays inside the container Array, one for + * each rotational property. This can be convenient when working in 3D because you can rotate on multiple axis. + * If you're doing a standard 2D x/y tween on a bezier, you can simply pass in a boolean value of true and + * TweenMax will use a typical setup, [["x", "y", "rotation", 0]]. + * Hint: Don't forget the container Array (notice the double outer brackets)

    + * + *

    To use the default value ([["x", "y", "rotation", 0]]), you can simply leave the values parameter as null.

    + */ + public function orientToBezier(values:Object=null):TweenMaxVars { + return _set("orientToBezier", (values == null) ? true : values, false); + } + + + /** + * Provides simple physics functionality for tweening a DisplayObject's x and y coordinates based on a + * combination of velocity, angle, gravity, acceleration, accelerationAngle, and/or friction. It is not intended + * to replace a full-blown physics engine and does not offer collision detection, but serves + * as a way to easily create interesting physics-based effects with the GreenSock tweening platform. Parameters + * are not intended to be dynamically updateable, but one unique convenience is that everything is reverseable. + * So if you spawn a bunch of particle tweens, for example, and throw them into a TimelineLite, you could + * simply call reverse() on the timeline to watch the particles retrace their steps right back to the beginning. + * Keep in mind that any easing equation you define for your tween will be completely ignored for these properties. + * + *

    USAGE:

    + * + import com.greensock.TweenMax; + import com.greensock.TweenMaxVars; + import com.greensock.plugins.TweenPlugin; + import com.greensock.plugins.Physics2DPlugin; + TweenPlugin.activate([Physics2DPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + + TweenMax.to(mc, 2, new TweenMaxVars().physics2D(300, -60, 400)); + + * + *

    Physics2DPlugin is a Club GreenSock membership benefit. You must have a valid membership to use this class + * without violating the terms of use. Visit http://www.greensock.com/club/ to sign up or get more details.

    + * + * @param velocity The initial velocity of the object measured in pixels per time unit (usually seconds, but for tweens where useFrames is true, it would be measured in frames). The default is zero. + * @param angle The initial angle (in degrees) at which the object is traveling. Only pertinent when a velocity is defined. For example, if the object should start out traveling at -60 degrees (towards the upper right), the angle would be -60. The default is zero. + * @param acceleration The amount of acceleration applied to the object, measured in pixels per time unit (usually seconds, but for tweens where useFrames is true, it would be measured in frames). To apply the acceleration in a specific direction that is different than the angle, use the accelerationAngle property. + * @param accelerationAngle The angle at which acceleration is applied (if any), measured in degrees. So if, for example, you want the object to accelerate towards the left side of the screen, you'd use an accelerationAngle of 180. + * @param friction A value between 0 and 1 where 0 is no friction, 0.08 is a small amount of friction, and 1 will completely prevent any movement. This is not meant to be precise or scientific in any way, but rather serves as an easy way to apply a friction-like physics effect to your tween. Generally it is best to experiment with this number a bit. Also note that friction requires more processing than physics tweens without any friction. + * @return The TweenMaxVars instance + * @see #physicsProps() + */ + public function physics2D(velocity:Number, angle:Number, acceleration:Number=0, accelerationAngle:Number=90, friction:Number=0):TweenMaxVars { + return _set("physics2D", {velocity:velocity, angle:angle, acceleration:acceleration, accelerationAngle:accelerationAngle, friction:friction}, true); + } + + /** + * Sometimes you want to tween a property (or several) but you don't have a specific end value in mind - instead, + * you'd rather describe the movement in terms of physics concepts, like velocity, acceleration, + * and/or friction. physicsProps allows you to tween any numeric property of any object based + * on these concepts. Keep in mind that any easing equation you define for your tween will be completely + * ignored for these properties. Instead, the physics parameters will determine the movement/easing. + * These parameters, by the way, are not intended to be dynamically updateable, but one unique convenience + * is that everything is reverseable. So if you create several physics-based tweens, for example, and + * throw them into a TimelineLite, you could simply call reverse() on the timeline to watch the objects + * retrace their steps right back to the beginning. Here are the parameters you can define (note that + * friction and acceleration are both completely optional): + *
      + *
    • velocity : Number - the initial velocity of the object measured in units per time + * unit (usually seconds, but for tweens where useFrames is true, it would + * be measured in frames). The default is zero.
    • + *
    • acceleration : Number [optional] - the amount of acceleration applied to the object, measured + * in units per time unit (usually seconds, but for tweens where useFrames + * is true, it would be measured in frames). The default is zero.
    • + *
    • friction : Number [optional] - a value between 0 and 1 where 0 is no friction, 0.08 is a small amount of + * friction, and 1 will completely prevent any movement. This is not meant to be precise or + * scientific in any way, but rather serves as an easy way to apply a friction-like + * physics effect to your tween. Generally it is best to experiment with this number a bit. + * Also note that friction requires more processing than physics tweens without any friction.
    • + *
    + * + *

    USAGE:

    + * + import com.greensock.TweenMax; + import com.greensock.data.TweenMaxVars; + import com.greensock.plugins.TweenPlugin; + import com.greensock.plugins.PhysicsPropsPlugin; + TweenPlugin.activate([PhysicsPropsPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + + TweenMax.to(mc, 2, new TweenMaxVars().physicsProps({ + x:{velocity:100, acceleration:200}, + y:{velocity:-200, friction:0.1} + } + )); + + * + *

    PhysicsPropsPlugin is a Club GreenSock membership benefit. You must have a valid membership to use this class + * without violating the terms of use. Visit http://www.greensock.com/club/ to sign up or get more details.

    + * + * @see #physics2D() + **/ + public function physicsProps(values:Object):TweenMaxVars { + return _set("physicsProps", values, true); + } + + /** An object with properties that correspond to the quaternion properties of the target object. For example, if your my3DObject has "orientation" and "childOrientation" properties that contain quaternions, and you'd like to tween them both, you'd do: {orientation:myTargetQuaternion1, childOrientation:myTargetQuaternion2}. Quaternions must have the following properties: x, y, z, and w. **/ + public function quaternions(values:Object):TweenMaxVars { + return _set("quaternions", values, true); + } + + /** Removes the tint of a DisplayObject over time. **/ + public function removeTint(remove:Boolean=true):TweenMaxVars { + return _set("removeTint", remove, true); + } + + /** An array of the names of properties that should be rounded to the nearest integer when tweening. For example, ["x","y"] **/ + public function roundProps(propertyNames:Array):TweenMaxVars { + return _set("roundProps", propertyNames, true); + } + + /** + * Tweens the scrollRect property of a DisplayObject. You can define any (or all) of the following properties: + * + *
      + *
    • x : Number
    • + *
    • y : Number
    • + *
    • width : Number
    • + *
    • height : Number
    • + *
    • top : Number
    • + *
    • bottom : Number
    • + *
    • left : Number
    • + *
    • right : Number
    • + *
    + *
    + * + *

    USAGE:

    + * + import com.greensock.TweenMax; + import com.greensock.data.TweenMaxVars + import com.greensock.plugins.TweenPlugin; + import com.greensock.plugins.ScrollRectPlugin; + TweenPlugin.activate([ScrollRectPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + + TweenMax.to(mc, 1, new TweenMaxVars().scrollRect({x:50, y:300, width:100, height:100})); + + **/ + public function scrollRect(props:Object):TweenMaxVars { + return _set("scrollRect", props, true); + } + + /** + * Some components require resizing with setSize() instead of standard tweens of width/height in + * order to scale properly. The SetSizePlugin accommodates this easily. You can define the width, + * height, or both. + * + *

    USAGE:

    + * + import com.greensock.TweenMax; + import com.greensock.data.TweenMaxVars; + import com.greensock.plugins.TweenPlugin; + import com.greensock.plugins.SetSizePlugin; + TweenPlugin.activate([SetSizePlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + + TweenMax.to(myComponent, 1, new TweenMaxVars().setSize(200, 30)); + + **/ + public function setSize(width:Number=NaN, height:Number=NaN):TweenMaxVars { + var values:Object = {}; + if (!isNaN(width)) { + values.width = width; + } + if (!isNaN(height)) { + values.height = height; + } + return _set("setSize", values, true); + } + + /** + * To tween any rotation property of the target object in the shortest direction, use "shortRotation" + * For example, if myObject.rotation is currently 170 degrees and you want to tween it to + * -170 degrees, a normal rotation tween would travel a total of 340 degrees in the counter-clockwise + * direction, but if you use shortRotation, it would travel 20 degrees in the clockwise direction instead. + * You can define any number of rotation properties in the shortRotation object which makes 3D tweening + * easier, like: + * + *

    + * TweenMax.to(mc, 2, new TweenMaxVars().shortRotation({rotationX:-170, rotationY:35, rotationZ:200})); + *

    + * + *

    USAGE:

    + * + import com.greensock.TweenMax; + import com.greensock.data.TweenMaxVars; + import com.greensock.plugins.TweenPlugin; + import com.greensock.plugins.ShortRotationPlugin; + TweenPlugin.activate([ShortRotationPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + + TweenMax.to(mc, 1, new TweenMaxVars().shortRotation({rotation:-170})); + + //or for a 3D tween with multiple rotation values... + TweenMax.to(mc, 1, new TweenMaxVars().shortRotation({rotationX:-170, rotationY:35, rotationZ:10})); + + **/ + public function shortRotation(values:Object):TweenMaxVars { + if (typeof(values) == "number") { + values = {rotation:values}; + } + return _set("shortRotation", values, true); + } + + + /** + * Tweens properties of an object's soundTransform property (like the volume, pan, leftToRight, etc. + * of a MovieClip/SoundChannel/NetStream). + * + *

    USAGE:

    + * + import com.greensock.TweenMax; + import com.greensock.data.TweenMaxVars; + import com.greensock.plugins.TweenPlugin; + import com.greensock.plugins.SoundTransformPlugin; + TweenPlugin.activate([SoundTransformPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + + TweenMax.to(mc, 1, new TweenMaxVars().soundTransform(0.2, 0.5)); + + * + * @param volume The volume, ranging from 0 (silent) to 1 (full volume). + * @param pan The left-to-right panning of the sound, ranging from -1 (full pan left) to 1 (full pan right). + * @param leftToLeft A value, from 0 (none) to 1 (all), specifying how much of the left input is played in the left speaker. + * @param leftToRight A value, from 0 (none) to 1 (all), specifying how much of the left input is played in the right speaker. + * @param rightToLeft A value, from 0 (none) to 1 (all), specifying how much of the right input is played in the left speaker. + * @param rightToRight A value, from 0 (none) to 1 (all), specifying how much of the right input is played in the right speaker. + * @return The TweenMaxVars instance + */ + public function soundTransform(volume:Number=1, pan:Number=0, leftToLeft:Number=1, leftToRight:Number=0, rightToLeft:Number=0, rightToRight:Number=1):TweenMaxVars { + return _set("soundTransform", {volume:volume, pan:pan, leftToLeft:leftToLeft, leftToRight:leftToRight, rightToLeft:rightToLeft, rightToRight:rightToRight}, true); + } + + /** + * Sets the stage's quality to a particular value during a tween and another value after + * the tween which can be useful for improving rendering performance in the Flash Player while things are animating. + * + *

    USAGE:

    + * + import com.greensock.TweenMax; + import com.greensock.data.TweenMaxVars; + import com.greensock.plugins.TweenPlugin; + import com.greensock.plugins.StageQualityPlugin; + import flash.display.StageQuality; + TweenPlugin.activate([StageQualityPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + + TweenMax.to(mc, 1, new TweenMaxVars().prop("x", 100).stageQuality(this.stage, StageQuality.LOW, StageQuality.HIGH)); + + * + * @param stage A reference to the stage + * @param during The stage quality that should be used during the tween + * @param after The stage quality that should be set after the tween completes + * @return The TweenMaxVars instance + */ + public function stageQuality(stage:Stage, during:String="medium", after:String=null):TweenMaxVars { + if (after == null) { + after = stage.quality; + } + return _set("stageQuality", {stage:stage, during:during, after:after}, true); + } + + /** + * Allows you to define an initial velocity at which a property (or multiple properties) will start tweening, + * as well as [optional] maximum and/or minimum end values and then it will calculate the appropriate landing + * position and plot a smooth course to it based on the easing equation you define (Quad.easeOut by default, + * as set in TweenLite). This is perfect for flick-scrolling or animating things as though they are being thrown. + * + *

    In its simplest form, you can pass just the initial velocity for each property like this: + * {x:500, y:-300}

    + * + *

    In the above example, x will animate at 500 pixels per second initially and + * y will animate at -300 pixels per second. Both will decelerate smoothly + * until they come to rest based on the tween's duration.

    + * + *

    To impose maximum and minimum boundaries on the end values, use the nested object syntax + * with the max and min special properties like this: + * {x:{velocity:500, max:1024, min:0}, y:{velocity:-300, max:720, min:0}}; + *

    + * + *

    Notice the nesting of the objects ({}). The max and min values refer + * to the range for the final resting position (coordinates in this case), NOT the velocity. + * So x would always land between 0 and 1024 in this case, and y + * would always land between 0 and 720. If you want the target object to land on a specific value + * rather than within a range, simply set max and min to identical values. + * Also notice that you must define a velocity value for each property in the object syntax.

    + * + *

    throwProps isn't just for tweening x and y coordinates. It works with any numeric + * property, so you could use it for spinning the rotation of an object as well. Or the + * scaleX/scaleY properties. Maybe the user drags to spin a wheel and + * lets go and you want it to continue increasing the rotation at that velocity, + * decelerating smoothly until it stops.

    + * + *

    ThrowPropsPlugin is a Club GreenSock membership benefit. + * You must have a valid membership to use this class without violating the terms of use. Visit + * http://www.greensock.com/club/ to sign up or get more details.

    + **/ + public function throwProps(props:Object):TweenMaxVars { + return _set("throwProps", props, true); + } + + /** + * To change a DisplayObject's tint, set this to the hex value of the color you'd like the DisplayObject + * to end up at (or begin at if you're using TweenMax.from()). An example hex value would be 0xFF0000. + * If you'd like to remove the tint from a DisplayObject, use the removeTint special property. + * @see #removeTint() + * @see #colorMatrixFilter() + * @see #colorTransform() + **/ + public function tint(color:uint):TweenMaxVars { + return _set("tint", color, true); + } + + /** + * Normally, all transformations (scale, rotation, and position) are based on the DisplayObject's registration + * point (most often its upper left corner), but TransformAroundCenter allows you to make the transformations + * occur around the DisplayObject's center. + * + *

    If you define an x or y value in the transformAroundCenter object, it will correspond to the center which + * makes it easy to position (as opposed to having to figure out where the original registration point + * should tween to). If you prefer to define the x/y in relation to the original registration point, do so outside + * the transformAroundCenter object, like:

    + * + *

    + * TweenMax.to(mc, 3, new TweenMaxVars().prop("x", 50).prop("y", 40).transformAroundCenter({scale:0.5, rotation:30})); + *

    + * + *

    TransformAroundCenterPlugin is a Club GreenSock membership benefit. + * You must have a valid membership to use this class without violating the terms of use. Visit + * http://www.greensock.com/club/ to sign up or get more details.

    + * + *

    USAGE:

    + * + import com.greensock.TweenMax; + import com.greensock.data.TweenMaxVars; + import com.greensock.plugins.TweenPlugin; + import com.greensock.plugins.TransformAroundCenterPlugin; + TweenPlugin.activate([TransformAroundCenterPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + + TweenMax.to(mc, 1, new TweenMaxVars().transformAroundCenter({scale:1.5, rotation:150})); + + * @see #transformAroundPoint() + **/ + public function transformAroundCenter(props:Object):TweenMaxVars { + return _set("transformAroundCenter", props, true); + } + + /** + * Normally, all transformations (scale, rotation, and position) are based on the DisplayObject's registration + * point (most often its upper left corner), but TransformAroundPoint allows you to define ANY point around which + * transformations will occur during the tween. For example, you may have a dynamically-loaded image that you + * want to scale from its center or rotate around a particular point on the stage. + * + *

    If you define an x or y value in the transformAroundPoint object, it will correspond to the custom registration + * point which makes it easy to position (as opposed to having to figure out where the original registration point + * should tween to). If you prefer to define the x/y in relation to the original registration point, do so outside + * the transformAroundPoint object, like:

    + * + *

    + * TweenMax.to(mc, 3, new TweenMaxVars().prop("x", 50).prop("y", 40).transformAroundPoint(new Point(200, 300), {scale:0.5, rotation:30})); + *

    + * + *

    TransformAroundPointPlugin is a Club GreenSock membership benefit. + * You must have a valid membership to use this class without violating the terms of use. Visit + * http://www.greensock.com/club/ to sign up or get more details.

    + * + *

    USAGE:

    + * + import com.greensock.TweenMax; + import com.greensock.data.TweenMaxVars; + import com.greensock.plugins.TweenPlugin; + import com.greensock.plugins.TransformAroundPointPlugin; + TweenPlugin.activate([TransformAroundPointPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + + TweenMax.to(mc, 1, new TweenMaxVars().transformAroundPoint(new Point(100, 300), {scaleX:2, scaleY:1.5, rotation:150})); + + * @see #transformAroundCenter() + **/ + public function transformAroundPoint(point:Point, props:Object):TweenMaxVars { + props.point = point; + return _set("transformAroundPoint", props, true); + } + + /** + * transformMatrix tweens a DisplayObject's transform.matrix values directly either using + * the standard matrix properties (a, b, c, d, tx, and ty) or common properties + * like x, y, scaleX, scaleY, skewX, skewY, rotation and even shortRotation. + * To skew without adjusting scale visually, use skewX2 and skewY2 instead of skewX and skewY. + * + * + *

    transformMatrix tween will affect all of the DisplayObject's transform properties, so do not use + * it in conjunction with regular x/y/scaleX/scaleY/rotation tweens concurrently.

    + * + *

    USAGE:

    + * + import com.greensock.TweenMax; + import com.greensock.data.TweenMaxVars; + import com.greensock.plugins.TweenPlugin; + import com.greensock.plugins.TransformMatrixPlugin; + TweenPlugin.activate([TransformMatrixPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + + TweenMax.to(mc, 1, new TweenMaxVars().transformMatrix({x:50, y:300, scaleX:2, scaleY:2})); + + //-OR- + + TweenMax.to(mc, 1, new TweenMaxVars().transformMatrix({tx:50, ty:300, a:2, d:2})); + + **/ + public function transformMatrix(properties:Object):TweenMaxVars { + return _set("transformMatrix", properties, true); + } + + /** Sets a DisplayObject's "visible" property at the end of the tween. **/ + public function visible(value:Boolean):TweenMaxVars { + return _set("visible", value, true); + } + + /** Changes the volume of any object that has a soundTransform property (MovieClip, SoundChannel, NetStream, etc.) **/ + public function volume(volume:Number):TweenMaxVars { + return _set("volume", volume, true); + } + + +//---- GETTERS / SETTERS ------------------------------------------------------------------------------------------------------------- + + /** The generic object populated by all of the method calls in the TweenMaxVars instance. This is the raw data that gets passed to the tween. **/ + public function get vars():Object { + return _vars; + } + + /** @private **/ + public function get _isGSVars():Boolean { + return true; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/easing/.DS_Store b/FairyGUI-as3/src/com/greensock/easing/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0Back is a convenience class that congregates the 3 types of Back eases (BackIn, BackOut, + * and BackInOut) as static properties so that they can be referenced using the standard synatax, like + * Back.easeIn, Back.easeOut, and Back.easeInOut. + * + *

    You can configure the amount of overshoot using the config() method, like + * TweenLite.to(obj, 1, {x:100, ease:Back.easeOut.config(3)});

    + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class Back { + + /** Eases out with an overshoot. **/ + public static var easeOut:BackOut = new BackOut(); + + /** Eases in with an overshoot, initially dipping below the starting value before accelerating towards the end. **/ + public static var easeIn:BackIn = new BackIn(); + + /** Eases in and out with an overshoot, initially dipping below the starting value before accelerating towards the end, overshooting it and easing out. **/ + public static var easeInOut:BackInOut = new BackInOut(); + } +} diff --git a/FairyGUI-as3/src/com/greensock/easing/BackIn.as b/FairyGUI-as3/src/com/greensock/easing/BackIn.as new file mode 100644 index 0000000..3e1cea5 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/BackIn.as @@ -0,0 +1,47 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * @private + * Eases in with an overshoot, initially dipping below the starting value before accelerating towards the end. + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class BackIn extends Ease { + + /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ + public static var ease:BackIn = new BackIn(); + + /** + * Constructor + * + * @param overshoot affects the degree or strength of the overshoot (default: 1.70158) + */ + public function BackIn(overshoot:Number=1.70158) { + _p1 = overshoot; + } + + /** @inheritDoc **/ + override public function getRatio(p:Number):Number { + return p * p * ((_p1 + 1) * p - _p1); + } + + /** + * Permits customization of the ease with various parameters. + * + * @param overshoot affects the degree or strength of the overshoot (default: 1.70158) + * @return new BackIn instance that is configured according to the parameters provided + */ + public function config(overshoot:Number=1.70158):BackIn { + return new BackIn(overshoot); + } + + } + +} diff --git a/FairyGUI-as3/src/com/greensock/easing/BackInOut.as b/FairyGUI-as3/src/com/greensock/easing/BackInOut.as new file mode 100644 index 0000000..5bd0aba --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/BackInOut.as @@ -0,0 +1,48 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * @private + * Eases in and out with an overshoot, initially dipping below the starting value before accelerating towards the end, overshooting it and easing out. + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class BackInOut extends Ease { + + /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ + public static var ease:BackInOut = new BackInOut(); + + /** + * Constructor + * + * @param overshoot affects the degree or strength of the overshoot (default: 1.70158) + */ + public function BackInOut(overshoot:Number=1.70158) { + _p1 = overshoot; + _p2 = _p1 * 1.525; + } + + /** @inheritDoc **/ + override public function getRatio(p:Number):Number { + return ((p*=2) < 1) ? 0.5 * p * p * ((_p2 + 1) * p - _p2) : 0.5 * ((p -= 2) * p * ((_p2 + 1) * p + _p2) + 2); + } + + /** + * Permits customization of the ease with various parameters. + * + * @param overshoot affects the degree or strength of the overshoot (default: 1.70158) + * @return new BackInOut instance that is configured according to the parameters provided + */ + public function config(overshoot:Number=1.70158):BackInOut { + return new BackInOut(overshoot); + } + + } + +} diff --git a/FairyGUI-as3/src/com/greensock/easing/BackOut.as b/FairyGUI-as3/src/com/greensock/easing/BackOut.as new file mode 100644 index 0000000..b701b95 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/BackOut.as @@ -0,0 +1,47 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * @private + * Eases out with an overshoot. + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class BackOut extends Ease { + + /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ + public static var ease:BackOut = new BackOut(); + + /** + * Constructor + * + * @param overshoot affects the degree or strength of the overshoot (default: 1.70158) + */ + public function BackOut(overshoot:Number=1.70158) { + _p1 = overshoot; + } + + /** @inheritDoc **/ + override public function getRatio(p:Number):Number { + return ((p = p - 1) * p * ((_p1 + 1) * p + _p1) + 1); + } + + /** + * Permits customization of the ease with various parameters. + * + * @param overshoot affects the degree or strength of the overshoot (default: 1.70158) + * @return new BackOut instance that is configured according to the parameters provided + */ + public function config(overshoot:Number=1.70158):BackOut { + return new BackOut(overshoot); + } + + } + +} diff --git a/FairyGUI-as3/src/com/greensock/easing/Bounce.as b/FairyGUI-as3/src/com/greensock/easing/Bounce.as new file mode 100644 index 0000000..4cce5a2 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/Bounce.as @@ -0,0 +1,29 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * Eases, bouncing either at the beginning (easeIn), the end (easeOut), or both (easeInOut). + * Bounce is a convenience class that congregates the 3 types of Bounce eases (BounceIn, BounceOut, + * and BounceInOut) as static properties so that they can be referenced using the standard synatax, like + * Bounce.easeIn, Bounce.easeOut, and Bounce.easeInOut. + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class Bounce { + + /** Eases out, bouncing at the end. **/ + public static var easeOut:BounceOut = new BounceOut(); + + /** Bounces slightly at first, then to a greater degree over time, accelerating as the ease progresses. **/ + public static var easeIn:BounceIn = new BounceIn(); + + /** Bounces in increasing degree towards the center of the ease, then eases out, bouncing to the end (decreasing in degree at the end). **/ + public static var easeInOut:BounceInOut = new BounceInOut(); + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/easing/BounceIn.as b/FairyGUI-as3/src/com/greensock/easing/BounceIn.as new file mode 100644 index 0000000..892d296 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/BounceIn.as @@ -0,0 +1,36 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * @private + * Bounces slightly at first, then to a greater degree over time, accelerating as the ease progresses. + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class BounceIn extends Ease { + + /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ + public static var ease:BounceIn = new BounceIn(); + + /** @inheritDoc **/ + override public function getRatio(p:Number):Number { + if ((p = 1 - p) < 1 / 2.75) { + return 1 - (7.5625 * p * p); + } else if (p < 2 / 2.75) { + return 1 - (7.5625 * (p -= 1.5 / 2.75) * p + .75); + } else if (p < 2.5 / 2.75) { + return 1 - (7.5625 * (p -= 2.25 / 2.75) * p + .9375); + } else { + return 1 - (7.5625 * (p -= 2.625 / 2.75) * p + .984375); + } + } + + } + +} diff --git a/FairyGUI-as3/src/com/greensock/easing/BounceInOut.as b/FairyGUI-as3/src/com/greensock/easing/BounceInOut.as new file mode 100644 index 0000000..a5cef9d --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/BounceInOut.as @@ -0,0 +1,44 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * @private + * Bounces in increasing degree towards the center of the ease, then eases out, bouncing to the end (decreasing in degree at the end). + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class BounceInOut extends Ease { + + /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ + public static var ease:BounceInOut = new BounceInOut(); + + /** @inheritDoc **/ + override public function getRatio(p:Number):Number { + var invert:Boolean; + if (p < 0.5) { + invert = true; + p = 1 - (p * 2); + } else { + p = (p * 2) - 1; + } + if (p < 1 / 2.75) { + p = 7.5625 * p * p; + } else if (p < 2 / 2.75) { + p = 7.5625 * (p -= 1.5 / 2.75) * p + .75; + } else if (p < 2.5 / 2.75) { + p = 7.5625 * (p -= 2.25 / 2.75) * p + .9375; + } else { + p = 7.5625 * (p -= 2.625 / 2.75) * p + .984375; + } + return invert ? (1 - p) * 0.5 : p * 0.5 + 0.5; + } + + } + +} diff --git a/FairyGUI-as3/src/com/greensock/easing/BounceOut.as b/FairyGUI-as3/src/com/greensock/easing/BounceOut.as new file mode 100644 index 0000000..ef003ad --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/BounceOut.as @@ -0,0 +1,36 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * @private + * Eases out, bouncing at the end. + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class BounceOut extends Ease { + + /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ + public static var ease:BounceOut = new BounceOut(); + + /** @inheritDoc **/ + override public function getRatio(p:Number):Number { + if (p < 1 / 2.75) { + return 7.5625 * p * p; + } else if (p < 2 / 2.75) { + return 7.5625 * (p -= 1.5 / 2.75) * p + .75; + } else if (p < 2.5 / 2.75) { + return 7.5625 * (p -= 2.25 / 2.75) * p + .9375; + } else { + return 7.5625 * (p -= 2.625 / 2.75) * p + .984375; + } + } + + } + +} diff --git a/FairyGUI-as3/src/com/greensock/easing/Circ.as b/FairyGUI-as3/src/com/greensock/easing/Circ.as new file mode 100644 index 0000000..b36909e --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/Circ.as @@ -0,0 +1,29 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * Eases with an abrupt change in velocity either at the beginning (easeIn), the end (easeOut), or both (easeInOut). + * Circ is a convenience class that congregates the 3 types of Circ eases (CircIn, CircOut, + * and CircInOut) as static properties so that they can be referenced using the standard synatax, like + * Circ.easeIn, Circ.easeOut, and Circ.easeInOut. + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class Circ { + + /** Eases out with an abrupt change in velocity. **/ + public static var easeOut:CircOut = new CircOut(); + + /** Eases in with an abrupt change in velocity. **/ + public static var easeIn:CircIn = new CircIn(); + + /** Eases in and out with an abrupt change in velocity. **/ + public static var easeInOut:CircInOut = new CircInOut(); + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/easing/CircIn.as b/FairyGUI-as3/src/com/greensock/easing/CircIn.as new file mode 100644 index 0000000..21bf640 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/CircIn.as @@ -0,0 +1,27 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * @private + * Eases in with an abrupt change in velocity. + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class CircIn extends Ease { + + /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ + public static var ease:CircIn = new CircIn(); + + /** @inheritDoc **/ + override public function getRatio(p:Number):Number { + return -(Math.sqrt(1 - (p * p)) - 1); + } + + } +} diff --git a/FairyGUI-as3/src/com/greensock/easing/CircInOut.as b/FairyGUI-as3/src/com/greensock/easing/CircInOut.as new file mode 100644 index 0000000..72b44fe --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/CircInOut.as @@ -0,0 +1,28 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * @private + * Eases in and out with an abrupt change in velocity. + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class CircInOut extends Ease { + + /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ + public static var ease:CircInOut = new CircInOut(); + + /** @inheritDoc **/ + override public function getRatio(p:Number):Number { + return ((p*=2) < 1) ? -0.5 * (Math.sqrt(1 - p * p) - 1) : 0.5 * (Math.sqrt(1 - (p -= 2) * p) + 1); + } + + } + +} diff --git a/FairyGUI-as3/src/com/greensock/easing/CircOut.as b/FairyGUI-as3/src/com/greensock/easing/CircOut.as new file mode 100644 index 0000000..9404d81 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/CircOut.as @@ -0,0 +1,28 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * @private + * Eases out with an abrupt change in velocity. + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class CircOut extends Ease { + + /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ + public static var ease:CircOut = new CircOut(); + + /** @inheritDoc **/ + override public function getRatio(p:Number):Number { + return Math.sqrt(1 - (p = p - 1) * p); + } + + } + +} diff --git a/FairyGUI-as3/src/com/greensock/easing/Cubic.as b/FairyGUI-as3/src/com/greensock/easing/Cubic.as new file mode 100644 index 0000000..d35a7f4 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/Cubic.as @@ -0,0 +1,38 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * Provides an easeIn, easeOut, and easeInOut with a power (or strength) + * of 2 which is identical to the Power2 ease. The more power, the more + * exaggerated the easing effect. Using a numeric approach like Power2 instead of Cubic makes experimenting + * easier and the code reads more intuitively. + * + *

    This is one of the eases that is natively accelerated in TweenLite and TweenMax. All of the + * "Power" eases and their counterparts (Linear (0), Quad (1), Cubic (2), Quart (3), Quint (4), and Strong (4)) are + * accelerated.

    + * + *

    Example usage:

    + *

    + * TweenLite.to(obj, 1, {x:100, ease:Cubic.easeOut}); + *

    + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class Cubic { + + /** Eases out with a power of 2 **/ + public static var easeOut:Ease = new Ease(null,null,1,2); + + /** Eases in with a power of 2 **/ + public static var easeIn:Ease = new Ease(null,null,2,2); + + /** eases in and then out with a power of 2 **/ + public static var easeInOut:Ease = new Ease(null,null,3,2); + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/easing/Ease.as b/FairyGUI-as3/src/com/greensock/easing/Ease.as new file mode 100644 index 0000000..bcb5db5 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/Ease.as @@ -0,0 +1,113 @@ +/** + * VERSION: 0.5 + * DATE: 2012-01-31 + * AS3 (AS2 version is also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * Base class for all GreenSock easing equations. In its simplest form, an Ease + * is responsible for translating linear time (typically represented as a number + * between 0 and 1 where 0 is the beginning, 0.5 is halfway complete, and 1 is + * the end) into a value that has a different rate of change but still starts + * at 0 and ends at 1. In the GreenSock platform, eases are used to give + * tweens/animations the look and feel that the animator desires. For example, + * a ball rolling to a stop would decelerate over time (easeOut) rather than using + * a linear velocity. An Elastic ease could be used to make an object appear as + * though it is loosely attached somewhere and is snapping into place with loose + * (or tight) tension. + * + *

    All Ease instances have a getRatio() method that is responsible + * for the translation of the progress ratio which the tween typically feeds in. + * End users almost never need to directly feed any values to or get any values from + * an Ease instance - the tweens will do that internally.

    + * + *

    The base Ease class handles most of the common power-based easeIn/easeOut/eaesInOut + * calculations (like Linear, Quad, Cubic, Quart, Quint, and Strong) internally. + * You can define a separate function that uses what was considered the 4 standard + * easing parameters by Adobe and many others (time, start, change, duration) and + * Ease will serve as a proxy in order to maximize backwards compatibility and usability. + * For example, if you have a custom method that you created like this:

    + * +function myEase(t:Number, s:Number, c:Number, d:Number):Number { + return s+(t=t/d)*t*t*t*c; +} + + * You could still use that by wrapping Ease around it like this: + * +import com.greensock.~~; +import com.greensock.easing.~~; + +TweenLite.to(mc, 5, {x:600, ease:new Ease(myEase)}); + + *

    In the above example, the anytime the Ease's getRatio() method is called, it + * would feed the first parameter as a ratio between 0 and 1 and the rest of the 3 parameters + * would always be 0, 1, 1. This is all done transparently by TweenLite/TweenMax, so you + * really shouldn't need to worry about this.

    + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + public class Ease { + /** @private **/ + protected static var _baseParams:Array = [0, 0, 1, 1]; + /** @private **/ + protected var _func:Function; + /** @private **/ + protected var _params:Array; + /** @private **/ + protected var _p1:Number; + /** @private **/ + protected var _p2:Number; + /** @private **/ + protected var _p3:Number; + /** @private integer indicating the type of ease where 1 is easeOut, 2 is easeIn, 3 is easeInOut, and 0 is none of these. **/ + public var _type:int; + /** @private power of the ease where Linear is 0, Quad is 1, Cubic is 2, Quart is 3, Quint (and Strong) is 4, etc. **/ + public var _power:int; + /** @private if true, TweenLite/Max will call setRatio() at the end and beginning of the tween instead of assuming it's 1/0. This is only useful in very rare situations like in a SlowMo ease that uses endcapMode=true which will have a 0 ratio at the end of the tween. **/ + public var _calcEnd:Boolean; + + /** + * Constructor + * + * @param func Function (if any) that should be proxied. This is completely optional and is in fact rarely used except when you have your own custom ease function that follows the standard ease parameter pattern like time, start, change, duration. + * @param extraParams If any extra parameters beyond the standard 4 (time, start, change, duration) need to be fed to the func function, define them as an array here. For example, the old Elastic.easeOut accepts 2 extra parameters in its standard equation (although the newer GreenSock version uses the more modern config() method for configuring the ease and doesn't require any extraPrams here) + * @param type Integer indicating the type of ease where 1 is easeOut, 2 is easeIn, 3 is easeInOut, and 0 is none of these. + * @param power Power of the ease where Linear is 0, Quad is 1, Cubic is 2, Quart is 3, Quint (and Strong) is 4, etc. + */ + public function Ease(func:Function=null, extraParams:Array=null, type:Number=0, power:Number=0) { + _func = func; + _params = (extraParams) ? _baseParams.concat(extraParams) : _baseParams; + _type = type; + _power = power; + } + + /** + * Translates the tween's progress ratio into the corresponding ease ratio. This is the heart of the Ease, where it does all its work. + * + * @param p progress ratio (a value between 0 and 1 indicating the progress of the tween/ease) + * @return translated number + */ + public function getRatio(p:Number):Number { + if (_func != null) { + _params[0] = p; + return _func.apply(null, _params); + } else { + var r:Number = (_type == 1) ? 1 - p : (_type == 2) ? p : (p < 0.5) ? p * 2 : (1 - p) * 2; + if (_power == 1) { + r *= r; + } else if (_power == 2) { + r *= r * r; + } else if (_power == 3) { + r *= r * r * r; + } else if (_power == 4) { + r *= r * r * r * r; + } + return (_type == 1) ? 1 - r : (_type == 2) ? r : (p < 0.5) ? r / 2 : 1 - (r / 2); + } + } + + } +} diff --git a/FairyGUI-as3/src/com/greensock/easing/EaseLookup.as b/FairyGUI-as3/src/com/greensock/easing/EaseLookup.as new file mode 100644 index 0000000..3852453 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/EaseLookup.as @@ -0,0 +1,73 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * EaseLookup enables you to find the easing function associated with a particular name (String), + * like "strongEaseOut" which can be useful when loading in XML data that comes in as Strings but + * needs to be translated to native function references. + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class EaseLookup { + /** @private **/ + private static var _lookup:Object; + + /** + * Finds the easing function associated with a particular name (String), like "strongEaseOut". This can be useful when + * loading in XML data that comes in as Strings but needs to be translated to native function references. You can pass in + * the name with or without the period, and it is case insensitive, so any of the following will find the Strong.easeOut function: + * + *

    EaseLookup.find("Strong.easeOut")

    + *

    EaseLookup.find("strongEaseOut")

    + *

    EaseLookup.find("strongeaseout")

    + * + *

    You can translate strings directly when tweening, like this:

    + * + *

    + * TweenLite.to(mc, 1, {x:100, ease:EaseLookup.find(myString)}); + *

    + * + * @param name The name of the easing function, with or without the period and case insensitive (i.e. "Strong.easeOut" or "strongEaseOut") + * @return The easing function associated with the name + */ + public static function find(name:String):Ease { + if (_lookup == null) { + _lookup = {}; + + _addInOut(Back, ["back"]); + _addInOut(Bounce, ["bounce"]); + _addInOut(Circ, ["circ", "circular"]); + _addInOut(Cubic, ["cubic","power2"]); + _addInOut(Elastic, ["elastic"]); + _addInOut(Expo, ["expo", "exponential"]); + _addInOut(Power0, ["linear","power0"]); + _addInOut(Quad, ["quad", "quadratic","power1"]); + _addInOut(Quart, ["quart","quartic","power3"]); + _addInOut(Quint, ["quint", "quintic", "strong","power4"]); + _addInOut(Sine, ["sine"]); + + _lookup["linear.easenone"] = _lookup["lineareasenone"] = Linear.easeNone; + _lookup.slowmo = _lookup["slowmo.ease"] = SlowMo.ease; + } + return _lookup[name.toLowerCase()]; + } + + /** @private **/ + private static function _addInOut(easeClass:Class, names:Array):void { + var name:String, i:int = names.length; + while (--i > -1) { + name = names[i].toLowerCase(); + _lookup[name + ".easein"] = _lookup[name + "easein"] = easeClass.easeIn; + _lookup[name + ".easeout"] = _lookup[name + "easeout"] = easeClass.easeOut; + _lookup[name + ".easeinout"] = _lookup[name + "easeinout"] = easeClass.easeInOut; + } + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/easing/Elastic.as b/FairyGUI-as3/src/com/greensock/easing/Elastic.as new file mode 100644 index 0000000..5fb9732 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/Elastic.as @@ -0,0 +1,32 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * Eases with an elastic effect either at the beginning (easeIn), the end (easeOut), or both (easeInOut). + * Elastic is a convenience class that congregates the 3 types of Elastic eases (ElasticIn, ElasticOut, + * and ElasticInOut) as static properties so that they can be referenced using the standard synatax, like + * Elastic.easeIn, Elastic.easeOut, and Elastic.easeInOut. + * + *

    You can configure the amplitude and period of the sine wave using the config() method, like + * TweenLite.to(obj, 1, {x:100, ease:Elastic.easeOut.config(0.5, 2)});

    + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class Elastic { + + /** Eases using a sine wave that starts fast and then decelerates over time. **/ + public static var easeOut:ElasticOut = new ElasticOut(); + + /** Eases using a sine wave that starts slowly and then accelerates over time **/ + public static var easeIn:ElasticIn = new ElasticIn(); + + /** Eases using a sine wave that starts slowly, then accelerates and then decelerates over time. **/ + public static var easeInOut:ElasticInOut = new ElasticInOut(); + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/easing/ElasticIn.as b/FairyGUI-as3/src/com/greensock/easing/ElasticIn.as new file mode 100644 index 0000000..4f00cd0 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/ElasticIn.as @@ -0,0 +1,54 @@ +/** + * VERSION: 1.1 + * DATE: 2012-07-27 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * @private + * Eases using a sine wave that starts slowly and then accelerates over time. + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class ElasticIn extends Ease { + + /** @private **/ + private static const _2PI:Number = Math.PI * 2; + + /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ + public static var ease:ElasticIn = new ElasticIn(); + + /** + * Constructor + * + * @param amplitude the amplitude of the sine wave (how exaggerated its movement is). Default is 1. + * @param period the period of the sine wave (how far apart its waves are spaced, like its frequency where a lower value produces more cycles). Default is 0.3. + */ + public function ElasticIn(amplitude:Number=1, period:Number=0.3) { + _p1 = amplitude || 1; + _p2 = period || 0.3; + _p3 = _p2 / _2PI * (Math.asin(1 / _p1) || 0); + } + + /** @inheritDoc **/ + override public function getRatio(p:Number):Number { + return -(_p1 * Math.pow(2, 10 * (p -= 1)) * Math.sin( (p - _p3) * _2PI / _p2 )); + } + + /** + * Permits customization of the ease with various parameters. + * + * @param amplitude the amplitude of the sine wave (how exaggerated its movement is). Default is 1. + * @param period the period of the sine wave (how far apart its waves are spaced, like its frequency where a lower value produces more cycles). Default is 0.3. + * @return new ElasticIn instance that is configured according to the parameters provided + */ + public function config(amplitude:Number=1, period:Number=0.3):ElasticIn { + return new ElasticIn(amplitude, period); + } + + } + +} diff --git a/FairyGUI-as3/src/com/greensock/easing/ElasticInOut.as b/FairyGUI-as3/src/com/greensock/easing/ElasticInOut.as new file mode 100644 index 0000000..d057de3 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/ElasticInOut.as @@ -0,0 +1,54 @@ +/** + * VERSION: 1.1 + * DATE: 2012-07-27 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * @private + * Eases using a sine wave that starts slowly, then accelerates and then decelerates over time. + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class ElasticInOut extends Ease { + + /** @private **/ + private static const _2PI:Number = Math.PI * 2; + + /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ + public static var ease:ElasticInOut = new ElasticInOut(); + + /** + * Constructor + * + * @param amplitude the amplitude of the sine wave (how exaggerated its movement is). Default is 0. + * @param period the period of the sine wave (how far apart its waves are spaced, like its frequency). Default is 0. + */ + public function ElasticInOut(amplitude:Number=1, period:Number=0.3) { + _p1 = amplitude || 1; + _p2 = period || 0.45; + _p3 = _p2 / _2PI * (Math.asin(1 / _p1) || 0); + } + + /** @inheritDoc **/ + override public function getRatio(p:Number):Number { + return ((p*=2) < 1) ? -.5 * (_p1 * Math.pow(2, 10 * (p -= 1)) * Math.sin( (p - _p3) * _2PI / _p2)) : _p1 * Math.pow(2, -10 *(p -= 1)) * Math.sin( (p - _p3) * _2PI / _p2 ) *.5 + 1; + } + + /** + * Permits customization of the ease with various parameters. + * + * @param amplitude the amplitude of the sine wave (how exaggerated its movement is). Default is 1. + * @param period the period of the sine wave (how far apart its waves are spaced, like its frequency where a lower value produces more cycles). Default is 0.3. + * @return new ElasticInOut instance that is configured according to the parameters provided + */ + public function config(amplitude:Number=1, period:Number=0.3):ElasticInOut { + return new ElasticInOut(amplitude, period); + } + + } + +} diff --git a/FairyGUI-as3/src/com/greensock/easing/ElasticOut.as b/FairyGUI-as3/src/com/greensock/easing/ElasticOut.as new file mode 100644 index 0000000..a1ab077 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/ElasticOut.as @@ -0,0 +1,54 @@ +/** + * VERSION: 1.1 + * DATE: 2012-07-27 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * @private + * Eases using a sine wave that starts fast and then decelerates over time. + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class ElasticOut extends Ease { + + /** @private **/ + private static const _2PI:Number = Math.PI * 2; + + /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ + public static var ease:ElasticOut = new ElasticOut(); + + /** + * Constructor + * + * @param amplitude the amplitude of the sine wave (how exaggerated its movement is). Default is 1. + * @param period the period of the sine wave (how far apart its waves are spaced, like its frequency where a lower value produces more cycles). Default is 0.3. + */ + public function ElasticOut(amplitude:Number=1, period:Number=0.3) { + _p1 = amplitude || 1; + _p2 = period || 0.3; + _p3 = _p2 / _2PI * (Math.asin(1 / _p1) || 0); + } + + /** @inheritDoc **/ + override public function getRatio(p:Number):Number { + return _p1 * Math.pow(2, -10 * p) * Math.sin( (p - _p3) * _2PI / _p2 ) + 1; + } + + /** + * Permits customization of the ease with various parameters. + * + * @param amplitude the amplitude of the sine wave (how exaggerated its movement is). Default is 1. + * @param period the period of the sine wave (how far apart its waves are spaced, like its frequency where a lower value produces more cycles). Default is 0.3. + * @return new ElasticOut instance that is configured according to the parameters provided + */ + public function config(amplitude:Number=1, period:Number=0.3):ElasticOut { + return new ElasticOut(amplitude, period); + } + + } + +} diff --git a/FairyGUI-as3/src/com/greensock/easing/Expo.as b/FairyGUI-as3/src/com/greensock/easing/Expo.as new file mode 100644 index 0000000..ac2b468 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/Expo.as @@ -0,0 +1,41 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * Eases in a strong fashion either at the beginning (easeIn), the end (easeOut), or both (easeInOut). + * Expo is a convenience class that congregates the 3 types of Expo eases (ExpoIn, ExpoOut, + * and ExpoInOut) as static properties so that they can be referenced using the standard synatax, like + * Expo.easeIn, Expo.easeOut, and Expo.easeInOut. + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class Expo { + + /** + * Eases out in a strong fashion starting out fast and then decelerating. Produces an effect similar to the + * popular "Zeno's paradox" style of scripted easing, where each interval of time decreases the remaining + * distance by a constant proportion. + **/ + public static var easeOut:ExpoOut = new ExpoOut(); + + /** + * Eases in a strong fashion starting out slowly and then accelerating. Produces an effect similar to the + * popular "Zeno's paradox" style of scripted easing, where each interval of time decreases the remaining + * distance by a constant proportion. + **/ + public static var easeIn:ExpoIn = new ExpoIn(); + + /** + * Eases in a strong fashion starting out slowly and then accelerating, then decelerating at the end. + * Produces an effect similar to the popular "Zeno's paradox" style of scripted easing, where each + * interval of time decreases the remaining distance by a constant proportion. + **/ + public static var easeInOut:ExpoInOut = new ExpoInOut(); + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/easing/ExpoIn.as b/FairyGUI-as3/src/com/greensock/easing/ExpoIn.as new file mode 100644 index 0000000..c56a4e6 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/ExpoIn.as @@ -0,0 +1,30 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * @private + * Eases in a strong fashion starting out slowly and then accelerating. Produces an effect similar to the + * popular "Zeno's paradox" style of scripted easing, where each interval of time decreases the remaining + * distance by a constant proportion. + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class ExpoIn extends Ease { + + /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ + public static var ease:ExpoIn = new ExpoIn(); + + /** @inheritDoc **/ + override public function getRatio(p:Number):Number { + return Math.pow(2, 10 * (p - 1)) - 0.001; + } + + } + +} diff --git a/FairyGUI-as3/src/com/greensock/easing/ExpoInOut.as b/FairyGUI-as3/src/com/greensock/easing/ExpoInOut.as new file mode 100644 index 0000000..64dabfc --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/ExpoInOut.as @@ -0,0 +1,30 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * @private + * Eases in a strong fashion starting out slowly and then accelerating, then decelerating at the end. + * Produces an effect similar to the popular "Zeno's paradox" style of scripted easing, where each + * interval of time decreases the remaining distance by a constant proportion. + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class ExpoInOut extends Ease { + + /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ + public static var ease:ExpoInOut = new ExpoInOut(); + + /** @inheritDoc **/ + override public function getRatio(p:Number):Number { + return ((p*=2) < 1) ? 0.5 * Math.pow(2, 10 * (p - 1)) : 0.5 * (2 - Math.pow(2, -10 * (p - 1))); + } + + } + +} diff --git a/FairyGUI-as3/src/com/greensock/easing/ExpoOut.as b/FairyGUI-as3/src/com/greensock/easing/ExpoOut.as new file mode 100644 index 0000000..b8ea588 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/ExpoOut.as @@ -0,0 +1,30 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * @private + * Eases out in a strong fashion starting out fast and then decelerating. Produces an effect similar to the + * popular "Zeno's paradox" style of scripted easing, where each interval of time decreases the remaining + * distance by a constant proportion. + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class ExpoOut extends Ease { + + /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ + public static var ease:ExpoOut = new ExpoOut(); + + /** @inheritDoc **/ + override public function getRatio(p:Number):Number { + return 1 - Math.pow(2, -10 * p); + } + + } + +} diff --git a/FairyGUI-as3/src/com/greensock/easing/Linear.as b/FairyGUI-as3/src/com/greensock/easing/Linear.as new file mode 100644 index 0000000..95894f1 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/Linear.as @@ -0,0 +1,47 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * Linear ease with no acceleration or deceleration. Linear is identical to Power0. + * + *

    This is one of the eases that is natively accelerated in TweenLite and TweenMax. All of the + * "Power" eases and their counterparts (Linear (0), Quad (1), Cubic (2), Quart (3), Quint (4), and Strong (4)) are + * accelerated.

    + * + *

    Example usage:

    + *

    + * TweenLite.to(obj, 1, {x:100, ease:Linear.easeNone}); + *

    + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class Linear extends Ease { + + /** Linear ease with no acceleration or deceleration (for backwards compatibility) **/ + public static var easeNone:Linear = new Linear(); + + /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ + public static var ease:Linear = easeNone; + + /** Linear ease with no acceleration or deceleration **/ + public static var easeIn:Linear = easeNone; + + /** Linear ease with no acceleration or deceleration **/ + public static var easeOut:Linear = easeNone; + + /** Linear ease with no acceleration or deceleration **/ + public static var easeInOut:Linear = easeNone; + + /** Constructor **/ + public function Linear() { + super(null, null, 1, 0); + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/easing/Power0.as b/FairyGUI-as3/src/com/greensock/easing/Power0.as new file mode 100644 index 0000000..1a47a22 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/Power0.as @@ -0,0 +1,40 @@ +/** + * VERSION: 1.0 + * DATE: 2013-03-13 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * Provides an easeIn, easeOut, and easeInOut with a power (or strength) + * of 0 which is identical to Linear but with a more intuitive name. The more power, the more + * exaggerated the easing effect. So Power0 actually has no power at all, providing a linear transition. + * + *

    This is one of the eases that is natively accelerated in TweenLite and TweenMax. All of the + * "Power" eases and their counterparts (Linear (0), Quad (1), Cubic (2), Quart (3), Quint (4), and Strong (4)) are + * accelerated.

    + * + *

    Example usage:

    + *

    + * TweenLite.to(obj, 1, {x:100, ease:Power0.easeOut}); + *

    + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class Power0 { + + /** Eases out with a power of 0 (linear). Power0.easeIn, Power0.easeOut, and Power0.easeInOut are all identical because there is no power - they're all linear but use the common naming convention for ease of use. **/ + public static var easeOut:Ease = new Ease(null,null,1,0); + + /** Eases in with a power of 0 (linear). Power0.easeIn, Power0.easeOut, and Power0.easeInOut are all identical because there is no power - they're all linear but use the common naming convention for ease of use. **/ + public static var easeIn:Ease = new Ease(null,null,2,0); + + /** eases in and then out with a power of 0 (linear). Power0.easeIn, Power0.easeOut, and Power0.easeInOut are all identical because there is no power - they're all linear but use the common naming convention for ease of use. **/ + public static var easeInOut:Ease = new Ease(null,null,3,0); + + /** Eases out with a power of 0 (linear). Power0.easeNone, Power0.easeIn, Power0.easeOut, and Power0.easeInOut are all identical because there is no power - they're all linear but use the common naming convention for ease of use. **/ + public static var easeNone:Ease = new Ease(null,null,1,0); + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/easing/Power1.as b/FairyGUI-as3/src/com/greensock/easing/Power1.as new file mode 100644 index 0000000..ef0dd80 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/Power1.as @@ -0,0 +1,37 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * Provides an easeIn, easeOut, and easeInOut with a power (or strength) + * of 1 which is identical to Quad but with a more intuitive name. The more power, the more + * exaggerated the easing effect. Using a numeric approach like this in the name makes experimenting easier. + * + *

    This is one of the eases that is natively accelerated in TweenLite and TweenMax. All of the + * "Power" eases and their counterparts (Linear (0), Quad (1), Cubic (2), Quart (3), Quint (4), and Strong (4)) + * are accelerated.

    + * + *

    Example usage:

    + *

    + * TweenLite.to(obj, 1, {x:100, ease:Power1.easeOut}); + *

    + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class Power1 { + + /** Eases out with a power of 1 **/ + public static var easeOut:Ease = new Ease(null,null,1,1); + + /** Eases in with a power of 1 **/ + public static var easeIn:Ease = new Ease(null,null,2,1); + + /** Eases in and then out with a power of 1 **/ + public static var easeInOut:Ease = new Ease(null,null,3,1); + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/easing/Power2.as b/FairyGUI-as3/src/com/greensock/easing/Power2.as new file mode 100644 index 0000000..fcdb9be --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/Power2.as @@ -0,0 +1,37 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * Provides an easeIn, easeOut, and easeInOut with a power (or strength) + * of 2 which is identical to Cubic but with a more intuitive name. The more power, the more + * exaggerated the easing effect. Using a numeric approach like this in the name makes experimenting easier. + * + *

    This is one of the eases that is natively accelerated in TweenLite and TweenMax. All of the + * "Power" eases and their counterparts (Linear (0), Quad (1), Cubic (2), Quart (3), Quint (4), and Strong (4)) are + * accelerated.

    + * + *

    Example usage:

    + *

    + * TweenLite.to(obj, 1, {x:100, ease:Power2.easeOut}); + *

    + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class Power2 { + + /** Eases out with a power of 2 **/ + public static var easeOut:Ease = new Ease(null,null,1,2); + + /** Eases in with a power of 2 **/ + public static var easeIn:Ease = new Ease(null,null,2,2); + + /** Eases in and then out with a power of 2 **/ + public static var easeInOut:Ease = new Ease(null,null,3,2); + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/easing/Power3.as b/FairyGUI-as3/src/com/greensock/easing/Power3.as new file mode 100644 index 0000000..375d8ee --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/Power3.as @@ -0,0 +1,37 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * Provides an easeIn, easeOut, and easeInOut with a power (or strength) + * of 3 which is identical to Quart but with a more intuitive name. The more power, the more + * exaggerated the easing effect. Using a numeric approach like this in the name makes experimenting easier. + * + *

    This is one of the eases that is natively accelerated in TweenLite and TweenMax. All of the + * "Power" eases and their counterparts (Linear (0), Quad (1), Cubic (2), Quart (3), Quint (4), and Strong (4)) + * are accelerated.

    + * + *

    Example usage:

    + *

    + * TweenLite.to(obj, 1, {x:100, ease:Power3.easeOut}); + *

    + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class Power3 { + + /** Eases out with a power of 3 **/ + public static var easeOut:Ease = new Ease(null,null,1,3); + + /** Eases in with a power of 3 **/ + public static var easeIn:Ease = new Ease(null,null,2,3); + + /** Eases in and then out with a power of 3 **/ + public static var easeInOut:Ease = new Ease(null,null,3,3); + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/easing/Power4.as b/FairyGUI-as3/src/com/greensock/easing/Power4.as new file mode 100644 index 0000000..4d35830 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/Power4.as @@ -0,0 +1,38 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * Provides an easeIn, easeOut, and easeInOut with a power (or strength) + * of 4 which is identical to Quint and Strong but with a more intuitive name. + * The more power, the more exaggerated the easing effect. Using a numeric approach like this in the name + * makes experimenting easier. + * + *

    This is one of the eases that is natively accelerated in TweenLite and TweenMax. All of the + * "Power" eases and their counterparts (Linear (0), Quad (1), Cubic (2), Quart (3), Quint (4), and Strong (4)) + * are accelerated.

    + * + *

    Example usage:

    + *

    + * TweenLite.to(obj, 1, {x:100, ease:Power4.easeOut}); + *

    + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class Power4 { + + /** Eases out with a power of 4 **/ + public static var easeOut:Ease = new Ease(null,null,1,4); + + /** Eases in with a power of 4 **/ + public static var easeIn:Ease = new Ease(null,null,2,4); + + /** Eases in and then out with a power of 4 **/ + public static var easeInOut:Ease = new Ease(null,null,3,4); + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/easing/Quad.as b/FairyGUI-as3/src/com/greensock/easing/Quad.as new file mode 100644 index 0000000..5fc2fc9 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/Quad.as @@ -0,0 +1,38 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * Provides an easeIn, easeOut, and easeInOut with a power (or strength) + * of 1 which is identical to the Power1 ease. The more power, the more + * exaggerated the easing effect. Using a numeric approach like Power1 instead of Quad makes experimenting + * easier and the code reads more intuitively. + * + *

    This is one of the eases that is natively accelerated in TweenLite and TweenMax. All of the + * "Power" eases and their counterparts (Linear (0), Quad (1), Cubic (2), Quart (3), Quint (4), and Strong (4)) are + * accelerated.

    + * + *

    Example usage:

    + *

    + * TweenLite.to(obj, 1, {x:100, ease:Quad.easeOut}); + *

    + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class Quad { + + /** Eases out with a power of 1. **/ + public static var easeOut:Ease = new Ease(null,null,1,1); + + /** Eases in with a power of 1. **/ + public static var easeIn:Ease = new Ease(null,null,2,1); + + /** Eases in and then out with a power of 1. **/ + public static var easeInOut:Ease = new Ease(null,null,3,1); + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/easing/Quart.as b/FairyGUI-as3/src/com/greensock/easing/Quart.as new file mode 100644 index 0000000..6ec0f80 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/Quart.as @@ -0,0 +1,38 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * Provides an easeIn, easeOut, and easeInOut with a power (or strength) + * of 2 which is identical to the Power2 ease. The more power, the more + * exaggerated the easing effect. Using a numeric approach like Power2 instead of Quart makes experimenting + * easier and the code reads more intuitively. + * + *

    This is one of the eases that is natively accelerated in TweenLite and TweenMax. All of the + * "Power" eases and their counterparts (Linear (0), Quad (1), Cubic (2), Quart (3), Quint (4), and Strong (4)) are + * accelerated.

    + * + *

    Example usage:

    + *

    + * TweenLite.to(obj, 1, {x:100, ease:Quart.easeOut}); + *

    + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class Quart { + + /** Eases out with a power of 3. **/ + public static var easeOut:Ease = new Ease(null,null,1,3); + + /** Eases in with a power of 3. **/ + public static var easeIn:Ease = new Ease(null,null,2,3); + + /** Eases in and then out with a power of 3. **/ + public static var easeInOut:Ease = new Ease(null,null,3,3); + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/easing/Quint.as b/FairyGUI-as3/src/com/greensock/easing/Quint.as new file mode 100644 index 0000000..44b28ab --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/Quint.as @@ -0,0 +1,38 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * Provides an easeIn, easeOut, and easeInOut with a power (or strength) + * of 4 which is identical to the Power4 ease. The more power, the more + * exaggerated the easing effect. Using a numeric approach like Power4 instead of Quint makes experimenting + * easier and the code reads more intuitively. + * + *

    This is one of the eases that is natively accelerated in TweenLite and TweenMax. All of the + * "Power" eases and their counterparts (Linear (0), Quad (1), Cubic (2), Quart (3), Quint (4), and Strong (4)) are + * accelerated.

    + * + *

    Example usage:

    + *

    + * TweenLite.to(obj, 1, {x:100, ease:Quint.easeOut}); + *

    + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class Quint { + + /** Eases out with a power of 4 **/ + public static var easeOut:Ease = new Ease(null,null,1,4); + + /** Eases in with a power of 4 **/ + public static var easeIn:Ease = new Ease(null,null,2,4); + + /** Eases in and then out with a power of 4 **/ + public static var easeInOut:Ease = new Ease(null,null,3,4); + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/easing/RoughEase.as b/FairyGUI-as3/src/com/greensock/easing/RoughEase.as new file mode 100644 index 0000000..a75e335 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/RoughEase.as @@ -0,0 +1,289 @@ +/** + * VERSION: 12.0.5 + * DATE: 2013-03-27 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/roughease/ + **/ +package com.greensock.easing { + import com.greensock.easing.core.EasePoint; +/** + * Most easing equations give a smooth, gradual transition between the start and end values, but RoughEase provides + * an easy way to get a rough, jagged effect instead, or you can also get an evenly-spaced back-and-forth movement + * if you prefer. Configure the RoughEase by passing an object to the constructor or config() method with any + * of the following properties (all are optional): + * + *
      + *
    • template : Ease - an ease that should be used as a template, like a general guide. + * The RoughEase will plot points that wander from that template. You can use this to influence + * the general shape of the RoughEase. (Default: Linear.easeNone)
    • + * + *
    • strength : Number - controls how far from the template ease the points are allowed to wander + * (a small number like 0.1 keeps it very close to the template ease whereas a larger number like 5 creates + * much bigger variations). (Default: 1)
    • + * + *
    • points : Number - the number of points to be plotted along the ease, making it jerk more or less + * frequently. (Default: 20)
    • + * + *
    • clamp : Boolean - setting clamp to true will prevent points from + * exceeding the end value or dropping below the starting value. For example, if you're tweening the x + * property from 0 to 100, the RoughEase would force all random points to stay between 0 and 100 if + * clamp is true, but if it is false, x could potentially jump + * above 100 or below 0 at some point during the tween (it would always end at 100 though in this example) + * (Default: false).
    • + * + *
    • taper : String ("in" | "out" | "both" | "none") - to make the strength of the + * roughness taper towards the end or beginning or both, use "out", "in", + * or "both" respectively. (Default: "none")
    • + * + *
    • randomize : Boolean - by default, the placement of points will be randomized (creating the roughness) + * but you can set randomize to false to make the points zig-zag evenly across the ease. + * Using this in conjunction with a taper value can create a nice effect. (Default: true)
    • + *
    + * + *

    For a visual example and more details, check out http://www.greensock.com/roughease/.

    + * + *

    Example code

    + * +import com.greensock.TweenLite; +import com.greensock.easing.~~; + +//use the default values +TweenLite.from(mc, 3, {alpha:0, ease:RoughEase.ease}); + +//or customize the configuration +TweenLite.to(mc, 3, {y:300, ease:RoughEase.ease.config({strength:3, points:50, template:Strong.easeInOut, taper:"both", randomize:false}) }); + +//or create a RoughEase that we can pass in to multiple tweens later +var rough:RoughEase = new RoughEase({strength:3, points:50, template:Strong.easeInOut, taper:"both", randomize:false}); +TweenLite.to(mc, 3, {y:300, ease:rough}); +TweenLite.to(mc2, 5, {x:500, ease:rough}); + + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class RoughEase extends Ease { + /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ + public static var ease:RoughEase = new RoughEase(); + /** @private **/ + private static var _lookup:Object = {}; //keeps track of all named instances so we can find them in byName(). + /** @private **/ + private static var _count:int = 0; + + /** @private **/ + private var _name:String; + /** @private **/ + private var _first:EasePoint; + /** @private **/ + private var _prev:EasePoint; + + /** + * Constructor + * + * @param vars a generic object with any of the following properties (all are completely optional): + *
      + *
    • template : Ease - an ease that should be used as a template, like a general guide. + * The RoughEase will plot points that wander from that template. You can use this to influence + * the general shape of the RoughEase. (Default: Linear.easeNone)
    • + * + *
    • strength : Number - controls how far from the template ease the points are allowed to wander + * (a small number like 0.1 keeps it very close to the template ease whereas a larger number like 5 creates + * much bigger variations). (Default: 1)
    • + * + *
    • points : Number - the number of points to be plotted along the ease, making it jerk more or less + * frequently. (Default: 20)
    • + * + *
    • clamp : Boolean - setting clamp to true will prevent points from + * exceeding the end value or dropping below the starting value. For example, if you're tweening the x + * property from 0 to 100, the RoughEase would force all random points to stay between 0 and 100 if + * clamp is true, but if it is false, x could potentially jump + * above 100 or below 0 at some point during the tween (it would always end at 100 though in this example) + * (Default: false).
    • + * + *
    • taper : String ("in" | "out" | "both" | "none") - to make the strength of the + * roughness taper towards the end or beginning or both, use "out", "in", + * or "both" respectively. (Default: "none")
    • + * + *
    • randomize : Boolean - by default, the placement of points will be randomized (creating the roughness) + * but you can set randomize to false to make the points zig-zag evenly across the ease. + * Using this in conjunction with a taper value can create a nice effect. (Default: true)
    • + *
    + */ + public function RoughEase(vars:*=null, ...args) { + if (typeof(vars) !== "object" || vars == null) { + vars = {strength:vars, points:args[0], clamp:args[1], template:args[2], taper:args[3], randomize:args[4], name:args[5]}; + } + if (vars.name) { + _name = vars.name; + _lookup[vars.name] = this; + } else { + _name = "roughEase" + (_count++); + } + var taper:String = vars.taper || "none", + a:Array = [], + cnt:int = 0, + points:int = int(vars.points) || 20, + i:int = points, + randomize:Boolean = (vars.randomize !== false), + clamp:Boolean = (vars.clamp === true), + template:Ease = (vars.template is Ease) ? vars.template : null, + strength:Number = (typeof(vars.strength) === "number") ? vars.strength * 0.4 : 0.4, + x:Number, y:Number, bump:Number, invX:Number, obj:Object; + while (--i > -1) { + x = randomize ? Math.random() : (1 / points) * i; + y = (template != null) ? template.getRatio(x) : x; + if (taper === "none") { + bump = strength; + } else if (taper === "out") { + invX = 1 - x; + bump = invX * invX * strength; + } else if (taper === "in") { + bump = x * x * strength; + } else if (x < 0.5) { //"both" (start) + invX = x * 2; + bump = invX * invX * 0.5 * strength; + } else { //"both" (end) + invX = (1 - x) * 2; + bump = invX * invX * 0.5 * strength; + } + if (randomize) { + y += (Math.random() * bump) - (bump * 0.5); + } else if (i % 2) { + y += bump * 0.5; + } else { + y -= bump * 0.5; + } + if (clamp) { + if (y > 1) { + y = 1; + } else if (y < 0) { + y = 0; + } + } + a[cnt++] = {x:x, y:y}; + } + a.sortOn("x", Array.NUMERIC); + + _first = new EasePoint(1, 1, null); + i = points; + while (--i > -1) { + obj = a[i]; + _first = new EasePoint(obj.x, obj.y, _first); + } + + _first = _prev = new EasePoint(0, 0, (_first.time !== 0) ? _first : _first.next); + } + + /** + * @private + * DEPRECATED + * This static function provides a quick way to create a RoughEase and immediately reference its ease function + * in a tween, like:

    + * + * TweenLite.from(mc, 2, {alpha:0, ease:RoughEase.create(1.5, 15)});
    + *
    + * + * @param strength amount of variance from the templateEase (Linear.easeNone by default) that each random point can be placed. A low number like 0.1 will hug very closely to the templateEase whereas a larger number like 2 will allow the values to wander further away from the templateEase. + * @param points quantity of random points to plot in the ease. A larger number will cause more (and quicker) flickering. + * @param clamp If true, the ease will prevent random points from exceeding the end value or dropping below the starting value. For example, if you're tweening the x property from 0 to 100, the RoughEase would force all random points to stay between 0 and 100 if restrictMaxAndMin is true, but if it is false, a x could potentially jump above 100 or below 0 at some point during the tween (it would always end at 100 though). + * @param templateEase an easing equation that should be used as a template or guide. Then random points are plotted at a certain distance away from the templateEase (based on the strength parameter). The default is Linear.easeNone. + * @param taper to make the strength of the roughness taper towards the end or beginning or both, use "out", "in", or "both" respectively here (default is "none"). + * @param randomize to randomize the placement of the points, set randomize to true (otherwise the points will zig-zag evenly across the ease) + * @param name a name to associate with the ease so that you can use RoughEase.byName() to look it up later. Of course you should always make sure you use a unique name for each ease (if you leave it blank, a name will automatically be generated). + * @return easing function + */ + public static function create(strength:Number=1, points:uint=20, clamp:Boolean=false, templateEase:Ease=null, taper:String="none", randomize:Boolean=true, name:String=""):Ease { + return new RoughEase(strength, points, clamp, templateEase, taper, randomize, name); + } + + /** + * @private + * DEPRECATED + * Provides a quick way to look up a RoughEase by its name. + * + * @param name the name of the RoughEase + * @return the RoughEase associated with the name + */ + public static function byName(name:String):Ease { + return _lookup[name]; + } + + /** + * Translates the tween's progress ratio into the corresponding ease ratio. This is the heart of the Ease, where it does all its work. + * + * @param p progress ratio (a value between 0 and 1 indicating the progress of the tween/ease) + * @return translated number + */ + override public function getRatio(p:Number):Number { + var pnt:EasePoint = _prev; + if (p > _prev.time) { + while (pnt.next && p >= pnt.time) { + pnt = pnt.next; + } + pnt = pnt.prev; + } else { + while (pnt.prev && p <= pnt.time) { + pnt = pnt.prev; + } + } + _prev = pnt; + return (pnt.value + ((p - pnt.time) / pnt.gap) * pnt.change); + } + + /** @private [DEPRECATED] Disposes the RoughEase so that it is no longer stored for easy lookups by name with byName(), releasing it for garbage collection. **/ + public function dispose():void { + delete _lookup[_name]; + } + + /** @private [DEPRECATED] name of the RoughEase instance **/ + public function get name():String { + return _name; + } + + /** @private [DEPRECATED] name of the RoughEase instance **/ + public function set name(value:String):void { + delete _lookup[_name]; + _name = value; + _lookup[_name] = this; + } + + /** + * Permits customization of the ease with various parameters. + * + * @param vars a generic object with any of the following properties (all are completely optional): + *
      + *
    • template : Ease - an ease that should be used as a template, like a general guide. + * The RoughEase will plot points that wander from that template. You can use this to influence + * the general shape of the RoughEase. (Default: Linear.easeNone)
    • + * + *
    • strength : Number - controls how far from the template ease the points are allowed to wander + * (a small number like 0.1 keeps it very close to the template ease whereas a larger number like 5 creates + * much bigger variations). (Default: 1)
    • + * + *
    • points : Number - the number of points to be plotted along the ease, making it jerk more or less + * frequently. (Default: 20)
    • + * + *
    • clamp : Boolean - setting clamp to true will prevent points from + * exceeding the end value or dropping below the starting value. For example, if you're tweening the x + * property from 0 to 100, the RoughEase would force all random points to stay between 0 and 100 if + * clamp is true, but if it is false, x could potentially jump + * above 100 or below 0 at some point during the tween (it would always end at 100 though in this example) + * (Default: false).
    • + * + *
    • taper : String ("in" | "out" | "both" | "none") - to make the strength of the + * roughness taper towards the end or beginning or both, use "out", "in", + * or "both" respectively. (Default: "none")
    • + * + *
    • randomize : Boolean - by default, the placement of points will be randomized (creating the roughness) + * but you can set randomize to false to make the points zig-zag evenly across the ease. + * Using this in conjunction with a taper value can create a nice effect. (Default: true)
    • + *
    + * @return new RoughEase instance that is configured according to the parameters provided + */ + public function config(vars:Object=null):RoughEase { + return new RoughEase(vars); + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/easing/Sine.as b/FairyGUI-as3/src/com/greensock/easing/Sine.as new file mode 100644 index 0000000..d81abdf --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/Sine.as @@ -0,0 +1,29 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * Eases with a relatively low power either at the beginning (easeIn), the end (easeOut), or both (easeInOut). + * Sine is a convenience class that congregates the 3 types of Sine eases (SineIn, SineOut, + * and SineInOut) as static properties so that they can be referenced using the standard synatax, like + * Sine.easeIn, Sine.easeOut, and Sine.easeInOut. + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class Sine { + + /** Eases out with slight deceleration. **/ + public static var easeOut:SineOut = new SineOut(); + + /** Eases in with slight acceleration. **/ + public static var easeIn:SineIn = new SineIn(); + + /** Eases in and then out with slight acceleration/deceleration. **/ + public static var easeInOut:SineInOut = new SineInOut(); + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/easing/SineIn.as b/FairyGUI-as3/src/com/greensock/easing/SineIn.as new file mode 100644 index 0000000..2e7ddd2 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/SineIn.as @@ -0,0 +1,31 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * @private + * Eases in with slight acceleration. + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class SineIn extends Ease { + + /** @private **/ + private static const _HALF_PI:Number = Math.PI / 2; + + /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ + public static var ease:SineIn = new SineIn(); + + /** @inheritDoc **/ + override public function getRatio(p:Number):Number { + return -Math.cos(p * _HALF_PI) + 1; + } + + } + +} diff --git a/FairyGUI-as3/src/com/greensock/easing/SineInOut.as b/FairyGUI-as3/src/com/greensock/easing/SineInOut.as new file mode 100644 index 0000000..6fe08f8 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/SineInOut.as @@ -0,0 +1,28 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * @private + * Eases in and then out with slight acceleration/deceleration. + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class SineInOut extends Ease { + + /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ + public static var ease:SineInOut = new SineInOut(); + + /** @inheritDoc **/ + override public function getRatio(p:Number):Number { + return -0.5 * (Math.cos(Math.PI * p) - 1); + } + + } + +} diff --git a/FairyGUI-as3/src/com/greensock/easing/SineOut.as b/FairyGUI-as3/src/com/greensock/easing/SineOut.as new file mode 100644 index 0000000..52ce8da --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/SineOut.as @@ -0,0 +1,31 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * @private + * Eases out with slight deceleration. + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class SineOut extends Ease { + + /** @private **/ + private static const _HALF_PI:Number = Math.PI / 2; + + /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ + public static var ease:SineOut = new SineOut(); + + /** @inheritDoc **/ + override public function getRatio(p:Number):Number { + return Math.sin(p * _HALF_PI); + } + + } + +} diff --git a/FairyGUI-as3/src/com/greensock/easing/SlowMo.as b/FairyGUI-as3/src/com/greensock/easing/SlowMo.as new file mode 100644 index 0000000..4ea35e1 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/SlowMo.as @@ -0,0 +1,113 @@ +/** + * VERSION: 1.11 + * DATE: 2012-06-06 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { + import com.greensock.easing.Ease; +/** + * SlowMo is a configurable ease that produces a slow-motion effect that decelerates initially, then moves + * linearly for a certain portion of the ease (which you can choose) and then accelerates again at the end; + * it's great for effects like zooming text onto the screen, smoothly moving it long enough for people to + * read it, and then zooming it off the screen. Without SlowMo, animators would often try to get the same + * effect by sequencing 3 tweens, one with an easeOut, then another with a Linear.easeNone, and finally + * an easeIn but the problem was that the eases didn't smoothly transition into one another, so you'd see + * sudden shifts in velocity at the joints. SlowMo solves this problem and gives you complete control over + * how strong the eases are on each end and what portion of the movement in the middle is linear. + * + *

    The first parameter, linearRatio, determines the proportion of the ease during which + * the rate of change will be linear (steady pace). This should be a number between 0 and 1. For example, + * 0.5 would be half, so the first 25% of the ease would be easing out (decelerating), then 50% would be + * linear, then the final 25% would be easing in (accelerating). If you choose 0.8, that would mean 80% + * of the ease would be linear, leaving 10% on each end to ease. The default is 0.7.

    + * + *

    The second parameter, power, determines the strength of the ease at each end. + * If you define a value greater than 1, it will actually reverse the linear portion in the middle + * which can create interesting effects. The default is 0.7.

    + * + *

    The third parameter, yoyoMode, provides an easy way to create companion tweens that + * sync with normal SlowMo tweens. For example, let's say you have a SlowMo tween that is zooming some + * text onto the screen and moving it linearly for a while and then zooming off, but you want to + * tween that alpha of the text at the beginning and end of the positional tween. Normally, you'd need + * to create 2 separate alpha tweens, 1 for the fade-in at the beginning and 1 for the fade-out at the + * end and you'd need to calculate their durations manually to ensure that they finish fading in + * by the time the linear motion begins and then they start fading out at the end right when the linear + * motion completes. But to make this whole process much easier, all you'd need to do is create a separate + * tween for the alpha and use the same duration but a SlowMo ease that has its yoyoMode + * parameter set to true.

    + * + * @example Example AS3 example:+import com.greensock.~~; +import com.greensock.easing.~~; + +//use the default SlowMo ease (linearRatio of 0.7 and power of 0.7) +TweenLite.to(myText, 5, {x:600, ease:SlowMo.ease}); + +//use a new SlowMo ease with 50% of the tween being linear (2.5 seconds) and a power of 0.8 +TweenLite.to(myText, 5, {x:600, ease:new SlowMo(0.5, 0.8)}); + +//this gives the exact same effect as the line above, but uses a different syntax +TweenLite.to(myText, 5, {x:600, ease:SlowMo.ease.config(0.5, 0.8)}); + +//now let's create an alpha tween that syncs with the above positional tween, fading it in at the beginning and out at the end +myText.alpha = 0; +TweenLite.to(myText, 5, {alpha:1, ease:SlowMo.ease.config(0.5, 0.8, true)}); + + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + public class SlowMo extends Ease { + + /** The default ease instance which can be reused many times in various tweens in order to conserve memory and improve performance slightly compared to creating a new instance each time. **/ + public static var ease:SlowMo = new SlowMo(); + + /** @private **/ + private var _p:Number; + + /** + * Constructor + * + * @param linearRatio the proportion of the ease during which the rate of change will be linear (steady pace). This should be a number between 0 and 1. For example, 0.5 would be half, so the first 25% of the ease would be easing out (decelerating), then 50% would be linear, then the final 25% would be easing in (accelerating). If you choose 0.8, that would mean 80% of the ease would be linear, leaving 10% on each end to ease. The default is 0.7. + * @param power The strength of the ease at each end. If you define a value above 1, it will actually reverse the linear portion in the middle which can create interesting effects. The default is 0.7. + * @param yoyoMode If true, the ease will reach its destination value mid-tween and maintain it during the entire linear mode and then go back to the original value at the end (like a yoyo of sorts). This can be very useful if, for example, you want the alpha (or some other property) of some text to fade at the front end of a SlowMo positional ease and then back down again at the end of that positional SlowMo tween. Otherwise you would need to create separate tweens for the beginning and ending fades that match up with that positional tween. Example: TweenLite.to(myText, 5, {x:600, ease:SlowMo.ease.config(0.7, 0.7, false)}); TweenLite.from(myText, 5, {alpha:0, ease:SlowMo.ease.config(0.7, 0.7, true)}); + */ + public function SlowMo(linearRatio:Number=0.7, power:Number=0.7, yoyoMode:Boolean=false) { + if (linearRatio > 1) { + linearRatio = 1; + } + _p = (linearRatio != 1) ? power : 0; + _p1 = (1 - linearRatio) / 2; + _p2 = linearRatio; + _p3 = _p1 + _p2; + _calcEnd = yoyoMode; + } + + /** @inheritDoc **/ + override public function getRatio(p:Number):Number { + var r:Number = p + (0.5 - p) * _p; + if (p < _p1) { + return _calcEnd ? 1 - ((p = 1 - (p / _p1)) * p) : r - ((p = 1 - (p / _p1)) * p * p * p * r); + } else if (p > _p3) { + return _calcEnd ? 1 - (p = (p - _p3) / _p1) * p : r + ((p - r) * (p = (p - _p3) / _p1) * p * p * p); + } + return _calcEnd ? 1 : r; + } + + /** + * Permits customization of the ease with various parameters. + * + * @param linearRatio the proportion of the ease during which the rate of change will be linear (steady pace). This should be a number between 0 and 1. For example, 0.5 would be half, so the first 25% of the ease would be easing out (decelerating), then 50% would be linear, then the final 25% would be easing in (accelerating). If you choose 0.8, that would mean 80% of the ease would be linear, leaving 10% on each end to ease. The default is 0.7. + * @param power The strength of the ease at each end. If you define a value above 1, it will actually reverse the linear portion in the middle which can create interesting effects. The default is 0.7. + * @param yoyoMode If true, the ease will reach its destination value mid-tween and maintain it during the entire linear mode and then go back to the original value at the end (like a yoyo of sorts). This can be very useful if, for example, you want the alpha (or some other property) of some text to fade at the front end of a SlowMo positional ease and then back down again at the end of that positional SlowMo tween. Otherwise you would need to create separate tweens for the beginning and ending fades that match up with that positional tween. Example: TweenLite.to(myText, 5, {x:600, ease:SlowMo.ease.config(0.7, 0.7, false)}); TweenLite.from(myText, 5, {alpha:0, ease:SlowMo.ease.config(0.7, 0.7, true)}); + * @return new SlowMo instance that is configured according to the parameters provided + */ + public function config(linearRatio:Number=0.7, power:Number=0.7, yoyoMode:Boolean=false):SlowMo { + return new SlowMo(linearRatio, power, yoyoMode); + } + + } + +} diff --git a/FairyGUI-as3/src/com/greensock/easing/SteppedEase.as b/FairyGUI-as3/src/com/greensock/easing/SteppedEase.as new file mode 100644 index 0000000..6a4fa28 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/SteppedEase.as @@ -0,0 +1,89 @@ +/** + * VERSION: 0.5 + * DATE: 2010-11-30 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/ + **/ +package com.greensock.easing { +/** + * Most easing equations give a smooth, gradual transition between the start and end values, but SteppedEase provides + * an easy way to define a specific number of steps that the transition should take. For example, if mc.x is 0 and you + * want to tween it to 100 with 5 steps (20, 40, 60, 80, and 100) over the course of 2 seconds, you'd do: + * + * +TweenLite.to(mc, 2, {x:100, ease:SteppedEase.config(5)}); + +//or create an instance directly +var steppedEase = new SteppedEase(5); +TweenLite.to(mc, 3, {y:300, ease:steppedEase}); + + * + *

    Note: SteppedEase is optimized for use with the GreenSock tweenining platform, so it isn't intended to be used with other engines. + * Specifically, its easing equation always returns values between 0 and 1.

    + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class SteppedEase extends Ease { + /** @private **/ + private var _steps:int; + + /** + * Constructor + * + * @param steps Number of steps between the start and the end values. + */ + public function SteppedEase(steps:int) { + _p1 = 1 / steps; + _steps = steps + 1; + } + + /** + * @private + * Deprecated + * This static function provides a quick way to create a SteppedEase and immediately reference its ease function + * in a tween, like:

    + * + * TweenLite.to(mc, 2, {x:100, ease:SteppedEase.create(5)});
    + *
    + * + * @param steps Number of steps between the start and the end values. + * @return The easing function that can be plugged into a tween + */ + public static function create(steps:int):SteppedEase { + return new SteppedEase(steps); + } + + /** + * Translates the tween's progress ratio into the corresponding ease ratio. This is the heart of the Ease, where it does all its work. + * + * @param p progress ratio (a value between 0 and 1 indicating the progress of the tween/ease) + * @return translated number + */ + override public function getRatio(p:Number):Number { + if (p < 0) { + p = 0; + } else if (p >= 1) { + p = 0.999999999; + } + return ((_steps * p) >> 0) * _p1; + } + + /** + * Permits customization of the ease (defining a number of steps). + * + * @param steps Number of steps between the start and the end values. + * @return new SteppedEase instance that is configured according to the parameters provided + */ + public static function config(steps:int):SteppedEase { + return new SteppedEase(steps); + } + + /** @private Deprecated - Number of steps between the start and the end values. **/ + public function get steps():int { + return _steps - 1; + } + + } +} diff --git a/FairyGUI-as3/src/com/greensock/easing/Strong.as b/FairyGUI-as3/src/com/greensock/easing/Strong.as new file mode 100644 index 0000000..9ff6cc1 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/Strong.as @@ -0,0 +1,39 @@ +/** + * VERSION: 1.0 + * DATE: 2012-03-22 + * AS3 (AS2 and JS versions are also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing { +/** + * Provides an easeIn, easeOut, and easeInOut with a power (or strength) + * of 4 which is identical to the Power4 ease. The more power, the more + * exaggerated the easing effect. Using a numeric approach like Power4 instead of Strong makes experimenting + * easier and the code reads more intuitively. + * + *

    This is one of the eases that is natively accelerated in TweenLite and TweenMax. All of the + * "Power" eases and their counterparts (Linear (0), Quad (1), Cubic (2), Quart (3), Quint (4), and Strong (4)) are + * accelerated.

    + * + *

    Example usage:

    + *

    + * TweenLite.to(obj, 1, {x:100, ease:Strong.easeOut}); + *

    + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class Strong { + + /** Eases out with a power of 4 **/ + public static var easeOut:Ease = new Ease(null,null,1,4); + + /** Eases in with a power of 4 **/ + public static var easeIn:Ease = new Ease(null,null,2,4); + + /** Eases in and then out with a power of 4 **/ + public static var easeInOut:Ease = new Ease(null,null,3,4); + + } +} diff --git a/FairyGUI-as3/src/com/greensock/easing/core/EasePoint.as b/FairyGUI-as3/src/com/greensock/easing/core/EasePoint.as new file mode 100644 index 0000000..25b3544 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/easing/core/EasePoint.as @@ -0,0 +1,35 @@ +/** + * VERSION: 1.0.0 + * DATE: 2013-03-27 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.easing.core { +/** + * @private + * Used by RoughEase. Couldn't use an internal class due to instantiation order issues caused by referencing an EasePoint inside the RoughEase constructor when we create an "ease" public static var that's a RoughEase. + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + final public class EasePoint { + public var time:Number; + public var gap:Number; + public var value:Number; + public var change:Number; + public var next:EasePoint; + public var prev:EasePoint; + + public function EasePoint(time:Number, value:Number, next:EasePoint) { + this.time = time; + this.value = value; + if (next) { + this.next = next; + next.prev = this; + this.change = next.value - value; + this.gap = next.time - time; + } + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/events/LoaderEvent.as b/FairyGUI-as3/src/com/greensock/events/LoaderEvent.as new file mode 100644 index 0000000..6fd8373 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/events/LoaderEvent.as @@ -0,0 +1,123 @@ +/** + * VERSION: 1.87 + * DATE: 2011-07-30 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/loadermax/ + **/ +package com.greensock.events { + + import flash.events.Event; +/** + * An Event dispatched by one of the loaders in the LoaderMax system. + *

    + * + * Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership. + * + * @author Jack Doyle, jack@greensock.com + */ + public class LoaderEvent extends Event { + /** Dispatched by a LoaderMax (or other loader that may dynamically recognize nested loaders like XMLLoader and SWFLoader) when one of its children begins loading. **/ + public static const CHILD_OPEN:String="childOpen"; + /** Dispatched by a LoaderMax (or other loader that may dynamically recognize nested loaders like XMLLoader and SWFLoader) when one of its children dispatches a PROGRESS Event. **/ + public static const CHILD_PROGRESS:String="childProgress"; + /** Dispatched by a LoaderMax (or other loader that may dynamically recognize nested loaders like XMLLoader and SWFLoader) when one of its children aborts its loading. This can happen when the loader fails, when cancel() is manually called, or when another loader is prioritized in the loading queue. **/ + public static const CHILD_CANCEL:String="childCancel"; + /** Dispatched by a LoaderMax (or other loader that may dynamically recognize nested loaders like XMLLoader and SWFLoader) when one of its children finishes loading. **/ + public static const CHILD_COMPLETE:String="childComplete"; + /** Dispatched by a LoaderMax (or other loader that may dynamically recognize nested loaders like XMLLoader and SWFLoader) when one of its children fails to load. **/ + public static const CHILD_FAIL:String="childFail"; + /** Dispatched when the loader begins loading, like when its load() method is called. **/ + public static const OPEN:String="open"; + /** Dispatched when the loader's bytesLoaded changes. **/ + public static const PROGRESS:String="progress"; + /** Dispatched when the loader aborts its loading. This can happen when the loader fails, when cancel() is manually called, or when another loader is prioritized in the loading queue. **/ + public static const CANCEL:String="cancel"; + /** Dispatched when the loader fails. **/ + public static const FAIL:String="fail"; + /** Dispatched when the loader initializes which means different things for different loaders. For example, a SWFLoader dispatches INIT when it downloads enough of the swf to render the first frame. When a VideoLoader receives MetaData, it dispatches its INIT event, as does an MP3Loader when it receives ID3 data. See the docs for each class for specifics. **/ + public static const INIT:String="init"; + /** Dispatched when the loader finishes loading. **/ + public static const COMPLETE:String="complete"; + /** Dispatched when the loader (or one of its children) receives an HTTP_STATUS event (see Adobe docs for specifics). **/ + public static const HTTP_STATUS:String="httpStatus"; + /** Dispatched when the loader (or one of its children) receives an HTTP_RESPONSE_STATUS event (see Adobe docs for specifics). **/ + public static const HTTP_RESPONSE_STATUS:String="httpResponseStatus"; + /** When script access is denied for a particular loader (like if an ImageLoader or SWFLoader tries loading from another domain and the crossdomain.xml file is missing or doesn't grant permission properly), a SCRIPT_ACCESS_DENIED LoaderEvent will be dispatched. **/ + public static const SCRIPT_ACCESS_DENIED:String="scriptAccessDenied"; + /** Dispatched when the loader (or one of its children) throws any error, like an IO_ERROR or SECURITY_ERROR. **/ + public static const ERROR:String="error"; + /** Dispatched when the the loader (or one of its children) encounters an IO_ERROR (typically when it cannot find the file at the specified url). **/ + public static const IO_ERROR:String="ioError"; + /** Dispatched when the loader (or one of its children) encounters a SECURITY_ERROR (see Adobe's docs for details). **/ + public static const SECURITY_ERROR:String="securityError"; + /** Dispatched when a swf that's loaded by a SWFLoader encounters an UncaughtErrorEvent which is basically any Error that gets thrown outside of a try...catch statement. This can be useful when subloading swfs from a 3rd party that may contain errors. However, UNCAUGHT_ERROR events will only be dispatched if the parent swf is published for Flash Player 10.1 or later! See SWFLoader's suppressUncaughtErrors special property if you'd like to have it automatically suppress these errors. The original UncaughtErrorEvent is stored in the LoaderEvent's data property. So, for example, if you'd like to call preventDefault() on that event, you'd do myLoaderEvent.data.preventDefault(). **/ + public static const UNCAUGHT_ERROR:String="uncaughtError"; + /** + * Dispatched when the loader unloads (which happens when either unload() or dispose(true) is called + * or if a loader is canceled while in the process of loading). This can be particularly useful to listen for in a swf that was + * subloaded by a SWFLoader so that it can get notified when the parent has requested an unload. For example, in the subloaded swf, + * you could do: + * +var curParent:DisplayObjectContainer = this.parent; +while (curParent) { + if (curParent.hasOwnProperty("rawContent") && curParent.hasOwnProperty("loader")) { + Object(curParent).loader.addEventListener("unload", dispose, false, 0, true); + } + curParent = curParent.parent; +} +function dispose(event:Event):void { + //do cleanup stuff here like removing event listeners, stopping sounds, closing NetStreams, etc... +} + + **/ + public static const UNLOAD:String="unload"; + + /** @private **/ + protected var _target:Object; + /** @private **/ + protected var _ready:Boolean; + + /** For ERROR, FAIL, and CHILD_FAIL events, this text will give more details about the error or failure. **/ + public var text:String; + /** Event-related data which varies based on the type of event. For example, VideoLoader dispatches a VIDEO_CUE_POINT event containing data about the cue point. A SWFLoader dispatches an UNCAUGHT_ERROR event containing the original UncaughtErrorEvent instance. **/ + public var data:*; + + /** + * Constructor + * + * @param type Type of event + * @param target Target + * @param text Error text (if any) + */ + public function LoaderEvent(type:String, target:Object, text:String="", data:*=null){ + super(type, false, false); + _target = target; + this.text = text; + this.data = data; + } + + /** @inheritDoc **/ + public override function clone():Event{ + return new LoaderEvent(this.type, _target, this.text, this.data); + } + + /** + * The loader associated with the LoaderEvent. This may be different than the currentTarget. + * The target always refers to the originating loader, so if there is an ImageLoader nested inside + * a LoaderMax instance and you add an event listener to the LoaderMax, if the ImageLoader dispatches an error + * event, the event's target will refer to the ImageLoader whereas the currentTarget will + * refer to the LoaderMax instance that is currently processing the event. + **/ + override public function get target():Object { + if (_ready) { + return _target; + } else { + //when the event is re-dispatched, Flash's event system checks to see if the target has been set and if it has, Flash will clone() and reset the target so we need to report the target as null the first time and then on subsequent calls, report the real target. + _ready = true; + } + return null; + } + + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/events/TweenEvent.as b/FairyGUI-as3/src/com/greensock/events/TweenEvent.as new file mode 100644 index 0000000..dc38a54 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/events/TweenEvent.as @@ -0,0 +1,29 @@ +package com.greensock.events { + import flash.events.Event; +/** + * Used for dispatching events from the GreenSock Animation Platform. + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class TweenEvent extends Event { + /** @private **/ + public static const VERSION:Number = 12.0; + public static const START:String = "start"; + public static const UPDATE:String = "change"; + public static const COMPLETE:String = "complete"; + public static const REVERSE_COMPLETE:String = "reverseComplete"; + public static const REPEAT:String = "repeat"; + + public function TweenEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false) { + super(type, bubbles, cancelable); + } + + public override function clone():Event { + return new TweenEvent(this.type, this.bubbles, this.cancelable); + } + + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/layout/.DS_Store b/FairyGUI-as3/src/com/greensock/layout/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class AlignMode { + + /** Align with the top of the area. **/ + public static const TOP:String = "top"; + /** Align with the center of the area. **/ + public static const CENTER:String = "center"; + /** Align with the right side of the area. **/ + public static const RIGHT:String = "right"; + /** Align with the left side of the area. **/ + public static const LEFT:String = "left"; + /** Align with the bottom of the area. **/ + public static const BOTTOM:String = "bottom"; + /** No alignment **/ + public static const NONE:String = "none"; + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/layout/AutoFitArea.as b/FairyGUI-as3/src/com/greensock/layout/AutoFitArea.as new file mode 100644 index 0000000..5e368c3 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/layout/AutoFitArea.as @@ -0,0 +1,789 @@ +/** + * VERSION: 2.54 + * DATE: 2011-04-26 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/autofitarea/ + **/ +package com.greensock.layout { + import flash.display.BitmapData; + import flash.display.DisplayObject; + import flash.display.DisplayObjectContainer; + import flash.display.Graphics; + import flash.display.Shape; + import flash.events.Event; + import flash.geom.ColorTransform; + import flash.geom.Matrix; + import flash.geom.Rectangle; +/** + * AutoFitArea allows you to define a rectangular area and then attach() DisplayObjects + * so that they automatically fill the area, scaling/stretching in any of the following modes: STRETCH, + * PROPORTIONAL_INSIDE, PROPORTIONAL_OUTSIDE, NONE, WIDTH_ONLY, or HEIGHT_ONLY. Horizontally + * align the attached DisplayObjects left, center, or right. Vertically align them top, center, or bottom. + * AutoFitArea extends the Shape class, so you can alter the width/height/scaleX/scaleY/x/y + * properties of the AutoFitArea and then all of the attached objects will automatically be affected. + * Attach as many DisplayObjects as you want. To make visualization easy, you can set the previewColor + * to any color and set the preview property to true in order to see the area on the stage + * (or simply use it like a regular Shape by adding it to the display list with addChild(), but the + * preview property makes it simpler because it automatically ensures that it is behind + * all of its attached DisplayObjects in the stacking order). + * + *

    When you attach() a DisplayObject, you can define a minimum and maximum width and height. + * AutoFitArea doesn't require that the DisplayObject's registration point be in its upper left corner + * either. You can even set the calculateVisible parameter to true when attaching an object + * so that AutoFitArea will ignore masked areas inside the DisplayObject (this is more processor-intensive, + * so beware).

    + * + *

    For scaling, AutoFitArea alters the DisplayObject's width and/or height + * properties unless it is rotated in which case it alters the DisplayObject's transform.matrix + * directly so that accurate stretching/skewing can be accomplished.

    + * + *

    There is also a LiquidArea class that extends AutoFitArea and integrates with + * LiquidStage so that it automatically + * adjusts its size whenever the stage is resized. This makes it simple to create things like + * a background that proportionally fills the stage or a bar that always stretches horizontally + * to fill the stage but stays stuck to the bottom, etc.

    + * + * +import com.greensock.layout.~~; + +//create a 300x100 rectangular area at x:50, y:70 that stretches when the stage resizes (as though its top left and bottom right corners are pinned to their corresponding PinPoints on the stage) +var area:AutoFitArea = new AutoFitArea(this, 50, 70, 300, 100); + +//attach a "myImage" Sprite to the area and set its ScaleMode to PROPORTIONAL_OUTSIDE and crops the extra content that spills over the edges +area.attach(myImage, {scaleMode:ScaleMode.PROPORTIONAL_OUTSIDE, crop:true}); + +//if you'd like to preview the area visually, set preview to true (by default previewColor is red) +area.preview = true; + +//attach a CHANGE event listener to the area +area.addEventListener(Event.CHANGE, onAreaUpdate); +function onAreaUpdate(event:Event):void { + trace("updated AutoFitArea"); +} + +//to create an AutoFitArea exactly around a "myImage" DisplayObject so that it conforms its initial dimensions around the DisplayObject, use the static createAround() method: +var area:AutoFitArea = AutoFitArea.createAround(myImage); + + + * + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class AutoFitArea extends Shape { + /** @private **/ + public static const version:Number = 2.54; + + /** @private **/ + private static var _bd:BitmapData; + /** @private **/ + private static var _rect:Rectangle = new Rectangle(0, 0, 2800, 2800); + /** @private **/ + private static var _matrix:Matrix = new Matrix(); + + /** @private **/ + protected var _parent:DisplayObjectContainer; + /** @private **/ + protected var _previewColor:uint; + /** @private **/ + protected var _rootItem:AutoFitItem; + /** @private **/ + protected var _hasListener:Boolean; + /** @private **/ + protected var _preview:Boolean; + /** @private **/ + protected var _tweenMode:Boolean; + /** @private **/ + protected var _width:Number; + /** @private **/ + protected var _height:Number; + + /** + * Constructor + * + * @param parent The parent DisplayObjectContainer in which the AutoFitArea should be created. All objects that get attached must share the same parent. + * @param x x coordinate of the AutoFitArea's upper left corner + * @param y y coordinate of the AutoFitArea's upper left corner + * @param width width of the AutoFitArea + * @param height height of the AutoFitArea + * @param previewColor color of the AutoFitArea (which won't be seen unless you set preview to true or manually add it to the display list with addChild()) + */ + public function AutoFitArea(parent:DisplayObjectContainer, x:Number=0, y:Number=0, width:Number=100, height:Number=100, previewColor:uint=0xFF0000) { + super(); + super.x = x; + super.y = y; + if (parent == null) { + throw new Error("AutoFitArea parent cannot be null"); + } + _parent = parent; + _width = width; + _height = height; + _redraw(previewColor); + } + + /** + * Creates an AutoFitArea with its initial dimensions fit precisely around a target DisplayObject. It also attaches + * the target DisplayObject immediately. + * + * @param target The target DisplayObject whose position and dimensions the AutoFitArea should match initially. + * @param vars An object used for defining various optional parameters (see below for list) - this is more readable and concise than defining 11 or more normal arguments. + * For example, createAround(mc, {scaleMode:"proportionalOutside", crop:true}); instead of createAround(mc, "proportionalOutside", "center", "center", true, 0, 99999999, 0, 99999999, false, NaN, false);. + * The following optional parameters are recognized: + *
      + *
    • scaleMode : String - Determines how the target should be scaled to fit the area. Use the ScaleMode class constants: STRETCH, PROPORTIONAL_INSIDE, PROPORTIONAL_OUTSIDE, NONE, WIDTH_ONLY, or HEIGHT_ONLY
    • + *
    • hAlign : String - Horizontal alignment of the target inside the area. Use the AlignMode class constants: LEFT, CENTER, and RIGHT.
    • + *
    • vAlign : String - Vertical alignment of the target inside the area. Use the AlignMode class constants: TOP, CENTER, and BOTTOM.
    • + *
    • crop : Boolean - If true, a mask will be created and added to the display list so that the target will be cropped wherever it exceeds the bounds of the AutoFitArea.
    • + *
    • roundPosition : Boolean - To force the target's x/y position to snap to whole pixel values, set roundPosition to true (it is false by default).
    • + *
    • customBoundsTarget : DisplayObject - A DisplayObject that AutoFitArea/LiquidArea should use when measuring bounds instead of the target. For example, maybe the target contains 3 boxes arranged next to each other, left-to-right and instead of fitting ALL of those boxes into the area, you only want the center one fit into the area. In this case, you can define the customBoundsTarget as that center box so that the AutoFitArea/LiquidArea only uses it when calculating bounds. Make sure that the object is in the display list (its visible property can be set to false if you want to use an invisible object to define custom bounds).
    • + *
    • minWidth : Number - Minimum width to which the target is allowed to scale
    • + *
    • maxWidth : Number - Maximum width to which the target is allowed to scale
    • + *
    • minHeight : Number - Minimum height to which the target is allowed to scale
    • + *
    • maxHeight : Number - Maximum height to which the target is allowed to scale
    • + *
    • calculateVisible : Boolean - If true, only the visible portions of the target will be taken into account when determining its position and scale which can be useful for objects that have masks applied (otherwise, Flash reports their width/height and getBounds() values including the masked portions). Setting calculateVisible to true degrades performance, so only use it when absolutely necessary.
    • + *
    • customAspectRatio : Number - Normally if you set the scaleMode to PROPORTIONAL_INSIDE or PROPORTIONAL_OUTSIDE, its native (unscaled) dimensions will be used to determine the proportions (aspect ratio), but if you prefer to define a custom width-to-height ratio, use customAspectRatio. For example, if an item is 100 pixels wide and 50 pixels tall at its native size, the aspect ratio would be 100/50 or 2. If, however, you want it to be square (a 1-to-1 ratio), the customAspectRatio would be 1.
    • + *
    • previewColor : uint - The preview color of the AutoFitArea (default is 0xFF0000). To preview, you must set the AutoFitArea's visible property to true (it is false by default).
    • + *
    + * @return An AutoFitArea instance + */ + public static function createAround(target:DisplayObject, vars:Object=null, ...args):AutoFitArea { + if (vars == null || typeof(vars) == "string") { + //sensed old method - parse the params for backwards compatibility + vars = {scaleMode:vars || "proportionalInside", + hAlign:args[0] || "center", + vAlign:args[1] || "center", + crop:Boolean(args[2]), + minWidth:args[3] || 0, + maxWidth:(isNaN(args[4]) ? 999999999 : args[4]), + minHeight:args[5] || 0, + maxHeight:(isNaN(args[6]) ? 999999999 : args[6]), + calculateVisible:Boolean(args[8])}; + } + var boundsTarget:DisplayObject = (vars.customBoundsTarget is DisplayObject) ? vars.customBoundsTarget : target; + var previewColor:uint = isNaN(args[7]) ? (("previewColor" in vars) ? uint(vars.previewColor) : 0xFF0000) : args[7]; + var bounds:Rectangle = (vars.calculateVisible == true) ? getVisibleBounds(boundsTarget, target.parent) : boundsTarget.getBounds(target.parent); + var afa:AutoFitArea = new AutoFitArea(target.parent, bounds.x, bounds.y, bounds.width, bounds.height, previewColor); + afa.attach(target, vars); + return afa; + } + + /** + * Attaches a DisplayObject, causing it to automatically scale to fit the area in one of the + * following ScaleModes: STRETCH, PROPORTIONAL_INSIDE, PROPORTIONAL_OUTSIDE, NONE, WIDTH_ONLY, + * or HEIGHT_ONLY. Horizontally and vertically align the object within the area as well. + * When the area resizes, all attached DisplayObjects will automatically be moved/scaled accordingly. + * + * @param target The DisplayObject to attach and scale/stretch to fit within the area. + * @param vars An object used for defining various optional parameters (see below for list) - this is more readable and concise than defining 11 or more normal arguments. + * For example, attach(mc, {scaleMode:"proportionalOutside", crop:true}); instead of attach(mc, "proportionalOutside", "center", "center", true, 0, 99999999, 0, 99999999, false, NaN, false);. + * The following optional parameters are recognized: + *
      + *
    • scaleMode : String - Determines how the target should be scaled to fit the area. Use the ScaleMode class constants: STRETCH, PROPORTIONAL_INSIDE, PROPORTIONAL_OUTSIDE, NONE, WIDTH_ONLY, or HEIGHT_ONLY
    • + *
    • hAlign : String - Horizontal alignment of the target inside the area. Use the AlignMode class constants: LEFT, CENTER, and RIGHT.
    • + *
    • vAlign : String - Vertical alignment of the target inside the area. Use the AlignMode class constants: TOP, CENTER, and BOTTOM.
    • + *
    • crop : Boolean - If true, a mask will be created and added to the display list so that the target will be cropped wherever it exceeds the bounds of the AutoFitArea.
    • + *
    • roundPosition : Boolean - To force the target's x/y position to snap to whole pixel values, set roundPosition to true (it is false by default).
    • + *
    • customBoundsTarget : DisplayObject - A DisplayObject that AutoFitArea/LiquidArea should use when measuring bounds instead of the target. For example, maybe the target contains 3 boxes arranged next to each other, left-to-right and instead of fitting ALL of those boxes into the area, you only want the center one fit into the area. In this case, you can define the customBoundsTarget as that center box so that the AutoFitArea/LiquidArea only uses it when calculating bounds. Make sure that the object is in the display list (its visible property can be set to false if you want to use an invisible object to define custom bounds).
    • + *
    • minWidth : Number - Minimum width to which the target is allowed to scale
    • + *
    • maxWidth : Number - Maximum width to which the target is allowed to scale
    • + *
    • minHeight : Number - Minimum height to which the target is allowed to scale
    • + *
    • maxHeight : Number - Maximum height to which the target is allowed to scale
    • + *
    • calculateVisible : Boolean - If true, only the visible portions of the target will be taken into account when determining its position and scale which can be useful for objects that have masks applied (otherwise, Flash reports their width/height and getBounds() values including the masked portions). Setting calculateVisible to true degrades performance, so only use it when absolutely necessary.
    • + *
    • customAspectRatio : Number - Normally if you set the scaleMode to PROPORTIONAL_INSIDE or PROPORTIONAL_OUTSIDE, its native (unscaled) dimensions will be used to determine the proportions (aspect ratio), but if you prefer to define a custom width-to-height ratio, use customAspectRatio. For example, if an item is 100 pixels wide and 50 pixels tall at its native size, the aspect ratio would be 100/50 or 2. If, however, you want it to be square (a 1-to-1 ratio), the customAspectRatio would be 1.
    • + *
    + */ + public function attach(target:DisplayObject, vars:Object=null, ...args):void { + if (target.parent != _parent) { + throw new Error("The parent of the DisplayObject " + target.name + " added to AutoFitArea " + this.name + " doesn't share the same parent."); + } + if (vars == null || typeof(vars) == "string") { + //sensed old method - parse the params for backwards compatibility + vars = {scaleMode:vars || "proportionalInside", + hAlign:args[0] || "center", + vAlign:args[1] || "center", + crop:Boolean(args[2]), + minWidth:args[3] || 0, + maxWidth:(isNaN(args[4]) ? 999999999 : args[4]), + minHeight:args[5] || 0, + maxHeight:(isNaN(args[6]) ? 999999999 : args[6]), + calculateVisible:Boolean(args[7]), + customAspectRatio:Number(args[8]), + roundPosition:Boolean(args[9])}; + } + + release(target); + _rootItem = new AutoFitItem(target, vars, _rootItem); + if (vars != null && vars.crop == true) { + var shape:Shape = new Shape(); + var bounds:Rectangle = this.getBounds(this); + shape.graphics.beginFill(_previewColor, 1); + shape.graphics.drawRect(bounds.x, bounds.y, bounds.width, bounds.height); + shape.graphics.endFill(); + shape.visible = false; + _parent.addChild(shape); + _rootItem.mask = shape; + target.mask = shape; + } + if (_preview) { + this.preview = true; + } + update(null); + } + + /** + * Releases control of an attached DisplayObject. + * + * @param target The DisplayObject to release + * @return if the target was found and released, this value will be true. If the target isn't attached, it will be false. + */ + public function release(target:DisplayObject):Boolean { + var item:AutoFitItem = getItem(target); + if (item == null) { + return false; + } + if (item.mask != null) { + if (item.mask.parent) { + item.mask.parent.removeChild(item.mask); + } + target.mask = null; + item.mask = null; + } + if (item.next) { + item.next.prev = item.prev; + } + if (item.prev) { + item.prev.next = item.next; + } else if (item == _rootItem) { + _rootItem = item.next; + } + item.next = item.prev = null; + item.boundsTarget = null; + item.target = null; + return true; + } + + /** + * Returns an Array of all attached DisplayObjects. + * + * @return An array of all attached objects + */ + public function getAttachedObjects():Array { + var a:Array = []; + var cnt:uint = 0; + var item:AutoFitItem = _rootItem; + while (item) { + a[cnt++] = item.target; + item = item.next; + } + return a; + } + + /** @private **/ + protected function getItem(target:DisplayObject):AutoFitItem { + var item:AutoFitItem = _rootItem; + while (item) { + if (item.target == target) { + return item; + } + item = item.next; + } + return null; + } + + + /** + * Forces the area to update, making any necessary adjustments to the scale/position of attached objects. + * @param event An optional event (which is unused internally) - this makes it possible to have an ENTER_FRAME or some other listener call this method if, for example, you want the AutoFitArea to constantly update and make any adjustments to attached objects that may have resized or been manually moved. + **/ + public function update(event:Event=null):void { + //create local variables to speed things up + var width:Number = this.width; + var height:Number = this.height; + var x:Number = this.x; + var y:Number = this.y; + var matrix:Matrix = this.transform.matrix; + + var item:AutoFitItem = _rootItem; + var w:Number, h:Number, tx:Number, ty:Number, target:DisplayObject, innerBounds:Rectangle, outerBounds:Rectangle, tRatio:Number, scaleMode:String, ratio:Number, angle:Number, sin:Number, cos:Number, m:Matrix, wScale:Number, hScale:Number, mPrev:Matrix; + while (item) { + target = item.target; + scaleMode = item.scaleMode; + + if (scaleMode != ScaleMode.NONE) { + + //if the width or height is zero, we cannot effectively scale using multiplication/division, so make sure that the target is at least 1 pixel tall/wide before proceeding. Remember, it'll get adjusted back to what it should be later. + if (scaleMode != ScaleMode.HEIGHT_ONLY && target.width == 0) { + target.width = 1; + } + if (scaleMode != ScaleMode.WIDTH_ONLY && target.height == 0) { + target.height = 1; + } + + if (item.calculateVisible) { + innerBounds = item.bounds = getVisibleBounds(item.boundsTarget, target); + outerBounds = getVisibleBounds(item.boundsTarget, _parent); + } else { + innerBounds = item.boundsTarget.getBounds(target); + outerBounds = item.boundsTarget.getBounds(_parent); + } + tRatio = (item.hasCustomRatio) ? item.aspectRatio : innerBounds.width / innerBounds.height; + + m = target.transform.matrix; + if (m.b != 0 || m.a == 0 || m.d == 0) { + //if the width/height is zero, we cannot accurately measure the angle. + if (m.a == 0 || m.d == 0) { + m = target.transform.matrix = item.matrix; + } else { + //inline operations are about 10 times faster than doing item.matrix = m.clone(); + mPrev = item.matrix; + mPrev.a = m.a; + mPrev.b = m.b; + mPrev.c = m.c; + mPrev.d = m.d; + mPrev.tx = m.tx; + mPrev.ty = m.ty; + } + angle = Math.atan2(m.b, m.a); + if (m.a < 0 && m.d >= 0) { + if (angle <= 0) { + angle += Math.PI; + } else { + angle -= Math.PI; + } + } + sin = Math.sin(angle); + if (sin < 0) { + sin = -sin; + } + cos = Math.cos(angle); + if (cos < 0) { + cos = -cos; + } + tRatio = (tRatio * cos + sin) / (tRatio * sin + cos); + } + + w = (width > item.maxWidth) ? item.maxWidth : (width < item.minWidth) ? item.minWidth : width; + h = (height > item.maxHeight) ? item.maxHeight : (height < item.minHeight) ? item.minHeight : height; + ratio = w / h; + + if ((tRatio < ratio && scaleMode == ScaleMode.PROPORTIONAL_INSIDE) || (tRatio > ratio && scaleMode == ScaleMode.PROPORTIONAL_OUTSIDE)) { + w = h * tRatio; + if (w == 0) { + h = 0; + } else if (w > item.maxWidth) { + w = item.maxWidth; + h = w / tRatio; + } else if (w < item.minWidth) { + w = item.minWidth; + h = w / tRatio; + } + } + if ((tRatio > ratio && scaleMode == ScaleMode.PROPORTIONAL_INSIDE) || (tRatio < ratio && scaleMode == ScaleMode.PROPORTIONAL_OUTSIDE)) { + h = w / tRatio; + if (h > item.maxHeight) { + h = item.maxHeight; + w = h * tRatio; + } else if (h < item.minHeight) { + h = item.minHeight; + w = h * tRatio; + } + } + + if (w != 0 && h != 0) { + wScale = w / outerBounds.width; + hScale = h / outerBounds.height; + } else { + wScale = hScale = 0; + } + + if (scaleMode != ScaleMode.HEIGHT_ONLY) { + if (item.calculateVisible) { + item.scaleVisibleWidth(wScale); + } else if (m.b != 0) { + m.a *= wScale; + m.c *= wScale; + target.transform.matrix = m; + } else { + target.width *= wScale; + } + } + if (scaleMode != ScaleMode.WIDTH_ONLY) { + if (item.calculateVisible) { + item.scaleVisibleHeight(hScale); + } else if (m.b != 0) { + m.d *= hScale; + m.b *= hScale; + target.transform.matrix = m; + } else { + target.height *= hScale; + } + } + + } + + if (item.hasDrawNow) { //some components incorrectly report getBounds() until after we drawNow() + Object(target).drawNow(); + } + + if (scaleMode != ScaleMode.NONE && innerBounds.x == 0 && innerBounds.y == 0) { //for optimization + if (scaleMode != ScaleMode.HEIGHT_ONLY) { + outerBounds.width = w; + } + if (scaleMode != ScaleMode.WIDTH_ONLY) { + outerBounds.height = h; + } + } else { + outerBounds = (item.calculateVisible) ? getVisibleBounds(item.boundsTarget, _parent) : item.boundsTarget.getBounds(_parent); + } + + tx = target.x; + ty = target.y; + if (item.hAlign == AlignMode.LEFT) { + tx += (x - outerBounds.x); + } else if (item.hAlign == AlignMode.CENTER) { + tx += (x - outerBounds.x) + ((width - outerBounds.width) * 0.5); + } else if (item.hAlign == AlignMode.RIGHT) { + tx += (x - outerBounds.x) + (width - outerBounds.width); + } + + if (item.vAlign == AlignMode.TOP) { + ty += (y - outerBounds.y); + } else if (item.vAlign == AlignMode.CENTER) { + ty += (y - outerBounds.y) + ((height - outerBounds.height) * 0.5); + } else if (item.vAlign == AlignMode.BOTTOM) { + ty += (y - outerBounds.y) + (height - outerBounds.height); + } + + if (item.roundPosition) { + tx = (tx + 0.5) >> 0; //much faster than Math.round() + ty = (ty + 0.5) >> 0; + } + + target.x = tx; + target.y = ty; + + if (item.mask) { + item.mask.transform.matrix = matrix; + } + + item = item.next; + } + + if (_hasListener) { + dispatchEvent(new Event(Event.CHANGE)); + } + } + + /** + * Enables the area's tween mode; normally, any changes to the area's transform properties like + * x, y, scaleX, scaleY, width, or height will force an immediate + * update() call but when the area is in tween mode, that automatic update() + * is suspended. This effects perfomance because if, for example, you tween the area's x, y, width, + * and height properties simultaneously, update() would get called 4 times + * each frame (once for each property) even though it only really needs to be called once after all + * properties were updated inside the tween. So to maximize performance during a tween, it is best + * to use the tween's onStart to call enableTweenMode() at the beginning + * of the tween, use the tween's onUpdate to call the area's update() method, + * and then the tween's onComplete to call disableTweenMode() like so:

    + * + * TweenLite.to(myArea, 3, {x:100, y:50, width:300, height:250, onStart:myArea.enableTweenMode, onUpdate:myArea.update, onComplete:myArea.disableTweenMode});

    + **/ + public function enableTweenMode():void { + _tweenMode = true; + } + + /** + * Disables the area's tween mode; normally, any changes to the area's transform properties like + * x, y, scaleX, scaleY, width, or height will force an immediate + * update() call but when the area is in tween mode, that automatic update() + * is suspended. This effects perfomance because if, for example, you tween the area's x, y, width, + * and height properties simultaneously, update() would get called 4 times + * each frame (once for each property) even though it only really needs to be called once after all + * properties were updated inside the tween. So to maximize performance during a tween, it is best + * to use the tween's onStart to call enableTweenMode() at the beginning + * of the tween, use the tween's onUpdate to call the area's update() method, + * and then the tween's onComplete to call disableTweenMode() like so:

    + * + * TweenLite.to(myArea, 3, {x:100, y:50, width:300, height:250, onStart:myArea.enableTweenMode, onUpdate:myArea.update, onComplete:myArea.disableTweenMode});

    + **/ + public function disableTweenMode():void { + _tweenMode = false; + } + + /** + * Allows you to add an Event.CHANGE event listener. + * + * @param type Event type (Event.CHANGE) + * @param listener Listener function + * @param useCapture useCapture + * @param priority Priority level + * @param useWeakReference Use weak references + */ + override public function addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false):void { + _hasListener = true; + super.addEventListener(type, listener, useCapture, priority, useWeakReference); + } + + /** Destroys the instance by releasing all DisplayObjects, setting preview to false, and nulling references to the parent, ensuring that garbage collection isn't hindered. **/ + public function destroy():void { + if (_preview) { + this.preview = false; + } + var nxt:AutoFitItem; + var item:AutoFitItem = _rootItem; + while (item) { + nxt = item.next; + release(item.target); + item = nxt; + } + if (_bd != null) { + _bd.dispose(); + _bd = null; + } + _parent = null; + } + + /** @private For objects with masks, the only way to accurately report the bounds of the visible areas is to use BitmapData. **/ + protected static function getVisibleBounds(target:DisplayObject, targetCoordinateSpace:DisplayObject):Rectangle { + if (_bd == null) { + _bd = new BitmapData(2800, 2800, true, 0x00FFFFFF); + } + var msk:DisplayObject = target.mask; + target.mask = null; + _bd.fillRect(_rect, 0x00FFFFFF); + _matrix.tx = _matrix.ty = 0; + var offset:Rectangle = target.getBounds(targetCoordinateSpace); + var m:Matrix = (targetCoordinateSpace == target) ? _matrix : target.transform.matrix; + m.tx -= offset.x; + m.ty -= offset.y; + _bd.draw(target, m, null, "normal", _rect, false); + var bounds:Rectangle = _bd.getColorBoundsRect(0xFF000000, 0x00000000, false); + bounds.x += offset.x; + bounds.y += offset.y; + target.mask = msk; + return bounds; + } + + /** @private **/ + protected function _redraw(color:uint):void { + _previewColor = color; + var g:Graphics = this.graphics; + g.clear(); + g.beginFill(_previewColor, 1); + g.drawRect(0, 0, _width, _height); + g.endFill(); + } + +//---- GETTERS / SETTERS --------------------------------------------------------------------------- + + /** @inheritDoc **/ + override public function set x(value:Number):void { + super.x = value; + if (!_tweenMode) { + update(); + } + } + + /** @inheritDoc **/ + override public function set y(value:Number):void { + super.y = value; + if (!_tweenMode) { + update(); + } + } + + /** @inheritDoc **/ + override public function set width(value:Number):void { + super.width = value; + if (!_tweenMode) { + update(); + } + } + + /** @inheritDoc **/ + override public function set height(value:Number):void { + super.height = value; + if (!_tweenMode) { + update(); + } + } + + /** @inheritDoc **/ + override public function set scaleX(value:Number):void { + super.scaleX = value; + update(); + } + + /** @inheritDoc **/ + override public function set scaleY(value:Number):void { + super.scaleY = value; + update(); + } + + /** @inheritDoc **/ + override public function set rotation(value:Number):void { + trace("Warning: AutoFitArea instances should not be rotated."); + } + + /** The preview color with which the area should be filled, making it easy to visualize on the stage. You will not see this color unless you set preview to true or manually add the area to the display list with addChild(). **/ + public function get previewColor():uint { + return _previewColor; + } + public function set previewColor(value:uint):void { + _redraw(value); + } + + /** To see a visual representation of the area on the screen, set preview to true. Doing so will add the area to the display list behind any DisplayObjects that have been attached. **/ + public function get preview():Boolean { + return _preview; + } + public function set preview(value:Boolean):void { + _preview = value; + if (this.parent == _parent) { + _parent.removeChild(this); + } + if (value) { + var level:uint = (_rootItem == null) ? 0 : 999999999; + var index:uint; + var item:AutoFitItem = _rootItem; + while (item) { + if (item.target.parent == _parent) { + index = _parent.getChildIndex(item.target); + if (index < level) { + level = index; + } + } + item = item.next; + } + _parent.addChildAt(this, level); + this.visible = true; + } + } + + } +} + +import flash.display.BitmapData; +import flash.display.DisplayObject; +import flash.display.Shape; +import flash.geom.Matrix; +import flash.geom.Rectangle; + +internal class AutoFitItem { + public var target:DisplayObject; + public var scaleMode:String; + public var hAlign:String; + public var vAlign:String; + public var minWidth:Number; + public var maxWidth:Number; + public var minHeight:Number; + public var maxHeight:Number; + public var aspectRatio:Number; + public var mask:Shape; + public var matrix:Matrix; + public var hasCustomRatio:Boolean; + public var roundPosition:Boolean; + + public var next:AutoFitItem; + public var prev:AutoFitItem; + + public var calculateVisible:Boolean; + public var boundsTarget:DisplayObject; + public var bounds:Rectangle; + public var hasDrawNow:Boolean; + + /** @private **/ + public function AutoFitItem(target:DisplayObject, vars:Object, next:AutoFitItem) { + this.target = target; + if (vars == null) { + vars = {}; + } + this.scaleMode = vars.scaleMode || "proportionalInside"; + this.hAlign = vars.hAlign || "center"; + this.vAlign = vars.vAlign || "center"; + this.minWidth = Number(vars.minWidth) || 0; + this.maxWidth = isNaN(vars.maxWidth) ? 999999999 : Number(vars.maxWidth); + this.minHeight = Number(vars.minHeight) || 0; + this.maxHeight = isNaN(vars.maxHeight) ? 999999999 : Number(vars.maxHeight); + this.roundPosition = Boolean(vars.roundPosition); + this.boundsTarget = (vars.customBoundsTarget is DisplayObject) ? vars.customBoundsTarget : this.target; + this.matrix = target.transform.matrix; + this.calculateVisible = Boolean(vars.calculateVisible); + this.hasDrawNow = this.target.hasOwnProperty("drawNow"); + if (this.hasDrawNow) { + Object(this.target).drawNow(); //just to make sure we're starting with the correct values if it's a component. + } + if (!isNaN(vars.customAspectRatio)) { + this.aspectRatio = vars.customAspectRatio; + this.hasCustomRatio = true; + } + if (next) { + next.prev = this; + this.next = next; + } + } + + /** @private **/ + public function setVisibleWidth(value:Number):void { + var m:Matrix = this.target.transform.matrix; + if ((m.a == 0 && m.c == 0) || (m.d == 0 && m.b == 0)) { + m.a = this.matrix.a; + m.c = this.matrix.c; + } + var curWidth:Number = (m.a < 0) ? -m.a * this.bounds.width : m.a * this.bounds.width; + curWidth += (m.c < 0) ? -m.c * this.bounds.height : m.c * this.bounds.height; + if (curWidth != 0) { + var scale:Number = value / curWidth; + m.a *= scale; + m.c *= scale; + this.target.transform.matrix = m; + if (value != 0) { + this.matrix = m; + } + } + } + + /** @private **/ + public function setVisibleHeight(value:Number):void { + var m:Matrix = this.target.transform.matrix; + if ((m.a == 0 && m.c == 0) || (m.d == 0 && m.b == 0)) { + m.b = this.matrix.b; + m.d = this.matrix.d; + } + var curHeight:Number = (m.b < 0) ? -m.b * this.bounds.width : m.b * this.bounds.width; + curHeight += (m.d < 0) ? -m.d * this.bounds.height : m.d * this.bounds.height; + if (curHeight != 0) { + var scale:Number = value / curHeight; + m.b *= scale; + m.d *= scale; + this.target.transform.matrix = m; + if (value != 0) { + this.matrix = m; + } + } + } + + /** @private **/ + public function scaleVisibleWidth(value:Number):void { + var m:Matrix = this.target.transform.matrix; + m.a *= value; + m.c *= value; + this.target.transform.matrix = m; + if (value != 0) { + this.matrix = m; + } + } + + /** @private **/ + public function scaleVisibleHeight(value:Number):void { + var m:Matrix = this.target.transform.matrix; + m.b *= value; + m.d *= value; + this.target.transform.matrix = m; + if (value != 0) { + this.matrix = m; + } + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/layout/ScaleMode.as b/FairyGUI-as3/src/com/greensock/layout/ScaleMode.as new file mode 100644 index 0000000..e2b5311 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/layout/ScaleMode.as @@ -0,0 +1,31 @@ +/** + * VERSION: 1.04 + * DATE: 2010-03-06 + * AS3 + * UPDATES AND DOCUMENTATION AT: http://blog.greensock.com/ + **/ + package com.greensock.layout { +/** + * Provides constants for defining how objects should scale/stretch to fit within an area (like a LiquidArea or AutoFitArea). + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class ScaleMode { + + /** Stretches the object to fill the area completely in terms of both width and height. This mode does NOT concern itself with preserving the object's original aspect ratio (proportions). **/ + public static const STRETCH:String = "stretch"; + /** Stretches the object's width to fill the area horizontally, but does not affect its height **/ + public static const WIDTH_ONLY:String = "widthOnly"; + /** Stretches the object's height to fill the area vertically, but does not affect its width **/ + public static const HEIGHT_ONLY:String = "heightOnly"; + /** Scales the object proportionally to completely fill the area, allowing portions of it to exceed the bounds when its aspect ratio doesn't match the area's. For example, if the area is 100x50 and the DisplayObject is natively 200x200, it will scale it down to 100x100 meaning it will exceed the bounds of the area vertically. **/ + public static const PROPORTIONAL_OUTSIDE:String = "proportionalOutside"; + /** Scales the object proportionally to fit inside the area (its edges will never exceed the bounds of the area). For example, if the area is 100x50 and the DisplayObject is natively 200x200, it will scale it down to 50x50 meaning it will not fill the area horizontally, but it will vertically. **/ + public static const PROPORTIONAL_INSIDE:String = "proportionalInside"; + /** Does not scale the object at all **/ + public static const NONE:String = "none"; + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/loading/.DS_Store b/FairyGUI-as3/src/com/greensock/loading/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..627b3af6c033ae659c9ee4621db78f974f53a6d1 GIT binary patch literal 6148 zcmeHK%}T>S5T0$LO;Dj1L2rxaB5jr0gNG0*coZslP|>6*HV~SUq!uaFh%e+j_zpgg zGrMc4RBs|uW?=T4ou6IyOWExJfbhm)1E2~3HY#Ds!QmUBIO&pF!c8wGI^ z;QVzdn;rj=0s3|p^dNy0`itK$7{yVR*X!@1RJPXEE4Jg48<{PbGcxu1_S&ren4%+CiHQTBO~#Asic?29PO2RGH->9l!pRFmyyYgUufM!kMe zlZUPLZ06XuQ+>0y_x6uZ&;8lsQ}L|H6Zkt*vSsiSUeK7IBg}enfLl^ zgs#Ctqq;h9P%QwWg>EHiQ!ha^(x7Xw(1;Nfp-T~UsW2^u(BB(O!Fbk z&cbvkLhX+0OO+17)yN|=zzlq4psc4=djC&;?*G3Q@r)T@23CpzVRgD4507Nt)}_PI vTPsm-QAsGT&^RwaLp{ZqOHc6*suJ`|G7w#Zg+}zC@E-w10}sr=pEB?PBZXK% literal 0 HcmV?d00001 diff --git a/FairyGUI-as3/src/com/greensock/loading/BinaryDataLoader.as b/FairyGUI-as3/src/com/greensock/loading/BinaryDataLoader.as new file mode 100644 index 0000000..94bce1d --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/loading/BinaryDataLoader.as @@ -0,0 +1,137 @@ +/** + * VERSION: 1.84 + * DATE: 2011-03-23 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/loadermax/ + **/ +package com.greensock.loading { + import flash.events.Event; + +/** + * Loads generic binary data - identical to using a DataLoader with its "format" + * special property set to "binary". The reason for having a BinaryDataLoader + * class is to allow certain file extensions (like ".zip") to be associated with it so that the + * LoaderMax.parse() method can accurately parse URLs with those file extensions. If you do + * not plan on using the LoaderMax.parse() method, however, you could save a small amount + * of kb by simply using DataLoaders with their format set to "binary" instead of using BinaryDataLoaders. + * + *

    The following are essentially the same:

    + * +new DataLoader("file.zip", {format:"binary"}); +new BinaryDataLoader("file.zip"); + + * + *

    If you'd like to associate additional file extensions with BinaryDataLoader, you may use the + * LoaderMax.registerFileType() method.

    + * + *

    OPTIONAL VARS PROPERTIES

    + *

    The following special properties can be passed into the BinaryDataLoader constructor via its vars + * parameter which can be either a generic object or a DataLoaderVars object:

    + *
      + *
    • name : String - A name that is used to identify the loader instance. This name can be fed to the LoaderMax.getLoader() or LoaderMax.getContent() methods or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21".
    • + *
    • alternateURL : String - If you define an alternateURL, the loader will initially try to load from its original url and if it fails, it will automatically (and permanently) change the loader's url to the alternateURL and try again. Think of it as a fallback or backup url. It is perfectly acceptable to use the same alternateURL for multiple loaders (maybe a default image for various ImageLoaders for example).
    • + *
    • noCache : Boolean - If true, a "gsCacheBusterID" parameter will be appended to the url with a random set of numbers to prevent caching (don't worry, this info is ignored when you LoaderMax.getLoader() or LoaderMax.getContent() by url or when you're running locally)
    • + *
    • estimatedBytes : uint - Initially, the loader's bytesTotal is set to the estimatedBytes value (or LoaderMax.defaultEstimatedBytes if one isn't defined). Then, when the loader begins loading and it can accurately determine the bytesTotal, it will do so. Setting estimatedBytes is optional, but the more accurate the value, the more accurate your loaders' overall progress will be initially. If the loader is inserted into a LoaderMax instance (for queue management), its auditSize feature can attempt to automatically determine the bytesTotal at runtime (there is a slight performance penalty for this, however - see LoaderMax's documentation for details).
    • + *
    • requireWithRoot : DisplayObject - LoaderMax supports subloading, where an object can be factored into a parent's loading progress. If you want LoaderMax to require this BinaryDataLoader as part of its parent SWFLoader's progress, you must set the requireWithRoot property to your swf's root. For example, var loader:BinaryDataLoader = new BinaryDataLoader("file.zip", {name:"zipFile", requireWithRoot:this.root});
    • + *
    • allowMalformedURL : Boolean - Normally, the URL will be parsed and any variables in the query string (like "?name=test&state=il&gender=m") will be placed into a URLVariables object which is added to the URLRequest. This avoids a few bugs in Flash, but if you need to keep the entire URL intact (no parsing into URLVariables), set allowMalformedURL:true. For example, if your URL has duplicate variables in the query string like http://www.greensock.com/?c=S&c=SE&c=SW, it is technically considered a malformed URL and a URLVariables object can't properly contain all the duplicates, so in this case you'd want to set allowMalformedURL to true.
    • + *
    • autoDispose : Boolean - When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false. + * + *

      ----EVENT HANDLER SHORTCUTS----

    • + *
    • onOpen : Function - A handler function for LoaderEvent.OPEN events which are dispatched when the loader begins loading. Make sure your onOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onProgress : Function - A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.
    • + *
    • onComplete : Function - A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading successfully. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onCancel : Function - A handler function for LoaderEvent.CANCEL events which are dispatched when loading is aborted due to either a failure or because another loader was prioritized or cancel() was manually called. Make sure your onCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onError : Function - A handler function for LoaderEvent.ERROR events which are dispatched whenever the loader experiences an error (typically an IO_ERROR or SECURITY_ERROR). An error doesn't necessarily mean the loader failed, however - to listen for when a loader fails, use the onFail special property. Make sure your onError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onFail : Function - A handler function for LoaderEvent.FAIL events which are dispatched whenever the loader fails and its status changes to LoaderStatus.FAILED. Make sure your onFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onIOError : Function - A handler function for LoaderEvent.IO_ERROR events which will also call the onError handler, so you can use that as more of a catch-all whereas onIOError is specifically for LoaderEvent.IO_ERROR events. Make sure your onIOError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onHTTPStatus : Function - A handler function for LoaderEvent.HTTP_STATUS events. Make sure your onHTTPStatus function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can determine the httpStatus code using the LoaderEvent's target.httpStatus (LoaderItems keep track of their httpStatus when possible, although certain environments prevent Flash from getting httpStatus information).
    • + *
    + * + *

    Note: Using a DataLoaderVars instance + * instead of a generic object to define your vars is a bit more verbose but provides + * code hinting and improved debugging because it enforces strict data typing. Use whichever one you prefer.

    + * + * Example AS3 code:+ import com.greensock.loading.~~; + import com.greensock.events.LoaderEvent; + + //create a BinaryDataLoader + var loader:BinaryDataLoader = new BinaryDataLoader("file.zip", {name:"myZipFile", requireWithRoot:this.root, estimatedBytes:6800}); + + //begin loading + loader.load(); + + //or we could parse() and array of files, creating a LoaderMax queue with loaders for each file. To do that, we'll first create the array: + var files:Array = ["files/archive.zip","images/1.jpg","files/report.pdf","swfs/child.swf"]; + + //since we want the parse() method to recognize the .pdf file as a BinaryDataLoader, we should registerFileType() first because pdf isn't one of the extensions recognized by default. + LoaderMax.registerFileType("pdf", BinaryDataLoader); + + //before we parse() the array, we need to activate() the loader types that LoaderMax should recognize (we only need to do this once) + LoaderMax.activate([BinaryDataLoader, ImageLoader, SWFLoader]); + + //now parse the files and create a LoaderMax queue + var queue:LoaderMax = LoaderMax.parse(files, {onProgress:progressHandler, onComplete:completeHandler, onChildFail:childFailHandler}); + queue.load(); + + function progressHandler(event:LoaderEvent):void { + trace("progress: " + event.target.progress); + } + + function completeHandler(event:LoaderEvent):void { + trace("completed " + event.target); + } + + function childFailHandler(event:LoaderEvent):void { + trace(event.target + " failed."); + } + + + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @see com.greensock.loading.data.DataLoaderVars + * + * @author Jack Doyle, jack@greensock.com + */ + public class BinaryDataLoader extends DataLoader { + /** @private **/ + private static var _classActivated:Boolean = _activateClass("BinaryDataLoader", BinaryDataLoader, "zip"); + + /** + * Constructor + * + * @param urlOrRequest The url (String) or URLRequest from which the loader should get its content. + * @param vars An object containing optional configuration details. For example: new BinaryDataLoader("file.zip", {name:"myZipFile", onComplete:completeHandler, onProgress:progressHandler}). + * + *

    The following special properties can be passed into the constructor via the vars parameter + * which can be either a generic object or a DataLoaderVars object:

    + *
      + *
    • name : String - A name that is used to identify the loader instance. This name can be fed to the LoaderMax.getLoader() or LoaderMax.getContent() methods or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21".
    • + *
    • alternateURL : String - If you define an alternateURL, the loader will initially try to load from its original url and if it fails, it will automatically (and permanently) change the loader's url to the alternateURL and try again. Think of it as a fallback or backup url. It is perfectly acceptable to use the same alternateURL for multiple loaders (maybe a default image for various ImageLoaders for example).
    • + *
    • noCache : Boolean - If true, a "gsCacheBusterID" parameter will be appended to the url with a random set of numbers to prevent caching (don't worry, this info is ignored when you LoaderMax.getLoader() or LoaderMax.getContent() by url or when you're running locally)
    • + *
    • estimatedBytes : uint - Initially, the loader's bytesTotal is set to the estimatedBytes value (or LoaderMax.defaultEstimatedBytes if one isn't defined). Then, when the loader begins loading and it can accurately determine the bytesTotal, it will do so. Setting estimatedBytes is optional, but the more accurate the value, the more accurate your loaders' overall progress will be initially. If the loader is inserted into a LoaderMax instance (for queue management), its auditSize feature can attempt to automatically determine the bytesTotal at runtime (there is a slight performance penalty for this, however - see LoaderMax's documentation for details).
    • + *
    • requireWithRoot : DisplayObject - LoaderMax supports subloading, where an object can be factored into a parent's loading progress. If you want LoaderMax to require this BinaryDataLoader as part of its parent SWFLoader's progress, you must set the requireWithRoot property to your swf's root. For example, var loader:BinaryDataLoader = new BinaryDataLoader("file.zip", {name:"myZipFile", requireWithRoot:this.root});
    • + *
    • allowMalformedURL : Boolean - Normally, the URL will be parsed and any variables in the query string (like "?name=test&state=il&gender=m") will be placed into a URLVariables object which is added to the URLRequest. This avoids a few bugs in Flash, but if you need to keep the entire URL intact (no parsing into URLVariables), set allowMalformedURL:true. For example, if your URL has duplicate variables in the query string like http://www.greensock.com/?c=S&c=SE&c=SW, it is technically considered a malformed URL and a URLVariables object can't properly contain all the duplicates, so in this case you'd want to set allowMalformedURL to true.
    • + *
    • autoDispose : Boolean - When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false. + * + *

      ----EVENT HANDLER SHORTCUTS----

    • + *
    • onOpen : Function - A handler function for LoaderEvent.OPEN events which are dispatched when the loader begins loading. Make sure your onOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onProgress : Function - A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.
    • + *
    • onComplete : Function - A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading successfully. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onCancel : Function - A handler function for LoaderEvent.CANCEL events which are dispatched when loading is aborted due to either a failure or because another loader was prioritized or cancel() was manually called. Make sure your onCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onError : Function - A handler function for LoaderEvent.ERROR events which are dispatched whenever the loader experiences an error (typically an IO_ERROR or SECURITY_ERROR). An error doesn't necessarily mean the loader failed, however - to listen for when a loader fails, use the onFail special property. Make sure your onError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onFail : Function - A handler function for LoaderEvent.FAIL events which are dispatched whenever the loader fails and its status changes to LoaderStatus.FAILED. Make sure your onFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onIOError : Function - A handler function for LoaderEvent.IO_ERROR events which will also call the onError handler, so you can use that as more of a catch-all whereas onIOError is specifically for LoaderEvent.IO_ERROR events. Make sure your onIOError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onHTTPStatus : Function - A handler function for LoaderEvent.HTTP_STATUS events. Make sure your onHTTPStatus function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can determine the httpStatus code using the LoaderEvent's target.httpStatus (LoaderItems keep track of their httpStatus when possible, although certain environments prevent Flash from getting httpStatus information).
    • + *
    + * @see com.greensock.loading.data.DataLoaderVars + */ + public function BinaryDataLoader(urlOrRequest:*, vars:Object=null) { + super(urlOrRequest, vars); + _loader.dataFormat = "binary"; //just to make sure it wasn't overridden if the "format" special vars property was passed into in DataLoader's constructor. + _type = "BinaryDataLoader"; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/loading/CSSLoader.as b/FairyGUI-as3/src/com/greensock/loading/CSSLoader.as new file mode 100644 index 0000000..1025024 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/loading/CSSLoader.as @@ -0,0 +1,139 @@ +/** + * VERSION: 1.84 + * DATE: 2011-03-23 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/loadermax/ + **/ +package com.greensock.loading { + import flash.events.Event; + import flash.text.StyleSheet; + + /** Dispatched when the loader's httpStatus value changes. **/ + [Event(name="httpStatus", type="com.greensock.events.LoaderEvent")] +/** + * Loads StyleSheet (CSS) data. + * + *

    OPTIONAL VARS PROPERTIES

    + *

    The following special properties can be passed into the CSSLoader constructor via its vars + * parameter which can be either a generic object or a CSSLoaderVars object:

    + *
      + *
    • name : String - A name that is used to identify the loader instance. This name can be fed to the LoaderMax.getLoader() or LoaderMax.getContent() methods or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21".
    • + *
    • alternateURL : String - If you define an alternateURL, the loader will initially try to load from its original url and if it fails, it will automatically (and permanently) change the loader's url to the alternateURL and try again. Think of it as a fallback or backup url. It is perfectly acceptable to use the same alternateURL for multiple loaders (maybe a default image for various ImageLoaders for example).
    • + *
    • noCache : Boolean - If true, a "gsCacheBusterID" parameter will be appended to the url with a random set of numbers to prevent caching (don't worry, this info is ignored when you LoaderMax.getLoader() or LoaderMax.getContent() by url or when you're running locally)
    • + *
    • estimatedBytes : uint - Initially, the loader's bytesTotal is set to the estimatedBytes value (or LoaderMax.defaultEstimatedBytes if one isn't defined). Then, when the loader begins loading and it can accurately determine the bytesTotal, it will do so. Setting estimatedBytes is optional, but the more accurate the value, the more accurate your loaders' overall progress will be initially. If the loader is inserted into a LoaderMax instance (for queue management), its auditSize feature can attempt to automatically determine the bytesTotal at runtime (there is a slight performance penalty for this, however - see LoaderMax's documentation for details).
    • + *
    • requireWithRoot : DisplayObject - LoaderMax supports subloading, where an object can be factored into a parent's loading progress. If you want LoaderMax to require this CSSLoader as part of its parent SWFLoader's progress, you must set the requireWithRoot property to your swf's root. For example, var loader:CSSLoader = new CSSLoader("styles.css", {name:"styles", requireWithRoot:this.root});
    • + *
    • allowMalformedURL : Boolean - Normally, the URL will be parsed and any variables in the query string (like "?name=test&state=il&gender=m") will be placed into a URLVariables object which is added to the URLRequest. This avoids a few bugs in Flash, but if you need to keep the entire URL intact (no parsing into URLVariables), set allowMalformedURL:true. For example, if your URL has duplicate variables in the query string like http://www.greensock.com/?c=S&c=SE&c=SW, it is technically considered a malformed URL and a URLVariables object can't properly contain all the duplicates, so in this case you'd want to set allowMalformedURL to true.
    • + *
    • autoDispose : Boolean - When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false. + * + *

      ----EVENT HANDLER SHORTCUTS----

    • + *
    • onOpen : Function - A handler function for LoaderEvent.OPEN events which are dispatched when the loader begins loading. Make sure your onOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onProgress : Function - A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.
    • + *
    • onComplete : Function - A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading successfully. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onCancel : Function - A handler function for LoaderEvent.CANCEL events which are dispatched when loading is aborted due to either a failure or because another loader was prioritized or cancel() was manually called. Make sure your onCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onError : Function - A handler function for LoaderEvent.ERROR events which are dispatched whenever the loader experiences an error (typically an IO_ERROR or SECURITY_ERROR). An error doesn't necessarily mean the loader failed, however - to listen for when a loader fails, use the onFail special property. Make sure your onError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onFail : Function - A handler function for LoaderEvent.FAIL events which are dispatched whenever the loader fails and its status changes to LoaderStatus.FAILED. Make sure your onFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onIOError : Function - A handler function for LoaderEvent.IO_ERROR events which will also call the onError handler, so you can use that as more of a catch-all whereas onIOError is specifically for LoaderEvent.IO_ERROR events. Make sure your onIOError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onHTTPStatus : Function - A handler function for LoaderEvent.HTTP_STATUS events. Make sure your onHTTPStatus function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can determine the httpStatus code using the LoaderEvent's target.httpStatus (LoaderItems keep track of their httpStatus when possible, although certain environments prevent Flash from getting httpStatus information).
    • + *
    + * + *

    Note: Using a CSSLoaderVars instance + * instead of a generic object to define your vars is a bit more verbose but provides + * code hinting and improved debugging because it enforces strict data typing. Use whichever one you prefer.

    + * + *

    content data type: flash.text.StyleSheet

    + * + * Example AS3 code:+ import com.greensock.loading.~~; + import com.greensock.events.LoaderEvent; + import import flash.text.StyleSheet; + + //create a CSSLoader + var loader:CSSLoader = new CSSLoader("css/styles.css", {name:"myCSS", requireWithRoot:this.root, estimatedBytes:900}); + + //begin loading + loader.load(); + + //Or you could put the CSSLoader into a LoaderMax. Create one first... + var queue:LoaderMax = new LoaderMax({name:"mainQueue", onProgress:progressHandler, onComplete:completeHandler, onError:errorHandler}); + + //append the CSSLoader and several other loaders + queue.append( loader ); + queue.append( new SWFLoader("swf/main.swf", {name:"mainSWF", estimatedBytes:4800}) ); + queue.append( new ImageLoader("img/photo1.jpg", {name:"photo1", estimatedBytes:3500}) ); + + //start loading + queue.load(); + + function progressHandler(event:LoaderEvent):void { + trace("progress: " + event.target.progress); + } + + function completeHandler(event:LoaderEvent):void { + myTextField.styleSheet = LoaderMax.getContent("myCSS"); + trace("load complete."); + } + + function errorHandler(event:LoaderEvent):void { + trace("error occured with " + event.target + ": " + event.text); + } + + + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @see com.greensock.loading.data.CSSLoaderVars + * + * @author Jack Doyle, jack@greensock.com + */ + public class CSSLoader extends DataLoader { + /** @private **/ + private static var _classActivated:Boolean = _activateClass("CSSLoader", CSSLoader, "css"); + + /** + * Constructor + * + * @param urlOrRequest The url (String) or URLRequest from which the loader should get its content. + * @param vars An object containing optional configuration details. For example: new CSSLoader("css/styles.css", {name:"myCSS", onComplete:completeHandler, onProgress:progressHandler}). + * + *

    The following special properties can be passed into the constructor via the vars parameter + * which can be either a generic object or a CSSLoaderVars object:

    + *
      + *
    • name : String - A name that is used to identify the loader instance. This name can be fed to the LoaderMax.getLoader() or LoaderMax.getContent() methods or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21".
    • + *
    • alternateURL : String - If you define an alternateURL, the loader will initially try to load from its original url and if it fails, it will automatically (and permanently) change the loader's url to the alternateURL and try again. Think of it as a fallback or backup url. It is perfectly acceptable to use the same alternateURL for multiple loaders (maybe a default image for various ImageLoaders for example).
    • + *
    • noCache : Boolean - If true, a "gsCacheBusterID" parameter will be appended to the url with a random set of numbers to prevent caching (don't worry, this info is ignored when you LoaderMax.getLoader() or LoaderMax.getContent() by url or when you're running locally)
    • + *
    • estimatedBytes : uint - Initially, the loader's bytesTotal is set to the estimatedBytes value (or LoaderMax.defaultEstimatedBytes if one isn't defined). Then, when the loader begins loading and it can accurately determine the bytesTotal, it will do so. Setting estimatedBytes is optional, but the more accurate the value, the more accurate your loaders' overall progress will be initially. If the loader is inserted into a LoaderMax instance (for queue management), its auditSize feature can attempt to automatically determine the bytesTotal at runtime (there is a slight performance penalty for this, however - see LoaderMax's documentation for details).
    • + *
    • requireWithRoot : DisplayObject - LoaderMax supports subloading, where an object can be factored into a parent's loading progress. If you want LoaderMax to require this CSSLoader as part of its parent SWFLoader's progress, you must set the requireWithRoot property to your swf's root. For example, var loader:CSSLoader = new CSSLoader("styles.css", {name:"styles", requireWithRoot:this.root});
    • + *
    • allowMalformedURL : Boolean - Normally, the URL will be parsed and any variables in the query string (like "?name=test&state=il&gender=m") will be placed into a URLVariables object which is added to the URLRequest. This avoids a few bugs in Flash, but if you need to keep the entire URL intact (no parsing into URLVariables), set allowMalformedURL:true. For example, if your URL has duplicate variables in the query string like http://www.greensock.com/?c=S&c=SE&c=SW, it is technically considered a malformed URL and a URLVariables object can't properly contain all the duplicates, so in this case you'd want to set allowMalformedURL to true.
    • + *
    • autoDispose : Boolean - When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false. + * + *

      ----EVENT HANDLER SHORTCUTS----

    • + *
    • onOpen : Function - A handler function for LoaderEvent.OPEN events which are dispatched when the loader begins loading. Make sure your onOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onProgress : Function - A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.
    • + *
    • onComplete : Function - A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading successfully. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onCancel : Function - A handler function for LoaderEvent.CANCEL events which are dispatched when loading is aborted due to either a failure or because another loader was prioritized or cancel() was manually called. Make sure your onCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onError : Function - A handler function for LoaderEvent.ERROR events which are dispatched whenever the loader experiences an error (typically an IO_ERROR or SECURITY_ERROR). An error doesn't necessarily mean the loader failed, however - to listen for when a loader fails, use the onFail special property. Make sure your onError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onFail : Function - A handler function for LoaderEvent.FAIL events which are dispatched whenever the loader fails and its status changes to LoaderStatus.FAILED. Make sure your onFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onIOError : Function - A handler function for LoaderEvent.IO_ERROR events which will also call the onError handler, so you can use that as more of a catch-all whereas onIOError is specifically for LoaderEvent.IO_ERROR events. Make sure your onIOError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onHTTPStatus : Function - A handler function for LoaderEvent.HTTP_STATUS events. Make sure your onHTTPStatus function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can determine the httpStatus code using the LoaderEvent's target.httpStatus (LoaderItems keep track of their httpStatus when possible, although certain environments prevent Flash from getting httpStatus information).
    • + *
    + * @see com.greensock.loading.data.CSSLoaderVars + */ + public function CSSLoader(urlOrRequest:*, vars:Object=null) { + super(urlOrRequest, vars); + _loader.dataFormat = "text"; //just to make sure it wasn't overridden if the "format" special vars property was passed into in DataLoader's constructor. + _type = "CSSLoader"; + } + + +//---- EVENT HANDLERS ------------------------------------------------------------------------------------ + + /** @private **/ + override protected function _receiveDataHandler(event:Event):void { + var style:StyleSheet = _content = new StyleSheet(); + style.parseCSS(_loader.data); + super._completeHandler(event); + } + + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/loading/DataLoader.as b/FairyGUI-as3/src/com/greensock/loading/DataLoader.as new file mode 100644 index 0000000..235c158 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/loading/DataLoader.as @@ -0,0 +1,181 @@ +/** + * VERSION: 1.841 + * DATE: 2013-03-12 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/loadermax/ + **/ +package com.greensock.loading { + import com.greensock.loading.core.LoaderItem; + + import flash.events.Event; + import flash.events.ProgressEvent; + import flash.net.URLLoader; + + /** Dispatched when the loader's httpStatus value changes. **/ + [Event(name="httpStatus", type="com.greensock.events.LoaderEvent")] + /** Dispatched when the loader experiences a SECURITY_ERROR while loading or auditing its size. **/ + [Event(name="securityError", type="com.greensock.events.LoaderEvent")] +/** + * Loads generic data which can be text (the default), binary data, or URL-encoded variables. + * + *

    If the format vars property is "text", the content will be a String containing the text of the loaded file.

    + *

    If the format vars property is "binary", the content will be a ByteArray object containing the raw binary data. (See also: BinaryDataLoader)

    + *

    If the format vars property is "variables", the content will be a URLVariables object containing the URL-encoded variables

    + * + *

    OPTIONAL VARS PROPERTIES

    + *

    The following special properties can be passed into the DataLoader constructor via its vars + * parameter which can be either a generic object or a DataLoaderVars object:

    + *
      + *
    • name : String - A name that is used to identify the loader instance. This name can be fed to the LoaderMax.getLoader() or LoaderMax.getContent() methods or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21".
    • + *
    • format : String - Controls whether the downloaded data is received as text ("text"), raw binary data ("binary"), or URL-encoded variables ("variables").
    • + *
    • alternateURL : String - If you define an alternateURL, the loader will initially try to load from its original url and if it fails, it will automatically (and permanently) change the loader's url to the alternateURL and try again. Think of it as a fallback or backup url. It is perfectly acceptable to use the same alternateURL for multiple loaders (maybe a default image for various ImageLoaders for example).
    • + *
    • noCache : Boolean - If true, a "gsCacheBusterID" parameter will be appended to the url with a random set of numbers to prevent caching (don't worry, this info is ignored when you LoaderMax.getLoader() or LoaderMax.getContent() by url or when you're running locally)
    • + *
    • estimatedBytes : uint - Initially, the loader's bytesTotal is set to the estimatedBytes value (or LoaderMax.defaultEstimatedBytes if one isn't defined). Then, when the loader begins loading and it can accurately determine the bytesTotal, it will do so. Setting estimatedBytes is optional, but the more accurate the value, the more accurate your loaders' overall progress will be initially. If the loader is inserted into a LoaderMax instance (for queue management), its auditSize feature can attempt to automatically determine the bytesTotal at runtime (there is a slight performance penalty for this, however - see LoaderMax's documentation for details).
    • + *
    • requireWithRoot : DisplayObject - LoaderMax supports subloading, where an object can be factored into a parent's loading progress. If you want LoaderMax to require this DataLoader as part of its parent SWFLoader's progress, you must set the requireWithRoot property to your swf's root. For example, var loader:DataLoader = new DataLoader("text.txt", {name:"myText", requireWithRoot:this.root});
    • + *
    • allowMalformedURL : Boolean - Normally, the URL will be parsed and any variables in the query string (like "?name=test&state=il&gender=m") will be placed into a URLVariables object which is added to the URLRequest. This avoids a few bugs in Flash, but if you need to keep the entire URL intact (no parsing into URLVariables), set allowMalformedURL:true. For example, if your URL has duplicate variables in the query string like http://www.greensock.com/?c=S&c=SE&c=SW, it is technically considered a malformed URL and a URLVariables object can't properly contain all the duplicates, so in this case you'd want to set allowMalformedURL to true.
    • + *
    • autoDispose : Boolean - When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false. + * + *

      ----EVENT HANDLER SHORTCUTS----

    • + *
    • onOpen : Function - A handler function for LoaderEvent.OPEN events which are dispatched when the loader begins loading. Make sure your onOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onProgress : Function - A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.
    • + *
    • onComplete : Function - A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading successfully. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onCancel : Function - A handler function for LoaderEvent.CANCEL events which are dispatched when loading is aborted due to either a failure or because another loader was prioritized or cancel() was manually called. Make sure your onCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onError : Function - A handler function for LoaderEvent.ERROR events which are dispatched whenever the loader experiences an error (typically an IO_ERROR or SECURITY_ERROR). An error doesn't necessarily mean the loader failed, however - to listen for when a loader fails, use the onFail special property. Make sure your onError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onFail : Function - A handler function for LoaderEvent.FAIL events which are dispatched whenever the loader fails and its status changes to LoaderStatus.FAILED. Make sure your onFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onIOError : Function - A handler function for LoaderEvent.IO_ERROR events which will also call the onError handler, so you can use that as more of a catch-all whereas onIOError is specifically for LoaderEvent.IO_ERROR events. Make sure your onIOError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onHTTPStatus : Function - A handler function for LoaderEvent.HTTP_STATUS events. Make sure your onHTTPStatus function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can determine the httpStatus code using the LoaderEvent's target.httpStatus (LoaderItems keep track of their httpStatus when possible, although certain environments prevent Flash from getting httpStatus information).
    • + *
    + * + *

    Note: Using a DataLoaderVars instance + * instead of a generic object to define your vars is a bit more verbose but provides + * code hinting and improved debugging because it enforces strict data typing. Use whichever one you prefer.

    + * + * Example AS3 code:+ import com.greensock.loading.~~; + import com.greensock.events.LoaderEvent; + import flash.utils.ByteArray; + import flash.net.URLVariables; + +//create a DataLoader for loading text (the default format) +var loader:DataLoader = new DataLoader("assets/data.txt", {name:"myText", requireWithRoot:this.root, estimatedBytes:900}); + +//start loading +loader.load(); + +//Or you could put the DataLoader into a LoaderMax. Create one first... +var queue:LoaderMax = new LoaderMax({name:"mainQueue", onProgress:progressHandler, onComplete:completeHandler, onError:errorHandler}); + +//append the DataLoader and several other loaders +queue.append( loader ); +queue.append( new DataLoader("assets/variables.txt", {name:"myVariables", format:"variables"}) ); +queue.append( new DataLoader("assets/image1.png", {name:"myBinary", format:"binary", estimatedBytes:3500}) ); + +//start loading the LoaderMax queue +queue.load(); + +function progressHandler(event:LoaderEvent):void { + trace("progress: " + event.target.progress); +} + +function completeHandler(event:LoaderEvent):void { + var text:String = LoaderMax.getContent("myText"); + var variables:URLVariables = LoaderMax.getContent("myVariables"); + var binary:ByteArray = LoaderMax.getContent("myBinary"); + trace("complete. myText: " + text + ", myVariables.var1: " + variables.var1 + ", myBinary.length: " + binary.length); +} + +function errorHandler(event:LoaderEvent):void { + trace("error occured with " + event.target + ": " + event.text); +} + + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @see com.greensock.loading.data.DataLoaderVars + * + * @author Jack Doyle, jack@greensock.com + */ + public class DataLoader extends LoaderItem { + /** @private **/ + private static var _classActivated:Boolean = _activateClass("DataLoader", DataLoader, "txt,js"); + /** @private **/ + protected var _loader:URLLoader; + + /** + * Constructor + * + * @param urlOrRequest The url (String) or URLRequest from which the loader should get its content. + * @param vars An object containing optional configuration details. For example: new DataLoader("text/data.txt", {name:"data", onComplete:completeHandler, onProgress:progressHandler}). + * + *

    The following special properties can be passed into the constructor via the vars parameter + * which can be either a generic object or a DataLoaderVars object:

    + *
      + *
    • name : String - A name that is used to identify the loader instance. This name can be fed to the LoaderMax.getLoader() or LoaderMax.getContent() methods or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21".
    • + *
    • format : String - Controls whether the downloaded data is received as text ("text"), raw binary data ("binary"), or URL-encoded variables ("variables").
    • + *
    • alternateURL : String - If you define an alternateURL, the loader will initially try to load from its original url and if it fails, it will automatically (and permanently) change the loader's url to the alternateURL and try again. Think of it as a fallback or backup url. It is perfectly acceptable to use the same alternateURL for multiple loaders (maybe a default image for various ImageLoaders for example).
    • + *
    • noCache : Boolean - If true, a "gsCacheBusterID" parameter will be appended to the url with a random set of numbers to prevent caching (don't worry, this info is ignored when you LoaderMax.getLoader() or LoaderMax.getContent() by url or when you're running locally)
    • + *
    • estimatedBytes : uint - Initially, the loader's bytesTotal is set to the estimatedBytes value (or LoaderMax.defaultEstimatedBytes if one isn't defined). Then, when the loader begins loading and it can accurately determine the bytesTotal, it will do so. Setting estimatedBytes is optional, but the more accurate the value, the more accurate your loaders' overall progress will be initially. If the loader is inserted into a LoaderMax instance (for queue management), its auditSize feature can attempt to automatically determine the bytesTotal at runtime (there is a slight performance penalty for this, however - see LoaderMax's documentation for details).
    • + *
    • requireWithRoot : DisplayObject - LoaderMax supports subloading, where an object can be factored into a parent's loading progress. If you want LoaderMax to require this DataLoader as part of its parent SWFLoader's progress, you must set the requireWithRoot property to your swf's root. For example, var loader:DataLoader = new DataLoader("text.txt", {name:"myText", requireWithRoot:this.root});
    • + *
    • allowMalformedURL : Boolean - Normally, the URL will be parsed and any variables in the query string (like "?name=test&state=il&gender=m") will be placed into a URLVariables object which is added to the URLRequest. This avoids a few bugs in Flash, but if you need to keep the entire URL intact (no parsing into URLVariables), set allowMalformedURL:true. For example, if your URL has duplicate variables in the query string like http://www.greensock.com/?c=S&c=SE&c=SW, it is technically considered a malformed URL and a URLVariables object can't properly contain all the duplicates, so in this case you'd want to set allowMalformedURL to true.
    • + *
    • autoDispose : Boolean - When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false. + * + *

      ----EVENT HANDLER SHORTCUTS----

    • + *
    • onOpen : Function - A handler function for LoaderEvent.OPEN events which are dispatched when the loader begins loading. Make sure your onOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onProgress : Function - A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.
    • + *
    • onComplete : Function - A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading successfully. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onCancel : Function - A handler function for LoaderEvent.CANCEL events which are dispatched when loading is aborted due to either a failure or because another loader was prioritized or cancel() was manually called. Make sure your onCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onError : Function - A handler function for LoaderEvent.ERROR events which are dispatched whenever the loader experiences an error (typically an IO_ERROR or SECURITY_ERROR). An error doesn't necessarily mean the loader failed, however - to listen for when a loader fails, use the onFail special property. Make sure your onError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onFail : Function - A handler function for LoaderEvent.FAIL events which are dispatched whenever the loader fails and its status changes to LoaderStatus.FAILED. Make sure your onFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onIOError : Function - A handler function for LoaderEvent.IO_ERROR events which will also call the onError handler, so you can use that as more of a catch-all whereas onIOError is specifically for LoaderEvent.IO_ERROR events. Make sure your onIOError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onHTTPStatus : Function - A handler function for LoaderEvent.HTTP_STATUS events. Make sure your onHTTPStatus function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can determine the httpStatus code using the LoaderEvent's target.httpStatus (LoaderItems keep track of their httpStatus when possible, although certain environments prevent Flash from getting httpStatus information).
    • + *
    + * @see com.greensock.loading.data.DataLoaderVars + */ + public function DataLoader(urlOrRequest:*, vars:Object=null) { + super(urlOrRequest, vars); + _type = "DataLoader"; + _loader = new URLLoader(null); + if ("format" in this.vars) { + _loader.dataFormat = String(this.vars.format); + } + _loader.addEventListener(ProgressEvent.PROGRESS, _progressHandler, false, 0, true); + _loader.addEventListener(Event.COMPLETE, _receiveDataHandler, false, 0, true); + _loader.addEventListener("ioError", _failHandler, false, 0, true); + _loader.addEventListener("securityError", _failHandler, false, 0, true); + _loader.addEventListener("httpStatus", _httpStatusHandler, false, 0, true); + _loader.addEventListener("httpResponseStatus", _httpStatusHandler, false, 0, true); + } + + /** @private **/ + override protected function _load():void { + _prepRequest(); + _loader.load(_request); + } + + /** @private scrubLevel: 0 = cancel, 1 = unload, 2 = dispose, 3 = flush **/ + override protected function _dump(scrubLevel:int=0, newStatus:int=0, suppressEvents:Boolean=false):void { + if (_status == LoaderStatus.LOADING) { + try { + _loader.close(); + } catch (error:Error) { + + } + } + super._dump(scrubLevel, newStatus, suppressEvents); + } + + +//---- EVENT HANDLERS ------------------------------------------------------------------------------------ + + /** @private Don't use _completeHandler so that subclasses can set _content differently and still call super._completeHandler() (otherwise setting _content in the _completeHandler would always override the _content previously set in sublcasses). **/ + protected function _receiveDataHandler(event:Event):void { + _content = _loader.data; + super._completeHandler(event); + } + +//---- GETTERS / SETTERS ------------------------------------------------------------------------- + + + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/loading/ImageLoader.as b/FairyGUI-as3/src/com/greensock/loading/ImageLoader.as new file mode 100644 index 0000000..2f13c1a --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/loading/ImageLoader.as @@ -0,0 +1,310 @@ +/** + * VERSION: 1.897 + * DATE: 2012-01-14 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/loadermax/ + **/ +package com.greensock.loading { + import com.greensock.events.LoaderEvent; + import com.greensock.loading.core.DisplayObjectLoader; + import com.greensock.loading.core.LoaderItem; + + import flash.display.Bitmap; + import flash.display.DisplayObject; + import flash.events.Event; + import flash.events.ProgressEvent; + +/** + * Loads an image file (png, jpg, or gif) and automatically applies smoothing by default. + * + *

    The ImageLoader's content refers to a ContentDisplay (Sprite) that + * is created immediately so that you can position/scale/rotate it or add ROLL_OVER/ROLL_OUT/CLICK listeners + * before (or while) the image loads. Use the ImageLoader's content property to get the ContentDisplay + * Sprite, or use the rawContent property to get the actual Bitmap. If a container + * is defined in the vars object, the ContentDisplay will immediately be added to that container).

    + * + *

    If you define a width and height, it will draw a rectangle + * in the ContentDisplay so that interactive events fire appropriately (rollovers, etc.) and width/height/bounds + * get reported accurately. This rectangle is invisible by default, but you can control its color and alpha + * with the bgColor and bgAlpha properties. When the image loads, it will be + * added to the ContentDisplay at index 0 with addChildAt() and scaled to fit the width/height + * according to the scaleMode. These are all optional features - you do not need to define a + * width or height in which case the image will load at its native size. + * See the list below for all the special properties that can be passed through the vars + * parameter but don't let the list overwhelm you - these are all optional and they are intended to make + * your job as a developer much easier.

    + * + *

    [new in version 1.89:] When you load() an ImageLoader, it will automatically + * check to see if another ImageLoader exists with a matching url that has already finished + * loading. If it finds one, it will copy that BitmapData to use in its own Bitmap in order to maximize + * performance and minimize memory usage. After all, why load the file again if you've already loaded it? + * (The exception, of course, is when the ImageLoader's noCache is set to true.)

    + * + *

    By default, the ImageLoader will attempt to load the image in a way that allows full script + * access. However, if a security error is thrown because the image is being loaded from another + * domain and the appropriate crossdomain.xml file isn't in place to grant access, the ImageLoader + * will automatically adjust the default LoaderContext so that it falls back to the more restricted + * mode which will have the following effect:

    + *
      + *
    • A LoaderEvent.SCRIPT_ACCESS_DENIED event will be dispatched and the scriptAccessDenied property of the ImageLoader will be set to true. You can check this value before performing any restricted operations on the content like BitmapData.draw().
    • + *
    • The ImageLoader's rawContent property will be a Loader instance instead of a Bitmap.
    • + *
    • The smoothing property will not be set to true.
    • + *
    • BitmapData operations like draw() will not be able to be performed on the image.
    • + *
    + * + *

    To maximize the likelihood of your image loading without any security problems, consider taking the following steps:

    + *
      + *
    • Use a crossdomain.xml file - See Adobe's docs for details, but here is an example that grants full access (put this in a crossdomain.xml file that is at the root of the remote domain): + * <?xml version="1.0" encoding="utf-8"?> + * <cross-domain-policy> + * <allow-access-from domain="~~" /> + * </cross-domain-policy>
    • + *
    • In the embed code of any HTML wrapper, set AllowScriptAccess to "always"
    • + *
    + * + *

    OPTIONAL VARS PROPERTIES

    + *

    The following special properties can be passed into the ImageLoader constructor via its vars + * parameter which can be either a generic object or an ImageLoaderVars object:

    + *
      + *
    • name : String - A name that is used to identify the ImageLoader instance. This name can be fed to the LoaderMax.getLoader() or LoaderMax.getContent() methods or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21".
    • + *
    • container : DisplayObjectContainer - A DisplayObjectContainer into which the ContentDisplay Sprite should be added immediately.
    • + *
    • smoothing : Boolean - When smoothing is true (the default), smoothing will be enabled for the image which typically leads to much better scaling results (otherwise the image can look crunchy/jagged). If your image is loaded from another domain where the appropriate crossdomain.xml file doesn't grant permission, Flash will not allow smoothing to be enabled (it's a security restriction).
    • + *
    • width : Number - Sets the ContentDisplay's width property (applied before rotation, scaleX, and scaleY).
    • + *
    • height : Number - Sets the ContentDisplay's height property (applied before rotation, scaleX, and scaleY).
    • + *
    • centerRegistration : Boolean - If true, the registration point will be placed in the center of the ContentDisplay which can be useful if, for example, you want to animate its scale and have it grow/shrink from its center.
    • + *
    • scaleMode : String - When a width and height are defined, the scaleMode controls how the loaded image will be scaled to fit the area. The following values are recognized (you may use the com.greensock.layout.ScaleMode constants if you prefer): + *
        + *
      • "stretch" (the default) - The image will fill the width/height exactly.
      • + *
      • "proportionalInside" - The image will be scaled proportionally to fit inside the area defined by the width/height
      • + *
      • "proportionalOutside" - The image will be scaled proportionally to completely fill the area, allowing portions of it to exceed the bounds defined by the width/height.
      • + *
      • "widthOnly" - Only the width of the image will be adjusted to fit.
      • + *
      • "heightOnly" - Only the height of the image will be adjusted to fit.
      • + *
      • "none" - No scaling of the image will occur.
      • + *
    • + *
    • hAlign : String - When a width and height is defined, the hAlign determines how the image is horizontally aligned within that area. The following values are recognized (you may use the com.greensock.layout.AlignMode constants if you prefer): + *
        + *
      • "center" (the default) - The image will be centered horizontally in the area
      • + *
      • "left" - The image will be aligned with the left side of the area
      • + *
      • "right" - The image will be aligned with the right side of the area
      • + *
    • + *
    • vAlign : String - When a width and height is defined, the vAlign determines how the image is vertically aligned within that area. The following values are recognized (you may use the com.greensock.layout.AlignMode constants if you prefer): + *
        + *
      • "center" (the default) - The image will be centered vertically in the area
      • + *
      • "top" - The image will be aligned with the top of the area
      • + *
      • "bottom" - The image will be aligned with the bottom of the area
      • + *
    • + *
    • crop : Boolean - When a width and height are defined, setting crop to true will cause the image to be cropped within that area (by applying a scrollRect for maximum performance). This is typically useful when the scaleMode is "proportionalOutside" or "none" so that any parts of the image that exceed the dimensions defined by width and height are visually chopped off. Use the hAlign and vAlign special properties to control the vertical and horizontal alignment within the cropped area.
    • + *
    • x : Number - Sets the ContentDisplay's x property (for positioning on the stage).
    • + *
    • y : Number - Sets the ContentDisplay's y property (for positioning on the stage).
    • + *
    • scaleX : Number - Sets the ContentDisplay's scaleX property.
    • + *
    • scaleY : Number - Sets the ContentDisplay's scaleY property.
    • + *
    • rotation : Number - Sets the ContentDisplay's rotation property.
    • + *
    • alpha : Number - Sets the ContentDisplay's alpha property.
    • + *
    • visible : Boolean - Sets the ContentDisplay's visible property.
    • + *
    • blendMode : String - Sets the ContentDisplay's blendMode property.
    • + *
    • bgColor : uint - When a width and height are defined, a rectangle will be drawn inside the ContentDisplay Sprite immediately in order to ease the development process. It is transparent by default, but you may define a bgAlpha if you prefer.
    • + *
    • bgAlpha : Number - Controls the alpha of the rectangle that is drawn when a width and height are defined.
    • + *
    • context : LoaderContext - To control whether or not a policy file is checked (which is required if you're loading an image from another domain and you want to use it in BitmapData operations), define a LoaderContext object. By default, the policy file will be checked when running remotely, so make sure the appropriate crossdomain.xml file is in place. See Adobe's LoaderContext documentation for details and precautions.
    • + *
    • estimatedBytes : uint - Initially, the loader's bytesTotal is set to the estimatedBytes value (or LoaderMax.defaultEstimatedBytes if one isn't defined). Then, when the loader begins loading and it can accurately determine the bytesTotal, it will do so. Setting estimatedBytes is optional, but the more accurate the value, the more accurate your loaders' overall progress will be initially. If the loader will be inserted into a LoaderMax instance (for queue management), its auditSize feature can attempt to automatically determine the bytesTotal at runtime (there is a slight performance penalty for this, however - see LoaderMax's documentation for details).
    • + *
    • alternateURL : String - If you define an alternateURL, the loader will initially try to load from its original url and if it fails, it will automatically (and permanently) change the loader's url to the alternateURL and try again. Think of it as a fallback or backup url. It is perfectly acceptable to use the same alternateURL for multiple loaders (maybe a default image for various ImageLoaders for example).
    • + *
    • noCache : Boolean - If true, a "gsCacheBusterID" parameter will be appended to the url with a random set of numbers to prevent caching (don't worry, this info is ignored when you LoaderMax.getLoader() or LoaderMax.getContent() by url or when you're running locally)
    • + *
    • requireWithRoot : DisplayObject - LoaderMax supports subloading, where an object can be factored into a parent's loading progress. If you want LoaderMax to require this ImageLoader as part of its parent SWFLoader's progress, you must set the requireWithRoot property to your swf's root. For example, var loader:ImageLoader = new ImageLoader("photo1.jpg", {name:"image1", requireWithRoot:this.root});
    • + *
    • allowMalformedURL : Boolean - Normally, the URL will be parsed and any variables in the query string (like "?name=test&state=il&gender=m") will be placed into a URLVariables object which is added to the URLRequest. This avoids a few bugs in Flash, but if you need to keep the entire URL intact (no parsing into URLVariables), set allowMalformedURL:true. For example, if your URL has duplicate variables in the query string like http://www.greensock.com/?c=S&c=SE&c=SW, it is technically considered a malformed URL and a URLVariables object can't properly contain all the duplicates, so in this case you'd want to set allowMalformedURL to true.
    • + *
    • autoDispose : Boolean - When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false. + * + *

      ----EVENT HANDLER SHORTCUTS----

    • + *
    • onOpen : Function - A handler function for LoaderEvent.OPEN events which are dispatched when the loader begins loading. Make sure your onOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onInit : Function - A handler function for LoaderEvent.INIT events which are called when the image has downloaded and has been placed into the ContentDisplay Sprite. Make sure your onInit function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onProgress : Function - A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.
    • + *
    • onComplete : Function - A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading successfully. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onCancel : Function - A handler function for LoaderEvent.CANCEL events which are dispatched when loading is aborted due to either a failure or because another loader was prioritized or cancel() was manually called. Make sure your onCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onError : Function - A handler function for LoaderEvent.ERROR events which are dispatched whenever the loader experiences an error (typically an IO_ERROR or SECURITY_ERROR). An error doesn't necessarily mean the loader failed, however - to listen for when a loader fails, use the onFail special property. Make sure your onError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onFail : Function - A handler function for LoaderEvent.FAIL events which are dispatched whenever the loader fails and its status changes to LoaderStatus.FAILED. Make sure your onFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onIOError : Function - A handler function for LoaderEvent.IO_ERROR events which will also call the onError handler, so you can use that as more of a catch-all whereas onIOError is specifically for LoaderEvent.IO_ERROR events. Make sure your onIOError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onHTTPStatus : Function - A handler function for LoaderEvent.HTTP_STATUS events. Make sure your onHTTPStatus function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can determine the httpStatus code using the LoaderEvent's target.httpStatus (LoaderItems keep track of their httpStatus when possible, although certain environments prevent Flash from getting httpStatus information).
    • + *
    • onSecurityError : Function - A handler function for LoaderEvent.SECURITY_ERROR events which onError handles as well, so you can use that as more of a catch-all whereas onSecurityError is specifically for SECURITY_ERROR events. Make sure your onSecurityError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onScriptAccessDenied : Function - A handler function for LoaderEvent.SCRIPT_ACCESS_DENIED events which are dispatched when the image is loaded from another domain and no crossdomain.xml is in place to grant full script access for things like smoothing or BitmapData manipulation. You can also check the loader's scriptAccessDenied property after the image has loaded. Make sure your function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    + * + *

    Note: Using a ImageLoaderVars instance + * instead of a generic object to define your vars is a bit more verbose but provides + * code hinting and improved debugging because it enforces strict data typing. Use whichever one you prefer.

    + * + *

    Jerky animation? If you animate the image after loading it and you notice that the movement + * is rather jerky, try setting the scaleX and/or scaleY to something other than 1, like 1.001 because there is + * a bug in Flash that forces Bitmaps to always act like their pixelSnapping is "auto" + * when their scaleX/scaleY are 1.

    + * + *

    content data type: com.greensock.loading.display.ContentDisplay (a Sprite). + * When the image has finished loading, the rawContent will be added to the ContentDisplay Sprite + * at index 0 using addChildAt(). rawContent will be a flash.display.Bitmap unless + * unless script access is denied in which case it will be a flash.display.Loader (to avoid security errors).

    + * + * Example AS3 code:+ import com.greensock.~~; + import com.greensock.events.LoaderEvent; + import com.greensock.loading.~~; + + //create an ImageLoader: + var loader:ImageLoader = new ImageLoader("img/photo1.jpg", {name:"photo1", container:this, x:180, y:100, width:200, height:150, scaleMode:"proportionalInside", centerRegistration:true, onComplete:onImageLoad}); + + //begin loading + loader.load(); + + //when the image loads, fade it in from alpha:0 using TweenLite + function onImageLoad(event:LoaderEvent):void { + TweenLite.from(event.target.content, 1, {alpha:0}); + } + + //Or you could put the ImageLoader into a LoaderMax. Create one first... + var queue:LoaderMax = new LoaderMax({name:"mainQueue", onProgress:progressHandler, onComplete:completeHandler, onError:errorHandler}); + + //append the ImageLoader and several other loaders + queue.append( loader ); + queue.append( new XMLLoader("xml/doc.xml", {name:"xmlDoc", estimatedBytes:425}) ); + queue.append( new SWFLoader("swf/main.swf", {name:"mainClip", estimatedBytes:3000, container:this, autoPlay:false}) ); + + //start loading + queue.load(); + + function progressHandler(event:LoaderEvent):void { + trace("progress: " + queue.progress); + } + + function completeHandler(event:LoaderEvent):void { + trace(event.target + " is complete!"); + } + + function errorHandler(event:LoaderEvent):void { + trace("error occured with " + event.target + ": " + event.text); + } + + + *

    NOTES / TIPS:

    + *
      + *
    • You will not see the image unless you either manually add it to the display list in your onComplete handler or simply use the container special property (see above).
    • + *
    + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @see com.greensock.loading.data.ImageLoaderVars + * + * @author Jack Doyle, jack@greensock.com + */ + public class ImageLoader extends DisplayObjectLoader { + /** @private **/ + private static var _classActivated:Boolean = _activateClass("ImageLoader", ImageLoader, "jpg,jpeg,png,gif,bmp"); + /** + * Constructor + * + * @param urlOrRequest The url (String) or URLRequest from which the loader should get its content + * @param vars An object containing optional configuration details. For example: new ImageLoader("img/photo1.jpg", {name:"photo1", container:this, x:100, y:50, alpha:0, onComplete:completeHandler, onProgress:progressHandler}). + * + *

    The following special properties can be passed into the constructor via the vars parameter + * which can be either a generic object or an ImageLoaderVars object:

    + *
      + *
    • name : String - A name that is used to identify the ImageLoader instance. This name can be fed to the LoaderMax.getLoader() or LoaderMax.getContent() methods or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21".
    • + *
    • container : DisplayObjectContainer - A DisplayObjectContainer into which the ContentDisplay Sprite should be added immediately.
    • + *
    • smoothing : Boolean - When smoothing is true (the default), smoothing will be enabled for the image which typically leads to much better scaling results (otherwise the image can look crunchy/jagged). If your image is loaded from another domain where the appropriate crossdomain.xml file doesn't grant permission, Flash will not allow smoothing to be enabled (it's a security restriction).
    • + *
    • width : Number - Sets the ContentDisplay's width property (applied before rotation, scaleX, and scaleY).
    • + *
    • height : Number - Sets the ContentDisplay's height property (applied before rotation, scaleX, and scaleY).
    • + *
    • centerRegistration : Boolean - if true, the registration point will be placed in the center of the ContentDisplay which can be useful if, for example, you want to animate its scale and have it grow/shrink from its center.
    • + *
    • scaleMode : String - When a width and height are defined, the scaleMode controls how the loaded image will be scaled to fit the area. The following values are recognized (you may use the com.greensock.layout.ScaleMode constants if you prefer): + *
        + *
      • "stretch" (the default) - The image will fill the width/height exactly.
      • + *
      • "proportionalInside" - The image will be scaled proportionally to fit inside the area defined by the width/height
      • + *
      • "proportionalOutside" - The image will be scaled proportionally to completely fill the area, allowing portions of it to exceed the bounds defined by the width/height.
      • + *
      • "widthOnly" - Only the width of the image will be adjusted to fit.
      • + *
      • "heightOnly" - Only the height of the image will be adjusted to fit.
      • + *
      • "none" - No scaling of the image will occur.
      • + *
    • + *
    • hAlign : String - When a width and height is defined, the hAlign determines how the image is horizontally aligned within that area. The following values are recognized (you may use the com.greensock.layout.AlignMode constants if you prefer): + *
        + *
      • "center" (the default) - The image will be centered horizontally in the area
      • + *
      • "left" - The image will be aligned with the left side of the area
      • + *
      • "right" - The image will be aligned with the right side of the area
      • + *
    • + *
    • vAlign : String - When a width and height is defined, the vAlign determines how the image is vertically aligned within that area. The following values are recognized (you may use the com.greensock.layout.AlignMode constants if you prefer): + *
        + *
      • "center" (the default) - The image will be centered vertically in the area
      • + *
      • "top" - The image will be aligned with the top of the area
      • + *
      • "bottom" - The image will be aligned with the bottom of the area
      • + *
    • + *
    • crop : Boolean - When a width and height are defined, setting crop to true will cause the image to be cropped within that area (by applying a scrollRect for maximum performance). This is typically useful when the scaleMode is "proportionalOutside" or "none" so that any parts of the image that exceed the dimensions defined by width and height are visually chopped off. Use the hAlign and vAlign special properties to control the vertical and horizontal alignment within the cropped area.
    • + *
    • x : Number - Sets the ContentDisplay's x property (for positioning on the stage).
    • + *
    • y : Number - Sets the ContentDisplay's y property (for positioning on the stage).
    • + *
    • scaleX : Number - Sets the ContentDisplay's scaleX property.
    • + *
    • scaleY : Number - Sets the ContentDisplay's scaleY property.
    • + *
    • rotation : Number - Sets the ContentDisplay's rotation property.
    • + *
    • alpha : Number - Sets the ContentDisplay's alpha property.
    • + *
    • visible : Boolean - Sets the ContentDisplay's visible property.
    • + *
    • blendMode : String - Sets the ContentDisplay's blendMode property.
    • + *
    • bgColor : uint - When a width and height are defined, a rectangle will be drawn inside the ContentDisplay Sprite immediately in order to ease the development process. It is transparent by default, but you may define a bgAlpha if you prefer.
    • + *
    • bgAlpha : Number - Controls the alpha of the rectangle that is drawn when a width and height are defined.
    • + *
    • context : LoaderContext - To control whether or not a policy file is checked (which is required if you're loading an image from another domain and you want to use it in BitmapData operations), define a LoaderContext object. By default, the policy file will be checked when running remotely, so make sure the appropriate crossdomain.xml file is in place. See Adobe's LoaderContext documentation for details and precautions.
    • + *
    • estimatedBytes : uint - Initially, the loader's bytesTotal is set to the estimatedBytes value (or LoaderMax.defaultEstimatedBytes if one isn't defined). Then, when the loader begins loading and it can accurately determine the bytesTotal, it will do so. Setting estimatedBytes is optional, but the more accurate the value, the more accurate your loaders' overall progress will be initially. If the loader will be inserted into a LoaderMax instance (for queue management), its auditSize feature can attempt to automatically determine the bytesTotal at runtime (there is a slight performance penalty for this, however - see LoaderMax's documentation for details).
    • + *
    • alternateURL : String - If you define an alternateURL, the loader will initially try to load from its original url and if it fails, it will automatically (and permanently) change the loader's url to the alternateURL and try again. Think of it as a fallback or backup url. It is perfectly acceptable to use the same alternateURL for multiple loaders (maybe a default image for various ImageLoaders for example).
    • + *
    • noCache : Boolean - If true, a "gsCacheBusterID" parameter will be appended to the url with a random set of numbers to prevent caching (don't worry, this info is ignored when you LoaderMax.getLoader() or LoaderMax.getContent() by url or when you're running locally)
    • + *
    • requireWithRoot : DisplayObject - LoaderMax supports subloading, where an object can be factored into a parent's loading progress. If you want LoaderMax to require this ImageLoader as part of its parent SWFLoader's progress, you must set the requireWithRoot property to your swf's root. For example, var loader:ImageLoader = new ImageLoader("photo1.jpg", {name:"image1", requireWithRoot:this.root});
    • + *
    • allowMalformedURL : Boolean - Normally, the URL will be parsed and any variables in the query string (like "?name=test&state=il&gender=m") will be placed into a URLVariables object which is added to the URLRequest. This avoids a few bugs in Flash, but if you need to keep the entire URL intact (no parsing into URLVariables), set allowMalformedURL:true. For example, if your URL has duplicate variables in the query string like http://www.greensock.com/?c=S&c=SE&c=SW, it is technically considered a malformed URL and a URLVariables object can't properly contain all the duplicates, so in this case you'd want to set allowMalformedURL to true.
    • + *
    • autoDispose : Boolean - When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false. + * + *

      ----EVENT HANDLER SHORTCUTS----

    • + *
    • onOpen : Function - A handler function for LoaderEvent.OPEN events which are dispatched when the loader begins loading. Make sure your onOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onInit : Function - A handler function for LoaderEvent.INIT events which are called when the image has downloaded and has been placed into the ContentDisplay Sprite. Make sure your onInit function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onProgress : Function - A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.
    • + *
    • onComplete : Function - A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading successfully. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onCancel : Function - A handler function for LoaderEvent.CANCEL events which are dispatched when loading is aborted due to either a failure or because another loader was prioritized or cancel() was manually called. Make sure your onCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onError : Function - A handler function for LoaderEvent.ERROR events which are dispatched whenever the loader experiences an error (typically an IO_ERROR or SECURITY_ERROR). An error doesn't necessarily mean the loader failed, however - to listen for when a loader fails, use the onFail special property. Make sure your onError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onFail : Function - A handler function for LoaderEvent.FAIL events which are dispatched whenever the loader fails and its status changes to LoaderStatus.FAILED. Make sure your onFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onIOError : Function - A handler function for LoaderEvent.IO_ERROR events which will also call the onError handler, so you can use that as more of a catch-all whereas onIOError is specifically for LoaderEvent.IO_ERROR events. Make sure your onIOError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onHTTPStatus : Function - A handler function for LoaderEvent.HTTP_STATUS events. Make sure your onHTTPStatus function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can determine the httpStatus code using the LoaderEvent's target.httpStatus (LoaderItems keep track of their httpStatus when possible, although certain environments prevent Flash from getting httpStatus information).
    • + *
    • onSecurityError : Function - A handler function for LoaderEvent.SECURITY_ERROR events which onError handles as well, so you can use that as more of a catch-all whereas onSecurityError is specifically for SECURITY_ERROR events. Make sure your onSecurityError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onScriptAccessDenied : Function - A handler function for LoaderEvent.SCRIPT_ACCESS_DENIED events which are dispatched when the image is loaded from another domain and no crossdomain.xml is in place to grant full script access for things like smoothing or BitmapData manipulation. You can also check the loader's scriptAccessDenied property after the image has loaded. Make sure your function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    + * @see com.greensock.loading.data.ImageLoaderVars + */ + public function ImageLoader(urlOrRequest:*, vars:Object=null) { + super(urlOrRequest, vars); + _type = "ImageLoader"; + } + + override protected function _load():void { + if (this.vars.noCache != true) { + //check to see if another ImageLoader with the same URL exists and has completed so that we can copy that BitmapData to speed things up and reduce memory usage. + var loaders:Array = _globalRootLoader.getChildren(true, true); + var loader:LoaderItem; + var i:int = loaders.length; + while (--i > -1) { + loader = loaders[i]; + if (loader.url == _url && loader != this && loader.status == LoaderStatus.COMPLETED && loader is ImageLoader && ImageLoader(loader).rawContent is Bitmap) { + _closeStream(); + _content = new Bitmap(ImageLoader(loader).rawContent.bitmapData, "auto", Boolean(this.vars.smoothing != false)); + Object(_sprite).rawContent = (_content as DisplayObject); + _initted = true; + _progressHandler(new ProgressEvent(ProgressEvent.PROGRESS, false, false, loader.bytesLoaded, loader.bytesTotal)); + dispatchEvent(new LoaderEvent(LoaderEvent.INIT, this)); + _completeHandler(null); + return; + } + } + } + super._load(); + } + +//---- EVENT HANDLERS ------------------------------------------------------------------------------------ + + /** @private **/ + override protected function _initHandler(event:Event):void { + _determineScriptAccess(); + if (!_scriptAccessDenied) { + _content = Bitmap(_loader.content); + _content.smoothing = Boolean(this.vars.smoothing != false); + } else { + _content = _loader; + } + super._initHandler(event); + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/loading/LoaderMax.as b/FairyGUI-as3/src/com/greensock/loading/LoaderMax.as new file mode 100644 index 0000000..1d77771 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/loading/LoaderMax.as @@ -0,0 +1,1084 @@ +/** + * VERSION: 1.941 + * DATE: 2015-01-20 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/loadermax/ + **/ +package com.greensock.loading { + import com.greensock.events.LoaderEvent; + import com.greensock.loading.core.LoaderCore; + import com.greensock.loading.core.LoaderItem; + + import flash.display.DisplayObject; + import flash.events.Event; + import flash.net.URLRequest; + import flash.system.LoaderContext; + import flash.utils.Dictionary; + + /** Dispatched when any child of the LoaderMax instance starts loading. So if a LoaderMax contains 5 loaders, the CHILD_OPEN event will be dispatched 5 times during the course of the LoaderMax's load. This can occur even if the LoaderMax itself isn't in the process of loading (because load() or prioritize() could have been called directly on a child loader) **/ + [Event(name="childOpen", type="com.greensock.events.LoaderEvent")] + /** Dispatched when any child of the LoaderMax instance dispatches a PROGRESS event. This can occur even if the LoaderMax itself isn't in the process of loading (because load() or prioritize() could have been called directly on a child loader) **/ + [Event(name="childProgress", type="com.greensock.events.LoaderEvent")] + /** Dispatched when any child of the LoaderMax instance completes. So if a LoaderMax contains 5 loaders, the CHILD_COMPLETE event will be dispatched 5 times during the course of the LoaderMax's load. This can occur even if the LoaderMax itself isn't in the process of loading (because load() or prioritize() could have been called directly on a child loader) **/ + [Event(name="childComplete", type="com.greensock.events.LoaderEvent")] + /** Dispatched when any child of the LoaderMax instance fails to load. This occurs even if the LoaderMax itself isn't in the process of loading (because load() or prioritize() could have been called directly on a child loader) **/ + [Event(name="childFail", type="com.greensock.events.LoaderEvent")] + /** Dispatched when any child of the LoaderMax instance dispatches a CANCEL event which could occur when another child is prioritized in the queue or when the LoaderMax is canceled while loading the child. CHILD_CANCEL can be dispatched even if the LoaderMax itself isn't in the process of loading (because load() or prioritize() could have been called directly on a child loader) **/ + [Event(name="childCancel", type="com.greensock.events.LoaderEvent")] + /** Dispatched when any child of the LoaderMax instance dispatches a SCRIPT_ACCESS_DENIED event. This can occur even if the LoaderMax itself isn't in the process of loading (because load() or prioritize() could have been called directly on a child loader) **/ + [Event(name="scriptAccessDenied", type="com.greensock.events.LoaderEvent")] + /** Dispatched when any child of the LoaderMax instance dispatches an HTTP_STATUS event. This can occur even if the LoaderMax itself isn't in the process of loading (because load() or prioritize() could have been called directly on a child loader) **/ + [Event(name="httpStatus", type="com.greensock.events.LoaderEvent")] + /** Dispatched when any child of the LoaderMax instance dispatches an IO_ERROR event. This can occur even if the LoaderMax itself isn't in the process of loading (because load() or prioritize() could have been called directly on a child loader) **/ + [Event(name="ioError", type="com.greensock.events.LoaderEvent")] + /** Dispatched when any child of the LoaderMax instance dispatches a SECURITY_ERROR event. This can occur even if the LoaderMax itself isn't in the process of loading (because load() or prioritize() could have been called directly on a child loader) **/ + [Event(name="securityError", type="com.greensock.events.LoaderEvent")] +/** + * In its simplest form, a LoaderMax provides a way to group a sequence of loaders together and + * report their progress as a whole. It is essentially a queue of loaders. But there are many other + * conveniences that the LoaderMax system delivers: + *
      + *
    • Integration of loaders inside subloaded swfs - With most other systems, if you subload a swf, the loader will only concern itself with the swf file's bytes but what if that swf must subload other content like XML, images, and/or other swf files before it should be considered fully loaded? LoaderMax can elegantly handle the sub-subloads as deep as they go. You can link any loader and/or LoaderMax with a swf's root (using the requireWithRoot vars property) so that when you subload it into another Flash application, the parent SWFLoader automatically factors the nested loaders into its overall loading progress! It won't dispatch its COMPLETE event until they have finished as well.
    • + *
    • Automatic parsing of LoaderMax-related nodes inside XML - The XMLLoader class automatically looks for LoaderMax-related nodes like <LoaderMax>, <ImageLoader>, <SWFLoader>, <XMLLoader>, <VideoLoader>, <DataLoader>, <CSSLoader>, <MP3Loader>, etc. in XML files that it loads, and if any are found it will create the necessary instances and then begin loading the ones that had a load="true" attribute, automatically integrating their progress into the XMLLoader's overall progress and it won't dispatch a COMPLETE event until the XML-driven loaders have finished as well.
    • + *
    • Tight file size - Many other systems are 16-24k+ even if you're just loading text, but LoaderMax can be as little as 7k (depending on which loader types you use).
    • + *
    • A common set of properties and methods among all loaders - Every loader type (XMLLoader, SWFLoader, ImageLoader, MP3Loader, CSSLoader, VideoLoader, LoaderMax, etc.) all share common content, name, status, loadTime, paused, bytesLoaded, bytesTotal, and progress properties as well as methods like load(), pause(), resume(), prioritize(), unload(), cancel(), auditSize() and dispose() delivering a touch of polymorphism sweetness.
    • + *
    • Nest LoaderMax instances inside other LoaderMax instances as deeply as you want. - This makes complex queues simple. Need to know when the first 3 loaders have finished loading inside a 10-loader queue? Just put those 3 into their own LoaderMax that has an onComplete and nest that LoaderMax inside your main LoaderMax queue.
    • + *
    • Set a width/height for an ImageLoader, SWFLoader, or VideoLoader and when it loads, the image/swf/video will automatically scale to fit using any of the following scaleModes: "stretch", "proportionalInside", "proportionalOutside", "widthOnly", or "heightOnly". Even crop the image/swf/video with crop:true.
    • + *
    • Conveniences like auto smoothing of images, centering their registration point, noCache, setting initial x, y, scaleX, scaleY, rotation, alpha, and blendMode properties, optional autoPlay for mp3s, swfs, and videos, and more.
    • + *
    • Works around common Flash hassles/bugs - LoaderMax implements workarounds for things like garbage collection headaches with subloaded swfs, images, and NetStreams as well as problems with subloaded swfs that use TLF.
    • + *
    • Find loaders and content by name or url - Every loader has a name property which you can use to uniquely identify it. Feed a name or URL to the static LoaderMax.getLoader() or LoaderMax.getContent() methods to quickly get the associated loader or content.
    • + *
    • A single loader can belong to multiple LoaderMax instances
    • + *
    • Accurate progress reporting - For maximum performance, set an estimatedBytes for each loader or allow LoaderMax's auditSize feature to automatically preload just enough of each child loader's content to determine its bytesTotal, making progress reporting on large queues very accurate.
    • + *
    • prioritize() a loader anytime - Kick an object to the top of all LoaderMax queues to which it belongs, immediately supplanting the top spot in each one.
    • + *
    • A robust event system
    • + *
    • Define an alternateURL for any loader - If the original url fails to load, it will automatically switch to the alternateURL and try again.
    • + *
    • Set up multiple event listeners in one line - Add listeners like onComplete, onProgress, onError, etc. via the constructor like new LoaderMax({name:"mainQueue", onComplete:completeHandler, onProgress:progressHandler, onError:errorHandler});
    • + *
    • maxConnections - Set the maximum number of simultaneous connections for each LoaderMax instance (default is 2). This can speed up overall loading times.
    • + *
    • pause()/resume() - no queue loading solution would be complete without the ability to pause()/resume() anytime.
    • + *
    • Flex friendly - Simply change the LoaderMax.contentDisplayClass to FlexContentDisplay and then ImageLoaders, SWFLoaders, and VideoLoaders will return content wrapped in a UIComponent.
    • + *
    + * + * Example AS3 code:+import com.greensock.~~; +import com.greensock.loading.~~; +import com.greensock.events.LoaderEvent; +import com.greensock.loading.display.~~; + +//create a LoaderMax named "mainQueue" and set up onProgress, onComplete and onError listeners +var queue:LoaderMax = new LoaderMax({name:"mainQueue", onProgress:progressHandler, onComplete:completeHandler, onError:errorHandler}); + +//append several loaders +queue.append( new XMLLoader("xml/data.xml", {name:"xmlDoc", alternateURL:"http://otherserver.com/data.xml"}) ); +queue.append( new ImageLoader("img/photo1.jpg", {name:"photo1", estimatedBytes:2400, container:this, alpha:0, width:250, height:150, scaleMode:"proportionalInside"}) ); +queue.append( new SWFLoader("swf/main.swf", {name:"mainClip", estimatedBytes:3000, container:this, x:250, autoPlay:false}) ); + +//add a loader to the top of the queue using prepend() +queue.prepend( new MP3Loader("mp3/audio.mp3", {name:"audio", repeat:100, autoPlay:true}) ); + +//prioritize the loader named "photo1" +LoaderMax.prioritize("photo1"); //same as LoaderMax.getLoader("photo1").prioritize(); + +//start loading +queue.load(); + +function progressHandler(event:LoaderEvent):void { + trace("progress: " + event.target.progress); +} + +function completeHandler(event:LoaderEvent):void { + var image:ContentDisplay = LoaderMax.getContent("photo1"); + TweenLite.to(image, 1, {alpha:1, y:100}); + trace(event.target + " is complete!"); +} + +function errorHandler(event:LoaderEvent):void { + trace("error occured with " + event.target + ": " + event.text); +} + + * + *

    LoaderMax will automatically skip over any child loaders in the queue that are already complete. By default + * it will also skip any that have failed or are paused (you can change this behavior with the skipFailed + * and skipPaused special properties). To flush the content and force a full reload, simply unload() + * first or use the flushContent parameter in load() like load(true).

    + * + *

    OPTIONAL VARS PROPERTIES

    + *

    The following special properties can be passed into the LoaderMax constructor via the vars + * parameter which can be either a generic object or a LoaderMaxVars object:

    + *
      + *
    • name : String - A name that is used to identify the LoaderMax instance. This name can be fed to the LoaderMax.getLoader() or LoaderMax.getContent() methods or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21".
    • + *
    • auditSize : Boolean - By default, when the LoaderMax begins to load it quickly loops through its children and if it finds any that don't have an estimatedBytes defined, it will briefly open a URLStream in order to attempt to determine its bytesTotal, immediately closing the URLStream once the value has been determined. This causes a brief delay initially, but greatly improves the accuracy of the progress and bytesTotal values. Set auditSize to false to prevent the LoaderMax from auditing its childrens' size (it is true by default). For maximum performance, it is best to define an estimatedBytes value for as many loaders as possible to avoid the delay caused by audits. When the LoaderMax audits an XMLLoader, it cannot recognize loaders that will be created from the XML data nor can it recognize loaders inside subloaded swf files from a SWFLoader (it would take far too long to load sufficient data for that - audits should be as fast as possible). If you do not set an appropriate estimatedSize for XMLLoaders or SWFLoaders that contain LoaderMax loaders, you'll notice that the parent LoaderMax's progress and bytesTotal change when the nested loaders are recognized (this is normal). To control the default auditSize value, use the static LoaderMax.defaultAuditSize property.
    • + *
    • maxConnections : uint - Maximum number of simultaneous connections that should be used while loading the LoaderMax queue. A higher number will generally result in faster overall load times for the group. The default is 2. This value is instance-based, not system-wide, so if you have two LoaderMax instances that both have a maxConnections value of 3 and they are both loading, there could be up to 6 connections at a time total. Sometimes there are limits imposed by the Flash Player itself or the browser or the user's system, but LoaderMax will do its best to honor the maxConnections you define.
    • + *
    • skipFailed : Boolean - If skipFailed is true (the default), any failed loaders in the queue will be skipped. Otherwise, the LoaderMax will stop when it hits a failed loader and the LoaderMax's status will become LoaderStatus.FAILED.
    • + *
    • skipPaused : Boolean - If skipPaused is true (the default), any paused loaders in the queue will be skipped. Otherwise, the LoaderMax will stop when it hits a paused loader and the LoaderMax's status will become LoaderStatus.FAILED.
    • + *
    • autoLoad : Boolean - If true, the LoaderMax instance will automatically call load() whenever you insert()/append()/prepend() a new loader whose status is LoaderStatus.READY. This basically makes it easy to create a LoaderMax queue and dump stuff into it whenever you want it to load without having to check the LoaderMax's status and call load() manually if it's not already loading.
    • + *
    • loaders : Array - An array of loaders (ImageLoaders, SWFLoaders, XMLLoaders, MP3Loaders, other LoaderMax instances, etc.) that should be immediately inserted into the LoaderMax.
    • + *
    • requireWithRoot : DisplayObject - LoaderMax supports subloading, where an object can be factored into a parent's loading progress. If you want this LoaderMax to be required as part of its parent SWFLoader's progress, you must set the requireWithRoot property to your swf's root. For example, var loader:LoaderMax = new LoaderMax({name:"mainQueue", requireWithRoot:this.root});
    • + *
    • autoDispose : Boolean - When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false. + * + *

      ----EVENT HANDLER SHORTCUTS----

    • + *
    • onOpen : Function - A handler function for LoaderEvent.OPEN events which are dispatched when the loader begins loading. Make sure your onOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onProgress : Function - A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.
    • + *
    • onComplete : Function - A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onCancel : Function - A handler function for LoaderEvent.CANCEL events which are dispatched when loading is aborted due to either an error or because another loader was prioritized or cancel() was manually called. Make sure your onCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onError : Function - A handler function for LoaderEvent.ERROR events which are dispatched whenever the loader or any of its children fails (typically because of an IO_ERROR or SECURITY_ERROR). Make sure your onError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildOpen : Function - A handler function for LoaderEvent.CHILD_OPEN events which are dispatched each time one of the loader's children (or any descendant) begins loading. Make sure your onChildOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildProgress : Function - A handler function for LoaderEvent.CHILD_PROGRESS events which are dispatched each time one of the loader's children (or any descendant) dispatches a PROGRESS event. To listen for changes in the LoaderMax's overall progress, use the onProgress special property instead. You can use the LoaderEvent's target.progress to get the child loader's progress value or use its target.bytesLoaded and target.bytesTotal. The LoaderEvent's currentTarget refers to the LoaderMax, so you can check its overall progress with the LoaderEvent's currentTarget.progress. Make sure your onChildProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildComplete : Function - A handler function for LoaderEvent.CHILD_COMPLETE events which are dispatched each time one of the loader's children (or any descendant) finishes loading successfully. Make sure your onChildComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildCancel : Function - A handler function for LoaderEvent.CHILD_CANCEL events which are dispatched each time loading is aborted on one of the loader's children (or any descendant) due to either an error or because another loader was prioritized in the queue or because cancel() was manually called on the child loader. Make sure your onChildCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildFail : Function - A handler function for LoaderEvent.CHILD_FAIL events which are dispatched each time one of the loader's children (or any descendant) fails (and its status chances to LoaderStatus.FAILED). Make sure your onChildFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onIOError : Function - A handler function for LoaderEvent.IO_ERROR events which will also call the onError handler, so you can use that as more of a catch-all whereas onIOError is specifically for LoaderEvent.IO_ERROR events. Make sure your onIOError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onHTTPStatus : Function - A handler function for LoaderEvent.HTTP_STATUS events. Make sure your onHTTPStatus function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onScriptAccessDenied : Function - A handler function for LoaderEvent.SCRIPT_ACCESS_DENIED events which are dispatched when one of the LoaderMax's children (or any descendant) is loaded from another domain and no crossdomain.xml is in place to grant full script access for things like smoothing or BitmapData manipulation. Make sure your function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    + * + *

    Note: Using a LoaderMaxVars instance + * instead of a generic object to define your vars is a bit more verbose but provides + * code hinting and improved debugging because it enforces strict data typing. Use whichever one you prefer.

    + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @see com.greensock.loading.data.LoaderMaxVars + * + * @author Jack Doyle, jack@greensock.com + */ + public class LoaderMax extends LoaderCore { + /** @private **/ + public static const version:Number = 1.941; + /** The default value that will be used for the estimatedBytes on loaders that don't declare one in the vars parameter of the constructor. **/ + public static var defaultEstimatedBytes:uint = 20000; + /** Controls the default value of auditSize in LoaderMax instances (normally true). For most situations, the auditSize feature is very convenient for ensuring that the overall progress of LoaderMax instances is reported accurately, but when working with very large quantities of files that have no estimatedBytes defined, some developers prefer to turn auditSize off by default. Of course you can always override the default for individual LoaderMax instances by defining an auditSize value in the vars parameter of the constructor. **/ + public static var defaultAuditSize:Boolean = true; + /** Optionally define a default LoaderContext to use with SWFLoaders and ImageLoaders. This can be useful if you're loading a lot of swfs, for example, and don't want to pass a custom "context" in to each one. LoaderContexts are typically used to tell Flash which ApplicationDomain to load the code into and which SecurityDomain to use. See Adobe's docs for details. **/ + public static var defaultContext:LoaderContext; + /** The class used by ImageLoaders, SWFLoaders, and VideoLoaders to create the containers into which they'll dump their rawContent - by default it is the com.greensock.loading.display.ContentDisplay class but if you're using Flex, it is typically best to change this to com.greensock.loading.display.FlexContentDisplay. You only need to do this once, like + * +import com.greensock.loading.LoaderMax; +import com.greensock.loading.display.FlexContentDisplay; +LoaderMax.contentDisplayClass = FlexContentDisplay; + **/ + public static var contentDisplayClass:Class; + + /** @private **/ + protected var _loaders:Array; + /** @private **/ + protected var _activeLoaders:Dictionary; + + /** If skipFailed is true (the default), any failed loaders in the queue will be skipped. Otherwise, the LoaderMax will stop when it hits a failed loader and the LoaderMax's status will become LoaderStatus.FAILED. Skipped loaders are also ignored when the LoaderMax determines its bytesLoaded, bytesTotal, and progress values. **/ + public var skipFailed:Boolean; + /** If skipPaused is true (the default), any paused loaders in the queue will be skipped. Otherwise, the LoaderMax will stop when it hits a paused loader and the LoaderMax's status will become LoaderStatus.FAILED. Skipped loaders are also ignored when the LoaderMax determines its bytesLoaded, bytesTotal, and progress values. **/ + public var skipPaused:Boolean; + /** Maximum number of simultaneous connections that should be used while loading the LoaderMax queue. A higher number will generally result in faster overall load times for the group. The default is 2. This value is instance-based, not system-wide, so if you have two LoaderMax instances that both have a maxConnections value of 3 and they are both loading, there could be up to 6 connections at a time total. **/ + public var maxConnections:uint; + /** If true, the LoaderMax instance will automatically call load() whenever you insert()/append()/prepend() a new loader whose status is LoaderStatus.READY. This basically makes it easy to create a LoaderMax queue and dump stuff into it whenever you want something to load without having to check the LoaderMax's status and call load() manually if it's not already loading. **/ + public var autoLoad:Boolean; + + /** + * Constructor + * + * @param vars An object containing optional configuration details. For example: new LoaderMax({name:"queue", onComplete:completeHandler, onProgress:progressHandler, maxConnections:3}). + * + *

    The following special properties can be passed into the LoaderMax constructor via the vars parameter + * which can be either a generic object or a LoaderMaxVars object:

    + *
      + *
    • name : String - A name that is used to identify the LoaderMax instance. This name can be fed to the LoaderMax.getLoader() or LoaderMax.getContent() methods or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21".
    • + *
    • auditSize : Boolean - By default, when the LoaderMax begins to load it quickly loops through its children and if it finds any that don't have an estimatedBytes defined, it will briefly open a URLStream in order to attempt to determine its bytesTotal, immediately closing the URLStream once the value has been determined. This causes a brief delay initially, but greatly improves the accuracy of the progress and bytesTotal values. Set auditSize to false to prevent the LoaderMax from auditing its childrens' size (it is true by default). For maximum performance, it is best to define an estimatedBytes value for as many loaders as possible to avoid the delay caused by audits. When the LoaderMax audits an XMLLoader, it cannot recognize loaders that will be created from the XML data nor can it recognize loaders inside subloaded swf files from a SWFLoader (it would take far too long to load sufficient data for that - audits should be as fast as possible). If you do not set an appropriate estimatedSize for XMLLoaders or SWFLoaders that contain LoaderMax loaders, you'll notice that the parent LoaderMax's progress and bytesTotal change when the nested loaders are recognized (this is normal). To control the default auditSize value, use the static LoaderMax.defaultAuditSize property.
    • + *
    • maxConnections : uint - Maximum number of simultaneous connections that should be used while loading the LoaderMax queue. A higher number will generally result in faster overall load times for the group. The default is 2. This value is instance-based, not system-wide, so if you have two LoaderMax instances that both have a maxConnections value of 3 and they are both loading, there could be up to 6 connections at a time total. Sometimes there are limits imposed by the Flash Player itself or the browser or the user's system, but LoaderMax will do its best to honor the maxConnections you define.
    • + *
    • skipFailed : Boolean - If skipFailed is true (the default), any failed loaders in the queue will be skipped. Otherwise, the LoaderMax will stop when it hits a failed loader and the LoaderMax's status will become LoaderStatus.FAILED.
    • + *
    • skipPaused : Boolean - If skipPaused is true (the default), any paused loaders in the queue will be skipped. Otherwise, the LoaderMax will stop when it hits a paused loader and the LoaderMax's status will become LoaderStatus.FAILED.
    • + *
    • autoLoad : Boolean - If true, the LoaderMax instance will automatically call load() whenever you insert()/append()/prepend() a new loader whose status is LoaderStatus.READY. This basically makes it easy to create a LoaderMax queue and dump stuff into it whenever you want it to load without having to check the LoaderMax's status and call load() manually if it's not already loading.
    • + *
    • loaders : Array - An array of loaders (ImageLoaders, SWFLoaders, XMLLoaders, MP3Loaders, other LoaderMax instances, etc.) that should be immediately inserted into the LoaderMax.
    • + *
    • requireWithRoot : DisplayObject - LoaderMax supports subloading, where an object can be factored into a parent's loading progress. If you want this LoaderMax to be required as part of its parent SWFLoader's progress, you must set the requireWithRoot property to your swf's root. For example, var loader:LoaderMax = new LoaderMax({name:"mainQueue", requireWithRoot:this.root});
    • + *
    • autoDispose : Boolean - When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false. + * + *

      ----EVENT HANDLER SHORTCUTS----

    • + *
    • onOpen : Function - A handler function for LoaderEvent.OPEN events which are dispatched when the loader begins loading. Make sure your onOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onProgress : Function - A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.
    • + *
    • onComplete : Function - A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onCancel : Function - A handler function for LoaderEvent.CANCEL events which are dispatched when loading is aborted due to either an error or because another loader was prioritized or cancel() was manually called. Make sure your onCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onError : Function - A handler function for LoaderEvent.ERROR events which are dispatched whenever the loader or any of its children fails (typically because of an IO_ERROR or SECURITY_ERROR). Make sure your onError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildOpen : Function - A handler function for LoaderEvent.CHILD_OPEN events which are dispatched each time one of the loader's children (or any descendant) begins loading. Make sure your onChildOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildProgress : Function - A handler function for LoaderEvent.CHILD_PROGRESS events which are dispatched each time one of the loader's children (or any descendant) dispatches a PROGRESS event. To listen for changes in the LoaderMax's overall progress, use the onProgress special property instead. You can use the LoaderEvent's target.progress to get the child loader's progress value or use its target.bytesLoaded and target.bytesTotal. The LoaderEvent's currentTarget refers to the LoaderMax, so you can check its overall progress with the LoaderEvent's currentTarget.progress. Make sure your onChildProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildComplete : Function - A handler function for LoaderEvent.CHILD_COMPLETE events which are dispatched each time one of the loader's children (or any descendant) finishes loading successfully. Make sure your onChildComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildCancel : Function - A handler function for LoaderEvent.CHILD_CANCEL events which are dispatched each time loading is aborted on one of the loader's children (or any descendant) due to either an error or because another loader was prioritized in the queue or because cancel() was manually called on the child loader. Make sure your onChildCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildFail : Function - A handler function for LoaderEvent.CHILD_FAIL events which are dispatched each time one of the loader's children (or any descendant) fails (and its status chances to LoaderStatus.FAILED). Make sure your onChildFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onIOError : Function - A handler function for LoaderEvent.IO_ERROR events which will also call the onError handler, so you can use that as more of a catch-all whereas onIOError is specifically for LoaderEvent.IO_ERROR events. Make sure your onIOError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onHTTPStatus : Function - A handler function for LoaderEvent.HTTP_STATUS events. Make sure your onHTTPStatus function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onScriptAccessDenied : Function - A handler function for LoaderEvent.SCRIPT_ACCESS_DENIED events which are dispatched when one of the LoaderMax's children (or any descendant) is loaded from another domain and no crossdomain.xml is in place to grant full script access for things like smoothing or BitmapData manipulation. Make sure your function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    + * @see com.greensock.loading.data.LoaderMaxVars + */ + public function LoaderMax(vars:Object=null) { + super(vars); + _type = "LoaderMax"; + _loaders = []; + _activeLoaders = new Dictionary(); + this.skipFailed = Boolean(this.vars.skipFailed != false); + this.skipPaused = Boolean(this.vars.skipPaused != false); + this.autoLoad = Boolean(this.vars.autoLoad == true); + this.maxConnections = ("maxConnections" in this.vars) ? uint(this.vars.maxConnections) : 2; + if (this.vars.loaders is Array) { + for (var i:int = 0; i < this.vars.loaders.length; i++) { + insert(this.vars.loaders[i], i); + } + } + } + + /** + * Analyzes a url or array of urls and attempts to automatically create the appropriate loader(s) based + * on file extension(s) in the url(s), returning either an individual loader like an ImageLoader, + * SWFLoader, XMLLoader, etc or if an array is passed in, a LoaderMax will be returned containing + * a child for each parsed url (or URLRequest) in the array. Arrays may also contain LoaderCore instances + * (not just url Strings). + *

    Single loader example:

    +import com.greensock.loading.~~; +import com.greensock.loading.core.~~; +import com.greensock.events.LoaderEvent; + +//activate the necessary loaders so that their file extensions can be recognized (do this once) +LoaderMax.activate([ImageLoader, SWFLoader, XMLLoader]); + +//now parse a url and create the correct type of loader (an ImageLoader in this case because the file extension is ".jpg") +var loader:LoaderCore = LoaderMax.parse("../img/photo1.jpg", {name:"parsedLoader", onComplete:completeHandler}); + +//begin loading +loader.load(); + +function completeHandler(event:LoaderEvent):void { + trace("finished loading " + event.target); +} + + *

    If an array is passed to the LoaderMax.parse() method, it will create a LoaderMax instance + * and add the necessary children based on the contents of the array:

    + * Array example:+import com.greensock.loading.~~; +import com.greensock.events.LoaderEvent; + +//activate the necessary loaders so that their file extensions can be recognized (do this once) +LoaderMax.activate([ImageLoader, SWFLoader, XMLLoader, MP3Loader]); + +var urls:Array = ["img/photo1.jpg","../../xml/data.xml","swf/main.swf","http://www.greensock.com/audio/music.mp3"]; + +//now parse all of the urls, creating a LoaderMax that contains the correct type of loaders (an ImageLoader, XMLLoader, SWFLoader, and MP3Loader respectively) +var loader:LoaderMax = LoaderMax.parse(urls, {name:"mainQueue", onComplete:completeHandler}) as LoaderMax; + +//begin loading +loader.load(); + +function completeHandler(event:LoaderEvent):void { + trace("finished loading " + loader.numChildren + " loaders."); +} + + * + * @param data A String or an array of Strings (and/or LoaderCore instances and/or URLRequest instances) to parse. + * @param vars The vars object to pass the loader's constructor. If data is an array, this vars will be passed to the LoaderMax instance that gets created, and no vars object will be passed to the child loaders that get created. + * @param childrenVars The vars object that will be passed to each child loader's constructor (only applicable when the data parameter is an array which means parse() will return a LoaderMax). For example, if you parse() and array of video urls and want autoPlay set to false for all of them, you'd do LoaderMax.parse(["1.flv","2.f4v","3.mp4"], null, {autoPlay:false});. + * @return If data is an array, parse() will return a LoaderMax. Otherwise, it will return the appropriate loader based on the file extension found in the URL. In any case, the object returned will be a LoaderCore object (all LoaderMax loaders extend LoaderCore, so if you need to datatype your object use com.greensock.loading.core.LoaderCore). The return value is typed as "*" in order to avoid compiler errors when developers forget to cast ther objects like var image:ImageLoader = LoaderMax.parse("photo.jpg") as ImageLoader + */ + public static function parse(data:*, vars:Object=null, childrenVars:Object=null):* { + if (data is Array) { + var queue:LoaderMax = new LoaderMax(vars); + var l:int = data.length; + for (var i:int = 0; i < l; i++) { + queue.append(LoaderMax.parse(data[i], childrenVars)); + } + return queue; + } else if (data is String || data is URLRequest) { + var s:String = (data is String) ? data : URLRequest(data).url; + s = s.toLowerCase().split("?")[0]; + s = s.substr(s.lastIndexOf(".") + 1); + if (s in _extensions) { + return new _extensions[s](data, vars); + } + } else if (data is LoaderCore) { + return data as LoaderCore; + } + throw new Error("LoaderMax could not parse " + data + ". Don't forget to use LoaderMax.activate() to activate the necessary types of loaders."); + return null; + } + + /** @private **/ + override protected function _load():void { + _loadNext(null); + } + + /** + * Appends a loader to the end of the queue. + * + * @param loader The loader to append to the queue. It can be any loader (ImageLoader, XMLLoader, SWFLoader, MP3Loader, another LoaderMax, etc.). + * @return The loader that was appended. + * @see #prepend() + * @see #insert() + * @see #remove() + */ + public function append(loader:LoaderCore):LoaderCore { + return insert(loader, _loaders.length); + } + + /** + * Prepends a loader at the beginning of the queue (append() adds the loader to the end whereas prepend() adds it to the beginning). + * + * @param loader The loader to prepend to the queue. It can be any loader (ImageLoader, XMLLoader, SWFLoader, MP3Loader, another LoaderMax, etc.). + * @return The loader that was prepended. + * @see #append() + * @see #insert() + * @see #remove() + */ + public function prepend(loader:LoaderCore):LoaderCore { + return insert(loader, 0); + } + + /** + * Inserts a loader at a particular position in the queue. Index values are zero-based just like arrays. + * For example, if the LoaderMax has 10 loaders in it already and you want to insert a loader at the 3rd + * position (index: 2) while moving the others back in the queue (like the way splice() works + * in arrays), you'd do:

    + * + * queue.insert( new ImageLoader("img/photo.jpg"), 2);

    + * + *

    When a new loader is added to the LoaderMax, the LoaderMax's status changes to LoaderStatus.READY + * unless it is paused or disposed. If the loader is already in the queue, it will be removed first.

    + * + * @param loader The loader to insert into the queue. It can be any loader (ImageLoader, XMLLoader, SWFLoader, MP3Loader, DataLoader, CSSLoader, another LoaderMax, etc.). + * @param index The index position at which the loader should be inserted, exactly like the way splice() works for arrays. Index values are 0-based, so the first position is 0, the second is 1, the third is 2, etc. + * @return The loader that was inserted + * @see #append() + * @see #prepend() + * @see #remove() + */ + public function insert(loader:LoaderCore, index:uint=999999999):LoaderCore { + if (loader == null || loader == this || _status == LoaderStatus.DISPOSED) { + return null; + } + if (this != loader.rootLoader) { + _removeLoader(loader, false); //in case it was already added. + } + if (loader.rootLoader == _globalRootLoader) { //don't remove from rootLoaders other than _globalRootLoader, otherwise subloading swfs with loaders that contain LoaderMax instances with nested loaders that have requiredWithRoot set to the associated rootLoader won't be able to be found inside that rootLoader. We could of course leave loaders in _globalRootLoader, but that we get a performance benefit from removing them (fewer event listeners getting called). + loader.rootLoader.remove(loader); + } + + if (index > _loaders.length) { + index = _loaders.length; + } + + _loaders.splice(index, 0, loader); + if (this != _globalRootLoader) { + for (var p:String in _listenerTypes) { + if (p != "onProgress" && p != "onInit") { + loader.addEventListener(_listenerTypes[p], _passThroughEvent, false, -100, true); + } + } + loader.addEventListener(LoaderEvent.PROGRESS, _progressHandler, false, -100, true); //use -1 so that if the user adds an event listener, it gets called before LoaderMax is notified. Otherwise bubbling behavior doesn't go in the proper order. + loader.addEventListener("prioritize", _prioritizeHandler, false, -100, true); + } + loader.addEventListener("dispose", _disposeHandler, false, -100, true); + _cacheIsDirty = true; + if (_status == LoaderStatus.LOADING) { + //do nothing + } else if (_status != LoaderStatus.PAUSED) { + _status = LoaderStatus.READY; + } else if (_prePauseStatus == LoaderStatus.COMPLETED) { + _prePauseStatus = LoaderStatus.READY; + } + + if (this.autoLoad && loader.status == LoaderStatus.READY) { + if (_status != LoaderStatus.LOADING) { + this.load(false); + } else { + _loadNext(null); //to ensure the maxConnections pipeline is full + } + } + + return loader; + } + + /** + * Removes a loader from the LoaderMax. + * + * @param loader The loader to remove from the LoaderMax + * @see #append() + * @see #insert() + * @see #prepend() + */ + public function remove(loader:LoaderCore):void { + _removeLoader(loader, true); + } + + /** @private **/ + protected function _removeLoader(loader:LoaderCore, rootLoaderAppend:Boolean):void { + if (loader == null) { + return; + } + if (rootLoaderAppend && this != loader.rootLoader) { + loader.rootLoader.append(loader); + } + _removeLoaderListeners(loader, true); + _loaders.splice(getChildIndex(loader), 1); + if (loader in _activeLoaders) { + delete _activeLoaders[loader]; + loader.cancel(); + if (_status == LoaderStatus.LOADING) { + _loadNext(null); + } + } + _cacheIsDirty = true; + _progressHandler(null); //has conditional logic that will only dispatch a PROGRESS event if bytesLoaded or bytesTotal has changed. + } + + /** + * Empties the LoaderMax of all its loaders and optionally disposes/unloads them. + * + * @param disposeChildren If true (the default), dispose() will be called on all loaders in the LoaderMax. + * @param unloadAllContent If true, the content of all child loaders will be unloaded. + * @see #dispose() + * @see #unload() + */ + public function empty(disposeChildren:Boolean=true, unloadAllContent:Boolean=false):void { + var i:int = _loaders.length; + while (--i > -1) { + if (disposeChildren) { + LoaderCore(_loaders[i]).dispose(unloadAllContent); + } else if (unloadAllContent) { + LoaderCore(_loaders[i]).unload(); + } else { + _removeLoader(_loaders[i], true); + } + } + } + + /** @private scrubLevel: 0 = cancel, 1 = unload, 2 = dispose, 3 = flush **/ + override protected function _dump(scrubLevel:int=0, newStatus:int=0, suppressEvents:Boolean=false):void { + if (newStatus == LoaderStatus.DISPOSED) { + _status = LoaderStatus.DISPOSED; //must set it first so that when events from children are dispatched, it doesn't trigger other unnecessary actions. + empty(true, Boolean(scrubLevel == 3)); + if (this.vars.requireWithRoot is DisplayObject) { + delete _rootLookup[this.vars.requireWithRoot]; + } + _activeLoaders = null; + } + if (scrubLevel <= 1) { + _cancelActiveLoaders(); + } + if (scrubLevel == 1) { + var i:int = _loaders.length; + while (--i > -1) { + LoaderCore(_loaders[i]).unload(); + } + } + super._dump(scrubLevel, newStatus, suppressEvents); + _cacheIsDirty = true; + } + + /** @private **/ + override protected function _calculateProgress():void { + _cachedBytesLoaded = 0; + _cachedBytesTotal = 0; + var i:int = _loaders.length; + var loader:LoaderCore, s:int; + while (--i > -1) { + loader = _loaders[i]; + s = loader.status; + if (s <= LoaderStatus.COMPLETED || (!this.skipPaused && s == LoaderStatus.PAUSED) || (!this.skipFailed && s == LoaderStatus.FAILED)) { + _cachedBytesLoaded += loader.bytesLoaded; + _cachedBytesTotal += loader.bytesTotal; + } + } + _cacheIsDirty = false; + } + + /** @private **/ + protected function _cancelActiveLoaders():void { + var i:int = _loaders.length; + var loader:LoaderCore; + while (--i > -1) { + loader = _loaders[i]; + if (loader.status == LoaderStatus.LOADING) { + delete _activeLoaders[loader]; + _removeLoaderListeners(loader, false); + loader.cancel(); + } + } + } + + /** @private **/ + protected function _removeLoaderListeners(loader:LoaderCore, all:Boolean):void { + loader.removeEventListener(LoaderEvent.COMPLETE, _loadNext); + loader.removeEventListener(LoaderEvent.CANCEL, _loadNext); + if (all) { + loader.removeEventListener(LoaderEvent.PROGRESS, _progressHandler); + loader.removeEventListener("prioritize", _prioritizeHandler); + loader.removeEventListener("dispose", _disposeHandler); + for (var p:String in _listenerTypes) { + if (p != "onProgress" && p != "onInit") { + loader.removeEventListener(_listenerTypes[p], _passThroughEvent); + } + } + } + } + + /** + * Returns and array of child loaders that currently have a particular status. For example, + * to find all loaders inside the LoaderMax instance that are actively in the process of loading:

    + * + * loader.getChildrenByStatus(LoaderStatus.LOADING, false);

    + * + * @param status Status code like LoaderStatus.READY, LoaderStatus.LOADING, LoaderStatus.COMPLETED, LoaderStatus.PAUSED, or LoaderStatus.FAILED. + * @param includeNested If true, loaders that are nested inside other loaders (like LoaderMax instances or XMLLoaders or SWFLoaders) will be returned in the array. + * @param omitLoaderMaxes If true, no LoaderMax instances will be returned in the array; only LoaderItems like ImageLoaders, XMLLoaders, SWFLoaders, MP3Loaders, etc. The default is false. + * @return An array of loaders that match the defined status. + * @see #getChildren() + * @see #getLoader() + * @see #numChildren + */ + public function getChildrenByStatus(status:int, includeNested:Boolean=false, omitLoaderMaxes:Boolean=false):Array { + var a:Array = []; + var loaders:Array = getChildren(includeNested, omitLoaderMaxes); + var l:int = loaders.length; + for (var i:int = 0; i < l; i++) { + if (LoaderCore(loaders[i]).status == status) { + a.push(loaders[i]); + } + } + return a; + } + + /** + * Returns the child that is at a particular position (zero-based index) in the queue. For example, + * myLoaderMax.getChildAt(0) would get the first loader in the queue. + * myLoaderMax.getChildAt(2) would get the 3rd loader in the queue. + * + * @param index The index of the child in the queue that should be returned. For example, myLoaderMax.getChildAt(0) would get the first loader in the queue. myLoaderMax.getChildAt(2) would get the 3rd loader. + * @return The child loader that is located at the corresponding index + * @see #getChildren() + * @see #getLoader() + * @see #getChildrenByStatus() + */ + public function getChildAt(index:int):* { + return _loaders[index]; + } + + /** + * Returns and array of all child loaders inside the LoaderMax, optionally exposing more deeply nested + * instances as well (like loaders inside a child LoaderMax instance). + * + * @param includeNested If true, loaders that are nested inside child LoaderMax, XMLLoader, or SWFLoader instances will be included in the returned array as well. The default is false. + * @param omitLoaderMaxes If true, no LoaderMax instances will be returned in the array; only LoaderItems like ImageLoaders, XMLLoaders, SWFLoaders, MP3Loaders, etc. The default is false. + * @return An array of loaders. + * @see #getChildrenByStatus() + * @see #getLoader() + * @see #numChildren + */ + public function getChildren(includeNested:Boolean=false, omitLoaderMaxes:Boolean=false):Array { + var a:Array = []; + var l:int = _loaders.length; + for (var i:int = 0; i < l; i++) { + if (!omitLoaderMaxes || !(_loaders[i] is LoaderMax)) { + a.push(_loaders[i]); + } + if (includeNested && _loaders[i].hasOwnProperty("getChildren")) { + a = a.concat(_loaders[i].getChildren(true, omitLoaderMaxes)); + } + } + return a; + } + + /** + * Immediately prepends a value to the beginning of each child loader's url. For example, + * if the "myLoaderMax" instance contains 3 ImageLoaders with the urls "image1.jpg", "image2.jpg", and "image3.jpg" + * and you'd like to add "http://www.greensock.com/images/" to the beginning of them all, you'd do:

    + * + * myLoaderMax.prependURLs("http://www.greensock.com/images/", false);

    + * + *

    Now the ImageLoader urls would be "http://www.greensock.com/images/image1.jpg", "http://www.greensock.com/images/image2.jpg", + * and "http://www.greensock.com/images/image3.jpg" respectively.

    + * + *

    prependURLs() permanently affects each child loader's url meaning that + * LoaderMax.getContent("image1.jpg") would not find the loader whose url + * is now "http://www.greensock.com/images/image1.jpg" (although you could simply use its name + * instead of its url to find it). It also means that if a single loader has been + * inserted into multiple LoaderMax instances, its url change affects them all.

    + * + *

    prependURLs() only affects loaders that are children of the LoaderMax when + * the method is called - it does not affect loaders that are inserted later.

    + * + *

    prependURLs() does NOT affect any alternateURL values that are defined + * for each child loader.

    + * + * @param value The String that should be prepended to each child loader + * @param includeNested If true, loaders nested inside child LoaderMax instances will also be affected. It is false by default. + * @see #replaceURLText() + */ + public function prependURLs(prependText:String, includeNested:Boolean=false):void { + var loaders:Array = getChildren(includeNested, true); + var i:int = loaders.length; + while (--i > -1) { + LoaderItem(loaders[i]).url = prependText + LoaderItem(loaders[i]).url; + } + } + + /** + * Immediately replaces a certain substring in each child loader's url with another string, + * making it simple to do something like change "{imageDirectory}image1.jpg" to + * "http://www.greensock.com/images/image1.jpg". For example, + * if the "myLoaderMax" instance contains 3 ImageLoaders with the urls "{imageDirectory}image1.jpg", + * "{imageDirectory}image2.jpg", and "{imageDirectory}image3.jpg" + * and you'd like to replace {imageDirectory} with http://www.greensock.com/images/ + * you'd do:

    + * + * myLoaderMax.replaceURLText("{imageDirectory}", "http://www.greensock.com/images/", false);

    + * + *

    Now the ImageLoader urls would be "http://www.greensock.com/images/image1.jpg", "http://www.greensock.com/images/image2.jpg", + * and "http://www.greensock.com/images/image3.jpg" respectively.

    + * + *

    replaceURLText() permanently affects each child loader's url meaning that + * LoaderMax.getContent("image1.jpg") would not find the loader whose url + * is now "http://www.greensock.com/images/image1.jpg" (although you could simply use its name + * instead of its url to find it). It also means that if a single loader has been + * inserted into multiple LoaderMax instances, its url change affects them all.

    + * + *

    replaceURLText() only affects loaders that are children of the LoaderMax when + * the method is called - it does not affect loaders that are inserted later.

    + * + *

    replaceURLText() does affect alternateURL values for child loaders.

    + * + * @param fromText The old String that should be replaced in each child loader. + * @param toText The new String that should replace the fromText. + * @param includeNested If true, loaders nested inside child LoaderMax instances will also be affected. It is false by default. + * @see #prependURLs() + */ + public function replaceURLText(fromText:String, toText:String, includeNested:Boolean=false):void { + var loaders:Array = getChildren(includeNested, true); + var loader:LoaderItem; + var i:int = loaders.length; + while (--i > -1) { + loader = loaders[i]; + loader.url = loader.url.split(fromText).join(toText); + if ("alternateURL" in loader.vars) { + loader.vars.alternateURL = loader.vars.alternateURL.split(fromText).join(toText); + } + } + } + + /** + * Finds a loader based on its name or url. For example:

    + * + * var loader:ImageLoader = queue.getLoader("myPhoto1");

    + * + *

    Feel free to use the static LoaderMax.getLoader() method instead of the instance-based getLoader() + * method because the static one will search ALL loaders (the only exception being loaders in a different security + * sandbox, like in subloaded swfs from a different domain that didn't have a crossdomain.xml file in place granting permission).

    + * + * @param nameOrURL The name or url associated with the loader that should be found. + * @return The loader associated with the name or url. + * @see #getContent() + * @see #getChildren() + * @see #getChildrenByStatus() + */ + public function getLoader(nameOrURL:String):* { + var i:int = _loaders.length; + var loader:LoaderCore; + while (--i > -1) { + loader = _loaders[i]; + if (loader.name == nameOrURL || (loader is LoaderItem && (loader as LoaderItem).url == nameOrURL)) { + return loader; + } else if (loader.hasOwnProperty("getLoader")) { + loader = (loader as Object).getLoader(nameOrURL) as LoaderCore; + if (loader != null) { + return loader; + } + } + } + return null; + } + + /** + * Finds the content of a loader based on its name or url. For example:

    + * + * var image:Bitmap = queue.getContent("myPhoto1");

    + * + *

    Feel free to use the static LoaderMax.getContent() method instead of the instance-based getContent() + * method because the static one will search ALL loaders (the only exception being loaders in a different security + * sandbox, like in subloaded swfs from a different domain that didn't have a crossdomain.xml file in place granting permission).

    + * + * @param nameOrURL The name or url associated with the loader whose content should be found. + * @return The content that was loaded by the loader which varies by the type of loader: + *
      + *
    • ImageLoader - A com.greensock.loading.display.ContentDisplay (a Sprite) which contains the ImageLoader's rawContent (a flash.display.Bitmap unless script access was denied in which case rawContent will be a flash.display.Loader to avoid security errors). For Flex users, you can set LoaderMax.defaultContentDisplay to FlexContentDisplay in which case ImageLoaders, SWFLoaders, and VideoLoaders will return a com.greensock.loading.display.FlexContentDisplay instance instead.
    • + *
    • SWFLoader - A com.greensock.loading.display.ContentDisplay (a Sprite) which contains the SWFLoader's rawContent (the swf's root DisplayObject unless script access was denied in which case rawContent will be a flash.display.Loader to avoid security errors). For Flex users, you can set LoaderMax.defaultContentDisplay to FlexContentDisplay in which case ImageLoaders, SWFLoaders, and VideoLoaders will return a com.greensock.loading.display.FlexContentDisplay instance instead.
    • + *
    • VideoLoader - A com.greensock.loading.display.ContentDisplay (a Sprite) which contains the VideoLoader's rawContent (a Video object to which the NetStream was attached). For Flex users, you can set LoaderMax.defaultContentDisplay to FlexContentDisplay in which case ImageLoaders, SWFLoaders, and VideoLoaders will return a com.greensock.loading.display.FlexContentDisplay instance instead.
    • + *
    • XMLLoader - XML
    • + *
    • DataLoader + *
        + *
      • String if the DataLoader's format vars property is "text" (the default).
      • + *
      • flash.utils.ByteArray if the DataLoader's format vars property is "binary".
      • + *
      • flash.net.URLVariables if the DataLoader's format vars property is "variables".
      • + *
    • + *
    • CSSLoader - flash.text.StyleSheet
    • + *
    • MP3Loader - flash.media.Sound
    • + *
    • LoaderMax - an array containing the content objects from each of its child loaders.
    • + *
    + * @see #getLoader() + * @see #content + */ + public function getContent(nameOrURL:String):* { + var loader:LoaderCore = this.getLoader(nameOrURL); + return (loader != null) ? loader.content : null; + } + + /** + * Finds the index position of a particular loader in the LoaderMax. Index values are always zero-based, + * meaning the first position is 0, the second is 1, the third is 2, etc. + * + * @param loader The loader whose index position should be returned + * @return The index position of the loader + * @see #getChildren() + * @see #getChildrenByStatus() + */ + public function getChildIndex(loader:LoaderCore):uint { + var i:int = _loaders.length; + while (--i > -1) { + if (_loaders[i] == loader) { + return i; + } + } + return 999999999; + } + + /** @inheritDoc **/ + override public function auditSize():void { + if (!this.auditedSize) { + _auditSize(null); + } + } + + /** @private **/ + protected function _auditSize(event:Event=null):void { + if (event != null) { + event.target.removeEventListener("auditedSize", _auditSize); + event.target.removeEventListener(LoaderEvent.FAIL, _auditSize); + } + var l:uint = _loaders.length; + var maxStatus:int = (this.skipPaused) ? LoaderStatus.COMPLETED : LoaderStatus.PAUSED; + var loader:LoaderCore, found:Boolean; + for (var i:int = 0; i < l; i++) { + loader = _loaders[i]; + if (!loader.auditedSize && loader.status <= maxStatus && loader.vars.auditSize != false) { + if (!found) { + loader.addEventListener("auditedSize", _auditSize, false, -100, true); + loader.addEventListener(LoaderEvent.FAIL, _auditSize, false, -100, true); + } + found = true; + loader.auditSize(); + } + } + if (!found) { + if (_status == LoaderStatus.LOADING) { + _loadNext(null); + } + dispatchEvent(new Event("auditedSize")); + } + } + + +//---- EVENT HANDLERS ------------------------------------------------------------------------------------ + + /** @private **/ + protected function _loadNext(event:Event=null):void { + if (event != null && _activeLoaders != null) { + delete _activeLoaders[event.target]; + _removeLoaderListeners(LoaderCore(event.target), false); + } + + if (_status == LoaderStatus.LOADING) { + + var audit:Boolean = ("auditSize" in this.vars) ? Boolean(this.vars.auditSize) : LoaderMax.defaultAuditSize; + if (audit && !this.auditedSize) { + _auditSize(null); + return; + } + + var loader:LoaderCore, loaders:Array = _loaders.concat(), l:int = loaders.length, activeCount:uint = 0; //use _loaders.concat() because in some rare situations, a loader's COMPLETE event might occur immediately and if autoDispose is true, the length of the array could change mid-loop causing a skip. + _calculateProgress(); + for (var i:int = 0; i < l; i++) { + loader = loaders[i]; + if (!this.skipPaused && loader.status == LoaderStatus.PAUSED) { + super._failHandler(new LoaderEvent(LoaderEvent.FAIL, this, "Did not complete LoaderMax because skipPaused was false and " + loader.toString() + " was paused."), false); + return; + + } else if (!this.skipFailed && loader.status == LoaderStatus.FAILED) { + super._failHandler(new LoaderEvent(LoaderEvent.FAIL, this, "Did not complete LoaderMax because skipFailed was false and " + loader.toString() + " failed."), false); + return; + + } else if (loader.status <= LoaderStatus.LOADING) { + activeCount++; + if (!(loader in _activeLoaders)) { + _activeLoaders[loader] = true; + loader.addEventListener(LoaderEvent.COMPLETE, _loadNext, false, -100, true); + loader.addEventListener(LoaderEvent.CANCEL, _loadNext, false, -100, true); + loader.load(false); + } + if (activeCount == this.maxConnections) { + break; + } + } + } + if (activeCount == 0 && _cachedBytesLoaded == _cachedBytesTotal) { + _completeHandler(null); + } + } + } + + /** @private **/ + override protected function _progressHandler(event:Event):void { + if (_dispatchChildProgress && event != null) { + dispatchEvent(new LoaderEvent(LoaderEvent.CHILD_PROGRESS, event.target)); + } + if (_dispatchProgress && _status != LoaderStatus.DISPOSED) { + var bl:uint = _cachedBytesLoaded; + var bt:uint = _cachedBytesTotal; + _calculateProgress(); + if (bl == 0 && _cachedBytesLoaded == 0) { + //do nothing + } else if ((_cachedBytesLoaded != _cachedBytesTotal || _status != LoaderStatus.LOADING) && (bl != _cachedBytesLoaded || bt != _cachedBytesTotal)) { //note: added _status != LoaderStatus.LOADING because it's possible for all the children to load independently (without the LoaderMax actively loading), so in those cases, the progress would never reach 1 since LoaderMax's _completeHandler() won't be called to dispatch the final PROGRESS event. + dispatchEvent(new LoaderEvent(LoaderEvent.PROGRESS, this)); + } + } else { + _cacheIsDirty = true; + } + } + + /** @private **/ + protected function _disposeHandler(event:Event):void { + _removeLoader(LoaderCore(event.target), false); + } + + /** @private **/ + protected function _prioritizeHandler(event:Event):void { + var loader:LoaderCore = event.target as LoaderCore; + _loaders.splice(getChildIndex(loader), 1); + _loaders.unshift(loader); + if (_status == LoaderStatus.LOADING && loader.status <= LoaderStatus.LOADING && !(loader in _activeLoaders)) { + _cancelActiveLoaders(); + var prevMaxConnections:uint = this.maxConnections; + this.maxConnections = 1; + _loadNext(null); + this.maxConnections = prevMaxConnections; + } + } + + +//---- STATIC METHODS ---------------------------------------------------------------------------- + + /** + * Activates particular loader classes (like ImageLoader, SWFLoader, etc.) so that they can be + * recognized inside the parse() method and XMLLoader. For example, if LoaderMax.parse("image.jpg") + * is called without first activating ImageLoader (like LoaderMax.activate([ImageLoader])), + * it wouldn't properly recognize the ".jpg" extension and return the necessary ImageLoader instance. Likewise, + * without activating ImageLoader first, XMLLoader wouldn't be able to recognize <ImageLoader> + * nodes nested inside an XML file. You only need to activate() the loader classes once in your swf. + * For example:

    + * + * LoaderMax.activate([ImageLoader, SWFLoader, MP3Loader, DataLoader, CSSLoader]);

    + * + *

    The reason all loaders aren't activated by default is to conserve file size.

    + * + * @param loaderClasses An array of loader classes, like [ImageLoader, SWFLoader, MP3Loader]. + */ + public static function activate(loaderClasses:Array):void { + //no need to do anything - we just want to force the classes to get compiled in the swf. Each one calls the _activateClass() method in LoaderCore on its own. + } + + /** + * By default, LoaderMax associates certain file extensions with certain types of loaders, like "jpg", "png", and "gif" + * are associated with ImageLoader and "swf" is associated with SWFLoader so that the LoaderMax.parse() method + * can recognize and create the appropriate loaders for each URL passed in. If you'd like to associate additional file + * extensions with certain loader types, you may do so with registerFileType(). For example, to associate + * "pdf" with BinaryDataLoader, you would do this:

    + * + * LoaderMax.registerFileType("pdf", BinaryDataLoader);

    + * + *

    Then, if you call LoaderMax.parse("file/myFile.pdf"), it would recognize the "pdf" file extension + * as being associated with BinaryDataLoader and would return a BinaryDataLoader instance accordingly.

    + * + *

    There is no reason to use registerFileType() unless you plan on utilizing the parse() + * method and need it to recognize a extensions that LoaderMax doesn't already recognize by default.

    + * + *

    NOTE: Make sure you activate() the various loader types you want LoaderMax to recognize before calling parse() - see the documentation for LoaderMax.activate())

    + * + * @param extensions The extension (or comma-delimited list of extensions) that should be associated with the loader class, like "zip" or "zip,pdf". Do not include the dot in the extension. + * @param loaderClass The loader class that should be associated with the extension(s), like BinaryDataLoader. + * @see #activate() + */ + public static function registerFileType(extensions:String, loaderClass:Class):void { + _activateClass("", loaderClass, extensions); + } + + /** + * Searches ALL loaders to find one based on its name or url. For example:

    + * + * var loader:ImageLoader = LoaderMax.getLoader("myPhoto1") as ImageLoader;

    + * + * @param nameOrURL The name or url associated with the loader that should be found. + * @return The loader associated with the name or url. + */ + public static function getLoader(nameOrURL:String):* { + return (_globalRootLoader != null) ? _globalRootLoader.getLoader(nameOrURL) : null; + } + + /** + * Searches ALL loaders to find content based on its name or url. For example:

    + * + * var image:Bitmap = LoaderMax.getContent("myPhoto1");

    + * + * @param nameOrURL The name or url associated with the loader whose content should be found. + * @return The content that was loaded by the loader which varies by the type of loader: + *
      + *
    • ImageLoader - A com.greensock.loading.display.ContentDisplay (a Sprite) which contains the ImageLoader's rawContent (a flash.display.Bitmap unless script access was denied in which case rawContent will be a flash.display.Loader to avoid security errors).
    • + *
    • SWFLoader - A com.greensock.loading.display.ContentDisplay (a Sprite) which contains the SWFLoader's rawContent (the swf's root DisplayObject unless script access was denied in which case rawContent will be a flash.display.Loader to avoid security errors).
    • + *
    • VideoLoader - A com.greensock.loading.display.ContentDisplay (a Sprite) which contains the VideoLoader's rawContent (a Video object to which the NetStream was attached).
    • + *
    • XMLLoader - XML
    • + *
    • DataLoader + *
        + *
      • String if the DataLoader's format vars property is "text" (the default).
      • + *
      • flash.utils.ByteArray if the DataLoader's format vars property is "binary".
      • + *
      • flash.net.URLVariables if the DataLoader's format vars property is "variables".
      • + *
    • + *
    • CSSLoader - flash.text.StyleSheet
    • + *
    • MP3Loader - flash.media.Sound
    • + *
    • LoaderMax - an array containing the content objects from each of its child loaders.
    • + *
    + */ + public static function getContent(nameOrURL:String):* { + return (_globalRootLoader != null) ? _globalRootLoader.getContent(nameOrURL) : null; + } + + /** + * Immediately prioritizes a loader inside any LoaderMax instances that contain it, + * forcing it to the top position in their queue and optionally calls load() + * immediately as well. If one of its parent LoaderMax instances is currently loading a + * different loader, that one will be temporarily cancelled. + * + *

    By contrast, when load() is called, it doesn't change the loader's position/index + * in any LoaderMax queues. For example, if a LoaderMax is working on loading the first object in + * its queue, you can call load() on the 20th item and it will honor your request without + * changing its index in the queue. prioritize(), however, affects the position + * in the queue and optionally loads it immediately as well.

    + * + *

    So even if your LoaderMax hasn't begun loading yet, you could prioritize(false) + * a loader and it will rise to the top of all LoaderMax instances to which it belongs, but not + * start loading yet. If the goal is to load something immediately, you can just use the + * load() method.

    + * + *

    For example, to immediately prioritize the loader named "myPhoto1":

    + * + * LoaderMax.prioritize("myPhoto1");

    + * + * @param nameOrURL The name or url associated with the loader that should be prioritized + * @param loadNow If true (the default), the loader will start loading immediately (otherwise it is simply placed at the top the queue in any LoaderMax instances to which it belongs). + * @return The loader that was prioritized. If no loader was found, null is returned. + */ + public static function prioritize(nameOrURL:String, loadNow:Boolean=true):LoaderCore { + var loader:LoaderCore = getLoader(nameOrURL); + if (loader != null) { + loader.prioritize(loadNow); + } + return loader; + } + + override protected function _passThroughEvent(event:Event):void { + super._passThroughEvent(event); + if (!this.skipFailed && (event.type == "fail" || event.type == "childFail") && this.status == LoaderStatus.LOADING) { + super._failHandler(new LoaderEvent(LoaderEvent.FAIL, this, "Did not complete LoaderMax because skipFailed was false and " + event.target.toString() + " failed."), false); + } + } + + +//---- GETTERS / SETTERS ------------------------------------------------------------------------- + + /** Number of child loaders currently contained in the LoaderMax instance (does not include deeply nested loaders - only children). To get the quantity of all children including nested ones, use getChildren(true, true).length @see #getChildren() **/ + public function get numChildren():uint { + return _loaders.length; + } + + /** An array containing the content of each loader inside the LoaderMax **/ + override public function get content():* { + var a:Array = []; + var i:int = _loaders.length; + while (--i > -1) { + a[i] = LoaderCore(_loaders[i]).content; + } + return a; + } + + /** @inheritDoc **/ + override public function get status():int { + //if the status of children changed after the LoaderMax completed, we need to make adjustments to the LoaderMax's status. + if (_status == LoaderStatus.COMPLETED) { + var statusCounts:Array = [0, 0, 0, 0, 0, 0]; //store the counts of each type of status (index 0 is for READY, 1 is LOADING, 2 is COMPLETE, etc. + var i:int = _loaders.length; + while (--i > -1) { + statusCounts[LoaderCore(_loaders[i]).status]++; + } + if ((!this.skipFailed && statusCounts[4] != 0) || (!this.skipPaused && statusCounts[3] != 0)) { + _status = LoaderStatus.FAILED; + } else if (statusCounts[0] + statusCounts[1] != 0) { + _status = LoaderStatus.READY; + _cacheIsDirty = true; + } + } + return _status; + } + + /** @inheritDoc **/ + override public function get auditedSize():Boolean { + var maxStatus:int = (this.skipPaused) ? LoaderStatus.COMPLETED : LoaderStatus.PAUSED; + var i:int = _loaders.length; + while (--i > -1) { + if (!LoaderCore(_loaders[i]).auditedSize && LoaderCore(_loaders[i]).status <= maxStatus && _loaders[i].vars.auditSize != false) { + return false; + } + } + return true; + } + + /** + * An unweighted value between 0 and 1 indicating the overall loading progress of the LoaderMax - this calculation does not concern + * itself whatsoever with bytesLoaded and bytesTotal but rather the ratio of the children that are loaded + * (all having equal weight). Therefore, rawProgress is a more crude way of measuring the overall loading progress and + * isn't weighted in terms of file size the way that progress is. The only benefit of using rawProgress instead + * of progress is that there is never a risk of the value moving backwards the way it can with progress + * when child loaders have inaccurately low estimatedByte values (before LoaderMax audits the file size values). The rate at which + * rawProgress increases may slow down or speed up depending on the file size of the asset currently loading. For example, + * if a LoaderMax contains two loaders, the first for a file that's 100k and the second for a file that's 10,000k, rawProgress + * will move quickly (while loading the 100k file) until it reaches 0.5 and then slow down significantly (while loading the 10,000k file) + * until it reaches 1. + * + *

    Or let's say you have a LoaderMax that contains 3 ImageLoaders: the first two must load images that are 25k each and the + * 3rd one must load an image that's 450k. After the first two ImageLoaders finish, the LoaderMax's progress property would + * report 0.1 (50k loaded out of 500k total) whereas the rawProgress would report 0.66 (2 loaders out of 3 total have completed). + * However, if you set the estimatedBytes of all of the ImageLoaders in this example to 25600 (25k) and set the LoaderMax's + * auditSize to false, the progress would read about 0.66 after the first two ImageLoaders complete + * (it still thinks they're all 25k) and then when the 3rd one starts loading and LoaderMax finds out that it's 450k, the bytesTotal + * would automatically adjust and the progress would jump backwards to 0.1 (which correctly reflects the weighted progress). + * Of course a solution would be to more accurately set the estimatedBytes and/or leave auditSize true in the + * LoaderMax, but rawProgress can be useful if those solutions are undesirable in your scenario and you need to avoid any + * backwards adjustment of a preloader progress bar or some other interface element.

    + * + * @see #progress + **/ + public function get rawProgress():Number { + var loaded:Number = 0; + var total:uint = 0; + var status:int; + var i:int = _loaders.length; + while (--i > -1) { + status = LoaderCore(_loaders[i]).status; + if (status != LoaderStatus.DISPOSED && !(status == LoaderStatus.PAUSED && this.skipPaused) && !(status == LoaderStatus.FAILED && this.skipFailed)) { + total++; + loaded += (_loaders[i] is LoaderMax) ? LoaderMax(_loaders[i]).rawProgress : LoaderCore(_loaders[i]).progress; + } + } + return (total == 0) ? 0 : loaded / total; + } + + } +} diff --git a/FairyGUI-as3/src/com/greensock/loading/LoaderStatus.as b/FairyGUI-as3/src/com/greensock/loading/LoaderStatus.as new file mode 100644 index 0000000..72b2db0 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/loading/LoaderStatus.as @@ -0,0 +1,32 @@ +/** + * VERSION: 1.0 + * DATE: 2010-06-16 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/loadermax/ + **/ +package com.greensock.loading { +/** + * Defines status values for loaders. + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class LoaderStatus { + + /** The loader is ready to load and has not completed yet. **/ + public static const READY:int = 0; + /** The loader is actively in the process of loading. **/ + public static const LOADING:int = 1; + /** The loader has completed. **/ + public static const COMPLETED:int = 2; + /** The loader is paused. **/ + public static const PAUSED:int = 3; + /** The loader failed and did not load properly. **/ + public static const FAILED:int = 4; + /** The loader has been disposed. **/ + public static const DISPOSED:int = 5; + + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/loading/MP3Loader.as b/FairyGUI-as3/src/com/greensock/loading/MP3Loader.as new file mode 100644 index 0000000..74d464d --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/loading/MP3Loader.as @@ -0,0 +1,472 @@ +/** + * VERSION: 1.931 + * DATE: 2012-09-09 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/loadermax/ + **/ +package com.greensock.loading { + import com.greensock.events.LoaderEvent; + import com.greensock.loading.core.LoaderItem; + + import flash.display.Shape; + import flash.events.Event; + import flash.events.ProgressEvent; + import flash.media.Sound; + import flash.media.SoundChannel; + import flash.media.SoundLoaderContext; + import flash.media.SoundTransform; + +/** + * Loads an MP3 audio file and also provides convenient playback methods + * and properties like pauseSound(), playSound(), gotoSoundTime(), playProgress, volume, + * soundPaused, duration, and soundTime. An MP3Loader will dispatch useful events + * like SOUND_COMPLETE, SOUND_PAUSE, SOUND_PLAY, and PLAY_PROGRESS in addition + * to the typical loader events, making it easy to hook up your own control interface. It packs a + * surprising amount of functionality into a very small amount of kb. + * + *

    OPTIONAL VARS PROPERTIES

    + *

    The following special properties can be passed into the MP3Loader constructor via its vars + * parameter which can be either a generic object or an MP3LoaderVars object:

    + *
      + *
    • name : String - A name that is used to identify the MP3Loader instance. This name can be fed to the find() method or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21".
    • + *
    • autoPlay : Boolean - By default the MP3 will begin playing immediately when enough of the file has buffered, but to prevent it from autoPlaying, set autoPlay to false.
    • + *
    • repeat : int - Number of times that the mp3 should repeat. To repeat indefinitely, use -1. Default is 0.
    • + *
    • volume : Number - A value between 0 and 1 indicating the volume at which the sound should play when the MP3Loader's controls are used to play the sound, like playSound() or when autoPlay is true (default volume is 1).
    • + *
    • initThreshold : uint - The minimum number of bytesLoaded to wait for before the LoaderEvent.INIT event is dispatched - the higher the number the more accurate the duration estimate will be when the INIT event is dispatched (the default value is 102400 which is 100k). The MP3's duration cannot be determined with 100% accuracy until it has completely loaded, but it is estimated with more and more accuracy as the file loads.
    • + *
    • alternateURL : String - If you define an alternateURL, the loader will initially try to load from its original url and if it fails, it will automatically (and permanently) change the loader's url to the alternateURL and try again. Think of it as a fallback or backup url. It is perfectly acceptable to use the same alternateURL for multiple loaders (maybe a default image for various ImageLoaders for example).
    • + *
    • context : SoundLoaderContext - To control things like the buffer time and whether or not a policy file is checked, define a SoundLoaderContext object. The default context is null. See Adobe's SoundLoaderContext documentation for details.
    • + *
    • noCache : Boolean - If noCache is true, a "gsCacheBusterID" parameter will be appended to the url with a random set of numbers to prevent caching (don't worry, this info is ignored when you getLoader() or getContent() by url and when you're running locally)
    • + *
    • estimatedBytes : uint - Initially, the loader's bytesTotal is set to the estimatedBytes value (or LoaderMax.defaultEstimatedBytes if one isn't defined). Then, when the loader begins loading and it can accurately determine the bytesTotal, it will do so. Setting estimatedBytes is optional, but the more accurate the value, the more accurate your loaders' overall progress will be initially. If the loader will be inserted into a LoaderMax instance (for queue management), its auditSize feature can attempt to automatically determine the bytesTotal at runtime (there is a slight performance penalty for this, however - see LoaderMax's documentation for details).
    • + *
    • requireWithRoot : DisplayObject - LoaderMax supports subloading, where an object can be factored into a parent's loading progress. If you want LoaderMax to require this MP3Loader as part of its parent SWFLoader's progress, you must set the requireWithRoot property to your swf's root. For example, var loader:MP3Loader = new MP3Loader("audio.mp3", {name:"audio", requireWithRoot:this.root});
    • + *
    • allowMalformedURL : Boolean - Normally, the URL will be parsed and any variables in the query string (like "?name=test&state=il&gender=m") will be placed into a URLVariables object which is added to the URLRequest. This avoids a few bugs in Flash, but if you need to keep the entire URL intact (no parsing into URLVariables), set allowMalformedURL:true. For example, if your URL has duplicate variables in the query string like http://www.greensock.com/?c=S&c=SE&c=SW, it is technically considered a malformed URL and a URLVariables object can't properly contain all the duplicates, so in this case you'd want to set allowMalformedURL to true.
    • + *
    • autoDispose : Boolean - When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false. + * + *

      ----EVENT HANDLER SHORTCUTS----

    • + *
    • onOpen : Function - A handler function for LoaderEvent.OPEN events which are dispatched when the loader begins loading. Make sure your onOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onInit : Function - A handler function for Event.INIT events which will be dispatched when the bytesLoaded exceeds the initThreshold (100k by default) and the MP3 has streamed enough of its content to identify the ID3 meta data. Make sure your onInit function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onProgress : Function - A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.
    • + *
    • onComplete : Function - A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading successfully. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onCancel : Function - A handler function for LoaderEvent.CANCEL events which are dispatched when loading is aborted due to either a failure or because another loader was prioritized or cancel() was manually called. Make sure your onCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onError : Function - A handler function for LoaderEvent.ERROR events which are dispatched whenever the loader experiences an error (typically an IO_ERROR or SECURITY_ERROR). An error doesn't necessarily mean the loader failed, however - to listen for when a loader fails, use the onFail special property. Make sure your onError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onFail : Function - A handler function for LoaderEvent.FAIL events which are dispatched whenever the loader fails and its status changes to LoaderStatus.FAILED. Make sure your onFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onIOError : Function - A handler function for LoaderEvent.IO_ERROR events which will also call the onError handler, so you can use that as more of a catch-all whereas onIOError is specifically for LoaderEvent.IO_ERROR events. Make sure your onIOError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    + * + *

    Note: Using a MP3LoaderVars instance + * instead of a generic object to define your vars is a bit more verbose but provides + * code hinting and improved debugging because it enforces strict data typing. Use whichever one you prefer.

    + * + *

    content data type: flash.media.Sound

    + * + *

    NOTE: To avoid garbage collection issues in the Flash player, the Sound + * object that MP3Loader employs must get recreated internally anytime the MP3Loader is unloaded or its loading + * is cancelled, so it is best to access the content after the COMPLETE + * event has been dispatched. Otherwise, if you store a reference to the MP3Loader's content + * before or during a load and it gets cancelled or unloaded for some reason, the Sound object + * won't be the one into which the MP3 is eventually loaded.

    + * + * Example AS3 code:+ import com.greensock.~~; + import com.greensock.loading.~~; + import com.greensock.events.LoaderEvent; + + //create a MP3Loader that will begin playing immediately when it loads + var sound:MP3Loader = new MP3Loader("mp3/audio.mp3", {name:"audio", autoPlay:true, repeat:3, estimatedBytes:9500}); + + //begin loading + sound.load(); + + //add a CLICK listener to a button that causes the sound to toggle its paused state. + button.addEventListener(MouseEvent.CLICK, toggleSound); + function toggleSound(event:MouseEvent):void { + sound.soundPaused = !sound.soundPaused; + } + + //or you could put the MP3Loader into a LoaderMax queue. Create one first... + var queue:LoaderMax = new LoaderMax({name:"mainQueue", onProgress:progressHandler, onComplete:completeHandler, onError:errorHandler}); + + //append the MP3Loader and then several other loaders + queue.append( sound ); + queue.append( new XMLLoader("xml/doc.xml", {name:"xmlDoc", estimatedBytes:425}) ); + queue.append( new ImageLoader("img/photo1.jpg", {name:"photo1", estimatedBytes:3500}) ); + + //start loading + queue.load(); + + function progressHandler(event:LoaderEvent):void { + trace("progress: " + event.target.progress); + } + + function completeHandler(event:LoaderEvent):void { + trace(event.target + " is complete!"); + } + + function errorHandler(event:LoaderEvent):void { + trace("error occured with " + event.target + ": " + event.text); + } + + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @see com.greensock.loading.data.MP3LoaderVars + * + * @author Jack Doyle, jack@greensock.com + */ + public class MP3Loader extends LoaderItem { + /** @private **/ + private static var _classActivated:Boolean = _activateClass("MP3Loader", MP3Loader, "mp3"); + /** @private for ENTER_FRAME listeners **/ + private static var _shape:Shape = new Shape(); + + /** Event type constant for when the sound completes. **/ + public static const SOUND_COMPLETE:String="soundComplete"; + /** Event type constant for when the sound is paused. **/ + public static const SOUND_PAUSE:String="soundPause"; + /** Event type constant for when the sound begins or resumes playing. **/ + public static const SOUND_PLAY:String="soundPlay"; + /** Event type constant for when the playback progresses (only dispatched when the sound is playing). **/ + public static const PLAY_PROGRESS:String="playProgress"; + + /** @private **/ + protected var _sound:Sound; + /** @private **/ + protected var _context:SoundLoaderContext; + /** @private **/ + protected var _soundPaused:Boolean; + /** @private **/ + protected var _soundComplete:Boolean; + /** @private **/ + protected var _position:Number; + /** @private **/ + protected var _soundTransform:SoundTransform; + /** @private **/ + protected var _duration:Number; + /** @private Improves performance **/ + protected var _dispatchPlayProgress:Boolean; + /** @private -1 = not initted, no ID3 data, 0 = received ID3 data, 1 = fully initted **/ + protected var _initPhase:int; + /** @private **/ + protected var _repeatCount:uint; + + /** The minimum number of bytesLoaded to wait for before the LoaderEvent.INIT event is dispatched - the higher the number the more accurate the duration estimate will be when the INIT event is dispatched (the default value is 102400 which is 100k). The MP3's duration cannot be determined with 100% accuracy until it has completely loaded, but it is estimated with more and more accuracy as the file loads. **/ + public var initThreshold:uint; + /** The SoundChannel object that results from the most recent playSound() call (or when autoPlay is true in the constructor's vars parameter). Typically there isn't much reason to use this directly. Instead, use the MP3Loader's controls like playSound(), pauseSound(), gotoSoundTime(), playProgress, duration, soundTime, etc. **/ + public var channel:SoundChannel; + + /** + * Constructor. + * + * @param urlOrRequest The url (String) or URLRequest from which the loader should get its content + * @param vars An object containing optional configuration details. For example: new MP3Loader("mp3/audio.mp3", {name:"audio", autoPlay:true, onComplete:completeHandler, onProgress:progressHandler}). + * + *

    The following special properties can be passed into the constructor via the vars parameter + * which can be either a generic object or an MP3LoaderVars object:

    + *
      + *
    • name : String - A name that is used to identify the MP3Loader instance. This name can be fed to the find() method or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21".
    • + *
    • autoPlay : Boolean - By default the MP3 will begin playing immediately when enough of the file has buffered, but to prevent it from autoPlaying, set autoPlay to false.
    • + *
    • repeat : int - Number of times that the mp3 should repeat. To repeat indefinitely, use -1. Default is 0.
    • + *
    • volume : Number - A value between 0 and 1 indicating the volume at which the sound should play (default is 1).
    • + *
    • initThreshold : uint - The minimum number of bytesLoaded to wait for before the LoaderEvent.INIT event is dispatched - the higher the number the more accurate the duration estimate will be when the INIT event is dispatched (the default value is 102400 which is 100k). The MP3's duration cannot be determined with 100% accuracy until it has completely loaded, but it is estimated with more and more accuracy as the file loads.
    • + *
    • alternateURL : String - If you define an alternateURL, the loader will initially try to load from its original url and if it fails, it will automatically (and permanently) change the loader's url to the alternateURL and try again. Think of it as a fallback or backup url. It is perfectly acceptable to use the same alternateURL for multiple loaders (maybe a default image for various ImageLoaders for example).
    • + *
    • context : SoundLoaderContext - To control things like the buffer time and whether or not a policy file is checked, define a SoundLoaderContext object. The default context is null. See Adobe's SoundLoaderContext documentation for details.
    • + *
    • noCache : Boolean - If noCache is true, a "gsCacheBusterID" parameter will be appended to the url with a random set of numbers to prevent caching (don't worry, this info is ignored when you getLoader() or getContent() by url and when you're running locally)
    • + *
    • estimatedBytes : uint - Initially, the loader's bytesTotal is set to the estimatedBytes value (or LoaderMax.defaultEstimatedBytes if one isn't defined). Then, when the loader begins loading and it can accurately determine the bytesTotal, it will do so. Setting estimatedBytes is optional, but the more accurate the value, the more accurate your loaders' overall progress will be initially. If the loader will be inserted into a LoaderMax instance (for queue management), its auditSize feature can attempt to automatically determine the bytesTotal at runtime (there is a slight performance penalty for this, however - see LoaderMax's documentation for details).
    • + *
    • requireWithRoot : DisplayObject - LoaderMax supports subloading, where an object can be factored into a parent's loading progress. If you want LoaderMax to require this MP3Loader as part of its parent SWFLoader's progress, you must set the requireWithRoot property to your swf's root. For example, var loader:MP3Loader = new MP3Loader("audio.mp3", {name:"audio", requireWithRoot:this.root});
    • + *
    • allowMalformedURL : Boolean - Normally, the URL will be parsed and any variables in the query string (like "?name=test&state=il&gender=m") will be placed into a URLVariables object which is added to the URLRequest. This avoids a few bugs in Flash, but if you need to keep the entire URL intact (no parsing into URLVariables), set allowMalformedURL:true. For example, if your URL has duplicate variables in the query string like http://www.greensock.com/?c=S&c=SE&c=SW, it is technically considered a malformed URL and a URLVariables object can't properly contain all the duplicates, so in this case you'd want to set allowMalformedURL to true.
    • + *
    • autoDispose : Boolean - When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false. + * + *

      ----EVENT HANDLER SHORTCUTS----

    • + *
    • onOpen : Function - A handler function for LoaderEvent.OPEN events which are dispatched when the loader begins loading. Make sure your onOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onInit : Function - A handler function for Event.INIT events which will be dispatched when the bytesLoaded exceeds the initThreshold (100k by default) and the MP3 has streamed enough of its content to identify the ID3 meta data. Make sure your onInit function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onProgress : Function - A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.
    • + *
    • onComplete : Function - A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading successfully. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onCancel : Function - A handler function for LoaderEvent.CANCEL events which are dispatched when loading is aborted due to either a failure or because another loader was prioritized or cancel() was manually called. Make sure your onCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onError : Function - A handler function for LoaderEvent.ERROR events which are dispatched whenever the loader experiences an error (typically an IO_ERROR or SECURITY_ERROR). An error doesn't necessarily mean the loader failed, however - to listen for when a loader fails, use the onFail special property. Make sure your onError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onFail : Function - A handler function for LoaderEvent.FAIL events which are dispatched whenever the loader fails and its status changes to LoaderStatus.FAILED. Make sure your onFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onIOError : Function - A handler function for LoaderEvent.IO_ERROR events which will also call the onError handler, so you can use that as more of a catch-all whereas onIOError is specifically for LoaderEvent.IO_ERROR events. Make sure your onIOError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    + * @see com.greensock.loading.data.MP3LoaderVars + */ + public function MP3Loader(urlOrRequest:*, vars:Object=null) { + super(urlOrRequest, vars); + _type = "MP3Loader"; + _position = 0; + _duration = 0; + _soundPaused = true; + _soundTransform = new SoundTransform(("volume" in this.vars) ? this.vars.volume : 1); + this.initThreshold = ("initThreshold" in this.vars) ? uint(this.vars.initThreshold) : 102400; + _initSound(); + } + + /** @private **/ + protected function _initSound():void { + if (_sound != null) { + try { + _sound.close(); + } catch (error:Error) { + + } + _sound.removeEventListener(ProgressEvent.PROGRESS, _progressHandler); + _sound.removeEventListener(Event.COMPLETE, _completeHandler); + _sound.removeEventListener("ioError", _failHandler); + _sound.removeEventListener(Event.ID3, _id3Handler); + } + _initPhase = -1; + _sound = _content = new Sound(); + _sound.addEventListener(ProgressEvent.PROGRESS, _progressHandler, false, 0, true); + _sound.addEventListener(Event.COMPLETE, _completeHandler, false, 0, true); + _sound.addEventListener("ioError", _failHandler, false, 0, true); + _sound.addEventListener(Event.ID3, _id3Handler, false, 0, true); + } + + /** @private **/ + override protected function _load():void { + _context = (this.vars.context is SoundLoaderContext) ? this.vars.context : new SoundLoaderContext(3000); + _prepRequest(); + _soundComplete = false; + _initPhase = -1; + _position = 0; + _duration = 0; + try { + _sound.load(_request, _context); + if (this.vars.autoPlay != false) { + playSound(); + } + } catch (error:Error) { + _errorHandler(new LoaderEvent(LoaderEvent.ERROR, this, error.message)); + } + } + + /** @private scrubLevel: 0 = cancel, 1 = unload, 2 = dispose, 3 = flush **/ + override protected function _dump(scrubLevel:int=0, newStatus:int=0, suppressEvents:Boolean=false):void { + this.pauseSound(); + _initSound(); + _position = 0; + _duration = 0; + _repeatCount = 0; + _soundComplete = false; + super._dump(scrubLevel, newStatus); + _content = _sound; + } + + /** + * Plays the sound. + * + * @param event An optional Event which simply makes it easier to use the method as a handler for mouse clicks or other events. + * @return The SoundChannel object created by the play() + * + * @see #soundPaused + * @see #pauseSound() + * @see #gotoSoundTime() + * @see #soundTime + * @see #playProgress + **/ + public function playSound(event:Event=null):SoundChannel { + this.soundPaused = false; + return this.channel; + } + + /** + * Pauses playback of the sound. + * + * @param event An optional Event which simply makes it easier to use the method as a handler for mouse clicks or other events. + * + * @see #soundPaused + * @see #gotoSoundTime() + * @see #playSound() + * @see #soundTime + * @see #playProgress + **/ + public function pauseSound(event:Event=null):void { + this.soundPaused = true; + } + + /** + * Attempts to jump to a certain time in the sound. If the sound hasn't downloaded enough to get to + * the new time, it will get as close as possible. + * For example, to jump to exactly 3-seconds into the sound and play from there:

    + * + * loader.gotoSoundTime(3, true);

    + * + * @param time The time (in seconds, offset from the very beginning) at which to place the virtual playhead in the sound. + * @param forcePlay If true, the sound will resume playback immediately after seeking to the new position. + * @param resetRepeatCount If the MP3Loader has a non-zero repeat value (meaning it loops/repeats at least once), setting resetRepeatCount to true will cause it to act like this is the first time through (no repeats yet). For example, if the MP3Loader had a repeat value of 3 and it already repeated twice when gotoSoundTime() was called, it would act like it forgot that it repeated twice already. + * @see #pauseSound() + * @see #playSound() + * @see #soundTime + * @see #playProgress + **/ + public function gotoSoundTime(time:Number, forcePlay:Boolean=false, resetRepeatCount:Boolean=true):void { + if (time > _duration) { + time = _duration; + } + _position = time * 1000; + _soundComplete = false; + if (resetRepeatCount) { + _repeatCount = 0; + } + + if (!_soundPaused || forcePlay) { + _playSound(_position); + if (_soundPaused) { + _soundPaused = false; + dispatchEvent(new LoaderEvent(SOUND_PLAY, this)); + } + } + } + + /** @private **/ + protected function _playSound(position:Number):void { + if (this.channel != null) { + this.channel.removeEventListener(Event.SOUND_COMPLETE, _soundCompleteHandler); + this.channel.stop(); + } + _position = position; + this.channel = _sound.play(_position, 1, this.soundTransform); + if (this.channel != null) { //if the device doesn't have a sound card or sound capabilities, this.channel will be null! + this.channel.addEventListener(Event.SOUND_COMPLETE, _soundCompleteHandler); + _shape.addEventListener(Event.ENTER_FRAME, _enterFrameHandler, false, 0, true); + } + } + +//---- EVENT HANDLERS ------------------------------------------------------------------------------------ + + /** @private **/ + protected function _id3Handler(event:Event):void { + if (_sound.bytesLoaded > this.initThreshold) { + _initPhase = 1; + dispatchEvent(new LoaderEvent(LoaderEvent.INIT, this)); + } else { + _initPhase = 0; + } + } + + /** @private **/ + override protected function _progressHandler(event:Event):void { + if (_initPhase == 0 && _sound.bytesLoaded > this.initThreshold) { + _initPhase = 1; + dispatchEvent(new LoaderEvent(LoaderEvent.INIT, this)); + } + super._progressHandler(event); + } + + /** @private **/ + protected function _soundCompleteHandler(event:Event):void { + if (uint(this.vars.repeat) > _repeatCount || int(this.vars.repeat) == -1) { + _repeatCount++; + _playSound(0); + } else { + _repeatCount = 0; + _soundComplete = true; + this.soundPaused = true; + _position = _duration * 1000; + _enterFrameHandler(null); + dispatchEvent(new LoaderEvent(SOUND_COMPLETE, this)); + } + } + + /** @private **/ + protected function _enterFrameHandler(event:Event):void { + if (_dispatchPlayProgress) { + dispatchEvent(new LoaderEvent(PLAY_PROGRESS, this)); + } + } + + /** @inheritDoc **/ + override public function addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false):void { + if (type == PLAY_PROGRESS) { + _dispatchPlayProgress = true; + } + super.addEventListener(type, listener, useCapture, priority, useWeakReference); + } + + /** @private **/ + override protected function _completeHandler(event:Event=null):void { + _duration = _sound.length / 1000; + if (_initPhase != 1) { + _initPhase = 1; + dispatchEvent(new LoaderEvent(LoaderEvent.INIT, this)); + } + super._completeHandler(event); + } + + +//---- GETTERS / SETTERS ------------------------------------------------------------------------- + + /** The playback status of the sound: true if the sound's playback is paused, false if it isn't. **/ + public function get soundPaused():Boolean { + return _soundPaused; + } + public function set soundPaused(value:Boolean):void { + var changed:Boolean = Boolean(value != _soundPaused); + _soundPaused = value; + if (!changed) { + return; + } + if (_soundPaused) { + if (this.channel != null) { + _position = this.channel.position; + this.channel.removeEventListener(Event.SOUND_COMPLETE, _soundCompleteHandler); + _shape.removeEventListener(Event.ENTER_FRAME, _enterFrameHandler); + this.channel.stop(); + } + } else { + _playSound(_position); + if (this.channel == null) { //if the device doesn't have a sound card or sound capabilities, this.channel will be null! + return; //so that no event is dispatched + } + } + dispatchEvent(new LoaderEvent(((_soundPaused) ? SOUND_PAUSE : SOUND_PLAY), this)); + } + + /** A value between 0 and 1 describing the playback progress where 0 means the virtual playhead is at the very beginning of the sound, 0.5 means it is at the halfway point and 1 means it is at the end of the sound. **/ + public function get playProgress():Number { + return (_soundComplete) ? 1 : (this.soundTime / this.duration); + } + public function set playProgress(value:Number):void { + if (this.duration != 0) { + gotoSoundTime((value * _duration), !_soundPaused); + } + } + + /** The volume of the sound (a value between 0 and 1). **/ + public function get volume():Number { + return this.soundTransform.volume; + } + public function set volume(value:Number):void { + _soundTransform = this.soundTransform; + _soundTransform.volume = value; + if (this.channel != null) { + this.channel.soundTransform = _soundTransform; + } + } + + /** The time (in seconds) at which the virtual playhead is positioned on the sound. For example, if the virtual playhead is currently at the 3-second position (3 seconds from the beginning), this value would be 3. **/ + public function get soundTime():Number { + return (!_soundPaused && this.channel != null) ? this.channel.position / 1000 : _position / 1000; + } + public function set soundTime(value:Number):void { + gotoSoundTime(value, !_soundPaused); + } + + /** The duration (in seconds) of the sound. This value cannot be determined with 100% accuracy until the file has completely loaded, but it is estimated with more and more accuracy as the file loads. **/ + public function get duration():Number { + if (_sound.bytesLoaded < _sound.bytesTotal) { + _duration = (_sound.length / 1000) / (_sound.bytesLoaded / _sound.bytesTotal); + } + return _duration; + } + + /** The SoundTransform of the channel **/ + public function get soundTransform():SoundTransform { + return (this.channel != null) ? this.channel.soundTransform : _soundTransform; + } + public function set soundTransform(value:SoundTransform):void { + _soundTransform = value; + if (this.channel != null) { + this.channel.soundTransform = value; + } + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/loading/SWFLoader.as b/FairyGUI-as3/src/com/greensock/loading/SWFLoader.as new file mode 100644 index 0000000..09b8bee --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/loading/SWFLoader.as @@ -0,0 +1,811 @@ +/** + * VERSION: 1.87 + * DATE: 2011-07-30 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/loadermax/ + **/ +package com.greensock.loading { + import com.greensock.events.LoaderEvent; + import com.greensock.loading.core.DisplayObjectLoader; + import com.greensock.loading.core.LoaderCore; + + import flash.display.AVM1Movie; + import flash.display.DisplayObject; + import flash.display.DisplayObjectContainer; + import flash.display.MovieClip; + import flash.events.Event; + import flash.media.SoundTransform; + import flash.utils.getQualifiedClassName; + import flash.utils.getTimer; + + /** Dispatched when any loader that the SWFLoader discovered in the subloaded swf dispatches an OPEN event. **/ + [Event(name="childOpen", type="com.greensock.events.LoaderEvent")] + /** Dispatched when any loader that the SWFLoader discovered in the subloaded swf dispatches a PROGRESS event. **/ + [Event(name="childProgress", type="com.greensock.events.LoaderEvent")] + /** Dispatched when any loader that the SWFLoader discovered in the subloaded swf dispatches a COMPLETE event. **/ + [Event(name="childComplete", type="com.greensock.events.LoaderEvent")] + /** Dispatched when any loader that the SWFLoader discovered in the subloaded swf dispatches a FAIL event. **/ + [Event(name="childFail", type="com.greensock.events.LoaderEvent")] + /** Dispatched when any loader that the SWFLoader discovered in the subloaded swf dispatches a CANCEL event. **/ + [Event(name="childCancel", type="com.greensock.events.LoaderEvent")] + /** Dispatched when the loader is denied script access to the swf which can happen if it is loaded from another domain and there's no crossdomain.xml file in place. **/ + [Event(name="scriptAccessDenied", type="com.greensock.events.LoaderEvent")] + /** Dispatched when the loader's httpStatus value changes. **/ + [Event(name="httpStatus", type="com.greensock.events.LoaderEvent")] + /** Dispatched when the loader experiences a SECURITY_ERROR while loading or auditing its size. **/ + [Event(name="securityError", type="com.greensock.events.LoaderEvent")] +/** + * Loads a swf file and automatically searches for active loaders in that swf that have + * the requireWithRoot vars property set to that swf's root. If it finds any, + * it will factor those loaders' progress into its own progress and not dispatch its + * COMPLETE event until the nested loaders have finished. + * + *

    The SWFLoader's content refers to a ContentDisplay (a Sprite) that + * is created immediately so that you can position/scale/rotate it or add ROLL_OVER/ROLL_OUT/CLICK listeners + * before (or while) the swf loads. Use the SWFLoader's content property to get the ContentDisplay + * Sprite, or use the rawContent property to get the actual root of the loaded swf file itself. + * If a container is defined in the vars object, the ContentDisplay will + * immediately be added to that container).

    + * + *

    If you define a width and height, it will draw a rectangle + * in the ContentDisplay so that interactive events fire appropriately (rollovers, etc.) and width/height/bounds + * get reported accurately. This rectangle is invisible by default, but you can control its color and alpha + * with the bgColor and bgAlpha properties. When the swf loads, it will be + * added to the ContentDisplay at index 0 with addChildAt() and scaled to fit the width/height according to + * the scaleMode. These are all optional features - you do not need to define a + * width or height in which case the swf will load at its native size. + * See the list below for all the special properties that can be passed through the vars + * parameter but don't let the list overwhelm you - these are all optional and they are intended to make + * your job as a developer much easier.

    + * + *

    By default, the SWFLoader will attempt to load the swf in a way that allows full script + * access (same SecurityDomain and child ApplicationDomain). However, if a security error is thrown because + * the swf is being loaded from another domain and the appropriate crossdomain.xml file isn't in place + * to grant access, the SWFLoader will automatically adjust the default LoaderContext so that it falls + * back to the more restricted mode which will have the following effect:

    + *
      + *
    • A LoaderEvent.SCRIPT_ACCESS_DENIED event will be dispatched and the scriptAccessDenied property of the SWFLoader will be set to true. You can check this value before performing any restricted operations on the content like BitmapData.draw().
    • + *
    • Other LoaderMax-related loaders inside the swf will not be recognized or integrated into the SWFLoader's overall progress.
    • + *
    • A Loader instance will be added to the ContentDisplay Sprite instead of the swf's root.
    • + *
    • The getClass() and getSWFChild() methods will always return null.
    • + *
    • BitmapData operations like draw() will not be able to be performed on the swf.
    • + *
    + * + *

    If the loaded swf is an AVM1Movie (built in AS1 or AS2), scriptAccessDenied will be true + * and a Loader instance will be added to the content Sprite instead of the swf's root.

    + * + *

    To maximize the likelihood of your swf loading without any security problems, consider taking the following steps:

    + *
      + *
    • Use a crossdomain.xml file - See Adobe's docs for details, but here is an example that grants full access (put this in a crossdomain.xml file that is at the root of the remote domain): + * <?xml version="1.0" encoding="utf-8"?> + * <cross-domain-policy> + * <allow-access-from domain="~~" /> + * </cross-domain-policy>
    • + *
    • In the embed code of any HTML wrapper, set AllowScriptAccess to "always"
    • + *
    • If possible, in the remote swf make sure you explicitly allow script access using something like flash.system.Security.allowDomain("~~");
    • + *
    + * + *

    A note about garbage collection: A lot of effort has gone into making SWFLoader solve common garbage collection + * problems related to loading and unloading swfs, but since it is impossible for SWFLoader to know all the code that will run in + * the child swf, it cannot automatically remove event listeners, stop NetStreams, sounds, etc., all of which could interfere + * with garbage collection. Therefore it is considered a best practice to [whenever possible] build each subloaded swf so that + * it has some sort of dispose() method that runs cleanup code (removes event listeners, stops sounds, closes NetStreams, etc.). + * When the swf is loaded, you can recursively inspect the chain of parents and if a ContentDisplay object is found (it will + * have a "loader" property), you can add an "unload" event listener so that your dispose() method gets called accordingly. + * For example, in the child swf you could use code like this:

    + * In the child swf:+var curParent:DisplayObjectContainer = this.parent; +while (curParent) { + if (curParent.hasOwnProperty("loader") && curParent.hasOwnProperty("rawContent")) { //ContentDisplay objects have "loader" and "rawContent" properties. The "loader" points to the SWFLoader. Technically it would be cleaner to say if (curParent is ContentDisplay) but that would force ContentDisplay and some core LoaderMax classes to get compiled into the child swf unnecessarily, so doing it this way keeps file size down. + Object(curParent).loader.addEventListener("unload", dispose, false, 0, true); + } + curParent = curParent.parent; +} +function dispose(event:Event):void { + //do cleanup stuff here like removing event listeners, stopping sounds, closing NetStreams, etc... +} + + * + *

    OPTIONAL VARS PROPERTIES

    + *

    The following special properties can be passed into the SWFLoader constructor via its vars + * parameter which can be either a generic object or an SWFLoaderVars object:

    + *
      + *
    • name : String - A name that is used to identify the SWFLoader instance. This name can be fed to the LoaderMax.getLoader() or LoaderMax.getContent() methods. This name is also applied to the Sprite that is created to hold the swf (The SWFLoader's content refers to this Sprite). Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21".
    • + *
    • container : DisplayObjectContainer - A DisplayObjectContainer into which the content Sprite should be added immediately.
    • + *
    • width : Number - Sets the ContentDisplay's width property (applied before rotation, scaleX, and scaleY).
    • + *
    • height : Number - Sets the ContentDisplay's height property (applied before rotation, scaleX, and scaleY).
    • + *
    • centerRegistration : Boolean - if true, the registration point will be placed in the center of the ContentDisplay Sprite which can be useful if, for example, you want to animate its scale and have it grow/shrink from its center.
    • + *
    • scaleMode : String - When a width and height are defined, the scaleMode controls how the loaded swf will be scaled to fit the area. The following values are recognized (you may use the com.greensock.layout.ScaleMode constants if you prefer): + *
        + *
      • "stretch" (the default) - The swf will fill the width/height exactly.
      • + *
      • "proportionalInside" - The swf will be scaled proportionally to fit inside the area defined by the width/height
      • + *
      • "proportionalOutside" - The swf will be scaled proportionally to completely fill the area, allowing portions of it to exceed the bounds defined by the width/height.
      • + *
      • "widthOnly" - Only the width of the swf will be adjusted to fit.
      • + *
      • "heightOnly" - Only the height of the swf will be adjusted to fit.
      • + *
      • "none" - No scaling of the swf will occur.
      • + *
    • + *
    • hAlign : String - When a width and height are defined, the hAlign determines how the swf is horizontally aligned within that area. The following values are recognized (you may use the com.greensock.layout.AlignMode constants if you prefer): + *
        + *
      • "center" (the default) - The swf will be centered horizontally in the area
      • + *
      • "left" - The swf will be aligned with the left side of the area
      • + *
      • "right" - The swf will be aligned with the right side of the area
      • + *
    • + *
    • vAlign : String - When a width and height are defined, the vAlign determines how the swf is vertically aligned within that area. The following values are recognized (you may use the com.greensock.layout.AlignMode constants if you prefer): + *
        + *
      • "center" (the default) - The swf will be centered vertically in the area
      • + *
      • "top" - The swf will be aligned with the top of the area
      • + *
      • "bottom" - The swf will be aligned with the bottom of the area
      • + *
    • + *
    • crop : Boolean - When a width and height are defined, setting crop to true will cause the swf to be cropped within that area (by applying a scrollRect for maximum performance) based on its native size (not the bounding box of the swf's current contents). This is typically useful when the scaleMode is "proportionalOutside" or "none" or when the swf contains objects that are positioned off-stage. Any parts of the swf that exceed the dimensions defined by width and height are visually chopped off. Use the hAlign and vAlign special properties to control the vertical and horizontal alignment within the cropped area.
    • + *
    • x : Number - Sets the ContentDisplay's x property (for positioning on the stage).
    • + *
    • y : Number - Sets the ContentDisplay's y property (for positioning on the stage).
    • + *
    • scaleX : Number - Sets the ContentDisplay's scaleX property.
    • + *
    • scaleY : Number - Sets the ContentDisplay's scaleY property.
    • + *
    • rotation : Number - Sets the ContentDisplay's rotation property.
    • + *
    • alpha : Number - Sets the ContentDisplay's alpha property.
    • + *
    • visible : Boolean - Sets the ContentDisplay's visible property.
    • + *
    • blendMode : String - Sets the ContentDisplay's blendMode property.
    • + *
    • autoPlay : Boolean - If autoPlay is true (the default), the swf will begin playing immediately when the INIT event fires. To prevent this behavior, set autoPlay to false which will also mute the swf until the SWFLoader completes. This only calls stop() on the main timeline but it does not prevent scripted animations.
    • + *
    • bgColor : uint - When a width and height are defined, a rectangle will be drawn inside the ContentDisplay Sprite immediately in order to ease the development process. It is transparent by default, but you may define a bgAlpha if you prefer.
    • + *
    • bgAlpha : Number - Controls the alpha of the rectangle that is drawn when a width and height are defined.
    • + *
    • context : LoaderContext - To control things like the ApplicationDomain, SecurityDomain, and whether or not a policy file is checked, define a LoaderContext object. The default context is null when running locally and new LoaderContext(true, new ApplicationDomain(ApplicationDomain.currentDomain), SecurityDomain.currentDomain) when running remotely in order to avoid common security sandbox errors (see Adobe's LoaderContext documentation for details and precautions). Please make sure that if you load swfs from another domain that you have a crossdomain.xml file installed on that remote server that grants your swf access rights (see Adobe's docs for crossdomain.xml details). Again, if you want to impose security restrictions on the loaded swf, please define your own LoaderContext.
    • + *
    • suppressInitReparentEvents : Boolean - If true, the SWFLoader will suppress the REMOVED_FROM_STAGE and ADDED_TO_STAGE events that are normally dispatched when the subloaded swf is reparented into the ContentDisplay (this always happens in Flash when any DisplayObject that's in the display list gets reparented - SWFLoader just circumvents it by default initially to avoid common problems that could arise if the child swf is coded a certain way). For example, if your subloaded swf has this code: addEventListener(Event.REMOVED_FROM_STAGE, disposeEverything) and you set suppressInitReparentEvents to false, disposeEverything() would get called as soon as the swf inits (assuming the ContentDisplay is in the display list).
    • + *
    • integrateProgress : Boolean - By default, a SWFLoader instance will automatically look for LoaderMax loaders in the swf when it initializes. Every loader found with a requireWithRoot parameter set to that swf's root will be integrated into the SWFLoader's overall progress. The SWFLoader's COMPLETE event won't fire until all such loaders are also complete. If you prefer NOT to integrate the subloading loaders into the SWFLoader's overall progress, set integrateProgress to false.
    • + *
    • suppressUncaughtErrors : Boolean - To automatically suppress uncaught errors in the subloaded swf (errors that are thrown outside of a try...catch statement), set suppressUncaughtErrors to true, but please note that this will ONLY work if the parent swf is published to Flash Player 10.1 or later. Suppressing the UncaughtErrorEvent simply means calling its preventDefault() and stopImmediatePropagation() methods as well as preventing it from bubbling up to its parent LoaderMax/SWFLoader anscestors. If you'd rather listen for these events so that you can handle them yourself, listen for the LoaderEvent.UNCAUGHT_ERROR event. The original UncaughtErrorEvent instance will be stored in the LoaderEvent's data property.
    • + *
    • alternateURL : String - If you define an alternateURL, the loader will initially try to load from its original url and if it fails, it will automatically (and permanently) change the loader's url to the alternateURL and try again. Think of it as a fallback or backup url. It is perfectly acceptable to use the same alternateURL for multiple loaders (maybe a default image for various ImageLoaders for example).
    • + *
    • noCache : Boolean - If noCache is true, a "gsCacheBusterID" parameter will be appended to the url with a random set of numbers to prevent caching (don't worry, this info is ignored when you getLoader() or getContent() by url and when you're running locally)
    • + *
    • estimatedBytes : uint - Initially, the loader's bytesTotal is set to the estimatedBytes value (or LoaderMax.defaultEstimatedBytes if one isn't defined). Then, when the swf initializes and has been analyzed enough to determine the size of any nested loaders that were found inside the swf with their requireWithRoot set to that swf's root, it will adjust the bytesTotal accordingly. Setting estimatedBytes is optional, but it provides a way to avoid situations where the progress and bytesTotal values jump around as SWFLoader recognizes nested loaders in the swf and audits their size. The estimatedBytes value should include all nested loaders as well, so if your swf file itself is 2000 bytes and it has 3 nested ImageLoaders, each loading a 2000-byte image, your SWFLoader's estimatedBytes should be 8000. The more accurate the value, the more accurate the loaders' overall progress will be.
    • + *
    • requireWithRoot : DisplayObject - LoaderMax supports subloading, where an object can be factored into a parent's loading progress. If you want LoaderMax to require this SWFLoader as part of its parent SWFLoader's progress, you must set the requireWithRoot property to your swf's root. For example, var loader:SWFLoader = new SWFLoader("subload.swf", {name:"subloadSWF", requireWithRoot:this.root});
    • + *
    • allowMalformedURL : Boolean - Normally, the URL will be parsed and any variables in the query string (like "?name=test&state=il&gender=m") will be placed into a URLVariables object which is added to the URLRequest. This avoids a few bugs in Flash, but if you need to keep the entire URL intact (no parsing into URLVariables), set allowMalformedURL:true. For example, if your URL has duplicate variables in the query string like http://www.greensock.com/?c=S&c=SE&c=SW, it is technically considered a malformed URL and a URLVariables object can't properly contain all the duplicates, so in this case you'd want to set allowMalformedURL to true.
    • + *
    • autoDispose : Boolean - When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false. + * + *

      ----EVENT HANDLER SHORTCUTS----

    • + *
    • onOpen : Function - A handler function for LoaderEvent.OPEN events which are dispatched when the loader begins loading. Make sure your onOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onInit : Function - A handler function for LoaderEvent.INIT events which are called when the swf has streamed enough of its content to render the first frame and determine if there are any required LoaderMax-related loaders recognized. It also adds the swf to the ContentDisplay Sprite at this point. Make sure your onInit function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onProgress : Function - A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.
    • + *
    • onComplete : Function - A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading successfully. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onCancel : Function - A handler function for LoaderEvent.CANCEL events which are dispatched when loading is aborted due to either a failure or because another loader was prioritized or cancel() was manually called. Make sure your onCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onError : Function - A handler function for LoaderEvent.ERROR events which are dispatched whenever the loader experiences an error (typically an IO_ERROR or SECURITY_ERROR). An error doesn't necessarily mean the loader failed, however - to listen for when a loader fails, use the onFail special property. Make sure your onError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onFail : Function - A handler function for LoaderEvent.FAIL events which are dispatched whenever the loader fails and its status changes to LoaderStatus.FAILED. Make sure your onFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onIOError : Function - A handler function for LoaderEvent.IO_ERROR events which will also call the onError handler, so you can use that as more of a catch-all whereas onIOError is specifically for LoaderEvent.IO_ERROR events. Make sure your onIOError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onHTTPStatus : Function - A handler function for LoaderEvent.HTTP_STATUS events. Make sure your onHTTPStatus function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can determine the httpStatus code using the LoaderEvent's target.httpStatus (LoaderItems keep track of their httpStatus when possible, although certain environments prevent Flash from getting httpStatus information).
    • + *
    • onSecurityError : Function - A handler function for LoaderEvent.SECURITY_ERROR events which onError handles as well, so you can use that as more of a catch-all whereas onSecurityError is specifically for SECURITY_ERROR events. Make sure your onSecurityError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onScriptAccessDenied : Function - A handler function for LoaderMax.SCRIPT_ACCESS_DENIED events which occur when the swf is loaded from another domain and no crossdomain.xml is in place to grant full script access for things like BitmapData manipulation or integration of LoaderMax data inside the swf, etc. You can also check the scriptAccessDenied property after the swf has loaded. Make sure your function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onUncaughtError : Function - A handler function for LoaderEvent.UNCAUGHT_ERROR events which are dispatched when the subloaded swf encounters an UncaughtErrorEvent meaning an Error was thrown outside of a try...catch statement. This can be useful when subloading swfs from a 3rd party that may contain errors. However, UNCAUGHT_ERROR events will only be dispatched if the parent swf is published for Flash Player 10.1 or later! See SWFLoader's suppressUncaughtErrors special property if you'd like to have it automatically suppress these errors. The original UncaughtErrorEvent is stored in the LoaderEvent's data property. So, for example, if you'd like to call preventDefault() on that UncaughtErrorEvent, you'd do myLoaderEvent.data.preventDefault().
    • + *
    • onChildOpen : Function - A handler function for LoaderEvent.CHILD_OPEN events which are dispatched each time any nested LoaderMax-related loaders (active ones that the SWFLoader found inside the subloading swf that had their requireWithRoot set to its root) begins loading. Make sure your onChildOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildProgress : Function - A handler function for LoaderEvent.CHILD_PROGRESS events which are dispatched each time any nested LoaderMax-related loaders (active ones that the SWFLoader found inside the subloading swf that had their requireWithRoot set to its root) dispatches a PROGRESS event. To listen for changes in the SWFLoader's overall progress, use the onProgress special property instead. You can use the LoaderEvent's target.progress to get the child loader's progress value or use its target.bytesLoaded and target.bytesTotal. The LoaderEvent's currentTarget refers to the SWFLoader, so you can check its overall progress with the LoaderEvent's currentTarget.progress. Make sure your onChildProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildComplete : Function - A handler function for LoaderEvent.CHILD_COMPLETE events which are dispatched each time any nested LoaderMax-related loaders (active ones that the SWFLoader found inside the subloading swf that had their requireWithRoot set to its root) finishes loading successfully. Make sure your onChildComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildCancel : Function - A handler function for LoaderEvent.CHILD_CANCEL events which are dispatched each time loading is aborted on any nested LoaderMax-related loaders (active ones that the SWFLoader found inside the subloading swf that had their requireWithRoot set to its root) due to either an error or because another loader was prioritized in the queue or because cancel() was manually called on the child loader. Make sure your onChildCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildFail : Function - A handler function for LoaderEvent.CHILD_FAIL events which are dispatched each time any nested LoaderMax-related loaders (active ones that the SWFLoader found inside the subloading swf that had their requireWithRoot set to its root) fails (and its status chances to LoaderStatus.FAILED). Make sure your onChildFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    + * + *

    Note: Using a SWFLoaderVars instance + * instead of a generic object to define your vars is a bit more verbose but provides + * code hinting and improved debugging because it enforces strict data typing. Use whichever one you prefer.

    + * + *

    content data type: com.greensock.loading.display.ContentDisplay (a Sprite). + * When the swf has finished loading, the rawContent will be added to the ContentDisplay + * Sprite at index 0 using addChildAt(). rawContent refers to the loaded swf's root + * unless script access is denied in which case it will be a flash.display.Loader (to avoid security errors).

    + * + * Example AS3 code:+ import com.greensock.~~; + import com.greensock.loading.~~; + + //create a SWFLoader that will add the content to the display list at position x:50, y:100 when it has loaded: + var loader:SWFLoader = new SWFLoader("swf/main.swf", {name:"mainSWF", container:this, x:50, y:100, onInit:initHandler, estimatedBytes:9500}); + + //begin loading + loader.load(); + + function initHandler(event:LoaderEvent):void { + //fade the swf in as soon as it inits + TweenLite.from(event.target.content, 1, {alpha:0}); + + //get a MovieClip named "phoneAnimation_mc" that's on the root of the subloaded swf + var mc:DisplayObject = loader.getSWFChild("phoneAnimation_mc"); + + //find the "com.greensock.TweenLite" class that's inside the subloaded swf + var tweenClass:Class = loader.getClass("com.greensock.TweenLite"); + } + + //Or you could put the SWFLoader into a LoaderMax. Create one first... + var queue:LoaderMax = new LoaderMax({name:"mainQueue", onProgress:progressHandler, onComplete:completeHandler, onError:errorHandler}); + + //append the SWFLoader and several other loaders + queue.append( loader ); + queue.append( new XMLLoader("xml/doc.xml", {name:"xmlDoc", estimatedBytes:425}) ); + queue.append( new ImageLoader("img/photo1.jpg", {name:"photo1", estimatedBytes:3500}) ); + + //start loading + queue.load(); + + function progressHandler(event:LoaderEvent):void { + trace("progress: " + event.target.progress); + } + + function completeHandler(event:LoaderEvent):void { + trace(event.target + " is complete!"); + } + + function errorHandler(event:LoaderEvent):void { + trace("error occured with " + event.target + ": " + event.text); + } + + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @see com.greensock.loading.data.SWFLoaderVars + * + * @author Jack Doyle, jack@greensock.com + */ + public class SWFLoader extends DisplayObjectLoader { + /** @private **/ + private static var _classActivated:Boolean = _activateClass("SWFLoader", SWFLoader, "swf"); + /** @private last pass-through uncaught error event. primarily for uncaughtError events - when a subloaded swf also has another swf that's subloaded by SWFLoader and that grandchild dispatches an uncaught error, we don't want to allow duplicates to travel up because both SWFLoaders (this and the child's) would be listening for uncaught errors through the _loader and sub-SWFLoader's _loader. **/ + protected var _lastPTUncaughtError:Event; + /** @private **/ + protected var _queue:LoaderMax; + /** @private When the INIT event is dispatched, we'll check to see if there's a runtime shared library like for TLF and we must do some backflips to accommodate it - _hasRSL will be toggled to true if we find one. **/ + protected var _hasRSL:Boolean; + /** @private **/ + protected var _rslAddedCount:uint; + /** @private In certain browsers, there's a bug in the Flash Player that incorrectly reports the Loader's bytesLoaded as never reaching bytesTotal even AFTER the Loader completes (only when gzip is enabled on the server). This helps us get around that bug. **/ + protected var _loaderCompleted:Boolean; + /** @private in cases where we must allow a canceled loader to continue loading until it inits (to avoid garbage collection issues), if the url is changed during the time we're in stealthMode, we must remember to load() as soon as the old/bad swf inits! This is the flag we use for that. **/ + protected var _loadOnExitStealth:Boolean; + /** @private if the Loader fails we must record that so that when _dump() is called, we know that the Loader isn't active anymore and we can safely dump it (as opposed to allowing it to continue loading until it inits which we normally must do in order to avoid garbage collection issues in Flash) **/ + protected var _loaderFailed:Boolean; + + /** + * Constructor + * + * @param urlOrRequest The url (String) or URLRequest from which the loader should get its content + * @param vars An object containing optional configuration details. For example: new SWFLoader("swf/main.swf", {name:"main", container:this, x:100, y:50, alpha:0, autoPlay:false, onComplete:completeHandler, onProgress:progressHandler}). + * + *

    The following special properties can be passed into the constructor via the vars parameter + * which can be either a generic object or an SWFLoaderVars object:

    + *
      + *
    • name : String - A name that is used to identify the SWFLoader instance. This name can be fed to the LoaderMax.getLoader() or LoaderMax.getContent() methods. This name is also applied to the Sprite that is created to hold the swf (The SWFLoader's content refers to this Sprite). Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21".
    • + *
    • container : DisplayObjectContainer - A DisplayObjectContainer into which the content Sprite should be added immediately.
    • + *
    • width : Number - Sets the ContentDisplay's width property (applied before rotation, scaleX, and scaleY).
    • + *
    • height : Number - Sets the ContentDisplay's height property (applied before rotation, scaleX, and scaleY).
    • + *
    • centerRegistration : Boolean - if true, the registration point will be placed in the center of the ContentDisplay Sprite which can be useful if, for example, you want to animate its scale and have it grow/shrink from its center.
    • + *
    • scaleMode : String - When a width and height are defined, the scaleMode controls how the loaded swf will be scaled to fit the area. The following values are recognized (you may use the com.greensock.layout.ScaleMode constants if you prefer): + *
        + *
      • "stretch" (the default) - The swf will fill the width/height exactly.
      • + *
      • "proportionalInside" - The swf will be scaled proportionally to fit inside the area defined by the width/height
      • + *
      • "proportionalOutside" - The swf will be scaled proportionally to completely fill the area, allowing portions of it to exceed the bounds defined by the width/height.
      • + *
      • "widthOnly" - Only the width of the swf will be adjusted to fit.
      • + *
      • "heightOnly" - Only the height of the swf will be adjusted to fit.
      • + *
      • "none" - No scaling of the swf will occur.
      • + *
    • + *
    • hAlign : String - When a width and height are defined, the hAlign determines how the swf is horizontally aligned within that area. The following values are recognized (you may use the com.greensock.layout.AlignMode constants if you prefer): + *
        + *
      • "center" (the default) - The swf will be centered horizontally in the area
      • + *
      • "left" - The swf will be aligned with the left side of the area
      • + *
      • "right" - The swf will be aligned with the right side of the area
      • + *
    • + *
    • vAlign : String - When a width and height are defined, the vAlign determines how the swf is vertically aligned within that area. The following values are recognized (you may use the com.greensock.layout.AlignMode constants if you prefer): + *
        + *
      • "center" (the default) - The swf will be centered vertically in the area
      • + *
      • "top" - The swf will be aligned with the top of the area
      • + *
      • "bottom" - The swf will be aligned with the bottom of the area
      • + *
    • + *
    • crop : Boolean - When a width and height are defined, setting crop to true will cause the swf to be cropped within that area (by applying a scrollRect for maximum performance) based on its native size (not the bounding box of the swf's current contents). This is typically useful when the scaleMode is "proportionalOutside" or "none" or when the swf contains objects that are positioned off-stage. Any parts of the swf that exceed the dimensions defined by width and height are visually chopped off. Use the hAlign and vAlign special properties to control the vertical and horizontal alignment within the cropped area.
    • + *
    • x : Number - Sets the ContentDisplay's x property (for positioning on the stage).
    • + *
    • y : Number - Sets the ContentDisplay's y property (for positioning on the stage).
    • + *
    • scaleX : Number - Sets the ContentDisplay's scaleX property.
    • + *
    • scaleY : Number - Sets the ContentDisplay's scaleY property.
    • + *
    • rotation : Number - Sets the ContentDisplay's rotation property.
    • + *
    • alpha : Number - Sets the ContentDisplay's alpha property.
    • + *
    • visible : Boolean - Sets the ContentDisplay's visible property.
    • + *
    • blendMode : String - Sets the ContentDisplay's blendMode property.
    • + *
    • autoPlay : Boolean - If autoPlay is true (the default), the swf will begin playing immediately when the INIT event fires. To prevent this behavior, set autoPlay to false which will also mute the swf until the SWFLoader completes. This only calls stop() on the main timeline but it does not prevent scripted animations.
    • + *
    • bgColor : uint - When a width and height are defined, a rectangle will be drawn inside the ContentDisplay Sprite immediately in order to ease the development process. It is transparent by default, but you may define a bgAlpha if you prefer.
    • + *
    • bgAlpha : Number - Controls the alpha of the rectangle that is drawn when a width and height are defined.
    • + *
    • context : LoaderContext - To control things like the ApplicationDomain, SecurityDomain, and whether or not a policy file is checked, define a LoaderContext object. The default context is null when running locally and new LoaderContext(true, new ApplicationDomain(ApplicationDomain.currentDomain), SecurityDomain.currentDomain) when running remotely in order to avoid common security sandbox errors (see Adobe's LoaderContext documentation for details and precautions). Please make sure that if you load swfs from another domain that you have a crossdomain.xml file installed on that remote server that grants your swf access rights (see Adobe's docs for crossdomain.xml details). Again, if you want to impose security restrictions on the loaded swf, please define your own LoaderContext.
    • + *
    • suppressInitReparentEvents : Boolean - If true, the SWFLoader will suppress the REMOVED_FROM_STAGE and ADDED_TO_STAGE events that are normally dispatched when the subloaded swf is reparented into the ContentDisplay (this always happens in Flash when any DisplayObject that's in the display list gets reparented - SWFLoader just circumvents it by default initially to avoid common problems that could arise if the child swf is coded a certain way). For example, if your subloaded swf has this code: addEventListener(Event.REMOVED_FROM_STAGE, disposeEverything) and you set suppressInitReparentEvents to false, disposeEverything() would get called as soon as the swf inits (assuming the ContentDisplay is in the display list).
    • + *
    • integrateProgress : Boolean - By default, a SWFLoader instance will automatically look for LoaderMax loaders in the swf when it initializes. Every loader found with a requireWithRoot parameter set to that swf's root will be integrated into the SWFLoader's overall progress. The SWFLoader's COMPLETE event won't fire until all such loaders are also complete. If you prefer NOT to integrate the subloading loaders into the SWFLoader's overall progress, set integrateProgress to false.
    • + *
    • suppressUncaughtErrors : Boolean - To automatically suppress uncaught errors in the subloaded swf (errors that are thrown outside of a try...catch statement), set suppressUncaughtErrors to true, but please note that this will ONLY work if the parent swf is published to Flash Player 10.1 or later. Suppressing the UncaughtErrorEvent simply means calling its preventDefault() and stopImmediatePropagation() methods as well as preventing it from bubbling up to its parent LoaderMax/SWFLoader anscestors. If you'd rather listen for these events so that you can handle them yourself, listen for the LoaderEvent.UNCAUGHT_ERROR event. The original UncaughtErrorEvent instance will be stored in the LoaderEvent's data property.
    • + *
    • alternateURL : String - If you define an alternateURL, the loader will initially try to load from its original url and if it fails, it will automatically (and permanently) change the loader's url to the alternateURL and try again. Think of it as a fallback or backup url. It is perfectly acceptable to use the same alternateURL for multiple loaders (maybe a default image for various ImageLoaders for example).
    • + *
    • noCache : Boolean - If noCache is true, a "gsCacheBusterID" parameter will be appended to the url with a random set of numbers to prevent caching (don't worry, this info is ignored when you getLoader() or getContent() by url and when you're running locally)
    • + *
    • estimatedBytes : uint - Initially, the loader's bytesTotal is set to the estimatedBytes value (or LoaderMax.defaultEstimatedBytes if one isn't defined). Then, when the swf initializes and has been analyzed enough to determine the size of any nested loaders that were found inside the swf with their requireWithRoot set to that swf's root, it will adjust the bytesTotal accordingly. Setting estimatedBytes is optional, but it provides a way to avoid situations where the progress and bytesTotal values jump around as SWFLoader recognizes nested loaders in the swf and audits their size. The estimatedBytes value should include all nested loaders as well, so if your swf file itself is 2000 bytes and it has 3 nested ImageLoaders, each loading a 2000-byte image, your SWFLoader's estimatedBytes should be 8000. The more accurate the value, the more accurate the loaders' overall progress will be.
    • + *
    • requireWithRoot : DisplayObject - LoaderMax supports subloading, where an object can be factored into a parent's loading progress. If you want LoaderMax to require this SWFLoader as part of its parent SWFLoader's progress, you must set the requireWithRoot property to your swf's root. For example, var loader:SWFLoader = new SWFLoader("subload.swf", {name:"subloadSWF", requireWithRoot:this.root});
    • + *
    • allowMalformedURL : Boolean - Normally, the URL will be parsed and any variables in the query string (like "?name=test&state=il&gender=m") will be placed into a URLVariables object which is added to the URLRequest. This avoids a few bugs in Flash, but if you need to keep the entire URL intact (no parsing into URLVariables), set allowMalformedURL:true. For example, if your URL has duplicate variables in the query string like http://www.greensock.com/?c=S&c=SE&c=SW, it is technically considered a malformed URL and a URLVariables object can't properly contain all the duplicates, so in this case you'd want to set allowMalformedURL to true.
    • + *
    • autoDispose : Boolean - When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false. + * + *

      ----EVENT HANDLER SHORTCUTS----

    • + *
    • onOpen : Function - A handler function for LoaderEvent.OPEN events which are dispatched when the loader begins loading. Make sure your onOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onInit : Function - A handler function for LoaderEvent.INIT events which are called when the swf has streamed enough of its content to render the first frame and determine if there are any required LoaderMax-related loaders recognized. It also adds the swf to the ContentDisplay Sprite at this point. Make sure your onInit function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onProgress : Function - A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.
    • + *
    • onComplete : Function - A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading successfully. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onCancel : Function - A handler function for LoaderEvent.CANCEL events which are dispatched when loading is aborted due to either a failure or because another loader was prioritized or cancel() was manually called. Make sure your onCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onError : Function - A handler function for LoaderEvent.ERROR events which are dispatched whenever the loader experiences an error (typically an IO_ERROR or SECURITY_ERROR). An error doesn't necessarily mean the loader failed, however - to listen for when a loader fails, use the onFail special property. Make sure your onError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onFail : Function - A handler function for LoaderEvent.FAIL events which are dispatched whenever the loader fails and its status changes to LoaderStatus.FAILED. Make sure your onFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onIOError : Function - A handler function for LoaderEvent.IO_ERROR events which will also call the onError handler, so you can use that as more of a catch-all whereas onIOError is specifically for LoaderEvent.IO_ERROR events. Make sure your onIOError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onHTTPStatus : Function - A handler function for LoaderEvent.HTTP_STATUS events. Make sure your onHTTPStatus function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can determine the httpStatus code using the LoaderEvent's target.httpStatus (LoaderItems keep track of their httpStatus when possible, although certain environments prevent Flash from getting httpStatus information).
    • + *
    • onSecurityError : Function - A handler function for LoaderEvent.SECURITY_ERROR events which onError handles as well, so you can use that as more of a catch-all whereas onSecurityError is specifically for SECURITY_ERROR events. Make sure your onSecurityError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onScriptAccessDenied : Function - A handler function for LoaderMax.SCRIPT_ACCESS_DENIED events which occur when the swf is loaded from another domain and no crossdomain.xml is in place to grant full script access for things like BitmapData manipulation or integration of LoaderMax data inside the swf, etc. You can also check the scriptAccessDenied property after the swf has loaded. Make sure your function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onUncaughtError : Function - A handler function for LoaderEvent.UNCAUGHT_ERROR events which are dispatched when the subloaded swf encounters an UncaughtErrorEvent meaning an Error was thrown outside of a try...catch statement. This can be useful when subloading swfs from a 3rd party that may contain errors. However, UNCAUGHT_ERROR events will only be dispatched if the parent swf is published for Flash Player 10.1 or later! See SWFLoader's suppressUncaughtErrors special property if you'd like to have it automatically suppress these errors. The original UncaughtErrorEvent is stored in the LoaderEvent's data property. So, for example, if you'd like to call preventDefault() on that UncaughtErrorEvent, you'd do myLoaderEvent.data.preventDefault().
    • + *
    • onChildOpen : Function - A handler function for LoaderEvent.CHILD_OPEN events which are dispatched each time any nested LoaderMax-related loaders (active ones that the SWFLoader found inside the subloading swf that had their requireWithRoot set to its root) begins loading. Make sure your onChildOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildProgress : Function - A handler function for LoaderEvent.CHILD_PROGRESS events which are dispatched each time any nested LoaderMax-related loaders (active ones that the SWFLoader found inside the subloading swf that had their requireWithRoot set to its root) dispatches a PROGRESS event. To listen for changes in the SWFLoader's overall progress, use the onProgress special property instead. You can use the LoaderEvent's target.progress to get the child loader's progress value or use its target.bytesLoaded and target.bytesTotal. The LoaderEvent's currentTarget refers to the SWFLoader, so you can check its overall progress with the LoaderEvent's currentTarget.progress. Make sure your onChildProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildComplete : Function - A handler function for LoaderEvent.CHILD_COMPLETE events which are dispatched each time any nested LoaderMax-related loaders (active ones that the SWFLoader found inside the subloading swf that had their requireWithRoot set to its root) finishes loading successfully. Make sure your onChildComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildCancel : Function - A handler function for LoaderEvent.CHILD_CANCEL events which are dispatched each time loading is aborted on any nested LoaderMax-related loaders (active ones that the SWFLoader found inside the subloading swf that had their requireWithRoot set to its root) due to either an error or because another loader was prioritized in the queue or because cancel() was manually called on the child loader. Make sure your onChildCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildFail : Function - A handler function for LoaderEvent.CHILD_FAIL events which are dispatched each time any nested LoaderMax-related loaders (active ones that the SWFLoader found inside the subloading swf that had their requireWithRoot set to its root) fails (and its status chances to LoaderStatus.FAILED). Make sure your onChildFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    + * @see com.greensock.loading.data.SWFLoaderVars + */ + public function SWFLoader(urlOrRequest:*, vars:Object=null) { + super(urlOrRequest, vars); + _preferEstimatedBytesInAudit = true; + _type = "SWFLoader"; + } + + /** @private **/ + override protected function _load():void { + if (_stealthMode) { + //it's already loading, so exit stealth mode (stealth mode is entered when the SWFLoader is canceled before the Loader has dispatched the INIT event - bugs in Flash cause gc problems if we try to close() or unload() a Loader between the time it starts loading and when INIT fires... + _stealthMode = _loadOnExitStealth; + } else if (!_initted) { + _loader.visible = false; + _sprite.addChild(_loader); //to avoid null object reference errors in code inside the child swf that may reference "stage" (we'll removeChild() as soon as it inits) + super._load(); + } else if (_queue != null) { + _changeQueueListeners(true); + _queue.load(false); + } + } + + /** @private **/ + override protected function _refreshLoader(unloadContent:Boolean=true):void { + super._refreshLoader(unloadContent); + _loaderCompleted = false; + } + + /** @private **/ + protected function _changeQueueListeners(add:Boolean):void { + if (_queue != null) { + var p:String; + if (add && this.vars.integrateProgress != false) { + for (p in _listenerTypes) { + if (p != "onProgress" && p != "onInit") { + _queue.addEventListener(_listenerTypes[p], _passThroughEvent, false, -100, true); + } + } + _queue.addEventListener(LoaderEvent.COMPLETE, _completeHandler, false, -100, true); + _queue.addEventListener(LoaderEvent.PROGRESS, _progressHandler, false, -100, true); + _queue.addEventListener(LoaderEvent.FAIL, _failHandler, false, -100, true); + } else { + _queue.removeEventListener(LoaderEvent.COMPLETE, _completeHandler); + _queue.removeEventListener(LoaderEvent.PROGRESS, _progressHandler); + _queue.removeEventListener(LoaderEvent.FAIL, _failHandler); + for (p in _listenerTypes) { + if (p != "onProgress" && p != "onInit") { + _queue.removeEventListener(_listenerTypes[p], _passThroughEvent); + } + } + } + } + } + + /** @private scrubLevel: 0 = cancel, 1 = unload, 2 = dispose, 3 = flush **/ + override protected function _dump(scrubLevel:int=0, newStatus:int=0, suppressEvents:Boolean=false):void { + _loaderCompleted = false; + //Flash will refuse to properly unload it if the INIT event hasn't been dispatched! Technically we allow it to keep loading until _initHandler() is called where we'll unload it. + if (_status == LoaderStatus.LOADING && !_initted && !_loaderFailed) { + _stealthMode = true; + super._dump(scrubLevel, newStatus, suppressEvents); + return; + } + if (_initted && !_scriptAccessDenied && scrubLevel != 2) { + _stopMovieClips(_loader.content); + if (_loader.content in _rootLookup) { + _queue = LoaderMax(_rootLookup[_loader.content]); + _changeQueueListeners(false); + if (scrubLevel == 0) { + _queue.cancel(); + } else { + delete _rootLookup[_loader.content]; + _queue.dispose( Boolean(scrubLevel != 2) ); + } + } + } + if (_stealthMode) { + try { + _loader.close(); + } catch (error:Error) { + + } + } + _loadOnExitStealth = false; + _stealthMode = _hasRSL = _loaderFailed = false; + _cacheIsDirty = true; + if (scrubLevel >= 1) { + _queue = null; + _initted = false; + super._dump(scrubLevel, newStatus, suppressEvents); + } else { + var content:* = _content; + super._dump(scrubLevel, newStatus, suppressEvents); + _content = content; //super._dump() will null "_content", but if the swf has loaded but not the _queue, we should keep the content so that if resume() is called, it just starts loading the queue. + } + } + + + /** @private **/ + protected function _stopMovieClips(obj:DisplayObject):void { + var mc:MovieClip = obj as MovieClip; + if (mc == null) { + return; + } + mc.stop(); + var i:int = mc.numChildren; + while (--i > -1) { + _stopMovieClips(mc.getChildAt(i)); + } + } + + /** @private **/ + override protected function _determineScriptAccess():void { + //don't test the BitmapData.draw() until the swf has fully loaded because it can incorrectly throw security errors in certain situations (like NetStreams that haven't started yet). + try { + var mc:DisplayObject = _loader.content; + } catch (error:Error) { + _scriptAccessDenied = true; + dispatchEvent(new LoaderEvent(LoaderEvent.SCRIPT_ACCESS_DENIED, this, error.message)); + return; + } + if (_loader.content is AVM1Movie) { + _scriptAccessDenied = true; + dispatchEvent(new LoaderEvent(LoaderEvent.SCRIPT_ACCESS_DENIED, this, "AVM1Movie denies script access")); + } + } + + /** @private **/ + override protected function _calculateProgress():void { + _cachedBytesLoaded = (_stealthMode) ? 0 : _loader.contentLoaderInfo.bytesLoaded; + if (_loader.contentLoaderInfo.bytesTotal != 0) { //otherwise if unload() was called, bytesTotal would go back down to 0. + _cachedBytesTotal = _loader.contentLoaderInfo.bytesTotal; + } + if (_cachedBytesTotal < _cachedBytesLoaded || _loaderCompleted) { + //In Chrome when the file exceeds a certain size and gzip is enabled on the server, Adobe's Loader reports bytesTotal as 0!!! + //and in Firefox, if gzip was enabled, on very small files the Loader's bytesLoaded would never quite reach the bytesTotal even after the COMPLETE event fired! + _cachedBytesTotal = _cachedBytesLoaded; + } + if (this.vars.integrateProgress == false) { + // do nothing + } else if (_queue != null && (uint(this.vars.estimatedBytes) < _cachedBytesLoaded || _queue.auditedSize)) { //make sure that estimatedBytes is prioritized until the _queue has audited its size successfully! + if (_queue.status <= LoaderStatus.COMPLETED) { + _cachedBytesLoaded += _queue.bytesLoaded; + _cachedBytesTotal += _queue.bytesTotal; + } + } else if (uint(this.vars.estimatedBytes) > _cachedBytesLoaded && (!_initted || (_queue != null && _queue.status <= LoaderStatus.COMPLETED && !_queue.auditedSize))) { + _cachedBytesTotal = uint(this.vars.estimatedBytes); + } + if ((_hasRSL && _content == null) || (!_initted && _cachedBytesLoaded == _cachedBytesTotal)) { + _cachedBytesLoaded = int(_cachedBytesLoaded * 0.99); //don't allow the progress to hit 1 yet + } + _cacheIsDirty = false; + } + + /** @private **/ + protected function _checkRequiredLoaders():void { + if (_queue == null && this.vars.integrateProgress != false && !_scriptAccessDenied && _content != null) { + _queue = _rootLookup[_content]; + if (_queue != null) { + _changeQueueListeners(true); + _queue.load(false); + _cacheIsDirty = true; + } + } + } + + /** + * Searches the loaded swf (and any of its subloaded swfs that were loaded using SWFLoader) for a particular + * class by name. For example, if the swf contains a class named "com.greensock.TweenLite", you can get a + * reference to that class like: + * + * +var tweenLite:Class = loader.getClass("com.greensock.TweenLite"); +//then you can create an instance of TweenLite like: +var tween:Object = new tweenLite(mc, 1, {x:100}); + + * + * @param className The full name of the class, like "com.greensock.TweenLite". + * @return The class associated with the className + */ + public function getClass(className:String):Class { + if (_content == null || _scriptAccessDenied) { + return null; + } + if (_content.loaderInfo.applicationDomain.hasDefinition(className)) { + return _content.loaderInfo.applicationDomain.getDefinition(className); + } else if (_queue != null) { + var result:Object; + var loaders:Array = _queue.getChildren(true, true); + var i:int = loaders.length; + while (--i > -1) { + if (loaders[i] is SWFLoader) { + result = (loaders[i] as SWFLoader).getClass(className); + if (result != null) { + return result as Class; + } + } + } + } + return null; + } + + /** + * Finds a DisplayObject that's on the root of the loaded SWF by name. For example, + * you could put a MovieClip with an instance name of "phoneAnimation_mc" on the stage (along with + * any other objects of course) and then when you load that swf you could use + * loader.getSWFChild("phoneAnimation_mc") to get that MovieClip. It would be + * similar to doing (loader.rawContent as DisplayObjectContainer).getChildByName("phoneAnimation_mc") + * but in a more concise way that doesn't require checking to see if the rawContent is null. getSWFChild() + * will return null if the content hasn't loaded yet or if scriptAccessDenied is true. + * + * @param name The name of the child DisplayObject that is located at the root of the swf. + * @return The DisplayObject with the specified name. Returns null if the content hasn't loaded yet or if scriptAccessDenied is true. + */ + public function getSWFChild(name:String):DisplayObject { + return (!_scriptAccessDenied && _content is DisplayObjectContainer) ? DisplayObjectContainer(_content).getChildByName(name) : null; + } + + /** + * @private + * Finds a particular loader inside any active LoaderMax instances that were discovered in the subloaded swf + * which had their requireWithRoot set to the swf's root. This is only useful in situations + * where the swf contains other loaders that are required. + * + * @param nameOrURL The name or url associated with the loader that should be found. + * @return The loader associated with the name or url. Returns null if none were found. + */ + public function getLoader(nameOrURL:String):* { + return (_queue != null) ? _queue.getLoader(nameOrURL) : null; + } + + /** + * @private + * Finds a particular loader's content from inside any active LoaderMax instances that were discovered in the + * subloaded swf which had their requireWithRoot set to the swf's root. This is only useful + * in situations where the swf contains other loaders that are required. + * + * @param nameOrURL The name or url associated with the loader whose content should be found. + * @return The content associated with the name or url. Returns null if none was found. + */ + public function getContent(nameOrURL:String):* { + if (nameOrURL == this.name || nameOrURL == _url) { + return this.content; + } + var loader:LoaderCore = this.getLoader(nameOrURL); + return (loader != null) ? loader.content : null; + } + + /** + * Returns and array of all LoaderMax-related loaders (if any) that were found inside the swf and + * had their requireWithRoot special vars property set to the swf's root. For example, + * if the following code was run on the first frame of the swf, it would be identified as a child + * of this SWFLoader:

    + * + * var loader:ImageLoader = new ImageLoader("1.jpg", {requireWithRoot:this.root});

    + * + *

    Even if loaders are created later (not on frame 1), as long as their requireWithRoot + * points to this swf's root, the loader(s) will be considered a child of this SWFLoader and will be + * returned in the array that getChildren() creates. Beware, however, that by default + * child loaders are integrated into the SWFLoader's progress, so if the swf finishes + * loading and then a while later a loader is created inside that swf that has its requireWithRoot + * set to the swf's root, at that point the SWFLoader's progress would no longer be 1 (it would + * be less) but the SWFLoader's status remains unchanged.

    + * + *

    No child loader can be found until the SWFLoader's INIT event is dispatched, meaning the first + * frame of the swf has loaded and instantiated.

    + * + * @param includeNested If true, loaders that are nested inside child LoaderMax, XMLLoader, or SWFLoader instances will be included in the returned array as well. The default is false. + * @param omitLoaderMaxes If true, no LoaderMax instances will be returned in the array; only LoaderItems like ImageLoaders, XMLLoaders, SWFLoaders, MP3Loaders, etc. The default is false. + * @return An array of loaders. + */ + public function getChildren(includeNested:Boolean=false, omitLoaderMaxes:Boolean=false):Array { + return (_queue != null) ? _queue.getChildren(includeNested, omitLoaderMaxes) : []; + } + + +//---- EVENT HANDLERS ------------------------------------------------------------------------------------ + + /** @private **/ + override protected function _initHandler(event:Event):void { + //if the SWFLoader was cancelled before _initHandler() was called, Flash will refuse to properly unload it, so we allow it to continue but check the status here and _dump() if necessary. + if (_stealthMode) { + _initted = true; + var awaitingLoad:Boolean = _loadOnExitStealth; + _dump(((_status == LoaderStatus.DISPOSED) ? 3 : 1), _status, true); + if (awaitingLoad) { + _load(); + } + return; + } + + //swfs with TLF use their own funky preloader system that causes problems, so we need to work around them here... + _hasRSL = false; + try { + var tempContent:DisplayObject = _loader.content; + var className:String = getQualifiedClassName(tempContent); + if (className.substr(-13) == "__Preloader__") { + var rslPreloader:Object = tempContent["__rslPreloader"]; + if (rslPreloader != null) { + className = getQualifiedClassName(rslPreloader); + if (className == "fl.rsl::RSLPreloader") { + _hasRSL = true; + _rslAddedCount = 0; + tempContent.addEventListener(Event.ADDED, _rslAddedHandler); + } + } + } + } catch (error:Error) { + + } + if (!_hasRSL) { + _init(); + } + } + + /** @private **/ + protected function _init():void { + _determineScriptAccess(); + if (!_scriptAccessDenied) { + if (!_hasRSL) { + _content = _loader.content; + } + if (_content != null) { + if (this.vars.autoPlay == false && _content is MovieClip) { + var st:SoundTransform = _content.soundTransform; + st.volume = 0; //just make sure you can't hear any sounds as it's loading in the background. + _content.soundTransform = st; + _content.stop(); + } + _checkRequiredLoaders(); + } + if (_loader.parent == _sprite) { + if (_sprite.stage != null && this.vars.suppressInitReparentEvents == true) { + _sprite.addEventListener(Event.ADDED_TO_STAGE, _captureFirstEvent, true, 1000, true); + _loader.addEventListener(Event.REMOVED_FROM_STAGE, _captureFirstEvent, true, 1000, true); + } + _sprite.removeChild(_loader); //we only added it temporarily so that if the child swf references "stage" somewhere, it could avoid errors (as long as this SWFLoader's ContentDisplay is on the stage, like if a "container" is defined in vars) + } + + } else { + _content = _loader; + _loader.visible = true; + } + super._initHandler(null); + } + + /** @private **/ + protected function _captureFirstEvent(event:Event):void { + event.stopImmediatePropagation(); + event.currentTarget.removeEventListener(event.type, _captureFirstEvent); + } + + /** @private Works around bug - see http://kb2.adobe.com/cps/838/cpsid_83812.html **/ + protected function _rslAddedHandler(event:Event):void { + // check to ensure this was actually something added to the _loader.content + if (event.target is DisplayObject && event.currentTarget is DisplayObjectContainer && event.target.parent == event.currentTarget) { + _rslAddedCount++; + } + // the first thing added will be the loader animation swf - ignore that + if (_rslAddedCount > 1) { + event.currentTarget.removeEventListener(Event.ADDED, _rslAddedHandler); + if (_status == LoaderStatus.LOADING) { + _content = event.target; + _init(); + _calculateProgress(); + dispatchEvent(new LoaderEvent(LoaderEvent.PROGRESS, this)); + _completeHandler(null); + } + } + } + + /** @private **/ + override protected function _passThroughEvent(event:Event):void { + if (!(event.type == "uncaughtError" && _suppressUncaughtError(event)) && event.target != _queue) { + super._passThroughEvent(event); + } + } + + /** @private **/ + override protected function _progressHandler(event:Event):void { + if (_status == LoaderStatus.LOADING) { + if (_queue == null && _initted) { + _checkRequiredLoaders(); + } + if (_dispatchProgress) { + var bl:uint = _cachedBytesLoaded; + var bt:uint = _cachedBytesTotal; + _calculateProgress(); + if (_cachedBytesLoaded != _cachedBytesTotal && (bl != _cachedBytesLoaded || bt != _cachedBytesTotal)) { + dispatchEvent(new LoaderEvent(LoaderEvent.PROGRESS, this)); + } + } else { + _cacheIsDirty = true; + } + } + } + + /** @private **/ + override protected function _completeHandler(event:Event=null):void { + _loaderCompleted = true; + _checkRequiredLoaders(); + _calculateProgress(); + if (this.progress == 1) { + if (!_scriptAccessDenied && this.vars.autoPlay == false && _content is MovieClip) { + var st:SoundTransform = _content.soundTransform; + st.volume = 1; + _content.soundTransform = st; + } + _changeQueueListeners(false); + super._determineScriptAccess(); //now do the BitmapData.draw() test. + super._completeHandler(event); + } + } + + /** @private **/ + override protected function _errorHandler(event:Event):void { + if (!_suppressUncaughtError(event)) { + super._errorHandler(event); + } + } + + /** @private **/ + protected function _suppressUncaughtError(event:Event):Boolean { + if (event is LoaderEvent && LoaderEvent(event).data is Event) { + event = LoaderEvent(event).data as Event; + } + if (event.type == "uncaughtError") { + if (_lastPTUncaughtError == (_lastPTUncaughtError = event)) { + return true; + } else if (this.vars.suppressUncaughtErrors == true) { + event.preventDefault(); + event.stopImmediatePropagation(); + return true; + } + } + return false; + } + + /** @private **/ + override protected function _failHandler(event:Event, dispatchError:Boolean=true):void { + if ((event.type == "ioError" || event.type == "securityError") && event.target == _loader.contentLoaderInfo) { + _loaderFailed = true; + if (_loadOnExitStealth) { //could happen if the url is set to another value between the time the SWFLoader starts loading and when it fails. + _dump(1, _status, true); + _load(); + return; + } + } + if (event.target == _queue) { + //this is a unique situation where we don't want the failure to unload the content because only one of the nested loaders failed but the swf may be perfectly good and usable. Also, we want to retain the _queue so that getChildren() works. Therefore we don't call super._failHandler(); + _status = LoaderStatus.FAILED; + _time = getTimer() - _time; + dispatchEvent(new LoaderEvent(LoaderEvent.CANCEL, this)); + dispatchEvent(new LoaderEvent(LoaderEvent.FAIL, this, this.toString() + " > " + (event as Object).text)); + return; + } + super._failHandler(event, dispatchError); + } + + +//---- GETTERS / SETTERS --------------------------------------------------------------- + + /** @private **/ + override public function set url(value:String):void { + if (_url != value) { + if (_status == LoaderStatus.LOADING && !_initted && !_loaderFailed) { + _loadOnExitStealth = true; + } + super.url = value; //will dump() too + } + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/loading/SelfLoader.as b/FairyGUI-as3/src/com/greensock/loading/SelfLoader.as new file mode 100644 index 0000000..8be2d15 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/loading/SelfLoader.as @@ -0,0 +1,109 @@ +/** + * VERSION: 1.7 + * DATE: 2010-11-13 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/loadermax/ + **/ +package com.greensock.loading { + import com.greensock.loading.core.LoaderItem; + + import flash.display.DisplayObject; + import flash.display.LoaderInfo; + import flash.events.Event; + import flash.events.ProgressEvent; +/** + * Tracks the loading progress of the swf in which the loader resides (basically a simple tool for tracking + * the loaderInfo's progress). SelfLoader is only useful in situations where you want to factor + * the current swf's loading progress into a LoaderMax queue or maybe display a progress bar for the current + * swf or fire an event when loading has finished. + * + *

    OPTIONAL VARS PROPERTIES

    + *

    The following special properties can be passed into the SelfLoader constructor via its vars parameter:

    + *
      + *
    • name : String - A name that is used to identify the loader instance. This name can be fed to the LoaderMax.getLoader() or LoaderMax.getContent() methods or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21".
    • + *
    • autoDispose : Boolean - When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent(). The default autoDispose value is false. + * + *

      ----EVENT HANDLER SHORTCUTS----

    • + *
    • onProgress : Function - A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.
    • + *
    • onComplete : Function - A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading successfully. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    + * + * Example AS3 code:+ import com.greensock.loading.~~; + import com.greensock.events.LoaderEvent; + +//create a SelfLoader +var loader:SelfLoader = new SelfLoader(this, {name:"self", onProgress:progressHandler, onComplete:completeHandler}); + +//Or you could put the SelfLoader into a LoaderMax. Create one first... +var queue:LoaderMax = new LoaderMax({name:"mainQueue", onProgress:progressHandler, onComplete:completeHandler, onError:errorHandler}); + +//append the SelfLoader and several other loaders +queue.append( loader ); +queue.append( new ImageLoader("images/photo1.jpg", {name:"photo1", container:this}) ); +queue.append( new SWFLoader("swf/child.swf", {name:"child", container:this, x:100, estimatedBytes:3500}) ); + +//start loading the LoaderMax queue +queue.load(); + +function progressHandler(event:LoaderEvent):void { + trace("progress: " + event.target.progress); +} + +function completeHandler(event:LoaderEvent):void { + trace(event.target + " complete"); +} + +function errorHandler(event:LoaderEvent):void { + trace("error occured with " + event.target + ": " + event.text); +} + + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class SelfLoader extends LoaderItem { + /** @private **/ + protected var _loaderInfo:LoaderInfo; + + /** + * Constructor + * + * @param self A DisplayObject from the main swf (it will use this DisplayObject's loaderInfo to track the loading progress). + * @param vars An object containing optional configuration details. For example: new SelfLoader(this, {name:"self", onComplete:completeHandler, onProgress:progressHandler}). + * + *

    The following special properties can be passed into the constructor via the vars parameter:

    + *
      + *
    • name : String - A name that is used to identify the loader instance. This name can be fed to the LoaderMax.getLoader() or LoaderMax.getContent() methods or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21".
    • + *
    • autoDispose : Boolean - When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent(). The default autoDispose value is false. + * + *

      ----EVENT HANDLER SHORTCUTS----

    • + *
    • onProgress : Function - A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.
    • + *
    • onComplete : Function - A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading successfully. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    + */ + public function SelfLoader(self:DisplayObject, vars:Object=null) { + super(self.loaderInfo.url, vars); + _type = "SelfLoader"; + _loaderInfo = self.loaderInfo; + _loaderInfo.addEventListener(ProgressEvent.PROGRESS, _progressHandler, false, 0, true); + _loaderInfo.addEventListener(Event.COMPLETE, _completeHandler, false, 0, true); + _cachedBytesTotal = _loaderInfo.bytesTotal; + _cachedBytesLoaded = _loaderInfo.bytesLoaded; + _status = (_cachedBytesLoaded == _cachedBytesTotal) ? LoaderStatus.COMPLETED : LoaderStatus.LOADING; + _auditedSize = true; + _content = self; + } + + /** @private scrubLevel: 0 = cancel, 1 = unload, 2 = dispose, 3 = flush **/ + override protected function _dump(scrubLevel:int=0, newStatus:int=0, suppressEvents:Boolean=false):void { + if (scrubLevel >= 2) { + _loaderInfo.removeEventListener(ProgressEvent.PROGRESS, _progressHandler); + _loaderInfo.removeEventListener(Event.COMPLETE, _completeHandler); + } + super._dump(scrubLevel, newStatus, suppressEvents); + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/loading/VideoLoader.as b/FairyGUI-as3/src/com/greensock/loading/VideoLoader.as new file mode 100644 index 0000000..c337f90 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/loading/VideoLoader.as @@ -0,0 +1,1366 @@ +/** + * VERSION: 1.941 + * DATE: 2015-01-20 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/loadermax/ + **/ +package com.greensock.loading { + import com.greensock.events.LoaderEvent; + import com.greensock.loading.core.LoaderItem; + import com.greensock.loading.display.ContentDisplay; + + import flash.display.Sprite; + import flash.events.Event; + import flash.events.NetStatusEvent; + import flash.events.ProgressEvent; + import flash.events.TimerEvent; + import flash.media.SoundTransform; + import flash.media.Video; + import flash.net.NetConnection; + import flash.net.NetStream; + import flash.net.URLRequest; + import flash.net.URLVariables; + import flash.utils.Timer; + import flash.utils.getTimer; + import flash.utils.setTimeout; + + /** Dispatched when the loader's httpStatus value changes. **/ + [Event(name="httpStatus", type="com.greensock.events.LoaderEvent")] + /** Dispatched when the netStream dispatches a NET_STATUS event. **/ + [Event(name="netStatus", type="com.greensock.events.LoaderEvent")] +/** + * Loads an FLV, F4V, or MP4 video file using a NetStream and also provides convenient playback methods + * and properties like pauseVideo(), playVideo(), gotoVideoTime(), bufferProgress, playProgress, volume, + * duration, videoPaused, metaData, and videoTime. Just like ImageLoader and SWFLoader, + * VideoLoader's content property refers to a ContentDisplay object (Sprite) that + * gets created immediately so that you can position/scale/rotate it or add ROLL_OVER/ROLL_OUT/CLICK listeners + * before (or while) the video loads. Use the VideoLoader's content property to get the ContentDisplay + * Sprite, or use the rawContent property to get the Video object that is used inside the + * ContentDisplay to display the video. If a container is defined in the vars object, + * the ContentDisplay will immediately be added to that container). + * + *

    You don't need to worry about creating a NetConnection, a Video object, attaching the NetStream, or any + * of the typical hassles. VideoLoader can even scale the video into the area you specify using scaleModes + * like "stretch", "proportionalInside", "proportionalOutside", and more. A VideoLoader will + * dispatch useful events like VIDEO_COMPLETE, VIDEO_PAUSE, VIDEO_PLAY, VIDEO_BUFFER_FULL, + * VIDEO_BUFFER_EMPTY, NET_STATUS, VIDEO_CUE_POINT, and PLAY_PROGRESS in addition + * to the typical loader events, making it easy to hook up your own control interface. It packs a + * surprising amount of functionality into a very small amount of kb.

    + * + *

    OPTIONAL VARS PROPERTIES

    + *

    The following special properties can be passed into the VideoLoader constructor via its vars + * parameter which can be either a generic object or a VideoLoaderVars object:

    + *
      + *
    • name : String - A name that is used to identify the VideoLoader instance. This name can be fed to the LoaderMax.getLoader() or LoaderMax.getContent() methods or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21".
    • + *
    • bufferTime : Number - The amount of time (in seconds) that should be buffered before the video can begin playing (set autoPlay to false to pause the video initially).
    • + *
    • autoPlay : Boolean - By default, the video will begin playing as soon as it has been adequately buffered, but to prevent it from playing initially, set autoPlay to false.
    • + *
    • smoothing : Boolean - When smoothing is true (the default), smoothing will be enabled for the video which typically leads to better scaling results.
    • + *
    • container : DisplayObjectContainer - A DisplayObjectContainer into which the ContentDisplay should be added immediately.
    • + *
    • width : Number - Sets the ContentDisplay's width property (applied before rotation, scaleX, and scaleY).
    • + *
    • height : Number - Sets the ContentDisplay's height property (applied before rotation, scaleX, and scaleY).
    • + *
    • centerRegistration : Boolean - if true, the registration point will be placed in the center of the ContentDisplay which can be useful if, for example, you want to animate its scale and have it grow/shrink from its center.
    • + *
    • scaleMode : String - When a width and height are defined, the scaleMode controls how the video will be scaled to fit the area. The following values are recognized (you may use the com.greensock.layout.ScaleMode constants if you prefer): + *
        + *
      • "stretch" (the default) - The video will fill the width/height exactly.
      • + *
      • "proportionalInside" - The video will be scaled proportionally to fit inside the area defined by the width/height
      • + *
      • "proportionalOutside" - The video will be scaled proportionally to completely fill the area, allowing portions of it to exceed the bounds defined by the width/height.
      • + *
      • "widthOnly" - Only the width of the video will be adjusted to fit.
      • + *
      • "heightOnly" - Only the height of the video will be adjusted to fit.
      • + *
      • "none" - No scaling of the video will occur.
      • + *
    • + *
    • hAlign : String - When a width and height are defined, the hAlign determines how the video is horizontally aligned within that area. The following values are recognized (you may use the com.greensock.layout.AlignMode constants if you prefer): + *
        + *
      • "center" (the default) - The video will be centered horizontally in the area
      • + *
      • "left" - The video will be aligned with the left side of the area
      • + *
      • "right" - The video will be aligned with the right side of the area
      • + *
    • + *
    • vAlign : String - When a width and height are defined, the vAlign determines how the video is vertically aligned within that area. The following values are recognized (you may use the com.greensock.layout.AlignMode constants if you prefer): + *
        + *
      • "center" (the default) - The video will be centered vertically in the area
      • + *
      • "top" - The video will be aligned with the top of the area
      • + *
      • "bottom" - The video will be aligned with the bottom of the area
      • + *
    • + *
    • crop : Boolean - When a width and height are defined, setting crop to true will cause the video to be cropped within that area (by applying a scrollRect for maximum performance). This is typically useful when the scaleMode is "proportionalOutside" or "none" so that any parts of the video that exceed the dimensions defined by width and height are visually chopped off. Use the hAlign and vAlign special properties to control the vertical and horizontal alignment within the cropped area.
    • + *
    • x : Number - Sets the ContentDisplay's x property (for positioning on the stage).
    • + *
    • y : Number - Sets the ContentDisplay's y property (for positioning on the stage).
    • + *
    • scaleX : Number - Sets the ContentDisplay's scaleX property.
    • + *
    • scaleY : Number - Sets the ContentDisplay's scaleY property.
    • + *
    • rotation : Number - Sets the ContentDisplay's rotation property.
    • + *
    • alpha : Number - Sets the ContentDisplay's alpha property.
    • + *
    • visible : Boolean - Sets the ContentDisplay's visible property.
    • + *
    • blendMode : String - Sets the ContentDisplay's blendMode property.
    • + *
    • bgColor : uint - When a width and height are defined, a rectangle will be drawn inside the ContentDisplay immediately in order to ease the development process. It is transparent by default, but you may define a bgAlpha if you prefer.
    • + *
    • bgAlpha : Number - Controls the alpha of the rectangle that is drawn when a width and height are defined.
    • + *
    • volume : Number - A value between 0 and 1 indicating the volume at which the video should play (default is 1).
    • + *
    • repeat : int - Number of times that the video should repeat. To repeat indefinitely, use -1. Default is 0.
    • + *
    • stageVideo : StageVideo - By default, the NetStream gets attached to a Video object, but if you want to use StageVideo in Flash, you can define the stageVideo property and VideoLoader will attach its NetStream to that StageVideo instance instead of the regular Video instance (which is the rawContent). Please read Adobe's docs regarding StageVideo to understand the benefits, tradeoffs and limitations.
    • + *
    • checkPolicyFile : Boolean - If true, the VideoLoader will check for a crossdomain.xml file on the remote host (only useful when loading videos from other domains - see Adobe's docs for details about NetStream's checkPolicyFile property).
    • + *
    • estimatedDuration : Number - Estimated duration of the video in seconds. VideoLoader will only use this value until it receives the necessary metaData from the video in order to accurately determine the video's duration. You do not need to specify an estimatedDuration, but doing so can help make the playProgress and some other values more accurate (until the metaData has loaded). It can also make the progress/bytesLoaded/bytesTotal more accurate when a estimatedDuration is defined, particularly in bufferMode.
    • + *
    • deblocking : int - Indicates the type of filter applied to decoded video as part of post-processing. The default value is 0, which lets the video compressor apply a deblocking filter as needed. See Adobe's flash.media.Video class docs for details.
    • + *
    • bufferMode : Boolean - When true, the loader will report its progress only in terms of the video's buffer which can be very convenient if, for example, you want to display loading progress for the video's buffer or tuck it into a LoaderMax with other loaders and allow the LoaderMax to dispatch its COMPLETE event when the buffer is full instead of waiting for the whole file to download. When bufferMode is true, the VideoLoader will dispatch its COMPLETE event when the buffer is full as opposed to waiting for the entire video to load. You can toggle the bufferMode anytime. Please read the full bufferMode property ASDoc description below for details about how it affects things like bytesTotal.
    • + *
    • autoAdjustBuffer : Boolean If the buffer becomes empty during playback and autoAdjustBuffer is true (the default), it will automatically attempt to adjust the NetStream's bufferTime based on the rate at which the video has been loading, estimating what it needs to be in order to play the rest of the video without emptying the buffer again. This can prevent the annoying problem of video playback start/stopping/starting/stopping on a system tht doesn't have enough bandwidth to adequately buffer the video. You may also set the bufferTime in the constructor's vars parameter to set the initial value.
    • + *
    • autoDetachNetStream : Boolean - If true, the NetStream will only be attached to the Video object (the rawContent) when it is in the display list (on the stage). This conserves memory but it can cause a very brief rendering delay when the content is initially added to the stage (often imperceptible). Also, if you add it to the stage when the videoTime is after its last encoded keyframe, it will render at that last keyframe.
    • + *
    • alternateURL : String - If you define an alternateURL, the loader will initially try to load from its original url and if it fails, it will automatically (and permanently) change the loader's url to the alternateURL and try again. Think of it as a fallback or backup url. It is perfectly acceptable to use the same alternateURL for multiple loaders (maybe a default image for various ImageLoaders for example).
    • + *
    • noCache : Boolean - If noCache is true, a "gsCacheBusterID" parameter will be appended to the url with a random set of numbers to prevent caching (don't worry, this info is ignored when you getLoader() or getContent() by url and when you're running locally)
    • + *
    • estimatedBytes : uint - Initially, the loader's bytesTotal is set to the estimatedBytes value (or LoaderMax.defaultEstimatedBytes if one isn't defined). Then, when the loader begins loading and it can accurately determine the bytesTotal, it will do so. Setting estimatedBytes is optional, but the more accurate the value, the more accurate your loaders' overall progress will be initially. If the loader will be inserted into a LoaderMax instance (for queue management), its auditSize feature can attempt to automatically determine the bytesTotal at runtime (there is a slight performance penalty for this, however - see LoaderMax's documentation for details).
    • + *
    • requireWithRoot : DisplayObject - LoaderMax supports subloading, where an object can be factored into a parent's loading progress. If you want LoaderMax to require this VideoLoader as part of its parent SWFLoader's progress, you must set the requireWithRoot property to your swf's root. For example, var loader:VideoLoader = new VideoLoader("myScript.php", {name:"textData", requireWithRoot:this.root});
    • + *
    • allowMalformedURL : Boolean - Normally, the URL will be parsed and any variables in the query string (like "?name=test&state=il&gender=m") will be placed into a URLVariables object which is added to the URLRequest. This avoids a few bugs in Flash, but if you need to keep the entire URL intact (no parsing into URLVariables), set allowMalformedURL:true. For example, if your URL has duplicate variables in the query string like http://www.greensock.com/?c=S&c=SE&c=SW, it is technically considered a malformed URL and a URLVariables object can't properly contain all the duplicates, so in this case you'd want to set allowMalformedURL to true.
    • + *
    • autoDispose : Boolean - When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false. + * + *

      ----EVENT HANDLER SHORTCUTS----

    • + *
    • onOpen : Function - A handler function for LoaderEvent.OPEN events which are dispatched when the loader begins loading. Make sure your onOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onInit : Function - A handler function for Event.INIT events which will be called when the video's metaData has been received and the video is placed into the ContentDisplay. The INIT event can be dispatched more than once if the NetStream receives metaData more than once (which occasionally happens, particularly with F4V files - the first time often doesn't include the cuePoints). Make sure your onInit function accepts a single parameter of type Event (flash.events.Event).
    • + *
    • onProgress : Function - A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.
    • + *
    • onComplete : Function - A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading successfully. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onCancel : Function - A handler function for LoaderEvent.CANCEL events which are dispatched when loading is aborted due to either a failure or because another loader was prioritized or cancel() was manually called. Make sure your onCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onError : Function - A handler function for LoaderEvent.ERROR events which are dispatched whenever the loader experiences an error (typically an IO_ERROR). An error doesn't necessarily mean the loader failed, however - to listen for when a loader fails, use the onFail special property. Make sure your onError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onFail : Function - A handler function for LoaderEvent.FAIL events which are dispatched whenever the loader fails and its status changes to LoaderStatus.FAILED. Make sure your onFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onIOError : Function - A handler function for LoaderEvent.IO_ERROR events which will also call the onError handler, so you can use that as more of a catch-all whereas onIOError is specifically for LoaderEvent.IO_ERROR events. Make sure your onIOError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    + * + *

    Note: Using a VideoLoaderVars instance + * instead of a generic object to define your vars is a bit more verbose but provides + * code hinting and improved debugging because it enforces strict data typing. Use whichever one you prefer.

    + * + *

    Note: To avoid garbage collection issues in the Flash player, the netStream + * object that VideoLoader employs must get recreated internally anytime the VideoLoader is unloaded or its loading + * is cancelled, so if you need to directly access the netStream, it is best to do so after + * the COMPLETE event has been dispatched. Otherwise, if you store a reference to the VideoLoader's + * netStream before or during a load and it gets cancelled or unloaded for some reason, it won't reference + * the one that was used to load the video.

    + * + *

    Note: There is a bug/inconsistency in Adobe's NetStream class that causes relative URLs + * to use the swf's location as the base path instead of the HTML page's location like all other loaders. Therefore, + * it would be wise to use the "base" attribute of the <OBJECT> and <EMBED> tags in the HTML to + * make sure all relative paths are consistent. See http://kb2.adobe.com/cps/041/tn_04157.html + * for details.

    + * + *

    Note: In order to minimize memory usage, VideoLoader doesn't attach the NetStream to its Video + * object (the rawContent) until it is added to the display list. Therefore, if your VideoLoader's content + * isn't somewhere on the stage, the NetStream's visual content won't be fully decoded into memory (that's a good thing). + * The only time this could be of consequence is if you are trying to do a BitmapData.draw() of the VideoLoader's content + * or rawContent when it isn't on the stage. In that case, you'd just need to attach the NetStream manually before doing + * your BitmapData.draw() like myVideoLoader.rawContent.attachNetStream(myVideoLoader.netStream).

    + * + * Example AS3 code:+ import com.greensock.loading.~~; + import com.greensock.loading.display.~~; + import com.greensock.~~; + import com.greensock.events.LoaderEvent; + +//create a VideoLoader +var video:VideoLoader = new VideoLoader("assets/video.flv", {name:"myVideo", container:this, width:400, height:300, scaleMode:"proportionalInside", bgColor:0x000000, autoPlay:false, volume:0, requireWithRoot:this.root, estimatedBytes:75000}); + +//start loading +video.load(); + +//add a CLICK listener to a button that causes the video to toggle its paused state. +button.addEventListener(MouseEvent.CLICK, togglePause); +function togglePause(event:MouseEvent):void { + video.videoPaused = !video.videoPaused; +} + +//or you could put the VideoLoader into a LoaderMax queue. Create one first... +var queue:LoaderMax = new LoaderMax({name:"mainQueue", onProgress:progressHandler, onComplete:completeHandler, onError:errorHandler}); + +//append the VideoLoader and several other loaders +queue.append( video ); +queue.append( new DataLoader("assets/data.txt", {name:"myText"}) ); +queue.append( new ImageLoader("assets/image1.png", {name:"myImage", estimatedBytes:3500}) ); + +//start loading the LoaderMax queue +queue.load(); + +function progressHandler(event:LoaderEvent):void { + trace("progress: " + event.target.progress); +} + +function completeHandler(event:LoaderEvent):void { + //play the video + video.playVideo(); + + //tween the volume up to 1 over the course of 2 seconds. + TweenLite.to(video, 2, {volume:1}); +} + +function errorHandler(event:LoaderEvent):void { + trace("error occured with " + event.target + ": " + event.text); +} + + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @see com.greensock.loading.data.VideoLoaderVars + * + * @author Jack Doyle, jack@greensock.com + */ + public class VideoLoader extends LoaderItem { + /** @private **/ + private static var _classActivated:Boolean = _activateClass("VideoLoader", VideoLoader, "flv,f4v,mp4,mov"); + + /** Event type constant for when the video completes. **/ + public static const VIDEO_COMPLETE:String="videoComplete"; + /** Event type constant for when the video's buffer is full. **/ + public static const VIDEO_BUFFER_FULL:String="videoBufferFull"; + /** Event type constant for when the video's buffer is empty. **/ + public static const VIDEO_BUFFER_EMPTY:String="videoBufferEmpty"; + /** Event type constant for when the video is paused. **/ + public static const VIDEO_PAUSE:String="videoPause"; + /** Event type constant for when the video begins or resumes playing. If the buffer isn't full yet when VIDEO_PLAY is dispatched, the video will wait to visually begin playing until the buffer is full. So VIDEO_PLAY indicates when the NetStream received an instruction to play, not necessarily when it visually begins playing. **/ + public static const VIDEO_PLAY:String="videoPlay"; + /** Event type constant for when the video reaches a cue point in the playback of the NetStream. **/ + public static const VIDEO_CUE_POINT:String="videoCuePoint"; + /** Event type constant for when the playback progresses (only dispatched when the video is playing). **/ + public static const PLAY_PROGRESS:String="playProgress"; + + /** @private **/ + protected var _ns:NetStream; + /** @private **/ + protected var _nc:NetConnection; + /** @private **/ + protected var _auditNS:NetStream; + /** @private **/ + protected var _video:Video; + /** @private **/ + protected var _stageVideo:Object; //don't type as StageVideo because that would break publishing to FP9 + /** @private **/ + protected var _sound:SoundTransform; + /** @private **/ + protected var _videoPaused:Boolean; + /** @private **/ + protected var _videoComplete:Boolean; + /** @private **/ + protected var _forceTime:Number; + /** @private **/ + protected var _duration:Number; + /** @private **/ + protected var _pausePending:Boolean; + /** @private **/ + protected var _volume:Number; + /** @private **/ + protected var _sprite:Sprite; + /** @private **/ + protected var _initted:Boolean; + /** @private **/ + protected var _bufferMode:Boolean; + /** @private **/ + protected var _repeatCount:uint; + /** @private **/ + protected var _bufferFull:Boolean; + /** @private **/ + protected var _dispatchPlayProgress:Boolean; + /** @private **/ + protected var _prevTime:Number; + /** @private **/ + protected var _prevCueTime:Number; + /** @private **/ + protected var _firstCuePoint:CuePoint; + /** @private due to a bug in the NetStream class, we cannot seek() or pause() before the NetStream has dispatched a RENDER Event (or after 50ms for Flash Player 9). **/ + protected var _renderedOnce:Boolean; + /** @private primarily used for FP9 to work around a Flash bug with seek() and pause() (see the _waitForRender() method for note). **/ + protected var _renderTimer:Timer; + /** @private **/ + protected var _autoDetachNetStream:Boolean; + /** @private the first VIDEO_PLAY event shouldn't be dispatched until the NetStream's NetStatusEvent fires with the code NetStream.Play.Start gets dispatched, so we track it with this Boolean variable. Otherwise, if you create a VideoLoader with autoPlay:false and then immediately load() and playVideo(), it would dispatch the VIDEO_PLAY event twice, once for the playVideo() and once when the NetStatusEvent is received. **/ + protected var _playStarted:Boolean; + /** @private set to true as soon as the video finishes, and then is set back to false 1 ENTER_FRAME later - we use this to work around a bug in the Flash Player that causes a flicker when a seek() is called on a NetStream that just finished. **/ + protected var _finalFrame:Boolean; + + /** The metaData that was received from the video (contains information about its width, height, frame rate, etc.). See Adobe's docs for information about a NetStream's onMetaData callback. **/ + public var metaData:Object; + /** If the buffer becomes empty during playback and autoAdjustBuffer is true (the default), it will automatically attempt to adjust the NetStream's bufferTime based on the rate at which the video has been loading, estimating what it needs to be in order to play the rest of the video without emptying the buffer again. This can prevent the annoying problem of video playback start/stopping/starting/stopping on a system tht doesn't have enough bandwidth to adequately buffer the video. You may also set the bufferTime in the constructor's vars parameter to set the initial value. **/ + public var autoAdjustBuffer:Boolean; + + /** + * Constructor + * + * @param urlOrRequest The url (String) or URLRequest from which the loader should get its content. + * @param vars An object containing optional configuration details. For example: new VideoLoader("video/video.flv", {name:"myVideo", onComplete:completeHandler, onProgress:progressHandler}). + * + *

    The following special properties can be passed into the constructor via the vars parameter + * which can be either a generic object or a VideoLoaderVars object:

    + *
      + *
    • name : String - A name that is used to identify the VideoLoader instance. This name can be fed to the LoaderMax.getLoader() or LoaderMax.getContent() methods or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21".
    • + *
    • bufferTime : Number - The amount of time (in seconds) that should be buffered before the video can begin playing (set autoPlay to false to pause the video initially).
    • + *
    • autoPlay : Boolean - By default, the video will begin playing as soon as it has been adequately buffered, but to prevent it from playing initially, set autoPlay to false.
    • + *
    • smoothing : Boolean - When smoothing is true (the default), smoothing will be enabled for the video which typically leads to better scaling results.
    • + *
    • container : DisplayObjectContainer - A DisplayObjectContainer into which the ContentDisplay should be added immediately.
    • + *
    • width : Number - Sets the ContentDisplay's width property (applied before rotation, scaleX, and scaleY).
    • + *
    • height : Number - Sets the ContentDisplay's height property (applied before rotation, scaleX, and scaleY).
    • + *
    • centerRegistration : Boolean - if true, the registration point will be placed in the center of the ContentDisplay which can be useful if, for example, you want to animate its scale and have it grow/shrink from its center.
    • + *
    • scaleMode : String - When a width and height are defined, the scaleMode controls how the video will be scaled to fit the area. The following values are recognized (you may use the com.greensock.layout.ScaleMode constants if you prefer): + *
        + *
      • "stretch" (the default) - The video will fill the width/height exactly.
      • + *
      • "proportionalInside" - The video will be scaled proportionally to fit inside the area defined by the width/height
      • + *
      • "proportionalOutside" - The video will be scaled proportionally to completely fill the area, allowing portions of it to exceed the bounds defined by the width/height.
      • + *
      • "widthOnly" - Only the width of the video will be adjusted to fit.
      • + *
      • "heightOnly" - Only the height of the video will be adjusted to fit.
      • + *
      • "none" - No scaling of the video will occur.
      • + *
    • + *
    • hAlign : String - When a width and height are defined, the hAlign determines how the video is horizontally aligned within that area. The following values are recognized (you may use the com.greensock.layout.AlignMode constants if you prefer): + *
        + *
      • "center" (the default) - The video will be centered horizontally in the area
      • + *
      • "left" - The video will be aligned with the left side of the area
      • + *
      • "right" - The video will be aligned with the right side of the area
      • + *
    • + *
    • vAlign : String - When a width and height are defined, the vAlign determines how the video is vertically aligned within that area. The following values are recognized (you may use the com.greensock.layout.AlignMode constants if you prefer): + *
        + *
      • "center" (the default) - The video will be centered vertically in the area
      • + *
      • "top" - The video will be aligned with the top of the area
      • + *
      • "bottom" - The video will be aligned with the bottom of the area
      • + *
    • + *
    • crop : Boolean - When a width and height are defined, setting crop to true will cause the video to be cropped within that area (by applying a scrollRect for maximum performance). This is typically useful when the scaleMode is "proportionalOutside" or "none" so that any parts of the video that exceed the dimensions defined by width and height are visually chopped off. Use the hAlign and vAlign special properties to control the vertical and horizontal alignment within the cropped area.
    • + *
    • x : Number - Sets the ContentDisplay's x property (for positioning on the stage).
    • + *
    • y : Number - Sets the ContentDisplay's y property (for positioning on the stage).
    • + *
    • scaleX : Number - Sets the ContentDisplay's scaleX property.
    • + *
    • scaleY : Number - Sets the ContentDisplay's scaleY property.
    • + *
    • rotation : Number - Sets the ContentDisplay's rotation property.
    • + *
    • alpha : Number - Sets the ContentDisplay's alpha property.
    • + *
    • visible : Boolean - Sets the ContentDisplay's visible property.
    • + *
    • blendMode : String - Sets the ContentDisplay's blendMode property.
    • + *
    • bgColor : uint - When a width and height are defined, a rectangle will be drawn inside the ContentDisplay immediately in order to ease the development process. It is transparent by default, but you may define a bgAlpha if you prefer.
    • + *
    • bgAlpha : Number - Controls the alpha of the rectangle that is drawn when a width and height are defined.
    • + *
    • volume : Number - A value between 0 and 1 indicating the volume at which the video should play (default is 1).
    • + *
    • repeat : int - Number of times that the video should repeat. To repeat indefinitely, use -1. Default is 0.
    • + *
    • stageVideo : StageVideo - By default, the NetStream gets attached to a Video object, but if you want to use StageVideo in Flash, you can define the stageVideo property and VideoLoader will attach its NetStream to that StageVideo instance instead of the regular Video instance (which is the rawContent). Please read Adobe's docs regarding StageVideo to understand the benefits, tradeoffs and limitations.
    • + *
    • checkPolicyFile : Boolean - If true, the VideoLoader will check for a crossdomain.xml file on the remote host (only useful when loading videos from other domains - see Adobe's docs for details about NetStream's checkPolicyFile property).
    • + *
    • estimatedDuration : Number - Estimated duration of the video in seconds. VideoLoader will only use this value until it receives the necessary metaData from the video in order to accurately determine the video's duration. You do not need to specify an estimatedDuration, but doing so can help make the playProgress and some other values more accurate (until the metaData has loaded). It can also make the progress/bytesLoaded/bytesTotal more accurate when a estimatedDuration is defined, particularly in bufferMode.
    • + *
    • deblocking : int - Indicates the type of filter applied to decoded video as part of post-processing. The default value is 0, which lets the video compressor apply a deblocking filter as needed. See Adobe's flash.media.Video class docs for details.
    • + *
    • bufferMode : Boolean - When true, the loader will report its progress only in terms of the video's buffer which can be very convenient if, for example, you want to display loading progress for the video's buffer or tuck it into a LoaderMax with other loaders and allow the LoaderMax to dispatch its COMPLETE event when the buffer is full instead of waiting for the whole file to download. When bufferMode is true, the VideoLoader will dispatch its COMPLETE event when the buffer is full as opposed to waiting for the entire video to load. You can toggle the bufferMode anytime. Please read the full bufferMode property ASDoc description below for details about how it affects things like bytesTotal.
    • + *
    • autoAdjustBuffer : Boolean If the buffer becomes empty during playback and autoAdjustBuffer is true (the default), it will automatically attempt to adjust the NetStream's bufferTime based on the rate at which the video has been loading, estimating what it needs to be in order to play the rest of the video without emptying the buffer again. This can prevent the annoying problem of video playback start/stopping/starting/stopping on a system tht doesn't have enough bandwidth to adequately buffer the video. You may also set the bufferTime in the constructor's vars parameter to set the initial value.
    • + *
    • autoDetachNetStream : Boolean - If true, the NetStream will only be attached to the Video object (the rawContent) when it is in the display list (on the stage). This conserves memory but it can cause a very brief rendering delay when the content is initially added to the stage (often imperceptible). Also, if you add it to the stage when the videoTime is after its last encoded keyframe, it will render at that last keyframe.
    • + *
    • alternateURL : String - If you define an alternateURL, the loader will initially try to load from its original url and if it fails, it will automatically (and permanently) change the loader's url to the alternateURL and try again. Think of it as a fallback or backup url. It is perfectly acceptable to use the same alternateURL for multiple loaders (maybe a default image for various ImageLoaders for example).
    • + *
    • noCache : Boolean - If noCache is true, a "gsCacheBusterID" parameter will be appended to the url with a random set of numbers to prevent caching (don't worry, this info is ignored when you getLoader() or getContent() by url and when you're running locally)
    • + *
    • estimatedBytes : uint - Initially, the loader's bytesTotal is set to the estimatedBytes value (or LoaderMax.defaultEstimatedBytes if one isn't defined). Then, when the loader begins loading and it can accurately determine the bytesTotal, it will do so. Setting estimatedBytes is optional, but the more accurate the value, the more accurate your loaders' overall progress will be initially. If the loader will be inserted into a LoaderMax instance (for queue management), its auditSize feature can attempt to automatically determine the bytesTotal at runtime (there is a slight performance penalty for this, however - see LoaderMax's documentation for details).
    • + *
    • requireWithRoot : DisplayObject - LoaderMax supports subloading, where an object can be factored into a parent's loading progress. If you want LoaderMax to require this VideoLoader as part of its parent SWFLoader's progress, you must set the requireWithRoot property to your swf's root. For example, var loader:VideoLoader = new VideoLoader("myScript.php", {name:"textData", requireWithRoot:this.root});
    • + *
    • allowMalformedURL : Boolean - Normally, the URL will be parsed and any variables in the query string (like "?name=test&state=il&gender=m") will be placed into a URLVariables object which is added to the URLRequest. This avoids a few bugs in Flash, but if you need to keep the entire URL intact (no parsing into URLVariables), set allowMalformedURL:true. For example, if your URL has duplicate variables in the query string like http://www.greensock.com/?c=S&c=SE&c=SW, it is technically considered a malformed URL and a URLVariables object can't properly contain all the duplicates, so in this case you'd want to set allowMalformedURL to true.
    • + *
    • autoDispose : Boolean - When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false. + * + *

      ----EVENT HANDLER SHORTCUTS----

    • + *
    • onOpen : Function - A handler function for LoaderEvent.OPEN events which are dispatched when the loader begins loading. Make sure your onOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onInit : Function - A handler function for Event.INIT events which will be called when the video's metaData has been received and the video is placed into the ContentDisplay. The INIT event can be dispatched more than once if the NetStream receives metaData more than once (which occasionally happens, particularly with F4V files - the first time often doesn't include the cuePoints). Make sure your onInit function accepts a single parameter of type Event (flash.events.Event).
    • + *
    • onProgress : Function - A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.
    • + *
    • onComplete : Function - A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading successfully. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onCancel : Function - A handler function for LoaderEvent.CANCEL events which are dispatched when loading is aborted due to either a failure or because another loader was prioritized or cancel() was manually called. Make sure your onCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onError : Function - A handler function for LoaderEvent.ERROR events which are dispatched whenever the loader experiences an error (typically an IO_ERROR). An error doesn't necessarily mean the loader failed, however - to listen for when a loader fails, use the onFail special property. Make sure your onError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onFail : Function - A handler function for LoaderEvent.FAIL events which are dispatched whenever the loader fails and its status changes to LoaderStatus.FAILED. Make sure your onFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onIOError : Function - A handler function for LoaderEvent.IO_ERROR events which will also call the onError handler, so you can use that as more of a catch-all whereas onIOError is specifically for LoaderEvent.IO_ERROR events. Make sure your onIOError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    + * @see com.greensock.loading.data.VideoLoaderVars + */ + public function VideoLoader(urlOrRequest:*, vars:Object=null) { + super(urlOrRequest, vars); + _type = "VideoLoader"; + _nc = new NetConnection(); + _nc.connect(null); + _nc.addEventListener("asyncError", _failHandler, false, 0, true); + _nc.addEventListener("securityError", _failHandler, false, 0, true); + + _renderTimer = new Timer(80, 0); + _renderTimer.addEventListener(TimerEvent.TIMER, _renderHandler, false, 0, true); + + _video = new Video(this.vars.width || 320, this.vars.height || 240); + _video.smoothing = Boolean(this.vars.smoothing != false); + _video.deblocking = uint(this.vars.deblocking); + //the video isn't decoded into memory fully until the NetStream is attached to the Video object. We only attach it when it is in the display list (thus can be seen) in order to conserve memory. + _video.addEventListener(Event.ADDED_TO_STAGE, _videoAddedToStage, false, 0, true); + _video.addEventListener(Event.REMOVED_FROM_STAGE, _videoRemovedFromStage, false, 0, true); + + _stageVideo = this.vars.stageVideo; + + _autoDetachNetStream = Boolean(this.vars.autoDetachNetStream == true); + + _refreshNetStream(); + + _duration = isNaN(this.vars.estimatedDuration) ? 200 : Number(this.vars.estimatedDuration); //just set it to a high number so that the progress starts out low. + _bufferMode = _preferEstimatedBytesInAudit = Boolean(this.vars.bufferMode == true); + _videoPaused = _pausePending = Boolean(this.vars.autoPlay == false); + this.autoAdjustBuffer = !(this.vars.autoAdjustBuffer == false); + + this.volume = ("volume" in this.vars) ? Number(this.vars.volume) : 1; + + if (LoaderMax.contentDisplayClass is Class) { + _sprite = new LoaderMax.contentDisplayClass(this); + if (!_sprite.hasOwnProperty("rawContent")) { + throw new Error("LoaderMax.contentDisplayClass must be set to a class with a 'rawContent' property, like com.greensock.loading.display.ContentDisplay"); + } + } else { + _sprite = new ContentDisplay(this); + } + + Object(_sprite).rawContent = null; //so that the video doesn't initially show at the wrong size before the metaData is received at which point we can accurately determine the aspect ratio. + } + + /** @private **/ + protected function _refreshNetStream():void { + if (_ns != null) { + _ns.pause(); + try { + _ns.close(); + } catch (error:Error) { + + } + _sprite.removeEventListener(Event.ENTER_FRAME, _playProgressHandler); + _video.attachNetStream(null); + _video.clear(); + _ns.client = {}; + _ns.removeEventListener(NetStatusEvent.NET_STATUS, _statusHandler); + _ns.removeEventListener("ioError", _failHandler); + _ns.removeEventListener("asyncError", _failHandler); + _ns.removeEventListener(Event.RENDER, _renderHandler); + } + _prevTime = _prevCueTime = 0; + + _ns = (this.vars.netStream is NetStream) ? this.vars.netStream : new NetStream(_nc); + _ns.checkPolicyFile = Boolean(this.vars.checkPolicyFile == true); + _ns.client = {onMetaData:_metaDataHandler}; + + _ns.addEventListener(NetStatusEvent.NET_STATUS, _statusHandler, false, 0, true); + _ns.addEventListener("ioError", _failHandler, false, 0, true); + _ns.addEventListener("asyncError", _failHandler, false, 0, true); + + _ns.bufferTime = isNaN(this.vars.bufferTime) ? 5 : Number(this.vars.bufferTime); + + if (_stageVideo != null) { + _stageVideo.attachNetStream(_ns); + } else if (!_autoDetachNetStream || _video.stage != null) { + _video.attachNetStream(_ns); + } + + _sound = _ns.soundTransform; + } + + /** @private **/ + override protected function _load():void { + _prepRequest(); + _repeatCount = 0; + _prevTime = _prevCueTime = 0; + _bufferFull = _playStarted = _renderedOnce = false; + this.metaData = null; + _pausePending = _videoPaused; + if (_videoPaused) { + _setForceTime(0); + _sound.volume = 0; + _ns.soundTransform = _sound; //temporarily silence the audio because in some cases, the Flash Player will begin playing it for a brief second right before the buffer is full (we can't pause until then) + } else { + this.volume = _volume; //ensures the volume is back to normal in case it had been temporarily silenced while buffering + } + _sprite.addEventListener(Event.ENTER_FRAME, _playProgressHandler); + _sprite.addEventListener(Event.ENTER_FRAME, _loadingProgressCheck); + _waitForRender(); + _videoComplete = _initted = false; + if (this.vars.noCache && (!_isLocal || _url.substr(0, 4) == "http") && _request.data != null) { + var concatChar:String = (_request.url.indexOf("?") != -1) ? "&" : "?"; + _ns.play( _request.url + concatChar + _request.data.toString() ); + } else { + _ns.play(_request.url); + } + } + + /** @private scrubLevel: 0 = cancel, 1 = unload, 2 = dispose, 3 = flush **/ + override protected function _dump(scrubLevel:int=0, newStatus:int=0, suppressEvents:Boolean=false):void { + if (_sprite == null) { + return; //already disposed! + } + _sprite.removeEventListener(Event.ENTER_FRAME, _loadingProgressCheck); + _sprite.removeEventListener(Event.ENTER_FRAME, _playProgressHandler); + _sprite.removeEventListener(Event.ENTER_FRAME, _detachNS); + _sprite.removeEventListener(Event.ENTER_FRAME, _finalFrameFinished); + _ns.removeEventListener(Event.RENDER, _renderHandler); + _renderTimer.stop(); + _forceTime = NaN; + _prevTime = _prevCueTime = 0; + _initted = false; + _renderedOnce = false; + _videoComplete = false; + this.metaData = null; + if (scrubLevel != 2) { + _refreshNetStream(); + (_sprite as Object).rawContent = null; + if (_video.parent != null) { + _video.parent.removeChild(_video); + } + } + + if (scrubLevel >= 2) { + + if (scrubLevel == 3) { + (_sprite as Object).dispose(false, false); + } + + _renderTimer.removeEventListener(TimerEvent.TIMER, _renderHandler); + _nc.removeEventListener("asyncError", _failHandler); + _nc.removeEventListener("securityError", _failHandler); + _ns.removeEventListener(NetStatusEvent.NET_STATUS, _statusHandler); + _ns.removeEventListener("ioError", _failHandler); + _ns.removeEventListener("asyncError", _failHandler); + _video.removeEventListener(Event.ADDED_TO_STAGE, _videoAddedToStage); + _video.removeEventListener(Event.REMOVED_FROM_STAGE, _videoRemovedFromStage); + _firstCuePoint = null; + + (_sprite as Object).gcProtect = (scrubLevel == 3) ? null : _ns; //we need to reference the NetStream in the ContentDisplay before forcing garbage collection, otherwise gc kills the NetStream even if it's attached to the Video and is playing on the stage! + _ns.client = {}; + _video = null; + _ns = null; + _nc.close(); + _nc = null; + _sound = null; + (_sprite as Object).loader = null; + _sprite = null; + _renderTimer = null; + } else { + _duration = isNaN(this.vars.estimatedDuration) ? 200 : Number(this.vars.estimatedDuration); //just set it to a high number so that the progress starts out low. + _videoPaused = _pausePending = Boolean(this.vars.autoPlay == false); + } + super._dump(scrubLevel, newStatus, suppressEvents); + } + + /** @private Set inside ContentDisplay's or FlexContentDisplay's "loader" setter. **/ + public function setContentDisplay(contentDisplay:Sprite):void { + _sprite = contentDisplay; + } + + /** @inheritDoc **/ + override public function addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false):void { + if (type == PLAY_PROGRESS) { + _dispatchPlayProgress = true; + } + super.addEventListener(type, listener, useCapture, priority, useWeakReference); + } + + /** @private **/ + override protected function _calculateProgress():void { + _cachedBytesLoaded = _ns.bytesLoaded; + if (_cachedBytesLoaded > 1) { + if (_bufferMode) { + _cachedBytesTotal = _ns.bytesTotal * (_ns.bufferTime / _duration); + if (_ns.bufferLength > 0) { + _cachedBytesLoaded = (_ns.bufferLength / _ns.bufferTime) * _cachedBytesTotal; + } + } else { + _cachedBytesTotal = _ns.bytesTotal; + } + if (_cachedBytesTotal <= _cachedBytesLoaded) { + _cachedBytesTotal = ((this.metaData != null && _renderedOnce && _initted) || (getTimer() - _time >= 10000)) ? _cachedBytesLoaded : int(1.01 * _cachedBytesLoaded) + 1; //make sure the metaData has been received because if the NetStream file is cached locally sometimes the bytesLoaded == bytesTotal BEFORE the metaData arrives. Or timeout after 10 seconds. + } + if (!_auditedSize) { + _auditedSize = true; + dispatchEvent(new Event("auditedSize")); + } + } + _cacheIsDirty = false; + } + + /** + * Adds an ActionScript cue point. Cue points are only triggered when the video is playing and passes + * the cue point's position in the video (in the forwards direction - they are not triggered when you skip + * to a previous time in the video with gotoVideoTime()). + * + *

    For example, to add a cue point named "coolPart" at the 5-second point of the video, do:

    + * + * +myVideoLoader.addASCuePoint(5, "coolPart", {message:"This is a cool part.", id:5}); +myVideoLoader.addEventListener(VideoLoader.VIDEO_CUE_POINT, cuePointHandler); +function cuePointHandler(event:LoaderEvent):void { + trace("hit cue point " + event.data.name + ", message: " + event.data.parameters.message); +} + + * + * @param time The time (in seconds) at which the cue point should be placed in the video. + * @param name The name of the cue point. It is acceptable to have multiple cue points with the same name. + * @param parameters An object containing any data that you want associated with the cue point. For example, {message:"descriptive text", id:5}. This data can be retrieved in the VIDEO_CUE_POINT handler via the LoaderEvent's data property like event.data.parameters + * @return The cue point that was added + * @see #removeASCuePoint() + * @see #gotoVideoCuePoint() + * @see #getCuePointTime() + */ + public function addASCuePoint(time:Number, name:String="", parameters:Object=null):Object { + var prev:CuePoint = _firstCuePoint; + if (prev != null && prev.time > time) { + prev = null; + } else { + while (prev && prev.time <= time && prev.next && prev.next.time <= time) { + prev = prev.next; + } + } + var cp:CuePoint = new CuePoint(time, name, parameters, prev); + if (prev == null) { + if (_firstCuePoint != null) { + _firstCuePoint.prev = cp; + cp.next = _firstCuePoint; + } + _firstCuePoint = cp; + } + return cp; + } + + /** + * Removes an ActionScript cue point that was added with addASCuePoint(). If multiple ActionScript + * cue points match the search criteria, only one is removed. To remove all, call this function repeatedly in a + * loop with the same parameters until it returns null. + * + * @param timeNameOrCuePoint The time, name or cue point object that should be removed. The method removes the first cue point that matches the criteria. + * @return The cue point that was removed (or null if none were found that match the criteria) + * @see #addASCuePoint() + */ + public function removeASCuePoint(timeNameOrCuePoint:*):Object { + var cp:CuePoint = _firstCuePoint; + while (cp) { + if (cp == timeNameOrCuePoint || cp.time == timeNameOrCuePoint || cp.name == timeNameOrCuePoint) { + if (cp.next) { + cp.next.prev = cp.prev; + } + if (cp.prev) { + cp.prev.next = cp.next; + } else if (cp == _firstCuePoint) { + _firstCuePoint = cp.next; + } + cp.next = cp.prev = null; + cp.gc = true; + return cp; + } + cp = cp.next; + } + return null; + } + + /** + * Finds a cue point by name and returns its corresponding time (where it is positioned in the video). + * All cue points will be included in the search (cue points embedded into the video when it was encoded + * as well as cue points that were added with addASCuePoint()). + * + * @param name The name of the cue point + * @return The cue point's time (NaN if no cue point was found with the specified name) + * @see #addASCuePoint() + * @see #gotoVideoCuePoint() + * @see #gotoVideoTime() + */ + public function getCuePointTime(name:String):Number { + if (this.metaData != null && this.metaData.cuePoints is Array) { + var i:int = this.metaData.cuePoints.length; + while (--i > -1) { + if (name == this.metaData.cuePoints[i].name) { + return Number(this.metaData.cuePoints[i].time); + } + } + } + var cp:CuePoint = _firstCuePoint; + while (cp) { + if (cp.name == name) { + return cp.time; + } + cp = cp.next; + } + return NaN; + } + + /** + * Attempts to jump to a certain cue point (either a cue point that was embedded in the + * video itself when it was encoded or a cue point that was added via addASCuePoint()). + * If the video hasn't downloaded enough to get to the cue point or if there is no keyframe at that + * point in the video, it will get as close as possible. For example, to jump to a cue point + * named "highlight1" and play from there:

    + * + * loader.gotoVideoCuePoint("highlight1", true);

    + * + * @param name The name of the cue point + * @param forcePlay If true, the video will resume playback immediately after seeking to the new position. + * @param skipCuePoints If true (the default), any cue points that are positioned between the current videoTime and the destination cue point will be ignored when moving to the new videoTime. In other words, it is like a record player that has its needle picked up, moved, and dropped into a new position rather than dragging it across the record, triggering the various cue points (if any exist there). IMPORTANT: cue points are only triggered when the time advances in the forward direction; they are never triggered when rewinding or restarting. + * @return The cue point's time (NaN if the cue point wasn't found) + * @see #gotoVideoTime() + * @see #addASCuePoint() + * @see #removeASCuePoint() + */ + public function gotoVideoCuePoint(name:String, forcePlay:Boolean=false, skipCuePoints:Boolean=true):Number { + return gotoVideoTime(getCuePointTime(name), forcePlay, skipCuePoints); + } + + /** + * Pauses playback of the video. + * + * @param event An optional Event which simply makes it easier to use the method as a handler for mouse clicks or other events. + * + * @see #videoPaused + * @see #gotoVideoTime() + * @see #playVideo() + * @see #videoTime + * @see #playProgress + **/ + public function pauseVideo(event:Event=null):void { + this.videoPaused = true; + } + + /** + * Plays the video (if the buffer isn't full yet, playback will wait until the buffer is full). + * + * @param event An optional Event which simply makes it easier to use the method as a handler for mouse clicks or other events. + * + * @see #videoPaused + * @see #pauseVideo() + * @see #gotoVideoTime() + * @see #videoTime + * @see #playProgress + **/ + public function playVideo(event:Event=null):void { + this.videoPaused = false; + } + + /** + * Sets or gets the current repeat count (how many times the video has repeated, as determined + * by the "repeat" special property that was passed into the constructor). If you pass + * a value to the function, it acts as a setter, and if you omit the parameter, it acts as a getter + * and returns the current value. For example, if the video was set to repeat 5 times and it is currently + * in the middle of its 3rd time playing, repeatCount() will return 2 because it has already + * finished playing twice completely. + * + * @param value the value that should be assigned to the current repeat count (or if you omit this parameter, the current repeat count will be returned) + * @return If the value parameter is omitted, it will return the current repeat count (how many times it has completely played and looped back to the beginning). If the function is used as a setter, the VideoLoader instance itself is returned in order to make chaining easier. + */ + public function repeatCount(value:int=0):* { + if (!arguments.length) { + return _repeatCount; + } + if (value < int(this.vars.repeat)) { + _videoComplete = false; + } + _repeatCount = value; + return this; + } + + /** + * Attempts to jump to a certain time in the video. If the video hasn't downloaded enough to get to + * the new time or if there is no keyframe at that time value, it will get as close as possible. + * For example, to jump to exactly 3-seconds into the video and play from there:

    + * + * loader.gotoVideoTime(3, true);

    + * + *

    The VideoLoader's videoTime will immediately reflect the new time, but PLAY_PROGRESS + * event won't be dispatched until the NetStream's time renders at that spot (which can take a frame or so).

    + * + * @param time The time (in seconds, offset from the very beginning) at which to place the virtual playhead on the video. + * @param forcePlay If true, the video will resume playback immediately after seeking to the new position. + * @param skipCuePoints If true (the default), any cue points that are positioned between the current videoTime and the destination time (defined by the time parameter) will be ignored when moving to the new videoTime. In other words, it is like a record player that has its needle picked up, moved, and dropped into a new position rather than dragging it across the record, triggering the various cue points (if any exist there). IMPORTANT: cue points are only triggered when the time advances in the forward direction; they are never triggered when rewinding or restarting. + * @see #pauseVideo() + * @see #playVideo() + * @see #videoTime + * @see #playProgress + **/ + public function gotoVideoTime(time:Number, forcePlay:Boolean=false, skipCuePoints:Boolean=true):Number { + if (isNaN(time) || _ns == null) { + return NaN; + } else if (time > _duration) { + time = _duration; + } + var changed:Boolean = (time != this.videoTime); + if (_initted && _renderedOnce && changed && !_finalFrame) { //don't seek() until metaData has been received otherwise it can prevent it from ever being received. Also, if the NetStream hasn't rendered once and we seek(), it often completely loses its audio! + _seek(time); + } else { + _setForceTime(time); + } + _videoComplete = false; + if (changed) { + if (skipCuePoints) { + _prevCueTime = time; + } else { + _playProgressHandler(null); + } + } + if (forcePlay) { + playVideo(); + } + return time; + } + + /** Clears the video from the rawContent (the Video object). This also works around a bug in Adobe's Video class that prevents clear() from working properly in some versions of the Flash Player (https://bugs.adobe.com/jira/browse/FP-178). Note that this does not detatch the NetStream - it simply deletes the currently displayed image/frame, so you'd want to make sure the video is paused or finished before calling clearVideo(). **/ + public function clearVideo():void { + _video.smoothing = false; //a bug in Adobe's Video class causes it to not fully clear the video unless smoothing is set to false first. https://bugs.adobe.com/jira/browse/FP-178 + _video.clear(); + _video.smoothing = (this.vars.smoothing != false); + _video.clear(); //we need to call it a second time after the smoothing is changed, otherwise it doesn't work in some later versions of the player! + } + + /** @protected **/ + protected function _seek(time:Number):void { + _ns.seek(time); + _setForceTime(time); + if (_bufferFull) { + _bufferFull = false; + dispatchEvent(new LoaderEvent(VIDEO_BUFFER_EMPTY, this)); + } + } + + /** @private **/ + protected function _setForceTime(time:Number):void { + if (!(_forceTime || _forceTime == 0)) { //if _forceTime is already set, the listener was already added (we remove it after 1 frame or after the buffer fills for the first time and metaData is received (whichever takes longer) + _waitForRender(); //if, for example, after a video has finished playing, we seek(0) the video and immediately check the playProgress, it returns 1 instead of 0 because it takes a short time to render the first frame and accurately reflect the _ns.time variable. So we use a single ENTER_FRAME to help us override the _ns.time value briefly. + } + _forceTime = time; + } + + /** @private **/ + protected function _waitForRender():void { + _ns.addEventListener(Event.RENDER, _renderHandler, false, 0, true); //only works in Flash Player 10 and later + _renderTimer.reset(); + _renderTimer.start(); //backup for Flash Player 9 + } + + /** @private **/ + protected function _onBufferFull():void { + if (!_renderedOnce && !_renderTimer.running) { //in Flash Player 9, NetStream doesn't dispatch the RENDER event and the only reliable way I could find to sense when a render truly must have occured is to wait about 50 milliseconds after the buffer fills. Even waiting for an ENTER_FRAME event wouldn't work consistently (depending on the frame rate). Also, depending on the version of Flash that published the swf, the NetStream's NetStream.Buffer.Full status event may not fire (CS3 and CS4)! + _waitForRender(); + return; + } + if (_pausePending) { + if (!_initted && getTimer() - _time < 10000) { + _video.attachNetStream(null); //in some rare circumstances, the NetStream will finish buffering even before the metaData has been received. If we pause() the NetStream before the metaData arrives, it can prevent the metaData from ever arriving (bug in Flash) even after you resume(). So in this case, we allow the NetStream to continue playing so that metaData can be received, but we detach it from the Video object so that the user doesn't see the video playing. The volume is also muted, so to the user things look paused even though the NetStream is continuing to play/load. We'll re-attach the NetStream to the Video after either the metaData arrives or 10 seconds elapse. + } else if (_renderedOnce) { + _applyPendingPause(); + } + } else if (!_bufferFull) { + _bufferFull = true; + dispatchEvent(new LoaderEvent(VIDEO_BUFFER_FULL, this)); + } + } + + /** @private **/ + protected function _applyPendingPause():void { + _pausePending = false; + this.volume = _volume; //Just resets the volume to where it should be because we temporarily made it silent during the buffer. + _seek(_forceTime || 0); + if (_stageVideo != null) { + _stageVideo.attachNetStream(_ns); + _ns.pause(); + } else if (!_autoDetachNetStream || _video.stage != null) { + _video.cacheAsBitmap = false; //works around an odd bug in Flash that can cause the video not to render when it is attached and paused immediately. + _video.attachNetStream(_ns); //in case it was removed + _ns.pause(); //If we pause() the NetStream when it isn't attached to the _video, a bug in Flash causes it to act like it continues playing!!! + } + } + + /** @private **/ + protected function _forceInit():void { + if (_ns.bufferTime >= _duration) { + _ns.bufferTime = uint(_duration - 1); + } + _initted = true; + if (!_bufferFull && _ns.bufferLength >= _ns.bufferTime) { + _onBufferFull(); + } + Object(_sprite).rawContent = _video; //resizes it appropriately + if (!_bufferFull && _pausePending && _renderedOnce && _video.stage != null) { + _video.attachNetStream(null); //if the NetStream is still buffering, there's a good chance that the video will appear to play briefly right before we pause it, so we detach the NetStream from the Video briefly to avoid that funky visual behavior (we attach it again as soon as it buffers). + } else if (_stageVideo != null) { + _stageVideo.attachNetStream(_ns); + } else if (!_autoDetachNetStream || _video.stage != null) { + _video.attachNetStream(_ns); + } + } + + +//---- EVENT HANDLERS ------------------------------------------------------------------------------------ + + /** @private **/ + protected function _metaDataHandler(info:Object):void { + if (this.metaData == null || this.metaData.cuePoints == null) { //sometimes videos will trigger the onMetaData multiple times (especially F4V files) and occassionally the last call doesn't contain cue point data! + this.metaData = info; + } + //due to buggy behavior in Flash's NetStream that sometimes causes cue point events to be triggered multiple times and/or at the wrong time, we convert embedded cue points into ActionScript cue points so that we can make everything consistent. + if (this.metaData.cuePoints) { + var a:Array = this.metaData.cuePoints, + i:int = a.length; + while (--i > -1) { + this.removeASCuePoint(a[i].name); //in case it was already added. There's buggy behavior in Flash's NetStream that causes it to sometimes receive its metaData twice! + this.addASCuePoint(a[i].time, a[i].name); + } + } + _duration = info.duration; + if ("width" in info) { + _video.width = Number(info.width); + _video.height = Number(info.height); + } + if ("framerate" in info) { + _renderTimer.delay = int(1000 / Number(info.framerate) + 1); + } + if (!_initted) { + _forceInit(); + } else { + (_sprite as Object).rawContent = _video; //on rare occasions, _metaDataHandler() is called twice by the NeStream (particularly for F4V files) and the 2nd call contains more data than the first, so just in case the width/height changed, we set the rawContent of the ContentDisplay to make sure things render according to the correct size. + } + dispatchEvent(new LoaderEvent(LoaderEvent.INIT, this, "", info)); + } + + /** @private **/ + protected function _playProgressHandler(event:Event):void { + if (!_bufferFull && !_videoComplete && (_ns.bufferLength >= _ns.bufferTime || this.duration - this.videoTime - _ns.bufferLength < 0.1)) { //remember, bufferLength could be less than bufferTime if videoTime is towards the end of the video and there's less time remaining to play than there is bufferTime. + _onBufferFull(); + } + if (_bufferFull && (_firstCuePoint || _dispatchPlayProgress)) { + var prevTime:Number = _prevTime, + prevCueTime:Number = _prevCueTime; + _prevTime = _prevCueTime = ((_forceTime || _forceTime == 0) && _ns.time <= _duration) ? _ns.time : this.videoTime; //note: isNaN(_forceTime) is much slower than !(_forceTime || _forceTime == 0) + var next:CuePoint, + cp:CuePoint = _firstCuePoint; + while (cp) { + next = cp.next; + if (cp.time > prevCueTime && cp.time <= _prevCueTime && !cp.gc) { + dispatchEvent(new LoaderEvent(VIDEO_CUE_POINT, this, "", cp)); + } + cp = next; + } + if (_dispatchPlayProgress && prevTime != _prevTime) { + dispatchEvent(new LoaderEvent(PLAY_PROGRESS, this)); + } + } + } + + /** @private **/ + protected function _statusHandler(event:NetStatusEvent):void { + var code:String = event.info.code; + if (code == "NetStream.Play.Start" && !_playStarted) { //remember, NetStream.Play.Start can be received BEFORE the buffer is full. + _playStarted = true; + if (!_pausePending) { + dispatchEvent(new LoaderEvent(VIDEO_PLAY, this)); + } + } + dispatchEvent(new LoaderEvent(NetStatusEvent.NET_STATUS, this, code, event.info)); + if (code == "NetStream.Play.Stop") { + if (_videoPaused) { + return; //Can happen when we seek() to a time in the video between the last keyframe and the end of the video file - NetStream.Play.Stop gets received even though the NetStream was paused. + } + _finalFrame = true; + _sprite.addEventListener(Event.ENTER_FRAME, _finalFrameFinished, false, 100, true); + if (this.vars.repeat == -1 || uint(this.vars.repeat) > _repeatCount) { + _repeatCount++; + dispatchEvent(new LoaderEvent(VIDEO_COMPLETE, this)); + gotoVideoTime(0, !_videoPaused, true); + } else { + _videoComplete = true; + this.videoPaused = true; + _playProgressHandler(null); + dispatchEvent(new LoaderEvent(VIDEO_COMPLETE, this)); + } + } else if (code == "NetStream.Buffer.Full") { + _onBufferFull(); + } else if (code == "NetStream.Seek.Notify") { + if (!_autoDetachNetStream && !isNaN(_forceTime)) { + _renderHandler(null); //note: do not _ns.pause() here when the NetStream isn't attached to the _video because a bug in Flash will prevent it from working (just when this NetStreamEvent occurs!) + } + //previously called _playProgressHandler(null) but a bug in NetStream often causes its time property not to report its correct (new) position yet, so we just wait to call _playProgressHandler() until the next frame. + } else if (code == "NetStream.Seek.InvalidTime" && "details" in event.info) { + _seek(event.info.details); + } else if (code == "NetStream.Buffer.Empty" && !_videoComplete) { + var videoRemaining:Number = this.duration - this.videoTime; + var prevBufferMode:Boolean = _bufferMode; + _bufferMode = false; //make sure bufferMode is false so that when we check progress, it gives us the data we need. + _cacheIsDirty = true; + var prog:Number = this.progress; + _bufferMode = prevBufferMode; + _cacheIsDirty = true; + if (prog == 1) { + //sometimes NetStream dispatches a "NetStream.Buffer.Empty" NetStatusEvent right before it finishes playing in which case we can deduce that the buffer isn't really empty. + return; + } + var loadRemaining:Number = (1 / prog) * this.loadTime; + var revisedBufferTime:Number = videoRemaining * (1 - (videoRemaining / loadRemaining)) * 0.9; //90% of the estimated time because typically you'd want the video to start playing again sooner and the 10% might be made up while it's playing anyway. + if (this.autoAdjustBuffer && loadRemaining > videoRemaining) { + _ns.bufferTime = revisedBufferTime; + } + _bufferFull = false; + dispatchEvent(new LoaderEvent(VIDEO_BUFFER_EMPTY, this)); + } else if (code == "NetStream.Play.StreamNotFound" || + code == "NetConnection.Connect.Failed" || + code == "NetStream.Play.Failed" || + code == "NetStream.Play.FileStructureInvalid" || + code == "The MP4 doesn't contain any supported tracks") { + _failHandler(new LoaderEvent(LoaderEvent.ERROR, this, code)); + } + } + + /** @private **/ + protected function _finalFrameFinished(event:Event):void { + _sprite.removeEventListener(Event.ENTER_FRAME, _finalFrameFinished); + _finalFrame = false; + if (!isNaN(_forceTime)) { + _seek(_forceTime); + } + } + + /** @private **/ + protected function _loadingProgressCheck(event:Event):void { + var bl:uint = _cachedBytesLoaded; + var bt:uint = _cachedBytesTotal; + if (!_bufferFull && _ns.bufferLength >= _ns.bufferTime) { + _onBufferFull(); + } + _calculateProgress(); + if (_cachedBytesLoaded == _cachedBytesTotal) { + _sprite.removeEventListener(Event.ENTER_FRAME, _loadingProgressCheck); + if (!_bufferFull) { + _onBufferFull(); + } + if (_initted) { + _completeHandler(event); + } else { + setTimeout(function() { + if (!_initted) { + _forceInit(); + _errorHandler(new LoaderEvent(LoaderEvent.ERROR, this, "No metaData was received.")); + } + _completeHandler(event); + }, 100); + } + + } else if (_dispatchProgress && (_cachedBytesLoaded / _cachedBytesTotal) != (bl / bt)) { + dispatchEvent(new LoaderEvent(LoaderEvent.PROGRESS, this)); + } + } + + /** @inheritDoc + * Flash has a bug/inconsistency that causes NetStreams to load relative URLs as being relative to the swf file itself + * rather than relative to the HTML file in which it is embedded (all other loaders exhibit the opposite behavior), so + * we need to make sure the audits use NetStreams instead of URLStreams (for relative urls at least). + **/ + override public function auditSize():void { + if (_url.substr(0, 4) == "http" && _url.indexOf("://") != -1) { //if the url isn't relative, use the regular URLStream to do the audit because it's faster/more efficient. + super.auditSize(); + } else if (_auditNS == null) { + _auditNS = new NetStream(_nc); + _auditNS.bufferTime = isNaN(this.vars.bufferTime) ? 5 : Number(this.vars.bufferTime); + _auditNS.client = {onMetaData:_auditHandler, onCuePoint:_auditHandler}; + _auditNS.addEventListener(NetStatusEvent.NET_STATUS, _auditHandler, false, 0, true); + _auditNS.addEventListener("ioError", _auditHandler, false, 0, true); + _auditNS.addEventListener("asyncError", _auditHandler, false, 0, true); + _auditNS.soundTransform = new SoundTransform(0); + var request:URLRequest = new URLRequest(); + request.data = _request.data; + _setRequestURL(request, _url, (!_isLocal || _url.substr(0, 4) == "http") ? "gsCacheBusterID=" + (_cacheID++) + "&purpose=audit" : ""); + _auditNS.play(request.url); + } + } + + /** @private **/ + protected function _auditHandler(event:Event=null):void { + var type:String = (event == null) ? "" : event.type; + var code:String = (event == null || !(event is NetStatusEvent)) ? "" : NetStatusEvent(event).info.code; + if (event != null && "duration" in event) { + _duration = Object(event).duration; + } + if (_auditNS != null) { + _cachedBytesTotal = _auditNS.bytesTotal; + if (_bufferMode && _duration != 0) { + _cachedBytesTotal *= (_auditNS.bufferTime / _duration); + } + } + if (type == "ioError" || + type == "asyncError" || + code == "NetStream.Play.StreamNotFound" || + code == "NetConnection.Connect.Failed" || + code == "NetStream.Play.Failed" || + code == "NetStream.Play.FileStructureInvalid" || + code == "The MP4 doesn't contain any supported tracks") { + if (this.vars.alternateURL != undefined && this.vars.alternateURL != "" && this.vars.alternateURL != _url) { + _errorHandler(new LoaderEvent(LoaderEvent.ERROR, this, code)); + if (_status != LoaderStatus.DISPOSED) { //it is conceivable that the user disposed the loader in an onError handler + _url = this.vars.alternateURL; + _setRequestURL(_request, _url); + var request:URLRequest = new URLRequest(); + request.data = _request.data; + _setRequestURL(request, _url, (!_isLocal || _url.substr(0, 4) == "http") ? "gsCacheBusterID=" + (_cacheID++) + "&purpose=audit" : ""); + _auditNS.play(request.url); + } + return; + } else { + //note: a CANCEL event won't be dispatched because technically the loader wasn't officially loading - we were only briefly checking the bytesTotal with a NetStream. + super._failHandler(new LoaderEvent(LoaderEvent.ERROR, this, code)); + } + } + _auditedSize = true; + _closeStream(); + dispatchEvent(new Event("auditedSize")); + } + + /** @private **/ + override protected function _closeStream():void { + if (_auditNS != null) { + _auditNS.client = {}; + _auditNS.removeEventListener(NetStatusEvent.NET_STATUS, _auditHandler); + _auditNS.removeEventListener("ioError", _auditHandler); + _auditNS.removeEventListener("asyncError", _auditHandler); + _auditNS.pause(); + try { + _auditNS.close(); + } catch (error:Error) { + + } + _auditNS = null; + } else { + super._closeStream(); + } + } + + /** @private **/ + override protected function _auditStreamHandler(event:Event):void { + if (event is ProgressEvent && _bufferMode) { + (event as ProgressEvent).bytesTotal *= (_ns.bufferTime / _duration); + } + super._auditStreamHandler(event); + } + + /** @private **/ + protected function _renderHandler(event:Event):void { + _renderedOnce = true; + if (!_videoPaused || _initted) if (!_finalFrame) { //if the video hasn't initted yet and it's paused, keep reporting the _forceTime and let the _renderTimer keep calling until the condition is no longer met. + _forceTime = NaN; + _renderTimer.stop(); + _ns.removeEventListener(Event.RENDER, _renderHandler); + } + if (_pausePending) { + if (_bufferFull) { + _applyPendingPause(); + } else if (_video.stage != null) { + //if the NetStream is still buffering, there's a good chance that the video will appear to play briefly right before we pause it, so we detach the NetStream from the Video briefly to avoid that funky visual behavior (we attach it again as soon as it buffers). + //we cannot do _video.attachNetStream(null) here (within this RENDER handler) because it causes Flash Pro to crash! We must wait for an ENTER_FRAME event. + _sprite.addEventListener(Event.ENTER_FRAME, _detachNS, false, 100, true); + } + } else if (_videoPaused && _initted) { + _ns.pause(); + } + } + + /** @private see notes in _renderHandler() **/ + private function _detachNS(event:Event):void { + _sprite.removeEventListener(Event.ENTER_FRAME, _detachNS); + if (!_bufferFull && _pausePending) { + _video.attachNetStream(null); //if the NetStream is still buffering, there's a good chance that the video will appear to play briefly right before we pause it, so we detach the NetStream from the Video briefly to avoid that funky visual behavior (we attach it again as soon as it buffers). + } + } + + /** @private The video isn't decoded into memory fully until the NetStream is attached to the Video object. We only attach it when it is in the display list (thus can be seen) in order to conserve memory. **/ + protected function _videoAddedToStage(event:Event):void { + if (_autoDetachNetStream) { + if (!_pausePending) { + _seek(this.videoTime); //a bug in Flash prevents the video from rendering visually unless we seek() when we attachNetStream() + } + if (_stageVideo != null) { + _stageVideo.attachNetStream(_ns); + } else { + _video.attachNetStream(_ns); + } + } + } + + /** @private **/ + protected function _videoRemovedFromStage(event:Event):void { + if (_autoDetachNetStream) { + _video.attachNetStream(null); + _video.clear(); + } + } + + +//---- GETTERS / SETTERS ------------------------------------------------------------------------- + + /** A ContentDisplay (a Sprite) that contains a Video object to which the NetStream is attached. This ContentDisplay Sprite can be accessed immediately; you do not need to wait for the video to load. **/ + override public function get content():* { + return _sprite; + } + + /** The Video object to which the NetStream was attached (automatically created by VideoLoader internally) **/ + public function get rawContent():Video { + return _video; + } + + /** The NetStream object used to load the video **/ + public function get netStream():NetStream { + return _ns; + } + + /** The playback status of the video: true if the video's playback is paused, false if it isn't. **/ + public function get videoPaused():Boolean { + return _videoPaused; + } + public function set videoPaused(value:Boolean):void { + var changed:Boolean = Boolean(value != _videoPaused); + _videoPaused = value; + if (_videoPaused) { + //If we're trying to pause a NetStream that hasn't even been buffered yet, we run into problems where it won't load. So we need to set the _pausePending to true and then when it's buffered, it'll pause it at the beginning. + if (!_renderedOnce) { + _setForceTime(0); + _pausePending = true; + _sound.volume = 0; //temporarily make it silent while buffering. + _ns.soundTransform = _sound; + } else { + _pausePending = false; + this.volume = _volume; //Just resets the volume to where it should be in case we temporarily made it silent during the buffer. + _ns.pause(); + } + if (changed) { + //previously, we included _sprite.removeEventListener(Event.ENTER_FRAME, _playProgressHandler) but discovered it was better to leave it running in order to work around a bug in Adobe's NetStream that causes it not to accurately report its time even when the NetStatusEvent is dispatched with the code "NetStream.Seek.Notify". Consequently, when the VideoLoader was paused and the videoProgress was changed or gotoVideoTime() was called, the PLAY_PROGRESS event would be dispatched before the NetStream.time arrived where it was supposed to be. + dispatchEvent(new LoaderEvent(VIDEO_PAUSE, this)); + } + } else { + if (_pausePending || !_bufferFull) { + if (_stageVideo != null) { + _stageVideo.attachNetStream(_ns); + } else if (_video.stage != null) { + _video.attachNetStream(_ns); //in case we had to detach it while buffering and waiting for the metaData + } + //if we don't seek() first, sometimes the NetStream doesn't attach to the video properly! + //if we don't seek() first and the NetStream was previously rendered between its last keyframe and the end of the file, the "NetStream.Play.Stop" will have been called and it will refuse to continue playing even after resume() is called! + //if we seek() before the metaData has been received (_initted==true), it typically prevents it from being received at all! + //if we seek() before the NetStream has rendered once, it can lose audio completely! + if (_initted && _renderedOnce) { + _seek(this.videoTime); + } + _pausePending = false; + } + this.volume = _volume; //Just resets the volume to where it should be in case we temporarily made it silent during the buffer. + _ns.resume(); + if (changed && _playStarted) { + dispatchEvent(new LoaderEvent(VIDEO_PLAY, this)); + } + } + } + + /** A value between 0 and 1 describing the progress of the buffer (0 = not buffered at all, 0.5 = halfway buffered, and 1 = fully buffered). The buffer progress is in relation to the bufferTime which is 5 seconds by default or you can pass a custom value in through the vars parameter in the constructor like {bufferTime:20}. **/ + public function get bufferProgress():Number { + if (uint(_ns.bytesTotal) < 5) { + return 0; + } + return (_ns.bufferLength > _ns.bufferTime) ? 1 : _ns.bufferLength / _ns.bufferTime; + } + + /** A value between 0 and 1 describing the playback progress where 0 means the virtual playhead is at the very beginning of the video, 0.5 means it is at the halfway point and 1 means it is at the end of the video. **/ + public function get playProgress():Number { + //Often times the duration MetaData that gets passed in doesn't exactly reflect the duration, so after the FLV is finished playing, the time and duration wouldn't equal each other, so we'd get percentPlayed values of 99.26978. We have to use this _videoComplete variable to accurately reflect the status. + //If for example, after an FLV has finished playing, we gotoVideoTime(0) the FLV and immediately check the playProgress, it returns 1 instead of 0 because it takes a short time to render the first frame and accurately reflect the _ns.time variable. So we use an interval to help us override the _ns.time value briefly. + return (_videoComplete) ? 1 : (this.videoTime / _duration); + } + public function set playProgress(value:Number):void { + if (_duration != 0) { + gotoVideoTime((value * _duration), !_videoPaused, true); + } + } + + /** The volume of the video (a value between 0 and 1). **/ + public function get volume():Number { + return _volume; + } + public function set volume(value:Number):void { + _sound.volume = _volume = value; + _ns.soundTransform = _sound; + } + + /** The soundTransform of the NetStream associated with the VideoLoader (this gets refreshed when the VideoLoader is unloaded or reloaded). **/ + public function get soundTransform():SoundTransform { + return _sound; + } + public function set soundTransform(value:SoundTransform):void { + _ns.soundTransform = _sound = value; + } + + /** The time (in seconds) at which the virtual playhead is positioned on the video. For example, if the virtual playhead is currently at the 3-second position (3 seconds from the beginning), this value would be 3. **/ + public function get videoTime():Number { + if (_forceTime || _forceTime == 0) { + return _forceTime; + } else if (_videoComplete) { + return _duration; + } else if (_ns.time > _duration) { + return _duration * 0.995; //sometimes the NetStream reports a time that's greater than the duration so we must correct for that. + } else { + return _ns.time; + } + } + public function set videoTime(value:Number):void { + gotoVideoTime(value, !_videoPaused, true); + } + + /** The duration (in seconds) of the video. This value is only accurate AFTER the metaData has been received and the INIT event has been dispatched. **/ + public function get duration():Number { + return _duration; + } + + /** + * When bufferMode is true, the loader will report its progress only in terms of the + * video's buffer instead of its overall file loading progress which has the following effects: + *
      + *
    • The bytesTotal will be calculated based on the NetStream's duration, bufferLength, and bufferTime meaning it may fluctuate in order to accurately reflect the overall progress ratio.
    • + *
    • Its COMPLETE event will be dispatched as soon as the buffer is full, so if the VideoLoader is nested in a LoaderMax, the LoaderMax will move on to the next loader in its queue at that point. However, the VideoLoader's NetStream will continue to load in the background, using up bandwidth.
    • + *
    + * + *

    This can be very convenient if, for example, you want to display loading progress based on the video's buffer + * or if you want to load a series of loaders in a LoaderMax and have it fire its COMPLETE event + * when the buffer is full (as opposed to waiting for the entire video to load).

    + **/ + public function get bufferMode():Boolean { + return _bufferMode; + } + public function set bufferMode(value:Boolean):void { + _bufferMode = value; + _preferEstimatedBytesInAudit = _bufferMode; + _calculateProgress(); + if (_cachedBytesLoaded < _cachedBytesTotal && _status == LoaderStatus.COMPLETED) { + _status = LoaderStatus.LOADING; + _sprite.addEventListener(Event.ENTER_FRAME, _loadingProgressCheck); + } + } + + /** If true (the default), the NetStream will only be attached to the Video object (the rawContent) when it is in the display list (on the stage). This conserves memory but it can cause a very brief rendering delay when the content is initially added to the stage (often imperceptible). Also, if you add it to the stage when the videoTime is after its last encoded keyframe, it will render at that last keyframe. **/ + public function get autoDetachNetStream():Boolean { + return _autoDetachNetStream; + } + public function set autoDetachNetStream(value:Boolean):void { + _autoDetachNetStream = value; + if (_autoDetachNetStream && _video.stage == null) { + _video.attachNetStream(null); + _video.clear(); + } else if (_stageVideo != null) { + _stageVideo.attachNetStream(_ns); + } else { + _video.attachNetStream(_ns); + } + } + + /** By default, the NetStream gets attached to a Video object, but if you want to use StageVideo in Flash, you can define the stageVideo object and VideoLoader will attach its NetStream to that StageVideo instance instead of the regular Video instance (which is the rawContent). Please read Adobe's docs regarding StageVideo to understand the tradeoffs and limitations. Note: the data type is Object instead of StageVideo in order to make VideoLoader compatible with Flash Player 9 and 10. Otherwise, you wouldn't be able to publish to those players because StageVideo was introduced in a later version. **/ + public function get stageVideo():Object { + return _stageVideo; + } + public function set stageVideo(value:Object):void { + if (_stageVideo != value) { + _stageVideo = value; + if (_stageVideo != null) { + _stageVideo.attachNetStream(_ns); + _video.clear(); + } else { + _video.attachNetStream(_ns); + } + } + } + + } +} + +/** @private for the linked list of cue points - makes processing very fast. **/ +internal class CuePoint { + public var next:CuePoint; + public var prev:CuePoint; + public var time:Number; + public var name:String; + public var parameters:Object; + public var gc:Boolean; + + public function CuePoint(time:Number, name:String, params:Object, prev:CuePoint) { + this.time = time; + this.name = name; + this.parameters = params; + if (prev) { + this.prev = prev; + if (prev.next) { + prev.next.prev = this; + this.next = prev.next; + } + prev.next = this; + } + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/loading/XMLLoader.as b/FairyGUI-as3/src/com/greensock/loading/XMLLoader.as new file mode 100644 index 0000000..e0e8f40 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/loading/XMLLoader.as @@ -0,0 +1,645 @@ +/** + * VERSION: 1.934 + * DATE: 2013-02-28 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/loadermax/ + **/ +package com.greensock.loading { + import com.greensock.events.LoaderEvent; + import com.greensock.loading.core.LoaderCore; + + import flash.events.Event; + import flash.system.ApplicationDomain; + import flash.system.LoaderContext; + import flash.system.SecurityDomain; + import flash.utils.getTimer; + + /** Dispatched when the XML finishes loading and its contents are parsed (creating any dynamic XML-driven loader instances necessary). If any dynamic loaders are created and have a load="true" attribute, they will begin loading at this point and the XMLLoader's COMPLETE will not be dispatched until the loaders have completed as well. **/ + [Event(name="init", type="com.greensock.events.LoaderEvent")] + /** Dispatched when any loader that the XMLLoader discovered in the XML dispatches an OPEN event. **/ + [Event(name="childOpen", type="com.greensock.events.LoaderEvent")] + /** Dispatched when any loader that the XMLLoader discovered in the XML dispatches a PROGRESS event. **/ + [Event(name="childProgress", type="com.greensock.events.LoaderEvent")] + /** Dispatched when any loader that the XMLLoader discovered in the XML dispatches a COMPLETE event. **/ + [Event(name="childComplete", type="com.greensock.events.LoaderEvent")] + /** Dispatched when any loader that the XMLLoader discovered in the XML dispatches a FAIL event. **/ + [Event(name="childFail", type="com.greensock.events.LoaderEvent")] + /** Dispatched when any loader that the XMLLoader discovered in the XML dispatches a CANCEL event. **/ + [Event(name="childCancel", type="com.greensock.events.LoaderEvent")] + /** Dispatched when any loader that the XMLLoader discovered in the XML dispatches a SCRIPT_ACCESS_DENIED event. **/ + [Event(name="scriptAccessDenied", type="com.greensock.events.LoaderEvent")] + /** Dispatched when the loader's httpStatus value changes. **/ + [Event(name="httpStatus", type="com.greensock.events.LoaderEvent")] + /** Dispatched when the loader experiences a SECURITY_ERROR which can occur when the XML file is loaded from another domain and there is no crossdomain.xml file in place granting appropriate access. **/ + [Event(name="securityError", type="com.greensock.events.LoaderEvent")] +/** + * Loads an XML file and automatically searches it for LoaderMax-related nodes like <LoaderMax>, + * <ImageLoader>, <SWFLoader>, <XMLLoader>, <DataLoader> <CSSLoader>, <MP3Loader>, + * etc.; if it finds any, it will create the necessary instances and begin loading them if they have a load="true" + * attribute. The XMLLoader's progress will automatically factor in the dynamically-created + * loaders that have the load="true" attribute and it won't dispatch its COMPLETE event + * until those loaders have completed as well (unless integrateProgress:false is passed to the constructor). + * For example, let's say the XML file contains the following XML: + * + * Example XML code:+<?xml version="1.0" encoding="iso-8859-1"?> +<data> + <widget name="myWidget1" id="10"> + <ImageLoader name="widget1" url="img/widget1.jpg" estimatedBytes="2000" /> + </widget> + <widget name="myWidget2" id="23"> + <ImageLoader name="widget2" url="img/widget2.jpg" estimatedBytes="2800" load="true" /> + </widget> + <LoaderMax name="dynamicLoaderMax" load="true" prependURLs="http://www.greensock.com/"> + <ImageLoader name="photo1" url="img/photo1.jpg" /> + <ImageLoader name="logo" url="img/corporate_logo.png" estimatedBytes="2500" /> + <SWFLoader name="mainSWF" url="swf/main.swf" autoPlay="false" estimatedBytes="15000" /> + <MP3Loader name="audio" url="mp3/intro.mp3" autoPlay="true" loops="100" /> + </LoaderMax> +</data> + + * + *

    Once the XML has been loaded and parsed, the XMLLoader will recognize the 7 LoaderMax-related nodes + * (assuming you activated the various types of loaders - see the activate() method for details) + * and it will create instances dynamically. Then it will start loading the ones that had a load="true" + * attribute which in this case means all but the first loader will be loaded in the order they were defined in the XML. + * Notice the loaders nested inside the <LoaderMax> don't have load="true" but + * they will be loaded anyway because their parent LoaderMax has the load="true" attribute. + * After the XMLLoader's INIT event is dispatched, you can get any loader by name or URL with the + * LoaderMax.getLoader() method and monitor its progress or control it as you please. + * And after the XMLLoader's COMPLETE event is dispatched, you can use LoaderMax.getContent() + * to get content based on the name or URL of any of the loaders that had load="true" defined + * in the XML. For example:

    + * + * Example AS3 code:+var loader:XMLLoader = new XMLLoader("xml/doc.xml", {name:"xmlDoc", onComplete:completeHandler}); + +function completeHandler(event:LoaderEvent):void { + + //get the content from the "photo1" ImageLoader that was defined inside the XML + var photo:ContentDisplay = LoaderMax.getContent("photo1"); + + //add it to the display list + addChild(photo); + + //fade it in + TweenLite.from(photo, 1, {alpha:0}); +} + + * + *

    You do not need to put loader-related nodes in your XML files. It is a convenience that is completely + * optional. XMLLoader does a great job of loading plain XML data even without the fancy automatic parsing of + * loader data.

    + * + *

    You may put extra data in the LoaderMax-related nodes that you'd like associated with that particular + * loader. XMLLoader will put all of the attributes from the XML node into the vars object of + * the resulting loader as well as an extra rawXML property which will contain the raw XML + * for that node. For example, if this node is in your XML document:

    +... +<VideoLoader url="video.flv" name="video1" description="Hidden dangers of steel wool" autoPlay="false"> + <links> + <link url="http://www.greensock.com" title="GreenSock" /> + <link url="http://www.google.com" title="Google" /> + </links> +</VideoLoader> +... + + * + *

    Notice the "description" attribute which isn't a LoaderMax-specific property. XMLLoader will still + * put that value into the VideoLoader's vars property and create a rawXML + * property there that contains the whole XML node (including the children) so that you can easily get + * whatever data you need like this:

    + * +function completeHandler(event:LoaderEvent):void { + var video:VideoLoader = LoaderMax.getLoader("video1"); + var description:String = video.vars.description; + var xml:XML = video.vars.rawXML; + trace("first link url: " + xml.links[0].link[0].@url); //traces "first link url: http://www.greensock.com" +} + + * + *

    Since XML is essentially text/string data, you cannot reference functions. Therefore it isn't possible + * to define onComplete, onInit, onError, etc. listeners inside XML. You can, however, add those via ActionScript once + * the XMLLoader has parsed the loaders. Simply use the standard addEventListener() method for that.

    + * + *

    OPTIONAL VARS PROPERTIES

    + *

    The following special properties can be passed into the XMLLoader constructor via its vars + * parameter which can be either a generic object or an XMLLoaderVars object:

    + *
      + *
    • name : String - A name that is used to identify the XMLLoader instance. This name can be fed to the LoaderMax.getLoader() or LoaderMax.getContent() methods or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21".
    • + *
    • integrateProgress : Boolean - By default, the XMLLoader will automatically look for LoaderMax-related nodes like <LoaderMax>, <ImageLoader>, <SWFLoader>, <XMLLoader>, <MP3Loader>, <DataLoader>, and <CSSLoader> inside the XML when it inits. If it finds any that have a load="true" attribute, it will begin loading them and integrate their progress into the XMLLoader's overall progress. Its COMPLETE event won't fire until all of these loaders have completed as well. If you prefer NOT to integrate the dynamically-created loader instances into the XMLLoader's overall progress, set integrateProgress to false.
    • + *
    • alternateURL : String - If you define an alternateURL, the loader will initially try to load from its original url and if it fails, it will automatically (and permanently) change the loader's url to the alternateURL and try again. Think of it as a fallback or backup url. It is perfectly acceptable to use the same alternateURL for multiple loaders (maybe a default image for various ImageLoaders for example).
    • + *
    • noCache : Boolean - If noCache is true, a "gsCacheBusterID" parameter will be appended to the url with a random set of numbers to prevent caching (don't worry, this info is ignored when you getLoader() or getContent() by url and when you're running locally)
    • + *
    • estimatedBytes : uint - Initially, the loader's bytesTotal is set to the estimatedBytes value (or LoaderMax.defaultEstimatedBytes if one isn't defined). Then, when the XML has been loaded and analyzed enough to determine the size of any dynamic loaders that were found in the XML data (like <ImageLoader> nodes, etc.), it will adjust the bytesTotal accordingly. Setting estimatedBytes is optional, but it provides a way to avoid situations where the progress and bytesTotal values jump around as XMLLoader recognizes nested loaders in the XML and audits their size. The estimatedBytes value should include all nested loaders as well, so if your XML file itself is 500 bytes and you have 3 <ImageLoader> tags with load="true" and each image is about 2000 bytes, your XMLLoader's estimatedBytes should be 6500. The more accurate the value, the more accurate the loaders' overall progress will be.
    • + *
    • requireWithRoot : DisplayObject - LoaderMax supports subloading, where an object can be factored into a parent's loading progress. If you want LoaderMax to require this XMLLoader as part of its parent SWFLoader's progress, you must set the requireWithRoot property to your swf's root. For example, var loader:XMLLoader = new XMLLoader("data.xml", {name:"data", requireWithRoot:this.root});
    • + *
    • autoDispose : Boolean - When autoDispose is true, the loader (and its children) will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false.
    • + *
    • prependURLs : String - A String that should be prepended to all parsed LoaderMax-related loader URLs (from nodes like <ImageLoader>, <XMLLoader>, etc.) as soon as the XML has been parsed. For example, if your XML has the following node: <ImageLoader url="1.jpg" /> and prependURLs is set to "../images/", then the ImageLoader's url will end up being "../images/1.jpg". prependURLs affects ALL parsed loaders in the XML. However, if you have an <XMLLoader> node inside your XML that also loads another XML doc and you'd like to recursively prepend all of the URLs in this loader's XML as well as the subloading one and all of its children, use recursivePrependURLs instead of prependURLs.
    • + *
    • maxConnections : uint - Maximum number of simultaneous connections that should be used while loading child loaders that were parsed from the XML and had their "load" attribute set to "true" (like <ImageLoader url="1.jpg" load="true" />). A higher number will generally result in faster overall load times for the group. The default is 2. Sometimes there are limits imposed by the Flash Player itself or the browser or the user's system, but LoaderMax will do its best to honor the maxConnections you define.
    • + *
    • allowMalformedURL : Boolean - Normally, the URL will be parsed and any variables in the query string (like "?name=test&state=il&gender=m") will be placed into a URLVariables object which is added to the URLRequest. This avoids a few bugs in Flash, but if you need to keep the entire URL intact (no parsing into URLVariables), set allowMalformedURL:true. For example, if your URL has duplicate variables in the query string like http://www.greensock.com/?c=S&c=SE&c=SW, it is technically considered a malformed URL and a URLVariables object can't properly contain all the duplicates, so in this case you'd want to set allowMalformedURL to true.
    • + *
    • skipFailed : Boolean - By default, XMLLoader will parse any LoaderMax-related loaders in the XML and load any that have their "load" attribute set to "true" and then if any fail to load, they will simply be skipped. But if you prefer to have the XMLLoader fail immediately if one of the parsed loaders fails to load, set skipFailed to false (it is true by default).
    • + *
    • recursivePrependURLs : String - A String that should be recursively prepended to all parsed LoaderMax-related loader URLs (from nodes like <ImageLoader>, <XMLLoader>, etc.). The functionality is identical to prependURLs except that it is recursive, affecting all parsed loaders in subloaded XMLLoaders (other XML files that this one loads too). For example, if your XML has the following node: <XMLLoader url="doc2.xml" /> and recursivePrependURLs is set to "../xml/", then the nested XMLLoader's URL will end up being "../xml/doc2.xml". Since it is recursive, parsed loaders inside doc2.xml and any other XML files that it loads will all have their URLs prepended. So if you load doc1.xml which loads doc2.xml which loads doc3.xml (due to <XMLLoader> nodes discovered in each XML file), recursivePrependURLs will affect all of the parsed LoaderMax-related URLs in all 3 documents. If you'd prefer to only have the URLs affected that are in the XML file that this XMLLoader is loading, use prependURLs instead of recursivePrependURLs. + * + *

      ----EVENT HANDLER SHORTCUTS----

    • + *
    • onOpen : Function - A handler function for LoaderEvent.OPEN events which are dispatched when the loader begins loading. Make sure your onOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onRawLoad : Function - A handler function for XMLLoader.RAW_LOAD events which are dispatched when the loader finishes loading the XML but has NOT parsed the XML yet. This can be useful in rare situations when you want to alter the XML before it is parsed by XMLLoader (for identifying LoaderMax-related nodes like <ImageLoader>, etc.). Make sure your onRawLoad function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onInit : Function - A handler function for LoaderEvent.INIT events which are dispatched when the loader finishes loading the XML file, parses its contents, and creates any dynamic XML-driven loaders. If any dynamic loaders are created and have a load="true" attribute, they will begin loading at this point and the XMLLoader's COMPLETE will not be dispatched until the loaders have completed as well. Make sure your onInit function accepts a single parameter of type Event (flash.events.Event).
    • + *
    • onProgress : Function - A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.
    • + *
    • onComplete : Function - A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading successfully. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onCancel : Function - A handler function for LoaderEvent.CANCEL events which are dispatched when loading is aborted due to either a failure or because another loader was prioritized or cancel() was manually called. Make sure your onCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onError : Function - A handler function for LoaderEvent.ERROR events which are dispatched whenever the loader experiences an error (typically an IO_ERROR or SECURITY_ERROR). An error doesn't necessarily mean the loader failed, however - to listen for when a loader fails, use the onFail special property. Make sure your onError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onFail : Function - A handler function for LoaderEvent.FAIL events which are dispatched whenever the loader fails and its status changes to LoaderStatus.FAILED. Make sure your onFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onIOError : Function - A handler function for LoaderEvent.IO_ERROR events which will also call the onError handler, so you can use that as more of a catch-all whereas onIOError is specifically for LoaderEvent.IO_ERROR events. Make sure your onIOError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onHTTPStatus : Function - A handler function for LoaderEvent.HTTP_STATUS events. Make sure your onHTTPStatus function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can determine the httpStatus code using the LoaderEvent's target.httpStatus (LoaderItems keep track of their httpStatus when possible, although certain environments prevent Flash from getting httpStatus information).
    • + *
    • onSecurityError : Function - A handler function for LoaderEvent.SECURITY_ERROR events which onError handles as well, so you can use that as more of a catch-all whereas onSecurityError is specifically for SECURITY_ERROR events. Make sure your onSecurityError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildOpen : Function - A handler function for LoaderEvent.CHILD_OPEN events which are dispatched each time any nested LoaderMax-related loaders that were defined in the XML begins loading. Make sure your onChildOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildProgress : Function - A handler function for LoaderEvent.CHILD_PROGRESS events which are dispatched each time any nested LoaderMax-related loaders that were defined in the XML dispatches a PROGRESS event. To listen for changes in the XMLLoader's overall progress, use the onProgress special property instead. You can use the LoaderEvent's target.progress to get the child loader's progress value or use its target.bytesLoaded and target.bytesTotal. The LoaderEvent's currentTarget refers to the XMLLoader, so you can check its overall progress with the LoaderEvent's currentTarget.progress. Make sure your onChildProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildComplete : Function - A handler function for LoaderEvent.CHILD_COMPLETE events which are dispatched each time any nested LoaderMax-related loaders that were defined in the XML finishes loading successfully. Make sure your onChildComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildCancel : Function - A handler function for LoaderEvent.CHILD_CANCEL events which are dispatched each time loading is aborted on any nested LoaderMax-related loaders that were defined in the XML due to either an error or because another loader was prioritized in the queue or because cancel() was manually called on the child loader. Make sure your onChildCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildFail : Function - A handler function for LoaderEvent.CHILD_FAIL events which are dispatched each time any nested LoaderMax-related loaders that were defined in the XML fails (and its status chances to LoaderStatus.FAILED). Make sure your onChildFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    + * + *

    Note: Using a XMLLoaderVars instance + * instead of a generic object to define your vars is a bit more verbose but provides + * code hinting and improved debugging because it enforces strict data typing. Use whichever one you prefer.

    + * + *

    Note: If you don't want the fancy auto-parsing capabilities of XMLLoader, you can just use a + * DataLoader instead of XMLLoader. Then make the content into XML like: + * var xml:XML = new XML(myDataLoader.content);

    + * + *

    XMLLoader recognizes a few additional attributes for dynamically-created loaders that are defined in the XML:

    + *
      + *
    • load="true | false" - If load is "true", the loader will be loaded by the XMLLoader and its progress will be integrated with the XMLLoader's overall progress.
    • + *
    • prependURLs (<LoaderMax> and <XMLLoader> nodes only) - To prepend a certain String value to the beginning of all children of a <LoaderMax> or <XMLLoader>, use prependURLs. For example, <LoaderMax name="mainQueue" prependURLs="http://www.greensock.com/images/"><ImageLoader url="image1.jpg" /></LoaderMax> would cause the ImageLoader's url to become "http://www.greensock.com/images/image1.jpg".
    • + *
    • replaceURLText (<LoaderMax> nodes only) - To replace certain substrings in all child loaders of a <LoaderMax> with other values, use replaceURLText. Separate the old value that should be replaced from the new one that should replace it with a comma (","). The list can be as long as you want. For example, <LoaderMax name="mainQueue" replaceURLText="{imageDirectory},http://www.greensock.com/images/,{language},_en"><ImageLoader url="{imageDirectory}image1{language}.jpg" /></LoaderMax> would cause the ImageLoader's url to become "http://www.greensock.com/images/image1_en.jpg".
    • + *
    • childrenVars (<LoaderMax> nodes only) - To apply a common set of special properties to all the children of a particular <LoaderMax> node, use childrenVars and define a comma-delimited list of values like <LoaderMax name="mainQueue" childrenVars="width:200,height:100,scaleMode:proportionalOutside,crop:true"><ImageLoader url="image1.jpg" /><ImageLoader url="image2.jpg" /></LoaderMax>. Values that are defined directly in one of the child nodes will override any value(s) in the childrenVars, making things very flexible. So if you want the width of all of the children to be 200 except one which should be 500, just use childrenVars="width:200" and then in the child that should be 500 pixels wide, set that in the node like <ImageLoader url="1.jpg" width="500" /> (new in version 1.88)
    • + *
    • context="child | separate | own" - Only valid for <SWFLoader> loaders. It defines the LoaderContext's ApplicationDomain (see Adobe's LoaderContext docs for details). "child" is the default.
    • + *
    + * + *

    content data type: XML

    + * + * Example AS3 code:+ import com.greensock.loading.~~; + import com.greensock.loading.display.~~; + import com.greensock.events.LoaderEvent; + + //we know the XML contains ImageLoader, SWFLoader, DataLoader, and MP3Loader data, so we need to activate those classes once in the swf so that the XMLLoader can recognize them. + LoaderMax.activate([ImageLoader, SWFLoader, DataLoader, MP3Loader]); + + //create an XMLLoader + var loader:XMLLoader = new XMLLoader("xml/doc.xml", {name:"xmlDoc", requireWithRoot:this.root, estimatedBytes:1400}); + + //begin loading + loader.load(); + + //Or you could put the XMLLoader into a LoaderMax. Create one first... + var queue:LoaderMax = new LoaderMax({name:"mainQueue", onProgress:progressHandler, onComplete:completeHandler, onError:errorHandler}); + + //append the XMLLoader and several other loaders + queue.append( loader ); + queue.append( new SWFLoader("swf/main.swf", {name:"mainSWF", estimatedBytes:4800}) ); + queue.append( new ImageLoader("img/photo1.jpg", {name:"photo1"}) ); + + //begin loading queue + queue.load(); + + function progressHandler(event:LoaderEvent):void { + trace("progress: " + event.target.progress); + } + + function completeHandler(event:LoaderEvent):void { + trace("load complete. XML content: " + LoaderMax.getContent("xmlDoc")); + + //Assuming there was an node in the XML, get the associated image... + var image:ContentDisplay = LoaderMax.getContent("image1"); + addChild(image); + } + + function errorHandler(event:LoaderEvent):void { + trace("error occured with " + event.target + ": " + event.text); + } + + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @see com.greensock.loading.data.XMLLoaderVars + * + * @author Jack Doyle, jack@greensock.com + */ + public class XMLLoader extends DataLoader { + /** @private **/ + private static var _classActivated:Boolean = _activateClass("XMLLoader", XMLLoader, "xml,php,jsp,asp,cfm,cfml,aspx"); + /** @private Any non-String variable types that XMLLoader should recognized in loader nodes like , , etc. **/ + protected static var _varTypes:Object = {skipFailed:true, skipPaused:true, autoLoad:false, paused:false, load:false, noCache:false, auditSize:true, maxConnections:2, autoPlay:false, autoDispose:false, smoothing:false, autoDetachNetStream:false, estimatedBytes:1, x:1, y:1, z:1, rotationX:1, rotationY:1, rotationZ:1, width:1, height:1, scaleX:1, scaleY:1, rotation:1, alpha:1, visible:true, bgColor:0, bgAlpha:0, deblocking:1, repeat:1, checkPolicyFile:false, centerRegistration:false, bufferTime:5, volume:1, bufferMode:false, estimatedDuration:200, crop:false, autoAdjustBuffer:true, suppressInitReparentEvents:true, allowMalformedURL:false}; + /** Event type constant for when the XML has loaded but has not been parsed yet. This can be useful in rare situations when you want to alter the XML before it is parsed by XMLLoader (for identifying LoaderMax-related nodes like <ImageLoader>, etc.) **/ + public static var RAW_LOAD:String = "rawLoad"; + /** @private contains only the parsed loaders that had the load="true" XML attribute. It also contains the _parsed LoaderMax which is paused, so it won't load (we put it in there for easy searching). **/ + protected var _loadingQueue:LoaderMax; + /** @private contains all the parsed loaders (, , , , etc.) but it is paused. Any loaders that have the load="true" XML attribute will be put into the _loadingQueue. _parsed is also put into the _loadingQueue for easy searching. **/ + protected var _parsed:LoaderMax; + /** @private **/ + protected var _initted:Boolean; + + /** + * Constructor + * + * @param urlOrRequest The url (String) or URLRequest from which the loader should get its content. + * @param vars An object containing optional configuration details. For example: new XMLLoader("xml/data.xml", {name:"data", onComplete:completeHandler, onProgress:progressHandler}). + * + *

    The following special properties can be passed into the constructor via the vars parameter + * which can be either a generic object or an XMLLoaderVars object:

    + *
      + *
    • name : String - A name that is used to identify the XMLLoader instance. This name can be fed to the LoaderMax.getLoader() or LoaderMax.getContent() methods or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21".
    • + *
    • integrateProgress : Boolean - By default, the XMLLoader will automatically look for LoaderMax-related nodes like <LoaderMax>, <ImageLoader>, <SWFLoader>, <XMLLoader>, <MP3Loader>, <DataLoader>, and <CSSLoader> inside the XML when it inits. If it finds any that have a load="true" attribute, it will begin loading them and integrate their progress into the XMLLoader's overall progress. Its COMPLETE event won't fire until all of these loaders have completed as well. If you prefer NOT to integrate the dynamically-created loader instances into the XMLLoader's overall progress, set integrateProgress to false.
    • + *
    • alternateURL : String - If you define an alternateURL, the loader will initially try to load from its original url and if it fails, it will automatically (and permanently) change the loader's url to the alternateURL and try again. Think of it as a fallback or backup url. It is perfectly acceptable to use the same alternateURL for multiple loaders (maybe a default image for various ImageLoaders for example).
    • + *
    • noCache : Boolean - If noCache is true, a "gsCacheBusterID" parameter will be appended to the url with a random set of numbers to prevent caching (don't worry, this info is ignored when you getLoader() or getContent() by url and when you're running locally)
    • + *
    • estimatedBytes : uint - Initially, the loader's bytesTotal is set to the estimatedBytes value (or LoaderMax.defaultEstimatedBytes if one isn't defined). Then, when the XML has been loaded and analyzed enough to determine the size of any dynamic loaders that were found in the XML data (like <ImageLoader> nodes, etc.), it will adjust the bytesTotal accordingly. Setting estimatedBytes is optional, but it provides a way to avoid situations where the progress and bytesTotal values jump around as XMLLoader recognizes nested loaders in the XML and audits their size. The estimatedBytes value should include all nested loaders as well, so if your XML file itself is 500 bytes and you have 3 <ImageLoader> tags with load="true" and each image is about 2000 bytes, your XMLLoader's estimatedBytes should be 6500. The more accurate the value, the more accurate the loaders' overall progress will be.
    • + *
    • requireWithRoot : DisplayObject - LoaderMax supports subloading, where an object can be factored into a parent's loading progress. If you want LoaderMax to require this XMLLoader as part of its parent SWFLoader's progress, you must set the requireWithRoot property to your swf's root. For example, var loader:XMLLoader = new XMLLoader("data.xml", {name:"data", requireWithRoot:this.root});
    • + *
    • autoDispose : Boolean - When autoDispose is true, the loader (and its children) will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false.
    • + *
    • prependURLs : String - A String that should be prepended to all parsed LoaderMax-related loader URLs (from nodes like <ImageLoader>, <XMLLoader>, etc.) as soon as the XML has been parsed. For example, if your XML has the following node: <ImageLoader url="1.jpg" /> and prependURLs is set to "../images/", then the ImageLoader's url will end up being "../images/1.jpg". prependURLs affects ALL parsed loaders in the XML. However, if you have an <XMLLoader> node inside your XML that also loads another XML doc and you'd like to recursively prepend all of the URLs in this loader's XML as well as the subloading one and all of its children, use recursivePrependURLs instead of prependURLs.
    • + *
    • maxConnections : uint - Maximum number of simultaneous connections that should be used while loading child loaders that were parsed from the XML and had their "load" attribute set to "true" (like <ImageLoader url="1.jpg" load="true" />). A higher number will generally result in faster overall load times for the group. The default is 2. Sometimes there are limits imposed by the Flash Player itself or the browser or the user's system, but LoaderMax will do its best to honor the maxConnections you define.
    • + *
    • allowMalformedURL : Boolean - Normally, the URL will be parsed and any variables in the query string (like "?name=test&state=il&gender=m") will be placed into a URLVariables object which is added to the URLRequest. This avoids a few bugs in Flash, but if you need to keep the entire URL intact (no parsing into URLVariables), set allowMalformedURL:true. For example, if your URL has duplicate variables in the query string like http://www.greensock.com/?c=S&c=SE&c=SW, it is technically considered a malformed URL and a URLVariables object can't properly contain all the duplicates, so in this case you'd want to set allowMalformedURL to true.
    • + *
    • skipFailed : Boolean - By default, XMLLoader will parse any LoaderMax-related loaders in the XML and load any that have their "load" attribute set to "true" and then if any fail to load, they will simply be skipped. But if you prefer to have the XMLLoader fail immediately if one of the parsed loaders fails to load, set skipFailed to false (it is true by default).
    • + *
    • recursivePrependURLs : String - A String that should be recursively prepended to all parsed LoaderMax-related loader URLs (from nodes like <ImageLoader>, <XMLLoader>, etc.). The functionality is identical to prependURLs except that it is recursive, affecting all parsed loaders in subloaded XMLLoaders (other XML files that this one loads too). For example, if your XML has the following node: <XMLLoader url="doc2.xml" /> and recursivePrependURLs is set to "../xml/", then the nested XMLLoader's URL will end up being "../xml/doc2.xml". Since it is recursive, parsed loaders inside doc2.xml and any other XML files that it loads will all have their URLs prepended. So if you load doc1.xml which loads doc2.xml which loads doc3.xml (due to <XMLLoader> nodes discovered in each XML file), recursivePrependURLs will affect all of the parsed LoaderMax-related URLs in all 3 documents. If you'd prefer to only have the URLs affected that are in the XML file that this XMLLoader is loading, use prependURLs instead of recursivePrependURLs. + * + *

      ----EVENT HANDLER SHORTCUTS----

    • + *
    • onOpen : Function - A handler function for LoaderEvent.OPEN events which are dispatched when the loader begins loading. Make sure your onOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onRawLoad : Function - A handler function for XMLLoader.RAW_LOAD events which are dispatched when the loader finishes loading the XML but has NOT parsed the XML yet. This can be useful in rare situations when you want to alter the XML before it is parsed by XMLLoader (for identifying LoaderMax-related nodes like <ImageLoader>, etc.). Make sure your onRawLoad function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onInit : Function - A handler function for LoaderEvent.INIT events which are dispatched when the loader finishes loading the XML file, parses its contents, and creates any dynamic XML-driven loaders. If any dynamic loaders are created and have a load="true" attribute, they will begin loading at this point and the XMLLoader's COMPLETE will not be dispatched until the loaders have completed as well. Make sure your onInit function accepts a single parameter of type Event (flash.events.Event).
    • + *
    • onProgress : Function - A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.
    • + *
    • onComplete : Function - A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading successfully. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onCancel : Function - A handler function for LoaderEvent.CANCEL events which are dispatched when loading is aborted due to either a failure or because another loader was prioritized or cancel() was manually called. Make sure your onCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onError : Function - A handler function for LoaderEvent.ERROR events which are dispatched whenever the loader experiences an error (typically an IO_ERROR or SECURITY_ERROR). An error doesn't necessarily mean the loader failed, however - to listen for when a loader fails, use the onFail special property. Make sure your onError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onFail : Function - A handler function for LoaderEvent.FAIL events which are dispatched whenever the loader fails and its status changes to LoaderStatus.FAILED. Make sure your onFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onIOError : Function - A handler function for LoaderEvent.IO_ERROR events which will also call the onError handler, so you can use that as more of a catch-all whereas onIOError is specifically for LoaderEvent.IO_ERROR events. Make sure your onIOError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onHTTPStatus : Function - A handler function for LoaderEvent.HTTP_STATUS events. Make sure your onHTTPStatus function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can determine the httpStatus code using the LoaderEvent's target.httpStatus (LoaderItems keep track of their httpStatus when possible, although certain environments prevent Flash from getting httpStatus information).
    • + *
    • onSecurityError : Function - A handler function for LoaderEvent.SECURITY_ERROR events which onError handles as well, so you can use that as more of a catch-all whereas onSecurityError is specifically for SECURITY_ERROR events. Make sure your onSecurityError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildOpen : Function - A handler function for LoaderEvent.CHILD_OPEN events which are dispatched each time any nested LoaderMax-related loaders that were defined in the XML begins loading. Make sure your onChildOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildProgress : Function - A handler function for LoaderEvent.CHILD_PROGRESS events which are dispatched each time any nested LoaderMax-related loaders that were defined in the XML dispatches a PROGRESS event. To listen for changes in the XMLLoader's overall progress, use the onProgress special property instead. You can use the LoaderEvent's target.progress to get the child loader's progress value or use its target.bytesLoaded and target.bytesTotal. The LoaderEvent's currentTarget refers to the XMLLoader, so you can check its overall progress with the LoaderEvent's currentTarget.progress. Make sure your onChildProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildComplete : Function - A handler function for LoaderEvent.CHILD_COMPLETE events which are dispatched each time any nested LoaderMax-related loaders that were defined in the XML finishes loading successfully. Make sure your onChildComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildCancel : Function - A handler function for LoaderEvent.CHILD_CANCEL events which are dispatched each time loading is aborted on any nested LoaderMax-related loaders that were defined in the XML due to either an error or because another loader was prioritized in the queue or because cancel() was manually called on the child loader. Make sure your onChildCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    • onChildFail : Function - A handler function for LoaderEvent.CHILD_FAIL events which are dispatched each time any nested LoaderMax-related loaders that were defined in the XML fails (and its status chances to LoaderStatus.FAILED). Make sure your onChildFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).
    • + *
    + * @see com.greensock.loading.data.XMLLoaderVars + */ + public function XMLLoader(urlOrRequest:*, vars:Object=null) { + super(urlOrRequest, vars); + _preferEstimatedBytesInAudit = true; + _type = "XMLLoader"; + _loader.dataFormat = "text"; //just to make sure it wasn't overridden if the "format" special vars property was passed into in DataLoader's constructor. + } + + /** @private **/ + override protected function _load():void { + if (!_initted) { + _prepRequest(); + _loader.load(_request); + } else if (_loadingQueue != null) { + _changeQueueListeners(true); + _loadingQueue.load(false); + } + } + + /** @private **/ + protected function _changeQueueListeners(add:Boolean):void { + if (_loadingQueue != null) { + var p:String; + if (add && this.vars.integrateProgress != false) { + for (p in _listenerTypes) { + if (p != "onProgress" && p != "onInit") { + _loadingQueue.addEventListener(_listenerTypes[p], _passThroughEvent, false, -100, true); + } + } + _loadingQueue.addEventListener(LoaderEvent.COMPLETE, _completeHandler, false, -100, true); + _loadingQueue.addEventListener(LoaderEvent.PROGRESS, _progressHandler, false, -100, true); + _loadingQueue.addEventListener(LoaderEvent.FAIL, _failHandler, false, -100, true); + } else { + _loadingQueue.removeEventListener(LoaderEvent.COMPLETE, _completeHandler); + _loadingQueue.removeEventListener(LoaderEvent.PROGRESS, _progressHandler); + _loadingQueue.removeEventListener(LoaderEvent.FAIL, _failHandler); + for (p in _listenerTypes) { + if (p != "onProgress" && p != "onInit") { + _loadingQueue.removeEventListener(_listenerTypes[p], _passThroughEvent); + } + } + } + } + } + + /** @private scrubLevel: 0 = cancel, 1 = unload, 2 = dispose, 3 = flush **/ + override protected function _dump(scrubLevel:int=0, newStatus:int=0, suppressEvents:Boolean=false):void { + if (_loadingQueue != null) { + _changeQueueListeners(false); + if (scrubLevel == 0) { + _loadingQueue.cancel(); + } else { + _loadingQueue.dispose(Boolean(scrubLevel == 3)); + _loadingQueue = null; + } + } + if (scrubLevel >= 1) { + if (_parsed != null) { + _parsed.dispose(Boolean(scrubLevel == 3)); + _parsed = null; + } + _initted = false; + } + _cacheIsDirty = true; + var content:* = _content; + super._dump(scrubLevel, newStatus, suppressEvents); + if (scrubLevel == 0) { + _content = content; //super._dump() nulls "_content" but if the XML loaded and not the loading queue (yet), we should keep the XML content. + } + } + + /** @private **/ + override protected function _calculateProgress():void { + _cachedBytesLoaded = _loader.bytesLoaded; + if (_loader.bytesTotal != 0) { //otherwise if unload() was called, bytesTotal would go back down to 0. + _cachedBytesTotal = _loader.bytesTotal; + } + if (_cachedBytesTotal < _cachedBytesLoaded || _initted) { + //In Chrome when the XML file exceeds a certain size and gzip is enabled on the server, Adobe's URLLoader reports bytesTotal as 0!!! + //and in Firefox, if gzip was enabled, on very small files the URLLoader's bytesLoaded would never quite reach the bytesTotal even after the COMPLETE event fired! + _cachedBytesTotal = _cachedBytesLoaded; + } + var estimate:uint = uint(this.vars.estimatedBytes); + if (this.vars.integrateProgress == false) { + // do nothing + } else if (_loadingQueue != null && (uint(this.vars.estimatedBytes) < _cachedBytesLoaded || _loadingQueue.auditedSize)) { //make sure that estimatedBytes is prioritized until the _loadingQueue has audited its size successfully! + if (_loadingQueue.status <= LoaderStatus.COMPLETED) { + _cachedBytesLoaded += _loadingQueue.bytesLoaded; + _cachedBytesTotal += _loadingQueue.bytesTotal; + } + } else if (uint(this.vars.estimatedBytes) > _cachedBytesLoaded && (!_initted || (_loadingQueue != null && _loadingQueue.status <= LoaderStatus.COMPLETED && !_loadingQueue.auditedSize))) { + _cachedBytesTotal = uint(this.vars.estimatedBytes); + } + if (!_initted && _cachedBytesLoaded == _cachedBytesTotal) { + _cachedBytesLoaded = int(_cachedBytesLoaded * 0.99); //don't allow the progress to hit 1 yet + } + _cacheIsDirty = false; + } + + /** + * Finds a particular loader inside any LoaderMax instances that were discovered in the xml content. + * For example: + * + * +var xmlLoader:XMLLoader = new XMLLoader("xml/doc.xml", {name:"xmlDoc", onComplete:completeHandler}); +function completeHandler(event:Event):void { + var imgLoader:ImageLoader = xmlLoader.getLoader("imageInXML") as ImageLoader; + addChild(imgLoader.content); +} + + * + *

    The static LoaderMax.getLoader() method can be used instead which searches all loaders.

    + * + * @param nameOrURL The name or url associated with the loader that should be found. + * @return The loader associated with the name or url. Returns null if none were found. + */ + public function getLoader(nameOrURL:String):* { + return (_parsed != null) ? _parsed.getLoader(nameOrURL) : null; + } + + /** + * Finds a particular loader's content from inside any loaders that were dynamically + * generated based on the xml data. For example: + * + * +var loader:XMLLoader = new XMLLoader("xml/doc.xml", {name:"xmlDoc", onComplete:completeHandler}); +function completeHandler(event:Event):void { + var subloadedImage:Bitmap = loader.getContent("imageInXML"); + addChild(subloadedImage); +} + + * + *

    The static LoaderMax.getContent() method can be used instead which searches all loaders.

    + * + * @param nameOrURL The name or url associated with the loader whose content should be found. + * @return The content associated with the loader's name or url. Returns null if none were found. + * @see #content + */ + public function getContent(nameOrURL:String):* { + if (nameOrURL == this.name || nameOrURL == _url) { + return _content; + } + var loader:LoaderCore = this.getLoader(nameOrURL); + return (loader != null) ? loader.content : null; + } + + /** + * Returns and array of all LoaderMax-related loaders (if any) that were found inside the XML. + * For example, if the following XML was in the document, a child loader would be created for it + * immediately before the INIT event is dispatched:

    + * + * <ImageLoader url="1.jpg" name="image1" />

    + * + *

    Don't forget to use LoaderMax.activate() to activate the types of loaders + * that you want XMLLoader to recognize (you only need to activate() them once in your swf). + * Like LoaderMax.activate([ImageLoader, SWFLoader]); to ensure that XMLLoader + * recognizes <ImageLoader> and <SWFLoader> nodes.

    + * + *

    No child loader can be found until the XMLLoader's INIT event is dispatched, meaning the + * XML has been loaded and parsed.

    + * + * @param includeNested If true, loaders that are nested inside child LoaderMax, XMLLoader, or SWFLoader instances will be included in the returned array as well. The default is false. + * @param omitLoaderMaxes If true, no LoaderMax instances will be returned in the array; only LoaderItems like ImageLoaders, XMLLoaders, SWFLoaders, MP3Loaders, etc. The default is false. + * @return An array of loaders. + */ + public function getChildren(includeNested:Boolean=false, omitLoaderMaxes:Boolean=false):Array { + return (_parsed != null) ? _parsed.getChildren(includeNested, omitLoaderMaxes) : []; + } + +//---- STATIC METHODS ------------------------------------------------------------------------------------ + + /** @private **/ + protected static function _parseVars(xml:XML):Object { + var v:Object = {rawXML:xml}; + var s:String, type:String, value:String, domain:ApplicationDomain; + var list:XMLList = xml.attributes(); + for each (var attribute:XML in list) { + s = attribute.name(); + value = attribute.toString(); + if (s == "url") { + continue; + } else if (s == "context") { + v.context = new LoaderContext(true, + (value == "own") ? ApplicationDomain.currentDomain : (value == "separate") ? new ApplicationDomain() : new ApplicationDomain(ApplicationDomain.currentDomain), + (!_isLocal) ? SecurityDomain.currentDomain : null); + continue; + } + type = typeof(_varTypes[s]); + if (type == "boolean") { + v[s] = Boolean(value == "true" || value == "1"); + } else if (type == "number") { + v[s] = Number(value); + } else { + v[s] = value; + } + + } + return v; + } + + /** + * Parses an XML object and finds all activated loader types (like LoaderMax, ImageLoader, SWFLoader, DataLoader, + * CSSLoader, MP3Loader, etc.), creates the necessary instances, and appends them to the LoaderMax that is defined + * in the 2nd parameter. Don't forget to make sure you activate() the necessary loader types that you + * want XMLLoader to recognize in the XML, like:

    + * + * LoaderMax.activate([ImageLoader, SWFLoader]); //or whatever types you're using.

    + * + * @param xml The XML to parse + * @param all The LoaderMax instance to which all parsed loaders should be appended + * @param toLoad The LoaderMax instance to which ONLY parsed loaders that have a load="true" attribute defined in the XML should be appended. These loaders will also be appended to the LoaderMax defined in the all parameter. + */ + public static function parseLoaders(xml:XML, all:LoaderMax, toLoad:LoaderMax=null):void { + var node:XML; + var nodeName:String = String(xml.name()).toLowerCase(); + if (nodeName == "loadermax") { + var queue:LoaderMax = all.append(new LoaderMax(_parseVars(xml))) as LoaderMax; + if (toLoad != null && queue.vars.load) { + toLoad.append(queue); + } + + if (queue.vars.childrenVars != null && queue.vars.childrenVars.indexOf(":") != -1) { + queue.vars.childrenVars = _parseVars( new XML("") ); + } + + for each (node in xml.children()) { + parseLoaders(node, queue, toLoad); + } + + if ("replaceURLText" in queue.vars) { + var replaceText:Array = queue.vars.replaceURLText.split(","); + for (var i:int = 0; i < replaceText.length; i += 2) { + queue.replaceURLText(replaceText[i], replaceText[i+1], false); + } + } + if ("prependURLs" in queue.vars) { + queue.prependURLs(queue.vars.prependURLs, false); + } + } else { + if (nodeName in _types) { + var loaderClass:Class = _types[nodeName]; + var parsedVars:Object = _parseVars(xml); + if (typeof(all.vars.childrenVars) == "object") { + for (var p:String in all.vars.childrenVars) { + if (!(p in parsedVars)) { + parsedVars[p] = all.vars.childrenVars[p]; + } + } + } + var loader:LoaderCore = all.append(new loaderClass(xml.@url, parsedVars)); + if (toLoad != null && loader.vars.load && !all.vars.load) { + toLoad.append(loader); + } + } + + for each (node in xml.children()) { + parseLoaders(node, all, toLoad); + } + } + } + + +//---- EVENT HANDLERS ------------------------------------------------------------------------------------ + + /** @private **/ + override protected function _progressHandler(event:Event):void { + if (_dispatchProgress) { + var bl:uint = _cachedBytesLoaded; + var bt:uint = _cachedBytesTotal; + _calculateProgress(); + if (_cachedBytesLoaded != _cachedBytesTotal && (bl != _cachedBytesLoaded || bt != _cachedBytesTotal)) { + dispatchEvent(new LoaderEvent(LoaderEvent.PROGRESS, this)); + } + } else { + _cacheIsDirty = true; + } + } + + /** @private **/ + override protected function _passThroughEvent(event:Event):void { + if (event.target != _loadingQueue) { + super._passThroughEvent(event); + } + } + + /** @private **/ + override protected function _receiveDataHandler(event:Event):void { + try { + _content = new XML(_loader.data); + } catch (error:Error) { + _content = _loader.data; + _failHandler(new LoaderEvent(LoaderEvent.ERROR, this, error.message)); + return; + } + dispatchEvent(new LoaderEvent(RAW_LOAD, this, "", _content)); + _initted = true; + + _loadingQueue = new LoaderMax({name:this.name + "_Queue", maxConnections:(uint(this.vars.maxConnections) || 2), skipFailed:Boolean(this.vars.skipFailed != false), skipPaused:Boolean(this.vars.skipPaused != false)}); + _parsed = new LoaderMax({name:this.name + "_ParsedLoaders", paused:true}); + parseLoaders(_content as XML, _parsed, _loadingQueue); + if (_parsed.numChildren == 0) { + _parsed.dispose(false); + _parsed = null; + } else if ("recursivePrependURLs" in this.vars) { + _parsed.prependURLs(this.vars.recursivePrependURLs, true); + var loaders:Array = _parsed.getChildren(true, true); + var i:int = loaders.length; + while (--i > -1) { + if (loaders[i] is XMLLoader) { + loaders[i].vars.recursivePrependURLs = this.vars.recursivePrependURLs; + } + } + } else if ("prependURLs" in this.vars) { + _parsed.prependURLs(this.vars.prependURLs, true); + } + if (_loadingQueue.getChildren(true, true).length == 0) { + _loadingQueue.empty(false); + _loadingQueue.dispose(false); + _loadingQueue = null; + dispatchEvent(new LoaderEvent(LoaderEvent.INIT, this, "", _content)); + } else { + _cacheIsDirty = true; + _changeQueueListeners(true); + dispatchEvent(new LoaderEvent(LoaderEvent.INIT, this, "", _content)); + _loadingQueue.load(false); + } + + if (_loadingQueue == null || (this.vars.integrateProgress == false)) { + _completeHandler(event); + } + } + + /** @private **/ + override protected function _failHandler(event:Event, dispatchError:Boolean=true):void { + if (event.target == _loadingQueue) { + //this is a unique situation where we don't want the failure to unload the XML because only one of the nested loaders failed but the XML is perfectly good and usable. Also, we want to retain the _loadingQueue so that getChildren() works. Therefore we don't call super._failHandler(); + _status = LoaderStatus.FAILED; + _time = getTimer() - _time; + dispatchEvent(new LoaderEvent(LoaderEvent.CANCEL, this)); + dispatchEvent(new LoaderEvent(LoaderEvent.FAIL, this, this.toString() + " > " + (event as Object).text)); + } else { + super._failHandler(event, dispatchError); + } + } + + /** @private **/ + override protected function _completeHandler(event:Event=null):void { + _calculateProgress(); + if (this.progress == 1) { + _changeQueueListeners(false); + super._completeHandler(event); + } + } + +//---- GETTERS / SETTERS ------------------------------------------------------------------------- + + /** @inheritDoc The purpose of the override is so that we can return 1 in rare cases where the XML file literally is empty (bytesTotal == 0) which is verified when _initted == true. **/ + override public function get progress():Number { + return (this.bytesTotal != 0) ? _cachedBytesLoaded / _cachedBytesTotal : (_status == LoaderStatus.COMPLETED || _initted) ? 1 : 0; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/loading/core/.DS_Store b/FairyGUI-as3/src/com/greensock/loading/core/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class DisplayObjectLoader extends LoaderItem { + /** By default, LoaderMax will automatically attempt to force garbage collection when a SWFLoader or ImageLoader is unloaded or cancelled but if you prefer to skip this measure, set defaultAutoForceGC to false. If garbage collection isn't forced, sometimes Flash doesn't completely unload swfs/images properly, particularly if there is audio embedded in the root timeline. **/ + public static var defaultAutoForceGC:Boolean = true; + /** @private the Sprite to which the EVENT_LISTENER was attached for forcing garbage collection after 1 frame (improves performance especially when multiple loaders are disposed at one time). **/ + protected static var _gcDispatcher:Sprite; + /** @private **/ + protected static var _gcCycles:uint = 0; + /** @private **/ + protected var _loader:Loader; + /** @private **/ + protected var _sprite:Sprite; + /** @private **/ + protected var _context:LoaderContext; + /** @private **/ + protected var _initted:Boolean; + /** @private used by SWFLoader when the loader is canceled before the SWF ever had a chance to init which causes garbage collection issues. We slip into stealthMode at that point, wait for it to init, and then cancel the _loader's loading.**/ + protected var _stealthMode:Boolean; + /** @private allows us to apply a LoaderContext to the file size audit (only if necessary - URLStream is better/faster/smaller and works great unless we run into security errors because of a missing crossdomain.xml file) **/ + protected var _fallbackAudit:Loader; + + /** + * Constructor + * + * @param urlOrRequest The url (String) or URLRequest from which the loader should get its content + * @param vars An object containing optional parameters like estimatedBytes, name, autoDispose, onComplete, onProgress, onError, etc. For example, {estimatedBytes:2400, name:"myImage1", onComplete:completeHandler}. + */ + public function DisplayObjectLoader(urlOrRequest:*, vars:Object=null) { + super(urlOrRequest, vars); + _refreshLoader(false); + if (LoaderMax.contentDisplayClass is Class) { + _sprite = new LoaderMax.contentDisplayClass(this); + if (!_sprite.hasOwnProperty("rawContent")) { + throw new Error("LoaderMax.contentDisplayClass must be set to a class with a 'rawContent' property, like com.greensock.loading.display.ContentDisplay"); + } + } else { + _sprite = new ContentDisplay(this); + } + } + + /** @private Set inside ContentDisplay's or FlexContentDisplay's "loader" setter. **/ + public function setContentDisplay(contentDisplay:Sprite):void { + _sprite = contentDisplay; + } + + /** @private **/ + override protected function _load():void { + _prepRequest(); + if (this.vars.context is LoaderContext) { + _context = this.vars.context; + } else if (_context == null) { + if (LoaderMax.defaultContext != null) { + _context = LoaderMax.defaultContext; + if (_isLocal) { + _context.securityDomain = null; + } + } else if (!_isLocal) { + _context = new LoaderContext(true, new ApplicationDomain(ApplicationDomain.currentDomain), SecurityDomain.currentDomain); //avoids some security sandbox headaches that plague many users. + } + } + if (Capabilities.playerType != "Desktop") { //AIR apps will choke on Security.allowDomain() + Security.allowDomain(_url); + } + _loader.load(_request, _context); + } + + /** @inheritDoc **/ + override public function auditSize():void { + if (Capabilities.playerType != "Desktop") { //AIR apps will choke on Security.allowDomain() + Security.allowDomain(_url); + } + super.auditSize(); + } + + override protected function _closeStream():void { + _closeFallbackAudit(); + super._closeStream(); + } + + protected function _closeFallbackAudit():void { + if (_fallbackAudit != null) { + _fallbackAudit.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, _auditStreamHandler, false, 0, true); + _fallbackAudit.contentLoaderInfo.addEventListener(Event.COMPLETE, _auditStreamHandler, false, 0, true); + _fallbackAudit.contentLoaderInfo.addEventListener("ioError", _auditStreamHandler, false, 0, true); + _fallbackAudit.contentLoaderInfo.addEventListener("securityError", _auditStreamHandler, false, 0, true); + try { + _fallbackAudit.close(); + } catch (error:Error) { + + } + _fallbackAudit = null; + } + } + + /** @private **/ + override protected function _auditStreamHandler(event:Event):void { + //If a security error is thrown because of a missing crossdomain.xml file for example and the user didn't define a specific LoaderContext, we'll try again without checking the policy file, accepting the restrictions that come along with it because typically people would rather have the content show up on the screen rather than just error out (and they can always check the scriptAccessDenied property if they need to figure out whether it's safe to do BitmapData stuff on it, etc.) + if (event.type == "securityError") { + if (_fallbackAudit == null) { + _context = new LoaderContext(false); + _scriptAccessDenied = true; + dispatchEvent(new LoaderEvent(LoaderEvent.SCRIPT_ACCESS_DENIED, this, ErrorEvent(event).text)); + _errorHandler(event); + _fallbackAudit = new Loader(); //so that we can apply a LoaderContext. We don't want to use a Loader initially because they are more memory-intensive than URLStream and they can tend to have more problems with garbage collection. + _fallbackAudit.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, _auditStreamHandler, false, 0, true); + _fallbackAudit.contentLoaderInfo.addEventListener(Event.COMPLETE, _auditStreamHandler, false, 0, true); + _fallbackAudit.contentLoaderInfo.addEventListener("ioError", _auditStreamHandler, false, 0, true); + _fallbackAudit.contentLoaderInfo.addEventListener("securityError", _auditStreamHandler, false, 0, true); + var request:URLRequest = new URLRequest(); + request.data = _request.data; + request.method = _request.method; + _setRequestURL(request, _url, (!_isLocal || _url.substr(0, 4) == "http") ? "gsCacheBusterID=" + (_cacheID++) + "&purpose=audit" : ""); + if (Capabilities.playerType != "Desktop") { //AIR apps will choke on Security.allowDomain() + Security.allowDomain(_url); + } + _fallbackAudit.load(request, _context); + return; + } else { + _closeFallbackAudit(); + } + } + super._auditStreamHandler(event); + } + + /** @private **/ + protected function _refreshLoader(unloadContent:Boolean=true):void { + if (_loader != null) { + //to avoid gc issues and get around a bug in Flash that incorrectly reports progress values on Loaders that were closed before completing, we must force gc and recreate the Loader altogether... + if (_status == LoaderStatus.LOADING) { + try { + _loader.close(); + } catch (error:Error) { + + } + } + _loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, _progressHandler); + _loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, _completeHandler); + _loader.contentLoaderInfo.removeEventListener("ioError", _failHandler); + _loader.contentLoaderInfo.removeEventListener("securityError", _securityErrorHandler); + _loader.contentLoaderInfo.removeEventListener("httpStatus", _httpStatusHandler); + _loader.contentLoaderInfo.removeEventListener("httpResponseStatus", _httpStatusHandler); + _loader.contentLoaderInfo.removeEventListener(Event.INIT, _initHandler); + if (_loader.hasOwnProperty("uncaughtErrorEvents")) { //not available when published to FP9, so we reference things this way to avoid compiler errors + Object(_loader).uncaughtErrorEvents.removeEventListener("uncaughtError", _errorHandler); + } + if (unloadContent) { + try { + if (_loader.parent == null && _sprite != null) { + _sprite.addChild(_loader); //adding the _loader to the display list BEFORE calling unloadAndStop() and then removing it will greatly improve its ability to gc correctly if event listeners were added to the stage from within a subloaded swf without specifying "true" for the weak parameter of addEventListener(). The order here is critical. + } + if (_loader.hasOwnProperty("unloadAndStop")) { //Flash Player 10 and later only + (_loader as Object).unloadAndStop(); + } else { + _loader.unload(); + } + + } catch (error:Error) { + + } + if (_loader.parent) { + _loader.parent.removeChild(_loader); + } + if (("autoForceGC" in this.vars) ? this.vars.autoForceGC : defaultAutoForceGC) { + forceGC((this.hasOwnProperty("getClass")) ? 3 : 1); + } + } + } + _initted = false; + _loader = new Loader(); + _loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, _progressHandler, false, 0, true); + _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, _completeHandler, false, 0, true); + _loader.contentLoaderInfo.addEventListener("ioError", _failHandler, false, 0, true); + _loader.contentLoaderInfo.addEventListener("securityError", _securityErrorHandler, false, 0, true); + _loader.contentLoaderInfo.addEventListener("httpStatus", _httpStatusHandler, false, 0, true); + _loader.contentLoaderInfo.addEventListener("httpResponseStatus", _httpStatusHandler, false, 0, true); + _loader.contentLoaderInfo.addEventListener(Event.INIT, _initHandler, false, 0, true); + if (_loader.hasOwnProperty("uncaughtErrorEvents")) { //not available when published to FP9, so we reference things this way to avoid compiler errors + Object(_loader).uncaughtErrorEvents.addEventListener("uncaughtError", _errorHandler, false, 0, true); + } + } + + /** @private works around bug in Flash Player that prevents SWFs from properly being garbage collected after being unloaded - for certain types of objects like swfs, this needs to be run more than once (spread out over several frames) to force Flash to properly garbage collect everything. **/ + public static function forceGC(cycles:uint=1):void { + if (_gcCycles < cycles) { + _gcCycles = cycles; + if (_gcDispatcher == null) { + _gcDispatcher = new Sprite(); + _gcDispatcher.addEventListener(Event.ENTER_FRAME, _forceGCHandler, false, 0, true); + } + } + } + + /** @private **/ + protected static function _forceGCHandler(event:Event):void { + if (--_gcCycles <= 0) { + _gcDispatcher.removeEventListener(Event.ENTER_FRAME, _forceGCHandler); + _gcDispatcher = null; + } + try { + new LocalConnection().connect("FORCE_GC"); + new LocalConnection().connect("FORCE_GC"); + } catch (error:Error) { + + } + } + + /** @private scrubLevel: 0 = cancel, 1 = unload, 2 = dispose, 3 = flush **/ + override protected function _dump(scrubLevel:int=0, newStatus:int=LoaderStatus.READY, suppressEvents:Boolean=false):void { + if (!_stealthMode) { + _refreshLoader(Boolean(scrubLevel != 2)); + } + if (scrubLevel == 1) { //unload + (_sprite as Object).rawContent = null; + } else if (scrubLevel == 2) { //dispose + (_sprite as Object).loader = null; + } else if (scrubLevel == 3) { //unload and dispose + (_sprite as Object).dispose(false, false); //makes sure the ContentDisplay is removed from its parent as well. + } + super._dump(scrubLevel, newStatus, suppressEvents); + } + + /** @private **/ + protected function _determineScriptAccess():void { + if (!_scriptAccessDenied) { + if (!_loader.contentLoaderInfo.childAllowsParent) { + _scriptAccessDenied = true; + dispatchEvent(new LoaderEvent(LoaderEvent.SCRIPT_ACCESS_DENIED, this, "Error #2123: Security sandbox violation: " + this + ". No policy files granted access.")); + } + } + } + + +//---- EVENT HANDLERS ------------------------------------------------------------------------------------ + + /** @private **/ + protected function _securityErrorHandler(event:ErrorEvent):void { + //If a security error is thrown because of a missing crossdomain.xml file for example and the user didn't define a specific LoaderContext, we'll try again without checking the policy file, accepting the restrictions that come along with it because typically people would rather have the content show up on the screen rather than just error out (and they can always check the scriptAccessDenied property if they need to figure out whether it's safe to do BitmapData stuff on it, etc.) + if (_context != null && _context.checkPolicyFile && !(this.vars.context is LoaderContext)) { + _context = new LoaderContext(false); + _scriptAccessDenied = true; + dispatchEvent(new LoaderEvent(LoaderEvent.SCRIPT_ACCESS_DENIED, this, event.text)); + _errorHandler(event); + _load(); + } else { + _failHandler(event); + } + } + + /** @private **/ + protected function _initHandler(event:Event):void { + if (!_initted) { + _initted = true; + if (_content == null) { //_content is set in ImageLoader or SWFLoader (subclasses), but we put this here just in case someone wants to use DisplayObjectLoader on its own as a lighter weight alternative without the bells & whistles of SWFLoader/ImageLoader. + _content = (_scriptAccessDenied) ? _loader : _loader.content; + } + (_sprite as Object).rawContent = (_content as DisplayObject); + dispatchEvent(new LoaderEvent(LoaderEvent.INIT, this)); + } + } + +//---- GETTERS / SETTERS ------------------------------------------------------------------------- + + /** A ContentDisplay object (a Sprite) that will contain the remote content as soon as the INIT event has been dispatched. This ContentDisplay can be accessed immediately; you do not need to wait for the content to load. **/ + override public function get content():* { + return _sprite; + } + + /** + * The raw content that was successfully loaded into the content ContentDisplay + * Sprite which varies depending on the type of loader and whether or not script access was denied while + * attempting to load the file: + * + *
      + *
    • ImageLoader with script access granted: flash.display.Bitmap
    • + *
    • ImageLoader with script access denied: flash.display.Loader
    • + *
    • SWFLoader with script access granted: flash.display.DisplayObject (the swf's root)
    • + *
    • SWFLoader with script access denied: flash.display.Loader (the swf's root cannot be accessed because it would generate a security error)
    • + *
    + **/ + public function get rawContent():* { + return _content; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/loading/core/LoaderCore.as b/FairyGUI-as3/src/com/greensock/loading/core/LoaderCore.as new file mode 100644 index 0000000..96ae2ce --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/loading/core/LoaderCore.as @@ -0,0 +1,570 @@ +/** + * VERSION: 1.935 + * DATE: 2013-03-18 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/loadermax/ + **/ +package com.greensock.loading.core { + import com.greensock.events.LoaderEvent; + import com.greensock.loading.LoaderMax; + import com.greensock.loading.LoaderStatus; + + import flash.display.DisplayObject; + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.events.ProgressEvent; + import flash.net.LocalConnection; + import flash.system.Capabilities; + import flash.utils.Dictionary; + import flash.utils.getTimer; + + /** Dispatched when the loader starts loading. **/ + [Event(name="open", type="com.greensock.events.LoaderEvent")] + /** Dispatched each time the bytesLoaded value changes while loading (indicating progress). **/ + [Event(name="progress", type="com.greensock.events.LoaderEvent")] + /** Dispatched when the loader completes. **/ + [Event(name="complete", type="com.greensock.events.LoaderEvent")] + /** Dispatched when the loader is canceled while loading which can occur either because of a failure or when a sibling loader is prioritized in a LoaderMax queue. **/ + [Event(name="cancel", type="com.greensock.events.LoaderEvent")] + /** Dispatched when the loader fails. **/ + [Event(name="fail", type="com.greensock.events.LoaderEvent")] + /** Dispatched when the loader experiences some type of error, like a SECURITY_ERROR or IO_ERROR. **/ + [Event(name="error", type="com.greensock.events.LoaderEvent")] + /** Dispatched when the loader unloads (which happens when either unload() or dispose(true) is called or if a loader is canceled while in the process of loading). **/ + [Event(name="unload", type="com.greensock.events.LoaderEvent")] +/** + * Serves as the base class for GreenSock loading tools like LoaderMax, ImageLoader, XMLLoader, SWFLoader, etc. + * There is no reason to use this class on its own. Please see the documentation for the other classes. + * + *

    Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class LoaderCore extends EventDispatcher { + /** @private **/ + public static const version:Number = 1.935; + + /** @private **/ + protected static var _loaderCount:uint = 0; + /** @private **/ + protected static var _rootLookup:Dictionary = new Dictionary(false); + /** @private **/ + protected static var _isLocal:Boolean; + /** @private **/ + protected static var _globalRootLoader:LoaderMax; + /** @private **/ + protected static var _listenerTypes:Object = {onOpen:"open", + onInit:"init", + onComplete:"complete", + onProgress:"progress", + onCancel:"cancel", + onFail:"fail", + onError:"error", + onSecurityError:"securityError", + onHTTPStatus:"httpStatus", + onHTTPResponseStatus:"httpResponseStatus", + onIOError:"ioError", + onScriptAccessDenied:"scriptAccessDenied", + onChildOpen:"childOpen", + onChildCancel:"childCancel", + onChildComplete:"childComplete", + onChildProgress:"childProgress", + onChildFail:"childFail", + onRawLoad:"rawLoad", + onUncaughtError:"uncaughtError"}; + /** @private **/ + protected static var _types:Object = {}; + /** @private **/ + protected static var _extensions:Object = {}; + + /** @private **/ + protected var _cachedBytesLoaded:uint; + /** @private **/ + protected var _cachedBytesTotal:uint; + /** @private **/ + protected var _status:int; + /** @private **/ + protected var _prePauseStatus:int; + /** @private **/ + protected var _dispatchProgress:Boolean; + /** @private **/ + protected var _rootLoader:LoaderMax; + /** @private **/ + protected var _cacheIsDirty:Boolean; + /** @private **/ + protected var _auditedSize:Boolean; + /** @private **/ + protected var _dispatchChildProgress:Boolean; + /** @private **/ + protected var _type:String; + /** @private used to store timing information. When the loader begins loading, the startTime is stored here. When it completes or fails, it is set to the total elapsed time between when it started and ended. We reuse this variable like this in order to minimize size. **/ + protected var _time:uint; + /** @private **/ + protected var _content:*; + + /** An object containing optional configuration details, typically passed through a constructor parameter. For example: new SWFLoader("assets/file.swf", {name:"swf1", container:this, autoPlay:true, noCache:true}). See the constructor's documentation for details about what special properties are recognized. **/ + public var vars:Object; + /** A name that you use to identify the loader instance. This name can be fed to the getLoader() or getContent() methods or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21". **/ + public var name:String; + /** When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false. **/ + public var autoDispose:Boolean; + + /** + * Constructor + * + * @param vars An object containing optional parameters like estimatedBytes, name, autoDispose, onComplete, onProgress, onError, etc. For example, {estimatedBytes:2400, name:"myImage1", onComplete:completeHandler}. + */ + public function LoaderCore(vars:Object=null) { + this.vars = (vars != null) ? vars : {}; + if (this.vars.isGSVars) { + this.vars = this.vars.vars; + } + this.name = (this.vars.name != undefined && String(this.vars.name) != "") ? this.vars.name : "loader" + (_loaderCount++); + _cachedBytesLoaded = 0; + _cachedBytesTotal = (uint(this.vars.estimatedBytes) != 0) ? uint(this.vars.estimatedBytes) : LoaderMax.defaultEstimatedBytes; + this.autoDispose = Boolean(this.vars.autoDispose == true); + _status = (this.vars.paused == true) ? LoaderStatus.PAUSED : LoaderStatus.READY; + _auditedSize = Boolean(uint(this.vars.estimatedBytes) != 0 && this.vars.auditSize != true); + + if (_globalRootLoader == null) { + if (this.vars.__isRoot == true) { + return; + } + _globalRootLoader = new LoaderMax({name:"root", __isRoot:true}); + _isLocal = Boolean(Capabilities.playerType == "Desktop" || (new LocalConnection( ).domain == "localhost")); //alt method (Capabilities.playerType != "ActiveX" && Capabilities.playerType != "PlugIn") doesn't work when testing locally in an html wrapper + } + + _rootLoader = (this.vars.requireWithRoot is DisplayObject) ? _rootLookup[this.vars.requireWithRoot] : _globalRootLoader; + + if (_rootLoader == null) { + _rootLookup[this.vars.requireWithRoot] = _rootLoader = new LoaderMax(); + _rootLoader.name = "subloaded_swf_" + ((this.vars.requireWithRoot.loaderInfo != null) ? this.vars.requireWithRoot.loaderInfo.url : String(_loaderCount)); + _rootLoader.skipFailed = false; + } + + for (var p:String in _listenerTypes) { + if (p in this.vars && this.vars[p] is Function) { + this.addEventListener(_listenerTypes[p], this.vars[p], false, 0, true); + } + } + + _rootLoader.append(this); + } + + /** + * Loads the loader's content, optionally flushing any previously loaded content first. For example, + * a LoaderMax may have already loaded 4 out of the 10 loaders in its queue but if you want it to + * flush the data and start again, set the flushContent parameter to true (it is + * false by default). + * + * @param flushContent If true, any previously loaded content in the loader will be flushed so that it loads again from the beginning. For example, a LoaderMax may have already loaded 4 out of the 10 loaders in its queue but if you want it to flush the data and start again, set the flushContent parameter to true (it is false by default). + */ + public function load(flushContent:Boolean=false):void { + var time:uint = getTimer(); + if (this.status == LoaderStatus.PAUSED) { //use this.status instead of _status so that LoaderMax instances have a chance to do their magic in the getter and make sure their status is calibrated properly in case any of its children changed status after the LoaderMax completed (maybe they were manually loaded or failed, etc.). + _status = (_prePauseStatus <= LoaderStatus.LOADING) ? LoaderStatus.READY : _prePauseStatus; + if (_status == LoaderStatus.READY && this is LoaderMax) { + time -= _time; //when a LoaderMax is resumed, we should offset the start time. + } + } + if (flushContent || _status == LoaderStatus.FAILED) { + _dump(1, LoaderStatus.READY); + } + + if (_status == LoaderStatus.READY) { + _status = LoaderStatus.LOADING; + _time = time; + _load(); + if (this.progress < 1) { //in some cases, an OPEN event should be dispatched, like if load() is called on an empty LoaderMax, it will just dispatch a PROGRESS and COMPLETE event right away. It wouldn't make sense to dispatch an OPEN event right after that. + dispatchEvent(new LoaderEvent(LoaderEvent.OPEN, this)); + } + } else if (_status == LoaderStatus.COMPLETED) { + _completeHandler(null); + } + } + + /** @private Only called when load() was called and the _status was LoaderStatus.READY - we use this internally to make it simpler to extend (the conditional logic stays in the main load() method). **/ + protected function _load():void { + //override in subclasses + } + + /** Pauses the loader immediately. This is the same as setting the paused property to true. Some loaders may not stop loading immediately in order to work around some garbage collection issues in the Flash Player, but they will stop as soon as possible after calling pause(). **/ + public function pause():void { + this.paused = true; + } + + /** Unpauses the loader and resumes loading immediately. **/ + public function resume():void { + this.paused = false; + load(false); + } + + /** + * If the loader is currently loading (status is LoaderStatus.LOADING), it will be canceled + * immediately and its status will change to LoaderStatus.READY. This does NOT pause the + * loader - it simply halts the progress and it remains eligible for loading by any of its parent LoaderMax instances. + * A paused loader, however, cannot be loaded by any of its parent LoaderMax instances until you unpause it (by either + * calling resume() or setting its paused property to false). + * @see #unload() + * @see #dispose() + **/ + public function cancel():void { + if (_status == LoaderStatus.LOADING) { + _dump(0, LoaderStatus.READY); + } + } + + /** + * @private + * Cancels, unloads, and/or disposes of the loader depending on the scrubLevel. This consolidates + * the actions into a single function to conserve file size and because many of the same tasks must + * be performed regardless of the scrubLevel, so this eliminates redundant code. + * + * @param scrubLevel 0 = cancel, 1 = unload, 2 = dispose, 3 = flush (like unload and dispose, but in the case of ImageLoaders, SWFLoaders, and VideoLoaders, it also removes the ContentDisplay from the display list) + * @param newStatus The new LoaderStatus to which the loader should be set. + * @param suppressEvents To prevent events from being dispatched (like CANCEL or DISPOSE or PROGRESS), set suppressEvents to true. + **/ + protected function _dump(scrubLevel:int=0, newStatus:int=0, suppressEvents:Boolean=false):void { + _content = null; + var isLoading:Boolean = Boolean(_status == LoaderStatus.LOADING); + if (_status == LoaderStatus.PAUSED && newStatus != LoaderStatus.PAUSED && newStatus != LoaderStatus.FAILED) { + _prePauseStatus = newStatus; + } else if (_status != LoaderStatus.DISPOSED) { + _status = newStatus; + } + if (isLoading) { + _time = getTimer() - _time; + } + _cachedBytesLoaded = 0; + if (_status < LoaderStatus.FAILED) { + if (this is LoaderMax) { + _calculateProgress(); + } + if (_dispatchProgress && !suppressEvents) { + dispatchEvent(new LoaderEvent(LoaderEvent.PROGRESS, this)); + } + } + if (!suppressEvents) { + if (isLoading) { + dispatchEvent(new LoaderEvent(LoaderEvent.CANCEL, this)); + } + if (scrubLevel != 2) { + dispatchEvent(new LoaderEvent(LoaderEvent.UNLOAD, this)); + } + } + if (newStatus == LoaderStatus.DISPOSED) { + if (!suppressEvents) { + dispatchEvent(new Event("dispose")); + } + for (var p:String in _listenerTypes) { + if (p in this.vars && this.vars[p] is Function) { + this.removeEventListener(_listenerTypes[p], this.vars[p]); + } + } + } + } + + /** + * Removes any content that was loaded and sets bytesLoaded back to zero. When you + * unload() a LoaderMax instance, it will also call unload() on all of its + * children as well. If the loader is in the process of loading, it will automatically be canceled. + * + * @see #dispose() + **/ + public function unload():void { + _dump(1, LoaderStatus.READY); + } + + /** + * Disposes of the loader and releases it internally for garbage collection. If it is in the process of loading, it will also + * be cancelled immediately. By default, dispose() does NOT unload its content, but + * you may set the flushContent parameter to true in order to flush/unload the content as well + * (in the case of ImageLoaders, SWFLoaders, and VideoLoaders, this will also destroy its ContentDisplay Sprite, removing it + * from the display list if necessary). When a loader is disposed, all of the listeners that were added through the + * vars object (like {onComplete:completeHandler, onProgress:progressHandler}) are removed. + * If you manually added listeners, though, you should remove those yourself. + * + * @param flushContent If true, the loader's content will be unloaded as well (flushContent is false by default). In the case of ImageLoaders, SWFLoaders, and VideoLoaders, their ContentDisplay will also be removed from the display list if necessary when flushContent is true. + * @see #unload() + **/ + public function dispose(flushContent:Boolean=false):void { + _dump((flushContent ? 3 : 2), LoaderStatus.DISPOSED); + } + + /** + * Immediately prioritizes the loader inside any LoaderMax instances that contain it, + * forcing it to the top position in their queue and optionally calls load() + * immediately as well. If one of its parent LoaderMax instances is currently loading a + * different loader, that one will be temporarily cancelled. + * + *

    By contrast, when load() is called, it doesn't change the loader's position/index + * in any LoaderMax queues. For example, if a LoaderMax is working on loading the first object in + * its queue, you can call load() on the 20th item and it will honor your request without + * changing its index in the queue. prioritize(), however, affects the position + * in the queue and optionally loads it immediately as well.

    + * + *

    So even if your LoaderMax hasn't begun loading yet, you could prioritize(false) + * a loader and it will rise to the top of all LoaderMax instances to which it belongs, but not + * start loading yet. If the goal is to load something immediately, you can just use the + * load() method.

    + * + *

    You may use the static LoaderMax.prioritize() method instead and simply pass + * the name or url of the loader as the first parameter like:

    + * + * LoaderMax.prioritize("myLoaderName", true);

    + * + * @param loadNow If true (the default), the loader will start loading immediately (otherwise it is simply placed at the top the queue in any LoaderMax instances to which it belongs). + * @see #load() + **/ + public function prioritize(loadNow:Boolean=true):void { + dispatchEvent(new Event("prioritize")); + if (loadNow && _status != LoaderStatus.COMPLETED && _status != LoaderStatus.LOADING) { + load(false); + } + } + + /** @inheritDoc **/ + override public function addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false):void { + if (type == LoaderEvent.PROGRESS) { + _dispatchProgress = true; + } else if (type == LoaderEvent.CHILD_PROGRESS && this is LoaderMax) { + _dispatchChildProgress = true; + } + super.addEventListener(type, listener, useCapture, priority, useWeakReference); + } + + /** @private **/ + protected function _calculateProgress():void { + //override in subclasses if necessary + } + + /** + * Attempts loading just enough of the content to accurately determine the bytesTotal + * in order to improve the accuracy of the progress property. Once the + * bytesTotal has been determined or the auditSize() attempt fails due + * to an error (typically IO_ERROR or SECURITY_ERROR), the auditedSize property will be + * set to true. Auditing the size opens a URLStream that will be closed + * as soon as a response is received. + **/ + public function auditSize():void { + //override in subclasses + } + + /** Returns information about the loader, like its type, its name, and its url (if it has one). **/ + override public function toString():String { + return _type + " '" + this.name + "'" + ((this is LoaderItem) ? " (" + (this as LoaderItem).url + ")" : ""); + } + +//---- STATIC METHODS ------------------------------------------------------------------------------------ + + /** @private **/ + protected static function _activateClass(type:String, loaderClass:Class, extensions:String):Boolean { + if (type != "") { + _types[type.toLowerCase()] = loaderClass; + } + var a:Array = extensions.split(","); + var i:int = a.length; + while (--i > -1) { + _extensions[a[i]] = loaderClass; + } + return true; + } + + +//---- EVENT HANDLERS ------------------------------------------------------------------------------------ + + /** @private **/ + protected function _progressHandler(event:Event):void { + if (event is ProgressEvent) { + _cachedBytesLoaded = (event as ProgressEvent).bytesLoaded; + _cachedBytesTotal = (event as ProgressEvent).bytesTotal; + if (!_auditedSize) { + _auditedSize = true; + dispatchEvent(new Event("auditedSize")); + } + } + if (_dispatchProgress && _status == LoaderStatus.LOADING && _cachedBytesLoaded != _cachedBytesTotal) { + dispatchEvent(new LoaderEvent(LoaderEvent.PROGRESS, this)); + } + } + + /** @private **/ + protected function _completeHandler(event:Event=null):void { + _cachedBytesLoaded = _cachedBytesTotal; + if (_status != LoaderStatus.COMPLETED) { + dispatchEvent(new LoaderEvent(LoaderEvent.PROGRESS, this)); + _status = LoaderStatus.COMPLETED; + _time = getTimer() - _time; + } + dispatchEvent(new LoaderEvent(LoaderEvent.COMPLETE, this)); + if (this.autoDispose) { + dispose(); + } + } + + /** @private **/ + protected function _errorHandler(event:Event):void { + var target:Object = event.target; //trigger the LoaderEvent's target getter once first in order to ensure that it reports properly - see the notes in LoaderEvent.target for more details. + target = (event is LoaderEvent && this.hasOwnProperty("getChildren")) ? event.target : this; + var text:String = ""; + if (event.hasOwnProperty("error") && Object(event).error is Error) { + text = Object(event).error.message; + } else if (event.hasOwnProperty("text")) { + text = Object(event).text; + } + if (event.type != LoaderEvent.ERROR && event.type != LoaderEvent.FAIL && this.hasEventListener(event.type)) { + dispatchEvent(new LoaderEvent(event.type, target, text, event)); + } + if (event.type != "uncaughtError") { + trace("----\nError on " + this.toString() + ": " + text + "\n----"); + if (this.hasEventListener(LoaderEvent.ERROR)) { + dispatchEvent(new LoaderEvent(LoaderEvent.ERROR, target, this.toString() + " > " + text, event)); + } + } + } + + /** @private **/ + protected function _failHandler(event:Event, dispatchError:Boolean=true):void { + _dump(0, LoaderStatus.FAILED, true); + if (dispatchError) { + _errorHandler(event); + } else { + var target:Object = event.target; //trigger the LoaderEvent's target getter once first in order to ensure that it reports properly - see the notes in LoaderEvent.target for more details. + } + dispatchEvent(new LoaderEvent(LoaderEvent.FAIL, ((event is LoaderEvent && this.hasOwnProperty("getChildren")) ? event.target : this), this.toString() + " > " + (event as Object).text, event)); + dispatchEvent(new LoaderEvent(LoaderEvent.CANCEL, this)); + } + + /** @private **/ + protected function _passThroughEvent(event:Event):void { + var type:String = event.type; + var target:Object = this; + if (this.hasOwnProperty("getChildren")) { + if (event is LoaderEvent) { + target = event.target; + } + if (type == "complete") { + type = "childComplete"; + } else if (type == "open") { + type = "childOpen"; + } else if (type == "cancel") { + type = "childCancel"; + } else if (type == "fail") { + type = "childFail"; + } + } + if (this.hasEventListener(type)) { + dispatchEvent(new LoaderEvent(type, target, (event.hasOwnProperty("text") ? Object(event).text : ""), (event is LoaderEvent && LoaderEvent(event).data != null) ? LoaderEvent(event).data : event)); + } + } + + +//---- GETTERS / SETTERS ------------------------------------------------------------------------- + + /** If a loader is paused, its progress will halt and any LoaderMax instances to which it belongs will either skip over it or stop when its position is reached in the queue (depending on whether or not the LoaderMax's skipPaused property is true). **/ + public function get paused():Boolean { + return Boolean(_status == LoaderStatus.PAUSED); + } + public function set paused(value:Boolean):void { + if (value && _status != LoaderStatus.PAUSED) { + _prePauseStatus = _status; + if (_status == LoaderStatus.LOADING) { + _dump(0, LoaderStatus.PAUSED); + } + _status = LoaderStatus.PAUSED; + + } else if (!value && _status == LoaderStatus.PAUSED) { + if (_prePauseStatus == LoaderStatus.LOADING) { + load(false); //will change the _status for us inside load() + } else { + _status = _prePauseStatus || LoaderStatus.READY; + } + } + } + + /** Integer code indicating the loader's status; options are LoaderStatus.READY, LoaderStatus.LOADING, LoaderStatus.COMPLETED, LoaderStatus.PAUSED, and LoaderStatus.DISPOSED. **/ + public function get status():int { + return _status; + } + + /** Bytes loaded **/ + public function get bytesLoaded():uint { + if (_cacheIsDirty) { + _calculateProgress(); + } + return _cachedBytesLoaded; + } + + /** Total bytes that are to be loaded by the loader. Initially, this value is set to the estimatedBytes if one was defined in the vars object via the constructor, or it defaults to LoaderMax.defaultEstimatedBytes. When the loader loads enough of the content to accurately determine the bytesTotal, it will do so automatically. **/ + public function get bytesTotal():uint { + if (_cacheIsDirty) { + _calculateProgress(); + } + return _cachedBytesTotal; + } + + /** A value between 0 and 1 indicating the overall progress of the loader. When nothing has loaded, it will be 0; when it is halfway loaded, progress will be 0.5, and when it is fully loaded it will be 1. **/ + public function get progress():Number { + return (this.bytesTotal != 0) ? _cachedBytesLoaded / _cachedBytesTotal : (_status == LoaderStatus.COMPLETED) ? 1 : 0; + } + + /** @private Every loader is associated with a root-level LoaderMax which will be the _globalQueue unless the loader had a requireWithRoot value passed into the constructor via the vars parameter. This enables us to chain things properly in subloaded swfs if, for example, a subloaded swf has LoaderMax instances of its own and we want the SWFLoader to accurately report its loading status based not only on the subloaded swf, but also the subloaded swf's LoaderMax instances. **/ + public function get rootLoader():LoaderMax { + return _rootLoader; + } + + /** + * The content that was loaded by the loader which varies by the type of loader: + *
      + *
    • ImageLoader - A com.greensock.loading.display.ContentDisplay (a Sprite) which contains the ImageLoader's rawContent (a flash.display.Bitmap unless script access was denied in which case rawContent will be a flash.display.Loader to avoid security errors). For Flex users, you can set LoaderMax.defaultContentDisplay to FlexContentDisplay in which case ImageLoaders, SWFLoaders, and VideoLoaders will return a com.greensock.loading.display.FlexContentDisplay instance instead.
    • + *
    • SWFLoader - A com.greensock.loading.display.ContentDisplay (a Sprite) which contains the SWFLoader's rawContent (the swf's root DisplayObject unless script access was denied in which case rawContent will be a flash.display.Loader to avoid security errors). For Flex users, you can set LoaderMax.defaultContentDisplay to FlexContentDisplay in which case ImageLoaders, SWFLoaders, and VideoLoaders will return a com.greensock.loading.display.FlexContentDisplay instance instead.
    • + *
    • VideoLoader - A com.greensock.loading.display.ContentDisplay (a Sprite) which contains the VideoLoader's rawContent (a Video object to which the NetStream was attached). For Flex users, you can set LoaderMax.defaultContentDisplay to FlexContentDisplay in which case ImageLoaders, SWFLoaders, and VideoLoaders will return a com.greensock.loading.display.FlexContentDisplay instance instead.
    • + *
    • XMLLoader - XML
    • + *
    • DataLoader + *
        + *
      • String if the DataLoader's format vars property is "text" (the default).
      • + *
      • flash.utils.ByteArray if the DataLoader's format vars property is "binary".
      • + *
      • flash.net.URLVariables if the DataLoader's format vars property is "variables".
      • + *
    • + *
    • CSSLoader - flash.text.StyleSheet
    • + *
    • MP3Loader - flash.media.Sound
    • + *
    • LoaderMax - an array containing the content objects from each of its child loaders.
    • + *
    + **/ + public function get content():* { + return _content; + } + + /** + * Indicates whether or not the loader's bytesTotal value has been set by any of the following: + *
      + *
    • Defining an estimatedBytes in the vars object passed to the constructor
    • + *
    • Calling auditSize() and getting a response (an error is also considered a response)
    • + *
    • When a LoaderMax instance begins loading, it will automatically force a call to auditSize() for any of its children that don't have an estimatedBytes defined. You can disable this behavior by passing auditSize:false through the constructor's vars object.
    • + *
    + **/ + public function get auditedSize():Boolean { + return _auditedSize; + } + + /** + * The number of seconds that elapsed between when the loader began and when it either completed, failed, + * or was canceled. You may check a loader's loadTime anytime, not just after it completes. For + * example, you could access this value in an onProgress handler and you'd see it steadily increase as the loader + * loads and then when it completes, loadTime will stop increasing. LoaderMax instances ignore + * any pauses when calculating this value, so if a LoaderMax begins loading and after 1 second it gets paused, + * and then 10 seconds later it resumes and takes an additional 14 seconds to complete, its loadTime + * would be 15, not 25. + **/ + public function get loadTime():Number { + if (_status == LoaderStatus.READY) { + return 0; + } else if (_status == LoaderStatus.LOADING) { + return (getTimer() - _time) / 1000; + } else { + return _time / 1000; + } + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/loading/core/LoaderItem.as b/FairyGUI-as3/src/com/greensock/loading/core/LoaderItem.as new file mode 100644 index 0000000..86df56a --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/loading/core/LoaderItem.as @@ -0,0 +1,243 @@ +/** + * VERSION: 1.941 + * DATE: 2015-01-20 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/loadermax/ + **/ +package com.greensock.loading.core { + import com.greensock.events.LoaderEvent; + import com.greensock.loading.LoaderMax; + import com.greensock.loading.LoaderStatus; + + import flash.events.Event; + import flash.events.ProgressEvent; + import flash.net.URLRequest; + import flash.net.URLStream; + import flash.net.URLVariables; + + /** Dispatched when the loader experiences an IO_ERROR while loading or auditing its size. **/ + [Event(name="ioError", type="com.greensock.events.LoaderEvent")] +/** + * Serves as the base class for all individual loaders (not LoaderMax) like ImageLoader, + * XMLLoader, SWFLoader, MP3Loader, etc. There is no reason to use this class on its own. + * Please see the documentation for the other classes. + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class LoaderItem extends LoaderCore { + /** @private **/ + protected static var _cacheID:Number = new Date().getTime(); + /** @private **/ + protected static var _underlineExp:RegExp = /%5f/gi; + + /** @private **/ + protected var _url:String; + /** @private **/ + protected var _request:URLRequest; + /** @private **/ + protected var _scriptAccessDenied:Boolean; + /** @private used in auditSize() just to preload enough of the file to determine bytesTotal. **/ + protected var _auditStream:URLStream; + /** @private For certain types of loaders like SWFLoader and XMLLoader where there may be nested loaders found, it's better to prioritize the estimatedBytes if one is defined. Otherwise, the file size will be used which may be MUCH smaller than all the assets inside of it (like an XML file with a bunch of VideoLoaders).**/ + protected var _preferEstimatedBytesInAudit:Boolean; + /** @private **/ + protected var _httpStatus:int; + /** @private used to prevent problems that could occur if an audit is in process and load() is called on a bad URL - the audit could fail first and swap the URL and then when the real load fails just after that, we couldn't just do if (_url != this.vars.alternateURL) because the audit would have already changed it. **/ + protected var _skipAlternateURL:Boolean; + + /** + * Constructor + * + * @param urlOrRequest The url (String) or URLRequest from which the loader should get its content + * @param vars An object containing optional parameters like estimatedBytes, name, autoDispose, onComplete, onProgress, onError, etc. For example, {estimatedBytes:2400, name:"myImage1", onComplete:completeHandler}. + */ + public function LoaderItem(urlOrRequest:*, vars:Object=null) { + super(vars); + _request = (urlOrRequest is URLRequest) ? urlOrRequest as URLRequest : new URLRequest(urlOrRequest); + _url = _request.url; + _setRequestURL(_request, _url); + } + + /** @private **/ + protected function _prepRequest():void { + _scriptAccessDenied = false; + _httpStatus = 0; + _closeStream(); + if (this.vars.noCache && (!_isLocal || _url.substr(0, 4) == "http")) { + _setRequestURL(_request, _url, "gsCacheBusterID=" + (_cacheID++)); + } + } + + /** @private Flash doesn't properly apply extra GET url parameters when the URL contains them already (like "http://www.greensock.com?id=2") - it ends up missing an "&" delimiter so this method splits any that exist out into a URLVariables object and optionally adds extra parameters like gsCacheBusterID, etc. **/ + protected function _setRequestURL(request:URLRequest, url:String, extraParams:String=""):void { + var a:Array = (this.vars.allowMalformedURL) ? [url] : url.split("?"); + + //in order to avoid a VERY strange bug in certain versions of the Flash Player (like 10.0.12.36), we must loop through each character and rebuild a separate String variable instead of just using a[0], otherwise the "?" delimiter will be omitted when GET parameters are appended to the URL by Flash! Performing any String manipulations on the url will cause the issue as long as there is a "?" in the url. Like url.split("?") or url.substr(0, url.indexOf("?"), etc. Absolutely baffling. Definitely a bug in the Player - it was fixed in 10.1. + var s:String = a[0]; + var parsedURL:String = ""; + for (var i:int = 0; i < s.length; i++) { + parsedURL += s.charAt(i); + } + + request.url = parsedURL; + if (a.length >= 2) { + extraParams += (extraParams == "") ? a[1] : "&" + a[1]; + } + if (extraParams != "") { + var data:URLVariables = new URLVariables( ((request.data is URLVariables) ? request.data.toString() : null) ); + a = extraParams.split("&"); + i = a.length; + var pair:Array; + while (--i > -1) { + pair = a[i].split("="); + data[pair.shift()] = pair.join("="); + } + request.data = data.toString().replace(_underlineExp, "_"); + + if (this.vars.allowMalformedURL) { + request.url += ((request.url.indexOf("?") == -1) ? "?" : "&") + request.data.toString(); + request.data = null; + } + } + if (_isLocal && this.vars.allowMalformedURL != true && _request.data != null && _request.url.substr(0, 4) != "http") { + _request.method = "POST"; //to avoid errors when loading local files with GET URL parameters + } + } + + /** @private scrubLevel: 0 = cancel, 1 = unload, 2 = dispose, 3 = flush **/ + override protected function _dump(scrubLevel:int=0, newStatus:int=0, suppressEvents:Boolean=false):void { + _closeStream(); + super._dump(scrubLevel, newStatus, suppressEvents); + } + + /** @inheritDoc **/ + override public function auditSize():void { + if (_auditStream == null) { + _auditStream = new URLStream(); + _auditStream.addEventListener(ProgressEvent.PROGRESS, _auditStreamHandler, false, 0, true); + _auditStream.addEventListener(Event.COMPLETE, _auditStreamHandler, false, 0, true); + _auditStream.addEventListener("ioError", _auditStreamHandler, false, 0, true); + _auditStream.addEventListener("securityError", _auditStreamHandler, false, 0, true); + var request:URLRequest = new URLRequest(); + request.data = _request.data; + request.method = _request.method; + _setRequestURL(request, _url, (!_isLocal || _url.substr(0, 4) == "http") ? "gsCacheBusterID=" + (_cacheID++) + "&purpose=audit" : ""); + _auditStream.load(request); + } + } + + /** @private **/ + protected function _closeStream():void { + if (_auditStream != null) { + _auditStream.removeEventListener(ProgressEvent.PROGRESS, _auditStreamHandler); + _auditStream.removeEventListener(Event.COMPLETE, _auditStreamHandler); + _auditStream.removeEventListener("ioError", _auditStreamHandler); + _auditStream.removeEventListener("securityError", _auditStreamHandler); + try { + _auditStream.close(); + } catch (error:Error) { + + } + _auditStream = null; + } + } + +//---- EVENT HANDLERS ------------------------------------------------------------------------------------ + + /** @private **/ + protected function _auditStreamHandler(event:Event):void { + if (event is ProgressEvent) { + _cachedBytesTotal = (event as ProgressEvent).bytesTotal; + if (_preferEstimatedBytesInAudit && uint(this.vars.estimatedBytes) > _cachedBytesTotal) { + _cachedBytesTotal = uint(this.vars.estimatedBytes); + } + } else if (event.type == "ioError" || event.type == "securityError") { + if (this.vars.alternateURL != undefined && this.vars.alternateURL != "" && this.vars.alternateURL != _url) { + _errorHandler(event); + if (_status != LoaderStatus.DISPOSED) { //it is conceivable that the user disposed the loader in an onError handler + _url = this.vars.alternateURL; + _setRequestURL(_request, _url); + var request:URLRequest = new URLRequest(); + request.data = _request.data; + request.method = _request.method; + _setRequestURL(request, _url, (!_isLocal || _url.substr(0, 4) == "http") ? "gsCacheBusterID=" + (_cacheID++) + "&purpose=audit" : ""); + _auditStream.load(request); + } + return; + } else { + //note: a CANCEL event won't be dispatched because technically the loader wasn't officially loading - we were only briefly checking the bytesTotal with a URLStream. + super._failHandler(event); + } + } + _auditedSize = true; + _closeStream(); + dispatchEvent(new Event("auditedSize")); + } + + /** @private **/ + override protected function _failHandler(event:Event, dispatchError:Boolean=true):void { + if (this.vars.alternateURL != undefined && this.vars.alternateURL != "" && !_skipAlternateURL) { //don't do (_url != vars.alternateURL) because the audit could have changed it already - that's the whole purpose of _skipAlternateURL. + _errorHandler(event); + _skipAlternateURL = true; + _url = "temp" + (new Date().getTime()); //in case the audit already changed the _url to vars.alternateURL, we temporarily make it something different in order to force the refresh in the url setter which skips running the code if the url is set to the same value as it previously was. Don't use Math.random() because for some reason, Google Display Network disallows it (citing security reasons). + this.url = this.vars.alternateURL; //also calls _load() + } else { + super._failHandler(event, dispatchError); + } + } + + + /** @private **/ + protected function _httpStatusHandler(event:Event):void { + _httpStatus = (event as Object).status; + dispatchEvent(new LoaderEvent(event.type, this, String(_httpStatus), event)); + } + + +//---- GETTERS / SETTERS ------------------------------------------------------------------------- + + /** The url from which the loader should get its content. **/ + public function get url():String { + return _url; + } + public function set url(value:String):void { + if (_url != value) { + _url = value; + _setRequestURL(_request, _url); + var isLoading:Boolean = Boolean(_status == LoaderStatus.LOADING); + _dump(1, LoaderStatus.READY, true); + _auditedSize = Boolean(uint(this.vars.estimatedBytes) != 0 && this.vars.auditSize != true); + _cachedBytesTotal = (uint(this.vars.estimatedBytes) != 0) ? uint(this.vars.estimatedBytes) : LoaderMax.defaultEstimatedBytes; + _cacheIsDirty = true; + if (isLoading) { + _load(); + } + } + } + + /** The URLRequest associated with the loader. **/ + public function get request():URLRequest { + return _request; + } + + /** The httpStatus code of the loader. You may listen for LoaderEvent.HTTP_STATUS events on certain types of loaders to be notified when it changes, but in some environments the Flash player cannot sense httpStatus codes in which case the value will remain 0. **/ + public function get httpStatus():int { + return _httpStatus; + } + + /** + * If the loaded content is denied script access (because of security sandbox restrictions, + * a missing crossdomain.xml file, etc.), scriptAccessDenied will be set to true. + * In the case of loaded images or swf files, this means that you should not attempt to perform + * BitmapData operations on the content. An image's smoothing property cannot be set + * to true either. Even if script access is denied for particular content, LoaderMax will still + * attempt to load it. + **/ + public function get scriptAccessDenied():Boolean { + return _scriptAccessDenied; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/loading/data/CSSLoaderVars.as b/FairyGUI-as3/src/com/greensock/loading/data/CSSLoaderVars.as new file mode 100644 index 0000000..ab0f391 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/loading/data/CSSLoaderVars.as @@ -0,0 +1,184 @@ +/** + * VERSION: 1.2 + * DATE: 2011-03-23 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/loadermax/ + **/ +package com.greensock.loading.data { + import flash.display.DisplayObject; +/** + * Can be used instead of a generic Object to define the vars parameter of a CSSLoader's constructor. + * + *

    There are 2 primary benefits of using a CSSLoaderVars instance to define your CSSLoader variables:

    + *
      + *
    1. In most code editors, code hinting will be activated which helps remind you which special properties are available in CSSLoader
    2. + *
    3. It enables strict data typing for improved debugging (ensuring, for example, that you don't define a Boolean value for onComplete where a Function is expected).
    4. + *
    + * + *

    The down side, of course, is that the code is more verbose and the CSSLoaderVars class adds slightly more kb to your swf.

    + * + *

    USAGE:

    + *

    Note that each method returns the CSSLoaderVars instance, so you can reduce the lines of code by method chaining (see example below).

    + * + *

    Without CSSLoaderVars:

    + * new CSSLoader("styles.css", {name:"css", estimatedBytes:1500, onComplete:completeHandler, onProgress:progressHandler})

    + * + *

    With CSSLoaderVars

    + * new CSSLoader("styles.css", new CSSLoaderVars().name("css").estimatedBytes(1500).onComplete(completeHandler).onProgress(progressHandler))

    + * + *

    NOTES:

    + *
      + *
    • To get the generic vars object that CSSLoaderVars builds internally, simply access its "vars" property. + * In fact, if you want maximum backwards compatibility, you can tack ".vars" onto the end of your chain like this:
      + * new CSSLoader("styles.css", new CSSLoaderVars().name("css").estimatedBytes(1500).vars);
    • + *
    • Using CSSLoaderVars is completely optional. If you prefer the shorter synatax with the generic Object, feel + * free to use it. The purpose of this class is simply to enable code hinting and to allow for strict data typing.
    • + *
    + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class CSSLoaderVars { + /** @private **/ + public static const version:Number = 1.2; + + /** @private **/ + protected var _vars:Object; + + /** + * Constructor + * @param vars A generic Object containing properties that you'd like to add to this CSSLoaderVars instance. + */ + public function CSSLoaderVars(vars:Object=null) { + _vars = {}; + if (vars != null) { + for (var p:String in vars) { + _vars[p] = vars[p]; + } + } + } + + /** @private **/ + protected function _set(property:String, value:*):CSSLoaderVars { + if (value == null) { + delete _vars[property]; //in case it was previously set + } else { + _vars[property] = value; + } + return this; + } + + /** + * Adds a dynamic property to the vars object containing any value you want. This can be useful + * in situations where you need to associate certain data with a particular loader. Just make sure + * that the property name is a valid variable name (starts with a letter or underscore, no special characters, etc.) + * and that it doesn't use a reserved property name like "name" or "onComplete", etc. + * + * For example, to set an "index" property to 5, do: + * + * prop("index", 5); + * + * @param property Property name + * @param value Value + */ + public function prop(property:String, value:*):CSSLoaderVars { + return _set(property, value); + } + + +//---- LOADERCORE PROPERTIES ----------------------------------------------------------------- + + /** When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false.**/ + public function autoDispose(value:Boolean):CSSLoaderVars { + return _set("autoDispose", value); + } + + /** A name that is used to identify the loader instance. This name can be fed to the LoaderMax.getLoader() or LoaderMax.getContent() methods or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21". **/ + public function name(value:String):CSSLoaderVars { + return _set("name", value); + } + + /** A handler function for LoaderEvent.CANCEL events which are dispatched when loading is aborted due to either a failure or because another loader was prioritized or cancel() was manually called. Make sure your onCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onCancel(value:Function):CSSLoaderVars { + return _set("onCancel", value); + } + + /** A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading successfully. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onComplete(value:Function):CSSLoaderVars { + return _set("onComplete", value); + } + + /** A handler function for LoaderEvent.ERROR events which are dispatched whenever the loader experiences an error (typically an IO_ERROR or SECURITY_ERROR). An error doesn't necessarily mean the loader failed, however - to listen for when a loader fails, use the onFail special property. Make sure your onError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onError(value:Function):CSSLoaderVars { + return _set("onError", value); + } + + /** A handler function for LoaderEvent.FAIL events which are dispatched whenever the loader fails and its status changes to LoaderStatus.FAILED. Make sure your onFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onFail(value:Function):CSSLoaderVars { + return _set("onFail", value); + } + + /** A handler function for LoaderEvent.HTTP_STATUS events. Make sure your onHTTPStatus function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can determine the httpStatus code using the LoaderEvent's target.httpStatus (LoaderItems keep track of their httpStatus when possible, although certain environments prevent Flash from getting httpStatus information).**/ + public function onHTTPStatus(value:Function):CSSLoaderVars { + return _set("onHTTPStatus", value); + } + + /** A handler function for LoaderEvent.IO_ERROR events which will also call the onError handler, so you can use that as more of a catch-all whereas onIOError is specifically for LoaderEvent.IO_ERROR events. Make sure your onIOError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onIOError(value:Function):CSSLoaderVars { + return _set("onIOError", value); + } + + /** A handler function for LoaderEvent.OPEN events which are dispatched when the loader begins loading. Make sure your onOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).**/ + public function onOpen(value:Function):CSSLoaderVars { + return _set("onOpen", value); + } + + /** A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.**/ + public function onProgress(value:Function):CSSLoaderVars { + return _set("onProgress", value); + } + + /** LoaderMax supports subloading, where an object can be factored into a parent's loading progress. If you want LoaderMax to require this loader as part of its parent SWFLoader's progress, you must set the requireWithRoot property to your swf's root. For example, vars.requireWithRoot = this.root;. **/ + public function requireWithRoot(value:DisplayObject):CSSLoaderVars { + return _set("requireWithRoot", value); + } + + +//---- LOADERITEM PROPERTIES ------------------------------------------------------------- + + /** If you define an alternateURL, the loader will initially try to load from its original url and if it fails, it will automatically (and permanently) change the loader's url to the alternateURL and try again. Think of it as a fallback or backup url. It is perfectly acceptable to use the same alternateURL for multiple loaders (maybe a default image for various ImageLoaders for example). **/ + public function alternateURL(value:String):CSSLoaderVars { + return _set("alternateURL", value); + } + + /** Initially, the loader's bytesTotal is set to the estimatedBytes value (or LoaderMax.defaultEstimatedBytes if one isn't defined). Then, when the loader begins loading and it can accurately determine the bytesTotal, it will do so. Setting estimatedBytes is optional, but the more accurate the value, the more accurate your loaders' overall progress will be initially. If the loader is inserted into a LoaderMax instance (for queue management), its auditSize feature can attempt to automatically determine the bytesTotal at runtime (there is a slight performance penalty for this, however - see LoaderMax's documentation for details). **/ + public function estimatedBytes(value:uint):CSSLoaderVars { + return _set("estimatedBytes", value); + } + + /** If true, a "gsCacheBusterID" parameter will be appended to the url with a random set of numbers to prevent caching (don't worry, this info is ignored when you LoaderMax.getLoader() or LoaderMax.getContent() by url or when you're running locally). **/ + public function noCache(value:Boolean):CSSLoaderVars { + return _set("noCache", value); + } + + /** Normally, the URL will be parsed and any variables in the query string (like "?name=test&state=il&gender=m") will be placed into a URLVariables object which is added to the URLRequest. This avoids a few bugs in Flash, but if you need to keep the entire URL intact (no parsing into URLVariables), set allowMalformedURL:true. For example, if your URL has duplicate variables in the query string like http://www.greensock.com/?c=S&c=SE&c=SW, it is technically considered a malformed URL and a URLVariables object can't properly contain all the duplicates, so in this case you'd want to set allowMalformedURL to true. **/ + public function allowMalformedURL(value:Boolean):CSSLoaderVars { + return _set("allowMalformedURL", value); + } + + +//---- GETTERS / SETTERS ----------------------------------------------------------------- + + /** The generic Object populated by all of the method calls in the CSSLoaderVars instance. This is the raw data that gets passed to the loader. **/ + public function get vars():Object { + return _vars; + } + + /** @private **/ + public function get isGSVars():Boolean { + return true; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/loading/data/DataLoaderVars.as b/FairyGUI-as3/src/com/greensock/loading/data/DataLoaderVars.as new file mode 100644 index 0000000..4b9b4e6 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/loading/data/DataLoaderVars.as @@ -0,0 +1,192 @@ +/** + * VERSION: 1.2 + * DATE: 2011-03-23 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/loadermax/ + **/ +package com.greensock.loading.data { + import flash.display.DisplayObject; +/** + * Can be used instead of a generic Object to define the vars parameter of a DataLoader's constructor. + * + *

    There are 2 primary benefits of using a DataLoaderVars instance to define your DataLoader variables:

    + *
      + *
    1. In most code editors, code hinting will be activated which helps remind you which special properties are available in DataLoader
    2. + *
    3. It enables strict data typing for improved debugging (ensuring, for example, that you don't define a Boolean value for onComplete where a Function is expected).
    4. + *
    + * + *

    The down side, of course, is that the code is more verbose and the DataLoaderVars class adds slightly more kb to your swf.

    + * + *

    USAGE:

    + *

    Note that each method returns the DataLoaderVars instance, so you can reduce the lines of code by method chaining (see example below).

    + * + *

    Without DataLoaderVars:

    + * new DataLoader("getData.php", {name:"myData", estimatedBytes:1500, format:"text", onComplete:completeHandler, onProgress:progressHandler});

    + * + *

    With DataLoaderVars

    + * new DataLoader("getData.php", new DataLoaderVars().name("myData").estimatedBytes(1500).format("text").onComplete(completeHandler).onProgress(progressHandler));

    + * + *

    NOTES:

    + *
      + *
    • To get the generic vars object that DataLoaderVars builds internally, simply access its "vars" property. + * In fact, if you want maximum backwards compatibility, you can tack ".vars" onto the end of your chain like this: + * new DataLoader("getData.php", new DataLoaderVars().name("myData").estimatedBytes(1500).format("text").vars);
    • + *
    • Using DataLoaderVars is completely optional. If you prefer the shorter synatax with the generic Object, feel + * free to use it. The purpose of this class is simply to enable code hinting and to allow for strict data typing.
    • + *
    + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class DataLoaderVars { + /** @private **/ + public static const version:Number = 1.2; + + /** @private **/ + protected var _vars:Object; + + /** + * Constructor + * @param vars A generic Object containing properties that you'd like to add to this DataLoaderVars instance. + */ + public function DataLoaderVars(vars:Object=null) { + _vars = {}; + if (vars != null) { + for (var p:String in vars) { + _vars[p] = vars[p]; + } + } + } + + /** @private **/ + protected function _set(property:String, value:*):DataLoaderVars { + if (value == null) { + delete _vars[property]; //in case it was previously set + } else { + _vars[property] = value; + } + return this; + } + + /** + * Adds a dynamic property to the vars object containing any value you want. This can be useful + * in situations where you need to associate certain data with a particular loader. Just make sure + * that the property name is a valid variable name (starts with a letter or underscore, no special characters, etc.) + * and that it doesn't use a reserved property name like "name" or "onComplete", etc. + * + * For example, to set an "index" property to 5, do: + * + * prop("index", 5); + * + * @param property Property name + * @param value Value + */ + public function prop(property:String, value:*):DataLoaderVars { + return _set(property, value); + } + + +//---- LOADERCORE PROPERTIES ----------------------------------------------------------------- + + /** When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false.**/ + public function autoDispose(value:Boolean):DataLoaderVars { + return _set("autoDispose", value); + } + + /** A name that is used to identify the loader instance. This name can be fed to the LoaderMax.getLoader() or LoaderMax.getContent() methods or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21". **/ + public function name(value:String):DataLoaderVars { + return _set("name", value); + } + + /** A handler function for LoaderEvent.CANCEL events which are dispatched when loading is aborted due to either a failure or because another loader was prioritized or cancel() was manually called. Make sure your onCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onCancel(value:Function):DataLoaderVars { + return _set("onCancel", value); + } + + /** A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading successfully. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onComplete(value:Function):DataLoaderVars { + return _set("onComplete", value); + } + + /** A handler function for LoaderEvent.ERROR events which are dispatched whenever the loader experiences an error (typically an IO_ERROR or SECURITY_ERROR). An error doesn't necessarily mean the loader failed, however - to listen for when a loader fails, use the onFail special property. Make sure your onError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onError(value:Function):DataLoaderVars { + return _set("onError", value); + } + + /** A handler function for LoaderEvent.FAIL events which are dispatched whenever the loader fails and its status changes to LoaderStatus.FAILED. Make sure your onFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onFail(value:Function):DataLoaderVars { + return _set("onFail", value); + } + + /** A handler function for LoaderEvent.HTTP_STATUS events. Make sure your onHTTPStatus function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can determine the httpStatus code using the LoaderEvent's target.httpStatus (LoaderItems keep track of their httpStatus when possible, although certain environments prevent Flash from getting httpStatus information).**/ + public function onHTTPStatus(value:Function):DataLoaderVars { + return _set("onHTTPStatus", value); + } + + /** A handler function for LoaderEvent.IO_ERROR events which will also call the onError handler, so you can use that as more of a catch-all whereas onIOError is specifically for LoaderEvent.IO_ERROR events. Make sure your onIOError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onIOError(value:Function):DataLoaderVars { + return _set("onIOError", value); + } + + /** A handler function for LoaderEvent.OPEN events which are dispatched when the loader begins loading. Make sure your onOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).**/ + public function onOpen(value:Function):DataLoaderVars { + return _set("onOpen", value); + } + + /** A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.**/ + public function onProgress(value:Function):DataLoaderVars { + return _set("onProgress", value); + } + + /** LoaderMax supports subloading, where an object can be factored into a parent's loading progress. If you want LoaderMax to require this loader as part of its parent SWFLoader's progress, you must set the requireWithRoot property to your swf's root. For example, vars.requireWithRoot = this.root;. **/ + public function requireWithRoot(value:DisplayObject):DataLoaderVars { + return _set("requireWithRoot", value); + } + + +//---- LOADERITEM PROPERTIES ------------------------------------------------------------- + + /** If you define an alternateURL, the loader will initially try to load from its original url and if it fails, it will automatically (and permanently) change the loader's url to the alternateURL and try again. Think of it as a fallback or backup url. It is perfectly acceptable to use the same alternateURL for multiple loaders (maybe a default image for various ImageLoaders for example). **/ + public function alternateURL(value:String):DataLoaderVars { + return _set("alternateURL", value); + } + + /** Initially, the loader's bytesTotal is set to the estimatedBytes value (or LoaderMax.defaultEstimatedBytes if one isn't defined). Then, when the loader begins loading and it can accurately determine the bytesTotal, it will do so. Setting estimatedBytes is optional, but the more accurate the value, the more accurate your loaders' overall progress will be initially. If the loader is inserted into a LoaderMax instance (for queue management), its auditSize feature can attempt to automatically determine the bytesTotal at runtime (there is a slight performance penalty for this, however - see LoaderMax's documentation for details). **/ + public function estimatedBytes(value:uint):DataLoaderVars { + return _set("estimatedBytes", value); + } + + /** If true, a "gsCacheBusterID" parameter will be appended to the url with a random set of numbers to prevent caching (don't worry, this info is ignored when you LoaderMax.getLoader() or LoaderMax.getContent() by url or when you're running locally). **/ + public function noCache(value:Boolean):DataLoaderVars { + return _set("noCache", value); + } + + /** Normally, the URL will be parsed and any variables in the query string (like "?name=test&state=il&gender=m") will be placed into a URLVariables object which is added to the URLRequest. This avoids a few bugs in Flash, but if you need to keep the entire URL intact (no parsing into URLVariables), set allowMalformedURL:true. For example, if your URL has duplicate variables in the query string like http://www.greensock.com/?c=S&c=SE&c=SW, it is technically considered a malformed URL and a URLVariables object can't properly contain all the duplicates, so in this case you'd want to set allowMalformedURL to true. **/ + public function allowMalformedURL(value:Boolean):DataLoaderVars { + return _set("allowMalformedURL", value); + } + + +//---- DATALOADER PROPERTIES ------------------------------------------------------------- + + /** Controls whether the downloaded data is received as text ("text"), raw binary data ("binary"), or URL-encoded variables ("variables"). **/ + public function format(value:String):DataLoaderVars { + return _set("format", value); + } + + +//---- GETTERS / SETTERS ----------------------------------------------------------------- + + /** The generic Object populated by all of the method calls in the DataLoaderVars instance. This is the raw data that gets passed to the loader. **/ + public function get vars():Object { + return _vars; + } + + /** @private **/ + public function get isGSVars():Boolean { + return true; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/loading/data/ImageLoaderVars.as b/FairyGUI-as3/src/com/greensock/loading/data/ImageLoaderVars.as new file mode 100644 index 0000000..810c77c --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/loading/data/ImageLoaderVars.as @@ -0,0 +1,341 @@ +/** + * VERSION: 1.22 + * DATE: 2011-05-05 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/loadermax/ + **/ +package com.greensock.loading.data { + import flash.display.DisplayObject; + import flash.display.DisplayObjectContainer; + import flash.system.LoaderContext; +/** + * Can be used instead of a generic object to define the vars parameter of an ImageLoader's constructor. + * + *

    There are 2 primary benefits of using a ImageLoaderVars instance to define your ImageLoader variables:

    + *
      + *
    1. In most code editors, code hinting will be activated which helps remind you which special properties are available in ImageLoader
    2. + *
    3. It enables strict data typing for improved debugging (ensuring, for example, that you don't define a Boolean value for onComplete where a Function is expected).
    4. + *
    + * + *

    USAGE

    + *

    Note that each method returns the ImageLoaderVars instance, so you can reduce the lines of code by method chaining (see example below).

    + * + *

    Without ImageLoaderVars:

    + * new ImageLoader("photo1.jpg", {name:"photo1", estimatedBytes:11500, container:this, width:200, height:100, onComplete:completeHandler, onProgress:progressHandler})

    + * + *

    With ImageLoaderVars

    + * new ImageLoader("photo1.jpg", new ImageLoaderVars().name("photo1").estimatedBytes(11500).container(this).width(200).height(100).onComplete(completeHandler).onProgress(progressHandler))

    + * + *

    NOTES:

    + *
      + *
    • To get the generic vars object that ImageLoaderVars builds internally, simply access its "vars" property. + * In fact, if you want maximum backwards compatibility, you can tack ".vars" onto the end of your chain like this: + * new ImageLoader("photo1.jpg", new ImageLoaderVars().name("photo1").estimatedBytes(11500).vars);
    • + *
    • Using ImageLoaderVars is completely optional. If you prefer the shorter synatax with the generic Object, feel + * free to use it. The purpose of this class is simply to enable code hinting and to allow for strict data typing.
    • + *
    + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class ImageLoaderVars { + /** @private **/ + public static const version:Number = 1.22; + + /** @private **/ + protected var _vars:Object; + + /** + * Constructor + * + * @param vars A generic Object containing properties that you'd like to add to this ImageLoaderVars instance. + */ + public function ImageLoaderVars(vars:Object=null) { + _vars = {}; + if (vars != null) { + for (var p:String in vars) { + _vars[p] = vars[p]; + } + } + } + + /** @private **/ + protected function _set(property:String, value:*):ImageLoaderVars { + if (value == null) { + delete _vars[property]; //in case it was previously set + } else { + _vars[property] = value; + } + return this; + } + + /** + * Adds a dynamic property to the vars object containing any value you want. This can be useful + * in situations where you need to associate certain data with a particular loader. Just make sure + * that the property name is a valid variable name (starts with a letter or underscore, no special characters, etc.) + * and that it doesn't use a reserved property name like "name" or "onComplete", etc. + * + * For example, to set an "index" property to 5, do: + * + * prop("index", 5); + * + * @param property Property name + * @param value Value + */ + public function prop(property:String, value:*):ImageLoaderVars { + return _set(property, value); + } + + +//---- LOADERCORE PROPERTIES ----------------------------------------------------------------- + + /** When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false.**/ + public function autoDispose(value:Boolean):ImageLoaderVars { + return _set("autoDispose", value); + } + + /** A name that is used to identify the loader instance. This name can be fed to the LoaderMax.getLoader() or LoaderMax.getContent() methods or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21". **/ + public function name(value:String):ImageLoaderVars { + return _set("name", value); + } + + /** A handler function for LoaderEvent.CANCEL events which are dispatched when loading is aborted due to either a failure or because another loader was prioritized or cancel() was manually called. Make sure your onCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onCancel(value:Function):ImageLoaderVars { + return _set("onCancel", value); + } + + /** A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading successfully. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onComplete(value:Function):ImageLoaderVars { + return _set("onComplete", value); + } + + /** A handler function for LoaderEvent.ERROR events which are dispatched whenever the loader experiences an error (typically an IO_ERROR or SECURITY_ERROR). An error doesn't necessarily mean the loader failed, however - to listen for when a loader fails, use the onFail special property. Make sure your onError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onError(value:Function):ImageLoaderVars { + return _set("onError", value); + } + + /** A handler function for LoaderEvent.FAIL events which are dispatched whenever the loader fails and its status changes to LoaderStatus.FAILED. Make sure your onFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onFail(value:Function):ImageLoaderVars { + return _set("onFail", value); + } + + /** A handler function for LoaderEvent.HTTP_STATUS events. Make sure your onHTTPStatus function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can determine the httpStatus code using the LoaderEvent's target.httpStatus (LoaderItems keep track of their httpStatus when possible, although certain environments prevent Flash from getting httpStatus information).**/ + public function onHTTPStatus(value:Function):ImageLoaderVars { + return _set("onHTTPStatus", value); + } + + /** A handler function for LoaderEvent.IO_ERROR events which will also call the onError handler, so you can use that as more of a catch-all whereas onIOError is specifically for LoaderEvent.IO_ERROR events. Make sure your onIOError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onIOError(value:Function):ImageLoaderVars { + return _set("onIOError", value); + } + + /** A handler function for LoaderEvent.OPEN events which are dispatched when the loader begins loading. Make sure your onOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).**/ + public function onOpen(value:Function):ImageLoaderVars { + return _set("onOpen", value); + } + + /** A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.**/ + public function onProgress(value:Function):ImageLoaderVars { + return _set("onProgress", value); + } + + /** LoaderMax supports subloading, where an object can be factored into a parent's loading progress. If you want LoaderMax to require this loader as part of its parent SWFLoader's progress, you must set the requireWithRoot property to your swf's root. For example, vars.requireWithRoot = this.root;. **/ + public function requireWithRoot(value:DisplayObject):ImageLoaderVars { + return _set("requireWithRoot", value); + } + + +//---- LOADERITEM PROPERTIES ------------------------------------------------------------- + + /** If you define an alternateURL, the loader will initially try to load from its original url and if it fails, it will automatically (and permanently) change the loader's url to the alternateURL and try again. Think of it as a fallback or backup url. It is perfectly acceptable to use the same alternateURL for multiple loaders (maybe a default image for various ImageLoaders for example). **/ + public function alternateURL(value:String):ImageLoaderVars { + return _set("alternateURL", value); + } + + /** Initially, the loader's bytesTotal is set to the estimatedBytes value (or LoaderMax.defaultEstimatedBytes if one isn't defined). Then, when the loader begins loading and it can accurately determine the bytesTotal, it will do so. Setting estimatedBytes is optional, but the more accurate the value, the more accurate your loaders' overall progress will be initially. If the loader is inserted into a LoaderMax instance (for queue management), its auditSize feature can attempt to automatically determine the bytesTotal at runtime (there is a slight performance penalty for this, however - see LoaderMax's documentation for details). **/ + public function estimatedBytes(value:uint):ImageLoaderVars { + return _set("estimatedBytes", value); + } + + /** If true, a "gsCacheBusterID" parameter will be appended to the url with a random set of numbers to prevent caching (don't worry, this info is ignored when you LoaderMax.getLoader() or LoaderMax.getContent() by url or when you're running locally). **/ + public function noCache(value:Boolean):ImageLoaderVars { + return _set("noCache", value); + } + + /** Normally, the URL will be parsed and any variables in the query string (like "?name=test&state=il&gender=m") will be placed into a URLVariables object which is added to the URLRequest. This avoids a few bugs in Flash, but if you need to keep the entire URL intact (no parsing into URLVariables), set allowMalformedURL:true. For example, if your URL has duplicate variables in the query string like http://www.greensock.com/?c=S&c=SE&c=SW, it is technically considered a malformed URL and a URLVariables object can't properly contain all the duplicates, so in this case you'd want to set allowMalformedURL to true. **/ + public function allowMalformedURL(value:Boolean):ImageLoaderVars { + return _set("allowMalformedURL", value); + } + + +//---- DISPLAYOBJECTLOADER PROPERTIES ------------------------------------------------------------ + + + /** Sets the ContentDisplay's alpha property. **/ + public function alpha(value:Number):ImageLoaderVars { + return _set("alpha", value); + } + + /** Controls the alpha of the rectangle that is drawn when a width and height are defined. **/ + public function bgAlpha(value:Number):ImageLoaderVars { + return _set("bgAlpha", value); + } + + /** When a width and height are defined, a rectangle will be drawn inside the ContentDisplay Sprite immediately in order to ease the development process. It is transparent by default, but you may define a bgColor if you prefer. **/ + public function bgColor(value:uint):ImageLoaderVars { + return _set("bgColor", value); + } + + /** Sets the ContentDisplay's blendMode property. **/ + public function blendMode(value:String):ImageLoaderVars { + return _set("blendMode", value); + } + + /** If true, the registration point will be placed in the center of the ContentDisplay which can be useful if, for example, you want to animate its scale and have it grow/shrink from its center. **/ + public function centerRegistration(value:Boolean):ImageLoaderVars { + return _set("centerRegistration", value); + } + + /** A DisplayObjectContainer into which the ContentDisplay Sprite should be added immediately. **/ + public function container(value:DisplayObjectContainer):ImageLoaderVars { + return _set("container", value); + } + + /** To control whether or not a policy file is checked (which is required if you're loading an image from another domain and you want to use it in BitmapData operations), define a LoaderContext object. By default, the policy file will be checked when running remotely, so make sure the appropriate crossdomain.xml file is in place. See Adobe's LoaderContext documentation for details and precautions. **/ + public function context(value:LoaderContext):ImageLoaderVars { + return _set("context", value); + } + + /** When a width and height are defined, setting crop to true will cause the image to be cropped within that area (by applying a scrollRect for maximum performance). This is typically useful when the scaleMode is "proportionalOutside" or "none" so that any parts of the image that exceed the dimensions defined by width and height are visually chopped off. Use the hAlign and vAlign special properties to control the vertical and horizontal alignment within the cropped area. **/ + public function crop(value:Boolean):ImageLoaderVars { + return _set("crop", value); + } + + /** + * When a width and height is defined, the hAlign determines how the image is horizontally aligned within that area. The following values are recognized (you may use the com.greensock.layout.AlignMode constants if you prefer): + *
      + *
    • "center" (the default) - The image will be centered horizontally in the area
    • + *
    • "left" - The image will be aligned with the left side of the area
    • + *
    • "right" - The image will be aligned with the right side of the area
    • + *
    + **/ + public function hAlign(value:String):ImageLoaderVars { + return _set("hAlign", value); + } + + /** Sets the ContentDisplay's height property (applied before rotation, scaleX, and scaleY). **/ + public function height(value:Number):ImageLoaderVars { + return _set("height", value); + } + + /** A handler function for LoaderEvent.SECURITY_ERROR events which onError handles as well, so you can use that as more of a catch-all whereas onSecurityError is specifically for SECURITY_ERROR events. Make sure your onSecurityError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onSecurityError(value:Function):ImageLoaderVars { + return _set("onSecurityError", value); + } + + /** Sets the ContentDisplay's rotation property. **/ + public function rotation(value:Number):ImageLoaderVars { + return _set("rotation", value); + } + + /** Sets the ContentDisplay's rotationX property. **/ + public function rotationX(value:Number):ImageLoaderVars { + return _set("rotationX", value); + } + + /** Sets the ContentDisplay's rotationY property. **/ + public function rotationY(value:Number):ImageLoaderVars { + return _set("rotationY", value); + } + + /** Sets the ContentDisplay's rotationZ property. **/ + public function rotationZ(value:Number):ImageLoaderVars { + return _set("rotationZ", value); + } + + /** + * When a width and height are defined, the scaleMode controls how the loaded image will be scaled to fit the area. The following values are recognized (you may use the com.greensock.layout.ScaleMode constants if you prefer): + *
      + *
    • "stretch" (the default) - The image will fill the width/height exactly.
    • + *
    • "proportionalInside" - The image will be scaled proportionally to fit inside the area defined by the width/height
    • + *
    • "proportionalOutside" - The image will be scaled proportionally to completely fill the area, allowing portions of it to exceed the bounds defined by the width/height.
    • + *
    • "widthOnly" - Only the width of the image will be adjusted to fit.
    • + *
    • "heightOnly" - Only the height of the image will be adjusted to fit.
    • + *
    • "none" - No scaling of the image will occur.
    • + *
    + **/ + public function scaleMode(value:String):ImageLoaderVars { + return _set("scaleMode", value); + } + + /** Sets the ContentDisplay's scaleX property. **/ + public function scaleX(value:Number):ImageLoaderVars { + return _set("scaleX", value); + } + + /** Sets the ContentDisplay's scaleY property. **/ + public function scaleY(value:Number):ImageLoaderVars { + return _set("scaleY", value); + } + + /** + * When a width and height is defined, the vAlign determines how the image is vertically aligned within that area. The following values are recognized (you may use the com.greensock.layout.AlignMode constants if you prefer): + *
      + *
    • "center" (the default) - The image will be centered vertically in the area
    • + *
    • "top" - The image will be aligned with the top of the area
    • + *
    • "bottom" - The image will be aligned with the bottom of the area
    • + *
    + **/ + public function vAlign(value:String):ImageLoaderVars { + return _set("vAlign", value); + } + + /** Sets the ContentDisplay's visible property. **/ + public function visible(value:Boolean):ImageLoaderVars { + return _set("visible", value); + } + + /** Sets the ContentDisplay's width property (applied before rotation, scaleX, and scaleY). **/ + public function width(value:Number):ImageLoaderVars { + return _set("width", value); + } + + /** Sets the ContentDisplay's x property (for positioning on the stage). **/ + public function x(value:Number):ImageLoaderVars { + return _set("x", value); + } + + /** Sets the ContentDisplay's y property (for positioning on the stage). **/ + public function y(value:Number):ImageLoaderVars { + return _set("y", value); + } + + /** Sets the ContentDisplay's z property (for positioning on the stage). **/ + public function z(value:Number):ImageLoaderVars { + return _set("z", value); + } + + +//---- IMAGELOADER PROPERTIES ------------------------------------------------------------ + + /** When smoothing is true (the default), smoothing will be enabled for the image which typically leads to much better scaling results (otherwise the image can look crunchy/jagged). If your image is loaded from another domain where the appropriate crossdomain.xml file doesn't grant permission, Flash will not allow smoothing to be enabled (it's a security restriction). **/ + public function smoothing(value:Boolean):ImageLoaderVars { + return _set("smoothing", value); + } + + +//---- GETTERS / SETTERS ----------------------------------------------------------------- + + /** The generic Object populated by all of the method calls in the ImageLoaderVars instance. This is the raw data that gets passed to the loader. **/ + public function get vars():Object { + return _vars; + } + + /** @private **/ + public function get isGSVars():Boolean { + return true; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/loading/data/LoaderMaxVars.as b/FairyGUI-as3/src/com/greensock/loading/data/LoaderMaxVars.as new file mode 100644 index 0000000..660f904 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/loading/data/LoaderMaxVars.as @@ -0,0 +1,225 @@ +/** + * VERSION: 1.2 + * DATE: 2011-04-26 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/loadermax/ + **/ +package com.greensock.loading.data { + import flash.display.DisplayObject; +/** + * Can be used instead of a generic Object to define the vars parameter of a LoaderMax's constructor. + * + *

    There are 2 primary benefits of using a LoaderMaxVars instance to define your LoaderMax variables:

    + *
      + *
    1. In most code editors, code hinting will be activated which helps remind you which special properties are available in LoaderMax
    2. + *
    3. It enables strict data typing for improved debugging (ensuring, for example, that you don't define a Boolean value for onComplete where a Function is expected).
    4. + *
    + * + *

    The down side, of course, is that the code is more verbose and the LoaderMaxVars class adds slightly more kb to your swf.

    + * + *

    USAGE

    + *

    Note that each method returns the LoaderMaxVars instance, so you can reduce the lines of code by method chaining (see example below).

    + * + *

    Without LoaderMaxVars:

    + * new LoaderMax({name:"queue", maxConnections:1, onComplete:completeHandler, onProgress:progressHandler});

    + * + *

    With LoaderMaxVars

    + * new LoaderMax(new LoaderMaxVars().name("queue").maxConnections(1).onComplete(completeHandler).onProgress(progressHandler));

    + * + *

    NOTES:

    + *
      + *
    • To get the generic vars object that LoaderMaxVars builds internally, simply access its "vars" property. + * In fact, if you want maximum backwards compatibility, you can tack ".vars" onto the end of your chain like this: + * new LoaderMax(new LoaderMaxVars().name("queue").maxConnections(1).vars);
    • + *
    • Using LoaderMaxVars is completely optional. If you prefer the shorter synatax with the generic Object, feel + * free to use it. The purpose of this class is simply to enable code hinting and to allow for strict data typing.
    • + *
    + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class LoaderMaxVars { + /** @private **/ + public static const version:Number = 1.1; + + /** @private **/ + protected var _vars:Object; + + /** + * Constructor + * @param vars A generic Object containing properties that you'd like to add to this LoaderMaxVars instance. + */ + public function LoaderMaxVars(vars:Object=null) { + _vars = {}; + if (vars != null) { + for (var p:String in vars) { + _vars[p] = vars[p]; + } + } + } + + /** @private **/ + protected function _set(property:String, value:*):LoaderMaxVars { + if (value == null) { + delete _vars[property]; //in case it was previously set + } else { + _vars[property] = value; + } + return this; + } + + /** + * Adds a dynamic property to the vars object containing any value you want. This can be useful + * in situations where you need to associate certain data with a particular loader. Just make sure + * that the property name is a valid variable name (starts with a letter or underscore, no special characters, etc.) + * and that it doesn't use a reserved property name like "name" or "onComplete", etc. + * + * For example, to set an "index" property to 5, do: + * + * prop("index", 5); + * + * @param property Property name + * @param value Value + */ + public function prop(property:String, value:*):LoaderMaxVars { + return _set(property, value); + } + + +//---- LOADERCORE PROPERTIES ----------------------------------------------------------------- + + /** When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false.**/ + public function autoDispose(value:Boolean):LoaderMaxVars { + return _set("autoDispose", value); + } + + /** If true, the LoaderMax instance will automatically call load() whenever you insert()/append()/prepend() a new loader whose status is LoaderStatus.READY. This basically makes it easy to create a LoaderMax queue and dump stuff into it whenever you want something to load without having to check the LoaderMax's status and call load() manually if it's not already loading. **/ + public function autoLoad(value:Boolean):LoaderMaxVars { + return _set("autoLoad", value); + } + + /** A name that is used to identify the loader instance. This name can be fed to the LoaderMax.getLoader() or LoaderMax.getContent() methods or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21". **/ + public function name(value:String):LoaderMaxVars { + return _set("name", value); + } + + /** A handler function for LoaderEvent.CANCEL events which are dispatched when loading is aborted due to either a failure or because another loader was prioritized or cancel() was manually called. Make sure your onCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onCancel(value:Function):LoaderMaxVars { + return _set("onCancel", value); + } + + /** A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading successfully. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onComplete(value:Function):LoaderMaxVars { + return _set("onComplete", value); + } + + /** A handler function for LoaderEvent.ERROR events which are dispatched whenever the loader experiences an error (typically an IO_ERROR or SECURITY_ERROR). An error doesn't necessarily mean the loader failed, however - to listen for when a loader fails, use the onFail special property. Make sure your onError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onError(value:Function):LoaderMaxVars { + return _set("onError", value); + } + + /** A handler function for LoaderEvent.FAIL events which are dispatched whenever the loader fails and its status changes to LoaderStatus.FAILED. Make sure your onFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onFail(value:Function):LoaderMaxVars { + return _set("onFail", value); + } + + /** A handler function for LoaderEvent.HTTP_STATUS events. Make sure your onHTTPStatus function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can determine the httpStatus code using the LoaderEvent's target.httpStatus (LoaderItems keep track of their httpStatus when possible, although certain environments prevent Flash from getting httpStatus information).**/ + public function onHTTPStatus(value:Function):LoaderMaxVars { + return _set("onHTTPStatus", value); + } + + /** A handler function for LoaderEvent.IO_ERROR events which will also call the onError handler, so you can use that as more of a catch-all whereas onIOError is specifically for LoaderEvent.IO_ERROR events. Make sure your onIOError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onIOError(value:Function):LoaderMaxVars { + return _set("onIOError", value); + } + + /** A handler function for LoaderEvent.OPEN events which are dispatched when the loader begins loading. Make sure your onOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).**/ + public function onOpen(value:Function):LoaderMaxVars { + return _set("onOpen", value); + } + + /** A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.**/ + public function onProgress(value:Function):LoaderMaxVars { + return _set("onProgress", value); + } + + /** LoaderMax supports subloading, where an object can be factored into a parent's loading progress. If you want LoaderMax to require this loader as part of its parent SWFLoader's progress, you must set the requireWithRoot property to your swf's root. For example, vars.requireWithRoot = this.root;. **/ + public function requireWithRoot(value:DisplayObject):LoaderMaxVars { + return _set("requireWithRoot", value); + } + + +//---- LOADERMAX PROPERTIES ------------------------------------------------------------- + + /** By default, when the LoaderMax begins to load it quickly loops through its children and if it finds any that don't have an estimatedBytes defined, it will briefly open a URLStream in order to attempt to determine its bytesTotal, immediately closing the URLStream once the value has been determined. This causes a brief delay initially, but greatly improves the accuracy of the progress and bytesTotal values. Set auditSize to false to prevent the LoaderMax from auditing its childrens' size (it is true by default). For maximum performance, it is best to define an estimatedBytes value for as many loaders as possible to avoid the delay caused by audits. When the LoaderMax audits an XMLLoader, it cannot recognize loaders that will be created from the XML data nor can it recognize loaders inside subloaded swf files from a SWFLoader (it would take far too long to load sufficient data for that - audits should be as fast as possible). If you do not set an appropriate estimatedSize for XMLLoaders or SWFLoaders that contain LoaderMax loaders, you'll notice that the parent LoaderMax's progress and bytesTotal change when the nested loaders are recognized (this is normal). To control the default auditSize value, use the static LoaderMax.defaultAuditSize property. **/ + public function auditSize(value:Boolean):LoaderMaxVars { + return _set("auditSize", value); + } + + /** Maximum number of simultaneous connections that should be used while loading the LoaderMax queue. A higher number will generally result in faster overall load times for the group. The default is 2. This value is instance-based, not system-wide, so if you have two LoaderMax instances that both have a maxConnections value of 3 and they are both loading, there could be up to 6 connections at a time total. Sometimes there are limits imposed by the Flash Player itself or the browser or the user's system, but LoaderMax will do its best to honor the maxConnections you define. **/ + public function maxConnections(value:uint):LoaderMaxVars { + return _set("maxConnections", value); + } + + /** If skipFailed is true (the default), any failed loaders in the queue will be skipped. Otherwise, the LoaderMax will stop when it hits a failed loader and the LoaderMax's status will become LoaderStatus.FAILED. **/ + public function skipFailed(value:Boolean):LoaderMaxVars { + return _set("skipFailed", value); + } + + /** If skipPaused is true (the default), any paused loaders in the queue will be skipped. Otherwise, the LoaderMax will stop when it hits a paused loader and the LoaderMax's status will become LoaderStatus.FAILED. **/ + public function skipPaused(value:Boolean):LoaderMaxVars { + return _set("skipPaused", value); + } + + /** An array of loaders (ImageLoaders, SWFLoaders, XMLLoaders, MP3Loaders, other LoaderMax instances, etc.) that should be immediately inserted into the LoaderMax. **/ + public function loaders(value:Array):LoaderMaxVars { + return _set("loaders", value); + } + + /** A handler function for LoaderEvent.CHILD_OPEN events which are dispatched each time one of the loader's children (or any descendant) begins loading. Make sure your onChildOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onChildOpen(value:Function):LoaderMaxVars { + return _set("onChildOpen", value); + } + + /** A handler function for LoaderEvent.CHILD_PROGRESS events which are dispatched each time one of the loader's children (or any descendant) dispatches a PROGRESS event. To listen for changes in the LoaderMax's overall progress, use the onProgress special property instead. You can use the LoaderEvent's target.progress to get the child loader's progress value or use its target.bytesLoaded and target.bytesTotal. The LoaderEvent's currentTarget refers to the LoaderMax, so you can check its overall progress with the LoaderEvent's currentTarget.progress. Make sure your onChildProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onChildProgress(value:Function):LoaderMaxVars { + return _set("onChildProgress", value); + } + + /** A handler function for LoaderEvent.CHILD_COMPLETE events which are dispatched each time one of the loader's children (or any descendant) finishes loading successfully. Make sure your onChildComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onChildComplete(value:Function):LoaderMaxVars { + return _set("onChildComplete", value); + } + + /** A handler function for LoaderEvent.CHILD_CANCEL events which are dispatched each time loading is aborted on one of the loader's children (or any descendant) due to either an error or because another loader was prioritized in the queue or because cancel() was manually called on the child loader. Make sure your onChildCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onChildCancel(value:Function):LoaderMaxVars { + return _set("onChildCancel", value); + } + + /** A handler function for LoaderEvent.CHILD_FAIL events which are dispatched each time one of the loader's children (or any descendant) fails (and its status chances to LoaderStatus.FAILED). Make sure your onChildFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onChildFail(value:Function):LoaderMaxVars { + return _set("onChildFail", value); + } + + /** A handler function for LoaderEvent.SCRIPT_ACCESS_DENIED events which are dispatched when one of the LoaderMax's children (or any descendant) is loaded from another domain and no crossdomain.xml is in place to grant full script access for things like smoothing or BitmapData manipulation. Make sure your function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).**/ + public function onScriptAccessDenied(value:Function):LoaderMaxVars { + return _set("onScriptAccessDenied", value); + } + + +//---- GETTERS / SETTERS ----------------------------------------------------------------- + + /** The generic Object populated by all of the method calls in the LoaderMaxVars instance. This is the raw data that gets passed to the loader. **/ + public function get vars():Object { + return _vars; + } + + /** @private **/ + public function get isGSVars():Boolean { + return true; + } + + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/loading/data/MP3LoaderVars.as b/FairyGUI-as3/src/com/greensock/loading/data/MP3LoaderVars.as new file mode 100644 index 0000000..5961bda --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/loading/data/MP3LoaderVars.as @@ -0,0 +1,214 @@ +/** + * VERSION: 1.2 + * DATE: 2011-03-23 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/loadermax/ + **/ +package com.greensock.loading.data { + import flash.display.DisplayObject; + import flash.media.SoundLoaderContext; +/** + * Can be used instead of a generic Object to define the vars parameter of a MP3Loader's constructor. + * + *

    There are 2 primary benefits of using a MP3LoaderVars instance to define your MP3Loader variables:

    + *
      + *
    1. In most code editors, code hinting will be activated which helps remind you which special properties are available in MP3Loader
    2. + *
    3. It enables strict data typing for improved debugging (ensuring, for example, that you don't define a Boolean value for onComplete where a Function is expected).
    4. + *
    + * + *

    The down side, of course, is that the code is more verbose and the MP3LoaderVars class adds slightly more kb to your swf.

    + * + *

    USAGE

    + *

    Note that each method returns the MP3LoaderVars instance, so you can reduce the lines of code by method chaining (see example below).

    + * + *

    Without MP3LoaderVars:

    + * new MP3Loader("audio.mp3", {name:"audio", estimatedBytes:11500, autoPlay:false, onComplete:completeHandler, onProgress:progressHandler})

    + * + *

    With MP3LoaderVars

    + * new MP3Loader("audio.mp3", new MP3LoaderVars().name("audio").estimatedBytes(11500).autoPlay(false).onComplete(completeHandler).onProgress(progressHandler))

    + * + *

    NOTES:

    + *
      + *
    • To get the generic vars object that MP3LoaderVars builds internally, simply access its "vars" property. + * In fact, if you want maximum backwards compatibility, you can tack ".vars" onto the end of your chain like this: + * new MP3Loader("audio.mp3", new MP3LoaderVars().name("mp3").estimatedBytes(11500).autoPlay(false).vars);
    • + *
    • Using MP3LoaderVars is completely optional. If you prefer the shorter synatax with the generic Object, feel + * free to use it. The purpose of this class is simply to enable code hinting and to allow for strict data typing.
    • + *
    + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + **/ + public class MP3LoaderVars { + /** @private **/ + public static const version:Number = 1.2; + + /** @private **/ + protected var _vars:Object; + + /** + * Constructor + * @param vars A generic Object containing properties that you'd like to add to this MP3LoaderVars instance. + */ + public function MP3LoaderVars(vars:Object=null) { + _vars = {}; + if (vars != null) { + for (var p:String in vars) { + _vars[p] = vars[p]; + } + } + } + + /** @private **/ + protected function _set(property:String, value:*):MP3LoaderVars { + if (value == null) { + delete _vars[property]; //in case it was previously set + } else { + _vars[property] = value; + } + return this; + } + + /** + * Adds a dynamic property to the vars object containing any value you want. This can be useful + * in situations where you need to associate certain data with a particular loader. Just make sure + * that the property name is a valid variable name (starts with a letter or underscore, no special characters, etc.) + * and that it doesn't use a reserved property name like "name" or "onComplete", etc. + * + * For example, to set an "index" property to 5, do: + * + * prop("index", 5); + * + * @param property Property name + * @param value Value + */ + public function prop(property:String, value:*):MP3LoaderVars { + return _set(property, value); + } + + +//---- LOADERCORE PROPERTIES ----------------------------------------------------------------- + + /** When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false.**/ + public function autoDispose(value:Boolean):MP3LoaderVars { + return _set("autoDispose", value); + } + + /** A name that is used to identify the loader instance. This name can be fed to the LoaderMax.getLoader() or LoaderMax.getContent() methods or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21". **/ + public function name(value:String):MP3LoaderVars { + return _set("name", value); + } + + /** A handler function for LoaderEvent.CANCEL events which are dispatched when loading is aborted due to either a failure or because another loader was prioritized or cancel() was manually called. Make sure your onCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onCancel(value:Function):MP3LoaderVars { + return _set("onCancel", value); + } + + /** A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading successfully. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onComplete(value:Function):MP3LoaderVars { + return _set("onComplete", value); + } + + /** A handler function for LoaderEvent.ERROR events which are dispatched whenever the loader experiences an error (typically an IO_ERROR or SECURITY_ERROR). An error doesn't necessarily mean the loader failed, however - to listen for when a loader fails, use the onFail special property. Make sure your onError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onError(value:Function):MP3LoaderVars { + return _set("onError", value); + } + + /** A handler function for LoaderEvent.FAIL events which are dispatched whenever the loader fails and its status changes to LoaderStatus.FAILED. Make sure your onFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onFail(value:Function):MP3LoaderVars { + return _set("onFail", value); + } + + /** A handler function for LoaderEvent.HTTP_STATUS events. Make sure your onHTTPStatus function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can determine the httpStatus code using the LoaderEvent's target.httpStatus (LoaderItems keep track of their httpStatus when possible, although certain environments prevent Flash from getting httpStatus information).**/ + public function onHTTPStatus(value:Function):MP3LoaderVars { + return _set("onHTTPStatus", value); + } + + /** A handler function for LoaderEvent.IO_ERROR events which will also call the onError handler, so you can use that as more of a catch-all whereas onIOError is specifically for LoaderEvent.IO_ERROR events. Make sure your onIOError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onIOError(value:Function):MP3LoaderVars { + return _set("onIOError", value); + } + + /** A handler function for LoaderEvent.OPEN events which are dispatched when the loader begins loading. Make sure your onOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).**/ + public function onOpen(value:Function):MP3LoaderVars { + return _set("onOpen", value); + } + + /** A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.**/ + public function onProgress(value:Function):MP3LoaderVars { + return _set("onProgress", value); + } + + /** LoaderMax supports subloading, where an object can be factored into a parent's loading progress. If you want LoaderMax to require this loader as part of its parent SWFLoader's progress, you must set the requireWithRoot property to your swf's root. For example, vars.requireWithRoot = this.root;. **/ + public function requireWithRoot(value:DisplayObject):MP3LoaderVars { + return _set("requireWithRoot", value); + } + + +//---- LOADERITEM PROPERTIES ------------------------------------------------------------- + + /** If you define an alternateURL, the loader will initially try to load from its original url and if it fails, it will automatically (and permanently) change the loader's url to the alternateURL and try again. Think of it as a fallback or backup url. It is perfectly acceptable to use the same alternateURL for multiple loaders (maybe a default image for various ImageLoaders for example). **/ + public function alternateURL(value:String):MP3LoaderVars { + return _set("alternateURL", value); + } + + /** Initially, the loader's bytesTotal is set to the estimatedBytes value (or LoaderMax.defaultEstimatedBytes if one isn't defined). Then, when the loader begins loading and it can accurately determine the bytesTotal, it will do so. Setting estimatedBytes is optional, but the more accurate the value, the more accurate your loaders' overall progress will be initially. If the loader is inserted into a LoaderMax instance (for queue management), its auditSize feature can attempt to automatically determine the bytesTotal at runtime (there is a slight performance penalty for this, however - see LoaderMax's documentation for details). **/ + public function estimatedBytes(value:uint):MP3LoaderVars { + return _set("estimatedBytes", value); + } + + /** If true, a "gsCacheBusterID" parameter will be appended to the url with a random set of numbers to prevent caching (don't worry, this info is ignored when you LoaderMax.getLoader() or LoaderMax.getContent() by url or when you're running locally). **/ + public function noCache(value:Boolean):MP3LoaderVars { + return _set("noCache", value); + } + + /** Normally, the URL will be parsed and any variables in the query string (like "?name=test&state=il&gender=m") will be placed into a URLVariables object which is added to the URLRequest. This avoids a few bugs in Flash, but if you need to keep the entire URL intact (no parsing into URLVariables), set allowMalformedURL:true. For example, if your URL has duplicate variables in the query string like http://www.greensock.com/?c=S&c=SE&c=SW, it is technically considered a malformed URL and a URLVariables object can't properly contain all the duplicates, so in this case you'd want to set allowMalformedURL to true. **/ + public function allowMalformedURL(value:Boolean):MP3LoaderVars { + return _set("allowMalformedURL", value); + } + + +//---- MP3LOADER PROPERTIES -------------------------------------------------------------- + + /** By default the MP3 will begin playing immediately when enough of the file has buffered, but to prevent it from autoPlaying, set autoPlay to false. **/ + public function autoPlay(value:Boolean):MP3LoaderVars { + return _set("autoPlay", value); + } + + /** Number of times that the mp3 should repeat. To repeat indefinitely, use -1. Default is 0. **/ + public function repeat(value:int):MP3LoaderVars { + return _set("repeat", value); + } + + /** A value between 0 and 1 indicating the volume at which the sound should play when the MP3Loader's controls are used to play the sound, like playSound() or when autoPlay is true (default volume is 1). **/ + public function volume(value:Number):MP3LoaderVars { + return _set("volume", value); + } + + /** To control things like the buffer time and whether or not a policy file is checked, define a SoundLoaderContext object. The default context is null. See Adobe's SoundLoaderContext documentation for details. **/ + public function context(value:SoundLoaderContext):MP3LoaderVars { + return _set("context", value); + } + + /** The minimum number of bytesLoaded to wait for before the LoaderEvent.INIT event is dispatched - the higher the number the more accurate the duration estimate will be when the INIT event is dispatched (the default value is 102400 which is 100k). The MP3's duration cannot be determined with 100% accuracy until it has completely loaded, but it is estimated with more and more accuracy as the file loads. **/ + public function initThreshold(value:uint):MP3LoaderVars { + return _set("initThreshold", value); + } + + +//---- GETTERS / SETTERS ----------------------------------------------------------------- + + /** The generic Object populated by all of the method calls in the MP3LoaderVars instance. This is the raw data that gets passed to the loader. **/ + public function get vars():Object { + return _vars; + } + + /** @private **/ + public function get isGSVars():Boolean { + return true; + } + + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/loading/data/SWFLoaderVars.as b/FairyGUI-as3/src/com/greensock/loading/data/SWFLoaderVars.as new file mode 100644 index 0000000..b9ebdeb --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/loading/data/SWFLoaderVars.as @@ -0,0 +1,381 @@ +/** + * VERSION: 1.23 + * DATE: 2011-07-30 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/loadermax/ + **/ +package com.greensock.loading.data { + import flash.display.DisplayObject; + import flash.display.DisplayObjectContainer; + import flash.system.LoaderContext; +/** + * Can be used instead of a generic object to define the vars parameter of an SWFLoader's constructor. + * + *

    There are 2 primary benefits of using a SWFLoaderVars instance to define your SWFLoader variables:

    + *
      + *
    1. In most code editors, code hinting will be activated which helps remind you which special properties are available in SWFLoader
    2. + *
    3. It enables strict data typing for improved debugging (ensuring, for example, that you don't define a Boolean value for onComplete where a Function is expected).
    4. + *
    + * + *

    USAGE

    + *

    Note that each method returns the SWFLoaderVars instance, so you can reduce the lines of code by method chaining (see example below).

    + * + *

    Without SWFLoaderVars:

    + * new SWFLoader("child.swf", {name:"swf", estimatedBytes:11500, container:this, width:400, height:300, onComplete:completeHandler, onProgress:progressHandler})

    + * + *

    With SWFLoaderVars

    + * new SWFLoader("photo1.jpg", new SWFLoaderVars().name("swf").estimatedBytes(11500).container(this).width(400).height(300).onComplete(completeHandler).onProgress(progressHandler))

    + * + *

    NOTES:

    + *
      + *
    • To get the generic vars object that SWFLoaderVars builds internally, simply access its "vars" property. + * In fact, if you want maximum backwards compatibility, you can tack ".vars" onto the end of your chain like this: + * new SWFLoader("child.swf", new SWFLoaderVars().name("swf").estimatedBytes(11500).vars);
    • + *
    • Using SWFLoaderVars is completely optional. If you prefer the shorter synatax with the generic Object, feel + * free to use it. The purpose of this class is simply to enable code hinting and to allow for strict data typing.
    • + *
    + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class SWFLoaderVars { + /** @private **/ + public static const version:Number = 1.23; + + /** @private **/ + protected var _vars:Object; + + /** + * Constructor + * + * @param vars A generic Object containing properties that you'd like to add to this SWFLoaderVars instance. + */ + public function SWFLoaderVars(vars:Object=null) { + _vars = {}; + if (vars != null) { + for (var p:String in vars) { + _vars[p] = vars[p]; + } + } + } + + /** @private **/ + protected function _set(property:String, value:*):SWFLoaderVars { + if (value == null) { + delete _vars[property]; //in case it was previously set + } else { + _vars[property] = value; + } + return this; + } + + /** + * Adds a dynamic property to the vars object containing any value you want. This can be useful + * in situations where you need to associate certain data with a particular loader. Just make sure + * that the property name is a valid variable name (starts with a letter or underscore, no special characters, etc.) + * and that it doesn't use a reserved property name like "name" or "onComplete", etc. + * + * For example, to set an "index" property to 5, do: + * + * prop("index", 5); + * + * @param property Property name + * @param value Value + */ + public function prop(property:String, value:*):SWFLoaderVars { + return _set(property, value); + } + + +//---- LOADERCORE PROPERTIES ----------------------------------------------------------------- + + /** When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false.**/ + public function autoDispose(value:Boolean):SWFLoaderVars { + return _set("autoDispose", value); + } + + /** A name that is used to identify the loader instance. This name can be fed to the LoaderMax.getLoader() or LoaderMax.getContent() methods or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21". **/ + public function name(value:String):SWFLoaderVars { + return _set("name", value); + } + + /** A handler function for LoaderEvent.CANCEL events which are dispatched when loading is aborted due to either a failure or because another loader was prioritized or cancel() was manually called. Make sure your onCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onCancel(value:Function):SWFLoaderVars { + return _set("onCancel", value); + } + + /** A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading successfully. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onComplete(value:Function):SWFLoaderVars { + return _set("onComplete", value); + } + + /** A handler function for LoaderEvent.ERROR events which are dispatched whenever the loader experiences an error (typically an IO_ERROR or SECURITY_ERROR). An error doesn't necessarily mean the loader failed, however - to listen for when a loader fails, use the onFail special property. Make sure your onError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onError(value:Function):SWFLoaderVars { + return _set("onError", value); + } + + /** A handler function for LoaderEvent.FAIL events which are dispatched whenever the loader fails and its status changes to LoaderStatus.FAILED. Make sure your onFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onFail(value:Function):SWFLoaderVars { + return _set("onFail", value); + } + + /** A handler function for LoaderEvent.HTTP_STATUS events. Make sure your onHTTPStatus function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can determine the httpStatus code using the LoaderEvent's target.httpStatus (LoaderItems keep track of their httpStatus when possible, although certain environments prevent Flash from getting httpStatus information).**/ + public function onHTTPStatus(value:Function):SWFLoaderVars { + return _set("onHTTPStatus", value); + } + + /** A handler function for LoaderEvent.IO_ERROR events which will also call the onError handler, so you can use that as more of a catch-all whereas onIOError is specifically for LoaderEvent.IO_ERROR events. Make sure your onIOError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onIOError(value:Function):SWFLoaderVars { + return _set("onIOError", value); + } + + /** A handler function for LoaderEvent.OPEN events which are dispatched when the loader begins loading. Make sure your onOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).**/ + public function onOpen(value:Function):SWFLoaderVars { + return _set("onOpen", value); + } + + /** A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.**/ + public function onProgress(value:Function):SWFLoaderVars { + return _set("onProgress", value); + } + + /** LoaderMax supports subloading, where an object can be factored into a parent's loading progress. If you want LoaderMax to require this loader as part of its parent SWFLoader's progress, you must set the requireWithRoot property to your swf's root. For example, vars.requireWithRoot = this.root;. **/ + public function requireWithRoot(value:DisplayObject):SWFLoaderVars { + return _set("requireWithRoot", value); + } + + +//---- LOADERITEM PROPERTIES ------------------------------------------------------------- + + /** If you define an alternateURL, the loader will initially try to load from its original url and if it fails, it will automatically (and permanently) change the loader's url to the alternateURL and try again. Think of it as a fallback or backup url. It is perfectly acceptable to use the same alternateURL for multiple loaders (maybe a default image for various SWFLoaders for example). **/ + public function alternateURL(value:String):SWFLoaderVars { + return _set("alternateURL", value); + } + + /** Initially, the loader's bytesTotal is set to the estimatedBytes value (or LoaderMax.defaultEstimatedBytes if one isn't defined). Then, when the loader begins loading and it can accurately determine the bytesTotal, it will do so. Setting estimatedBytes is optional, but the more accurate the value, the more accurate your loaders' overall progress will be initially. If the loader is inserted into a LoaderMax instance (for queue management), its auditSize feature can attempt to automatically determine the bytesTotal at runtime (there is a slight performance penalty for this, however - see LoaderMax's documentation for details). **/ + public function estimatedBytes(value:uint):SWFLoaderVars { + return _set("estimatedBytes", value); + } + + /** If true, a "gsCacheBusterID" parameter will be appended to the url with a random set of numbers to prevent caching (don't worry, this info is ignored when you LoaderMax.getLoader() or LoaderMax.getContent() by url or when you're running locally). **/ + public function noCache(value:Boolean):SWFLoaderVars { + return _set("noCache", value); + } + + /** Normally, the URL will be parsed and any variables in the query string (like "?name=test&state=il&gender=m") will be placed into a URLVariables object which is added to the URLRequest. This avoids a few bugs in Flash, but if you need to keep the entire URL intact (no parsing into URLVariables), set allowMalformedURL:true. For example, if your URL has duplicate variables in the query string like http://www.greensock.com/?c=S&c=SE&c=SW, it is technically considered a malformed URL and a URLVariables object can't properly contain all the duplicates, so in this case you'd want to set allowMalformedURL to true. **/ + public function allowMalformedURL(value:Boolean):SWFLoaderVars { + return _set("allowMalformedURL", value); + } + + +//---- DISPLAYOBJECTLOADER PROPERTIES ------------------------------------------------------------ + + /** Sets the ContentDisplay's alpha property. **/ + public function alpha(value:Number):SWFLoaderVars { + return _set("alpha", value); + } + + /** Controls the alpha of the rectangle that is drawn when a width and height are defined. **/ + public function bgAlpha(value:Number):SWFLoaderVars { + return _set("bgAlpha", value); + } + + /** When a width and height are defined, a rectangle will be drawn inside the ContentDisplay Sprite immediately in order to ease the development process. It is transparent by default, but you may define a bgColor if you prefer. **/ + public function bgColor(value:uint):SWFLoaderVars { + return _set("bgColor", value); + } + + /** Sets the ContentDisplay's blendMode property. **/ + public function blendMode(value:String):SWFLoaderVars { + return _set("blendMode", value); + } + + /** If true, the registration point will be placed in the center of the ContentDisplay which can be useful if, for example, you want to animate its scale and have it grow/shrink from its center. **/ + public function centerRegistration(value:Boolean):SWFLoaderVars { + return _set("centerRegistration", value); + } + + /** A DisplayObjectContainer into which the ContentDisplay Sprite should be added immediately. **/ + public function container(value:DisplayObjectContainer):SWFLoaderVars { + return _set("container", value); + } + + /** To control whether or not a policy file is checked (which is required if you're loading an image from another domain and you want to use it in BitmapData operations), define a LoaderContext object. By default, the policy file will be checked when running remotely, so make sure the appropriate crossdomain.xml file is in place. See Adobe's LoaderContext documentation for details and precautions. **/ + public function context(value:LoaderContext):SWFLoaderVars { + return _set("context", value); + } + + /** When a width and height are defined, setting crop to true will cause the image to be cropped within that area (by applying a scrollRect for maximum performance). This is typically useful when the scaleMode is "proportionalOutside" or "none" so that any parts of the image that exceed the dimensions defined by width and height are visually chopped off. Use the hAlign and vAlign special properties to control the vertical and horizontal alignment within the cropped area. **/ + public function crop(value:Boolean):SWFLoaderVars { + return _set("crop", value); + } + + /** + * When a width and height is defined, the hAlign determines how the image is horizontally aligned within that area. The following values are recognized (you may use the com.greensock.layout.AlignMode constants if you prefer): + *
      + *
    • "center" (the default) - The image will be centered horizontally in the area
    • + *
    • "left" - The image will be aligned with the left side of the area
    • + *
    • "right" - The image will be aligned with the right side of the area
    • + *
    + **/ + public function hAlign(value:String):SWFLoaderVars { + return _set("hAlign", value); + } + + /** Sets the ContentDisplay's height property (applied before rotation, scaleX, and scaleY). **/ + public function height(value:Number):SWFLoaderVars { + return _set("height", value); + } + + /** A handler function for LoaderEvent.SECURITY_ERROR events which onError handles as well, so you can use that as more of a catch-all whereas onSecurityError is specifically for SECURITY_ERROR events. Make sure your onSecurityError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onSecurityError(value:Function):SWFLoaderVars { + return _set("onSecurityError", value); + } + + /** Sets the ContentDisplay's rotation property. **/ + public function rotation(value:Number):SWFLoaderVars { + return _set("rotation", value); + } + + /** Sets the ContentDisplay's rotationX property. **/ + public function rotationX(value:Number):SWFLoaderVars { + return _set("rotationX", value); + } + + /** Sets the ContentDisplay's rotationY property. **/ + public function rotationY(value:Number):SWFLoaderVars { + return _set("rotationY", value); + } + + /** Sets the ContentDisplay's rotationZ property. **/ + public function rotationZ(value:Number):SWFLoaderVars { + return _set("rotationZ", value); + } + + /** + * When a width and height are defined, the scaleMode controls how the loaded image will be scaled to fit the area. The following values are recognized (you may use the com.greensock.layout.ScaleMode constants if you prefer): + *
      + *
    • "stretch" (the default) - The image will fill the width/height exactly.
    • + *
    • "proportionalInside" - The image will be scaled proportionally to fit inside the area defined by the width/height
    • + *
    • "proportionalOutside" - The image will be scaled proportionally to completely fill the area, allowing portions of it to exceed the bounds defined by the width/height.
    • + *
    • "widthOnly" - Only the width of the image will be adjusted to fit.
    • + *
    • "heightOnly" - Only the height of the image will be adjusted to fit.
    • + *
    • "none" - No scaling of the image will occur.
    • + *
    + **/ + public function scaleMode(value:String):SWFLoaderVars { + return _set("scaleMode", value); + } + + /** Sets the ContentDisplay's scaleX property. **/ + public function scaleX(value:Number):SWFLoaderVars { + return _set("scaleX", value); + } + + /** Sets the ContentDisplay's scaleY property. **/ + public function scaleY(value:Number):SWFLoaderVars { + return _set("scaleY", value); + } + + /** + * When a width and height is defined, the vAlign determines how the image is vertically aligned within that area. The following values are recognized (you may use the com.greensock.layout.AlignMode constants if you prefer): + *
      + *
    • "center" (the default) - The image will be centered vertically in the area
    • + *
    • "top" - The image will be aligned with the top of the area
    • + *
    • "bottom" - The image will be aligned with the bottom of the area
    • + *
    + **/ + public function vAlign(value:String):SWFLoaderVars { + return _set("vAlign", value); + } + + /** Sets the ContentDisplay's visible property. **/ + public function visible(value:Boolean):SWFLoaderVars { + return _set("visible", value); + } + + /** Sets the ContentDisplay's width property (applied before rotation, scaleX, and scaleY). **/ + public function width(value:Number):SWFLoaderVars { + return _set("width", value); + } + + /** Sets the ContentDisplay's x property (for positioning on the stage). **/ + public function x(value:Number):SWFLoaderVars { + return _set("x", value); + } + + /** Sets the ContentDisplay's y property (for positioning on the stage). **/ + public function y(value:Number):SWFLoaderVars { + return _set("y", value); + } + + /** Sets the ContentDisplay's z property (for positioning on the stage). **/ + public function z(value:Number):SWFLoaderVars { + return _set("z", value); + } + + +//---- SWFLOADER PROPERTIES ------------------------------------------------------------ + + /** If autoPlay is true (the default), the swf will begin playing immediately when the INIT event fires. To prevent this behavior, set autoPlay to false which will also mute the swf until the SWFLoader completes. This only calls stop() on the main timeline but it does not prevent scripted animations. **/ + public function autoPlay(value:Boolean):SWFLoaderVars { + return _set("autoPlay", value); + } + /** By default, a SWFLoader instance will automatically look for LoaderMax loaders in the swf when it initializes. Every loader found with a requireWithRoot parameter set to that swf's root will be integrated into the SWFLoader's overall progress. The SWFLoader's COMPLETE event won't fire until all such loaders are also complete. If you prefer NOT to integrate the subloading loaders into the SWFLoader's overall progress, set integrateProgress to false. **/ + public function integrateProgress(value:Boolean):SWFLoaderVars { + return _set("integrateProgress", value); + } + /** A handler function for LoaderEvent.INIT events which are called when the swf has streamed enough of its content to render the first frame and determine if there are any required LoaderMax-related loaders recognized. It also adds the swf to the ContentDisplay Sprite at this point. Make sure your onInit function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onInit(value:Function):SWFLoaderVars { + return _set("onInit", value); + } + /** A handler function for LoaderEvent.CHILD_OPEN events which are dispatched each time any nested LoaderMax-related loaders (active ones that the SWFLoader found inside the subloading swf that had their requireWithRoot set to its root) begins loading. Make sure your onChildOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).**/ + public function onChildOpen(value:Function):SWFLoaderVars { + return _set("onChildOpen", value); + } + /** A handler function for LoaderEvent.CHILD_PROGRESS events which are dispatched each time any nested LoaderMax-related loaders (active ones that the SWFLoader found inside the subloading swf that had their requireWithRoot set to its root) dispatches a PROGRESS event. To listen for changes in the SWFLoader's overall progress, use the onProgress special property instead. You can use the LoaderEvent's target.progress to get the child loader's progress value or use its target.bytesLoaded and target.bytesTotal. The LoaderEvent's currentTarget refers to the SWFLoader, so you can check its overall progress with the LoaderEvent's currentTarget.progress. Make sure your onChildProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).**/ + public function onChildProgress(value:Function):SWFLoaderVars { + return _set("onChildProgress", value); + } + /** A handler function for LoaderEvent.CHILD_COMPLETE events which are dispatched each time any nested LoaderMax-related loaders (active ones that the SWFLoader found inside the subloading swf that had their requireWithRoot set to its root) finishes loading successfully. Make sure your onChildComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onChildComplete(value:Function):SWFLoaderVars { + return _set("onChildComplete", value); + } + /** A handler function for LoaderEvent.CHILD_CANCEL events which are dispatched each time loading is aborted on any nested LoaderMax-related loaders (active ones that the SWFLoader found inside the subloading swf that had their requireWithRoot set to its root) due to either an error or because another loader was prioritized in the queue or because cancel() was manually called on the child loader. Make sure your onChildCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onChildCancel(value:Function):SWFLoaderVars { + return _set("onChildCancel", value); + } + /** A handler function for LoaderEvent.CHILD_FAIL events which are dispatched each time any nested LoaderMax-related loaders (active ones that the SWFLoader found inside the subloading swf that had their requireWithRoot set to its root) fails (and its status chances to LoaderStatus.FAILED). Make sure your onChildFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).**/ + public function onChildFail(value:Function):SWFLoaderVars { + return _set("onChildFail", value); + } + /** A handler function for LoaderEvent.UNCAUGHT_ERROR events which are dispatched when the subloaded swf encounters an UncaughtErrorEvent meaning an Error was thrown outside of a try...catch statement. This can be useful when subloading swfs from a 3rd party that may contain errors. However, UNCAUGHT_ERROR events will only be dispatched if the parent swf is published for Flash Player 10.1 or later! See SWFLoader's suppressUncaughtErrors special property if you'd like to have it automatically suppress these errors. The original UncaughtErrorEvent is stored in the LoaderEvent's data property. So, for example, if you'd like to call preventDefault() on that UncaughtErrorEvent, you'd do myLoaderEvent.data.preventDefault(). **/ + public function onUncaughtError(value:Function):SWFLoaderVars { + return _set("onUncaughtError", value); + } + + /** If true, the SWFLoader will suppress the REMOVED_FROM_STAGE and ADDED_TO_STAGE events that are normally dispatched when the subloaded swf is reparented into the ContentDisplay (this always happens in Flash when any DisplayObject that's in the display list gets reparented - SWFLoader just circumvents it by default initially to avoid common problems that could arise if the child swf is coded a certain way). For example, if your subloaded swf has this code: addEventListener(Event.REMOVED_FROM_STAGE, disposeEverything) and you set suppressInitReparentEvents to false, disposeEverything() would get called as soon as the swf inits (assuming the ContentDisplay is in the display list). **/ + public function suppressInitReparentEvents(value:Boolean):SWFLoaderVars { + return _set("suppressInitReparentEvents", value); + } + /** To automatically suppress uncaught errors in the subloaded swf (errors that are thrown outside of a try...catch statement), set suppressUncaughtErrors to true, but please note that this will ONLY work if the parent swf is published to Flash Player 10.1 or later. Suppressing the UncaughtErrorEvent simply means calling its preventDefault() and stopImmediatePropagation() methods as well as preventing it from bubbling up to its parent LoaderMax/SWFLoader anscestors. If you'd rather listen for these events so that you can handle them yourself, listen for the LoaderEvent.UNCAUGHT_ERROR event. The original UncaughtErrorEvent instance will be stored in the LoaderEvent's data property. **/ + public function suppressUncaughtErrors(value:Boolean):SWFLoaderVars { + return _set("suppressUncaughtErrors", value); + } + + +//---- GETTERS / SETTERS ----------------------------------------------------------------- + + /** The generic Object populated by all of the method calls in the SWFLoaderVars instance. This is the raw data that gets passed to the loader. **/ + public function get vars():Object { + return _vars; + } + + /** @private **/ + public function get isGSVars():Boolean { + return true; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/loading/data/VideoLoaderVars.as b/FairyGUI-as3/src/com/greensock/loading/data/VideoLoaderVars.as new file mode 100644 index 0000000..dba2ff8 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/loading/data/VideoLoaderVars.as @@ -0,0 +1,391 @@ +/** + * VERSION: 1.24 + * DATE: 2011-11-03 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/loadermax/ + **/ +package com.greensock.loading.data { + import flash.display.DisplayObject; + import flash.display.DisplayObjectContainer; +/** + * Can be used instead of a generic Object to define the vars parameter of a VideoLoader's constructor. + * + *

    There are 2 primary benefits of using a VideoLoaderVars instance to define your VideoLoader variables:

    + *
      + *
    1. In most code editors, code hinting will be activated which helps remind you which special properties are available in VideoLoader
    2. + *
    3. It enables strict data typing for improved debugging (ensuring, for example, that you don't define a Boolean value for onComplete where a Function is expected).
    4. + *
    + * + *

    The down side, of course, is that the code is more verbose and the VideoLoaderVars class adds slightly more kb to your swf.

    + * + *

    USAGE

    + *

    Note that each method returns the VideoLoaderVars instance, so you can reduce the lines of code by method chaining (see example below).

    + * + *

    Without VideoLoaderVars:

    + * new VideoLoader("video.flv", {name:"video", estimatedBytes:111500, container:this, width:200, height:100, onComplete:completeHandler, onProgress:progressHandler})

    + * + *

    With VideoLoaderVars

    + * new VideoLoader("video.flv", new VideoLoaderVars().name("video").estimatedBytes(111500).container(this).width(200).height(100).onComplete(completeHandler).onProgress(progressHandler))

    + * + *

    NOTES:

    + *
      + *
    • To get the generic vars object that VideoLoaderVars builds internally, simply access its "vars" property. + * In fact, if you want maximum backwards compatibility, you can tack ".vars" onto the end of your chain like this: + * new VideoLoader("video.flv", new VideoLoaderVars().name("video").estimatedBytes(111500).vars);
    • + *
    • Using VideoLoaderVars is completely optional. If you prefer the shorter synatax with the generic Object, feel + * free to use it. The purpose of this class is simply to enable code hinting and to allow for strict data typing.
    • + *
    + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class VideoLoaderVars { + /** @private **/ + public static const version:Number = 1.23; + + /** @private **/ + protected var _vars:Object; + + /** + * Constructor + * @param vars A generic Object containing properties that you'd like to add to this VideoLoaderVars instance. + */ + public function VideoLoaderVars(vars:Object=null) { + _vars = {}; + if (vars != null) { + for (var p:String in vars) { + _vars[p] = vars[p]; + } + } + } + + /** @private **/ + protected function _set(property:String, value:*):VideoLoaderVars { + if (value == null) { + delete _vars[property]; //in case it was previously set + } else { + _vars[property] = value; + } + return this; + } + + /** + * Adds a dynamic property to the vars object containing any value you want. This can be useful + * in situations where you need to associate certain data with a particular loader. Just make sure + * that the property name is a valid variable name (starts with a letter or underscore, no special characters, etc.) + * and that it doesn't use a reserved property name like "name" or "onComplete", etc. + * + * For example, to set an "index" property to 5, do: + * + * prop("index", 5); + * + * @param property Property name + * @param value Value + */ + public function prop(property:String, value:*):VideoLoaderVars { + return _set(property, value); + } + + +//---- LOADERCORE PROPERTIES ----------------------------------------------------------------- + + /** When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false.**/ + public function autoDispose(value:Boolean):VideoLoaderVars { + return _set("autoDispose", value); + } + + /** A name that is used to identify the loader instance. This name can be fed to the LoaderMax.getLoader() or LoaderMax.getContent() methods or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21". **/ + public function name(value:String):VideoLoaderVars { + return _set("name", value); + } + + /** A handler function for LoaderEvent.CANCEL events which are dispatched when loading is aborted due to either a failure or because another loader was prioritized or cancel() was manually called. Make sure your onCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onCancel(value:Function):VideoLoaderVars { + return _set("onCancel", value); + } + + /** A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading successfully. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onComplete(value:Function):VideoLoaderVars { + return _set("onComplete", value); + } + + /** A handler function for LoaderEvent.ERROR events which are dispatched whenever the loader experiences an error (typically an IO_ERROR or SECURITY_ERROR). An error doesn't necessarily mean the loader failed, however - to listen for when a loader fails, use the onFail special property. Make sure your onError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onError(value:Function):VideoLoaderVars { + return _set("onError", value); + } + + /** A handler function for LoaderEvent.FAIL events which are dispatched whenever the loader fails and its status changes to LoaderStatus.FAILED. Make sure your onFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onFail(value:Function):VideoLoaderVars { + return _set("onFail", value); + } + + /** A handler function for LoaderEvent.HTTP_STATUS events. Make sure your onHTTPStatus function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can determine the httpStatus code using the LoaderEvent's target.httpStatus (LoaderItems keep track of their httpStatus when possible, although certain environments prevent Flash from getting httpStatus information).**/ + public function onHTTPStatus(value:Function):VideoLoaderVars { + return _set("onHTTPStatus", value); + } + + /** A handler function for LoaderEvent.INIT events which will be called when the video's metaData has been received and the video is placed into the ContentDisplay. Make sure your onInit function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onInit(value:Function):VideoLoaderVars { + return _set("onInit", value); + } + + /** A handler function for LoaderEvent.IO_ERROR events which will also call the onError handler, so you can use that as more of a catch-all whereas onIOError is specifically for LoaderEvent.IO_ERROR events. Make sure your onIOError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onIOError(value:Function):VideoLoaderVars { + return _set("onIOError", value); + } + + /** A handler function for LoaderEvent.OPEN events which are dispatched when the loader begins loading. Make sure your onOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).**/ + public function onOpen(value:Function):VideoLoaderVars { + return _set("onOpen", value); + } + + /** A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.**/ + public function onProgress(value:Function):VideoLoaderVars { + return _set("onProgress", value); + } + + /** LoaderMax supports subloading, where an object can be factored into a parent's loading progress. If you want LoaderMax to require this loader as part of its parent SWFLoader's progress, you must set the requireWithRoot property to your swf's root. For example, vars.requireWithRoot = this.root;. **/ + public function requireWithRoot(value:DisplayObject):VideoLoaderVars { + return _set("requireWithRoot", value); + } + + +//---- LOADERITEM PROPERTIES ------------------------------------------------------------- + + /** If you define an alternateURL, the loader will initially try to load from its original url and if it fails, it will automatically (and permanently) change the loader's url to the alternateURL and try again. Think of it as a fallback or backup url. It is perfectly acceptable to use the same alternateURL for multiple loaders (maybe a default image for various ImageLoaders for example). **/ + public function alternateURL(value:String):VideoLoaderVars { + return _set("alternateURL", value); + } + + /** Initially, the loader's bytesTotal is set to the estimatedBytes value (or LoaderMax.defaultEstimatedBytes if one isn't defined). Then, when the loader begins loading and it can accurately determine the bytesTotal, it will do so. Setting estimatedBytes is optional, but the more accurate the value, the more accurate your loaders' overall progress will be initially. If the loader is inserted into a LoaderMax instance (for queue management), its auditSize feature can attempt to automatically determine the bytesTotal at runtime (there is a slight performance penalty for this, however - see LoaderMax's documentation for details). **/ + public function estimatedBytes(value:uint):VideoLoaderVars { + return _set("estimatedBytes", value); + } + + /** If true, a "gsCacheBusterID" parameter will be appended to the url with a random set of numbers to prevent caching (don't worry, this info is ignored when you LoaderMax.getLoader() or LoaderMax.getContent() by url or when you're running locally). **/ + public function noCache(value:Boolean):VideoLoaderVars { + return _set("noCache", value); + } + + /** Normally, the URL will be parsed and any variables in the query string (like "?name=test&state=il&gender=m") will be placed into a URLVariables object which is added to the URLRequest. This avoids a few bugs in Flash, but if you need to keep the entire URL intact (no parsing into URLVariables), set allowMalformedURL:true. For example, if your URL has duplicate variables in the query string like http://www.greensock.com/?c=S&c=SE&c=SW, it is technically considered a malformed URL and a URLVariables object can't properly contain all the duplicates, so in this case you'd want to set allowMalformedURL to true. **/ + public function allowMalformedURL(value:Boolean):VideoLoaderVars { + return _set("allowMalformedURL", value); + } + + +//---- DISPLAYOBJECTLOADER PROPERTIES ------------------------------------------------------------ + + /** Sets the ContentDisplay's alpha property. **/ + public function alpha(value:Number):VideoLoaderVars { + return _set("alpha", value); + } + + /** Controls the alpha of the rectangle that is drawn when a width and height are defined. **/ + public function bgAlpha(value:Number):VideoLoaderVars { + return _set("bgAlpha", value); + } + + /** When a width and height are defined, a rectangle will be drawn inside the ContentDisplay Sprite immediately in order to ease the development process. It is transparent by default, but you may define a bgColor if you prefer. **/ + public function bgColor(value:uint):VideoLoaderVars { + return _set("bgColor", value); + } + + /** Sets the ContentDisplay's blendMode property. **/ + public function blendMode(value:String):VideoLoaderVars { + return _set("blendMode", value); + } + + /** If true, the registration point will be placed in the center of the ContentDisplay which can be useful if, for example, you want to animate its scale and have it grow/shrink from its center. **/ + public function centerRegistration(value:Boolean):VideoLoaderVars { + return _set("centerRegistration", value); + } + + /** A DisplayObjectContainer into which the ContentDisplay Sprite should be added immediately. **/ + public function container(value:DisplayObjectContainer):VideoLoaderVars { + return _set("container", value); + } + + /** When a width and height are defined, setting crop to true will cause the image to be cropped within that area (by applying a scrollRect for maximum performance). This is typically useful when the scaleMode is "proportionalOutside" or "none" so that any parts of the image that exceed the dimensions defined by width and height are visually chopped off. Use the hAlign and vAlign special properties to control the vertical and horizontal alignment within the cropped area. **/ + public function crop(value:Boolean):VideoLoaderVars { + return _set("crop", value); + } + + /** + * When a width and height is defined, the hAlign determines how the image is horizontally aligned within that area. The following values are recognized (you may use the com.greensock.layout.AlignMode constants if you prefer): + *
      + *
    • "center" (the default) - The image will be centered horizontally in the area
    • + *
    • "left" - The image will be aligned with the left side of the area
    • + *
    • "right" - The image will be aligned with the right side of the area
    • + *
    + **/ + public function hAlign(value:String):VideoLoaderVars { + return _set("hAlign", value); + } + + /** Sets the ContentDisplay's height property (applied before rotation, scaleX, and scaleY). **/ + public function height(value:Number):VideoLoaderVars { + return _set("height", value); + } + + /** A handler function for LoaderEvent.SECURITY_ERROR events which onError handles as well, so you can use that as more of a catch-all whereas onSecurityError is specifically for SECURITY_ERROR events. Make sure your onSecurityError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onSecurityError(value:Function):VideoLoaderVars { + return _set("onSecurityError", value); + } + + /** Sets the ContentDisplay's rotation property. **/ + public function rotation(value:Number):VideoLoaderVars { + return _set("rotation", value); + } + + /** Sets the ContentDisplay's rotationX property. **/ + public function rotationX(value:Number):VideoLoaderVars { + return _set("rotationX", value); + } + + /** Sets the ContentDisplay's rotationY property. **/ + public function rotationY(value:Number):VideoLoaderVars { + return _set("rotationY", value); + } + + /** Sets the ContentDisplay's rotationZ property. **/ + public function rotationZ(value:Number):VideoLoaderVars { + return _set("rotationZ", value); + } + + /** + * When a width and height are defined, the scaleMode controls how the loaded image will be scaled to fit the area. The following values are recognized (you may use the com.greensock.layout.ScaleMode constants if you prefer): + *
      + *
    • "stretch" (the default) - The image will fill the width/height exactly.
    • + *
    • "proportionalInside" - The image will be scaled proportionally to fit inside the area defined by the width/height
    • + *
    • "proportionalOutside" - The image will be scaled proportionally to completely fill the area, allowing portions of it to exceed the bounds defined by the width/height.
    • + *
    • "widthOnly" - Only the width of the image will be adjusted to fit.
    • + *
    • "heightOnly" - Only the height of the image will be adjusted to fit.
    • + *
    • "none" - No scaling of the image will occur.
    • + *
    + **/ + public function scaleMode(value:String):VideoLoaderVars { + return _set("scaleMode", value); + } + + /** Sets the ContentDisplay's scaleX property. **/ + public function scaleX(value:Number):VideoLoaderVars { + return _set("scaleX", value); + } + + /** Sets the ContentDisplay's scaleY property. **/ + public function scaleY(value:Number):VideoLoaderVars { + return _set("scaleY", value); + } + + /** + * When a width and height is defined, the vAlign determines how the image is vertically aligned within that area. The following values are recognized (you may use the com.greensock.layout.AlignMode constants if you prefer): + *
      + *
    • "center" (the default) - The image will be centered vertically in the area
    • + *
    • "top" - The image will be aligned with the top of the area
    • + *
    • "bottom" - The image will be aligned with the bottom of the area
    • + *
    + **/ + public function vAlign(value:String):VideoLoaderVars { + return _set("vAlign", value); + } + + /** Sets the ContentDisplay's visible property. **/ + public function visible(value:Boolean):VideoLoaderVars { + return _set("visible", value); + } + + /** Sets the ContentDisplay's width property (applied before rotation, scaleX, and scaleY). **/ + public function width(value:Number):VideoLoaderVars { + return _set("width", value); + } + + /** Sets the ContentDisplay's x property (for positioning on the stage). **/ + public function x(value:Number):VideoLoaderVars { + return _set("x", value); + } + + /** Sets the ContentDisplay's y property (for positioning on the stage). **/ + public function y(value:Number):VideoLoaderVars { + return _set("y", value); + } + + /** Sets the ContentDisplay's z property (for positioning on the stage). **/ + public function z(value:Number):VideoLoaderVars { + return _set("z", value); + } + + +//---- VIDEOLOADER PROPERTIES ------------------------------------------------------------ + + + /** If the buffer becomes empty during playback and autoAdjustBuffer is true (the default), it will automatically attempt to adjust the NetStream's bufferTime based on the rate at which the video has been loading, estimating what it needs to be in order to play the rest of the video without emptying the buffer again. This can prevent the annoying problem of video playback start/stopping/starting/stopping on a system tht doesn't have enough bandwidth to adequately buffer the video. You may also set the bufferTime in the constructor's vars parameter to set the initial value. **/ + public function autoAdjustBuffer(value:Boolean):VideoLoaderVars { + return _set("autoAdjustBuffer", value); + } + + /** If true, the NetStream will only be attached to the Video object (the rawContent) when it is in the display list (on the stage). This conserves memory but it can cause a very brief rendering delay when the content is initially added to the stage (often imperceptible). Also, if you add it to the stage when the videoTime is after its last encoded keyframe, it will render at that last keyframe. **/ + public function autoDetachNetStream(value:Boolean):VideoLoaderVars { + return _set("autoDetachNetStream", value); + } + + /** By default, the video will begin playing as soon as it has been adequately buffered, but to prevent it from playing initially, set autoPlay to false. **/ + public function autoPlay(value:Boolean):VideoLoaderVars { + return _set("autoPlay", value); + } + + /** When true, the loader will report its progress only in terms of the video's buffer which can be very convenient if, for example, you want to display loading progress for the video's buffer or tuck it into a LoaderMax with other loaders and allow the LoaderMax to dispatch its COMPLETE event when the buffer is full instead of waiting for the whole file to download. When bufferMode is true, the VideoLoader will dispatch its COMPLETE event when the buffer is full as opposed to waiting for the entire video to load. You can toggle the bufferMode anytime. Please read the full bufferMode property ASDoc description below for details about how it affects things like bytesTotal.**/ + public function bufferMode(value:Boolean):VideoLoaderVars { + return _set("bufferMode", value); + } + + /** The amount of time (in seconds) that should be buffered before the video can begin playing (set autoPlay to false to pause the video initially).**/ + public function bufferTime(value:Number):VideoLoaderVars { + return _set("bufferTime", value); + } + + /** If true, the VideoLoader will check for a crossdomain.xml file on the remote host (only useful when loading videos from other domains - see Adobe's docs for details about NetStream's checkPolicyFile property). **/ + public function checkPolicyFile(value:Boolean):VideoLoaderVars { + return _set("checkPolicyFile", value); + } + + /** Indicates the type of filter applied to decoded video as part of post-processing. The default value is 0, which lets the video compressor apply a deblocking filter as needed. See Adobe's flash.media.Video class docs for details. **/ + public function deblocking(value:int):VideoLoaderVars { + return _set("deblocking", value); + } + + /** Estimated duration of the video in seconds. VideoLoader will only use this value until it receives the necessary metaData from the video in order to accurately determine the video's duration. You do not need to specify an estimatedDuration, but doing so can help make the playProgress and some other values more accurate (until the metaData has loaded). It can also make the progress/bytesLoaded/bytesTotal more accurate when a estimatedDuration is defined, particularly in bufferMode.**/ + public function estimatedDuration(value:Number):VideoLoaderVars { + return _set("estimatedDuration", value); + } + + /** Number of times that the video should repeat. To repeat indefinitely, use -1. Default is 0. **/ + public function repeat(value:int):VideoLoaderVars { + return _set("repeat", value); + } + + /** When smoothing is true (the default), smoothing will be enabled for the video which typically leads to better scaling results. **/ + public function smoothing(value:Boolean):VideoLoaderVars { + return _set("smoothing", value); + } + + /** A value between 0 and 1 indicating the volume at which the video should play (default is 1).**/ + public function volume(value:Number):VideoLoaderVars { + return _set("volume", value); + } + + +//---- GETTERS / SETTERS ----------------------------------------------------------------- + + /** The generic Object populated by all of the method calls in the VideoLoaderVars instance. This is the raw data that gets passed to the loader. **/ + public function get vars():Object { + return _vars; + } + + /** @private **/ + public function get isGSVars():Boolean { + return true; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/loading/data/XMLLoaderVars.as b/FairyGUI-as3/src/com/greensock/loading/data/XMLLoaderVars.as new file mode 100644 index 0000000..48ae2da --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/loading/data/XMLLoaderVars.as @@ -0,0 +1,247 @@ +/** + * VERSION: 1.22 + * DATE: 2011-04-20 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/loadermax/ + **/ +package com.greensock.loading.data { + import flash.display.DisplayObject; +/** + * Can be used instead of a generic Object to define the vars parameter of a XMLLoader's constructor. + * + *

    There are 2 primary benefits of using a XMLLoaderVars instance to define your XMLLoader variables:

    + *
      + *
    1. In most code editors, code hinting will be activated which helps remind you which special properties are available in XMLLoader
    2. + *
    3. It enables strict data typing for improved debugging (ensuring, for example, that you don't define a Boolean value for onComplete where a Function is expected).
    4. + *
    + * + *

    The down side, of course, is that the code is more verbose and the XMLLoaderVars class adds slightly more kb to your swf.

    + * + *

    USAGE

    + *

    Note that each method returns the XMLLoaderVars instance, so you can reduce the lines of code by method chaining (see example below).

    + * + *

    Without XMLLoaderVars:

    + * new XMLLoader("data.xml", {name:"css", estimatedBytes:1500, onComplete:completeHandler, onProgress:progressHandler})

    + * + *

    With XMLLoaderVars

    + * new XMLLoader("data.xml", new XMLLoaderVars().name("data").estimatedBytes(1500).onComplete(completeHandler).onProgress(progressHandler))

    + * + *

    NOTES:

    + *
      + *
    • To get the generic vars object that XMLLoaderVars builds internally, simply access its "vars" property. + * In fact, if you want maximum backwards compatibility, you can tack ".vars" onto the end of your chain like this: + * new XMLLoader("data.xml", new XMLLoaderVars().name("data").estimatedBytes(1500).onComplete(completeHandler).vars)
    • + *
    • Using XMLLoaderVars is completely optional. If you prefer the shorter synatax with the generic Object, feel + * free to use it. The purpose of this class is simply to enable code hinting and to allow for strict data typing.
    • + *
    + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class XMLLoaderVars { + /** @private **/ + public static const version:Number = 1.22; + + /** @private **/ + protected var _vars:Object; + + /** + * Constructor + * @param vars A generic Object containing properties that you'd like to add to this XMLLoaderVars instance. + */ + public function XMLLoaderVars(vars:Object=null) { + _vars = {}; + if (vars != null) { + for (var p:String in vars) { + _vars[p] = vars[p]; + } + } + } + + /** @private **/ + protected function _set(property:String, value:*):XMLLoaderVars { + if (value == null) { + delete _vars[property]; //in case it was previously set + } else { + _vars[property] = value; + } + return this; + } + + /** + * Adds a dynamic property to the vars object containing any value you want. This can be useful + * in situations where you need to associate certain data with a particular loader. Just make sure + * that the property name is a valid variable name (starts with a letter or underscore, no special characters, etc.) + * and that it doesn't use a reserved property name like "name" or "onComplete", etc. + * + *

    For example, to set an "index" property to 5, do:

    + * + *

    prop("index", 5);

    + * + * @param property Property name + * @param value Value + */ + public function prop(property:String, value:*):XMLLoaderVars { + return _set(property, value); + } + + +//---- LOADERCORE PROPERTIES ----------------------------------------------------------------- + + /** When autoDispose is true, the loader will be disposed immediately after it completes (it calls the dispose() method internally after dispatching its COMPLETE event). This will remove any listeners that were defined in the vars object (like onComplete, onProgress, onError, onInit). Once a loader is disposed, it can no longer be found with LoaderMax.getLoader() or LoaderMax.getContent() - it is essentially destroyed but its content is not unloaded (you must call unload() or dispose(true) to unload its content). The default autoDispose value is false.**/ + public function autoDispose(value:Boolean):XMLLoaderVars { + return _set("autoDispose", value); + } + + /** A name that is used to identify the loader instance. This name can be fed to the LoaderMax.getLoader() or LoaderMax.getContent() methods or traced at any time. Each loader's name should be unique. If you don't define one, a unique name will be created automatically, like "loader21". **/ + public function name(value:String):XMLLoaderVars { + return _set("name", value); + } + + /** A handler function for LoaderEvent.CANCEL events which are dispatched when loading is aborted due to either a failure or because another loader was prioritized or cancel() was manually called. Make sure your onCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onCancel(value:Function):XMLLoaderVars { + return _set("onCancel", value); + } + + /** A handler function for LoaderEvent.COMPLETE events which are dispatched when the loader has finished loading successfully. Make sure your onComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onComplete(value:Function):XMLLoaderVars { + return _set("onComplete", value); + } + + /** A handler function for LoaderEvent.ERROR events which are dispatched whenever the loader experiences an error (typically an IO_ERROR or SECURITY_ERROR). An error doesn't necessarily mean the loader failed, however - to listen for when a loader fails, use the onFail special property. Make sure your onError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onError(value:Function):XMLLoaderVars { + return _set("onError", value); + } + + /** A handler function for LoaderEvent.FAIL events which are dispatched whenever the loader fails and its status changes to LoaderStatus.FAILED. Make sure your onFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onFail(value:Function):XMLLoaderVars { + return _set("onFail", value); + } + + /** A handler function for LoaderEvent.HTTP_STATUS events. Make sure your onHTTPStatus function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can determine the httpStatus code using the LoaderEvent's target.httpStatus (LoaderItems keep track of their httpStatus when possible, although certain environments prevent Flash from getting httpStatus information).**/ + public function onHTTPStatus(value:Function):XMLLoaderVars { + return _set("onHTTPStatus", value); + } + + /** A handler function for LoaderEvent.IO_ERROR events which will also call the onError handler, so you can use that as more of a catch-all whereas onIOError is specifically for LoaderEvent.IO_ERROR events. Make sure your onIOError function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onIOError(value:Function):XMLLoaderVars { + return _set("onIOError", value); + } + + /** A handler function for LoaderEvent.OPEN events which are dispatched when the loader begins loading. Make sure your onOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent).**/ + public function onOpen(value:Function):XMLLoaderVars { + return _set("onOpen", value); + } + + /** A handler function for LoaderEvent.PROGRESS events which are dispatched whenever the bytesLoaded changes. Make sure your onProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). You can use the LoaderEvent's target.progress to get the loader's progress value or use its target.bytesLoaded and target.bytesTotal.**/ + public function onProgress(value:Function):XMLLoaderVars { + return _set("onProgress", value); + } + + /** LoaderMax supports subloading, where an object can be factored into a parent's loading progress. If you want LoaderMax to require this loader as part of its parent SWFLoader's progress, you must set the requireWithRoot property to your swf's root. For example, vars.requireWithRoot = this.root;. **/ + public function requireWithRoot(value:DisplayObject):XMLLoaderVars { + return _set("requireWithRoot", value); + } + + +//---- LOADERITEM PROPERTIES ------------------------------------------------------------- + + /** If you define an alternateURL, the loader will initially try to load from its original url and if it fails, it will automatically (and permanently) change the loader's url to the alternateURL and try again. Think of it as a fallback or backup url. It is perfectly acceptable to use the same alternateURL for multiple loaders (maybe a default image for various ImageLoaders for example). **/ + public function alternateURL(value:String):XMLLoaderVars { + return _set("alternateURL", value); + } + + /** Initially, the loader's bytesTotal is set to the estimatedBytes value (or LoaderMax.defaultEstimatedBytes if one isn't defined). Then, when the loader begins loading and it can accurately determine the bytesTotal, it will do so. Setting estimatedBytes is optional, but the more accurate the value, the more accurate your loaders' overall progress will be initially. If the loader is inserted into a LoaderMax instance (for queue management), its auditSize feature can attempt to automatically determine the bytesTotal at runtime (there is a slight performance penalty for this, however - see LoaderMax's documentation for details). **/ + public function estimatedBytes(value:uint):XMLLoaderVars { + return _set("estimatedBytes", value); + } + + /** If true, a "gsCacheBusterID" parameter will be appended to the url with a random set of numbers to prevent caching (don't worry, this info is ignored when you LoaderMax.getLoader() or LoaderMax.getContent() by url or when you're running locally). **/ + public function noCache(value:Boolean):XMLLoaderVars { + return _set("noCache", value); + } + + /** Normally, the URL will be parsed and any variables in the query string (like "?name=test&state=il&gender=m") will be placed into a URLVariables object which is added to the URLRequest. This avoids a few bugs in Flash, but if you need to keep the entire URL intact (no parsing into URLVariables), set allowMalformedURL:true. For example, if your URL has duplicate variables in the query string like http://www.greensock.com/?c=S&c=SE&c=SW, it is technically considered a malformed URL and a URLVariables object can't properly contain all the duplicates, so in this case you'd want to set allowMalformedURL to true. **/ + public function allowMalformedURL(value:Boolean):XMLLoaderVars { + return _set("allowMalformedURL", value); + } + + +//---- XMLLOADER PROPERTIES -------------------------------------------------------------- + + /** By default, the XMLLoader will automatically look for LoaderMax-related nodes like <LoaderMax>, <ImageLoader>, <SWFLoader>, <XMLLoader>, <MP3Loader>, <DataLoader>, and <XMLLoader> inside the XML when it inits. If it finds any that have a load="true" attribute, it will begin loading them and integrate their progress into the XMLLoader's overall progress. Its COMPLETE event won't fire until all of these loaders have completed as well. If you prefer NOT to integrate the dynamically-created loader instances into the XMLLoader's overall progress, set integrateProgress to false. **/ + public function integrateProgress(value:Boolean):XMLLoaderVars { + return _set("integrateProgress", value); + } + + /** Maximum number of simultaneous connections that should be used while loading child loaders that were parsed from the XML and had their "load" attribute set to "true" (like <ImageLoader url="1.jpg" load="true" />). A higher number will generally result in faster overall load times for the group. The default is 2. Sometimes there are limits imposed by the Flash Player itself or the browser or the user's system, but LoaderMax will do its best to honor the maxConnections you define. **/ + public function maxConnections(value:uint):XMLLoaderVars { + return _set("maxConnections", value); + } + + /** A handler function for LoaderEvent.CHILD_OPEN events which are dispatched each time any nested LoaderMax-related loaders that were defined in the XML begins loading. Make sure your onChildOpen function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onChildOpen(value:Function):XMLLoaderVars { + return _set("onChildOpen", value); + } + + /** A handler function for LoaderEvent.CHILD_PROGRESS events which are dispatched each time any nested LoaderMax-related loaders that were defined in the XML dispatches a PROGRESS event. To listen for changes in the XMLLoader's overall progress, use the onProgress special property instead. You can use the LoaderEvent's target.progress to get the child loader's progress value or use its target.bytesLoaded and target.bytesTotal. The LoaderEvent's currentTarget refers to the XMLLoader, so you can check its overall progress with the LoaderEvent's currentTarget.progress. Make sure your onChildProgress function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onChildProgress(value:Function):XMLLoaderVars { + return _set("onChildProgress", value); + } + + /** A handler function for LoaderEvent.CHILD_COMPLETE events which are dispatched each time any nested LoaderMax-related loaders that were defined in the XML finishes loading successfully. Make sure your onChildComplete function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onChildComplete(value:Function):XMLLoaderVars { + return _set("onChildComplete", value); + } + + /** A handler function for LoaderEvent.CHILD_CANCEL events which are dispatched each time loading is aborted on any nested LoaderMax-related loaders that were defined in the XML due to either an error or because another loader was prioritized in the queue or because cancel() was manually called on the child loader. Make sure your onChildCancel function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onChildCancel(value:Function):XMLLoaderVars { + return _set("onChildCancel", value); + } + + /** A handler function for LoaderEvent.CHILD_FAIL events which are dispatched each time any nested LoaderMax-related loaders that were defined in the XML fails (and its status chances to LoaderStatus.FAILED). Make sure your onChildFail function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent). **/ + public function onChildFail(value:Function):XMLLoaderVars { + return _set("onChildFail", value); + } + + /** A handler function for LoaderEvent.INIT events which are dispatched when the XML finishes loading and its contents are parsed (creating any dynamic XML-driven loader instances necessary). If any dynamic loaders are created and have a load="true" attribute, they will begin loading at this point and the XMLLoader's COMPLETE will not be dispatched until the loaders have completed as well. **/ + public function onInit(value:Function):XMLLoaderVars { + return _set("onInit", value); + } + + /** A handler function for XMLLoader.RAW_LOAD events which are dispatched when the loader finishes loading the XML but has NOT parsed the XML yet. This can be useful in rare situations when you want to alter the XML before it is parsed by XMLLoader (for identifying LoaderMax-related nodes like <ImageLoader>, etc.). Make sure your onRawLoad function accepts a single parameter of type LoaderEvent (com.greensock.events.LoaderEvent) **/ + public function onRawLoad(value:Function):XMLLoaderVars { + return _set("onRawLoad", value); + } + + /** A String that should be prepended to all parsed LoaderMax-related loader URLs (from nodes like <ImageLoader>, <XMLLoader>, etc.) as soon as the XML has been parsed. For example, if your XML has the following node: <ImageLoader url="1.jpg" /> and prependURLs is set to "../images/", then the ImageLoader's url will end up being "../images/1.jpg". prependURLs affects ALL parsed loaders in the XML. However, if you have an <XMLLoader> node inside your XML that also loads another XML doc and you'd like to recursively prepend all of the URLs in this loader's XML as well as the subloading one and all of its children, use recursivePrependURLs instead of prependURLs. **/ + public function prependURLs(value:String):XMLLoaderVars { + return _set("prependURLs", value); + } + + /** A String that should be recursively prepended to all parsed LoaderMax-related loader URLs (from nodes like <ImageLoader>, <XMLLoader>, etc.). The functionality is identical to prependURLs except that it is recursive, affecting all parsed loaders in subloaded XMLLoaders (other XML files that this one loads too). For example, if your XML has the following node: <XMLLoader url="doc2.xml" /> and recursivePrependURLs is set to "../xml/", then the nested XMLLoader's URL will end up being "../xml/doc2.xml". Since it is recursive, parsed loaders inside doc2.xml and any other XML files that it loads will all have their URLs prepended. So if you load doc1.xml which loads doc2.xml which loads doc3.xml (due to <XMLLoader> nodes discovered in each XML file), recursivePrependURLs will affect all of the parsed LoaderMax-related URLs in all 3 documents. If you'd prefer to only have the URLs affected that are in the XML file that this XMLLoader is loading, use prependURLs instead of recursivePrependURLs. **/ + public function recursivePrependURLs(value:String):XMLLoaderVars { + return _set("recursivePrependURLs", value); + } + + /** By default, XMLLoader will parse any LoaderMax-related loaders in the XML and load any that have their "load" attribute set to "true" and then if any fail to load, they will simply be skipped. But if you prefer to have the XMLLoader fail immediately if one of the parsed loaders fails to load, set skipFailed to false (it is true by default). **/ + public function skipFailed(value:Boolean):XMLLoaderVars { + return _set("skipFailed", value); + } + + +//---- GETTERS / SETTERS ----------------------------------------------------------------- + + /** The generic Object populated by all of the method calls in the XMLLoaderVars instance. This is the raw data that gets passed to the loader. **/ + public function get vars():Object { + return _vars; + } + + /** @private **/ + public function get isGSVars():Boolean { + return true; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/loading/display/.DS_Store b/FairyGUI-as3/src/com/greensock/loading/display/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0loader property for easily referencing + * the original loader, as well as several other useful properties for controling the placement of + * rawContent and the way it is scaled to fit (if at all). You can add a ContentDisplay + * to the display list or populate an array with as many as you want and then if you ever need to unload() + * the content or reload it or figure out its url, etc., you can reference your ContentDisplay's loader + * property like myContent.loader.url or (myContent.loader as SWFLoader).getClass("com.greensock.TweenLite"); + * + * + *

    Flex users can utilize the FlexContentDisplay class instead which extends UIComponent (a Flex requirement). + * All you need to do is set the LoaderMax.contentDisplayClass property to FlexContentDisplay once like:

    + * + import com.greensock.loading.~~; + import com.greensock.loading.display.~~; + +LoaderMax.contentDisplayClass = FlexContentDisplay; + + * + *

    After that, all ImageLoaders, SWFLoaders, and VideoLoaders will return FlexContentDisplay objects + * as their content instead of regular ContentDisplay objects.

    + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class ContentDisplay extends Sprite { + /** @private **/ + protected static var _transformProps:Object = {x:1, y:1, z:1, rotationX:1, rotationY:1, rotationZ:1, scaleX:1, scaleY:1, rotation:1, alpha:1, visible:true, blendMode:"normal", centerRegistration:false, crop:false, scaleMode:"stretch", hAlign:"center", vAlign:"center"}; + /** @private **/ + protected var _loader:LoaderItem; + /** @private **/ + protected var _rawContent:DisplayObject; + /** @private **/ + protected var _centerRegistration:Boolean; + /** @private **/ + protected var _crop:Boolean; + /** @private **/ + protected var _scaleMode:String = "stretch"; + /** @private **/ + protected var _hAlign:String = "center"; + /** @private **/ + protected var _vAlign:String = "center"; + /** @private **/ + protected var _bgColor:uint; + /** @private **/ + protected var _bgAlpha:Number = 0; + /** @private **/ + protected var _fitWidth:Number; + /** @private **/ + protected var _fitHeight:Number; + /** @private only used when crop is true - works around bugs in Flash with the way it reports getBounds() on objects with a scrollRect. **/ + protected var _cropContainer:Sprite; + /** @private Primarily for Video objects which don't act like anything else - we must store the original width/height ratio in this variable so that we can properly apply scaleModes **/ + protected var _nativeRect:Rectangle; + + /** @private A place to reference an object that should be protected from gc - this is used in VideoLoader in order to protect the NetStream object when the loader is disposed. **/ + public var gcProtect:*; + /** Arbitrary data that you can associate with the ContentDisplay instance. For example, you could set data to be an object containing various other properties or set it to an index number related to an array in your application. It is completely optional and arbitrary. **/ + public var data:*; + + /** + * Constructor + * + * @param loader The Loader object that will populate the ContentDisplay's rawContent. + */ + public function ContentDisplay(loader:LoaderItem) { + super(); + this.loader = loader; + } + + /** + * Removes the ContentDisplay from the display list (if necessary), dumps the rawContent, + * and calls unload() and dispose() on the loader (unless you define otherwise with + * the optional parameters). This essentially destroys the ContentDisplay and makes it eligible for garbage + * collection internally, although if you added any listeners manually, you should remove them as well. + * + * @param unloadLoader If true, unload() will be called on the loader. It is true by default. + * @param disposeLoader If true, dispose() will be called on the loader. It is true by default. + */ + public function dispose(unloadLoader:Boolean=true, disposeLoader:Boolean=true):void { + this.rawContent = null; + if (this.parent != null) { + this.parent.removeChild(this); + } + this.gcProtect = null; + if (_loader != null) { + if (unloadLoader) { + _loader.unload(); + } + if (disposeLoader) { + _loader.dispose(false); + _loader = null; + } + } + } + + /** @private **/ + protected function _update():void { + var left:Number = (_centerRegistration && _fitWidth > 0) ? _fitWidth / -2 : 0; + var top:Number = (_centerRegistration && _fitHeight > 0) ? _fitHeight / -2 : 0; + graphics.clear(); + if (_fitWidth > 0 && _fitHeight > 0) { + graphics.beginFill(_bgColor, _bgAlpha); + graphics.drawRect(left, top, _fitWidth, _fitHeight); + graphics.endFill(); + } + if (_rawContent == null) { + return; + } + + var mc:DisplayObject = _rawContent; + var m:Matrix = mc.transform.matrix; + var nativeBounds:Object, contentWidth:Number, contentHeight:Number; + if (mc is Video) {//Video objects don't accurately report getBounds() - they act like their native dimension is always 160x320. + nativeBounds = _nativeRect; + contentWidth = mc.width; + contentHeight = mc.height; + } else { + if (mc is Loader) { + nativeBounds = Loader(mc).contentLoaderInfo; + } else if (_loader != null && _loader.hasOwnProperty("getClass")) { + nativeBounds = mc.loaderInfo; //for SWFLoaders, use loaderInfo.width/height so that everything is based on the stage size, not the bounding box of the DisplayObjects that happen to be on the stage (which could be much larger or smaller than the swf's stage) + } else { + nativeBounds = mc.getBounds(mc); + } + if (nativeBounds is LoaderInfo && _loader != null && _loader.progress < 1) { + try { + contentWidth = nativeBounds.width; //if not enough of the file has loaded, this can throw a runtime error saying that the "width" isn't known yet. + } catch (error:Error) { + nativeBounds = mc.getBounds(mc); + } + } + contentWidth = nativeBounds.width * Math.abs(m.a) + nativeBounds.height * Math.abs(m.b); + contentHeight = nativeBounds.width * Math.abs(m.c) + nativeBounds.height * Math.abs(m.d); + } + + if (_fitWidth > 0 && _fitHeight > 0) { + var w:Number = _fitWidth; + var h:Number = _fitHeight; + + var wGap:Number = w - contentWidth; + var hGap:Number = h - contentHeight; + + if (_scaleMode != "none") { + var displayRatio:Number = w / h; + var contentRatio:Number = nativeBounds.width / nativeBounds.height; + if ((contentRatio < displayRatio && _scaleMode == "proportionalInside") || (contentRatio > displayRatio && _scaleMode == "proportionalOutside")) { + w = h * contentRatio; + } + if ((contentRatio > displayRatio && _scaleMode == "proportionalInside") || (contentRatio < displayRatio && _scaleMode == "proportionalOutside")) { + h = w / contentRatio; + } + + if (_scaleMode != "heightOnly") { + mc.width *= w / contentWidth; + wGap = _fitWidth - w; + } + if (_scaleMode != "widthOnly") { + mc.height *= h / contentHeight; + hGap = _fitHeight - h; + } + } + + if (_hAlign == "left") { + wGap = 0; + } else if (_hAlign != "right") { + wGap /= 2; + } + if (_vAlign == "top") { + hGap = 0; + } else if (_vAlign != "bottom") { + hGap /= 2; + } + + if (_crop) { + //due to bugs in the way Flash reports getBounds() on objects with a scrollRect, we need to just wrap the rawContent in a container and apply the scrollRect to the container. + if (_cropContainer == null || mc.parent != _cropContainer) { + _cropContainer = new Sprite(); + this.addChildAt(_cropContainer, this.getChildIndex(mc)); + _cropContainer.addChild(mc); + } + _cropContainer.x = left; + _cropContainer.y = top; + _cropContainer.scrollRect = new Rectangle(0, 0, _fitWidth, _fitHeight); + mc.x = wGap; + mc.y = hGap; + } else { + if (_cropContainer != null) { + this.addChildAt(mc, this.getChildIndex(_cropContainer)); + _cropContainer = null; + } + mc.x = left + wGap; + mc.y = top + hGap; + } + + } else { + mc.x = (_centerRegistration) ? contentWidth / -2 : 0; + mc.y = (_centerRegistration) ? contentHeight / -2 : 0; + } + } + + + +//---- GETTERS / SETTERS ------------------------------------------------------------------------- + + /** + * The width to which the rawContent should be fit according to the ContentDisplay's scaleMode + * (this width is figured before rotation, scaleX, and scaleY). When a "width" property is defined in the loader's vars + * property/parameter, it is automatically applied to this fitWidth property. For example, the following code will + * set the loader's ContentDisplay fitWidth to 100:

    + * + * var loader:ImageLoader = new ImageLoader("photo.jpg", {width:100, height:80, container:this});

    + * + * @see #fitHeight + * @see #scaleMode + **/ + public function get fitWidth():Number { + return _fitWidth; + } + public function set fitWidth(value:Number):void { + _fitWidth = value; + _update(); + } + + /** + * The height to which the rawContent should be fit according to the ContentDisplay's scaleMode + * (this height is figured before rotation, scaleX, and scaleY). When a "height" property is defined in the loader's vars + * property/parameter, it is automatically applied to this fitHeight property. For example, the following code will + * set the loader's ContentDisplay fitHeight to 80:

    + * + * var loader:ImageLoader = new ImageLoader("photo.jpg", {width:100, height:80, container:this});

    + * + * @see #fitWidth + * @see #scaleMode + **/ + public function get fitHeight():Number { + return _fitHeight; + } + public function set fitHeight(value:Number):void { + _fitHeight = value; + _update(); + } + + /** + * When the ContentDisplay's fitWidth and fitHeight properties are defined (or width + * and height in the loader's vars property/parameter), the scaleMode controls how + * the rawContent will be scaled to fit the area. The following values are recognized (you may use the + * com.greensock.layout.ScaleMode constants if you prefer): + *
      + *
    • "stretch" (the default) - The rawContent will fill the width/height exactly.
    • + *
    • "proportionalInside" - The rawContent will be scaled proportionally to fit inside the area defined by the width/height
    • + *
    • "proportionalOutside" - The rawContent will be scaled proportionally to completely fill the area, allowing portions of it to exceed the bounds defined by the width/height.
    • + *
    • "widthOnly" - Only the width of the rawContent will be adjusted to fit.
    • + *
    • "heightOnly" - Only the height of the rawContent will be adjusted to fit.
    • + *
    • "none" - No scaling of the rawContent will occur.
    • + *
    + **/ + public function get scaleMode():String { + return _scaleMode; + } + public function set scaleMode(value:String):void { + if (_rawContent != null) { + _rawContent.scaleX = _rawContent.scaleY = 1; + } + _scaleMode = value; + _update(); + } + + /** + * If true, the ContentDisplay's registration point will be placed in the center of the rawContent + * which can be useful if, for example, you want to animate its scale and have it grow/shrink from its center. + * @see #scaleMode + **/ + public function get centerRegistration():Boolean { + return _centerRegistration; + } + public function set centerRegistration(value:Boolean):void { + _centerRegistration = value; + _update(); + } + + /** + * When the ContentDisplay's fitWidth and fitHeight properties are defined (or width + * and height in the loader's vars property/parameter), setting crop to + * true will cause the rawContent to be cropped within that area (by applying a scrollRect + * for maximum performance). This is typically useful when the scaleMode is "proportionalOutside" + * or "none" so that any parts of the rawContent that exceed the dimensions defined by + * fitWidth and fitHeight are visually chopped off. Use the hAlign and + * vAlign properties to control the vertical and horizontal alignment within the cropped area. + * + * @see #scaleMode + **/ + public function get crop():Boolean { + return _crop; + } + public function set crop(value:Boolean):void { + _crop = value; + _update(); + } + + /** + * When the ContentDisplay's fitWidth and fitHeight properties are defined (or width + * and height in the loader's vars property/parameter), the hAlign determines how + * the rawContent is horizontally aligned within that area. The following values are recognized (you may use the + * com.greensock.layout.AlignMode constants if you prefer): + *
      + *
    • "center" (the default) - The rawContent will be centered horizontally in the ContentDisplay
    • + *
    • "left" - The rawContent will be aligned with the left side of the ContentDisplay
    • + *
    • "right" - The rawContent will be aligned with the right side of the ContentDisplay
    • + *
    + * @see #scaleMode + * @see #vAlign + **/ + public function get hAlign():String { + return _hAlign; + } + public function set hAlign(value:String):void { + _hAlign = value; + _update(); + } + + /** + * When the ContentDisplay's fitWidth and fitHeight properties are defined (or width + * and height in the loader's vars property/parameter), the vAlign determines how + * the rawContent is vertically aligned within that area. The following values are recognized (you may use the + * com.greensock.layout.AlignMode constants if you prefer): + *
      + *
    • "center" (the default) - The rawContent will be centered vertically in the ContentDisplay
    • + *
    • "top" - The rawContent will be aligned with the top of the ContentDisplay
    • + *
    • "bottom" - The rawContent will be aligned with the bottom of the ContentDisplay
    • + *
    + * @see #scaleMode + * @see #hAlign + **/ + public function get vAlign():String { + return _vAlign; + } + public function set vAlign(value:String):void { + _vAlign = value; + _update(); + } + + /** + * When the ContentDisplay's fitWidth and fitHeight properties are defined (or width + * and height in the loader's vars property/parameter), a rectangle will be drawn inside the + * ContentDisplay object immediately in order to ease the development process (for example, you can add ROLL_OVER/ROLL_OUT + * event listeners immediately). It is transparent by default, but you may define a bgAlpha if you prefer. + * @see #bgAlpha + * @see #fitWidth + * @see #fitHeight + **/ + public function get bgColor():uint { + return _bgColor; + } + public function set bgColor(value:uint):void { + _bgColor = value; + _update(); + } + + /** + * Controls the alpha of the rectangle that is drawn when the ContentDisplay's fitWidth and fitHeight + * properties are defined (or width and height in the loader's vars property/parameter). + * @see #bgColor + * @see #fitWidth + * @see #fitHeight + **/ + public function get bgAlpha():Number { + return _bgAlpha; + } + public function set bgAlpha(value:Number):void { + _bgAlpha = value; + _update(); + } + + /** The raw content which can be a Bitmap, a MovieClip, a Loader, or a Video depending on the type of loader associated with the ContentDisplay. **/ + public function get rawContent():* { + return _rawContent; + } + public function set rawContent(value:*):void { + if (_rawContent != null && _rawContent != value) { + if (_rawContent.parent == this) { + removeChild(_rawContent); + } else if (_cropContainer != null && _rawContent.parent == _cropContainer) { + _cropContainer.removeChild(_rawContent); + removeChild(_cropContainer); + _cropContainer = null; + } + } + _rawContent = value as DisplayObject; + if (_rawContent == null) { + return; + } else if (_rawContent.parent == null || (_rawContent.parent != this && _rawContent.parent != _cropContainer)) { + addChildAt(_rawContent as DisplayObject, 0); + } + _nativeRect = new Rectangle(0, 0, _rawContent.width, _rawContent.height); + _update(); + } + + /** The loader whose rawContent populates this ContentDisplay. If you get the loader's content, it will return this ContentDisplay object. **/ + public function get loader():LoaderItem { + return _loader; + } + public function set loader(value:LoaderItem):void { + _loader = value; + if (_loader == null) { + return; + } else if (!_loader.hasOwnProperty("setContentDisplay")) { + throw new Error("Incompatible loader used for a ContentDisplay"); + } + this.name = _loader.name; + var type:String; + for (var p:String in _transformProps) { + if (p in _loader.vars) { + type = typeof(_transformProps[p]); + this[p] = (type == "number") ? Number(_loader.vars[p]) : (type == "string") ? String(_loader.vars[p]) : Boolean(_loader.vars[p]); + } + } + _bgColor = uint(_loader.vars.bgColor); + _bgAlpha = ("bgAlpha" in _loader.vars) ? Number(_loader.vars.bgAlpha) : ("bgColor" in _loader.vars) ? 1 : 0; + _fitWidth = ("fitWidth" in _loader.vars) ? Number(_loader.vars.fitWidth) : Number(_loader.vars.width); + _fitHeight = ("fitHeight" in _loader.vars) ? Number(_loader.vars.fitHeight) : Number(_loader.vars.height); + _update(); + if (_loader.vars.container is DisplayObjectContainer) { + (_loader.vars.container as DisplayObjectContainer).addChild(this); + } + if (_loader.content != this) { + (_loader as Object).setContentDisplay(this); + } + this.rawContent = (_loader as Object).rawContent; + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/loading/display/FlexContentDisplay.as b/FairyGUI-as3/src/com/greensock/loading/display/FlexContentDisplay.as new file mode 100644 index 0000000..a829d12 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/loading/display/FlexContentDisplay.as @@ -0,0 +1,478 @@ +/** + * VERSION: 1.896 + * DATE: 2012-01-06 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com/loadermax/ + **/ +package com.greensock.loading.display { + import com.greensock.loading.core.LoaderItem; + + import flash.display.DisplayObject; + import flash.display.DisplayObjectContainer; + import flash.display.Loader; + import flash.display.LoaderInfo; + import flash.display.Sprite; + import flash.geom.Matrix; + import flash.geom.Rectangle; + import flash.media.Video; + + import mx.core.UIComponent; +/** + * A container for visual content that is loaded by any of the following: ImageLoaders, SWFLoaders, + * or VideoLoaders which is to be used in Flex. It is essentially a UIComponent that has a loader + * property for easily referencing the original loader, as well as several other useful properties for + * controling the placement of rawContent and the way it is scaled to fit (if at all). That way, + * you can add a FlexContentDisplay to the display list or populate an array with as many as you want and then if + * you ever need to unload() the content or reload it or figure out its url, etc., you can reference your + * FlexContentDisplay's loader property like myContent.loader.url or + * (myContent.loader as SWFLoader).getClass("com.greensock.TweenLite");. + * + * + *

    IMPORTANT: In order for the LoaderMax loaders to use FlexContentDisplay instead of + * the regular ContentDisplay class, you must set the LoaderMax.contentDisplayClass property + * to FlexContentDisplay once like:

    + * + import com.greensock.loading.~~; + import com.greensock.loading.display.~~; + + LoaderMax.contentDisplayClass = FlexContentDisplay; + + * + *

    After that, all ImageLoaders, SWFLoaders, and VideoLoaders will return FlexContentDisplay objects + * as their content instead of regular ContentDisplay objects.

    + * + *

    Copyright 2009-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class FlexContentDisplay extends UIComponent { + /** @private **/ + protected static var _transformProps:Object = {x:1, y:1, z:1, rotationX:1, rotationY:1, rotationZ:1, scaleX:1, scaleY:1, rotation:1, alpha:1, visible:true, blendMode:"normal", centerRegistration:false, crop:false, scaleMode:"stretch", hAlign:"center", vAlign:"center"}; + /** @private **/ + protected var _loader:LoaderItem; + /** @private **/ + protected var _rawContent:DisplayObject; + /** @private **/ + protected var _centerRegistration:Boolean; + /** @private **/ + protected var _crop:Boolean; + /** @private **/ + protected var _scaleMode:String = "stretch"; + /** @private **/ + protected var _hAlign:String = "center"; + /** @private **/ + protected var _vAlign:String = "center"; + /** @private **/ + protected var _bgColor:uint; + /** @private **/ + protected var _bgAlpha:Number = 0; + /** @private **/ + protected var _fitWidth:Number; + /** @private **/ + protected var _fitHeight:Number; + /** @private only used when crop is true - works around bugs in Flash with the way it reports getBounds() on objects with a scrollRect. **/ + protected var _cropContainer:Sprite; + /** @private Primarily for Video objects which don't act like anything else - we must store the original width/height ratio in this variable so that we can properly apply scaleModes **/ + protected var _nativeRect:Rectangle; + + /** @private A place to reference an object that should be protected from gc - this is used in VideoLoader in order to protect the NetStream object when the loader is disposed. **/ + public var gcProtect:*; + /** Arbitrary data that you can associate with the FlexContentDisplay instance. For example, you could set data to be an object containing various other properties or set it to an index number related to an array in your application. It is completely optional and arbitrary. **/ + public var data:*; + + /** + * Constructor + * + * @param loader The Loader object that will populate the FlexContentDisplay's rawContent. + */ + public function FlexContentDisplay(loader:LoaderItem) { + super(); + this.loader = loader; + } + /** + * Removes the FlexContentDisplay from the display list (if necessary), dumps the rawContent, + * and calls unload() and dispose() on the loader (unless you define otherwise with + * the optional parameters). This essentially destroys the FlexContentDisplay and makes it eligible for garbage + * collection internally, although if you added any listeners manually, you should remove them as well. + * + * @param unloadLoader If true, unload() will be called on the loader. It is true by default. + * @param disposeLoader If true, dispose() will be called on the loader. It is true by default. + */ + public function dispose(unloadLoader:Boolean=true, disposeLoader:Boolean=true):void { + if (this.parent != null) { + if (this.parent.hasOwnProperty("removeElement")) { + (this.parent as Object).removeElement(this); + } else { + this.parent.removeChild(this); + } + } + this.rawContent = null; + this.gcProtect = null; + _cropContainer = null; + if (_loader != null) { + if (unloadLoader) { + _loader.unload(); + } + if (disposeLoader) { + _loader.dispose(false); + _loader = null; + } + } + } + + /** @private **/ + protected function _update():void { + var left:Number = (_centerRegistration && _fitWidth > 0) ? _fitWidth / -2 : 0; + var top:Number = (_centerRegistration && _fitHeight > 0) ? _fitHeight / -2 : 0; + graphics.clear(); + if (_fitWidth > 0 && _fitHeight > 0) { + graphics.beginFill(_bgColor, _bgAlpha); + graphics.drawRect(left, top, _fitWidth, _fitHeight); + graphics.endFill(); + } + if (_rawContent == null) { + measure(); + return; + } + var mc:DisplayObject = _rawContent; + var m:Matrix = mc.transform.matrix; + var nativeBounds:Object, contentWidth:Number, contentHeight:Number; + if (mc is Video) {//Video objects don't accurately report getBounds() - they act like their native dimension is always 160x320. + nativeBounds = _nativeRect; + contentWidth = mc.width; + contentHeight = mc.height; + } else { + if (mc is Loader) { + nativeBounds = Loader(mc).contentLoaderInfo; + } else if (_loader != null && _loader.hasOwnProperty("getClass")) { + nativeBounds = mc.loaderInfo; //for SWFLoaders, use loaderInfo.width/height so that everything is based on the stage size, not the bounding box of the DisplayObjects that happen to be on the stage (which could be much larger or smaller than the swf's stage) + } else { + nativeBounds = mc.getBounds(mc); + } + if (nativeBounds is LoaderInfo && _loader != null && _loader.progress < 1) { + try { + contentWidth = nativeBounds.width; //if not enough of the file has loaded, this can throw a runtime error saying that the "width" isn't known yet. + } catch (error:Error) { + nativeBounds = mc.getBounds(mc); + } + } + contentWidth = nativeBounds.width * Math.abs(m.a) + nativeBounds.height * Math.abs(m.b); + contentHeight = nativeBounds.width * Math.abs(m.c) + nativeBounds.height * Math.abs(m.d); + } + + if (_fitWidth > 0 && _fitHeight > 0) { + var w:Number = _fitWidth; + var h:Number = _fitHeight; + + var wGap:Number = w - contentWidth; + var hGap:Number = h - contentHeight; + + if (_scaleMode != "none") { + var displayRatio:Number = w / h; + var contentRatio:Number = nativeBounds.width / nativeBounds.height; + if ((contentRatio < displayRatio && _scaleMode == "proportionalInside") || (contentRatio > displayRatio && _scaleMode == "proportionalOutside")) { + w = h * contentRatio; + } + if ((contentRatio > displayRatio && _scaleMode == "proportionalInside") || (contentRatio < displayRatio && _scaleMode == "proportionalOutside")) { + h = w / contentRatio; + } + + if (_scaleMode != "heightOnly") { + mc.width *= w / contentWidth; + wGap = _fitWidth - w; + } + if (_scaleMode != "widthOnly") { + mc.height *= h / contentHeight; + hGap = _fitHeight - h; + } + } + + if (_hAlign == "left") { + wGap = 0; + } else if (_hAlign != "right") { + wGap /= 2; + } + if (_vAlign == "top") { + hGap = 0; + } else if (_vAlign != "bottom") { + hGap /= 2; + } + + if (_crop) { + //due to bugs in the way Flash reports getBounds() on objects with a scrollRect, we need to just wrap the rawContent in a container and apply the scrollRect to the container. + if (_cropContainer == null || mc.parent != _cropContainer) { + _cropContainer = new Sprite(); + this.addChildAt(_cropContainer, this.getChildIndex(mc)); + _cropContainer.addChild(mc); + } + _cropContainer.x = left; + _cropContainer.y = top; + _cropContainer.scrollRect = new Rectangle(0, 0, _fitWidth, _fitHeight); + mc.x = wGap; + mc.y = hGap; + } else { + if (_cropContainer != null) { + this.addChildAt(mc, this.getChildIndex(_cropContainer)); + _cropContainer = null; + } + mc.x = left + wGap; + mc.y = top + hGap; + } + + } else { + mc.x = (_centerRegistration) ? contentWidth / -2 : 0; + mc.y = (_centerRegistration) ? contentHeight / -2 : 0; + } + measure(); + } + + /** @private **/ + override protected function measure():void { + var bounds:Rectangle; + if (this.parent) { + bounds = this.getBounds(this.parent); + this.width = bounds.width; + this.height = bounds.height; + } + bounds = this.getBounds(this); + this.explicitWidth = bounds.width; + this.explicitHeight = bounds.height; + super.measure(); + } + +//---- GETTERS / SETTERS ------------------------------------------------------------------------- + + /** + * The width to which the rawContent should be fit according to the FlexContentDisplay's scaleMode + * (this width is figured before rotation, scaleX, and scaleY). When a "width" property is defined in the loader's vars + * property/parameter, it is automatically applied to this fitWidth property. For example, the following code will + * set the loader's FlexContentDisplay fitWidth to 100:

    + * + * var loader:ImageLoader = new ImageLoader("photo.jpg", {width:100, height:80, container:this});

    + * + * @see #fitHeight + * @see #scaleMode + **/ + public function get fitWidth():Number { + return _fitWidth; + } + public function set fitWidth(value:Number):void { + _fitWidth = value; + _update(); + } + + /** + * The height to which the rawContent should be fit according to the FlexContentDisplay's scaleMode + * (this height is figured before rotation, scaleX, and scaleY). When a "height" property is defined in the loader's vars + * property/parameter, it is automatically applied to this fitHeight property. For example, the following code will + * set the loader's FlexContentDisplay fitHeight to 80:

    + * + * var loader:ImageLoader = new ImageLoader("photo.jpg", {width:100, height:80, container:this});

    + * + * @see #fitWidth + * @see #scaleMode + **/ + public function get fitHeight():Number { + return _fitHeight; + } + public function set fitHeight(value:Number):void { + _fitHeight = value; + _update(); + } + + /** + * When the FlexContentDisplay's fitWidth and fitHeight properties are defined (or width + * and height in the loader's vars property/parameter), the scaleMode controls how + * the rawContent will be scaled to fit the area. The following values are recognized (you may use the + * com.greensock.layout.ScaleMode constants if you prefer): + *
      + *
    • "stretch" (the default) - The rawContent will fill the width/height exactly.
    • + *
    • "proportionalInside" - The rawContent will be scaled proportionally to fit inside the area defined by the width/height
    • + *
    • "proportionalOutside" - The rawContent will be scaled proportionally to completely fill the area, allowing portions of it to exceed the bounds defined by the width/height.
    • + *
    • "widthOnly" - Only the width of the rawContent will be adjusted to fit.
    • + *
    • "heightOnly" - Only the height of the rawContent will be adjusted to fit.
    • + *
    • "none" - No scaling of the rawContent will occur.
    • + *
    + **/ + public function get scaleMode():String { + return _scaleMode; + } + public function set scaleMode(value:String):void { + if (_rawContent != null) { + _rawContent.scaleX = _rawContent.scaleY = 1; + } + _scaleMode = value; + _update(); + } + + /** + * If true, the FlexContentDisplay's registration point will be placed in the center of the rawContent + * which can be useful if, for example, you want to animate its scale and have it grow/shrink from its center. + * @see #scaleMode + **/ + public function get centerRegistration():Boolean { + return _centerRegistration; + } + public function set centerRegistration(value:Boolean):void { + _centerRegistration = value; + _update(); + } + + /** + * When the FlexContentDisplay's fitWidth and fitHeight properties are defined (or width + * and height in the loader's vars property/parameter), setting crop to + * true will cause the rawContent to be cropped within that area (by applying a scrollRect + * for maximum performance). This is typically useful when the scaleMode is "proportionalOutside" + * or "none" so that any parts of the rawContent that exceed the dimensions defined by + * fitWidth and fitHeight are visually chopped off. Use the hAlign and + * vAlign properties to control the vertical and horizontal alignment within the cropped area. + * + * @see #scaleMode + **/ + public function get crop():Boolean { + return _crop; + } + public function set crop(value:Boolean):void { + _crop = value; + _update(); + } + + /** + * When the FlexContentDisplay's fitWidth and fitHeight properties are defined (or width + * and height in the loader's vars property/parameter), the hAlign determines how + * the rawContent is horizontally aligned within that area. The following values are recognized (you may use the + * com.greensock.layout.AlignMode constants if you prefer): + *
      + *
    • "center" (the default) - The rawContent will be centered horizontally in the FlexContentDisplay
    • + *
    • "left" - The rawContent will be aligned with the left side of the FlexContentDisplay
    • + *
    • "right" - The rawContent will be aligned with the right side of the FlexContentDisplay
    • + *
    + * @see #scaleMode + * @see #vAlign + **/ + public function get hAlign():String { + return _hAlign; + } + public function set hAlign(value:String):void { + _hAlign = value; + _update(); + } + + /** + * When the FlexContentDisplay's fitWidth and fitHeight properties are defined (or width + * and height in the loader's vars property/parameter), the vAlign determines how + * the rawContent is vertically aligned within that area. The following values are recognized (you may use the + * com.greensock.layout.AlignMode constants if you prefer): + *
      + *
    • "center" (the default) - The rawContent will be centered vertically in the FlexContentDisplay
    • + *
    • "top" - The rawContent will be aligned with the top of the FlexContentDisplay
    • + *
    • "bottom" - The rawContent will be aligned with the bottom of the FlexContentDisplay
    • + *
    + * @see #scaleMode + * @see #hAlign + **/ + public function get vAlign():String { + return _vAlign; + } + public function set vAlign(value:String):void { + _vAlign = value; + _update(); + } + + /** + * When the FlexContentDisplay's fitWidth and fitHeight properties are defined (or width + * and height in the loader's vars property/parameter), a rectangle will be drawn inside the + * FlexContentDisplay object immediately in order to ease the development process (for example, you can add ROLL_OVER/ROLL_OUT + * event listeners immediately). It is transparent by default, but you may define a bgAlpha if you prefer. + * @see #bgAlpha + * @see #fitWidth + * @see #fitHeight + **/ + public function get bgColor():uint { + return _bgColor; + } + public function set bgColor(value:uint):void { + _bgColor = value; + _update(); + } + + /** + * Controls the alpha of the rectangle that is drawn when the FlexContentDisplay's fitWidth and fitHeight + * properties are defined (or width and height in the loader's vars property/parameter). + * @see #bgColor + * @see #fitWidth + * @see #fitHeight + **/ + public function get bgAlpha():Number { + return _bgAlpha; + } + public function set bgAlpha(value:Number):void { + _bgAlpha = value; + _update(); + } + + + /** The raw content which can be a Bitmap, a MovieClip, a Loader, or a Video depending on the type of loader associated with the FlexContentDisplay. **/ + public function get rawContent():* { + return _rawContent; + } + + public function set rawContent(value:*):void { + if (_rawContent != null && _rawContent != value) { + if (_rawContent.parent == this) { + removeChild(_rawContent); + } else if (_cropContainer != null && _rawContent.parent == _cropContainer) { + _cropContainer.removeChild(_rawContent); + removeChild(_cropContainer); + _cropContainer = null; + } + } + _rawContent = value as DisplayObject; + if (_rawContent == null) { + return; + } else if (_rawContent.parent == null || (_rawContent.parent != this && _rawContent.parent != _cropContainer)) { + addChildAt(_rawContent as DisplayObject, 0); + } + _nativeRect = new Rectangle(0, 0, _rawContent.width, _rawContent.height); + _update(); + } + + /** The loader whose rawContent populates this FlexContentDisplay. If you get the loader's content, it will return this FlexContentDisplay object. **/ + public function get loader():LoaderItem { + return _loader; + } + + public function set loader(value:LoaderItem):void { + _loader = value; + if (value == null) { + return; + } else if (!_loader.hasOwnProperty("setContentDisplay")) { + throw new Error("Incompatible loader used for a FlexContentDisplay"); + } + this.name = _loader.name; + var type:String; + for (var p:String in _transformProps) { + if (p in _loader.vars) { + type = typeof(_transformProps[p]); + this[p] = (type == "number") ? Number(_loader.vars[p]) : (type == "string") ? String(_loader.vars[p]) : Boolean(_loader.vars[p]); + } + } + _bgColor = uint(_loader.vars.bgColor); + _bgAlpha = ("bgAlpha" in _loader.vars) ? Number(_loader.vars.bgAlpha) : ("bgColor" in _loader.vars) ? 1 : 0; + _fitWidth = ("fitWidth" in _loader.vars) ? Number(_loader.vars.fitWidth) : Number(_loader.vars.width); + _fitHeight = ("fitHeight" in _loader.vars) ? Number(_loader.vars.fitHeight) : Number(_loader.vars.height); + _update(); + if (_loader.vars.container is DisplayObjectContainer) { + if (_loader.vars.container.hasOwnProperty("addElement")) { + (_loader.vars.container as Object).addElement(this); + } else { + (_loader.vars.container as DisplayObjectContainer).addChild(this); + } + } + if (_loader.content != this) { + (_loader as Object).setContentDisplay(this); + } + this.rawContent = (_loader as Object).rawContent; + } + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/motionPaths/.DS_Store b/FairyGUI-as3/src/com/greensock/motionPaths/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0progress property, a value between 0 and 1 where + * 0 is at the beginning of the path, 0.5 is in the middle, and 1 is at the very end of the path. So to tween a + * PathFollower along the path, you can simply tween its progress property. To tween ALL of the + * followers on the path at once, you can tween the CirclePath2D's progress property. PathFollowers + * automatically wrap so that if the progress value exceeds 1 or drops below 0, it shows up on + * the other end of the path. + * + *

    Since CirclePath2D extends the Shape class, you can add an instance to the display list to see a line representation + * of the path drawn which can be helpful especially during the production phase. Use lineStyle() + * to adjust the color, thickness, and other attributes of the line that is drawn (or set the CirclePath2D's + * visible property to false or don't add it to the display list if you don't want to see the line + * at all). You can also adjust all of its properties like radius, scaleX, scaleY, rotation, width, height, x, + * and y. That means you can tween those values as well to achieve very dynamic, complex effects with ease.

    + * + * +import com.greensock.~~; +import com.greensock.plugins.~~; +import com.greensock.motionPaths.~~; +TweenPlugin.activate([CirclePath2DPlugin]); //only needed once in your swf, and only if you plan to use the CirclePath2D tweening feature for convenience + +//create a circle motion path at coordinates x:150, y:150 with a radius of 100 +var circle:CirclePath2D = new CirclePath2D(150, 150, 100); + +//tween mc along the path from the bottom (90 degrees) to 315 degrees in the counter-clockwise direction and make an extra revolution +TweenLite.to(mc, 3, {circlePath2D:{path:circle, startAngle:90, endAngle:315, direction:Direction.COUNTER_CLOCKWISE, extraRevolutions:1}}); + +//tween the circle's rotation, scaleX, scaleY, x, and y properties: +TweenLite.to(circle, 3, {rotation:180, scaleX:0.5, scaleY:2, x:250, y:200}); + +//show the path visually by adding it to the display list (optional) +this.addChild(circle); + + +//--- Instead of using the plugin, you could manually manage followers and tween their "progress" property... + +//make the MovieClip "mc2" follow the circle and start at a position of 90 degrees (this returns a PathFollower instance) +var follower:PathFollower = circle.addFollower(mc2, circle.angleToProgress(90)); + +//tween the follower clockwise along the path to 315 degrees +TweenLite.to(follower, 2, {progress:circle.followerTween(follower, 315, Direction.CLOCKWISE)}); + +//tween the follower counter-clockwise to 200 degrees and add an extra revolution +TweenLite.to(follower, 2, {progress:circle.followerTween(follower, 200, Direction.COUNTER_CLOCKWISE, 1)}); + + * + *

    NOTES

    + *
      + *
    • All followers's positions are automatically updated when you alter the MotionPath that they're following.
    • + *
    • To tween all followers along the path at once, simply tween the MotionPath's progress + * property which will provide better performance than tweening each follower independently.
    • + *
    + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class CirclePath2D extends MotionPath { + /** @private **/ + protected var _radius:Number; + + /** + * Constructor + * + * @param x The x coordinate of the origin (center) of the circle + * @param y The y coordinate of the origin (center) of the circle + * @param radius The radius of the circle + */ + public function CirclePath2D(x:Number, y:Number, radius:Number) { + super(); + _radius = radius; + super.x = x; + super.y = y; + } + + /** @inheritDoc**/ + override public function update(event:Event=null):void { + var angle:Number, px:Number, py:Number; + var m:Matrix = this.transform.matrix; + var a:Number = m.a, b:Number = m.b, c:Number = m.c, d:Number = m.d, tx:Number = m.tx, ty:Number = m.ty; + var f:PathFollower = _rootFollower; + while (f) { + angle = f.cachedProgress * Math.PI * 2; + px = Math.cos(angle) * _radius; + py = Math.sin(angle) * _radius; + f.target.x = px * a + py * c + tx; + f.target.y = px * b + py * d + ty; + + if (f.autoRotate) { + angle += Math.PI / 2; + px = Math.cos(angle) * _radius; + py = Math.sin(angle) * _radius; + f.target.rotation = Math.atan2(px * m.b + py * m.d, px * m.a + py * m.c) * _RAD2DEG + f.rotationOffset; + } + + f = f.cachedNext; + } + if (_redrawLine) { + var g:Graphics = this.graphics; + g.clear(); + g.lineStyle(_thickness, _color, _lineAlpha, _pixelHinting, _scaleMode, _caps, _joints, _miterLimit); + g.drawCircle(0, 0, _radius); + _redrawLine = false; + } + } + + /** @inheritDoc **/ + override public function renderObjectAt(target:Object, progress:Number, autoRotate:Boolean=false, rotationOffset:Number=0):void { + var angle:Number = progress * Math.PI * 2; + var m:Matrix = this.transform.matrix; + var px:Number = Math.cos(angle) * _radius; + var py:Number = Math.sin(angle) * _radius; + target.x = px * m.a + py * m.c + m.tx; + target.y = px * m.b + py * m.d + m.ty; + + if (autoRotate) { + angle += Math.PI / 2; + px = Math.cos(angle) * _radius; + py = Math.sin(angle) * _radius; + target.rotation = Math.atan2(px * m.b + py * m.d, px * m.a + py * m.c) * _RAD2DEG + rotationOffset; + } + } + + + /** + * Translates an angle (in degrees or radians) to the associated progress value + * on the CirclePath2D. For example, to position mc on the CirclePath2D at 90 degrees + * (bottom), you'd do:

    + * + * var follower:PathFollower = myCircle.addFollower(mc, myCircle.angleToProgress(90));
    + * + *
    + * + * @param angle The angle whose progress value you want to determine + * @param useRadians If you prefer to define the angle in radians instead of degrees, set this to true (it is false by default) + * @return The progress value associated with the angle + */ + public function angleToProgress(angle:Number, useRadians:Boolean=false):Number { + var revolution:Number = useRadians ? Math.PI * 2 : 360; + if (angle < 0) { + angle += (int(-angle / revolution) + 1) * revolution; + } else if (angle > revolution) { + angle -= int(angle / revolution) * revolution; + } + return angle / revolution; + } + + /** + * Translates a progress value (typically between 0 and 1 where 0 is the beginning of the path, + * 0.5 is in the middle, and 1 is at the end) to the associated angle on the CirclePath2D. + * For example, to find out what angle a particular PathFollower is at, you'd do:

    + * + * var angle:Number = myCircle.progressToAngle(myFollower.progress, false);
    + * + *
    + * + * @param progress The progress value to translate into an angle + * @param useRadians If you prefer that the angle be described in radians instead of degrees, set this to true (it is false by default) + * @return The angle (in degrees or radians depending on the useRadians value) associated with the progress value. + */ + public function progressToAngle(progress:Number, useRadians:Boolean=false):Number { + var revolution:Number = useRadians ? Math.PI * 2 : 360; + return progress * revolution; + } + + /** + * Simplifies tweening by determining a relative change in the progress value of a follower based on the + * endAngle, direction, and extraRevolutions that you define. For example, to tween myFollower + * from wherever it is currently to the position at 315 degrees, moving in the COUNTER_CLOCKWISE direction + * and going 2 extra revolutions, you could do:

    + * + * TweenLite.to(myFollower, 2, {progress:myCircle.followerTween(myFollower, 315, Direction.COUNTER_CLOCKWISE, 2)}); + * + * + * @param follower The PathFollower (or its associated target) that will be tweened (determines the start angle) + * @param endAngle The destination (end) angle + * @param direction The direction in which to travel - options are Direction.CLOCKWISE ("clockwise"), Direction.COUNTER_CLOCKWISE ("counterClockwise"), or Direction.SHORTEST ("shortest"). + * @param extraRevolutions If instead of going directly to the endAngle, you want the target to travel one or more extra revolutions around the path before going to the endAngle, define that number of revolutions here. + * @param useRadians If you prefer to define the angle in radians instead of degrees, set this to true (it is false by default) + * @return A String representing the amount of change in the progress value (feel free to cast it as a Number if you want, but it returns a String because TweenLite/Max/Nano recognize Strings as relative values. + */ + public function followerTween(follower:*, endAngle:Number, direction:String="clockwise", extraRevolutions:uint=0, useRadians:Boolean=false):String { + var revolution:Number = useRadians ? Math.PI * 2 : 360; + return String(anglesToProgressChange(getFollower(follower).progress * revolution, endAngle, direction, extraRevolutions, useRadians)); + } + + /** + * Returns the amount of progress change between two angles on the CirclePath2D, allowing special + * parameters like direction and extraRevolutions. + * + * @param startAngle The starting angle + * @param endAngle The ending angle + * @param direction The direction in which to travel - options are Direction.CLOCKWISE ("clockwise"), Direction.COUNTER_CLOCKWISE ("counterClockwise"), or Direction.SHORTEST ("shortest"). + * @param extraRevolutions If instead of going directly to the endAngle, you want the target to travel one or more extra revolutions around the path before going to the endAngle, define that number of revolutions here. + * @param useRadians If you prefer to define the angle in radians instead of degrees, set this to true (it is false by default) + * @return A Number representing the amount of change in the progress value. + */ + public function anglesToProgressChange(startAngle:Number, endAngle:Number, direction:String="clockwise", extraRevolutions:uint=0, useRadians:Boolean=false):Number { + var revolution:Number = useRadians ? Math.PI * 2 : 360; + var dif:Number = endAngle - startAngle; + if (dif < 0 && direction == "clockwise") { + dif += (int(-dif / revolution) + 1) * revolution; + } else if (dif > 0 && direction == "counterClockwise") { + dif -= (int(dif / revolution) + 1) * revolution; + } else if (direction == "shortest") { + dif = dif % revolution; + if (dif != dif % (revolution * 0.5)) { + dif = (dif < 0) ? dif + revolution : dif - revolution; + } + } + if (dif < 0 || (dif == 0 && direction == "counterClockwise")) { + dif -= extraRevolutions * revolution; + } else { + dif += extraRevolutions * revolution; + } + return dif / revolution; + } + + /** radius of the circle (does not factor in any transformations like scaleX/scaleY) **/ + public function get radius():Number { + return _radius; + } + public function set radius(value:Number):void { + _radius = value; + _redrawLine = true; + update(); + } + + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/motionPaths/Direction.as b/FairyGUI-as3/src/com/greensock/motionPaths/Direction.as new file mode 100644 index 0000000..1c403c4 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/motionPaths/Direction.as @@ -0,0 +1,21 @@ +/** + * VERSION: 0.1 (beta) + * DATE: 1/19/2010 + * ACTIONSCRIPT VERSION: 3.0 + * UPDATES AND DOCUMENTATION AT: http://www.GreenSock.com + **/ +package com.greensock.motionPaths { + +/** + * [AS3 only] Constants for defining the direction in which to travel on a MotionPath (like CLOCKWISE, COUNTER_CLOCKWISE, SHORTEST, etc.). + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class Direction { + public static const CLOCKWISE:String="clockwise"; + public static const COUNTER_CLOCKWISE:String="counterClockwise"; + public static const SHORTEST:String="shortest"; + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/motionPaths/LinePath2D.as b/FairyGUI-as3/src/com/greensock/motionPaths/LinePath2D.as new file mode 100644 index 0000000..a99ffc0 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/motionPaths/LinePath2D.as @@ -0,0 +1,554 @@ +/** + * VERSION: 0.5 + * DATE: 2012-02-16 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.motionPaths { + import flash.display.Graphics; + import flash.events.Event; + import flash.geom.Matrix; + import flash.geom.Point; + +/** + * [AS3 only] A LinePath2D defines a path (using as many Points as you want) on which a PathFollower can be + * placed and animated. A PathFollower's position along the path is described using the PathFollower's + * progress property, a value between 0 and 1 where 0 is at the beginning of the path, + * 0.5 is in the middle, and 1 is at the very end. To tween a PathFollower along the path, simply tween its + * progress property. To tween ALL of the followers on the path at once, you can tween the + * LinePath2D's progress property which performs better than tweening every PathFollower's + * progress property individually. PathFollowers automatically wrap so that if the + * progress value exceeds 1 it continues at the beginning of the path, meaning that tweening + * its progress from 0 to 2 would have the same effect as tweening it from 0 to 1 twice + * (it would appear to loop). + * + *

    Since LinePath2D extends the Shape class, you can add an instance to the display list to see a line representation + * of the path drawn which can be particularly helpful during the production phase. Use lineStyle() + * to adjust the color, thickness, and other attributes of the line that is drawn (or set the LinePath2D's + * visible property to false or don't add it to the display list if you don't want to see the line + * at all). You can also adjust all of its properties like scaleX, scaleY, rotation, width, height, x, + * and y. That means you can tween those values as well to achieve very dynamic, complex effects + * with ease.

    + * + * +import com.greensock.~~; +import com.greensock.easing.~~; +import com.greensock.motionPaths.~~; +import flash.geom.Point; + +//create a LinePath2D with 5 Points +var path:LinePath2D = new LinePath2D([new Point(0, 0), + new Point(100, 100), + new Point(350, 150), + new Point(50, 200), + new Point(550, 400)]); + +//add it to the display list so we can see it (you can skip this if you prefer) +addChild(path); + +//create an array containing 30 blue squares +var boxes:Array = []; +for (var i:int = 0; i < 30; i++) { + boxes.push(createSquare(10, 0x0000FF)); +} + +//distribute the blue squares evenly across the entire path and set them to autoRotate +path.distribute(boxes, 0, 1, true); + +//put a red square exactly halfway through the 2nd segment +path.addFollower(createSquare(10, 0xFF0000), path.getSegmentProgress(2, 0.5)); + +//tween all of the squares through the path once (wrapping when they reach the end) +TweenMax.to(path, 20, {progress:1}); + +//while the squares are animating through the path, tween the path's position and rotation too! +TweenMax.to(path, 3, {rotation:180, x:550, y:400, ease:Back.easeOut, delay:3}); + +//method for creating squares +function createSquare(size:Number, color:uint=0xFF0000):Shape { + var s:Shape = new Shape(); + s.graphics.beginFill(color, 1); + s.graphics.drawRect(-size / 2, -size / 2, size, size); + s.graphics.endFill(); + this.addChild(s); + return s; +} + + * + *

    NOTES

    + *
      + *
    • All followers' positions are automatically updated when you alter the MotionPath that they're following.
    • + *
    • To tween all followers along the path at once, simply tween the MotionPath's progress + * property which will provide better performance than tweening each follower independently.
    • + *
    + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class LinePath2D extends MotionPath { + /** @private **/ + protected var _first:PathPoint; + /** @private **/ + protected var _points:Array; + /** @private **/ + protected var _totalLength:Number; + /** @private **/ + protected var _hasAutoRotate:Boolean; + /** @private **/ + protected var _prevMatrix:Matrix; + + /** If true, the LinePath2D will analyze every Point whenever it renders to see if any Point's x or y value has changed, thus making it possible to tween them dynamically. Setting autoUpdatePoints to true increases the CPU load due to the extra processing, so only set it to true if you plan to change one or more of the Points' position. **/ + public var autoUpdatePoints:Boolean; + + /** + * Constructor + * + * @param points An array of Points that define the line + * @param x The x coordinate of the origin of the line + * @param y The y coordinate of the origin of the line + * @param autoUpdatePoints If true, the LinePath2D will analyze every Point whenever it renders to see if any Point's x or y value has changed, thus making it possible to tween them dynamically. Setting autoUpdatePoints to true increases the CPU load due to the extra processing, so only set it to true if you plan to change one or more of the Points' position. + */ + public function LinePath2D(points:Array=null, x:Number=0, y:Number=0, autoUpdatePoints:Boolean=false) { + super(); + _points = []; + _totalLength = 0; + this.autoUpdatePoints = autoUpdatePoints; + if (points != null) { + insertMultiplePoints(points, 0); + } + super.x = x; + super.y = y; + } + + /** + * Adds a Point to the end of the current LinePath2D (essentially redefining its end point). + * + * @param point A Point describing the local coordinates through which the line should be drawn. + **/ + public function appendPoint(point:Point):void { + _insertPoint(point, _points.length, false); + } + + /** + * Inserts a Point at a particular index value in the points array, similar to splice() in an array. + * For example, if a LinePath2D instance has 3 Points already and you want to insert a new Point right after the + * first one, you would do: + * +var path:LinePath2D = new LinePath2D([new Point(0, 0), + new Point(100, 50), + new Point(200, 300)]); +path.insertPoint(new Point(50, 50), 1); + + * + * @param point A Point describing the local coordinates through which the line should be drawn. + * @param index The index value in the points array at which the Point should be inserted. + **/ + public function insertPoint(point:Point, index:uint=0):void { + _insertPoint(point, index, false); + } + + /** @private **/ + protected function _insertPoint(point:Point, index:uint, skipOrganize:Boolean):void { + _points.splice(index, 0, new PathPoint(point)); + if (!skipOrganize) { + _organize(); + } + } + + + /** + * Appends multiple Points to the end of the points array. Identical to + * the appendPoint() method, but accepts an array of Points instead of just one. + * + * @param points An array of Points to append. + */ + public function appendMultiplePoints(points:Array):void { + insertMultiplePoints(points, _points.length); + } + + /** + * Inserts multiple Points into the points array at a particular index/position. + * Identical to the insertPoint() method, but accepts an array of points instead of just one. + * + * @param points An array of Points to insert. + * @param index The index value in the points array at which the Points should be inserted. + */ + public function insertMultiplePoints(points:Array, index:uint=0):void { + var l:int = points.length; + for (var i:int = 0; i < l; i++) { + _insertPoint(points[i], index + i, true); + } + _organize(); + } + + /** + * Removes a particular Point instance from the points array. + * + * @param point The Point object to remove from the points array. + */ + public function removePoint(point:Point):void { + var i:int = _points.length; + while (--i > -1) { + if (_points[i].point == point) { + _points.splice(i, 1); + } + } + _organize(); + } + + /** + * Removes the Point that resides at a particular index/position in the points array. + * Just like in arrays, the index is zero-based. For example, to remove the second Point in the array, + * do removePointByIndex(1); + * + * @param index The index value of the Point that should be removed from the points array. + */ + public function removePointByIndex(index:uint):void { + _points.splice(index, 1); + _organize(); + } + + /** @private **/ + protected function _organize():void { + _totalLength = 0; + _hasAutoRotate = false; + var last:int = _points.length - 1; + if (last == -1) { + _first = null; + } else if (last == 0) { + _first = _points[0]; + _first.progress = _first.xChange = _first.yChange = _first.length = 0; + return; + } + var pp:PathPoint; + for (var i:int = 0; i <= last; i++) { + if (_points[i] != null) { + pp = _points[i]; + pp.x = pp.point.x; + pp.y = pp.point.y; + if (i == last) { + pp.length = 0; + pp.next = null; + } else { + pp.next = _points[i + 1]; + pp.xChange = pp.next.x - pp.x; + pp.yChange = pp.next.y - pp.y; + pp.length = Math.sqrt(pp.xChange * pp.xChange + pp.yChange * pp.yChange); + _totalLength += pp.length; + } + } + } + _first = pp = _points[0]; + var curTotal:Number = 0; + while (pp) { + pp.progress = curTotal / _totalLength; + curTotal += pp.length; + pp = pp.next; + } + _updateAngles(); + } + + /** @private **/ + protected function _updateAngles():void { + var m:Matrix = this.transform.matrix; + var pp:PathPoint = _first; + while (pp) { + pp.angle = Math.atan2(pp.xChange * m.b + pp.yChange * m.d, pp.xChange * m.a + pp.yChange * m.c) * _RAD2DEG; + pp = pp.next; + } + _prevMatrix = m; + } + + /** @inheritDoc **/ + override public function update(event:Event=null):void { + if (_first == null || _points.length <= 1) { + return; + } + var updatedAngles:Boolean = false; + var px:Number, py:Number, pp:PathPoint, followerProgress:Number, pathProg:Number; + var m:Matrix = this.transform.matrix; + var a:Number = m.a, b:Number = m.b, c:Number = m.c, d:Number = m.d, tx:Number = m.tx, ty:Number = m.ty; + var f:PathFollower = _rootFollower; + + if (autoUpdatePoints) { + pp = _first; + while (pp) { + if (pp.point.x != pp.x || pp.point.y != pp.y) { + _organize(); + _redrawLine = true; + update(); + return; + } + pp = pp.next; + } + } + + while (f) { + + followerProgress = f.cachedProgress; + pp = _first; + while (pp != null && pp.next.progress < followerProgress) { + pp = pp.next; + } + + if (pp != null) { + pathProg = (followerProgress - pp.progress) / (pp.length / _totalLength); + px = pp.x + pathProg * pp.xChange; + py = pp.y + pathProg * pp.yChange; + f.target.x = px * a + py * c + tx; + f.target.y = px * b + py * d + ty; + + if (f.autoRotate) { + if (!updatedAngles && (_prevMatrix.a != a || _prevMatrix.b != b || _prevMatrix.c != c || _prevMatrix.d != d)) { + _updateAngles(); //only need to update the angles once during the render cycle + updatedAngles = true; + } + f.target.rotation = pp.angle + f.rotationOffset; + } + } + + f = f.cachedNext; + } + if (_redrawLine) { + var g:Graphics = this.graphics; + g.clear(); + g.lineStyle(_thickness, _color, _lineAlpha, _pixelHinting, _scaleMode, _caps, _joints, _miterLimit); + pp = _first; + g.moveTo(pp.x, pp.y); + while (pp) { + g.lineTo(pp.x, pp.y); + pp = pp.next; + } + _redrawLine = false; + } + } + + /** @inheritDoc **/ + override public function renderObjectAt(target:Object, progress:Number, autoRotate:Boolean=false, rotationOffset:Number=0):void { + if (progress > 1) { + progress -= int(progress); + } else if (progress < 0) { + progress -= int(progress) - 1; + } + if (_first == null) { + return; + } + + var pp:PathPoint = _first; + while (pp.next != null && pp.next.progress < progress) { + pp = pp.next; + } + + if (pp != null) { + var pathProg:Number = (progress - pp.progress) / (pp.length / _totalLength); + var px:Number = pp.x + pathProg * pp.xChange; + var py:Number = pp.y + pathProg * pp.yChange; + + var m:Matrix = this.transform.matrix; + target.x = px * m.a + py * m.c + m.tx; + target.y = px * m.b + py * m.d + m.ty; + + if (autoRotate) { + if (_prevMatrix.a != m.a || _prevMatrix.b != m.b || _prevMatrix.c != m.c || _prevMatrix.d != m.d) { + _updateAngles(); + } + target.rotation = pp.angle + rotationOffset; + } + } + + } + + /** + * Translates the progress along a particular segment of the LinePath2D to an overall progress + * value, making it easy to position an object like "halfway along the 2nd segment of the line". For example: + *

    + * + * path.addFollower(mc, path.getSegmentProgress(2, 0.5)); + * + *

    + * + * @param segment The segment number of the line. For example, a line defined by 3 Points would have two segments. + * @param progress The progress along the segment. For example, the midpoint of the second segment would be getSegmentProgress(2, 0.5);. + * @return The progress value (between 0 and 1) describing the overall progress on the entire LinePath2D. + */ + public function getSegmentProgress(segment:uint, progress:Number):Number { + if (_first == null) { + return 0; + } else if (_points.length <= segment) { + segment = _points.length; + } + var pp:PathPoint = _points[segment - 1]; + return pp.progress + ((progress * pp.length) / _totalLength); + } + + /** + * Finds the segment associated with a particular a progress value along the entire LinePath2D. + * For example, to find which segment is halfway along the LinePath2D: + * + *

    + * path.getSegment(0.5); + *

    + * + *

    To find the segment associated with the LinePath2D's current progress, simply omit the + * progress parameter:

    + * + *

    + * var curSegment = path.getSegment(); + *

    + * + * @param progress The progress along the entire LinePath2D (a value between 0 and 1). For example, the midpoint would be getSegment(0.5);. + * @return An integer describing the segment number where the first is 1, second is 2, etc. + */ + public function getSegment(progress:Number=NaN):uint { + if (!(progress || progress == 0)) { + progress = _progress; + } + if (_points.length < 2) { + return 0; + } + var l:int = _points.length; + for (var i:int = 1; i < l; i++) { + if (progress < (_points[i] as PathPoint).progress) { + return i; + } + } + return _points.length - 1; + } + + /** + * Allows you to snap an object like a Sprite, Point, MovieClip, etc. to the LinePath2D by determining + * the closest position along the line to the current position of the object. It will automatically + * create a PathFollower instance for the target object and reposition it on the LinePath2D. + * + * @param target The target object that should be repositioned onto the LinePath2D. + * @param autoRotate When autoRotate is true, the follower will automatically be rotated so that it is oriented to the angle of the path that it is following. To offset this value (like to always add 90 degrees for example), use the rotationOffset property. + * @param rotationOffset When autoRotate is true, this value will always be added to the resulting rotation of the target. + * @return A PathFollower instance that was created for the target. + */ + public function snap(target:Object, autoRotate:Boolean=false, rotationOffset:Number=0):PathFollower { + return this.addFollower(target, getClosestProgress(target), autoRotate, rotationOffset); + } + + /** + * Finds the closest overall progress value on the LinePath2D based on the + * target object's current position (x and y properties). For example, + * to position the mc object on the LinePath2D at the spot that's closest to the Point x:100, y:50, + * you could do:

    + * + * path.addFollower(mc, path.getClosestProgress(new Point(100, 50))); + * + *

    + * + * @param target The target object whose position (x/y property values) are analyzed for proximity to the LinePath2D. + * @return The overall progress value describing the position on the LinePath2D that is closest to the target's current position. + */ + public function getClosestProgress(target:Object):Number { + if (_first == null || _points.length == 1) { + return 0; + } + + var closestPath:PathPoint; + var closest:Number = 9999999999; + var length:Number = 0; + var halfPI:Number = Math.PI / 2; + + var xTarg:Number = target.x; + var yTarg:Number = target.y; + var pp:PathPoint = _first; + var dxTarg:Number, dyTarg:Number, dxNext:Number, dyNext:Number, dTarg:Number, angle:Number, next:PathPoint, curDist:Number; + while (pp) { + dxTarg = xTarg - pp.x; + dyTarg = yTarg - pp.y; + next = (pp.next != null) ? pp.next : pp; + dxNext = next.x - pp.x; + dyNext = next.y - pp.y; + dTarg = Math.sqrt(dxTarg * dxTarg + dyTarg * dyTarg); + + angle = Math.atan2(dyTarg, dxTarg) - Math.atan2(dyNext, dxNext); + if (angle < 0) { + angle = -angle; + } + + if (angle > halfPI) { //obtuse + if (dTarg < closest) { + closest = dTarg; + closestPath = pp; + length = 0; + } + } else { + curDist = Math.cos(angle) * dTarg; + if (curDist < 0) { + curDist = -curDist; + } + if (curDist > pp.length) { + dxNext = xTarg - next.x; + dyNext = yTarg - next.y; + curDist = Math.sqrt(dxNext * dxNext + dyNext * dyNext); + if (curDist < closest) { + closest = curDist; + closestPath = pp; + length = pp.length; + } + } else { + curDist = Math.sin(angle) * dTarg; + if (curDist < closest) { + closest = curDist; + closestPath = pp; + length = Math.cos(angle) * dTarg; + } + } + } + pp = pp.next; + } + + return closestPath.progress + (length / _totalLength); + } + + +//---- GETTERS / SETTERS ---------------------------------------------------------------------- + + /** Total length of the LinePath2D as though it were stretched out in a straight, flat line. **/ + public function get totalLength():Number { + return _totalLength; + } + + /** The array of Points through which the LinePath2D is drawn. IMPORTANT: Changes to the array are NOT automatically applied or reflected in the LinePath2D - just like the filters property of a DisplayObject, you must set the points property of a LinePath2D directly to ensure that any changes are applied internally. **/ + public function get points():Array { + var a:Array = []; + var l:int = _points.length; + for (var i:int = 0; i < l; i++) { + a[i] = _points[i].point; + } + return a; + } + public function set points(value:Array):void { + _points = []; + insertMultiplePoints(value, 0); + _redrawLine = true; + update(null); + } + + } +} +import flash.geom.Point; + +internal class PathPoint { + public var x:Number; + public var y:Number; + public var progress:Number; + public var xChange:Number; + public var yChange:Number; + public var point:Point; + public var length:Number; + public var angle:Number; + + public var next:PathPoint; + + public function PathPoint(point:Point) { + this.x = point.x; + this.y = point.y; + this.point = point; + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/motionPaths/MotionPath.as b/FairyGUI-as3/src/com/greensock/motionPaths/MotionPath.as new file mode 100644 index 0000000..86d8b18 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/motionPaths/MotionPath.as @@ -0,0 +1,522 @@ +/** + * VERSION: 0.6 + * DATE: 2011-08-19 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.motionPaths { + import flash.display.Shape; + import flash.events.Event; +/** + * [AS3 only] A MotionPath defines a path along which a PathFollower can travel, making it relatively simple to do + * things like tween an object in a circular path. A PathFollower's position along the path is described using + * its progress property, a value between 0 and 1 where 0 is at the beginning of the path, 0.5 is in + * the middle, and 1 is at the very end of the path. So to tween a PathFollower along the path, you can simply + * tween its progress property. To tween ALL of the followers on the path at once, you can + * tween the MotionPath's progress property. PathFollowers automatically wrap so that if + * the progress value exceeds 1 or drops below 0, it shows up on the other end of the path + * + *

    Since MotionPath extends the Shape class, you can add an instance to the display list to see a line representation + * of the path drawn which can be helpful especially during the production phase. Use lineStyle() + * to adjust the color, thickness, and other attributes of the line that is drawn (or set the MotionPath's + * visible property to false or don't add it to the display list if you don't want to see the line + * at all). You can also adjust all of its properties like scaleX, scaleY, rotation, width, height, x, + * and y just like any DisplayObject. That means you can tween those values as well to achieve very + * dynamic, complex effects with ease.

    + * + * +import com.greensock.~~; +import com.greensock.plugins.~~; +import com.greensock.motionPaths.~~; +TweenPlugin.activate([CirclePath2DPlugin]); //only needed once in your swf, and only if you plan to use the circlePath2D tweening feature for convenience + +//create a circle motion path at coordinates x:150, y:150 with a radius of 100 +var circle:CirclePath2D = new CirclePath2D(150, 150, 100); + +//tween mc along the path from the bottom (90 degrees) to 315 degrees in the counter-clockwise direction and make an extra revolution +TweenLite.to(mc, 3, {circlePath2D:{path:circle, startAngle:90, endAngle:315, autoRotate:true, direction:Direction.COUNTER_CLOCKWISE, extraRevolutions:1}}); + +//tween the circle's rotation, scaleX, scaleY, x, and y properties: +TweenLite.to(circle, 3, {rotation:180, scaleX:0.5, scaleY:2, x:250, y:200}); + +//show the path visually by adding it to the display list (optional) +this.addChild(circle); + + +//--- Instead of using the plugin, you could manually manage followers and tween their "progress" property... + +//make the MovieClip "mc2" follow the circle and start at a position of 90 degrees (this returns a PathFollower instance) +var follower:PathFollower = circle.addFollower(mc2, circle.angleToProgress(90)); + +//tween the follower clockwise along the path to 315 degrees +TweenLite.to(follower, 2, {progress:circle.followerTween(follower, 315, Direction.CLOCKWISE)}); + +//tween the follower counter-clockwise to 200 degrees and add an extra revolution +TweenLite.to(follower, 2, {progress:circle.followerTween(follower, 200, Direction.COUNTER_CLOCKWISE, 1)}); + + * + *

    NOTES

    + *
      + *
    • All followers are automatically updated when you alter the MotionPath that they're following.
    • + *
    • To tween all followers along the path at once, simply tween the MotionPath's progress + * property which will provide better performance than tweening each follower independently.
    • + *
    + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class MotionPath extends Shape { + /** @private **/ + protected static const _RAD2DEG:Number = 180 / Math.PI; + /** @private **/ + protected static const _DEG2RAD:Number = Math.PI / 180; + + /** @private **/ + protected var _redrawLine:Boolean; + + /** @private **/ + protected var _thickness:Number; + /** @private **/ + protected var _color:uint; + /** @private **/ + protected var _lineAlpha:Number; + /** @private **/ + protected var _pixelHinting:Boolean; + /** @private **/ + protected var _scaleMode:String; + /** @private **/ + protected var _caps:String; + /** @private **/ + protected var _joints:String; + /** @private **/ + protected var _miterLimit:Number; + + /** @private **/ + protected var _rootFollower:PathFollower; + /** @private **/ + protected var _progress:Number; + /** @private not re-interpolated between 0 and 1. **/ + protected var _rawProgress:Number; + + /** @private **/ + public function MotionPath() { + _progress = _rawProgress = 0; + lineStyle(1, 0x666666, 1, false, "none", null, null, 3, true); + this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage, false, 0, true); + } + + /** @private **/ + protected function onAddedToStage(event:Event):void { + update(); + } + + /** + * Adds a follower to the path, optionally setting it to a particular progress position. If + * the target isn't a PathFollower instance already, one will be created for it. The target + * can be any object that has x and y properties. + * + * @param target Any object that has x and y properties that you'd like to follow the path. Existing PathFollower instances are allowed. + * @param progress The progress position at which the target should be placed initially (0 by default) + * @param autoRotate When autoRotate is true, the target will automatically be rotated so that it is oriented to the angle of the path. To offset this value (like to always add 90 degrees for example), use the rotationOffset property. + * @param rotationOffset When autoRotate is true, this value will always be added to the resulting rotation of the target. + * @return A PathFollower instance associated with the target (you can tween this PathFollower's progress property to move it along the path). + */ + public function addFollower(target:*, progress:Number=0, autoRotate:Boolean=false, rotationOffset:Number=0):PathFollower { + var f:PathFollower = getFollower(target); + if (f == null) { + f = new PathFollower(target); + } + f.autoRotate = autoRotate; + f.rotationOffset = rotationOffset; + if (f.path != this) { + if (_rootFollower) { + _rootFollower.cachedPrev = f; + } + f.cachedNext = _rootFollower; + _rootFollower = f; + f.path = this; + f.progress = progress; + } + return f; + } + + /** + * Removes the target as a follower. The target can be a PathFollower instance or the target associated + * with one of the PathFollower instances. + * + * @param target the target or PathFollower instance to remove. + */ + public function removeFollower(target:*):void { + var f:PathFollower = getFollower(target); + if (f == null) { + return; + } + if (f.cachedNext) { + f.cachedNext.cachedPrev = f.cachedPrev; + } + if (f.cachedPrev) { + f.cachedPrev.cachedNext = f.cachedNext; + } else if (_rootFollower == f) { + _rootFollower = f.cachedNext; + } + f.cachedNext = f.cachedPrev = null; + f.path = null; + } + + /** Removes all followers. **/ + public function removeAllFollowers():void { + var f:PathFollower = _rootFollower; + var next:PathFollower; + while (f) { + next = f.cachedNext; + f.cachedNext = f.cachedPrev = null; + f.path = null; + f = next; + } + _rootFollower = null; + } + + /** + * Distributes objects evenly along the MotionPath. You can optionally define minimum and maximum + * progress values between which the objects will be distributed. For example, if you want them + * distributed from the very beginning of the path to the middle, you would do:

    + * + * path.distribute([mc1, mc2, mc3], 0, 0.5);

    + * + *

    As it loops through the targets array, if a target is found for which a PathFollower + * doesn't exist, one will automatically be created and added to the path. The targets + * array can be populated with PathFollowers or DisplayObjects or Points or pretty much any object.

    + * + * @param targets An array of targets (PathFollowers, DisplayObjects, Points, or pretty much any object) that should be distributed evenly along the MotionPath. As it loops through the targets array, if a target is found for which a PathFollower doesn't exist, one will automatically be created and added to the path. + * @param min The minimum progress value at which the targets will begin being distributed. This value will always be between 0 and 1. For example, if the targets should be distributed from the midpoint of the path through the end, the min parameter would be 0.5 and the max parameter would be 1. + * @param max The maximum progress value where the targets will end distribution. This value will always be between 0 and 1. For example, if the targets should be distributed from the midpoint of the path through the end, the min parameter would be 0.5 and the max parameter would be 1. + * @param autoRotate When autoRotate is true, the target will automatically be rotated so that it is oriented to the angle of the path. To offset this value (like to always add 90 degrees for example), use the rotationOffset property. + * @param rotationOffset When autoRotate is true, this value will always be added to the resulting rotation of the target. For example, to always add 90 degrees to the autoRotation, rotationOffset would be 90. + */ + public function distribute(targets:Array=null, min:Number=0, max:Number=1, autoRotate:Boolean=false, rotationOffset:Number=0):void { + if (targets == null) { + targets = this.followers; + } + min = _normalize(min); + max = _normalize(max); + var f:PathFollower; + var i:int = targets.length; + var space:Number = (i > 1) ? (max - min) / (i - 1) : 1; + while (--i > -1) { + f = getFollower(targets[i]); + if (f == null) { + f = this.addFollower(targets[i], 0, autoRotate, rotationOffset); + } + f.cachedProgress = f.cachedRawProgress = min + (space * i); + this.renderObjectAt(f.target, f.cachedProgress, autoRotate, rotationOffset); + } + } + + /** @private **/ + protected function _normalize(num:Number):Number { + if (num > 1) { + num -= int(num); + } else if (num < 0) { + num -= int(num) - 1; + } + return num; + } + + /** + * Returns the PathFollower instance associated with a particular target or null if none exists. + * + * @param target The target whose PathFollower instance you want returned. + * @return PathFollower instance + */ + public function getFollower(target:Object):PathFollower { + if (target is PathFollower) { + return target as PathFollower; + } + var f:PathFollower = _rootFollower; + while (f) { + if (f.target == target) { + return f; + } + f = f.cachedNext; + } + return null; + } + + /** + * Forces the MotionPath to re-render itself and all of its followers. + * + * @param event An optional Event that is accepted just to make it easier for use as an event handler (to have it update automatically on every frame, for example, you could add an ENTER_FRAME listener and point it to this method). **/ + public function update(event:Event=null):void { + + } + + /** + * Positions any object with x and y properties on the path at a specific progress position. + * For example, to position mc in the middle of the path, you would do:

    + * + * myPath.renderObjectAt(mc, 0.5);

    + * + *

    Some paths have methods to translate other meaningful information into a progress value, like + * for a CirclePath2D you can get the progress associated with the 90-degree position with the + * angleToPosition() method like this:

    + * + * myCircle.renderObjectAt(mc, myCircle.angleToProgress(90)); + * + *

    + * + * @param target The target object to position + * @param progress The progress value (typically between 0 and 1 where 0 is the beginning of the path, 0.5 is in the middle, and 1 is at the end) + * @param autoRotate When autoRotate is true, the target will automatically be rotated so that it is oriented to the angle of the path. To offset this value (like to always add 90 degrees for example), use the rotationOffset property. + * @param rotationOffset When autoRotate is true, this value will always be added to the resulting rotation of the target. + */ + public function renderObjectAt(target:Object, progress:Number, autoRotate:Boolean=false, rotationOffset:Number=0):void { + + } + + /** + * Sets the line style for the path which you will only see if you add the path to the display list + * with something like addChild() and make sure the visible property is true. For example, to make + * a CirclePath2D visible with a red line red that's 3 pixels thick, you could do: + * + * +var myCircle:CirclePath2D = new CirclePath2D(150, 150, 100); +myCircle.lineStyle(3, 0xFF0000); +addChild(myCircle); + + * + * @param thickness line thickness + * @param color line color + * @param alpha line alpha + * @param pixelHinting pixel hinting + * @param scaleMode scale mode + * @param caps caps + * @param joints joints + * @param miterLimit miter limit + * @param skipRedraw if true, the redraw will be skipped. + */ + public function lineStyle(thickness:Number=1, color:uint=0x666666, alpha:Number=1, pixelHinting:Boolean=false, scaleMode:String="none", caps:String=null, joints:String=null, miterLimit:Number=3, skipRedraw:Boolean=false):void { + _thickness = thickness; + _color = color; + _lineAlpha = alpha; + _pixelHinting = pixelHinting; + _scaleMode = scaleMode; + _caps = caps; + _joints = joints; + _miterLimit = miterLimit; + _redrawLine = true; + if (!skipRedraw) { + update(); + } + } + + /** @inheritDoc **/ + override public function get rotation():Number { + return super.rotation; + } + override public function set rotation(value:Number):void { + super.rotation = value; + update(); + } + + /** @inheritDoc **/ + override public function get scaleX():Number { + return super.scaleX; + } + override public function set scaleX(value:Number):void { + super.scaleX = value; + update(); + } + + /** @inheritDoc **/ + override public function get scaleY():Number { + return super.scaleY; + } + override public function set scaleY(value:Number):void { + super.scaleY = value; + update(); + } + + /** @inheritDoc **/ + override public function get x():Number { + return super.x; + } + override public function set x(value:Number):void { + super.x = value; + update(); + } + + /** @inheritDoc **/ + override public function get y():Number { + return super.y; + } + override public function set y(value:Number):void { + super.y = value; + update(); + } + + /** @inheritDoc **/ + override public function get width():Number { + return super.width; + } + override public function set width(value:Number):void { + super.width = value; + update(); + } + + /** @inheritDoc **/ + override public function get height():Number { + return super.height; + } + override public function set height(value:Number):void { + super.height = value; + update(); + } + + /** @inheritDoc **/ + override public function get visible():Boolean { + return super.visible; + } + override public function set visible(value:Boolean):void { + super.visible = value; + _redrawLine = true; + update(); + } + + /** + * Identical to progress except that the value is not re-interpolated between 0 and 1. + * For example, if you set the motion path's rawProgress to 2.1, progress + * would be 0.1 (the corresponding value between 0 and 1), essentially wrapping it. If rawProgress + * is set to -3.4, progress would be 0.6. Setting progress affects rawProgress + * and vice versa. For example: + * + * +myPath.progress = 2.1; +trace(myPath.progress); //traces "0.1" +trace(myPath.rawProgress); //traces "2.1" + + * + *

    Either property can be used to move all followers along the path. Unlike a PathFollower's + * progress or rawProgress, this value is not absolute for motion paths - it simply + * facilitates relative movement of followers together along the path in a way that performs better than + * tweening each follower independently (plus it's easier). If your goal is to tween all followers around + * a CirclePath2D twice completely, for example, you could just add 2 to the progress or + * rawProgress value or use a relative value in the tween, like:

    + * + * TweenLite.to(myCircle, 5, {rawProgress:"2"}); //or myCircle.rawProgress + 2 + * + *

    + * @see #progress + **/ + public function get rawProgress():Number { + return _rawProgress; + } + public function set rawProgress(value:Number):void { + this.progress = value; + } + + /** + * A value between 0 and 1 that can be used to move all followers along the path. progress + * is identical to rawProgress except that the rawProgress is not re-interpolated + * between 0 and 1. For example, if you set the motion path's rawProgress to 2.1, progress + * would be 0.1 (the corresponding value between 0 and 1), essentially wrapping it. If rawProgress + * is set to -3.4, progress would be 0.6. You may set progress to any value but it will + * be re-interpolated to its corresponding value between 0 and 1 very much like a DisplayObject's "rotation" + * property in Flash where setting it to 270 works fine but when you trace() the rotation value it will report + * as -90 instead because rotation is always interpolated to be between 180 and -180. Setting progress + * affects rawProgress too. For example: + * + * +myPath.progress = 2.1; +trace(myPath.progress); //traces "0.1" +trace(myPath.rawProgress); //traces "2.1" + + * + *

    Either property can be used to move all followers along the path. Unlike a PathFollower's + * progress or rawProgress, this value is not absolute for motion paths - it simply + * facilitates movement of followers together along the path in a way that performs better than + * tweening each follower independently (plus it's easier). If your goal is to tween all followers around + * a CirclePath2D twice completely, you could just add 2 to the progress or + * rawProgress value or use a relative value in the tween, like:

    + * + * TweenLite.to(myCircle, 5, {progress:"2"}); //or myCircle.progress + 2

    + * + *

    Also note that if you set progress to any value outside of the 0-1 range, + * rawProgress will be set to that exact value. If progress is + * set to a value within the typical 0-1 range, it will only affect the decimal value of + * rawProgress. For example, if rawProgress is 3.4 and then you + * set progress to 0.1, rawProgress will end up at 3.1 (notice + * the "3" integer was kept). But if progress was instead set to 5.1, since + * it exceeds the 0-1 range, rawProgress would become 5.1. This behavior was + * adopted in order to deal most effectively with wrapping situations. For example, if + * rawProgress was tweened to 3.4 and then later you wanted to fine-tune + * where things were positioned by tweening progress to 0.8, it still may be + * important to be able to determine how many loops/wraps occurred, so rawProgress + * should be 3.8, not reset to 0.8. Feel free to use rawProgress exclusively if you + * prefer to avoid any of the re-interpolation that occurs with progress.

    + * + * @see #rawProgress + **/ + public function get progress():Number { + return _progress; + } + public function set progress(value:Number):void { + if (value > 1) { + _rawProgress = value; + value -= int(value); + if (value == 0) { + value = 1; + } + } else if (value < 0) { + _rawProgress = value; + value -= int(value) - 1; + } else { + _rawProgress = int(_rawProgress) + value; + } + var dif:Number = value - _progress; + var f:PathFollower = _rootFollower; + while (f) { + f.cachedProgress += dif; + f.cachedRawProgress += dif; + + if (f.cachedProgress > 1) { + f.cachedProgress -= int(f.cachedProgress); + if (f.cachedProgress == 0) { + f.cachedProgress = 1; + } + } else if (f.cachedProgress < 0) { + f.cachedProgress -= int(f.cachedProgress) - 1; + } + + f = f.cachedNext; + } + _progress = value; + update(); + } + + /** Returns an array of all PathFollower instances associated with this path **/ + public function get followers():Array { + var a:Array = []; + var cnt:uint = 0; + var f:PathFollower = _rootFollower; + while (f) { + a[cnt++] = f; + f = f.cachedNext; + } + return a; + } + + /** Returns an array of all target instances associated with the PathFollowers of this path **/ + public function get targets():Array { + var a:Array = []; + var cnt:uint = 0; + var f:PathFollower = _rootFollower; + while (f) { + a[cnt++] = f.target; + f = f.cachedNext; + } + return a; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/motionPaths/PathFollower.as b/FairyGUI-as3/src/com/greensock/motionPaths/PathFollower.as new file mode 100644 index 0000000..d8a3204 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/motionPaths/PathFollower.as @@ -0,0 +1,157 @@ +/** + * VERSION: 0.51 + * DATE: 2011-01-12 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.motionPaths { +/** + * [AS3 only] A PathFollower is used to associate a particular target object (like a MovieClip, Point, Sprite, etc.) + * with a MotionPath and it offers a tweenable progress property that manages positioning + * the target on the path accordingly. The progress property is a value between + * 0 and 1 where 0 is at the beginning of the path, 0.5 is in the middle, and 1 is at the end. + * When the follower's autoRotate property is true, the target will be + * rotated in relation to the path that it is following. + * + * +import com.greensock.~~; +import com.greensock.motionPaths.~~; + +//create a circle motion path at coordinates x:150, y:150 with a radius of 100 +var circle:CirclePath2D = new CirclePath2D(150, 150, 100); + +//make the MovieClip "mc" follow the circle and start at a position of 90 degrees (this returns a PathFollower instance) +var follower:PathFollower = circle.addFollower(mc, circle.angleToProgress(90), true); + +//tween the follower clockwise along the path to 315 degrees +TweenLite.to(follower, 2, {progress:circle.followerTween(follower, 315, Direction.CLOCKWISE)}); + +//tween the follower counter-clockwise to 200 degrees and add an extra revolution +TweenLite.to(follower, 2, {progress:circle.followerTween(follower, 200, Direction.COUNTER_CLOCKWISE, 1)}); + + * + *

    NOTES

    + *
      + *
    • All followers are automatically updated when you alter the MotionPath that they're following.
    • + *
    • To tween all followers along the path at once, simply tween the MotionPath's progress + * property which will provide better performance than tweening each follower independently.
    • + *
    + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class PathFollower { + /** The target object associated with the PathFollower (like a Sprite, MovieClip, Point, etc.). The object must have x and y properties. **/ + public var target:Object; + + /** @private **/ + public var cachedProgress:Number; + /** @private not re-interpolated between 0 and 1. We store this value and cachedProgress instead of calculating one of them on the fly in order to maximize rendering performance. **/ + public var cachedRawProgress:Number; + /** @private **/ + public var cachedNext:PathFollower; + /** @private **/ + public var cachedPrev:PathFollower; + + /** The MotionPath instance that this PathFollower should follow **/ + public var path:MotionPath; + /** When autoRotate is true, the follower will automatically be rotated so that it is oriented to the angle of the path that it is following. To offset this value (like to always add 90 degrees for example), use the rotationOffset property. **/ + public var autoRotate:Boolean; + /** When autoRotate is true, this value will always be added to the resulting rotation of the target. **/ + public var rotationOffset:Number; + + /** + * Constructor + * + * @param target The target object associated with the PathFollower (like a Sprite, MovieClip, Point, etc.). The object must have x and y properties. + * @param autoRotate When autoRotate is true, the follower will automatically be rotated so that it is oriented to the angle of the path that it is following. To offset this value (like to always add 90 degrees for example), use the rotationOffset property. + * @param rotationOffset When autoRotate is true, this value will always be added to the resulting rotation of the target. + */ + public function PathFollower(target:Object, autoRotate:Boolean=false, rotationOffset:Number=0) { + this.target = target; + this.autoRotate = autoRotate; + this.rotationOffset = rotationOffset; + this.cachedProgress = this.cachedRawProgress = 0; + } + + /** + * Identical to progress except that the value doesn't get re-interpolated between 0 and 1. + * rawProgress (and progress) indicates the follower's position along the motion path. + * For example, to place the object on the path at the halfway point, you could set its rawProgress + * to 0.5. You can tween to values that are greater than 1 or less than 0. For example, setting rawProgress + * to 1.2 also sets progress to 0.2 and setting rawProgress to -0.2 is the + * same as setting progress to 0.8. If your goal is to tween the PathFollower around a CirclePath2D twice + * completely, you could just add 2 to the rawProgress value or use a relative value in the tween, like:

    + * + * TweenLite.to(myFollower, 5, {rawProgress:"2"}); //or myFollower.rawProgress + 2 + * + *

    + * + *

    Since rawProgress doesn't re-interpolate values to always fitting between 0 and 1, it + * can be useful if you need to find out how many times the PathFollower has wrapped.

    + * + * @see #progress + **/ + public function get rawProgress():Number { + return this.cachedRawProgress; + } + public function set rawProgress(value:Number):void { + this.progress = value; + } + + /** + * A value between 0 and 1 that indicates the follower's position along the motion path. For example, + * to place the object on the path at the halfway point, you would set its progress to 0.5. + * You can tween to values that are greater than 1 or less than 0 but the values are simply wrapped. + * So, for example, setting progress to 1.2 is the same as setting it to 0.2 and -0.2 is the + * same as 0.8. If your goal is to tween the PathFollower around a CirclePath2D twice completely, you could just + * add 2 to the progress value or use a relative value in the tween, like:

    + * + * TweenLite.to(myFollower, 5, {progress:"2"}); //or myFollower.progress + 2

    + * + *

    progress is identical to rawProgress except that rawProgress + * does not get re-interpolated between 0 and 1. For example, if rawProgress + * is set to -3.4, progress would be 0.6. rawProgress can be useful if + * you need to find out how many times the PathFollower has wrapped.

    + * + *

    Also note that if you set progress to any value outside of the 0-1 range, + * rawProgress will be set to that exact value. If progress is + * set to a value within the typical 0-1 range, it will only affect the decimal value of + * rawProgress. For example, if rawProgress is 3.4 and then you + * set progress to 0.1, rawProgress will end up at 3.1 (notice + * the "3" integer was kept). But if progress was instead set to 5.1, since + * it exceeds the 0-1 range, rawProgress would become 5.1. This behavior was + * adopted in order to deal most effectively with wrapping situations. For example, if + * rawProgress was tweened to 3.4 and then later you wanted to fine-tune + * where things were positioned by tweening progress to 0.8, it still may be + * important to be able to determine how many loops/wraps occurred, so rawProgress + * should be 3.8, not reset to 0.8. Feel free to use rawProgress exclusively if you + * prefer to avoid any of the re-interpolation that occurs with progress.

    + * + * @see #rawProgress + **/ + public function get progress():Number { + return this.cachedProgress; + } + public function set progress(value:Number):void { + if (value > 1) { + this.cachedRawProgress = value; + this.cachedProgress = value - int(value); + if (this.cachedProgress == 0) { + this.cachedProgress = 1; + } + } else if (value < 0) { + this.cachedRawProgress = value; + this.cachedProgress = value - (int(value) - 1); + } else { + this.cachedRawProgress = int(this.cachedRawProgress) + value; + this.cachedProgress = value; + } + if (this.path) { + this.path.renderObjectAt(this.target, this.cachedProgress, this.autoRotate, this.rotationOffset); + } + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/motionPaths/RectanglePath2D.as b/FairyGUI-as3/src/com/greensock/motionPaths/RectanglePath2D.as new file mode 100644 index 0000000..46f3c64 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/motionPaths/RectanglePath2D.as @@ -0,0 +1,218 @@ +/** + * VERSION: 0.4 (beta) + * DATE: 2011-09-12 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.motionPaths { + import flash.display.Graphics; + import flash.geom.Matrix; + import flash.events.Event; +/** + * [AS3 only] A RectanglePath2D defines a rectangular path on which a PathFollower can be placed, making it simple to tween objects + * along a rectangle's perimeter. A PathFollower's position along the path is described using its progress property, + * a value between 0 and 1 where 0 is at the beginning of the path (top left corner), and as the value increases, it + * moves clockwise along the path so that 0.5 would be at the lower right corner, and 1 is all the way back at the + * upper left corner of the path. So to tween a PathFollower along the path, you can simply tween its + * progress property. To tween ALL of the followers on the path at once, you can tween the + * RectanglePath2D's progress property. PathFollowers automatically wrap so that if the progress + * value exceeds 1 it continues at the beginning of the path. + * + *

    Since RectanglePath2D extends the Shape class, you can add an instance to the display list to see a line representation + * of the path drawn which can be helpful especially during the production phase. Use lineStyle() + * to adjust the color, thickness, and other attributes of the line that is drawn (or set the RectanglePath2D's + * visible property to false or don't add it to the display list if you don't want to see the line + * at all). You can also adjust all of its properties like scaleX, scaleY, rotation, width, height, x, + * and y. That means you can tween those values as well to achieve very dynamic, complex effects + * with ease.

    + * + * +import com.greensock.~~; +import com.greensock.motionPaths.~~; + +//create a rectangular motion path at coordinates x:25, y:25 with a width of 150 and a height of 100 +var rect:RectanglePath2D = new RectanglePath2D(25, 25, 150, 100, false); + +//position the MovieClip "mc" at the beginning of the path (upper left corner), and reference the resulting PathFollower instance with a "follower" variable. +var follower:PathFollower = rect.addFollower(mc, 0); + +//tween the follower clockwise along the path all the way to the end, one full revolution +TweenLite.to(follower, 2, {progress:1}); + +//tween the follower counter-clockwise by using a negative progress value +TweenLite.to(follower, 2, {progress:-1}); + + * + *

    NOTES

    + *
      + *
    • All followers' positions are automatically updated when you alter the MotionPath that they're following.
    • + *
    • To tween all followers along the path at once, simply tween the MotionPath's progress + * property which will provide better performance than tweening each follower independently.
    • + *
    + * + *

    Copyright 2010-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class RectanglePath2D extends MotionPath { + /** @private **/ + protected var _rawWidth:Number; + /** @private **/ + protected var _rawHeight:Number; + /** @private **/ + protected var _centerOrigin:Boolean; + + /** + * Constructor + * + * @param x The x coordinate of the origin of the rectangle (typically its top left corner unless centerOrigin is true) + * @param y The y coordinate of the origin of the rectangle (typically its top left corner unless centerOrigin is true) + * @param rawWidth The width of the rectangle in its unrotated and unscaled state + * @param rawHeight The height of the rectangle in its unrotated and unscaled state + * @param centerOrigin To position the origin (registration point around which transformations occur) at the center of the rectangle instead of its upper left corner, set centerOrigin to true (it is false by default). + */ + public function RectanglePath2D(x:Number, y:Number, rawWidth:Number, rawHeight:Number, centerOrigin:Boolean=false) { + super(); + _rawWidth = rawWidth; + _rawHeight = rawHeight; + _centerOrigin = centerOrigin; + super.x = x; + super.y = y; + } + + /** @inheritDoc **/ + override public function update(event:Event=null):void { + var xOffset:Number = _centerOrigin ? _rawWidth / -2 : 0; + var yOffset:Number = _centerOrigin ? _rawHeight / -2 : 0; + + var length:Number, px:Number, py:Number, xFactor:Number, yFactor:Number; + var m:Matrix = this.transform.matrix; + var a:Number = m.a, b:Number = m.b, c:Number = m.c, d:Number = m.d, tx:Number = m.tx, ty:Number = m.ty; + var f:PathFollower = _rootFollower; + while (f) { + px = xOffset; + py = yOffset; + if (f.cachedProgress < 0.5) { + length = f.cachedProgress * (_rawWidth + _rawHeight) * 2; + if (length > _rawWidth) { //top + px += _rawWidth; + py += length - _rawWidth; + xFactor = 0; + yFactor = _rawHeight; + } else { //right + px += length; + xFactor = _rawWidth; + yFactor = 0; + } + } else { + length = (f.cachedProgress - 0.5) / 0.5 * (_rawWidth + _rawHeight); + if (length <= _rawWidth) { //bottom + px += _rawWidth - length; + py += _rawHeight; + xFactor = -_rawWidth; + yFactor = 0; + } else { //left + py += _rawHeight - (length - _rawWidth); + xFactor = 0; + yFactor = -_rawHeight; + } + } + + f.target.x = px * a + py * c + tx; + f.target.y = px * b + py * d + ty; + + if (f.autoRotate) { + f.target.rotation = Math.atan2(xFactor * b + yFactor * d, xFactor * a + yFactor * c) * _RAD2DEG + f.rotationOffset; + } + + f = f.cachedNext; + } + if (_redrawLine) { + var g:Graphics = this.graphics; + g.clear(); + g.lineStyle(_thickness, _color, _lineAlpha, _pixelHinting, _scaleMode, _caps, _joints, _miterLimit); + g.drawRect(xOffset, yOffset, _rawWidth, _rawHeight); + _redrawLine = false; + } + } + + /** @inheritDoc **/ + override public function renderObjectAt(target:Object, progress:Number, autoRotate:Boolean=false, rotationOffset:Number=0):void { + if (progress > 1) { + progress -= int(progress); + } else if (progress < 0) { + progress -= int(progress) - 1; + } + + var px:Number = _centerOrigin ? _rawWidth / -2 : 0; + var py:Number = _centerOrigin ? _rawHeight / -2 : 0; + var length:Number, xFactor:Number, yFactor:Number; + if (progress < 0.5) { + length = progress * (_rawWidth + _rawHeight) * 2; + if (length > _rawWidth) { + px += _rawWidth; + py += length - _rawWidth; + xFactor = 0; + yFactor = _rawHeight; + } else { + px += length; + xFactor = _rawWidth; + yFactor = 0; + } + } else { + length = (progress - 0.5) / 0.5 * (_rawWidth + _rawHeight); + if (length <= _rawWidth) { + px += _rawWidth - length; + py += _rawHeight; + xFactor = -_rawWidth; + yFactor = 0; + } else { + py += _rawHeight - (length - _rawWidth); + xFactor = 0; + yFactor = -_rawHeight; + } + } + var m:Matrix = this.transform.matrix; + target.x = px * m.a + py * m.c + m.tx; + target.y = px * m.b + py * m.d + m.ty; + + if (autoRotate) { + target.rotation = Math.atan2(xFactor * m.b + yFactor * m.d, xFactor * m.a + yFactor * m.c) * _RAD2DEG + rotationOffset; + } + } + + +//---- GETTERS / SETTERS ---------------------------------------------------------------------- + + /** width of the rectangle in its unrotated, unscaled state (does not factor in any transformations like scaleX/scaleY/rotation) **/ + public function get rawWidth():Number { + return _rawWidth; + } + public function set rawWidth(value:Number):void { + _rawWidth = value; + _redrawLine = true; + update(); + } + + /** height of the rectangle in its unrotated, unscaled state (does not factor in any transformations like scaleX/scaleY/rotation) **/ + public function get rawHeight():Number { + return _rawHeight; + } + public function set rawHeight(value:Number):void { + _rawHeight = value; + _redrawLine = true; + update(); + } + + /** If true, the origin (registration point) of the RectanglePath2D will be in its center rather than its upper left corner. **/ + public function get centerOrigin():Boolean { + return _centerOrigin; + } + public function set centerOrigin(value:Boolean):void { + _centerOrigin; + _redrawLine = true; + update(); + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/.DS_Store b/FairyGUI-as3/src/com/greensock/plugins/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.AutoAlphaPlugin; +TweenPlugin.activate([AutoAlphaPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 2, {autoAlpha:0}); + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class AutoAlphaPlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + + /** @private **/ + protected var _target:Object; + /** @private **/ + protected var _ignoreVisible:Boolean; + + /** @private **/ + public function AutoAlphaPlugin() { + super("autoAlpha,alpha,visible"); + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + _target = target; + _addTween(target, "alpha", target.alpha, value, "alpha"); + return true; + } + + /** @private **/ + override public function _kill(lookup:Object):Boolean { + _ignoreVisible = ("visible" in lookup); + return super._kill(lookup); + } + + /** @private **/ + override public function setRatio(v:Number):void { + super.setRatio(v); + if (!_ignoreVisible) { + _target.visible = (_target.alpha != 0); + } + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/BevelFilterPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/BevelFilterPlugin.as new file mode 100644 index 0000000..072293c --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/BevelFilterPlugin.as @@ -0,0 +1,62 @@ +/** + * VERSION: 12.0 + * DATE: 2012-01-12 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; + import flash.filters.BevelFilter; +/** + * [AS3/AS2 only] Tweens a BevelFilter. The following properties are available (you only need to define the ones you want to tween): + * + *
      + *
    • distance : Number [0]
    • + *
    • angle : Number [0]
    • + *
    • highlightColor : uint [0xFFFFFF]
    • + *
    • highlightAlpha : Number [0.5]
    • + *
    • shadowColor : uint [0x000000]
    • + *
    • shadowAlpha :Number [0.5]
    • + *
    • blurX : Number [2]
    • + *
    • blurY : Number [2]
    • + *
    • strength : Number [0]
    • + *
    • quality : uint [2]
    • + *
    • index : uint
    • + *
    • addFilter : Boolean [false]
    • + *
    • remove : Boolean [false]
    • + *
    + *
    + * + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.BevelFilterPlugin; +TweenPlugin.activate([BevelFilterPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, {bevelFilter:{blurX:10, blurY:10, distance:6, angle:45, strength:1}}); + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class BevelFilterPlugin extends FilterPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + /** @private **/ + private static var _propNames:Array = ["distance","angle","highlightColor","highlightAlpha","shadowColor","shadowAlpha","blurX","blurY","strength","quality"]; + + /** @private **/ + public function BevelFilterPlugin() { + super("bevelFilter"); + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + return _initFilter(target, value, tween, BevelFilter, new BevelFilter(0, 0, 0xFFFFFF, 0.5, 0x000000, 0.5, 2, 2, 0, value.quality || 2), _propNames); + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/BezierPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/BezierPlugin.as new file mode 100644 index 0000000..31a1075 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/BezierPlugin.as @@ -0,0 +1,870 @@ +/** + * VERSION: 12.14 + * DATE: 2014-03-12 + * AS3 (AS2 and JavaScript versions also available) + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; + + import flash.geom.Point; + +/** + * Animate virtually any property (or properties) along a Bezier (curved) path which you define + * as an array of points/values that can be interpreted 4 different ways (described as the Bezier's "type", like type:"quadratic"): + * + *
      + *
    • "thru" (the default) - the plugin figures out how to draw the Bezier naturally through + * the supplied values using a proprietary GreenSock algorithm. The values you provide in the array are essentially + * treated as anchors on the Bezier and the plugin calculates the control points. The target's current/starting + * values are used as the initial anchor. You can define a curviness special property that + * allows you to adjust the tension on the Bezier where 0 has no curviness (straight lines), 1 is normal + * curviness, 2 is twice the normal curviness, etc. Since "thru" is the default Bezier type, you don't + * need to define a type at all if this is the one you want.
    • + * + *
    • "soft" - the values that you provide in the array act almost like magnets that attract the + * curve towards them, but the Bezier doesn't typically travel through them. They are treated + * as control points on a Quadratic Bezier and the plugin creates the necessary intermediate anchors. + * The target's current/starting values are used as the initial anchor.
    • + * + *
    • "quadratic" - allows you to define standard Quadratic Bezier data (Quadratic Beziers have + * 1 control point between each anchor). The array should start with the first anchor, then control point, + * then anchor, control point, etc. for as many iterations as you want, but obviously make sure that it + * starts and ends with anchors.
    • + * + *
    • "cubic" - allows you to define standard Cubic Bezier data (Cubic Beziers have + * 2 control points between each anchor). The array should start with the first anchor, then 2 control points, + * then anchor, 2 control points, anchor, etc. for as many iterations as you want, but obviously make sure that it + * starts and ends with anchors.
    • + * + *
    • "thruBasic" - the same as "thru" except that it uses a less complex + * algorithm for the initial plotting of the Bezier through the supplied values. The "thruBasic" + * algorithm is a slightly enhanced version of a somewhat common method that does a decent job + * but it is more prone to having kinks or harsh angles when there is a very large segment right + * next to a very short one or when two anchors are very close and the one inbetween them is very distant. + * The proprietary GreenSock "thru" algorithm almost always delivers more natural curves + * than "thruBasic". In terms of calculation expense, "thruBasic" is only about 15-20% faster + * on the initial setup (when the tween begins), but then every update during the tween the speed is + * identical, so overall improvement is negligible (probably less than 1%). The primary reason the + * "thruBasic" option is available is to offer a different style for drawing the Bezier + * through the supplied values. If decreasing load on the CPU is your goal, you'd get better + * results by decreasing the timeResolution, particularly to 0.
    • + *
    + * + *

    While it is most common to use x and y (and sometimes z) properties for + * Bezier tweens, you can use any properties (even ones that are function-based getters/setters).

    + * + *

    Inside the bezier object, you must define at least a values property, and there are + * several other optional special properties that the BezierPlugin will recognize. Here is a list of them all:

    + * + *
      + *
    • values : Array [REQUIRED] - the array of your Bezier values as generic objects + * (or Point instances). Each object in the array should have matching property names + * (like "x" and "y"). For example, the array might look like: + * [{x:100, y:250}, {x:300, y:0}, {x:500, y:400}]
    • + * + *
    • type : String (default:"thru") - Either "thru", "thruBasic", "soft", "quadratic", + * or "cubic" as described above, indicating how the values should be interpreted.
    • + * + *
    • timeResolution : int (default:6) - due to the nature of Beziers, plotting the progression + * of an object on the path over time can make it appear to speed up or slow down based on the placement + * of the control points and the length of each successive segment on the path, so BezierPlugin implements + * a technique that reduces or eliminates that variance, but it involves breaking the segments down into + * a certain number of pieces which is what timeResolution controls. The greater the number, + * the more accurate the time remapping but there is a processing price to pay for greater precision. + * The default value of 6 is typically fine, but if you notice slight pace changes on the path you can increase + * the timeResolution value. Or, if you want to prioritize speed you could reduce the number. + * If you use a timeResolution value of 0, no length measurements will take place internally which + * delivers maximum processing speed, but you may notice changes in speed during the animation.
    • + * + *
    • curviness : Number (default:1) (only applies to type:"thru") - allows you to adjust the + * tension on the Bezier where 0 has no curviness (straight lines), 1 is normal curviness, 2 is twice + * the normal curviness, etc.
    • + * + *
    • autoRotate : Boolean or Array (default:false) - to automatically rotate the target according + * to its position on the Bezier path, you can use the autoRotate feature (previously called + * orientToBezier). If your Bezier is affecting the "x" and "y" properties of your target + * and you don't need to offset the rotation by a certain amount more than normal, then you can simply + * set autoRotate:true. Or if you want to offset the rotation by a certain amount (in degrees), + * you can define a number like autoRotate:90 (adding 90 degrees in this example). Or for more + * advanced controls, you can define autoRotate as an array. In order to adjust a rotation + * property accurately, the plugin needs 5 pieces of information: + *
        + *
      1. Position property 1 (typically "x")
      2. + *
      3. Position property 2 (typically "y")
      4. + *
      5. Rotational property (typically "rotation")
      6. + *
      7. Number of degrees (or radians) to add to the new rotation (optional - makes it easy to orient your target properly)
      8. + *
      9. Boolean value indicating whether or not the rotational property should be defined in radians rather than degrees (default is false which results in degrees)
      10. + *
      + * The autoRotate property should be an Array containing these values, like + * ["x","y","rotation",90,false]. And if you need to affect multiple rotational + * properties (like in 3D tweens where the Bezier is going through x,y,z points which could affect rotationX, rotationY, and rotationZ), + * you can use an array of arrays, like + * [["x","y","rotationZ",0,false], ["z","x","rotationY",0,false], ["z","y","rotationX",0,false]].
    • + * + *
    • correlate : String (default:"x,y,z") (only applies to type:"thru") - + * a comma-delimited list of property names whose relative distances should be correlated when calculating + * the Bezier that travels through the points. Since x, y, and z are all spacial, it is almost always good + * to correlate them, but properties like scaleX, scaleY, etc. don't typically need to be correlated. + * It is rarely necessary to alter the default correlate value.
    • + *
    + * + * + * SYNTAX + * +//animate obj through the points in the array (notice we're passing the array directly to the bezier rather than creating an object with "values" because we're accepting the defaults) +TweenMax.to(obj, 5, {bezier:[{x:100, y:250}, {x:300, y:0}, {x:500, y:400}], ease:Power1.easeInOut}); + +//if we want to customize things, like the curviness and setting autoRotate:true, we need to define the bezier as an object instead, and pass our array as the "values" property +TweenMax.to(obj, 5, {bezier:{curviness:1.25, values:[{x:100, y:250}, {x:300, y:0}, {x:500, y:400}], autoRotate:true}, ease:Power1.easeInOut}); + +//let's define the type as "soft" instead of using the default "thru" +TweenMax.to(obj, 5, {bezier:{type:"soft", values:[{x:100, y:250}, {x:300, y:0}, {x:500, y:400}], autoRotate:true}, ease:Power1.easeInOut}); + +//now we'll do a cubic Bezier and make our target auto rotate but add 45 degrees to the rotation +TweenMax.to(obj, 5, {bezier:{type:"cubic", values:[{x:100, y:250}, {x:150, y:100}, {x:300, y:500}, {x:500, y:400}], autoRotate:["x","y","rotation",45,false]}, ease:Power1.easeInOut}); + + * + *

    You can tap into BezierPlugin's Bezier drawing algorithm by passing its bezierThrough() method your + * array of points/objects and it will spit back and object with all the necessary data, either in Cubic Bezier + * form or in Quadratic Bezier form so that you could, for example, draw the path using Flash's curveTo() functionality. + * It also has some useful static cubicToQuadratic() and quadraticToCubic() conversion methods.

    + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class BezierPlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + + /** @private precalculated for speed **/ + protected static const _RAD2DEG:Number = 180 / Math.PI; + /** @private temporary storage for bezierThrough calculations. ratio 1 (p1) **/ + protected static var _r1:Array = []; + /** @private temporary storage for bezierThrough calculations. ratio 2 (p1 + p2) **/ + protected static var _r2:Array = []; + /** @private temporary storage for bezierThrough calculations. **/ + protected static var _r3:Array = []; + /** @private used to store a boolean value indicating whether or not a particular property should be correlated. Basically a lookup table to speed things up. This allows us to avoid garbage collection headaches because bezierThrough() might be called a LOT in an app, thus creating a temporary local variable each time in the method would be more problematic. **/ + protected static var _corProps:Object = {}; + + /** @private **/ + protected var _target:Object; + /** @private **/ + protected var _autoRotate:Array; + /** @private If the values should be rounded to the nearest integer, _round will be set to true. **/ + protected var _round:Object; + /** @private array containing the numeric length of each segment, like [3, 5, 19, 2] **/ + protected var _lengths:Array; + /** @private array containing arrays of length values for each segment, like [[2,4,12,56], [3,6,23,45,3]] (all arrays will contain the same number of elements, determined by "precision") **/ + protected var _segments:Array; + /** @private approximate total length of all Bezier segments combined **/ + protected var _length:Number; + /** @private a lookup table to figure out if a property is a function or not **/ + protected var _func:Object; + /** @private array of properties that are being tweened, like ["x","y"] **/ + protected var _props:Array; + /** @private the lower (minimum) threshold that still applies to the current segment. Like if the entire group of Beziers is 100 long, the first one might be from 0 to 50, the next 50 to 70, and the last 70 to 100, so _l1 would be 0, 50, or 70 depending on which segment was rendered last (this is like a caching mechanism that enhances performance and avoids lookups in many situations) **/ + protected var _l1:Number; //length 1 (lower) + /** @private the upper (maximum) threshold that still applies to the current segment. Like if the entire group of Beziers is 100 long, the first one might be from 0 to 50, the next 50 to 70, and the last 70 to 100, so _l2 would be 50, 70, or 100 depending on which segment was rendered last (this is like a caching mechanism that enhances performance and avoids lookups in many situations) **/ + protected var _l2:Number; //length 2 (upper) + /** @private the index number of the current segment (from the _lengths array) **/ + protected var _li:Number; //length index + /** @private the current array of segment lengths from the _segments array. **/ + protected var _curSeg:Array; //segment array + /** @private the lower (minimum) threshold that still applies to the current segment length from inside the _curSeg array. Like if the current segment is 100 long, the first measurement might be from 0 to 50, the next 50 to 70, and the last 70 to 100, so _s1 would be 0, 50, or 70 depending on which segment piece was rendered last (this is like a caching mechanism that enhances performance and avoids lookups in many situations) **/ + protected var _s1:Number; //segment 1 (lower) + /** @private the upper (maximum) threshold that still applies to the current segment length from inside the _curSeg array. Like if the current segment is 100 long, the first measurement might be from 0 to 50, the next 50 to 70, and the last 70 to 100, so _s2 would be 50, 70, or 100 depending on which segment piece was rendered last (this is like a caching mechanism that enhances performance and avoids lookups in many situations) **/ + protected var _s2:Number; //segment 2 (upper) + /** @private the index number of the current segment length from _curSeg **/ + protected var _si:Number; //segment index; + /** @private **/ + protected var _beziers:Object; + /** @private total number of segments **/ + protected var _segCount:int; + /** @private 1 / precision (precalculated for speed) **/ + protected var _prec:Number; //precision + /** @private **/ + protected var _timeRes:int; + /** @private we need to store the initial rotation for autoRotate tweens so that if/when the tween is rewound completely, the original value gets re-applied. **/ + protected var _initialRotations:Array; + /** @private we determine the starting ratio when the tween inits which is always 0 unless the tween has runBackwards:true (which indicates it's a from() tween) in which case it's 1. **/ + protected var _startRatio:int; + + + /** @private **/ + public function BezierPlugin() { + super("bezier"); + this._overwriteProps.pop(); + this._func = {}; + this._round = {}; + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + this._target = target; + var vars:Object = (value is Array) ? {values:value} : value; + this._props = []; + this._timeRes = (vars.timeResolution == null) ? 6 : int(vars.timeResolution); + var values:Array = vars.values || [], + first:Object = {}, + second:Object = values[0], + autoRotate:Object = vars.autoRotate || tween.vars.orientToBezier, + p:String, isFunc:Boolean, i:int, j:int, ar:Array, prepend:Object; + + this._autoRotate = autoRotate ? (autoRotate is Array) ? autoRotate as Array : [["x","y","rotation",((autoRotate === true) ? 0 : Number(autoRotate))]] : null; + + if (second is Point) { + this._props = ["x","y"]; + } else { + for (p in second) { + this._props.push(p); + } + } + + i = this._props.length; + while (--i > -1) { + p = this._props[i]; + this._overwriteProps.push(p); + isFunc = this._func[p] = (target[p] is Function); + first[p] = (!isFunc) ? target[p] : target[ ((p.indexOf("set") || !("get" + p.substr(3) in target)) ? p : "get" + p.substr(3)) ](); + if (!prepend) if (first[p] !== values[0][p]) { + prepend = first; + } + } + this._beziers = (vars.type !== "cubic" && vars.type !== "quadratic" && vars.type !== "soft") ? bezierThrough(values, isNaN(vars.curviness) ? 1 : vars.curviness, false, (vars.type === "thruBasic"), vars.correlate || "x,y,z", prepend) : _parseBezierData(values, vars.type, first); + this._segCount = this._beziers[p].length; + + if (this._timeRes) { + var ld:Object = _parseLengthData(this._beziers, this._timeRes); + this._length = ld.length; + this._lengths = ld.lengths; + this._segments = ld.segments; + this._l1 = this._li = this._s1 = this._si = 0; + this._l2 = this._lengths[0]; + this._curSeg = this._segments[0]; + this._s2 = this._curSeg[0]; + this._prec = 1 / this._curSeg.length; + } + + if ((ar = this._autoRotate)) { + this._initialRotations = []; + if (!(ar[0] is Array)) { + this._autoRotate = ar = [ar]; + } + i = ar.length; + while (--i > -1) { + for (j = 0; j < 3; j++) { + p = ar[i][j]; + this._func[p] = (target[p] is Function) ? target[ ((p.indexOf("set") || !("get" + p.substr(3) in target)) ? p : "get" + p.substr(3)) ] : false; + } + p = ar[i][2]; + this._initialRotations[i] = this._func[p] ? this._func[p]() : this._target[p]; + } + } + _startRatio = tween.vars.runBackwards ? 1 : 0; + return true; + } + + /** + * Takes an array that contains objects (could be Points, could be generic objects with + * any number of properties but they should all match in terms of the names of properties like + * [{x:0, y:0, scaleX:0.5}, {x:100, y:-200, scaleX:1.2}, {x:300, y:20, scaleX:0.8}]) and plots Bezier + * segments THROUGH those values and returns an array containing a generic object for each Bezier segment. By default + * Cubic Beziers (which use 2 control points per segment) are used but you can optionally request Quadratic Beziers (1 control + * point per segment) instead using the quadratic parameter. + * + *

    For Cubic Beziers (the default), each segment object will have a, b, c, and d properties:

    + * + *
      + *
    • a - the starting anchor value of the Cubic Bezier segment. For example, + * bezierThrough([{x:0, y:0, scaleX:0.5}, {x:100, y:-200, scaleX:1.2}, {x:300, y:20, scaleX:0.8}]); + * would return an object with "x", "y", and "scaleX" properties, each containing an array of objects, one per Bezier segment and you could + * access the first Bezier's initial anchor values like: + * myReturnedObject.x[0].a, myReturnedObject.y[0].a, and myReturnedObject.scaleX[0].a
    • + *
    • b - the first control point value of the Cubic Bezier segment. For example, + * bezierThrough([{x:0, y:0, scaleX:0.5}, {x:100, y:-200, scaleX:1.2}, {x:300, y:20, scaleX:0.8}]); + * would return an object with "x", "y", and "scaleX" properties, each containing an array of objects, one per Bezier segment and you could + * access the first Bezier's first control point values like: + * myReturnedObject.x[0].b, myReturnedObject.y[0].b, and myReturnedObject.scaleX[0].b
    • + *
    • c - the second control point value of the Cubic Bezier segment. For example, + * bezierThrough([{x:0, y:0, scaleX:0.5}, {x:100, y:-200, scaleX:1.2}, {x:300, y:20, scaleX:0.8}]); + * would return an object with "x", "y", and "scaleX" properties, each containing an array of objects, one per Bezier segment and you could + * access the first Bezier's second control point values like: + * myReturnedObject.x[0].c, myReturnedObject.y[0].c, and myReturnedObject.scaleX[0].c
    • + *
    • d - the final anchor value of the Cubic Bezier segment. For example, + * bezierThrough([{x:0, y:0, scaleX:0.5}, {x:100, y:-200, scaleX:1.2}, {x:300, y:20, scaleX:0.8}]); + * would return an object with "x", "y", and "scaleX" properties, each containing an array of objects, one per Bezier segment and you could + * access the first Bezier's final anchor values like: + * myReturnedObject.x[0].d, myReturnedObject.y[0].d, and myReturnedObject.scaleX[0].d
    • + *
    + * + * + *

    If you set the quadratic parameter to true, all of the Bezier segments will contain a, b, + * and c properties (NOT d) where b is the only control point. This can be + * very useful because some drawing APIs only understand Quadratic Beziers. There are 4 times as many Quadratic Beziers returned as + * Cubic Beziers, though, due to the fact that the internal algorithm uses Cubic Beziers to plot the points (they're much more flexible) + * and then splits each into 4 Quadratic ones.

    + * + * + //input: + var beziers:Object = BezierPlugin.bezierThrough([{x:0, y:0}, {x:250, y:400}, {x:500, y:0}]); + + //output: + { + x:[{a:0, b:0, c:125, d:250}, {a:250, b:375, c:500, d:500}], + y:[{a:0, b:0, c:400, d:400}, {a:400, b:400, c:0, d:0}] + } + * + * + * + //get quadratic beziers so that we can use Flash's drawing API... + var beziers:Object = BezierPlugin.bezierThrough([{x:0, y:0}, {x:250, y:400}, {x:500, y:0}], 1, true); + + var bx:Array = beziers.x; //the "x" Beziers + var by:Array = beziers.y; //the "y" Beziers + + //draw the curve in Flash using AS3: + var g:Graphics = this.graphics; + g.moveTo(bx[0].a, by[0].a); + for (var i:int = 0; i < bx.length; i++) { + g.curveTo(bx[i].b, by[i].b, bx[i].c, by[i].c); + } + + * + * + * @param values An array containing generic objects with matching properties (or Point instances) through which the Beziers should be plotted, like [{x:0, y:0, scaleX:0.5}, {x:100, y:-200, scaleX:1.2}, {x:300, y:20, scaleX:0.8}] + * @param curviness A number (default: 1) that controls the strength of the curves that are plotted through the values. A curviness of 0 would be result in straight lines, 1 is normal curviness, and 2 would be extreme curves. Use any value. + * @param quadratic if true, quadratic Bezier information will be returned instead of cubic Bezier data, thus each object in the returned array will only contain a, b, and c properties where b is the control point. + * @param basic if true, a faster algorithm will be used for calculating the control points which can be less aesthetically pleasing in situations where there are large differences in the spaces or angles between the values provided (the curves are more likely to get kinks or harsh angles) + * @param correlate [optional] a comma-delimited list of property names whose relative distances should be correlated with each other when calculating the curvature of the Bezier through the values (the default is "x,y,z" because those are almost always properties that should be correlated). + * @param prepend [optional] an object to treat as though it is the first element in the values array (typically only used internally for adding a tween's starting values) + * @return An object with properties matching those from the objects in the values array, with an array assigned to each property populated with an object for each Bezier. The Bezier objects will contain a, b, c (and d if quadratic is not true) properties for the anchors and control points. + */ + public static function bezierThrough(values:Array, curviness:Number=1, quadratic:Boolean=false, basic:Boolean=false, correlate:String="x,y,z", prepend:Object=null):Object { + var obj:Object = {}, + first:Object = prepend || values[0], + props:Array, i:int, p:String, j:int, a:Array, l:int, r:Number, seamless:Boolean, last:Object; + correlate = ","+correlate+","; + if (first is Point) { + props = ["x","y"]; + } else { + props = []; + for (p in first) { + props.push(p); + } + } + //check to see if the last and first values are identical (well, within 0.05). If so, make seamless by appending the second element to the very end of the values array and the 2nd-to-last element to the very beginning (we'll remove those segments later) + if (values.length > 1) { + last = values[values.length - 1]; + seamless = true; + i = props.length; + while (--i > -1) { + p = props[i]; + if (Math.abs(first[p] - last[p]) > 0.05) { //build in a tolerance of +/-0.05 to accommodate rounding errors. For example, if you set an object's position to 4.945, Flash will make it 4.9 + seamless = false; + break; + } + } + if (seamless) { + values = values.concat(); //duplicate the array to avoid contaminating the original which the user may be reusing for other tweens + if (prepend) { + values.unshift(prepend); + } + values.push(values[1]); + prepend = values[values.length - 3]; + } + } + _r1.length = _r2.length = _r3.length = 0; + i = props.length; + while (--i > -1) { + p = props[i]; + _corProps[p] = (correlate.indexOf(","+p+",") !== -1); + obj[p] = _parseAnchors(values, p, _corProps[p], prepend); + } + i = _r1.length; + while (--i > -1) { + _r1[i] = Math.sqrt(_r1[i]); + _r2[i] = Math.sqrt(_r2[i]); + } + if (!basic) { + i = props.length; + while (--i > -1) { + if (_corProps[p]) { + a = obj[props[i]]; + l = a.length - 1; + for (j = 0; j < l; j++) { + r = a[j+1].da / _r2[j] + a[j].da / _r1[j]; + _r3[j] = (_r3[j] || 0) + r * r; + } + } + } + i = _r3.length; + while (--i > -1) { + _r3[i] = Math.sqrt(_r3[i]); + } + } + i = props.length; + j = quadratic ? 4 : 1; + while (--i > -1) { + p = props[i]; + a = obj[p]; + _calculateControlPoints(a, curviness, quadratic, basic, _corProps[p]); //this method requires that _parseAnchors() and _setSegmentRatios() ran first so that _r1, _r2, and _r3 values are populated for all properties + if (seamless) { + a.splice(0, j); + a.splice(a.length - j, j); + } + } + return obj; + } + + /** @private parses the bezier data passed into the tween and organizes it into the appropriate format with an array for each property. **/ + public static function _parseBezierData(values:Array, type:String, prepend:Object=null):Object { + type = type || "soft"; + var obj:Object = {}, + inc:int = (type === "cubic") ? 3 : 2, + soft:Boolean = (type === "soft"), + a:Number, b:Number, c:Number, d:Number, cur:Array, props:Array, i:int, j:int, l:int, p:String, cnt:int, tmp:Object; + if (soft && prepend) { + values = [prepend].concat(values); + } + if (values == null || values.length < inc + 1) { throw new Error("invalid Bezier data"); } + if (values[1] is Point) { + props = ["x","y"]; + } else { + props = []; + for (p in values[0]) { + props.push(p); + } + } + + i = props.length; + while (--i > -1) { + p = props[i]; + obj[p] = cur = []; + cnt = 0; + l = values.length; + for (j = 0; j < l; j++) { + a = (prepend == null) ? values[j][p] : (typeof( (tmp = values[j][p]) ) === "string" && tmp.charAt(1) === "=") ? prepend[p] + Number(tmp.charAt(0) + tmp.substr(2)) : Number(tmp); + if (soft) if (j > 1) if (j < l - 1) { + cur[cnt++] = (a + cur[cnt-2]) / 2; + } + cur[cnt++] = a; + } + l = cnt - inc + 1; + cnt = 0; + for (j = 0; j < l; j += inc) { + a = cur[j]; + b = cur[j+1]; + c = cur[j+2]; + d = (inc === 2) ? 0 : cur[j+3]; + cur[cnt++] = (inc === 3) ? new Segment(a, b, c, d) : new Segment(a, (2 * b + a) / 3, (2 * b + c) / 3, c); + } + cur.length = cnt; + } + return obj; + } + + /** + * @private + * Takes a "values" array that contains objects (could be Points, could be generic objects with + * any number of properties but they should all match in terms of the names of properties like + * [{x:100, y:200, rotation:20},{x:30, y:10, rotation:290}]) and populates an array + * with a generic object for each cubic Bezier segment, adding only the a and d + * properties (which are the beginning and ending anchors). We don't populate the control points yet because + * we must first loop through all of the properties for each segment so that we can determine the relative + * distances between each point which will determine the ratios we use to correctly weight the control + * points on each side. The goal is to use an algorithm that keeps the handle tighter/shorter the closer + * it is to the next control point. Imagine an anchor where on one side there's a very short segment and on + * the other side a very long one - we must determine all the relative changes for the properties (like + * x and y rather than only x or only y) and then leverage that to get the totals and assign the correct + * ratio. + * + * @param values An array containing generic objects with matching properties (or Point instances) through which the Beziers should be plotted, like [{x:0, y:0, scaleX:0.5}, {x:100, y:-200, scaleX:1.2}, {x:300, y:20, scaleX:0.8}] + * @param p Property name that the method should focus on (like "x" or "y" or "scaleX" or whatever) + * @param correlate if true, this property's relative distances will be recorded internally so that they can be correlated with others when calculating the curvature of the Bezier through the values (typically x, y, and z properties should be correlated). + * @param prepend An object to treat as though it is the first element in the values array (typically only used internally for adding a tween's starting values) + * @return An array of partially populated Bezier data (only "a" and "d" properties) + */ + protected static function _parseAnchors(values:Array, p:String, correlate:Boolean, prepend:Object):Array { + var a:Array = [], + l:int, i:int, p1:Number, p2:Number, p3:Number, tmp:Object; + if (prepend) { + values = [prepend].concat(values); + i = values.length; + while (--i > -1) { + if (typeof( (tmp = values[i][p]) ) === "string") if (tmp.charAt(1) === "=") { + values[i][p] = prepend[p] + Number(tmp.charAt(0) + tmp.substr(2)); //accommodate relative values. Do it inline instead of breaking it out into a function for speed reasons + } + } + } + + l = values.length - 2; + if (l < 0) { + a[0] = new Segment(values[0][p], 0, 0, values[(l < -1) ? 0 : 1][p]); + return a; + } + + for (i = 0; i < l; i++) { + p1 = values[i][p]; + p2 = values[i+1][p]; + a[i] = new Segment(p1, 0, 0, p2); + if (correlate) { + p3 = values[i+2][p]; + _r1[i] = (_r1[i] || 0) + (p2 - p1) * (p2 - p1); + _r2[i] = (_r2[i] || 0) + (p3 - p2) * (p3 - p2); + } + } + a[i] = new Segment(values[i][p], 0, 0, values[i+1][p]); + return a; + } + + /** + * @private + * [Note: must run _parseAnchors() on all properties first to generate the a array with the start/end anchors and assign the r1 and r2 ratio values] + * Iterates through an array of cubic Bezier-related data generated by _parseAnchors() and assigns the control + * point values (b and c) for them according to a particular "curviness" amount. + * + * @param a An array that has already been populated by _parseAnchors() with start/end anchors and r1/r2 ratio values for all properties. Each object in the array should have a, b, c, d, r1, and r2 properties. + * @param curviness A number (typically between 0 and 1, and by default 0.5) that controls the strength of the curves that are plotted. + * @param quad If true, Quadratic Beziers will be used instead of Cubic Beziers. + * @param basic if true, a faster algorithm will be used for calculating the control points which can be less aesthetically pleasing in situations where there are large differences in the spaces or angles between the values provided (the curves are more likely to get kinks or harsh angles) + * @param correlate if true, this property's relative distances will be correlated with others when calculating the curvature of the Bezier through the values (typically x, y, and z properties should be correlated). + */ + protected static function _calculateControlPoints(a:Array, curviness:Number=1, quad:Boolean=false, basic:Boolean=false, correlate:Boolean=false):void { + var l:int = a.length - 1, + ii:int = 0, + cp1:Number = a[0].a, + i:int, p1:Number, p2:Number, p3:Number, seg:Segment, m1:Number, m2:Number, mm:Number, cp2:Number, qb:Array, r1:Number, r2:Number, tl:Number; + for (i = 0; i < l; i++) { + seg = a[ii]; + p1 = seg.a; + p2 = seg.d; + p3 = a[ii+1].d; + + if (correlate) { + r1 = _r1[i]; + r2 = _r2[i]; + tl = ((r2 + r1) * curviness * 0.25) / (basic ? 0.5 : _r3[i] || 0.5); + m1 = p2 - (p2 - p1) * (basic ? curviness * 0.5 : (r1 !== 0 ? tl / r1 : 0)); + m2 = p2 + (p3 - p2) * (basic ? curviness * 0.5 : (r2 !== 0 ? tl / r2 : 0)); + mm = p2 - (m1 + (((m2 - m1) * ((r1 * 3 / (r1 + r2)) + 0.5) / 4) || 0)); + } else { + m1 = p2 - (p2 - p1) * curviness * 0.5; + m2 = p2 + (p3 - p2) * curviness * 0.5; + mm = p2 - (m1 + m2) / 2; + } + m1 += mm; + m2 += mm; + + seg.c = cp2 = m1; + if (i != 0) { + seg.b = cp1; + } else { + seg.b = cp1 = seg.a + (seg.c - seg.a) * 0.6; //instead of placing b on a exactly, we move it inline with c so that if the user specifies an ease like Back.easeIn or Elastic.easeIn which goes BEYOND the beginning, it will do so smoothly. + } + + seg.da = p2 - p1; + seg.ca = cp2 - p1; + seg.ba = cp1 - p1; + + if (quad) { + qb = cubicToQuadratic(p1, cp1, cp2, p2); + a.splice(ii, 1, qb[0], qb[1], qb[2], qb[3]); + ii += 4; + } else { + ii++; + } + + cp1 = m2; + } + seg = a[ii]; + seg.b = cp1; + seg.c = cp1 + (seg.d - cp1) * 0.4; //instead of placing c on d exactly, we move it inline with b so that if the user specifies an ease like Back.easeOut or Elastic.easeOut which goes BEYOND the end, it will do so smoothly. + seg.da = seg.d - seg.a; + seg.ca = seg.c - seg.a; + seg.ba = cp1 - seg.a; + if (quad) { + qb = cubicToQuadratic(seg.a, cp1, seg.c, seg.d); + a.splice(ii, 1, qb[0], qb[1], qb[2], qb[3]); + } + } + + /** + * Using the fixed midpoint approach, we return an array of 4 quadratic Beziers that + * closely approximates the cubic Bezier data provided. Each quadratic Bezier object contains + * a, b, and c properties where a is the starting anchor value, + * b is the control point, and c is the ending anchor value. + * + * @param a starting anchor of the cubic Bezier + * @param b first control point of the cubic Bezier + * @param c second control point of the cubic Bezier + * @param d final anchor of the cubic Bezier + * @return an array of 4 objects, one for each quadratic Bezier with a, b, and c properties + */ + public static function cubicToQuadratic(a:Number, b:Number, c:Number, d:Number):Array { + var q1:Object = {a:a}, + q2:Object = {}, + q3:Object = {}, + q4:Object = {c:d}, + mab:Number = (a + b) / 2, + mbc:Number = (b + c) / 2, + mcd:Number = (c + d) / 2, + mabc:Number = (mab + mbc) / 2, + mbcd:Number = (mbc + mcd) / 2, + m8:Number = (mbcd - mabc) / 8; + q1.b = mab + (a - mab) / 4; + q2.b = mabc + m8; + q1.c = q2.a = (q1.b + q2.b) / 2; + q2.c = q3.a = (mabc + mbcd) / 2; + q3.b = mbcd - m8; + q4.b = mcd + (d - mcd) / 4; + q3.c = q4.a = (q3.b + q4.b) / 2; + return [q1, q2, q3, q4]; + } + + /** + * Returns the Cubic equivalent of a Quadratic Bezier. This method returns an object with a, b, c, and d properties + * representing the starting anchor value (a), first control point (b), second control point (c), and ending anchor value (d) + * of a Cubic Bezier matching the Quadratic Bezier data passed in. + * + * @param a The starting anchor value + * @param b The control point value + * @param c The ending anchor value + * @return An object with a, b, c, and d properties representing the starting anchor value (a), first control point (b), second control point (c), and ending anchor value (d) of a Cubic Bezier matching the Quadratic Bezier data passed in. + */ + public static function quadraticToCubic(a:Number, b:Number, c:Number):Object { + return new Segment(a, (2 * b + a) / 3, (2 * b + c) / 3, c); + } + + /** + * @private + * Analyzes the object in the form of {x:[...bezier segments...], y:[...bezier segments...]} (with any + * properties, not limited to only "x" and "y") and approximates the lengths of the segments, returning an object + * with "length" (total length of all segments), "lengths" (an array of the individual lengths of each segment), + * and "segments" (an array containing an array for each segment - each of those arrays has the same number of elements + * as the precision parameter, each indicating how long the segment is up to that point) properties. + * For example: + * + *

    {length:348.214, lengths:[20, 328.14], segments:[[2,4,8,10,14.14], [1,3,4.5,6,8.9]]}

    + * + *

    The purpose of the arrays is to allow more accurate calculation of where progress points should land + * such that [almost] perfectly linear easing is possible on the Bezier(s).

    + * + * @param obj The object containing the arrays of Bezier data like {x:[{a:1, b:2, c:3, d:4}], y:[{a:3, b:2, c:4, d:3}]} + * @param precision Number of segments to use when determining the length of each Bezier segment (default 6) + * @return An object with "length", "lengths", and "segements" properties where "length" is the total length of all Bezier segments + */ + protected static function _parseLengthData(obj:Object, precision:uint=6):Object { + var a:Array = [], + lengths:Array = [], + d:Number = 0, + total:Number = 0, + threshold:int = precision - 1, + segments:Array = [], + curLS:Array = [], //current length segments array + p:String, i:int, l:int, index:Number; + for (p in obj) { + _addCubicLengths(obj[p], a, precision); + } + l = a.length; + for (i = 0; i < l; i++) { + d += Math.sqrt(a[i]); + index = i % precision; + curLS[index] = d; + if (index == threshold) { + total += d; + index = (i / precision) >> 0; + segments[index] = curLS; + lengths[index] = total; + d = 0; + curLS = []; + } + } + return {length:total, lengths:lengths, segments:segments}; + } + + /** @private Used by _parseLengthData() **/ + private static function _addCubicLengths(a:Array, steps:Array, precision:uint=6):void { + var inc:Number = 1 / precision, + j:int = a.length, + d:Number, d1:Number, s:Number, da:Number, ca:Number, ba:Number, p:Number, i:int, inv:Number, bez:Segment, index:int; + while (--j > -1) { + bez = a[j]; + s = bez.a; + da = bez.d - s; + ca = bez.c - s; + ba = bez.b - s; + d = d1 = 0; + for (i = 1; i <= precision; i++) { + p = inc * i; + inv = 1 - p; + d = d1 - (d1 = (p * p * da + 3 * inv * (p * ca + inv * ba)) * p); + index = j * precision + i - 1; + steps[index] = (steps[index] || 0) + d * d; + } + } + } + + /** @private **/ + override public function _kill(lookup:Object):Boolean { + var a:Array = this._props, + p:String, i:int; + for (p in _beziers) { + if (p in lookup) { + delete _beziers[p]; + delete _func[p]; + i = a.length; + while (--i > -1) { + if (a[i] === p) { + a.splice(i, 1); + } + } + } + } + return super._kill(lookup); + } + + /** @private **/ + override public function _roundProps(lookup:Object, value:Boolean=true):void { + var op:Array = this._overwriteProps, + i:int = op.length; + while (--i > -1) { + if ((op[i] in lookup) || ("bezier" in lookup) || ("bezierThrough" in lookup)) { + this._round[op[i]] = value; + } + } + } + + + /** @private **/ + override public function setRatio(v:Number):void { + var segments:int = this._segCount, + func:Object = this._func, + target:Object = this._target, + notStart:Boolean = (v !== this._startRatio), + curIndex:int, inv:Number, i:int, p:String, b:Segment, t:Number, val:Number, l:int, lengths:Array, curSeg:Array; + if (this._timeRes == 0) { + curIndex = (v < 0) ? 0 : (v >= 1) ? segments - 1 : (segments * v) >> 0; + t = (v - (curIndex * (1 / segments))) * segments; + } else { + lengths = this._lengths; + curSeg = this._curSeg; + v *= this._length; + i = this._li; + //find the appropriate segment (if the currently cached one isn't correct) + if (v > this._l2 && i < segments - 1) { + l = segments - 1; + while (i < l && (this._l2 = lengths[++i]) <= v) { } + this._l1 = lengths[i-1]; + this._li = i; + this._curSeg = curSeg = this._segments[i]; + this._s2 = curSeg[(this._s1 = this._si = 0)]; + } else if (v < this._l1 && i > 0) { + while (i > 0 && (this._l1 = lengths[--i]) >= v) { } + if (i === 0 && v < this._l1) { + this._l1 = 0; + } else { + i++; + } + this._l2 = lengths[i]; + this._li = i; + this._curSeg = curSeg = this._segments[i]; + this._s1 = curSeg[(this._si = curSeg.length - 1) - 1] || 0; + this._s2 = curSeg[this._si]; + } + curIndex = i; + //now find the appropriate sub-segment (we split it into the number of pieces that was defined by "precision" and measured each one) + v -= this._l1; + i = this._si; + if (v > this._s2 && i < curSeg.length - 1) { + l = curSeg.length - 1; + while (i < l && (this._s2 = curSeg[++i]) <= v) { } + this._s1 = curSeg[i-1]; + this._si = i; + } else if (v < this._s1 && i > 0) { + while (i > 0 && (this._s1 = curSeg[--i]) >= v) { } + if (i === 0 && v < this._s1) { + this._s1 = 0; + } else { + i++; + } + this._s2 = curSeg[i]; + this._si = i; + } + t = (i + (v - this._s1) / (this._s2 - this._s1)) * this._prec; + } + inv = 1 - t; + + i = this._props.length; + while (--i > -1) { + p = this._props[i]; + b = this._beziers[p][curIndex]; + val = (t * t * b.da + 3 * inv * (t * b.ca + inv * b.ba)) * t + b.a; + if (this._round[p]) { + val = (val + ((val > 0) ? 0.5 : -0.5)) >> 0; + } + if (func[p]) { + target[p](val); + } else { + target[p] = val; + } + } + + if (this._autoRotate != null) { + var ar:Array = this._autoRotate, + b2:Segment, x1:Number, y1:Number, x2:Number, y2:Number, add:Number, conv:Number; + i = ar.length; + while (--i > -1) { + p = ar[i][2]; + add = ar[i][3] || 0; + conv = (ar[i][4] == true) ? 1 : _RAD2DEG; + b = this._beziers[ar[i][0]][curIndex]; + b2 = this._beziers[ar[i][1]][curIndex]; + + x1 = b.a + (b.b - b.a) * t; + x2 = b.b + (b.c - b.b) * t; + x1 += (x2 - x1) * t; + x2 += ((b.c + (b.d - b.c) * t) - x2) * t; + + y1 = b2.a + (b2.b - b2.a) * t; + y2 = b2.b + (b2.c - b2.b) * t; + y1 += (y2 - y1) * t; + y2 += ((b2.c + (b2.d - b2.c) * t) - y2) * t; + + val = notStart ? Math.atan2(y2 - y1, x2 - x1) * conv + add : this._initialRotations[i]; + + if (func[p]) { + target[p](val); + } else { + target[p] = val; + } + } + } + + } + + } +} + +internal class Segment { + public var a:Number; + public var b:Number; + public var c:Number; + public var d:Number; + public var da:Number; + public var ca:Number; + public var ba:Number; + + public function Segment(a:Number, b:Number, c:Number, d:Number) { + this.a = a; + this.b = b; + this.c = c; + this.d = d; + this.da = d - a; + this.ca = c - a; + this.ba = b - a; + } + +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/BezierThroughPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/BezierThroughPlugin.as new file mode 100644 index 0000000..6e4e251 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/BezierThroughPlugin.as @@ -0,0 +1,37 @@ +/** + * VERSION: 12.0 + * DATE: 2012-01-12 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; +/** + * @private + * [AS3/AS2 only] LEGACY + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class BezierThroughPlugin extends BezierPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + + /** @private **/ + public function BezierThroughPlugin() { + super(); + _propName = "bezierThrough"; + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + if (value is Array) { + value = {values:value}; + } + value.type = "thru"; + return super._onInitTween(target, value, tween); + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/BlurFilterPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/BlurFilterPlugin.as new file mode 100644 index 0000000..f24ced4 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/BlurFilterPlugin.as @@ -0,0 +1,56 @@ +/** + * VERSION: 12.0 + * DATE: 2012-01-12 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; + import flash.filters.BlurFilter; +/** + * [AS3/AS2 only] Tweens a BlurFilter. The following properties are available (you only need to define the ones you want to tween): + * + *
      + *
    • blurX : Number [0]
    • + *
    • blurY : Number [0]
    • + *
    • quality : uint [2]
    • + *
    • index : uint
    • + *
    • addFilter : Boolean [false]
    • + *
    • remove : Boolean [false]
    • + *
    + *
    + * + *

    Set remove to true if you want the filter to be removed when the tween completes.

    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.BlurFilterPlugin; +TweenPlugin.activate([BlurFilterPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, {blurFilter:{blurX:10, blurY:10}}); + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class BlurFilterPlugin extends FilterPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + /** @private **/ + private static var _propNames:Array = ["blurX","blurY","quality"]; + + /** @private **/ + public function BlurFilterPlugin() { + super("blurFilter"); + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + return _initFilter(target, value, tween, BlurFilter, new BlurFilter(0, 0, value.quality || 2), _propNames); + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/CacheAsBitmapPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/CacheAsBitmapPlugin.as new file mode 100644 index 0000000..1aa5ca6 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/CacheAsBitmapPlugin.as @@ -0,0 +1,73 @@ +/** + * VERSION: 12.0 + * DATE: 2012-01-12 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; + import flash.display.DisplayObject; +/** + * [AS3/AS2 only] Forces the cacheAsBitmap property of a DisplayObject to be a certain value (true or false) + * during the tween and then sets it back to whatever it was before the tween was rendered for the first time. This can improve + * performance in certain situations, like when the DisplayObject NOT tweening its rotation, scaleX, scaleY, or similar + * things with its transform.matrix. See Adobe's docs for details about when it is appropriate to set cacheAsBitmap + * to true. Also beware that whenever a DisplayObject's cacheAsBitmap is true, it will ONLY be + * rendered on whole pixel values which can lead to animation that looks "choppy" at slow speeds. + * + *

    For example, if you want to set cacheAsBitmap to true while the tween is running, do:

    + * + * TweenLite.to(mc, 1, {x:100, cacheAsBitmap:true});

    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.CacheAsBitmapPlugin; +TweenPlugin.activate([CacheAsBitmapPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, {x:100, cacheAsBitmap:true}); + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class CacheAsBitmapPlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + + /** @private **/ + protected var _target:DisplayObject; + /** @private **/ + protected var _tween:TweenLite; + /** @private **/ + protected var _cacheAsBitmap:Boolean; + /** @private **/ + protected var _initVal:Boolean; + + /** @private **/ + public function CacheAsBitmapPlugin() { + super("cacheAsBitmap"); + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + _target = target as DisplayObject; + _tween = tween; + _initVal = _target.cacheAsBitmap; + _cacheAsBitmap = Boolean(value); + return true; + } + + /** @private **/ + override public function setRatio(v:Number):void { + if ((v == 1 && _tween._duration == _tween._time && _tween.data != "isFromStart") || (v == 0 && _tween._time == 0)) { //a changeFactor of 1 doesn't necessarily mean the tween is done - if the ease is Elastic.easeOut or Back.easeOut for example, they could hit 1 mid-tween. + _target.cacheAsBitmap = _initVal; + } else if (_target.cacheAsBitmap != _cacheAsBitmap) { + _target.cacheAsBitmap = _cacheAsBitmap; + } + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/CirclePath2DPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/CirclePath2DPlugin.as new file mode 100644 index 0000000..5a9b7e9 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/CirclePath2DPlugin.as @@ -0,0 +1,132 @@ +/** + * VERSION: 12.0 + * DATE: 2012-01-12 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; + import com.greensock.motionPaths.CirclePath2D; + import com.greensock.motionPaths.PathFollower; + import flash.geom.Matrix; +/** + * [AS3 only] Tweens an object along a CirclePath2D motion path in any direction (clockwise, counter-clockwise, or shortest). + * The plugin recognizes the following properties: + *
      + *
    • path : CirclePath2D - The CirclePath2D instance to follow (com.greensock.motionPaths.CirclePath2D)
    • + *
    • startAngle : Number - The position at which the target should begin its rotation (described + * in degrees unless useRadians is true in which case it is described in radians). + * For example, to begin at the top of the circle, use 270 or -90 as the startAngle.
    • + *
    • endAngle : Number - The position at which the target should end its rotation (described in + * degrees unless useRadians is true in which case it is described in radians). + * For example, to end at the bottom of the circle, use 90 as the endAngle
    • + *
    • autoRotate : Boolean - When autoRotate is true, the target will automatically + * be rotated so that it is oriented to the angle of the path. To offset this value (like to always add + * 90 degrees for example), use the rotationOffset property.
    • + *
    • rotationOffset : Number - When autoRotate is true, this value will always + * be added to the resulting rotation of the target.
    • + *
    • direction : String - The direction in which the target should travel around the path. Options are + * Direction.CLOCKWISE ("clockwise"), Direction.COUNTER_CLOCKWISE + * ("counterClockwise"), or Direction.SHORTEST ("shortest").
    • + *
    • extraRevolutions : uint - If instead of going directly to the endAngle, you want the target to + * travel one or more extra revolutions around the path before going to the endAngle, + * define that number of revolutions here.
    • + *
    • useRadians : Boolean - If you prefer to define values in radians instead of degrees, set useRadians to true.
    • + *
    + * + * + * + *

    USAGE:

    + * +import com.greensock.~~; +import com.greensock.plugins.~~; +import com.greensock.motionPaths.~~; +TweenPlugin.activate([CirclePath2DPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +var circle:CirclePath2D = new CirclePath2D(150, 150, 100); +TweenLite.to(mc, 2, {circlePath2D:{path:circle, startAngle:90, endAngle:270, direction:Direction.CLOCKWISE, extraRevolutions:2}}); + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class CirclePath2DPlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + /** @private **/ + private static const _2PI:Number = Math.PI * 2; + /** @private **/ + private static const _RAD2DEG:Number = 180 / Math.PI; + + /** @private **/ + protected var _target:Object; + /** @private **/ + protected var _autoRemove:Boolean; + /** @private **/ + protected var _start:Number; + /** @private **/ + protected var _change:Number; + /** @private **/ + protected var _circle:CirclePath2D; + /** @private **/ + protected var _autoRotate:Boolean; + /** @private **/ + protected var _rotationOffset:Number; + + /** @private **/ + public function CirclePath2DPlugin() { + super("circlePath2D,x,y"); + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + if (!("path" in value) || !(value.path is CirclePath2D)) { + trace("CirclePath2DPlugin error: invalid 'path' property. Please define a CirclePath2D instance."); + return false; + } + _target = target; + _circle = value.path as CirclePath2D; + _autoRotate = Boolean(value.autoRotate == true); + _rotationOffset = value.rotationOffset || 0; + + var f:PathFollower = _circle.getFollower(target); + if (f != null && !("startAngle" in value)) { + _start = f.progress; + } else { + _start = _circle.angleToProgress(value.startAngle || 0, value.useRadians); + _circle.renderObjectAt(_target, _start); + } + _change = Number(_circle.anglesToProgressChange(_circle.progressToAngle(_start), value.endAngle || 0, value.direction || "clockwise", value.extraRevolutions || 0, Boolean(value.useRadians))); + return true; + } + + /** @private **/ + override public function _kill(lookup:Object):Boolean { + if (("x" in lookup) || ("y" in lookup)) { + _overwriteProps = []; + } + return super._kill(lookup); + } + + /** @private **/ + override public function setRatio(v:Number):void { + var angle:Number = (_start + (_change * v)) * _2PI, + radius:Number = _circle.radius, + m:Matrix = _circle.transform.matrix, + px:Number = Math.cos(angle) * radius, + py:Number = Math.sin(angle) * radius; + + _target.x = px * m.a + py * m.c + m.tx; + _target.y = px * m.b + py * m.d + m.ty; + + if (_autoRotate) { + angle += Math.PI / 2; + px = Math.cos(angle) * _circle.radius; + py = Math.sin(angle) * _circle.radius; + _target.rotation = Math.atan2(px * m.b + py * m.d, px * m.a + py * m.c) * _RAD2DEG + _rotationOffset; + } + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/ColorMatrixFilterPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/ColorMatrixFilterPlugin.as new file mode 100644 index 0000000..78d97bd --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/ColorMatrixFilterPlugin.as @@ -0,0 +1,234 @@ +/** + * VERSION: 12.0 + * DATE: 2012-01-12 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; + + import flash.filters.ColorMatrixFilter; +/** + * [AS3/AS2 only] ColorMatrixFilter tweening offers an easy way to tween a DisplayObject's saturation, hue, contrast, + * brightness, and colorization. The following properties are available (you only need to define the ones you want to tween): + *
      + *
    • colorize : uint (colorizing a DisplayObject makes it look as though you're seeing it through a colored piece of glass whereas tinting it makes every pixel exactly that color. You can control the amount of colorization using the "amount" value where 1 is full strength, 0.5 is half-strength, and 0 has no colorization effect.)
    • + *
    • amount : Number [1] (only used in conjunction with "colorize")
    • + *
    • contrast : Number (1 is normal contrast, 0 has no contrast, and 2 is double the normal contrast, etc.)
    • + *
    • saturation : Number (1 is normal saturation, 0 makes the DisplayObject look black and white, and 2 would be double the normal saturation)
    • + *
    • hue : Number (changes the hue of every pixel. Think of it as degrees, so 180 would be rotating the hue to be exactly opposite as normal, 360 would be the same as 0, etc.)
    • + *
    • brightness : Number (1 is normal brightness, 0 is much darker than normal, and 2 is twice the normal brightness, etc.)
    • + *
    • threshold : Number (number from 0 to 255 that controls the threshold of where the pixels turn white or black)
    • + *
    • matrix : Array (If you already have a matrix from a ColorMatrixFilter that you want to tween to, pass it in with the "matrix" property. This makes it possible to match effects created in the Flash IDE.)
    • + *
    • index : Number (only necessary if you already have a filter applied and you want to target it with the tween.)
    • + *
    • addFilter : Boolean [false]
    • + *
    • remove : Boolean [false] (Set remove to true if you want the filter to be removed when the tween completes.)
    • + *
    + *

    HINT: If you'd like to match the ColorMatrixFilter values you created in the Flash IDE on a particular object, you can get its matrix like this:

    + * +import flash.display.DisplayObject; +import flash.filters.ColorMatrixFilter; + +function getColorMatrix(mc:DisplayObject):Array { + var f:Array = mc.filters, i:uint; + for (i = 0; i < f.length; i++) { + if (f[i] is ColorMatrixFilter) { + return f[i].matrix; + } + } + return null; +} + +var myOriginalMatrix:Array = getColorMatrix(my_mc); //store it so you can tween back to it anytime like TweenMax.to(my_mc, 1, {colorMatrixFilter:{matrix:myOriginalMatrix}}); + + * + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.ColorMatrixFilterPlugin; +TweenPlugin.activate([ColorMatrixFilterPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, {colorMatrixFilter:{colorize:0xFF0000}}); + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class ColorMatrixFilterPlugin extends FilterPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + /** @private **/ + private static var _propNames:Array = []; + + /** @private **/ + protected static var _idMatrix:Array = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0]; + /** @private **/ + protected static var _lumR:Number = 0.212671; //Red constant - used for a few color matrix filter functions + /** @private **/ + protected static var _lumG:Number = 0.715160; //Green constant - used for a few color matrix filter functions + /** @private **/ + protected static var _lumB:Number = 0.072169; //Blue constant - used for a few color matrix filter functions + + /** @private **/ + protected var _matrix:Array; + /** @private **/ + protected var _matrixTween:EndArrayPlugin; + + /** @private **/ + public function ColorMatrixFilterPlugin() { + super("colorMatrixFilter"); + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + var cmf:Object = value; + _initFilter(target, {remove:value.remove, index:value.index, addFilter:value.addFilter}, tween, ColorMatrixFilter, new ColorMatrixFilter(_idMatrix.slice()), _propNames); + if (_filter == null) { + trace("FILTER NULL! "); + return true; + } + + _matrix = ColorMatrixFilter(_filter).matrix; + var endMatrix:Array = []; + + if (cmf.matrix != null && (cmf.matrix is Array)) { + endMatrix = cmf.matrix; + } else { + if (cmf.relative == true) { + endMatrix = _matrix.slice(); + } else { + endMatrix = _idMatrix.slice(); + } + endMatrix = setBrightness(endMatrix, cmf.brightness); + endMatrix = setContrast(endMatrix, cmf.contrast); + endMatrix = setHue(endMatrix, cmf.hue); + endMatrix = setSaturation(endMatrix, cmf.saturation); + endMatrix = setThreshold(endMatrix, cmf.threshold); + if (!isNaN(cmf.colorize)) { + endMatrix = colorize(endMatrix, cmf.colorize, cmf.amount); + } + } + _matrixTween = new EndArrayPlugin(); + _matrixTween._init(_matrix, endMatrix); + return true; + } + + /** @private **/ + override public function setRatio(v:Number):void { + _matrixTween.setRatio(v); + ColorMatrixFilter(_filter).matrix = _matrix; + super.setRatio(v); + } + + +//---- MATRIX OPERATIONS -------------------------------------------------------------------------------- + + /** @private **/ + public static function colorize(m:Array, color:Number, amount:Number = 1):Array { + if (isNaN(color)) { + return m; + } else if (isNaN(amount)) { + amount = 1; + } + var r:Number = ((color >> 16) & 0xff) / 255, + g:Number = ((color >> 8) & 0xff) / 255, + b:Number = (color & 0xff) / 255, + inv:Number = 1 - amount, + temp:Array = [inv + amount * r * _lumR, amount * r * _lumG, amount * r * _lumB, 0, 0, + amount * g * _lumR, inv + amount * g * _lumG, amount * g * _lumB, 0, 0, + amount * b * _lumR, amount * b * _lumG, inv + amount * b * _lumB, 0, 0, + 0, 0, 0, 1, 0]; + return applyMatrix(temp, m); + } + + /** @private **/ + public static function setThreshold(m:Array, n:Number):Array { + if (isNaN(n)) { + return m; + } + var temp:Array = [_lumR * 256, _lumG * 256, _lumB * 256, 0, -256 * n, + _lumR * 256, _lumG * 256, _lumB * 256, 0, -256 * n, + _lumR * 256, _lumG * 256, _lumB * 256, 0, -256 * n, + 0, 0, 0, 1, 0]; + return applyMatrix(temp, m); + } + + /** @private **/ + public static function setHue(m:Array, n:Number):Array { + if (isNaN(n)) { + return m; + } + n *= Math.PI / 180; + var c:Number = Math.cos(n), + s:Number = Math.sin(n), + temp:Array = [(_lumR + (c * (1 - _lumR))) + (s * (-_lumR)), (_lumG + (c * (-_lumG))) + (s * (-_lumG)), (_lumB + (c * (-_lumB))) + (s * (1 - _lumB)), 0, 0, (_lumR + (c * (-_lumR))) + (s * 0.143), (_lumG + (c * (1 - _lumG))) + (s * 0.14), (_lumB + (c * (-_lumB))) + (s * -0.283), 0, 0, (_lumR + (c * (-_lumR))) + (s * (-(1 - _lumR))), (_lumG + (c * (-_lumG))) + (s * _lumG), (_lumB + (c * (1 - _lumB))) + (s * _lumB), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]; + return applyMatrix(temp, m); + } + + /** @private **/ + public static function setBrightness(m:Array, n:Number):Array { + if (isNaN(n)) { + return m; + } + n = (n * 100) - 100; + return applyMatrix([1,0,0,0,n, + 0,1,0,0,n, + 0,0,1,0,n, + 0,0,0,1,0, + 0,0,0,0,1], m); + } + + /** @private **/ + public static function setSaturation(m:Array, n:Number):Array { + if (isNaN(n)) { + return m; + } + var inv:Number = 1 - n, + r:Number = inv * _lumR, + g:Number = inv * _lumG, + b:Number = inv * _lumB, + temp:Array = [r + n, g , b , 0, 0, + r , g + n, b , 0, 0, + r , g , b + n, 0, 0, + 0 , 0 , 0 , 1, 0]; + return applyMatrix(temp, m); + } + + /** @private **/ + public static function setContrast(m:Array, n:Number):Array { + if (isNaN(n)) { + return m; + } + n += 0.01; + var temp:Array = [n,0,0,0,128 * (1 - n), + 0,n,0,0,128 * (1 - n), + 0,0,n,0,128 * (1 - n), + 0,0,0,1,0]; + return applyMatrix(temp, m); + } + + /** @private **/ + public static function applyMatrix(m:Array, m2:Array):Array { + if (!(m is Array) || !(m2 is Array)) { + return m2; + } + var temp:Array = [], i:int = 0, z:int = 0, y:int, x:int; + for (y = 0; y < 4; y += 1) { + for (x = 0; x < 5; x += 1) { + z = (x == 4) ? m[i + 4] : 0; + temp[i + x] = m[i] * m2[x] + + m[i+1] * m2[x + 5] + + m[i+2] * m2[x + 10] + + m[i+3] * m2[x + 15] + + z; + } + i += 5; + } + return temp; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/ColorTransformPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/ColorTransformPlugin.as new file mode 100644 index 0000000..8cffdc5 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/ColorTransformPlugin.as @@ -0,0 +1,104 @@ +/** + * VERSION: 12.1.3 + * DATE: 2013-12-12 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; + import flash.display.DisplayObject; + import flash.geom.ColorTransform; +/** + * [AS3/AS2 only] Ever wanted to tween ColorTransform properties of a DisplayObject to do advanced effects like overexposing, altering + * the brightness or setting the percent/amount of tint? Or maybe tween individual ColorTransform + * properties like redMultiplier, redOffset, blueMultiplier, blueOffset, etc. ColorTransformPlugin gives you an easy way to + * do just that. + * + *

    PROPERTIES:

    + *
      + *
    • tint (or color) : uint - Color of the tint. Use a hex value, like 0xFF0000 for red.
    • + *
    • tintAmount : Number - Number between 0 and 1. Works with the "tint" property and indicats how much of an effect the tint should have. 0 makes the tint invisible, 0.5 is halfway tinted, and 1 is completely tinted.
    • + *
    • brightness : Number - Number between 0 and 2 where 1 is normal brightness, 0 is completely dark/black, and 2 is completely bright/white
    • + *
    • exposure : Number - Number between 0 and 2 where 1 is normal exposure, 0, is completely underexposed, and 2 is completely overexposed. Overexposing an object is different then changing the brightness - it seems to almost bleach the image and looks more dynamic and interesting (subjectively speaking).
    • + *
    • redOffset : Number
    • + *
    • greenOffset : Number
    • + *
    • blueOffset : Number
    • + *
    • alphaOffset : Number
    • + *
    • redMultiplier : Number
    • + *
    • greenMultiplier : Number
    • + *
    • blueMultiplier : Number
    • + *
    • alphaMultiplier : Number
    • + *
    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.ColorTransformPlugin; +TweenPlugin.activate([ColorTransformPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, {colorTransform:{tint:0xFF0000, tintAmount:0.5}}); + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class ColorTransformPlugin extends TintPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + + /** @private **/ + public function ColorTransformPlugin() { + super(); + _propName = "colorTransform"; + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + var start:ColorTransform, end:ColorTransform = new ColorTransform(); + if (target is DisplayObject) { + _transform = DisplayObject(target).transform; + start = _transform.colorTransform; + } else if (target is ColorTransform) { + start = target as ColorTransform; + } else { + return false; + } + if (value is ColorTransform) { + end.concat(value); + } else { + end.concat(start); + } + for (var p:String in value) { + if (p == "tint" || p == "color") { + if (value[p] != null) { + end.color = int(value[p]); + } + } else if (p == "tintAmount" || p == "exposure" || p == "brightness") { + //handle this later... + } else { + end[p] = value[p]; + } + } + if (!(value is ColorTransform)) { + if (!isNaN(value.tintAmount)) { + var ratio:Number = value.tintAmount / (1 - ((end.redMultiplier + end.greenMultiplier + end.blueMultiplier) / 3)); + end.redOffset *= ratio; + end.greenOffset *= ratio; + end.blueOffset *= ratio; + end.redMultiplier = end.greenMultiplier = end.blueMultiplier = 1 - value.tintAmount; + } else if (!isNaN(value.exposure)) { + end.redOffset = end.greenOffset = end.blueOffset = 255 * (value.exposure - 1); + end.redMultiplier = end.greenMultiplier = end.blueMultiplier = 1; + } else if (!isNaN(value.brightness)) { + end.redOffset = end.greenOffset = end.blueOffset = Math.max(0, (value.brightness - 1) * 255); + end.redMultiplier = end.greenMultiplier = end.blueMultiplier = 1 - Math.abs(value.brightness - 1); + } + } + _init(start, end); + return true; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/DirectionalRotationPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/DirectionalRotationPlugin.as new file mode 100644 index 0000000..af41311 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/DirectionalRotationPlugin.as @@ -0,0 +1,123 @@ +/** + * VERSION: 12.0.5 + * DATE: 2013-03-26 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; + import com.greensock.core.PropTween; +/** + * Tweens any rotation-related property to another value in a particular direction which can be either clockwise + * ("_cw" suffix), counter-clockwise ("_ccw" suffix), or in the shortest direction + * ("_short" suffix) in which case the plugin chooses the direction based on the shortest path. For example: + * + * +//obj.rotation starts at 45 +var obj:Object = {rotation:45}; + +//tweens to the 270 position in a clockwise direction +TweenLite.to(obj, 1, {directionalRotation:"270_cw"}); + +//tweens to the 270 position in a counter-clockwise direction +TweenLite.to(obj, 1, {directionalRotation:"270_ccw"}); + +//tweens to the 270 position in the shortest direction (which, in this case, is counter-clockwise) +TweenLite.to(obj, 1, {directionalRotation:"270_short"}); + + * + *

    Notice that the value is in quotes, thus a string with a particular suffix indicating the direction + * ("_cw", "_ccw", or "_short"). You can also use the "+=" or "-=" prefix to + * indicate relative values.

    + * + *

    By default, directionalRotation assumes you're attempting to tween the "rotation" property + * of the target, but you can define any rotational property name (including MULTIPLE properties) by passing an + * object instead, like this:

    + * + * +//animate obj.rotationX and obj.rotationY: +TweenLite.to(obj, 1, {directionalRotation:{rotationX:"-140_cw", rotationY:"70_short"}, ease:Power2.easeIn}); + + * + *

    If you want to define the values in radians instead of degrees, you can use the special useRadians:true flag, like this:

    + * + * +TweenLite.to(obj, 1, {directionalRotation:{rotation:"1.5_ccw", useRadians:true}, ease:Power2.easeInOut}); + + * + *

    And if the value that you want to pass in is a numeric variable, you can easily append the appropriate suffix like this:

    + * + * +var myValue:Number = -270; +TweenLite.to(obj, 1, {directionalRotation: (myValue + "_short") }); + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class DirectionalRotationPlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + /** @private **/ + protected var finals:Object; + + /** @private **/ + public function DirectionalRotationPlugin() { + super("directionalRotation"); + _overwriteProps.pop(); + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + if (typeof(value) !== "object") { + value = {rotation:value}; + } + finals = {}; + var cap:Number = (value.useRadians === true) ? Math.PI * 2 : 360, + p:String, v:Object, start:Number, end:Number, dif:Number, split:Array, type:String; + for (p in value) { + if (p !== "useRadians") { + split = (value[p] + "").split("_"); + v = split[0]; + type = split[1]; + start = parseFloat( (typeof(target[p]) !== "function") ? target[p] : target[ ((p.indexOf("set") || typeof(target["get" + p.substr(3)]) !== "function") ? p : "get" + p.substr(3)) ]() ); + end = finals[p] = (typeof(v) === "string" && v.charAt(1) === "=") ? start + parseInt(v.charAt(0) + "1", 10) * Number(v.substr(2)) : Number(v) || 0; + dif = end - start; + if (type === "short") { + dif = dif % cap; + if (dif !== dif % (cap / 2)) { + dif = (dif < 0) ? dif + cap : dif - cap; + } + } else if (type === "cw" && dif < 0) { + dif = ((dif + cap * 9999999999) % cap) - ((dif / cap) | 0) * cap; + } else if (type === "ccw" && dif > 0) { + dif = ((dif - cap * 9999999999) % cap) - ((dif / cap) | 0) * cap; + } + _addTween(target, p, start, start + dif, p); + _overwriteProps.push(p); + } + } + return true; + } + + /** @private **/ + override public function setRatio(v:Number):void { + var pt:PropTween; + if (v !== 1) { + super.setRatio(v); + } else { + pt = _firstPT; + while (pt) { + if (pt.f) { + pt.t[pt.p](finals[pt.p]); + } else { + pt.t[pt.p] = finals[pt.p]; + } + pt = pt._next; + } + } + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/DropShadowFilterPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/DropShadowFilterPlugin.as new file mode 100644 index 0000000..8d00666 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/DropShadowFilterPlugin.as @@ -0,0 +1,63 @@ +/** + * VERSION: 12.0 + * DATE: 2012-01-12 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; + import flash.filters.DropShadowFilter; +/** + * [AS3/AS2 only] Tweens a DropShadowFilter. The following properties are available (you only need to define the ones you want to tween): + * + *
      + *
    • distance : Number [0]
    • + *
    • angle : Number [45]
    • + *
    • color : uint [0x000000]
    • + *
    • alpha :Number [0]
    • + *
    • blurX : Number [0]
    • + *
    • blurY : Number [0]
    • + *
    • strength : Number [1]
    • + *
    • quality : uint [2]
    • + *
    • inner : Boolean [false]
    • + *
    • knockout : Boolean [false]
    • + *
    • hideObject : Boolean [false]
    • + *
    • index : uint
    • + *
    • addFilter : Boolean [false]
    • + *
    • remove : Boolean [false]
    • + *
    + *
    + *

    Set remove to true if you want the filter to be removed when the tween completes.

    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.DropShadowFilterPlugin; +TweenPlugin.activate([DropShadowFilterPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, {dropShadowFilter:{blurX:5, blurY:5, distance:5, alpha:0.6}}); + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class DropShadowFilterPlugin extends FilterPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + /** @private **/ + private static var _propNames:Array = ["distance","angle","color","alpha","blurX","blurY","strength","quality","inner","knockout","hideObject"]; + + /** @private **/ + public function DropShadowFilterPlugin() { + super("dropShadowFilter"); + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + return _initFilter(target, value, tween, DropShadowFilter, new DropShadowFilter(0, 45, 0x000000, 0, 0, 0, 1, value.quality || 2, value.inner, value.knockout, value.hideObject), _propNames); + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/EndArrayPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/EndArrayPlugin.as new file mode 100644 index 0000000..77fdc4f --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/EndArrayPlugin.as @@ -0,0 +1,98 @@ +/** + * VERSION: 12.0 + * DATE: 2012-01-12 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; +/** + * [AS3/AS2 only] Tweens numbers in an Array. + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.EndArrayPlugin; +TweenPlugin.activate([EndArrayPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +var myArray:Array = [1,2,3,4]; +TweenLite.to(myArray, 1.5, {endArray:[10,20,30,40]}); + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class EndArrayPlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + + /** @private **/ + protected var _a:Array; + /** @private If the values should be rounded to the nearest integer, _round will be set to true. **/ + protected var _round:Boolean; + /** @private **/ + protected var _info:Array = []; + + /** @private **/ + public function EndArrayPlugin() { + super("endArray"); + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + if (!(target is Array) || !(value is Array)) { + return false; + } + _init(target as Array, value); + return true; + } + + /** @private **/ + public function _init(start:Array, end:Array):void { + _a = start; + var i:int = end.length, cnt:int = 0; + while (--i > -1) { + if (start[i] != end[i] && start[i] != null) { + _info[cnt++] = new ArrayTweenInfo(i, _a[i], end[i] - _a[i]); + } + } + } + + override public function _roundProps(lookup:Object, value:Boolean=true):void { + if ("endArray" in lookup) { + _round = value; + } + } + + /** @private **/ + override public function setRatio(v:Number):void { + var i:int = _info.length, ti:ArrayTweenInfo, val:Number; + if (_round) { + while (--i > -1) { + ti = _info[i]; + _a[ti.i] = ((val = ti.c * v + ti.s) > 0) ? (val + 0.5) >> 0 : (val - 0.5) >> 0; + } + } else { + while (--i > -1) { + ti = _info[i]; + _a[ti.i] = ti.c * v + ti.s; + } + } + } + + } +} + +internal class ArrayTweenInfo { + public var i:uint; + public var s:Number; + public var c:Number; + + public function ArrayTweenInfo(index:uint, start:Number, change:Number) { + this.i = index; + this.s = start; + this.c = change; + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/EndVectorPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/EndVectorPlugin.as new file mode 100644 index 0000000..dbf6a9e --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/EndVectorPlugin.as @@ -0,0 +1,111 @@ +/** + * VERSION: 12.0 + * DATE: 2012-01-12 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; + + import __AS3__.vec.Vector; //due to a bug in Flex Builder, this must be included in order to correctly compile a swc +/** + * [AS3 only] Tweens numbers in a Vector.<Number>. Remember, Vectors require that you publish to Flash Player 10 or later. + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.EndVectorPlugin; +TweenPlugin.activate([EndVectorPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +var v:Vector.<Number> = new Vector.<Number>(); + v[0] = 0; + v[1] = 1; + v[2] = 2; +var end:Vector.<Number> = new Vector.<Number>(); + end[0] = 100; + end[1] = 250; + end[2] = 500; +TweenLite.to(v, 3, {endVector:end, onUpdate:report}); +function report():void { + trace(v); +} + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class EndVectorPlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + + /** @private **/ + protected var _v:Vector.; + /** @private **/ + protected var _info:Vector. = new Vector.(); + /** @private If the values should be rounded to the nearest integer, _round will be set to true. **/ + public var _round:Boolean; + + /** @private **/ + public function EndVectorPlugin() { + super("endVector"); + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + if (!(target is Vector.) || !(value is Vector.)) { + return false; + } + _init(target as Vector., value as Vector.); + return true; + } + + /** @private **/ + public function _init(start:Vector., end:Vector.):void { + _v = start; + var i:int = end.length, cnt:uint = 0; + while (--i > -1) { + if (_v[i] != end[i]) { + _info[cnt++] = new VectorInfo(i, _v[i], end[i] - _v[i]); + } + } + } + + override public function _roundProps(lookup:Object, value:Boolean=true):void { + if ("endVector" in lookup) { + _round = value; + } + } + + + /** @private **/ + override public function setRatio(v:Number):void { + var i:int = _info.length, vi:VectorInfo, val:Number; + if (_round) { + while (--i > -1) { + vi = _info[i]; + _v[vi.i] = ((val = vi.c * v + vi.s) > 0) ? (val + 0.5) >> 0 : (val - 0.5) >> 0; + } + } else { + while (--i > -1) { + vi = _info[i]; + _v[vi.i] = vi.c * v + vi.s; + } + } + } + + } +} + +internal class VectorInfo { + public var i:uint; + public var s:Number; + public var c:Number; + + public function VectorInfo(index:uint, start:Number, change:Number) { + this.i = index; + this.s = start; + this.c = change; + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/FilterPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/FilterPlugin.as new file mode 100644 index 0000000..569979a --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/FilterPlugin.as @@ -0,0 +1,112 @@ +/** + * VERSION: 12.0.1 + * DATE: 2013-05-21 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; + import flash.filters.BitmapFilter; + import flash.filters.BlurFilter; +/** + * @private + * Base class for all filter plugins (like blurFilter, colorMatrixFilter, glowFilter, etc.). Handles common routines. + * There is no reason to use this class directly.

    + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class FilterPlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + + /** @private **/ + protected var _target:Object; + /** @private **/ + protected var _type:Class; + /** @private **/ + protected var _filter:BitmapFilter; + /** @private **/ + protected var _index:int; + /** @private **/ + protected var _remove:Boolean; + /** @private **/ + private var _tween:TweenLite; + + /** @private **/ + public function FilterPlugin(props:String="", priority:Number=0) { + super(props, priority); + } + + /** @private **/ + protected function _initFilter(target:*, props:Object, tween:TweenLite, type:Class, defaultFilter:BitmapFilter, propNames:Array):Boolean { + _target = target; + _tween = tween; + _type = type; + var filters:Array = _target.filters, p:String, i:int, colorTween:HexColorsPlugin; + var extras:Object = (props is BitmapFilter) ? {} : props; + if (extras.index != null) { + _index = extras.index; + } else { + _index = filters.length; + if (extras.addFilter != true) { + while (--_index > -1 && !(filters[_index] is _type)) { }; + } + } + if (_index < 0 || !(filters[_index] is _type)) { + if (_index < 0) { + _index = filters.length; + } + if (_index > filters.length) { //in case the requested index is too high, pad the lower elements with BlurFilters that have a blur of 0. + i = filters.length - 1; + while (++i < _index) { + filters[i] = new BlurFilter(0, 0, 1); + } + } + filters[_index] = defaultFilter; + _target.filters = filters; + } + _filter = filters[_index]; + _remove = (extras.remove == true); + i = propNames.length; + while (--i > -1) { + p = propNames[i]; + if (p in props && _filter[p] != props[p]) { + if (p == "color" || p == "highlightColor" || p == "shadowColor") { + colorTween = new HexColorsPlugin(); + colorTween._initColor(_filter, p, props[p]); + _addTween(colorTween, "setRatio", 0, 1, _propName); + } else if (p == "quality" || p == "inner" || p == "knockout" || p == "hideObject") { + _filter[p] = props[p]; + } else { + _addTween(_filter, p, _filter[p], props[p], _propName); + } + } + } + return true; + } + + /** @private **/ + override public function setRatio(v:Number):void { + super.setRatio(v); + var filters:Array = _target.filters; + if (!(filters[_index] is _type)) { //a filter may have been added or removed since the tween began, changing the index. + _index = filters.length; //default (in case it was removed) + while (--_index > -1 && !(filters[_index] is _type)) { }; + if (_index == -1) { + _index = filters.length; + } + } + if (v == 1 && _remove && _tween._time == _tween._duration && _tween.data != "isFromStart") { + if (_index < filters.length) { + filters.splice(_index, 1); + } + } else { + filters[_index] = _filter; + } + _target.filters = filters; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/FrameBackwardPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/FrameBackwardPlugin.as new file mode 100644 index 0000000..c9d53a9 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/FrameBackwardPlugin.as @@ -0,0 +1,42 @@ +/** + * VERSION: 12.0 + * DATE: 2012-01-12 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { +/** + * [AS3/AS2 only] Tweens a MovieClip backward to a particular frame number, wrapping it if/when it reaches the beginning + * of the timeline. For example, if your MovieClip has 20 frames total and it is currently at frame 10 + * and you want tween to frame 15, a normal frame tween would go forward from 10 to 15, but a frameBackward + * would go from 10 to 1 (the beginning) and wrap to the end and continue tweening from 20 to 15. + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.~~; +TweenPlugin.activate([FrameBackwardPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, {frameBackward:15}); + + * + *

    Note: When tweening the frames of a MovieClip, any audio that is embedded on the MovieClip's timeline (as "stream") will not be played. + * Doing so would be impossible because the tween might speed up or slow down the MovieClip to any degree.

    + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class FrameBackwardPlugin extends FrameForwardPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + + /** @private **/ + public function FrameBackwardPlugin() { + super(); + _propName = "frameBackward"; + _backward = true; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/FrameForwardPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/FrameForwardPlugin.as new file mode 100644 index 0000000..481656e --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/FrameForwardPlugin.as @@ -0,0 +1,82 @@ +/** + * VERSION: 12.0.2 + * DATE: 2013-04-09 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; + + import flash.display.MovieClip; +/** + * [AS3/AS2 only] Tweens a MovieClip forward to a particular frame number, wrapping it if/when it reaches the end + * of the timeline. For example, if your MovieClip has 20 frames total and it is currently at frame 10 + * and you want tween to frame 5, a normal frame tween would go backwards from 10 to 5, but a frameForward + * would go from 10 to 20 (the end) and wrap to the beginning and continue tweening from 1 to 5. + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.~~; +TweenPlugin.activate([FrameForwardPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, {frameForward:5}); + + * + *

    Note: When tweening the frames of a MovieClip, any audio that is embedded on the MovieClip's timeline (as "stream") will not be played. + * Doing so would be impossible because the tween might speed up or slow down the MovieClip to any degree.

    + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class FrameForwardPlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + + /** @private **/ + protected var _start:int; + /** @private **/ + protected var _change:int; + /** @private **/ + protected var _max:uint; + /** @private **/ + protected var _target:Object; + /** @private Allows FrameBackwardPlugin to extend this class and only use an extremely small amount of kb (because the functionality is combined here) **/ + protected var _backward:Boolean; + + /** @private **/ + public function FrameForwardPlugin() { + super("frameForward,frame,frameLabel,frameBackward"); + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + _target = target; + _start = _target.currentFrame; + _max = _target.totalFrames; + _change = (typeof(value) === "number") ? Number(value) - _start : (typeof(value) === "string" && value.charAt(1) === "=") ? int(value.charAt(0) + "1") * Number(value.substr(2)) : Number(value) || 0; + if (!_backward && _change < 0) { + _change = ((_change + (_max * 99999)) % _max) + ((_change / _max) | 0) * _max; + } else if (_backward && _change > 0) { + _change = ((_change - (_max * 99999)) % _max) - ((_change / _max) | 0) * _max; + } + return true; + } + + /** @private **/ + override public function setRatio(v:Number):void { + var frame:Number = (_change * v + _start) % _max; + if (frame < 0.5 && frame >= -0.5) { + frame = _max; + } else if (frame < 0) { + frame += _max; + } + frame = (frame + 0.5) | 0; + if (frame != _target.currentFrame) { + _target.gotoAndStop( frame ); + } + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/FrameLabelPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/FrameLabelPlugin.as new file mode 100644 index 0000000..28aeed5 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/FrameLabelPlugin.as @@ -0,0 +1,63 @@ +/** + * VERSION: 12.0 + * DATE: 2012-01-12 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; + import flash.display.MovieClip; +/** + * [AS3/AS2 only] Tweens a MovieClip to a particular frame label.

    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.FrameLabelPlugin; +TweenPlugin.activate([FrameLabelPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, {frameLabel:"myLabel"}); + + * + *

    Note: When tweening the frames of a MovieClip, any audio that is embedded on the MovieClip's timeline (as "stream") will not be played. + * Doing so would be impossible because the tween might speed up or slow down the MovieClip to any degree.

    + * + * Copyright 2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership. + * + * @author Jack Doyle, jack@greensock.com + */ + public class FrameLabelPlugin extends FramePlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + + /** @private **/ + public function FrameLabelPlugin() { + super(); + _propName = "frameLabel"; + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + if (!tween.target is MovieClip) { + return false; + } + _target = target as MovieClip; + this.frame = _target.currentFrame; + var labels:Array = _target.currentLabels, label:String = value, endFrame:int = _target.currentFrame; + var i:int = labels.length; + while (--i > -1) { + if (labels[i].name == label) { + endFrame = labels[i].frame; + break; + } + } + if (this.frame != endFrame) { + _addTween(this, "frame", this.frame, endFrame, "frame", true); + } + return true; + } + + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/FramePlugin.as b/FairyGUI-as3/src/com/greensock/plugins/FramePlugin.as new file mode 100644 index 0000000..870d705 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/FramePlugin.as @@ -0,0 +1,64 @@ +/** + * VERSION: 12.01 + * DATE: 2012-06-25 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; + import flash.display.MovieClip; +/** + * [AS3/AS2 only] Tweens a MovieClip to a particular frame number.

    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.FramePlugin; +TweenPlugin.activate([FramePlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, {frame:125}); + + * + *

    Note: When tweening the frames of a MovieClip, any audio that is embedded on the MovieClip's timeline (as "stream") will not be played. + * Doing so would be impossible because the tween might speed up or slow down the MovieClip to any degree.

    + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class FramePlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + + /** @private **/ + public var frame:int; + /** @private **/ + protected var _target:MovieClip; + + /** @private **/ + public function FramePlugin() { + super("frame,frameLabel,frameForward,frameBackward"); + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + if (!(target is MovieClip) || isNaN(value)) { + return false; + } + _target = target as MovieClip; + this.frame = _target.currentFrame; + _addTween(this, "frame", this.frame, value, "frame", true); + return true; + } + + /** @private **/ + override public function setRatio(v:Number):void { + super.setRatio(v); + if (this.frame != _target.currentFrame) { + _target.gotoAndStop(this.frame); + } + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/GlowFilterPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/GlowFilterPlugin.as new file mode 100644 index 0000000..8746657 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/GlowFilterPlugin.as @@ -0,0 +1,61 @@ +/** + * VERSION: 12.0 + * DATE: 2012-01-12 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; + import flash.filters.GlowFilter; +/** + * [AS3/AS2 only] Tweens a GlowFilter. The following properties are available (you only need to define the ones you want to tween): + * + *
      + *
    • color : uint [0x000000]
    • + *
    • alpha :Number [0]
    • + *
    • blurX : Number [0]
    • + *
    • blurY : Number [0]
    • + *
    • strength : Number [1]
    • + *
    • quality : uint [2]
    • + *
    • inner : Boolean [false]
    • + *
    • knockout : Boolean [false]
    • + *
    • index : uint
    • + *
    • addFilter : Boolean [false]
    • + *
    • remove : Boolean [false]
    • + *
    + *
    + * + *

    Set remove to true if you want the filter to be removed when the tween completes.

    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.GlowFilterPlugin; +TweenPlugin.activate([GlowFilterPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, {glowFilter:{color:0x00FF00, blurX:10, blurY:10, strength:1, alpha:1}}); + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class GlowFilterPlugin extends FilterPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + /** @private **/ + private static var _propNames:Array = ["color","alpha","blurX","blurY","strength","quality","inner","knockout"]; + + /** @private **/ + public function GlowFilterPlugin() { + super("glowFilter"); + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + return _initFilter(target, value, tween, GlowFilter, new GlowFilter(0xFFFFFF, 0, 0, 0, value.strength || 1, value.quality || 2, value.inner, value.knockout), _propNames); + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/HexColorsPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/HexColorsPlugin.as new file mode 100644 index 0000000..4b58151 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/HexColorsPlugin.as @@ -0,0 +1,134 @@ +/** + * VERSION: 12.0 + * DATE: 2012-01-14 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; +/** + * [AS3/AS2 only] Although hex colors are technically numbers, if you try to tween them conventionally, + * you'll notice that they don't tween smoothly. To tween them properly, the red, green, and + * blue components must be extracted and tweened independently. The HexColorsPlugin makes it easy. + * To tween a property of your object that's a hex color to another hex color, just pass a hexColors + * Object with properties named the same as your object's hex color properties. For example, + * if myObject has a "myHexColor" property that you'd like to tween to red (0xFF0000) over the + * course of 2 seconds, you'd do:

    + * + * TweenMax.to(myObject, 2, {hexColors:{myHexColor:0xFF0000}});

    + * + *

    You can pass in any number of properties.

    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.HexColorsPlugin; +TweenPlugin.activate([HexColorsPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(myObject, 2, {hexColors:{myProperty:0xFF0000}}); + + * + *

    Or if you just want to tween a color and apply it somewhere on every frame, you could do:

    + * +var myColor:Object = {hex:0xFF0000}; +TweenLite.to(myColor, 2, {hexColors:{hex:0x0000FF}, onUpdate:applyColor}); +function applyColor() { + mc.graphics.clear(); + mc.graphics.beginFill(myColor.hex, 1); + mc.graphics.drawRect(0, 0, 100, 100); + mc.graphics.endFill(); +} + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class HexColorsPlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + + /** @private **/ + protected var _colors:Array; + + /** @private **/ + public function HexColorsPlugin() { + super("hexColors"); + _overwriteProps = []; + _colors = []; + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + for (var p:String in value) { + _initColor(target, p, uint(value[p])); + } + return true; + } + + /** @private **/ + public function _initColor(target:Object, p:String, end:uint):void { + var isFunc:Boolean = (typeof(target[p]) == "function"), + start:uint = (!isFunc) ? target[p] : target[ ((p.indexOf("set") || !("get" + p.substr(3) in target)) ? p : "get" + p.substr(3)) ](); + if (start != end) { + var r:uint = start >> 16, + g:uint = (start >> 8) & 0xff, + b:uint = start & 0xff; + _colors[_colors.length] = new ColorProp(target, p, isFunc, r, (end >> 16) - r, g, ((end >> 8) & 0xff) - g, b, (end & 0xff) - b); + _overwriteProps[_overwriteProps.length] = p; + } + } + + /** @private **/ + override public function _kill(lookup:Object):Boolean { + var i:int = _colors.length; + while (i--) { + if (lookup[_colors[i].p] != null) { + _colors.splice(i, 1); + } + } + return super._kill(lookup); + } + + /** @private **/ + override public function setRatio(v:Number):void { + var i:int = _colors.length, clr:ColorProp, val:Number; + while (--i > -1) { + clr = _colors[i]; + val = (clr.rs + (v * clr.rc)) << 16 | (clr.gs + (v * clr.gc)) << 8 | (clr.bs + (v * clr.bc)); + if (clr.f) { + clr.t[clr.p](val); + } else { + clr.t[clr.p] = val; + } + } + } + + + } +} + +internal class ColorProp { + public var t:Object; + public var p:String; + public var f:Boolean; + public var rs:int; + public var rc:int; + public var gs:int; + public var gc:int; + public var bs:int; + public var bc:int; + + public function ColorProp(t:Object, p:String, f:Boolean, rs:int, rc:int, gs:int, gc:int, bs:int, bc:int) { + this.t = t; + this.p = p; + this.f = f; + this.rs = rs; + this.rc = rc; + this.gs = gs; + this.gc = gc; + this.bs = bs; + this.bc = bc; + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/OnChangeRatioPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/OnChangeRatioPlugin.as new file mode 100644 index 0000000..4060d84 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/OnChangeRatioPlugin.as @@ -0,0 +1,74 @@ +/** + * VERSION: 12.0 + * DATE: 2012-01-14 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; +/** + * [AS3/AS2 only] This plugin allows you to define a callback method that should be called whenever the tween's "ratio" property + * changes which effectively means that the tweening values changed. This is typically only useful in conjunction with + * SteppedEase. Also note that the callback should accept one parameter which will refer to the tween itself. + * This is different than most other callback types, like onComplete and onUpdate which don't pass parameters by default + * unless you use their onCompleteParams and onUpdateParams counterparts. The reason onChangeRatio works this unique way + * is to minimize file size (adding an onChangeRatioParams would require either another plugin or adding kb to the + * main TweenLite class or changing the syntax altogether to onChangeRatio:{func:myFunction, params:[1,2]} which is + * even more inconsistent) and because it is such a niche plugin (typically only used with SteppedEase which is quite + * niche itself). It can be very useful to reuse a single callback method but it must be able to figure out which tween + * changed its ratio and access its target which is why onChangeRatio passes the tween as the parameter. + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.OnChangeRatioPlugin; +TweenPlugin.activate([OnChangeRatioPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 3, {x:500, onChangeRatio:changeHandler, ease:SteppedEase.create(5)}); +function changeHandler(tween:TweenLite):void { + trace("ratio: " + tween.ratio); +} + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class OnChangeRatioPlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + + /** @private **/ + protected var _func:Function; + /** @private **/ + protected var _tween:TweenLite; + /** @private **/ + private var _ratio:Number; + + /** @private **/ + public function OnChangeRatioPlugin() { + super("onChangeRatio"); + _ratio = 0; + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + if (!(value is Function)) { + return false; + } + _func = value as Function; + _tween = tween; + return true; + } + + /** @private **/ + override public function setRatio(v:Number):void { + if (_ratio != v) { + _func(_tween); + _ratio = v; + } + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/OnCompleteRenderPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/OnCompleteRenderPlugin.as new file mode 100644 index 0000000..8020178 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/OnCompleteRenderPlugin.as @@ -0,0 +1,75 @@ +/** + * VERSION: 12.0 + * DATE: 2012-08-27 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; + + import flash.display.DisplayObject; + import flash.events.Event; + +/** + * [AS3 only] Calls a function as soon as the tween completes AND the final frame actually renders to the screen. + * It accomplishes this by waiting until the next ENTER_FRAME event gets dispatched before calling the function. + * (a regular onComplete gets called as soon as the tween sets its final values but before things are rendered graphically to the screen). + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.OnCompleteRenderPlugin; +TweenPlugin.activate([OnCompleteRenderPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, {x:100, onCompleteRender:myFunc}); //tweens horizontal and vertical scale simultaneously + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class OnCompleteRenderPlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; + /** @private **/ + private var _target:DisplayObject; + /** @private **/ + private var _func:Function; + /** @private **/ + private var _tween:TweenLite; + + /** @private **/ + public function OnCompleteRenderPlugin() { + super("onCompleteRender,onCompleteRenderParams"); + TweenLite._plugins.onCompleteRenderParams = OnCompleteRenderPlugin; + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + if (value is Array) { + return true; //assume it's onCompleteRenderParams + } else if (!(target is DisplayObject)) { + trace("Error: onCompleteRender was used on a tween whose target is not a DisplayObject"); + return false; + } + _target = target as DisplayObject; + _func = value; + _tween = tween; + return true; + } + + private function _enterFrameHandler(event:Event):void { + _target.removeEventListener("enterFrame", _enterFrameHandler); + _func.apply(null, _tween.vars.onCompleteRenderParams); + } + + /** @private **/ + override public function setRatio(v:Number):void { + if (v == 1 || v == 0) if (_func != null) if (_tween._time == _tween._duration && _tween.data != "isFromStart") { //if _func is null, this plugin was used to init the onCompleteRenderParams, so just ignore it (we'll reference it in the onCompleteRender instance instead). + _target.addEventListener("enterFrame", _enterFrameHandler, false, 100, true); + } + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/Positions2DPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/Positions2DPlugin.as new file mode 100644 index 0000000..a3e27b7 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/Positions2DPlugin.as @@ -0,0 +1,67 @@ +/** + * VERSION: 12.0 + * DATE: 2012-01-14 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; +/** + * [AS3/AS2 only] This plugin allows you to define an array of Points at which the target should be positioned during the course of + * the tween (in order). So if 4 Points are in the array, the target will be rendered at the first Point's x/y at the + * beginning of the tween, then at around 25% through the tween, it will jump to the 2nd Point's position, etc. until + * it arrives at the last Point's position. The array can be populated with any object that has x and y properties + * (they don't need to be Points - they could be generic Objects). + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.Positions2DPlugin; +TweenPlugin.activate([Positions2DPlugin]); //activation is permanent in the SWF, so this line only needs to be run once + +TweenLite.to(mc, 3, {positions2D:[{x:250, y:50}, {x:500, y:0}]}); + + * + *

    Copyright 2008-2013, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class Positions2DPlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + + /** @private **/ + protected var _target:Object; + /** @private **/ + protected var _positions:Array; + + /** @private **/ + public function Positions2DPlugin() { + super("positions2D,x,y"); + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + if (!(value is Array)) { + return false; + } + _target = target; + _positions = value as Array; + return true; + } + + /** @private **/ + override public function setRatio(v:Number):void { + if (v < 0) { + v = 0; + } else if (v >= 1) { + v = 0.999999999; + } + var position:Object = _positions[ int(_positions.length * v) ]; + _target.x = position.x; + _target.y = position.y; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/QuaternionsPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/QuaternionsPlugin.as new file mode 100644 index 0000000..3351f6d --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/QuaternionsPlugin.as @@ -0,0 +1,151 @@ +/** + * VERSION: 12.0.1 + * DATE: 2013-12-26 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; +/** + * [AS3/AS2 only] Performs SLERP interpolation between 2 Quaternions. Each Quaternion should have x, y, z, and w properties. + * Simply pass in an Object containing properties that correspond to your object's quaternion properties. + * For example, if your myCamera3D has an "orientation" property that's a Quaternion and you want to + * tween its values to x:1, y:0.5, z:0.25, w:0.5, you could do:

    + * + * TweenLite.to(myCamera3D, 2, {quaternions:{orientation:new Quaternion(0, 1, 0, 0)}});

    + * + *

    You can define as many quaternion properties as you want.

    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.QuaternionsPlugin; +TweenPlugin.activate([QuaternionsPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(myCamera3D, 2, {quaternions:{orientation:new Quaternion(0, 1, 0, 0)}}); + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class QuaternionsPlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + + /** @private **/ + protected static const _RAD2DEG:Number = 180 / Math.PI; //precalculate for speed + + /** @private **/ + protected var _target:Object; + /** @private **/ + protected var _quaternions:Array = []; + + /** @private **/ + public function QuaternionsPlugin() { + super("quaternions"); + _overwriteProps.pop(); + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + if (value == null) { + return false; + } + _target = target; + for (var p:String in value) { + _initQuaternion(value[p], p); + } + return true; + } + + /** @private **/ + public function _initQuaternion(end:Object, p:String):void { + var angle:Number, q1:Object, q2:Object, x1:Number, x2:Number, y1:Number, y2:Number, z1:Number, z2:Number, w1:Number, w2:Number, theta:Number; + var isFunc:Boolean = (_target[p] is Function); + q1 = (!isFunc) ? _target[p] : _target[ ((p.indexOf("set") || !("get" + p.substr(3) in _target)) ? p : "get" + p.substr(3)) ](); + q2 = end; + x1 = q1.x; x2 = q2.x; + y1 = q1.y; y2 = q2.y; + z1 = q1.z; z2 = q2.z; + w1 = q1.w; w2 = q2.w; + angle = x1 * x2 + y1 * y2 + z1 * z2 + w1 * w2; + if (angle < 0) { + x1 *= -1; + y1 *= -1; + z1 *= -1; + w1 *= -1; + angle *= -1; + } + if ((angle + 1) < 0.000001) { + y2 = -y1; + x2 = x1; + w2 = -w1; + z2 = z1; + } + theta = Math.acos(angle); + _quaternions[_quaternions.length] = [q1, p, x1, x2, y1, y2, z1, z2, w1, w2, angle, theta, 1 / Math.sin(theta), isFunc]; + _overwriteProps[_overwriteProps.length] = p; + } + + /** @private **/ + override public function _kill(lookup:Object):Boolean { + var i:int = _quaternions.length; + while (--i > -1) { + if (lookup[_quaternions[i][1]] != null) { + _quaternions.splice(i, 1); + } + } + return super._kill(lookup); + } + + /** @private **/ + override public function setRatio(v:Number):void { + var i:int = _quaternions.length, q:Array, scale:Number, invScale:Number; + while (--i > -1) { + q = _quaternions[i]; + if ((q[10] + 1) > 0.000001) { + if ((1 - q[10]) >= 0.000001) { + scale = Math.sin(q[11] * (1 - v)) * q[12]; + invScale = Math.sin(q[11] * v) * q[12]; + } else { + scale = 1 - v; + invScale = v; + } + } else { + scale = Math.sin(Math.PI * (0.5 - v)); + invScale = Math.sin(Math.PI * v); + } + q[0].x = scale * q[2] + invScale * q[3]; + q[0].y = scale * q[4] + invScale * q[5]; + q[0].z = scale * q[6] + invScale * q[7]; + q[0].w = scale * q[8] + invScale * q[9]; + if (q[13]) { + _target[q[1]](q[0]); + } else { + _target[q[1]] = q[0]; + } + } + /* + Array access is faster (though less readable). Here is the key: + 0 - target + 1 = p + 2 = x1 + 3 = x2 + 4 = y1 + 5 = y2 + 6 = z1 + 7 = z2 + 8 = w1 + 9 = w2 + 10 = angle + 11 = theta + 12 = invTheta + 13 = isFunction + */ + } + + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/RemoveTintPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/RemoveTintPlugin.as new file mode 100644 index 0000000..f469d53 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/RemoveTintPlugin.as @@ -0,0 +1,37 @@ +/** + * VERSION: 12.0 + * DATE: 2012-01-14 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.plugins.TintPlugin; +/** + * [AS3/AS2 only] [deprecated in favor of tint:null] Removes the tint of a DisplayObject over time. + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.RemoveTintPlugin; +TweenPlugin.activate([RemoveTintPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, {removeTint:true}); + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class RemoveTintPlugin extends TintPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + + /** @private **/ + public function RemoveTintPlugin() { + super(); + _propName = "removeTint"; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/RoundPropsPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/RoundPropsPlugin.as new file mode 100644 index 0000000..8c308d1 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/RoundPropsPlugin.as @@ -0,0 +1,95 @@ +/** + * VERSION: 12.0 + * DATE: 2012-01-14 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; + import com.greensock.core.PropTween; +/** + * If you'd like the inbetween values in a tween to always get rounded to the nearest integer, use the roundProps + * special property. Just pass in a comma-delimited String containing the property names that you'd like rounded. For example, + * if you're tweening the x, y, and alpha properties of mc and you want to round the x and y values (not alpha) + * every time the tween is rendered, you'd do:

    + * + * TweenMax.to(mc, 2, {x:300, y:200, alpha:0.5, roundProps:"x,y"});

    + * + *

    USAGE:

    + * +import com.greensock.TweenMax; +import com.greensock.plugins.RoundPropsPlugin; +TweenPlugin.activate([RoundPropsPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenMax.to(mc, 2, {x:300, y:200, alpha:0.5, roundProps:"x,y"}); + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class RoundPropsPlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + + /** @private **/ + protected var _tween:TweenLite; + + /** @private **/ + public function RoundPropsPlugin() { + super("roundProps", -1); + _overwriteProps.length = 0; + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + _tween = tween; + return true; + } + + /** @private **/ + public function _onInitAllProps():Boolean { + var rp:Array = (_tween.vars.roundProps is Array) ? _tween.vars.roundProps : _tween.vars.roundProps.split(","), + i:int = rp.length, + lookup:Object = {}, + rpt:PropTween = _tween._propLookup.roundProps, + prop:String, pt:PropTween, next:PropTween; + while (--i > -1) { + lookup[rp[i]] = 1; + } + i = rp.length; + while (--i > -1) { + prop = rp[i]; + pt = _tween._firstPT; + while (pt) { + next = pt._next; //record here, because it may get removed + if (pt.pg) { + pt.t._roundProps(lookup, true); + } else if (pt.n == prop) { + _add(pt.t, prop, pt.s, pt.c); + //remove from linked list + if (next) { + next._prev = pt._prev; + } + if (pt._prev) { + pt._prev._next = next; + } else if (_tween._firstPT == pt) { + _tween._firstPT = next; + } + pt._next = pt._prev = null; + _tween._propLookup[prop] = rpt; + } + pt = next; + } + } + return false; + } + + /** @private **/ + public function _add(target:Object, p:String, s:Number, c:Number):void { + _addTween(target, p, s, s + c, p, true); + _overwriteProps[_overwriteProps.length] = p; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/ScalePlugin.as b/FairyGUI-as3/src/com/greensock/plugins/ScalePlugin.as new file mode 100644 index 0000000..9d1c3d9 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/ScalePlugin.as @@ -0,0 +1,46 @@ +/** + * VERSION: 12.0 + * DATE: 2012-03-29 + * AS3 + * UPDATES AND DOCS AT: http://www.TweenMax.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; +/** + * [AS3/AS2 only] ScalePlugin combines scaleX and scaleY into one "scale" property.

    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.ScalePlugin; +TweenPlugin.activate([ScalePlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, {scale:2}); //tweens horizontal and vertical scale simultaneously + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class ScalePlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; + + /** @private **/ + public function ScalePlugin() { + super("scale,scaleX,scaleY,width,height"); + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + if (!target.hasOwnProperty("scaleX")) { + return false; + } + _addTween(target, "scaleX", target.scaleX, value, "scaleX"); + _addTween(target, "scaleY", target.scaleY, value, "scaleY"); + return true; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/ScrollRectPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/ScrollRectPlugin.as new file mode 100644 index 0000000..4b8aa2c --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/ScrollRectPlugin.as @@ -0,0 +1,80 @@ +/** + * VERSION: 12.0 + * DATE: 2012-01-14 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import flash.display.DisplayObject; + import flash.geom.Rectangle; + import com.greensock.TweenLite; +/** + * [AS3/AS2 only] Tweens the scrollRect property of a DisplayObject. You can define any (or all) of the following + * properties: + * + *
      + *
    • x : Number
    • + *
    • y : Number
    • + *
    • width : Number
    • + *
    • height : Number
    • + *
    • top : Number
    • + *
    • bottom : Number
    • + *
    • left : Number
    • + *
    • right : Number
    • + *
    + *

    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.ScrollRectPlugin; +TweenPlugin.activate([ScrollRectPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, {scrollRect:{x:50, y:300, width:100, height:100}}); + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class ScrollRectPlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + + /** @private **/ + protected var _target:DisplayObject; + /** @private **/ + protected var _rect:Rectangle; + + /** @private **/ + public function ScrollRectPlugin() { + super("scrollRect"); + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + if (!(target is DisplayObject)) { + return false; + } + _target = target as DisplayObject; + if (_target.scrollRect != null) { + _rect = _target.scrollRect; + } else { + var r:Rectangle = _target.getBounds(_target); + _rect = new Rectangle(0, 0, r.width + r.x, r.height + r.y); + } + for (var p:String in value) { + _addTween(_rect, p, _rect[p], value[p], "scrollRect"); + } + return true; + } + + /** @private **/ + override public function setRatio(v:Number):void { + super.setRatio(v); + _target.scrollRect = _rect; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/SetActualSizePlugin.as b/FairyGUI-as3/src/com/greensock/plugins/SetActualSizePlugin.as new file mode 100644 index 0000000..c750a01 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/SetActualSizePlugin.as @@ -0,0 +1,90 @@ +/** + * VERSION: 12.0 + * DATE: 2012-01-14 + * A3S + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.*; +/** + * [AS3 only] Some components require resizing with setActualSize() instead of standard tweens of width/height in + * order to scale properly. The SetActualSizePlugin accommodates this easily. You can define the width, + * height, or both.

    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.SetActualSizePlugin; +TweenPlugin.activate([SetActualSizePlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(myComponent, 1, {setActualSize:{width:200, height:30}}); + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class SetActualSizePlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + + /** @private **/ + public var width:Number; + /** @private **/ + public var height:Number; + + /** @private **/ + protected var _target:Object; + /** @private **/ + protected var _setWidth:Boolean; + /** @private **/ + protected var _setHeight:Boolean; + /** @private **/ + protected var _hasSetSize:Boolean; + + /** @private **/ + public function SetActualSizePlugin() { + super("setActualSize,setSize,width,height,scaleX,scaleY"); + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + _target = target; + _hasSetSize = Boolean("setActualSize" in _target); + if ("width" in value && _target.width != value.width) { + _addTween((_hasSetSize) ? this : _target, "width", _target.width, value.width, "width", true); + _setWidth = _hasSetSize; + } + if ("height" in value && _target.height != value.height) { + _addTween((_hasSetSize) ? this : _target, "height", _target.height, value.height, "height", true); + _setHeight = _hasSetSize; + } + if (_firstPT == null) { //protects against occassions when the tween's start and end values are the same. + _hasSetSize = false; + } + return true; + } + + /** @private **/ + override public function _kill(lookup:Object):Boolean { + if ("width" in lookup || "scaleX" in lookup) { + _setWidth = false; + } + if ("height" in lookup || "scaleY" in lookup) { + _setHeight = false; + } + return super._kill(lookup); + } + + /** @private **/ + override public function setRatio(v:Number):void { + super.setRatio(v); + if (_hasSetSize) { + _target.setActualSize((_setWidth) ? this.width : _target.width, (_setHeight) ? this.height : _target.height); + } + } + + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/SetSizePlugin.as b/FairyGUI-as3/src/com/greensock/plugins/SetSizePlugin.as new file mode 100644 index 0000000..7ce13fd --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/SetSizePlugin.as @@ -0,0 +1,90 @@ +/** + * VERSION: 12.0 + * DATE: 2012-01-14 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.*; +/** + * [AS3/AS2 only] Some components require resizing with setSize() instead of standard tweens of width/height in + * order to scale properly. The SetSizePlugin accommodates this easily. You can define the width, + * height, or both.

    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.SetSizePlugin; +TweenPlugin.activate([SetSizePlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(myComponent, 1, {setSize:{width:200, height:30}}); + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class SetSizePlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + + /** @private **/ + public var width:Number; + /** @private **/ + public var height:Number; + + /** @private **/ + protected var _target:Object; + /** @private **/ + protected var _setWidth:Boolean; + /** @private **/ + protected var _setHeight:Boolean; + /** @private **/ + protected var _hasSetSize:Boolean; + + /** @private **/ + public function SetSizePlugin() { + super("setSize,setActualSize,width,height,scaleX,scaleY"); + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + _target = target; + _hasSetSize = Boolean("setSize" in _target); + if ("width" in value && _target.width != value.width) { + _addTween((_hasSetSize) ? this : _target, "width", _target.width, value.width, "width", true); + _setWidth = _hasSetSize; + } + if ("height" in value && _target.height != value.height) { + _addTween((_hasSetSize) ? this : _target, "height", _target.height, value.height, "height", true); + _setHeight = _hasSetSize; + } + if (_firstPT == null) { + _hasSetSize = false; //protects from situations where the start and end values are the same, thus we're not really tweening anything. + } + return true; + } + + + /** @private **/ + override public function _kill(lookup:Object):Boolean { + if ("setSize" in lookup || "width" in lookup || "scaleX" in lookup) { + _setWidth = false; + } + if ("setSize" in lookup || "height" in lookup || "scaleY" in lookup) { + _setHeight = false; + } + return super._kill(lookup); + } + + /** @private **/ + override public function setRatio(v:Number):void { + super.setRatio(v); + if (_hasSetSize) { + _target.setSize((_setWidth) ? this.width : _target.width, (_setHeight) ? this.height : _target.height); + } + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/ShortRotationPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/ShortRotationPlugin.as new file mode 100644 index 0000000..716e8f5 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/ShortRotationPlugin.as @@ -0,0 +1,78 @@ +/** + * VERSION: 12.0 + * DATE: 2012-02-14 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; +/** + * [AS3/AS2 only] To tween any rotation property of the target object in the shortest direction, use "shortRotation" + * For example, if myObject.rotation is currently 170 degrees and you want to tween it to -170 degrees, + * a normal rotation tween would travel a total of 340 degrees in the counter-clockwise direction, + * but if you use shortRotation, it would travel 20 degrees in the clockwise direction instead. You + * can define any number of rotation properties in the shortRotation object which makes 3D tweening + * easier, like:

    + * + * TweenMax.to(mc, 2, {shortRotation:{rotationX:-170, rotationY:35, rotationZ:200}});

    + * + *

    Normally shortRotation is defined in degrees, but if you prefer to have it work with radians instead, + * simply set the useRadians special property to true like:

    + * + * TweenMax.to(myCustomObject, 2, {shortRotation:{customRotationProperty:Math.PI, useRadians:true}});

    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.ShortRotationPlugin; +TweenPlugin.activate([ShortRotationPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, {shortRotation:{rotation:-170}}); + +//or for a 3D tween with multiple rotation values... +TweenLite.to(mc, 1, {shortRotation:{rotationX:-170, rotationY:35, rotationZ:10}}); + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class ShortRotationPlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + + /** @private **/ + public function ShortRotationPlugin() { + super("shortRotation"); + _overwriteProps.pop(); + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + if (typeof(value) == "number") { + return false; + } + var useRadians:Boolean = Boolean(value.useRadians == true), start:Number; + for (var p:String in value) { + if (p != "useRadians") { + start = (target[p] is Function) ? target[ ((p.indexOf("set") || !("get" + p.substr(3) in target)) ? p : "get" + p.substr(3)) ]() : target[p]; + _initRotation(target, p, start, (typeof(value[p]) == "number") ? Number(value[p]) : start + Number(value[p].split("=").join("")), useRadians); + } + } + return true; + } + + /** @private **/ + public function _initRotation(target:Object, p:String, start:Number, end:Number, useRadians:Boolean=false):void { + var cap:Number = useRadians ? Math.PI * 2 : 360, + dif:Number = (end - start) % cap; + if (dif != dif % (cap / 2)) { + dif = (dif < 0) ? dif + cap : dif - cap; + } + _addTween(target, p, start, start + dif, p); + _overwriteProps[_overwriteProps.length] = p; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/SoundTransformPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/SoundTransformPlugin.as new file mode 100644 index 0000000..258be2f --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/SoundTransformPlugin.as @@ -0,0 +1,61 @@ +/** + * VERSION: 12.0 + * DATE: 2012-01-14 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; + import flash.media.SoundTransform; +/** + * [AS3 only] Tweens properties of an object's soundTransform property (like the volume, pan, leftToRight, etc. of a MovieClip/SoundChannel/NetStream).

    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.SoundTransformPlugin; +TweenPlugin.activate([SoundTransformPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, {soundTransform:{volume:0.2, pan:0.5}}); + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class SoundTransformPlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + + /** @private **/ + protected var _target:Object; + /** @private **/ + protected var _st:SoundTransform; + + /** @private **/ + public function SoundTransformPlugin() { + super("soundTransform,volume"); + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + if (!target.hasOwnProperty("soundTransform")) { + return false; + } + _target = target; + _st = _target.soundTransform; + for (var p:String in value) { + _addTween(_st, p, _st[p], value[p], p); + } + return true; + } + + /** @private **/ + override public function setRatio(v:Number):void { + super.setRatio(v); + _target.soundTransform = _st; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/StageQualityPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/StageQualityPlugin.as new file mode 100644 index 0000000..6eccdee --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/StageQualityPlugin.as @@ -0,0 +1,71 @@ +/** + * VERSION: 12.0 + * DATE: 2012-01-14 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; + import flash.display.Stage; + import flash.display.StageQuality; +/** + * [AS3 only] Sets the stage's quality to a particular value during a tween and another value after + * the tween which can be useful for improving rendering performance in the Flash Player while things are animating.

    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.StageQualityPlugin; +import flash.display.StageQuality; +TweenPlugin.activate([StageQualityPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, {x:100, stageQuality:{stage:this.stage, during:StageQuality.LOW, after:StageQuality.HIGH}}); + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class StageQualityPlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + + /** @private **/ + protected var _stage:Stage; + /** @private **/ + protected var _during:String; + /** @private **/ + protected var _after:String; + /** @private **/ + protected var _tween:TweenLite; + + /** @private **/ + public function StageQualityPlugin() { + super("stageQuality"); + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + if (!(value.stage is Stage)) { + trace("You must define a 'stage' property for the stageQuality object in your tween."); + return false; + } + _stage = value.stage as Stage; + _tween = tween; + _during = ("during" in value) ? value.during : StageQuality.MEDIUM; + _after = ("after" in value) ? value.after : _stage.quality; + return true; + } + + /** @private **/ + override public function setRatio(v:Number):void { + if ((v == 1 && _tween._duration == _tween._time && _tween.data != "isFromStart") || (v == 0 && _tween._time == 0)) { //a changeFactor of 1 doesn't necessarily mean the tween is done - if the ease is Elastic.easeOut or Back.easeOut for example, they could hit 1 mid-tween. The reason we check to see if cachedTime is 0 is for from() tweens + _stage.quality = _after; + } else if (_stage.quality != _during) { + _stage.quality = _during; + } + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/TintPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/TintPlugin.as new file mode 100644 index 0000000..6199abd --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/TintPlugin.as @@ -0,0 +1,89 @@ +/** + * VERSION: 12.01 + * DATE: 2012-07-28 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.*; + import com.greensock.core.*; + + import flash.display.*; + import flash.geom.ColorTransform; + import flash.geom.Transform; +/** + * [AS3/AS2 only] To change a DisplayObject's tint/color, set this to the hex value of the tint you'd like + * to end up at (or begin at if you're using TweenMax.from()). An example hex value would be 0xFF0000. + * + *

    To remove a tint completely, set the tint to null

    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.TintPlugin; +TweenPlugin.activate([TintPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, {tint:0xFF0000}); + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class TintPlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + /** @private **/ + protected static var _props:Array = ["redMultiplier","greenMultiplier","blueMultiplier","alphaMultiplier","redOffset","greenOffset","blueOffset","alphaOffset"]; + + /** @private **/ + protected var _transform:Transform; + + /** @private **/ + public function TintPlugin() { + super("tint,colorTransform,removeTint"); + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + if (!(target is DisplayObject)) { + return false; + } + var end:ColorTransform = new ColorTransform(); + if (value != null && tween.vars.removeTint != true) { + end.color = uint(value); + } + _transform = DisplayObject(target).transform; + var ct:ColorTransform = _transform.colorTransform; + end.alphaMultiplier = ct.alphaMultiplier; + end.alphaOffset = ct.alphaOffset; + _init(ct, end); + return true; + } + + /** @private **/ + public function _init(start:ColorTransform, end:ColorTransform):void { + var i:int = _props.length, + p:String; + while (--i > -1) { + p = _props[i]; + if (start[p] != end[p]) { + _addTween(start, p, start[p], end[p], "tint"); + } + } + } + + /** @private **/ + override public function setRatio(v:Number):void { + var ct:ColorTransform = _transform.colorTransform, //don't just use _ct because if alpha changes are made separately, they won't get applied properly. + pt:PropTween = _firstPT; + while (pt) { + ct[pt.p] = pt.c * v + pt.s; + pt = pt._next; + } + _transform.colorTransform = ct; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/TransformMatrixPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/TransformMatrixPlugin.as new file mode 100644 index 0000000..8b7b2ef --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/TransformMatrixPlugin.as @@ -0,0 +1,240 @@ +/** + * VERSION: 12.0.1 + * DATE: 2013-02-09 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; + import flash.geom.Matrix; + import flash.geom.Transform; +/** + * [AS3/AS2 only] TransformMatrixPlugin allows you to tween a DisplayObject's transform.matrix values directly + * (a, b, c, d, tx, and ty) or use common properties like x, y, scaleX, scaleY, + * skewX, skewY, rotation and even shortRotation. + * To skew without adjusting scale visually, use skewX2 and skewY2 instead of skewX and skewY. + * + *

    transformMatrix tween will affect all of the DisplayObject's transform properties, so do not use + * it in conjunction with regular x/y/scaleX/scaleY/rotation tweens concurrently.

    + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.~~; +TweenPlugin.activate([TransformMatrixPlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, {transformMatrix:{x:50, y:300, scaleX:2, scaleY:2}}); + +//-OR- + +TweenLite.to(mc, 1, {transformMatrix:{tx:50, ty:300, a:2, d:2}}); + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class TransformMatrixPlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + /** @private **/ + private static const _DEG2RAD:Number = Math.PI / 180; + + /** @private **/ + protected var _transform:Transform; + /** @private **/ + protected var _matrix:Matrix; + /** @private **/ + protected var _txStart:Number; + /** @private **/ + protected var _txChange:Number; + /** @private **/ + protected var _tyStart:Number; + /** @private **/ + protected var _tyChange:Number; + /** @private **/ + protected var _aStart:Number; + /** @private **/ + protected var _aChange:Number; + /** @private **/ + protected var _bStart:Number; + /** @private **/ + protected var _bChange:Number; + /** @private **/ + protected var _cStart:Number; + /** @private **/ + protected var _cChange:Number; + /** @private **/ + protected var _dStart:Number; + /** @private **/ + protected var _dChange:Number; + /** @private **/ + protected var _angleChange:Number = 0; + + /** @private **/ + public function TransformMatrixPlugin() { + super("transformMatrix,x,y,scaleX,scaleY,rotation,width,height,transformAroundPoint,transformAroundCenter"); + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + _transform = target.transform as Transform; + _matrix = _transform.matrix; + var matrix:Matrix = _matrix.clone(); + _txStart = matrix.tx; + _tyStart = matrix.ty; + _aStart = matrix.a; + _bStart = matrix.b; + _cStart = matrix.c; + _dStart = matrix.d; + + if ("x" in value) { + _txChange = (typeof(value.x) == "number") ? value.x - _txStart : Number(value.x.split("=").join("")); + } else if ("tx" in value) { + _txChange = value.tx - _txStart; + } else { + _txChange = 0; + } + if ("y" in value) { + _tyChange = (typeof(value.y) == "number") ? value.y - _tyStart : Number(value.y.split("=").join("")); + } else if ("ty" in value) { + _tyChange = value.ty - _tyStart; + } else { + _tyChange = 0; + } + _aChange = ("a" in value) ? value.a - _aStart : 0; + _bChange = ("b" in value) ? value.b - _bStart : 0; + _cChange = ("c" in value) ? value.c - _cStart : 0; + _dChange = ("d" in value) ? value.d - _dStart : 0; + + if (("rotation" in value) || ("shortRotation" in value) || ("scale" in value && !(value is Matrix)) || ("scaleX" in value) || ("scaleY" in value) || ("skewX" in value) || ("skewY" in value) || ("skewX2" in value) || ("skewY2" in value)) { + var ratioX:Number, ratioY:Number; + var scaleX:Number = Math.sqrt(matrix.a * matrix.a + matrix.b * matrix.b); //Bugs in the Flex framework prevent DisplayObject.scaleX from working consistently, so we must determine it using the matrix. + if (scaleX == 0) { + matrix.a = scaleX = 0.0001; + } else if (matrix.a < 0 && matrix.d > 0) { + scaleX = -scaleX; + } + var scaleY:Number = Math.sqrt(matrix.c * matrix.c + matrix.d * matrix.d); //Bugs in the Flex framework prevent DisplayObject.scaleY from working consistently, so we must determine it using the matrix. + if (scaleY == 0) { + matrix.d = scaleY = 0.0001; + } else if (matrix.d < 0 && matrix.a > 0) { + scaleY = -scaleY; + } + var angle:Number = Math.atan2(matrix.b, matrix.a); //Bugs in the Flex framework prevent DisplayObject.rotation from working consistently, so we must determine it using the matrix + if (matrix.a < 0 && matrix.d >= 0) { + angle += (angle <= 0) ? Math.PI : -Math.PI; + } + var skewX:Number = Math.atan2(-_matrix.c, _matrix.d) - angle; + var finalAngle:Number = angle; + if ("shortRotation" in value) { + var dif:Number = ((value.shortRotation * _DEG2RAD) - angle) % (Math.PI * 2); + if (dif > Math.PI) { + dif -= Math.PI * 2; + } else if (dif < -Math.PI) { + dif += Math.PI * 2; + } + finalAngle += dif; + } else if ("rotation" in value) { + finalAngle = (typeof(value.rotation) == "number") ? value.rotation * _DEG2RAD : Number(value.rotation.split("=").join("")) * _DEG2RAD + angle; + } + + var finalSkewX:Number = ("skewX" in value) ? (typeof(value.skewX) == "number") ? Number(value.skewX) * _DEG2RAD : Number(value.skewX.split("=").join("")) * _DEG2RAD + skewX : 0; + + if ("skewY" in value) { //skewY is just a combination of rotation and skewX + var skewY:Number = (typeof(value.skewY) == "number") ? value.skewY * _DEG2RAD : Number(value.skewY.split("=").join("")) * _DEG2RAD - skewX; + finalAngle += skewY + skewX; + finalSkewX -= skewY; + } + + if (finalAngle != angle) { + if (("rotation" in value) || ("shortRotation" in value)) { + _angleChange = finalAngle - angle; + finalAngle = angle; //to correctly affect the skewX calculations below + } else { + matrix.rotate(finalAngle - angle); + } + } + + if ("scale" in value) { + ratioX = Number(value.scale) / scaleX; + ratioY = Number(value.scale) / scaleY; + if (typeof(value.scale) != "number") { //relative value + ratioX += 1; + ratioY += 1; + } + } else { + if ("scaleX" in value) { + ratioX = Number(value.scaleX) / scaleX; + if (typeof(value.scaleX) != "number") { //relative value + ratioX += 1; + } + } + if ("scaleY" in value) { + ratioY = Number(value.scaleY) / scaleY; + if (typeof(value.scaleY) != "number") { //relative value + ratioY += 1; + } + } + } + + if (finalSkewX != skewX) { + matrix.c = -scaleY * Math.sin(finalSkewX + finalAngle); + matrix.d = scaleY * Math.cos(finalSkewX + finalAngle); + } + + if ("skewX2" in value) { + if (typeof(value.skewX2) == "number") { + matrix.c = Math.tan(0 - (value.skewX2 * _DEG2RAD)); + } else { + matrix.c += Math.tan(0 - (Number(value.skewX2) * _DEG2RAD)); + } + } + if ("skewY2" in value) { + if (typeof(value.skewY2) == "number") { + matrix.b = Math.tan(value.skewY2 * _DEG2RAD); + } else { + matrix.b += Math.tan(Number(value.skewY2) * _DEG2RAD); + } + } + + if (ratioX || ratioX == 0) { //faster than isNaN() + matrix.a *= ratioX; + matrix.b *= ratioX; + } + if (ratioY || ratioY == 0) { + matrix.c *= ratioY; + matrix.d *= ratioY; + } + _aChange = matrix.a - _aStart; + _bChange = matrix.b - _bStart; + _cChange = matrix.c - _cStart; + _dChange = matrix.d - _dStart; + } + return true; + } + + /** @private **/ + override public function setRatio(v:Number):void { + _matrix.a = _aStart + (v * _aChange); + _matrix.b = _bStart + (v * _bChange); + _matrix.c = _cStart + (v * _cChange); + _matrix.d = _dStart + (v * _dChange); + if (_angleChange) { + //about 3-4 times faster than _matrix.rotate(_angleChange * n); + var cos:Number = Math.cos(_angleChange * v), + sin:Number = Math.sin(_angleChange * v), + a:Number = _matrix.a, + c:Number = _matrix.c; + _matrix.a = a * cos - _matrix.b * sin; + _matrix.b = a * sin + _matrix.b * cos; + _matrix.c = c * cos - _matrix.d * sin; + _matrix.d = c * sin + _matrix.d * cos; + } + _matrix.tx = _txStart + (v * _txChange); + _matrix.ty = _tyStart + (v * _tyChange); + _transform.matrix = _matrix; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/TweenPlugin.as b/FairyGUI-as3/src/com/greensock/plugins/TweenPlugin.as new file mode 100644 index 0000000..66d4e51 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/TweenPlugin.as @@ -0,0 +1,336 @@ +/** + * VERSION: 12.1.5 + * DATE: 2013-07-21 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; + import com.greensock.core.PropTween; +/** + * TweenPlugin is the base class for all TweenLite and TweenMax plugins, but generally isn't used directly. + * + *

    USAGE:

    + * + *

    To create your own plugin, extend TweenPlugin and override whichever methods you need. Typically, + * you only need to override _onInitTween() (which is called when the tween renders for + * the first time) and setRatio() (which is called on every update and passes a progress + * parameter which is typically a value between 0 and 1, but changes according to the ease). I'd recommend + * looking at a simple plugin like ScalePlugin and using it as a template of sorts. There are a few + * key concepts to keep in mind:

    + * + *
      + *
    1. Pass the TweenPlugin constructor a comma-delimited list of property names that the plugin should + * overwrite, the first of which should be the property name that the plugin intercepts. For example, + * the ScalePlugin handles any tweens of "scale" and it also overwrites other concurrent + * tweens that are handling the "scale", "scaleX", and/or "scaleY" properties of the target. Therefore, + * in ScalePlugin's constructor, we'd call super("scale,scaleX,scaleY"). The first name + * in the list must be unique - two plugins cannot handle the same primary property.
    2. + * + *
    3. When a tween that uses your plugin initializes its tween values (normally when it renders the + * first time), a new instance of your plugin will be created and the _onInitTween() method + * is called. That's where you'll want to record any initial values and prepare for the tween. + * _onInitTween() should return a Boolean value that essentially indicates whether + * or not the plugin initted successfully. If you return false, TweenLite/Max will just use a + * normal tween for the value, ignoring the plugin for that particular tween. For example, + * maybe your tween only works with MovieClips, so if the target isn't a MovieClip you could + * return false
    4. + * + *
    5. The setRatio() method will be called on every frame during the course of the tween + * and it will be passed a single parameter that's a multiplier (typically between 0 and 1, according + * to the ease) describing the total amount of change from the beginning of the tween (0). It will be + * zero at the beginning of the tween and 1 at the end, but inbetween it could be any value based on the + * ease applied (for example, an ElasticOut ease would cause the value to shoot past 1 and + * back again before the end of the tween). So if the tween uses the Linear.ease, when it's + * halfway finished, the setRatio() will receive a parameter of 0.5.
    6. + * + *
    7. The _overwriteProps is an array that should contain the properties that your + * plugin should overwrite in "auto" mode. For example, the autoAlpha + * plugin controls the "visible" and "alpha" properties of an object, + * so if another tween is created that controls the alpha of the target object, + * your plugin's _kill() method will be called which should handle killing the + * "alpha" part of the tween. It is your responsibility to populate (and depopulate) + * the _overwriteProps Array. Failure to do so properly can cause odd overwriting + * behavior.
    8. + * + *
    9. There's a _roundProps() method that gets called by the RoundPropsPlugin if the + * user requests that certain properties get rounded to the nearest integer. If you use + * _addTween() method to add property tweens, rounding will happen automatically + * (if necessary), but if you don't use _addTween() and prefer to manually calculate + * tween values in your setRatio() method, just remember to override the _roundProps() + * method if that makes sense in your plugin (some plugins wouldn't need to accommodate rounding, like color + * plugins).
    10. + * + *
    11. If you need to run a function when the tween gets disabled, add an _onDisable() method + * (named exactly that) to your plugin. It will automatically be called when the tween gets disabled (typically + * when it finishes and is removed from its parent timeline). Same for _onEnable() if you + * need to run code when a tween is enabled. These methods should return a Boolean value indicating + * whether or not they changed any properties on the target becaues if so (true), it helps + * notify any initting tweens of the same target to re-init. It is very rare that an _onDisable() + * or _onEnable() method is necessary, but it can be useful for things like MotionBlurPlugin + * which must do some very advanced things, hiding the target, changing its alpha to almost 0, etc. only + * while the tween occurs. If another alpha tween of that same target overwrites an existing motionBlur + * of the same target, the alpha would be at the wrong value normally, but the if the _onDisable() + * returns true, it would force the new tween to re-init AFTER the alpha was fixed inside + * the _onDisable(). Again, this is VERY rare.
    12. + * + *
    13. Please use the same naming convention as the rest of the plugins, like MySpecialPropertyNamePlugin.
    14. + * + *
    15. If you are handling more than one property in your plugin (like RoundPropsPlugin or ShortRotationPlugin), + * make sure you override the _kill() method which will be passed a vars parameter + * with properties that need to be killed (typically for overwriting).
    16. + * + *
    + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class TweenPlugin { + /** @private **/ + public static const version:String = "12.1.5"; + + /** @private If the API/Framework for plugins changes in the future, this number helps determine compatibility **/ + public static const API:Number = 2; + + /** @private Name of the special property that the plugin should intercept/handle **/ + public var _propName:String; + + /** + * @private + * Array containing the names of the properties that should be overwritten in "auto" mode. + * Typically the only value in this Array is the _propName, but there are cases when it may + * be different. For example, a bezier tween's propName is "bezier" but it can manage many different properties + * like x, y, etc. depending on what's passed in to the tween. + */ + public var _overwriteProps:Array; + + /** @private Priority level in the render queue **/ + public var _priority:int = 0; + + /** @private First property tween in the linked list (if any) **/ + protected var _firstPT:PropTween; + + /** + * @private + * Constructor + * + * @param props A comma-delimited list of properties that will populate the _overwriteProps array, the first of which will be the _propName (the special property that the plugin handles). For example, the ScalePlugin would be "scale,scaleX,scaleY". + * @param priority The priority in the rendering queue (lower priorty renders after higher priority). For example, a motionBlur might need to wait until all other properties like x and y have tweened before it does its magic of figuring out how far things have moved, etc. so motionBlur's priority could be low (like -10). Standard property tweens are always 0. To render before other things, use a high priority. + */ + public function TweenPlugin(props:String="", priority:int=0) { + _overwriteProps = props.split(","); + _propName = _overwriteProps[0]; + _priority = priority || 0; + } + + /** + * @private + * Gets called when any tween of the special property begins. Record any initial values + * that will be used in the setRatio() method. + * + * @param target target object that should be affected. This is the same as the tween's target unless the tween's target is an array in which case a different plugin instance is created for each object in the array, so this target would be the object in the array. + * @param value The value that is passed in through the special property in the tween. For example, if this is the ScalePlugin and the tween is TweenLite.to(mc, 1, {scale:2.5}), the value would be 2.5. + * @param tween The TweenLite or TweenMax instance using this plugin. + * @return If the initialization failed, it returns false. Otherwise true. It may fail if, for example, the plugin requires that the target be a DisplayObject or has some other unmet criteria in which case the plugin is skipped and a normal property tween is used inside TweenLite/Max + */ + public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + return false; + } + + /** + * @private + * Offers a simple way to add tweening values to the plugin. You don't need to use this, + * but it is convenient because the tweens get updated in the setRatio() method which also + * handles rounding. _kill() nicely integrates with most tweens added via _addTween() + * as well, but if you prefer to handle this manually in your plugin, you're welcome to. + * + * @param target Target object whose property you'd like to tween. (i.e. myClip) + * @param propName The property name that should be tweened. (i.e. "x") + * @param start Starting value + * @param end End value (can be either numeric or a string value. If it's a string, it will be interpreted as relative to the starting value) + * @param overwriteProp Name of the property that should be associated with the tween for overwriting purposes. Normally, it's the same as propName, but not always. For example, you may tween the "setRatio" property of a VisiblePlugin, but the property that it's actually controling in the end is "visible", so if a new overlapping tween of the target object is created that affects its "visible" property, this allows the plugin to kill the appropriate tween(s) when _kill() is called. + * @param round If true, the property should be rounded to the closest integer whenever updated + * @return If a PropTween is created (which means a tween was required between the provided start and end values), that PropTween is returned. Otherwise, null is returned. + */ + protected function _addTween(target:Object, propName:String, start:Number, end:*, overwriteProp:String=null, round:Boolean=false):PropTween { + var c:Number = (end == null) ? 0 : (typeof(end) === "number" || end.charAt(1) !== "=") ? Number(end) - start : int(end.charAt(0) + "1") * Number(end.substr(2)); + if (c !== 0) { + _firstPT = new PropTween(target, propName, start, c, overwriteProp || propName, false, _firstPT); + _firstPT.r = round; + return _firstPT; + } + return null; + } + + /** + * @private + * In most cases, your custom updating code should go here. The setRatio() value describes the + * amount of change based on how far along the tween is and the ease applied. It will be zero at the beginning + * of the tween and 1 at the end, but inbetween it could be any value based on the ease applied (for example, + * an ElasticOut tween would cause the value to shoot past 1 and back again before the end of the tween) + * This value gets updated on every frame during the course of the tween. + * + * @param v Multiplier describing the overall amount of change that should be applied since the start. It will be zero at the beginning of the tween and 1 at the end, but inbetween it could be any value based on the ease applied (for example, an ElasticOut tween would cause the value to shoot past 1 and back again before the end of the tween) + */ + public function setRatio(v:Number):void { + var pt:PropTween = _firstPT, val:Number; + while (pt) { + val = pt.c * v + pt.s; + if (pt.r) { + val = (val + ((val > 0) ? 0.5 : -0.5)) | 0; //about 4x faster than Math.round() + } + if (pt.f) { + pt.t[pt.p](val); + } else { + pt.t[pt.p] = val; + } + pt = pt._next; + } + } + + /** + * @private + * Used internally by RoundPropsPlugin which passes _round() lookup object with properties + * that should be rounded to the nearest integer during the tween. For example: + * + *

    + * TweenMax.to(mc, 2, {x:100, y:100, myPlugin:0.5, roundProps:"x,y"}); + *

    + * + *

    The above tween will result in RoundPropsPlugin passing the a {x:1,y:1}" object to the + * _roundProps() method of the plugin that's managing the myPlugin special property + * (should be named MyPluginPlugin by naming convention). Some plugins manage more than one property, like + * BezierPlugin, ShortRotationPlugin, etc. so it's possible that only certain properties should be rounded + * inside the plugin. If you're building a plugin that should accommodate rounding and you're not using + * the standard _addTween() to handle the property tweens, you should override this method and + * run your own logic.

    + * + * @param props A lookup object with property names that should be rounded. + */ + public function _roundProps(lookup:Object, value:Boolean=true):void { + var pt:PropTween = _firstPT; + while (pt) { + if ((_propName in lookup) || (pt.n != null && pt.n.split(_propName + "_").join("") in lookup)) { //some properties that are very plugin-specific add a prefix named after the _propName plus an underscore, so we need to ignore that extra stuff here. + pt.r = value; + } + pt = pt._next; + } + } + + /** + * @private + * Gets called on plugins that have multiple overwritable properties in "auto" mode. + * Basically, it instructs the plugin to overwrite certain properties. For example, + * if a bezier tween is affecting x, y, and width, and then a new tween is created while the + * bezier tween is in progress, and the new tween affects the "x" property, we need a way + * to kill just the "x" part of the bezier tween. + * + * @param lookup An object containing properties that should be overwritten. We don't pass in an Array because looking up properties on the object is usually faster because it gives us random access. So to overwrite the "x" and "y" properties, a {x:true, y:true} object would be passed in. + */ + public function _kill(lookup:Object):Boolean { + if (_propName in lookup) { + _overwriteProps = []; + } else { + var i:int = _overwriteProps.length; + while (--i > -1) { + if (_overwriteProps[i] in lookup) { + _overwriteProps.splice(i, 1); + } + } + } + var pt:PropTween = _firstPT; + while (pt) { + if (pt.n in lookup) { + if (pt._next) { + pt._next._prev = pt._prev; + } + if (pt._prev) { + pt._prev._next = pt._next; + pt._prev = null; + } else if (_firstPT == pt) { + _firstPT = pt._next; + } + } + pt = pt._next; + } + return false; + } + + /** + * @private + * This method is called inside TweenLite after significant events occur, like when a tween + * has finished initializing, and (if necessary) when its "enabled" state changes. + * For example, the MotionBlurPlugin must run after normal x/y/alpha PropTweens are rendered, + * so the "_onInitAllProps" event reorders the PropTweens linked list in order of priority. + * Some plugins need to do things when a tween completes or when it gets disabled. Again, this + * method is only for internal use inside TweenLite. It is separated into + * this static method in order to minimize file size inside TweenLite. + * + * @param type The type of event "_onInitAllProps", "_onEnable", or "_onDisable" + * @param tween The TweenLite/Max instance to which the event pertains + * @return A Boolean value indicating whether or not properties of the tween's target may have changed as a result of the event + */ + private static function _onTweenEvent(type:String, tween:TweenLite):Boolean { + var pt:PropTween = tween._firstPT, changed:Boolean; + if (type == "_onInitAllProps") { + //sorts the PropTween linked list in order of priority because some plugins need to render earlier/later than others, like MotionBlurPlugin applies its effects after all x/y/alpha tweens have rendered on each frame. + var pt2:PropTween, first:PropTween, last:PropTween, next:PropTween; + while (pt) { + next = pt._next; + pt2 = first; + while (pt2 && pt2.pr > pt.pr) { + pt2 = pt2._next; + } + if ((pt._prev = pt2 ? pt2._prev : last)) { + pt._prev._next = pt; + } else { + first = pt; + } + if ((pt._next = pt2)) { + pt2._prev = pt; + } else { + last = pt; + } + pt = next; + } + pt = tween._firstPT = first; + } + while (pt) { + if (pt.pg) if (type in pt.t) if (pt.t[type]()) { + changed = true; + } + pt = pt._next; + } + return changed; + } + + /** + * Activates one or more plugins so that TweenLite and TweenMax recognize the associated special properties. + * You only need to activate each plugin once in order for it to be used in your project/app. For example, + * the following code activates the ScalePlugin and RoundPropsPlugin: + * + *

    + * TweenPlugin.activate([ScalePlugin, RoundPropsPlugin]); + *

    + * + *

    Thereafter, tweens will recognize the "scale" and "roundProps" special properties associated with + * these plugins. Like TweenLite.to(mc, 1, {scale:5, x:300, roundProps:"x"});

    + * + *

    Each plugin must extend TweenPlugin.

    + * + * @param plugins An Array of plugins to be activated. For example, TweenPlugin.activate([FrameLabelPlugin, ShortRotationPlugin, TintPlugin]); + */ + public static function activate(plugins:Array):Boolean { + TweenLite._onPluginEvent = TweenPlugin._onTweenEvent; + var i:int = plugins.length; + while (--i > -1) { + if (plugins[i].API == TweenPlugin.API) { + TweenLite._plugins[(new (plugins[i] as Class)())._propName] = plugins[i]; + } + } + return true + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/VisiblePlugin.as b/FairyGUI-as3/src/com/greensock/plugins/VisiblePlugin.as new file mode 100644 index 0000000..79c50a7 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/VisiblePlugin.as @@ -0,0 +1,67 @@ +/** + * VERSION: 12.1 + * DATE: 2012-06-19 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import com.greensock.TweenLite; +/** + * [AS3/AS2 only] Toggles the visibility at the end of a tween. For example, if you want to set visible to false + * at the end of the tween, do:

    + * + * TweenLite.to(mc, 1, {x:100, visible:false});

    + * + *

    The visible property is forced to true during the course of the tween.

    + * + *

    USAGE:

    + * +import com.greensock.TweenLite;
    +import com.greensock.plugins.TweenPlugin;
    +import com.greensock.plugins.VisiblePlugin;
    +TweenPlugin.activate([VisiblePlugin]); //activation is permanent in the SWF, so this line only needs to be run once.

    + +TweenLite.to(mc, 1, {x:100, visible:false});

    +
    + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class VisiblePlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + + /** @private **/ + protected var _target:Object; + /** @private **/ + protected var _tween:TweenLite; + /** @private **/ + protected var _visible:Boolean; + /** @private **/ + protected var _initVal:Boolean; + /** @private **/ + protected var _progress:int; + + /** @private **/ + public function VisiblePlugin() { + super("visible"); + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + _target = target; + _tween = tween; + _progress = (_tween.vars.runBackwards) ? 0 : 1; + _initVal = _target.visible; + _visible = Boolean(value); + return true; + } + + /** @private **/ + override public function setRatio(v:Number):void { + _target.visible = (v == 1 && (_tween._time / _tween._duration == _progress || _tween._duration == 0)) ? _visible : _initVal; //a ratio of 1 doesn't necessarily mean the tween is done - if the ease is Elastic.easeOut or Back.easeOut, for example, it could it 1 mid-tween. Also remember that zero-duration tweens will return NaN for _time / _duration. + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/com/greensock/plugins/VolumePlugin.as b/FairyGUI-as3/src/com/greensock/plugins/VolumePlugin.as new file mode 100644 index 0000000..55373a0 --- /dev/null +++ b/FairyGUI-as3/src/com/greensock/plugins/VolumePlugin.as @@ -0,0 +1,60 @@ +/** + * VERSION: 12.0 + * DATE: 2012-01-15 + * AS3 + * UPDATES AND DOCS AT: http://www.greensock.com + **/ +package com.greensock.plugins { + import flash.media.SoundTransform; + import com.greensock.*; + import com.greensock.plugins.*; +/** + * [AS3/AS2 only] Tweens the volume of an object with a soundTransform property (MovieClip/SoundChannel/NetStream, etc.). + * + *

    USAGE:

    + * +import com.greensock.TweenLite; +import com.greensock.plugins.TweenPlugin; +import com.greensock.plugins.VolumePlugin; +TweenPlugin.activate([VolumePlugin]); //activation is permanent in the SWF, so this line only needs to be run once. + +TweenLite.to(mc, 1, {volume:0}); + + * + *

    Copyright 2008-2014, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for Club GreenSock members, the software agreement that was issued with the membership.

    + * + * @author Jack Doyle, jack@greensock.com + */ + public class VolumePlugin extends TweenPlugin { + /** @private **/ + public static const API:Number = 2; //If the API/Framework for plugins changes in the future, this number helps determine compatibility + + /** @private **/ + protected var _target:Object; + /** @private **/ + protected var _st:SoundTransform; + + /** @private **/ + public function VolumePlugin() { + super("volume"); + } + + /** @private **/ + override public function _onInitTween(target:Object, value:*, tween:TweenLite):Boolean { + if (isNaN(value) || target.hasOwnProperty("volume") || !target.hasOwnProperty("soundTransform")) { + return false; + } + _target = target; + _st = _target.soundTransform; + _addTween(_st, "volume", _st.volume, value, "volume"); + return true; + } + + /** @private **/ + override public function setRatio(v:Number):void { + super.setRatio(v); + _target.soundTransform = _st; + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/fairygui/Controller.as b/FairyGUI-as3/src/fairygui/Controller.as index a576bb4..b4b06dc 100644 --- a/FairyGUI-as3/src/fairygui/Controller.as +++ b/FairyGUI-as3/src/fairygui/Controller.as @@ -140,7 +140,8 @@ package fairygui public function addPageAt(name:String, index:int):void { - var nid:String = "_"+(_nextPageId++); + var nid:String = "_"+(_nextPageId++);//原始的 + nid=index+"";//2019.7.22 代码动态增加显示 关联 失效bug 修改的 if(index==_pageIds.length) { _pageIds.push(nid); diff --git a/FairyGUI-as3/src/fairygui/GComponent.as b/FairyGUI-as3/src/fairygui/GComponent.as index c4c6170..a38930c 100644 --- a/FairyGUI-as3/src/fairygui/GComponent.as +++ b/FairyGUI-as3/src/fairygui/GComponent.as @@ -16,7 +16,7 @@ package fairygui import ktv.inter.IChangLang; import ktv.message.local.UIEvent; import ktv.message.local.UIEventDispatcher; - + [Event(name = "dropEvent", type = "fairygui.event.DropEvent")] public class GComponent extends GObject implements IChangLang { @@ -188,7 +188,7 @@ package fairygui { if(!child) throw new Error("child is null"); - + var numChildren:int = _children.length; if (index >= 0 && index <= numChildren) @@ -222,7 +222,7 @@ package fairygui childStateChanged(child); setBoundsChangedFlag(); } - + return child; } else @@ -230,7 +230,7 @@ package fairygui throw new RangeError("Invalid child index"); } } - + private function getInsertPosForSortingChild(target:GObject):int { var cnt:int = _children.length; @@ -256,7 +256,7 @@ package fairygui } return child; } - + public function removeChildAt(index:int, dispose:Boolean=false):GObject { if (index >= 0 && index < numChildren) @@ -289,7 +289,7 @@ package fairygui throw new RangeError("Invalid child index"); } } - + public function removeChildren(beginIndex:int=0, endIndex:int=-1, dispose:Boolean=false):void { if (endIndex < 0 || endIndex >= numChildren) @@ -449,11 +449,11 @@ package fairygui { GTimers.inst.callLater(buildNativeDisplayList); } - + setBoundsChangedFlag(); } - if (packageItem) + if (packageItem&&packageItem.displayList&&packageItem.displayList.length) { var oldIndex:int=-1; var di:DisplayListItem; @@ -472,8 +472,9 @@ package fairygui trace("没有找到child对应的PackageItem"); } //交换index - packageItem.displayList.splice(oldIndex, 1); //删除之前index - packageItem.displayList.splice(index, 0, di); + packageItem.displayList.splice(oldIndex, 1,di); //删除之前index + // packageItem.displayList.splice(oldIndex, 1); //删除之前index + // packageItem.displayList.splice(index, 0, di); trace("交换packageItem.displayList"); } @@ -493,11 +494,11 @@ package fairygui { var child1:GObject = _children[index1]; var child2:GObject = _children[index2]; - + setChildIndex(child1, index2); setChildIndex(child2, index1); } - + final public function get numChildren():int { return _children.length; @@ -518,7 +519,7 @@ package fairygui } return false; } - + public function addController(controller:Controller):void { _controllers.push(controller); @@ -554,7 +555,7 @@ package fairygui _controllers.splice(index,1); for each(var child:GObject in _children) - child.handleControllerChanged(c); + child.handleControllerChanged(c); } final public function get controllers():Vector. @@ -648,41 +649,41 @@ package fairygui switch (_childrenRenderOrder) { case ChildrenRenderOrder.Ascent: + { + for (i = 0; i < cnt; i++) { - for (i = 0; i < cnt; i++) - { - child = _children[i]; - if (child.displayObject != null && child.internalVisible) - _container.addChild(child.displayObject); - } + child = _children[i]; + if (child.displayObject != null && child.internalVisible) + _container.addChild(child.displayObject); } + } break; case ChildrenRenderOrder.Descent: + { + for (i = cnt - 1; i >= 0; i--) { - for (i = cnt - 1; i >= 0; i--) - { - child = _children[i]; - if (child.displayObject != null && child.internalVisible) - _container.addChild(child.displayObject); - } + child = _children[i]; + if (child.displayObject != null && child.internalVisible) + _container.addChild(child.displayObject); } + } break; case ChildrenRenderOrder.Arch: + { + for (i = 0; i < _apexIndex; i++) { - for (i = 0; i < _apexIndex; i++) - { - child = _children[i]; - if (child.displayObject != null && child.internalVisible) - _container.addChild(child.displayObject); - } - for (i = cnt - 1; i >= _apexIndex; i--) - { - child = _children[i]; - if (child.displayObject != null && child.internalVisible) - _container.addChild(child.displayObject); - } + child = _children[i]; + if (child.displayObject != null && child.internalVisible) + _container.addChild(child.displayObject); } + for (i = cnt - 1; i >= _apexIndex; i--) + { + child = _children[i]; + if (child.displayObject != null && child.internalVisible) + _container.addChild(child.displayObject); + } + } break; } } @@ -815,7 +816,7 @@ package fairygui { if(_rootContainer.hitArea!=null) _rootContainer.removeChild(_rootContainer.hitArea); - + _hitArea = value; if(_hitArea!=null) { @@ -901,7 +902,7 @@ package fairygui w = 1; if(h==0) h = 1; - + var g:Graphics = _rootContainer.graphics; g.clear(); g.lineStyle(0,0,0); @@ -925,13 +926,13 @@ package fairygui } protected function setupScroll(scrollBarMargin:Margin, - scroll:int, - scrollBarDisplay:int, - flags:int, - vtScrollBarRes:String, - hzScrollBarRes:String, - headerRes:String, - footerRes:String):void + scroll:int, + scrollBarDisplay:int, + flags:int, + vtScrollBarRes:String, + hzScrollBarRes:String, + headerRes:String, + footerRes:String):void { if (_rootContainer == _container) { @@ -951,7 +952,7 @@ package fairygui _container = new Sprite(); _rootContainer.addChild(_container); } - + _container.scrollRect = new Rectangle(); updateClipRect(); @@ -1018,7 +1019,7 @@ package fairygui GTimers.inst.add(0, 1, __render); } } - + private function __render():void { if(_boundsChanged) @@ -1030,7 +1031,7 @@ package fairygui updateBounds(); } } - + public function ensureBoundsCorrect():void { for each(var child:GObject in _children) @@ -1050,7 +1051,7 @@ package fairygui ax = int.MAX_VALUE, ay = int.MAX_VALUE; var ar:int = int.MIN_VALUE, ab:int = int.MIN_VALUE; var tmp:int; - + for each(var child:GObject in _children) { tmp = child.x; @@ -1083,7 +1084,7 @@ package fairygui protected function setBounds(ax:int, ay:int, aw:int, ah:int):void { _boundsChanged = false; - + if(_scrollPane) _scrollPane.setContentSize(Math.round(ax+aw), Math.round(ay+ah)); } @@ -1347,7 +1348,7 @@ package fairygui controller._parent = this; controller.setup(cxml); } - + var child:GObject; var displayList:Vector. = packageItem.displayList; var childCount:int = displayList.length; @@ -1389,7 +1390,7 @@ package fairygui str = xml.@mask; if(str) this.mask = getChildById(str).displayObject; - + col = xml.transition; var trans:Transition; for each(cxml in col) @@ -1415,12 +1416,12 @@ package fairygui constructFromXML(xml); } - + protected function constructFromXML(xml:XML):void { } - + override public function setup_afterAdd(xml:XML):void { super.setup_afterAdd(xml); diff --git a/FairyGUI-as3/src/fairygui/GObject.as b/FairyGUI-as3/src/fairygui/GObject.as index 66a7ae9..1390a87 100644 --- a/FairyGUI-as3/src/fairygui/GObject.as +++ b/FairyGUI-as3/src/fairygui/GObject.as @@ -1565,6 +1565,21 @@ package fairygui } } + public function get disabled():Boolean + { + return _touchable; + } + /** + *禁用 透明度变成 0.3 + * @param value + * + */ + public function set disabled(value:Boolean):void + { + this.alpha=value?0.3:1; + this.touchable = !value; + } + //touch support //------------------------------------------------------------------- private var _touchPointId:int; diff --git a/FairyGUI-as3/src/fairygui/GSlider.as b/FairyGUI-as3/src/fairygui/GSlider.as index ca39371..f7d18c2 100644 --- a/FairyGUI-as3/src/fairygui/GSlider.as +++ b/FairyGUI-as3/src/fairygui/GSlider.as @@ -9,11 +9,12 @@ package fairygui [Event(name = "stateChanged", type = "fairygui.event.StateChangeEvent")] public class GSlider extends GComponent { + public static const BAR_MOUSE_UP:String = "BAR_MOUSE_UP"; private var _max:int; private var _value:int; private var _titleType:int; private var _reverse:Boolean; - + private var _titleObject:GTextField; private var _barObjectH:GObject; private var _barObjectV:GObject; @@ -28,7 +29,7 @@ package fairygui private var _barStartY:int; public var changeOnClick:Boolean = true; - + /**是否可拖动开关**/ public var canDrag:Boolean = true; /** @@ -43,13 +44,13 @@ package fairygui public function GSlider() { super(); - + _titleType = ProgressTitleType.Percent; _value = 50; _max = 100; _clickPos = new Point(); } - + final public function get titleType():int { return _titleType; @@ -180,27 +181,24 @@ package fairygui } addEventListener(GTouchEvent.BEGIN, __barMouseDown); + addEventListener(GTouchEvent.END, __gripMouseUp); } protected function __gripMouseUp(event:GTouchEvent):void { - if(isAutoHide) + if(isAutoHide && _titleObject) { GTimers.inst.remove(hideTxt); GTimers.inst.add(500,1,hideTxt); } - if(isMoveSendEvent) - { - dispatchEvent(new StateChangeEvent(StateChangeEvent.CHANGED)); - } + dispatchEvent(new StateChangeEvent(GSlider.BAR_MOUSE_UP)); } private function hideTxt():void { GTimers.inst.remove(hideTxt); - if(_titleObject) - _titleObject.visible=false; + _titleObject.visible=false; } override protected function handleSizeChanged():void @@ -227,7 +225,7 @@ package fairygui } update(); - if(isAutoHide) + if(isAutoHide && _titleObject) { hideTxt(); } @@ -272,10 +270,7 @@ package fairygui if(newValue!=_value) { _value = newValue; - if(isMoveSendEvent) - { - dispatchEvent(new StateChangeEvent(StateChangeEvent.CHANGED)); - } + dispatchEvent(new StateChangeEvent(StateChangeEvent.CHANGED)); } updateWidthPercent(percent); } @@ -309,7 +304,7 @@ package fairygui updateWidthPercent(percent); if(_titleObject) _titleObject.visible=true; - if(isAutoHide) + if(isAutoHide && _titleObject) { GTimers.inst.remove(hideTxt); GTimers.inst.add(500,1,hideTxt); diff --git a/FairyGUI-as3/src/fairygui/GTextField.as b/FairyGUI-as3/src/fairygui/GTextField.as index c95993a..5c85686 100644 --- a/FairyGUI-as3/src/fairygui/GTextField.as +++ b/FairyGUI-as3/src/fairygui/GTextField.as @@ -12,7 +12,6 @@ package fairygui import fairygui.text.BMGlyph; import fairygui.text.BitmapFont; import fairygui.utils.CharSize; - import fairygui.utils.FontUtils; import fairygui.utils.GTimers; import fairygui.utils.ToolSet; @@ -76,8 +75,11 @@ package fairygui /** *是否需要截断文本 */ - public var truncationText:Boolean=false; - + public var substringText:Boolean=false; + /** + *是否使用 嵌入字体 默认 true + */ + public var embedFonts:Boolean=true; public function GTextField() @@ -440,7 +442,10 @@ package fairygui else _textFormat.font = UIConfig.defaultFont; - _textFormat.font=ManagerFont.setFontHandler(text,[_textFormat.font]); + if(embedFonts) + { + _textFormat.font=ManagerFont.setFontHandler(text,[_textFormat.font]); + } var charSize:Object = CharSize.getSize(int(_textFormat.size), _textFormat.font, _bold); _fontAdjustment = charSize.yIndent; } @@ -458,7 +463,8 @@ package fairygui _textField.defaultTextFormat = _textFormat; // _textField.embedFonts = FontUtils.isEmbeddedFont(_textFormat); - _textField.embedFonts =ManagerFont.embedFont; + _textField.embedFonts =(embedFonts&&ManagerFont.embedFont); + if(!_underConstruct) render(); @@ -531,7 +537,7 @@ package fairygui if(h!=_textField.height) _textField.height = h; - if(truncationText) + if(substringText && _templateVars==null)// 有模板 字符串时 不截断 { getTxt(_text); }else @@ -546,8 +552,10 @@ package fairygui var text2:String = _text; if (_templateVars != null) + { text2 = parseTemplate(text2); - updateTextFieldText(text2); + updateTextFieldText(text2); + } _textWidth = Math.ceil(_textField.textWidth); if(_textWidth>0) @@ -623,6 +631,11 @@ package fairygui } } + public function get sourceText():String + { + return _textField.text; + } + private function renderWithBitmapFont():void { switchBitmapMode(true); diff --git a/FairyGUI-as3/src/fairygui/GearAnimation.as b/FairyGUI-as3/src/fairygui/GearAnimation.as deleted file mode 100644 index 4e8c2fd..0000000 --- a/FairyGUI-as3/src/fairygui/GearAnimation.as +++ /dev/null @@ -1,77 +0,0 @@ -package fairygui -{ - public class GearAnimation extends GearBase - { - private var _storage:Object; - private var _default:GearAnimationValue; - - public function GearAnimation(owner:GObject) - { - super(owner); - } - - override protected function init():void - { - _default = new GearAnimationValue(IAnimationGear(_owner).playing, IAnimationGear(_owner).frame); - _storage = {}; - } - - override protected function addStatus(pageId:String, value:String):void - { - if(value=="-" || value.length==0) - return; - - var gv:GearAnimationValue; - if(pageId==null) - gv = _default; - else - { - gv = new GearAnimationValue(); - _storage[pageId] = gv; - } - var arr:Array = value.split(","); - gv.frame = int(arr[0]); - gv.playing = arr[1]=="p"; - } - - override public function apply():void - { - _owner._gearLocked = true; - - var gv:GearAnimationValue = _storage[_controller.selectedPageId]; - if(!gv) - gv = _default; - - IAnimationGear(_owner).playing = gv.playing; - IAnimationGear(_owner).frame = gv.frame; - - _owner._gearLocked = false; - } - - override public function updateState():void - { - var mc:IAnimationGear = IAnimationGear(_owner); - var gv:GearAnimationValue = _storage[_controller.selectedPageId]; - if(!gv) - { - gv = new GearAnimationValue(); - _storage[_controller.selectedPageId] = gv; - } - - gv.playing = mc.playing; - gv.frame = mc.frame; - } - } -} - -class GearAnimationValue -{ - public var playing:Boolean; - public var frame:int; - - public function GearAnimationValue(playing:Boolean=true, frame:int=0):void - { - this.playing = playing; - this.frame = frame; - } -} diff --git a/FairyGUI-as3/src/fairygui/GearBase.as b/FairyGUI-as3/src/fairygui/GearBase.as deleted file mode 100644 index fc47685..0000000 --- a/FairyGUI-as3/src/fairygui/GearBase.as +++ /dev/null @@ -1,191 +0,0 @@ -package fairygui -{ - import fairygui.tween.EaseType; - - public class GearBase - { - public static var disableAllTweenEffect:Boolean = false; - - protected var _tween:Boolean; - protected var _easeType:int; - protected var _tweenTime:Number; - protected var _delay:Number; - protected var _displayLockToken:uint; - - protected var _owner:GObject; - protected var _controller:Controller; - - public function GearBase(owner:GObject) - { - _owner = owner; - _easeType = EaseType.QuadOut; - _tweenTime = 0.3; - _delay = 0; - } - - final public function get controller():Controller - { - return _controller; - } - - public function set controller(val:Controller):void - { - if(val!=_controller) - { - _controller = val; - if(_controller) - init(); - } - } - - final public function get tween():Boolean - { - return _tween; - } - - public function set tween(val:Boolean):void - { - _tween = val; - } - - final public function get tweenTime():Number - { - return _tweenTime; - } - - public function set tweenTime(value:Number):void - { - _tweenTime = value; - } - - final public function get delay():Number - { - return _delay; - } - - public function set delay(value:Number):void - { - _delay = value; - } - - final public function get easeType():int - { - return _easeType; - } - - public function set easeType(value:int):void - { - _easeType = value; - } - - public function setup(xml:XML):void - { - _controller = _owner.parent.getController(xml.@controller); - if(!_controller) - return; - - init(); - - var str:String; - - str = xml.@tween; - if(str) - _tween = true; - - str = xml.@ease; - if(str) - _easeType = EaseType.parseEaseType(str); - - str = xml.@duration; - if(str) - _tweenTime = parseFloat(str); - - str = xml.@delay; - if(str) - _delay = parseFloat(str); - - if(this is GearDisplay) - { - str = xml.@pages; - if(str) - { - var arr:Array = str.split(","); - GearDisplay(this).pages = arr; - } - } - else - { - var pages:Array; - var values:Array; - - str = xml.@pages; - if(str) - pages = str.split(","); - - if(pages) - { - str = xml.@values; - values = str.split("|"); - - for(var i:int=0;i0; - } - - override public function apply():void - { - _displayLockToken++; - if(_displayLockToken==0) - _displayLockToken = 1; - - if(pages==null || pages.length==0 - || pages.indexOf(_controller.selectedPageId)!=-1) - _visible = 1; - else - _visible = 0; - } - } -} \ No newline at end of file diff --git a/FairyGUI-as3/src/fairygui/GearIcon.as b/FairyGUI-as3/src/fairygui/GearIcon.as deleted file mode 100644 index 28b5024..0000000 --- a/FairyGUI-as3/src/fairygui/GearIcon.as +++ /dev/null @@ -1,46 +0,0 @@ -package fairygui -{ - - public class GearIcon extends GearBase - { - private var _storage:Object; - private var _default:String; - - public function GearIcon(owner:GObject) - { - super(owner); - } - - override protected function init():void - { - _default = _owner.icon; - _storage = {}; - } - - override protected function addStatus(pageId:String, value:String):void - { - if(pageId==null) - _default = value; - else - _storage[pageId] = value; - } - - override public function apply():void - { - _owner._gearLocked = true; - - var data:* = _storage[_controller.selectedPageId]; - if(data!=undefined) - _owner.icon = String(data); - else - _owner.icon = _default; - - _owner._gearLocked = false; - } - - override public function updateState():void - { - _storage[_controller.selectedPageId] = _owner.icon; - } - } -} \ No newline at end of file diff --git a/FairyGUI-as3/src/fairygui/GearLook.as b/FairyGUI-as3/src/fairygui/GearLook.as deleted file mode 100644 index ccf8b56..0000000 --- a/FairyGUI-as3/src/fairygui/GearLook.as +++ /dev/null @@ -1,150 +0,0 @@ -package fairygui -{ - import fairygui.tween.GTween; - import fairygui.tween.GTweener; - - public class GearLook extends GearBase - { - private var _storage:Object; - private var _default:GearLookValue; - private var _tweener:GTweener; - - public function GearLook(owner:GObject) - { - super(owner); - } - - override protected function init():void - { - _default = new GearLookValue(_owner.alpha, _owner.rotation, _owner.grayed,_owner.touchable); - _storage = {}; - } - - override protected function addStatus(pageId:String, value:String):void - { - if(value=="-" || value.length==0) - return; - - var arr:Array = value.split(","); - var gv:GearLookValue; - if(pageId==null) - gv = _default; - else - { - gv = new GearLookValue(); - _storage[pageId] = gv; - } - gv.alpha = parseFloat(arr[0]); - gv.rotation = parseInt(arr[1]); - gv.grayed = arr[2]=="1"?true:false; - if(arr.length<4) - gv.touchable = _owner.touchable; - else - gv.touchable = arr[3]=="1"?true:false; - } - - override public function apply():void - { - var gv:GearLookValue = _storage[_controller.selectedPageId]; - if(!gv) - gv = _default; - - if(_tween && !UIPackage._constructing && !disableAllTweenEffect) - { - _owner._gearLocked = true; - _owner.grayed = gv.grayed; - _owner.touchable = gv.touchable; - _owner._gearLocked = false; - - if (_tweener != null) - { - if (_tweener.endValue.x != gv.alpha || _tweener.endValue.y != gv.rotation) - { - _tweener.kill(true); - _tweener = null; - } - else - return; - } - - var a:Boolean = gv.alpha!=_owner.alpha; - var b:Boolean = gv.rotation!=_owner.rotation; - if(a || b) - { - if(_owner.checkGearController(0, _controller)) - _displayLockToken = _owner.addDisplayLock(); - - _tweener = GTween.to2(_owner.alpha, _owner.rotation, gv.alpha, gv.rotation, _tweenTime) - .setDelay(_delay) - .setEase(_easeType) - .setUserData((a ? 1 : 0) + (b ? 2 : 0)) - .setTarget(this) - .onUpdate(__tweenUpdate) - .onComplete(__tweenComplete); - } - } - else - { - _owner._gearLocked = true; - _owner.alpha = gv.alpha; - _owner.rotation = gv.rotation; - _owner.grayed = gv.grayed; - _owner.touchable = gv.touchable; - _owner._gearLocked = false; - } - } - - private function __tweenUpdate(tweener:GTweener):void - { - var flag:int = int(tweener.userData); - _owner._gearLocked = true; - if ((flag & 1) != 0) - _owner.alpha = tweener.value.x; - if ((flag & 2) != 0) - _owner.rotation = tweener.value.y; - _owner._gearLocked = false; - } - - private function __tweenComplete():void - { - if(_displayLockToken!=0) - { - _owner.releaseDisplayLock(_displayLockToken); - _displayLockToken = 0; - } - _tweener = null; - } - - override public function updateState():void - { - var gv:GearLookValue = _storage[_controller.selectedPageId]; - if(!gv) - { - gv = new GearLookValue(); - _storage[_controller.selectedPageId] = gv; - } - - gv.alpha = _owner.alpha; - gv.rotation = _owner.rotation; - gv.grayed = _owner.grayed; - gv.touchable = _owner.touchable; - } - } -} - -class GearLookValue -{ - public var alpha:Number; - public var rotation:Number; - public var grayed:Boolean; - public var touchable:Boolean; - - public function GearLookValue(alpha:Number=0, rotation:Number=0, - grayed:Boolean=false, touchable:Boolean=true) - { - this.alpha = alpha; - this.rotation = rotation; - this.grayed = grayed; - this.touchable = touchable; - } -} diff --git a/FairyGUI-as3/src/fairygui/GearSize.as b/FairyGUI-as3/src/fairygui/GearSize.as deleted file mode 100644 index 0f185ef..0000000 --- a/FairyGUI-as3/src/fairygui/GearSize.as +++ /dev/null @@ -1,160 +0,0 @@ -package fairygui -{ - import fairygui.tween.GTween; - import fairygui.tween.GTweener; - - public class GearSize extends GearBase - { - private var _storage:Object; - private var _default:GearSizeValue; - private var _tweener:GTweener; - - public function GearSize(owner:GObject) - { - super(owner); - } - - override protected function init():void - { - _default = new GearSizeValue(_owner.width, _owner.height, _owner.scaleX, _owner.scaleY); - _storage = {}; - } - - override protected function addStatus(pageId:String, value:String):void - { - if(value=="-" || value.length==0) - return; - - var arr:Array = value.split(","); - var gv:GearSizeValue; - if(pageId==null) - gv = _default; - else - { - gv = new GearSizeValue(); - _storage[pageId] = gv; - } - gv.width = parseInt(arr[0]); - gv.height = parseInt(arr[1]); - if(arr.length>2) - { - gv.scaleX = parseFloat(arr[2]); - gv.scaleY = parseFloat(arr[3]); - } - } - - override public function apply():void - { - var gv:GearSizeValue = _storage[_controller.selectedPageId]; - if(!gv) - gv = _default; - - if(_tween && !UIPackage._constructing && !disableAllTweenEffect) - { - if (_tweener != null) - { - if (_tweener.endValue.x != gv.width || _tweener.endValue.y != gv.height - || _tweener.endValue.z != gv.scaleX || _tweener.endValue.w != gv.scaleY) - { - _tweener.kill(true); - _tweener = null; - } - else - return; - } - - var a:Boolean = gv.width != _owner.width || gv.height != _owner.height; - var b:Boolean = gv.scaleX != _owner.scaleX || gv.scaleY != _owner.scaleY; - if(a || b) - { - if(_owner.checkGearController(0, _controller)) - _displayLockToken = _owner.addDisplayLock(); - - _tweener = GTween.to4(_owner.width,_owner.height,_owner.scaleX, _owner.scaleY, gv.width,gv.height,gv.scaleX, gv.scaleY, _tweenTime) - .setDelay(_delay) - .setEase(_easeType) - .setUserData((a ? 1 : 0) + (b ? 2 : 0)) - .setTarget(this) - .onUpdate(__tweenUpdate) - .onComplete(__tweenComplete); - } - } - else - { - _owner._gearLocked = true; - _owner.setSize(gv.width, gv.height, _owner.checkGearController(1, _controller)); - _owner.setScale(gv.scaleX, gv.scaleY); - _owner._gearLocked = false; - } - } - - private function __tweenUpdate(tweener:GTweener):void - { - var flag:int = int(tweener.userData); - _owner._gearLocked = true; - if ((flag & 1) != 0) - _owner.setSize(tweener.value.x, tweener.value.y, _owner.checkGearController(1, _controller)); - if ((flag & 2) != 0) - _owner.setScale(tweener.value.z, tweener.value.w); - _owner._gearLocked = false; - } - - private function __tweenComplete():void - { - if(_displayLockToken!=0) - { - _owner.releaseDisplayLock(_displayLockToken); - _displayLockToken = 0; - } - _tweener = null; - } - - override public function updateState():void - { - var gv:GearSizeValue = _storage[_controller.selectedPageId]; - if(!gv) - { - gv = new GearSizeValue(); - _storage[_controller.selectedPageId] = gv; - } - - gv.width = _owner.width; - gv.height = _owner.height; - gv.scaleX = _owner.scaleX; - gv.scaleY = _owner.scaleY; - } - - override public function updateFromRelations(dx:Number, dy:Number):void - { - if(_controller==null || _storage==null) - return; - - for each (var gv:GearSizeValue in _storage) - { - gv.width += dx; - gv.height += dy; - } - GearSizeValue(_default).width += dx; - GearSizeValue(_default).height += dy; - - updateState(); - } - } -} - - -class GearSizeValue -{ - public var width:Number; - public var height:Number; - public var scaleX:Number; - public var scaleY:Number; - - public function GearSizeValue(width:Number=0, height:Number=0, scaleX:Number=0, scaleY:Number=0) - { - this.width = width; - this.height = height; - this.scaleX = scaleX; - this.scaleY = scaleY; - } -} \ No newline at end of file diff --git a/FairyGUI-as3/src/fairygui/GearText.as b/FairyGUI-as3/src/fairygui/GearText.as deleted file mode 100644 index f4d382a..0000000 --- a/FairyGUI-as3/src/fairygui/GearText.as +++ /dev/null @@ -1,53 +0,0 @@ -package fairygui -{ - - public class GearText extends GearBase - { - private var _storage:Object; - private var _default:String; - - public function GearText(owner:GObject) - { - super(owner); - } - - override protected function init():void - { - _default = _owner.text; - _storage = {}; - } - - override protected function addStatus(pageId:String, value:String):void - { - if(pageId==null) - _default = value; - else - _storage[pageId] = value; - } - - override public function apply():void - { - _owner._gearLocked = true; - - var data:* = _storage[_controller.selectedPageId]; - if(data!=undefined) - _owner.text = String(data); - else - _owner.text = _default; - - _owner._gearLocked = false; - } - - override public function updateState():void - { - _storage[_controller.selectedPageId] = _owner.text; - } - - override public function setLang(xml:XML):void - { - super.setLang(xml); - apply(); - } - - } -} \ No newline at end of file diff --git a/FairyGUI-as3/src/fairygui/GearXY.as b/FairyGUI-as3/src/fairygui/GearXY.as deleted file mode 100644 index 1844467..0000000 --- a/FairyGUI-as3/src/fairygui/GearXY.as +++ /dev/null @@ -1,128 +0,0 @@ -package fairygui -{ - import flash.geom.Point; - - import fairygui.tween.GTween; - import fairygui.tween.GTweener; - - public class GearXY extends GearBase - { - private var _storage:Object; - private var _default:Point; - private var _tweener:GTweener; - - public function GearXY(owner:GObject) - { - super(owner); - } - - override protected function init():void - { - _default = new Point(_owner.x, _owner.y); - _storage = {}; - } - - override protected function addStatus(pageId:String, value:String):void - { - if(value=="-" || value.length==0) - return; - - var arr:Array = value.split(","); - var pt:Point; - if(pageId==null) - pt = _default; - else - { - pt = new Point(); - _storage[pageId] = pt; - } - pt.x = parseInt(arr[0]); - pt.y = parseInt(arr[1]); - } - - override public function apply():void - { - var pt:Point = _storage[_controller.selectedPageId]; - if(!pt) - pt = _default; - - if(_tween && !UIPackage._constructing && !disableAllTweenEffect) - { - if (_tweener != null) - { - if (_tweener.endValue.x != pt.x || _tweener.endValue.y != pt.y) - { - _tweener.kill(true); - _tweener = null; - } - else - return; - } - - if (_owner.x != pt.x || _owner.y != pt.y) - { - if(_owner.checkGearController(0, _controller)) - _displayLockToken = _owner.addDisplayLock(); - - _tweener = GTween.to2(_owner.x, _owner.y, pt.x, pt.y, _tweenTime) - .setDelay(_delay) - .setEase(_easeType) - .setTarget(this) - .onUpdate(__tweenUpdate) - .onComplete(__tweenComplete); - } - } - else - { - _owner._gearLocked = true; - _owner.setXY(pt.x, pt.y); - _owner._gearLocked = false; - } - } - - private function __tweenUpdate(tweener:GTweener):void - { - _owner._gearLocked = true; - _owner.setXY(tweener.value.x, tweener.value.y); - _owner._gearLocked = false; - } - - private function __tweenComplete():void - { - if(_displayLockToken!=0) - { - _owner.releaseDisplayLock(_displayLockToken); - _displayLockToken = 0; - } - _tweener = null; - } - - override public function updateState():void - { - var pt:Point = _storage[_controller.selectedPageId]; - if(!pt) { - pt = new Point(); - _storage[_controller.selectedPageId] = pt; - } - - pt.x = _owner.x; - pt.y = _owner.y; - } - - override public function updateFromRelations(dx:Number, dy:Number):void - { - if(_controller==null || _storage==null) - return; - - for each (var pt:Point in _storage) - { - pt.x += dx; - pt.y += dy; - } - _default.x += dx; - _default.y += dy; - - updateState(); - } - } -} diff --git a/FairyGUI-as3/src/fairygui/IAnimationGear.as b/FairyGUI-as3/src/fairygui/IAnimationGear.as deleted file mode 100644 index c57403c..0000000 --- a/FairyGUI-as3/src/fairygui/IAnimationGear.as +++ /dev/null @@ -1,16 +0,0 @@ -package fairygui -{ - public interface IAnimationGear - { - function get playing():Boolean; - function set playing(value:Boolean):void; - - function get frame():int; - function set frame(value:int):void; - - function get timeScale():Number; - function set timeScale(value:Number):void; - - function advance(timeInMiniseconds:int):void; - } -} \ No newline at end of file diff --git a/FairyGUI-as3/src/fairygui/IColorGear.as b/FairyGUI-as3/src/fairygui/IColorGear.as deleted file mode 100644 index cd59f91..0000000 --- a/FairyGUI-as3/src/fairygui/IColorGear.as +++ /dev/null @@ -1,8 +0,0 @@ -package fairygui -{ - public interface IColorGear - { - function get color():uint; - function set color(value:uint):void; - } -} \ No newline at end of file diff --git a/FairyGUI-as3/src/fairygui/ITextColorGear.as b/FairyGUI-as3/src/fairygui/ITextColorGear.as deleted file mode 100644 index ded884b..0000000 --- a/FairyGUI-as3/src/fairygui/ITextColorGear.as +++ /dev/null @@ -1,8 +0,0 @@ -package fairygui -{ - public interface ITextColorGear extends IColorGear - { - function get strokeColor():uint; - function set strokeColor(value:uint):void; - } -} \ No newline at end of file diff --git a/FairyGUI-as3/src/fairygui/UIConfig.as b/FairyGUI-as3/src/fairygui/UIConfig.as index ae73f63..25cde4e 100644 --- a/FairyGUI-as3/src/fairygui/UIConfig.as +++ b/FairyGUI-as3/src/fairygui/UIConfig.as @@ -69,6 +69,6 @@ package fairygui /** *页面滚动翻页的 最小距离 (超过 pageScrollMinDistance 就翻页) */ - public static var pageScrollMinDistance:int=50; + public static var pageScrollMinDistance:int=80; } } diff --git a/FairyGUI-as3/src/fairygui/UIPackage.as b/FairyGUI-as3/src/fairygui/UIPackage.as index dc4cc2a..1eb9f2a 100644 --- a/FairyGUI-as3/src/fairygui/UIPackage.as +++ b/FairyGUI-as3/src/fairygui/UIPackage.as @@ -790,7 +790,7 @@ package fairygui }else//加载 外部文件 { var url:String=ManagerSkin.assetsHead+pi.url; - MassLoaderManager.getInstance().loadBMD(url,1,new Handler(loadedHandler,[pi]),null,new Handler(errorHandler,[pi])); + MassLoaderManager.getInstance().loadSWF(url,1,new Handler(loadedHandler,[pi]),null,new Handler(errorHandler,[pi])); function loadedHandler(pi:PackageItem,content:*):void { var callback:Function = pi.callbacks.pop(); @@ -818,7 +818,7 @@ package fairygui { ary[index]="skin0";//使用默认的皮肤 var tempURL:String=ary.join("/"); - MassLoaderManager.getInstance().loadBMD(tempURL,1,new Handler(loadedHandler,[pi]),null,new Handler(errorHandler)); + MassLoaderManager.getInstance().loadSWF(tempURL,1,new Handler(loadedHandler,[pi]),null,new Handler(errorHandler)); } } } diff --git a/FairyGUI-as3/src/ktv/font/ManagerFont.as b/FairyGUI-as3/src/ktv/font/ManagerFont.as index 0990888..8313af0 100644 --- a/FairyGUI-as3/src/ktv/font/ManagerFont.as +++ b/FairyGUI-as3/src/ktv/font/ManagerFont.as @@ -115,11 +115,11 @@ package ktv.font LoaderInfo(e.currentTarget).removeEventListener(Event.COMPLETE, completeHandler); LoaderInfo(e.currentTarget).removeEventListener(IOErrorEvent.IO_ERROR,iOError); dispatchEvent(new Event(FONT_ERROR)); - trace("字体加载路径错误:"+fontURLAry[crtLoadIndex]); + trace("字体加载路径错误:["+fontURLAry[crtLoadIndex]+"]"); crtLoadIndex++; loadFont(fontURLAry); } - + /** * 注册要使用的内嵌字体 */ @@ -169,7 +169,7 @@ package ktv.font ArrEmbedFonts=tempFontAry; for ( i= 0; i < ArrEmbedFonts.length; i++) { - trace("字体Font顺序"+i+":"+Font(ArrEmbedFonts[i]).fontName); + trace("字体Font顺序["+i+"]:["+Font(ArrEmbedFonts[i]).fontName+"]"); } } @@ -213,7 +213,8 @@ package ktv.font for (var i:int = 0; i < fontAry.length; i++) { var tempFont:Font=fontAry[i]; - if(tempFont.hasGlyphs(str)) // 按照字体数组中的列表 进行选择 优先使用默认字体 + // 按照字体数组中的列表 进行选择 优先使用默认字体 + if(tempFont.hasGlyphs(trimSpace(str)))// 去掉空白字符 (含有换行符 会导致为false ) { ManagerFont.embedFont=true; fontName=tempFont.fontName; @@ -236,5 +237,11 @@ package ktv.font return fontName; } + private static function trimSpace(str:String):String + { + var pattern:RegExp = /\r|\n|\r\n/g; + var pattern1:RegExp = /\t|\n\t/g; + return str.replace(pattern, "").replace(pattern1," "); + } } } \ No newline at end of file diff --git a/FairyGUI-as3/src/ktv/managers/Interface.as b/FairyGUI-as3/src/ktv/managers/Interface.as index ab262f0..e447a92 100644 --- a/FairyGUI-as3/src/ktv/managers/Interface.as +++ b/FairyGUI-as3/src/ktv/managers/Interface.as @@ -10,6 +10,10 @@ package ktv.managers public class Interface { + /** + *发送数据后的回调 可以在这里侦听 发送模拟数据 + */ + public static var SendCallback:Function; public static var isSocket:Boolean=false; public static function sendPfAndPid(pf:String,pid:String=""):void { @@ -17,7 +21,7 @@ package ktv.managers if(isSocket) { var obj:Object={pf:pf,pid:pid}; - sendObj(obj); + sendStr(JSON.stringify(obj)); }else { LogManager.log.send("pf:"+pf+" pid:"+pid); @@ -28,23 +32,40 @@ package ktv.managers } } public static var messageHeader:String=""; - public static function sendObj(obj:Object):void + private static function sendStr(str:String):void { - if(obj) + if(str) { if(isSocket) { - SocketManager.getInstance().sendMessage(messageHeader+JSON.stringify(obj)); + SocketManager.getInstance().sendMessage(messageHeader+str); } else//本地发送 本地接受 { - var str:String=JSON.stringify(obj); LogManager.log.send(str); UIEventDispatcher.sendEvent(UIEvent.LOACL_MESSAGE,str); } } } + public static function sendObj(obj:Object):void + { + if(obj) + { + if(obj is String) + { + sendStr(String(obj)); + }else + { + sendStr(JSON.stringify(obj)); + } + if(SendCallback) + { + SendCallback(obj); + } + } + } + public static function recevieData(data:String):void { SocketManager.getInstance().getMessage(data); diff --git a/FairyGUI-as3/src/ktv/managers/ManagerLayer.as b/FairyGUI-as3/src/ktv/managers/ManagerLayer.as index 29b0033..00483b0 100644 --- a/FairyGUI-as3/src/ktv/managers/ManagerLayer.as +++ b/FairyGUI-as3/src/ktv/managers/ManagerLayer.as @@ -36,6 +36,12 @@ package ktv.managers */ public static const LAYER_COVRE:String="layer_cover"; private var layer_cover:GComponent=new GComponent(); + + /** + * 进度加载页 4 + */ + public static const LAYER_PROGRESS:String="layer_progress"; + private var layer_progress:GComponent=new GComponent(); public function ManagerLayer() { @@ -48,6 +54,7 @@ package ktv.managers GRoot.inst.addChild(layer_panel); GRoot.inst.addChild(layer_dialog); GRoot.inst.addChild(layer_cover); + GRoot.inst.addChild(layer_progress); } /** @@ -119,14 +126,11 @@ package ktv.managers public function dispose():void { layer_bg.removeChildren(0,-1,true); - layer_bg.removeFromParent(); layer_panel.removeChildren(0,-1,true); - layer_panel.removeFromParent(); layer_dialog.removeChildren(0,-1,true); - layer_dialog.removeFromParent(); layer_cover.removeChildren(0,-1,true); - layer_cover.removeFromParent(); - trace("dispose():LayerTool"); +// layer_progress.removeChildren(0,-1,true); + trace("dispose():ManagerLayer"); } public static function getInstance():ManagerLayer diff --git a/FairyGUI-as3/src/ktv/message/local/UIEvent.as b/FairyGUI-as3/src/ktv/message/local/UIEvent.as index bae200f..b7d0ec9 100644 --- a/FairyGUI-as3/src/ktv/message/local/UIEvent.as +++ b/FairyGUI-as3/src/ktv/message/local/UIEvent.as @@ -2,17 +2,25 @@ package ktv.message.local { import flash.events.Event; - public class UIEvent extends Event { public static const CHANGE_BG:String="CHANGE_BG"; public static const CHANGE_SKIN:String="CHANGE_SKIN"; public static const CHANGE_LANG:String="CHANGE_LANG"; + /** + *使用 ExternalInterface.call() 会用到这个 + */ public static const LOACL_MESSAGE:String="LOACL_MESSAGE"; public static const IMAGE_COMPLETE:String="IMAGE_COMPLETE"; public static const IMAGE_ERROR:String="IMAGE_ERROR"; - public static const PAGE_CHANGE:String="PAGE_CHANGE"; + public static const CHANGE_PAGE:String="CHANGE_PAGE"; + + + /** + *UI加载资源进度 + */ + public static const LOAD_PROGRESS:String="LOAD_PROGRESS"; private var _data:*; public function UIEvent(type:String, data:*=null, bubbles:Boolean = false, cancelable:Boolean = false) { @@ -20,7 +28,8 @@ package ktv.message.local _data = data; } /**事件数据*/ - public function get data():*{ + public function get data():* + { return _data; } diff --git a/FairyGUI-as3/src/ktv/message/local/UIEventDispatcher.as b/FairyGUI-as3/src/ktv/message/local/UIEventDispatcher.as index be8f2fb..00a9bf9 100644 --- a/FairyGUI-as3/src/ktv/message/local/UIEventDispatcher.as +++ b/FairyGUI-as3/src/ktv/message/local/UIEventDispatcher.as @@ -2,13 +2,14 @@ package ktv.message.local { import flash.events.EventDispatcher; - [Event(name="UIEvent.CHANGE_BG", type="ktv.message.local.UIEvent")] - [Event(name="UIEvent.CHANGE_SKIN", type="ktv.message.local.UIEvent")] - [Event(name="UIEvent.CHANGE_LANG", type="ktv.message.local.UIEvent")] - [Event(name="UIEvent.LOACL_MESSAGE", type="ktv.message.local.UIEvent")] - [Event(name="UIEvent.IMAGE_COMPLETE", type="ktv.message.local.UIEvent")] - [Event(name="UIEvent.IMAGE_ERROR", type="ktv.message.local.UIEvent")] - [Event(name="UIEvent.CHANGE_PAGE", type="ktv.message.local.UIEvent")] + [Event(name="CHANGE_BG", type="ktv.message.local.UIEvent")] + [Event(name="CHANGE_SKIN", type="ktv.message.local.UIEvent")] + [Event(name="CHANGE_LANG", type="ktv.message.local.UIEvent")] + [Event(name="LOACL_MESSAGE", type="ktv.message.local.UIEvent")] + [Event(name="IMAGE_COMPLETE", type="ktv.message.local.UIEvent")] + [Event(name="IMAGE_ERROR", type="ktv.message.local.UIEvent")] + [Event(name="CHANGE_PAGE", type="ktv.message.local.UIEvent")] + [Event(name="LOAD_PROGRESS", type="ktv.message.local.UIEvent")] public class UIEventDispatcher extends EventDispatcher { private static var instance:UIEventDispatcher; diff --git a/FairyGUI-as3/src/ktv/message/socket/SocketManager.as b/FairyGUI-as3/src/ktv/message/socket/SocketManager.as index 9d5c92c..9b8a2ff 100644 --- a/FairyGUI-as3/src/ktv/message/socket/SocketManager.as +++ b/FairyGUI-as3/src/ktv/message/socket/SocketManager.as @@ -36,9 +36,9 @@ package ktv.message.socket private var loopByte:ByteArray; private var socketMessage:SocketMessage; /** - *是否包含发送消息的长度 + *flash 发送消息的长度 前面是否 加载 消息的长度 1000{send:2} */ - public var isHasByteHeadLength:Boolean=true; + public var isHasByteHeadLength:Boolean=false; public function SocketManager() { @@ -100,14 +100,15 @@ package ktv.message.socket { timer.stop(); timer.reset(); - LogManager.log.info("socket连接成功!"); + LogManager.log.info("socket 连接成功!"); sendEvent(SocketEvent.SOCKET_CONNECTED); } protected function timerRun(event:TimerEvent):void { socketConnect(); - LogManager.log.error("持续连接socket 次数:" + timer.currentCount); + if(timer.currentCount>10 && timer.currentCount%10!=0 ) return; +// LogManager.log.error("持续连接socket 次数:" + timer.currentCount); } protected function socketClose(event:Event):void @@ -123,13 +124,13 @@ package ktv.message.socket protected function security_error(event:SecurityErrorEvent):void { - LogManager.log.error("socket连接错误" + event.type + event.toString()); +// LogManager.log.error("socket连接错误" + event.type + event.toString()); timer.start(); } protected function io_error(event:IOErrorEvent):void { - LogManager.log.error("socket连接错误" + event.type); +// LogManager.log.error("socket连接错误" + event.type); timer.start(); } @@ -138,7 +139,8 @@ package ktv.message.socket var tempByte:ByteArray=new ByteArray(); socket.readBytes(tempByte); var testMessage:String=tempByte.readUTFBytes(tempByte.length); - if(testMessage.indexOf(messageHead.toString()) != -1)//查找发来的数据是否含有消息头 + + if(testMessage.substr(0,messageHead.length)==messageHead.toString())//查找发来的数据是否含有-测试消息头 { testMessage=testMessage.replace(messageHead,""); var tempAry:Array=testMessage.split(messageHead); diff --git a/FairyGUI-as3/src/ktv/morn/core/managers/LogManager.as b/FairyGUI-as3/src/ktv/morn/core/managers/LogManager.as index 151eb2e..79a7053 100644 --- a/FairyGUI-as3/src/ktv/morn/core/managers/LogManager.as +++ b/FairyGUI-as3/src/ktv/morn/core/managers/LogManager.as @@ -31,6 +31,8 @@ package ktv.morn.core.managers private var _close:TextField; private var colorArray:Array=[0xff0011, 0x77ff99, 0x99ffee, 0xff22dd, 0xff2211, 0x9bd948, 0x96ff73, 0x80ff00, 0x99ffff, 0xb9ff73, 0xff794c, 0xff4c4d, 0xffbfbf, 0xffdc73, 0xbfff00, 0x99ffe5, 0xbfffff, 0xff0000, 0x00ff00, 0xff26ff]; + private var sendBtn:TextField; + private var clear2:TextField; private var copy:TextField; @@ -42,6 +44,9 @@ package ktv.morn.core.managers private var titleTextFormat:TextFormat; private var title:TextField; + + private var hideBtn:Sprite=new Sprite(); + private var showBtn:Sprite=new Sprite(); public static const BG_WIDTH:int=700; public static const BG_HEIGHT:int=500; private var _titleName:String="Debug"; @@ -53,6 +58,12 @@ package ktv.morn.core.managers private var _type:String=TYPE_MC; private var _moveBox:Sprite; + + /** + * SendCallback(str); + */ + public var sendCallback:Function; + public function LogManager() { @@ -77,20 +88,24 @@ package ktv.morn.core.managers _filter.borderColor=0xBFBFBF; _filter.defaultTextFormat=new TextFormat(logFontName, txtSize); _filter.addEventListener(KeyboardEvent.KEY_DOWN, onFilterKeyDown); - _filter.addEventListener(FocusEvent.FOCUS_OUT, onFilterFocusOut); +// _filter.addEventListener(FocusEvent.FOCUS_OUT, onFilterFocusOut); _box.addChild(_filter); //控制按钮 + sendBtn=createLinkButton("Send"); + sendBtn.addEventListener(MouseEvent.CLICK, onSendClick); + sendBtn.x=280; + _box.addChild(sendBtn); clear2=createLinkButton("Clear"); clear2.addEventListener(MouseEvent.CLICK, onClearClick); - clear2.x=280; + clear2.x=315; _box.addChild(clear2); _scroll=createLinkButton("Pause"); _scroll.addEventListener(MouseEvent.CLICK, onScrollClick); - _scroll.x=315; + _scroll.x=350; _box.addChild(_scroll); copy=createLinkButton("Copy"); copy.addEventListener(MouseEvent.CLICK, onCopyClick); - copy.x=350; + copy.x=385; _box.addChild(copy); //信息栏 _textField=new TextField(); @@ -116,6 +131,7 @@ package ktv.morn.core.managers _close.addEventListener(MouseEvent.CLICK, onCloseClick); _close.x=moveBox.x + moveBox.width - _close.width; _box.addChildAt(_close, 3); + //标题 title=new TextField(); title.mouseEnabled=false; title.x=copy.x + copy.width; @@ -131,11 +147,81 @@ package ktv.morn.core.managers title.defaultTextFormat=titleTextFormat; title.text=titleName; _box.addChild(title); + //隐藏箭头 + var dragRect_8:int=30; + hideBtn.x=BG_WIDTH/2-dragRect_8/2; + hideBtn.y=BG_HEIGHT-dragRect_8; + hideBtn.graphics.beginFill(0xFFFFFF,0.5); + hideBtn.graphics.drawRect(0,0,dragRect_8,dragRect_8); + hideBtn.graphics.endFill(); + hideBtn.graphics.beginFill(0xFF0000,0.7); + hideBtn.graphics.moveTo(dragRect_8*0.1,dragRect_8*0.7); + hideBtn.graphics.lineTo(dragRect_8*0.5,dragRect_8*0.3); + hideBtn.graphics.lineTo(dragRect_8*0.9,dragRect_8*0.7); + hideBtn.graphics.lineTo(dragRect_8*0.5,dragRect_8*0.6); + hideBtn.graphics.lineTo(dragRect_8*0.1,dragRect_8*0.7); + hideBtn.graphics.endFill(); + _box.addChild(hideBtn); + hideBtn.addEventListener(MouseEvent.CLICK, onHideClick); + dragRect_8=22; + //显示箭头 + showBtn.x=BG_WIDTH/2-dragRect_8/2; + showBtn.y=title.y+dragRect_8; + showBtn.graphics.beginFill(0xFFFFFF,0.5); + showBtn.graphics.drawRect(0,0,dragRect_8,dragRect_8); + showBtn.graphics.endFill(); + showBtn.graphics.beginFill(0xFF0000,0.7); + showBtn.graphics.moveTo(dragRect_8*0.1,dragRect_8*0.7); + showBtn.graphics.lineTo(dragRect_8*0.5,dragRect_8*0.3); + showBtn.graphics.lineTo(dragRect_8*0.9,dragRect_8*0.7); + showBtn.graphics.lineTo(dragRect_8*0.5,dragRect_8*0.6); + showBtn.graphics.lineTo(dragRect_8*0.1,dragRect_8*0.7); + showBtn.graphics.endFill(); + showBtn.scaleY=-1; + showBtn.visible=false; + _box.addChild(showBtn); + showBtn.addEventListener(MouseEvent.CLICK, onHideClick); + stageWindow.addEventListener(KeyboardEvent.KEY_DOWN, onStageKeyDown); addEventListener(Event.REMOVED_FROM_STAGE, removeStage); addEventListener(MouseEvent.MOUSE_WHEEL, box_MOUSE_WHEEL); } - + + protected function onHideClick(event:MouseEvent):void + { + var isShow:Boolean; + if(event.currentTarget==hideBtn) + { + isShow=false; + moveBox.scaleX=0.6; + title.x=moveBox.x; + _close.x=moveBox.x + moveBox.width - _close.width; + }else + { + isShow=true; + moveBox.scaleX=1; + title.x=copy.x + copy.width; + _close.x=moveBox.x + moveBox.width - _close.width; + } + + _filter.visible=isShow; + sendBtn.visible=isShow; + clear2.visible=isShow; + _scroll.visible=isShow; + copy.visible=isShow; + + _textField.visible=isShow; + bitmapBg.visible=isShow; + + hideBtn.visible=isShow; + showBtn.visible=!isShow; + } + + protected function KeyDownHandler(event:KeyboardEvent):void + { + + } + private function createBitmap(width:int, height:int, color:uint=0, alpha:Number=1):Bitmap { var bitmap:Bitmap=new Bitmap(new BitmapData(1, 1, false, color)); @@ -169,12 +255,15 @@ package ktv.morn.core.managers _msgs.length=0; _filters.length=0; _filter.removeEventListener(KeyboardEvent.KEY_DOWN, onFilterKeyDown); - _filter.removeEventListener(FocusEvent.FOCUS_OUT, onFilterFocusOut); +// _filter.removeEventListener(FocusEvent.FOCUS_OUT, onFilterFocusOut); + sendBtn.removeEventListener(MouseEvent.CLICK, onSendClick); clear2.removeEventListener(MouseEvent.CLICK, onClearClick); _scroll.removeEventListener(MouseEvent.CLICK, onScrollClick); copy.removeEventListener(MouseEvent.CLICK, onCopyClick); _move.removeEventListener(MouseEvent.MOUSE_DOWN, onMoveDown); _close.removeEventListener(MouseEvent.CLICK, onCloseClick); + hideBtn.removeEventListener(MouseEvent.CLICK, onHideClick); + showBtn.removeEventListener(MouseEvent.CLICK, onHideClick); removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); stage.removeEventListener(MouseEvent.MOUSE_UP, onMoveDown); stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMoveDown); @@ -269,6 +358,7 @@ package ktv.morn.core.managers private function onCopyClick(e:MouseEvent):void { System.setClipboard(_textField.text); + info("复制到剪切板完毕"); } private function onScrollClick(e:MouseEvent):void @@ -281,6 +371,16 @@ package ktv.morn.core.managers } } + private function onSendClick(e:MouseEvent):void + { + if(_filter.text.length>0 && sendCallback!=null) + { + sendCallback(_filter.text); + _filter.text=""; + _filters=[]; + } + } + private function onClearClick(e:MouseEvent):void { clear(); @@ -357,7 +457,7 @@ package ktv.morn.core.managers trace(type, args.join(" ")); if (!_box || !_box.visible) return; - var msg:String="" + type + "" + args.join(" ") + ""; + var msg:String=" " + type + "" + args.join(" ") + " \n"; if (_msgs.length > _maxMsg) { _msgs.length=0; diff --git a/FairyGUI-as3/src/ktv/utils/MyBase64.as b/FairyGUI-as3/src/ktv/utils/MyBase64.as new file mode 100644 index 0000000..5dace9c --- /dev/null +++ b/FairyGUI-as3/src/ktv/utils/MyBase64.as @@ -0,0 +1,121 @@ +package ktv.utils +{ + + + import flash.utils.ByteArray; + /* + * 优化Base64 + * 主要优化执行方式,尽量减少调用函数和尽可能不使用循环 + * 优化后提升执行速度是原来的10倍 + * Directed by kiwiw3 + * */ + public class MyBase64 + { + + private static const BASE64_CHARS:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + + public static const version:String = "1.0.0"; + + public static function encode(data:String):String { + // Convert string to ByteArray + var bytes:ByteArray = new ByteArray(); + bytes.writeUTFBytes(data); + + // Return encoded ByteArray + return encodeByteArray(bytes); + } + + public static function encodeByteArray(data:ByteArray):String { + // Initialise output + var output:String = ""; + + // Create data and output buffers + var dataBuffer:Array; + var outputBuffer:Array = new Array(4); + + // Rewind ByteArray + data.position = 0; + + // while there are still bytes to be processed + while (data.bytesAvailable > 0) { + // Create new data buffer and populate next 3 bytes from data + dataBuffer = new Array(); + for (var i:uint = 0; i < 3 && data.bytesAvailable > 0; i++) { + dataBuffer[i] = data.readUnsignedByte(); + } + + // Convert to data buffer Base64 character positions and + // store in output buffer + outputBuffer[0] = (dataBuffer[0] & 0xfc) >> 2; + outputBuffer[1] = ((dataBuffer[0] & 0x03) << 4) | ((dataBuffer[1]) >> 4); + outputBuffer[2] = ((dataBuffer[1] & 0x0f) << 2) | ((dataBuffer[2]) >> 6); + outputBuffer[3] = dataBuffer[2] & 0x3f; + + // If data buffer was short (i.e not 3 characters) then set + // end character indexes in data buffer to index of '=' symbol. + // This is necessary because Base64 data is always a multiple of + // 4 bytes and is basses with '=' symbols. + for (var j:uint = dataBuffer.length; j < 3; j++) { + outputBuffer[j + 1] = 64; + } + + // Loop through output buffer and add Base64 characters to + // encoded data string for each character. + for (var k:uint = 0; k < outputBuffer.length; k++) { + output += BASE64_CHARS.charAt(outputBuffer[k]); + } + } + + // Return encoded data + return output; + } + + public static function decode(data:String):String { + // Decode data to ByteArray + var bytes:ByteArray = decodeToByteArray(data); + + // Convert to string and return + return bytes.readUTFBytes(bytes.length); + } + + public static function decodeToByteArray(data:String):ByteArray { + // Initialise output ByteArray for decoded data + var output:ByteArray = new ByteArray(); + + // Create data and output buffers + var dataBuffer:Array = new Array(4); + var outputBuffer:Array = new Array(3); + + // While there are data bytes left to be processed + for (var i:uint = 0; i < data.length; i += 4) { + // Populate data buffer with position of Base64 characters for + // next 4 bytes from encoded data + for (var j:uint = 0; j < 4 && i + j < data.length; j++) { + dataBuffer[j] = BASE64_CHARS.indexOf(data.charAt(i + j)); + } + + // Decode data buffer back into bytes + outputBuffer[0] = (dataBuffer[0] << 2) + ((dataBuffer[1] & 0x30) >> 4); + outputBuffer[1] = ((dataBuffer[1] & 0x0f) << 4) + ((dataBuffer[2] & 0x3c) >> 2); + outputBuffer[2] = ((dataBuffer[2] & 0x03) << 6) + dataBuffer[3]; + + // Add all non-padded bytes in output buffer to decoded data + for (var k:uint = 0; k < outputBuffer.length; k++) { + if (dataBuffer[k+1] == 64) break; + output.writeByte(outputBuffer[k]); + } + } + + // Rewind decoded data ByteArray + output.position = 0; + + // Return decoded data + return output; + } + + public function Base64():void { + throw new Error("Base64 class is static container only"); + } + + } +} \ No newline at end of file diff --git a/FairyGUI-as3/src/ktv/utils/qrcode/Qrcode.as b/FairyGUI-as3/src/ktv/utils/qrcode/Qrcode.as index 564ec0c..16512eb 100644 --- a/FairyGUI-as3/src/ktv/utils/qrcode/Qrcode.as +++ b/FairyGUI-as3/src/ktv/utils/qrcode/Qrcode.as @@ -4,7 +4,6 @@ import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.QRCodeWriter; - import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Matrix; import flash.geom.Point; diff --git a/FairyGUI-as3/src/ktv/utils/transition/MCTransition.as b/FairyGUI-as3/src/ktv/utils/transition/MCTransition.as index 07657e9..c217746 100644 --- a/FairyGUI-as3/src/ktv/utils/transition/MCTransition.as +++ b/FairyGUI-as3/src/ktv/utils/transition/MCTransition.as @@ -1,6 +1,6 @@ package ktv.utils.transition { -// import com.greensock.TweenLite; + import com.greensock.TweenLite; import flash.display.DisplayObject; import flash.display.MovieClip; @@ -37,19 +37,19 @@ package ktv.utils.transition switch (modes) { case 1: -// TweenLite.from(mc,0.6,{alpha:0}); + TweenLite.from(mc,0.6,{alpha:0}); break; case 2: -// TweenLite.from(mc,0.6,{scaleX:0}); + TweenLite.from(mc,0.6,{scaleX:0}); break; case 3: -// TweenLite.from(mc,0.6,{x:mc.width,scaleX:0}); + TweenLite.from(mc,0.6,{x:mc.width,scaleX:0}); break; case 4: -// TweenLite.from(mc,0.6,{scaleY:0}); + TweenLite.from(mc,0.6,{scaleY:0}); break; case 5: -// TweenLite.from(mc,0.6,{y:mc.height,scaleY:0}); + TweenLite.from(mc,0.6,{y:mc.height,scaleY:0}); break; } }

    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�Uj*KR=U{G3y-)w~P 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 z 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%0A!DM6;&pVdc#Y@*V4AfFa!& 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 diff --git a/FairyGUI-as3/src/fairygui/GComponent.as b/FairyGUI-as3/src/fairygui/GComponent.as index b01fd47..93eee01 100644 --- a/FairyGUI-as3/src/fairygui/GComponent.as +++ b/FairyGUI-as3/src/fairygui/GComponent.as @@ -603,62 +603,47 @@ package fairygui private function buildNativeDisplayList():void { - var cnt:int=_children.length; + var cnt:int = _children.length; if (cnt == 0) return; - + var i:int; var child:GObject; switch (_childrenRenderOrder) { case ChildrenRenderOrder.Ascent: { - for (i=0; i < cnt; i++) + for (i = 0; i < cnt; i++) { - for (i = 0; i < cnt; i++) - { - child = _children[i]; - if (child.displayObject != null && child.internalVisible) - _container.addChild(child.displayObject); - } + child = _children[i]; + if (child.displayObject != null && child.internalVisible) + _container.addChild(child.displayObject); } } break; case ChildrenRenderOrder.Descent: { - for (i=cnt - 1; i >= 0; i--) + for (i = cnt - 1; i >= 0; i--) { - for (i = cnt - 1; i >= 0; i--) - { - child = _children[i]; - if (child.displayObject != null && child.internalVisible) - _container.addChild(child.displayObject); - } + child = _children[i]; + if (child.displayObject != null && child.internalVisible) + _container.addChild(child.displayObject); } } break; - + case ChildrenRenderOrder.Arch: { - for (i=0; i < _apexIndex; i++) + for (i = 0; i < _apexIndex; i++) { - for (i = 0; i < _apexIndex; i++) - { - child = _children[i]; - if (child.displayObject != null && child.internalVisible) - _container.addChild(child.displayObject); - } - for (i = cnt - 1; i >= _apexIndex; i--) - { - child = _children[i]; - if (child.displayObject != null && child.internalVisible) - _container.addChild(child.displayObject); - } + child = _children[i]; + if (child.displayObject != null && child.internalVisible) + _container.addChild(child.displayObject); } - for (i=cnt - 1; i >= _apexIndex; i--) + for (i = cnt - 1; i >= _apexIndex; i--) { - child=_children[i]; - if (child.displayObject != null && child.finalVisible) + child = _children[i]; + if (child.displayObject != null && child.internalVisible) _container.addChild(child.displayObject); } } From 25c6ee26c2375858aa5f37c7317b6c24c89e7790 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=A3=AE?= <690275538@qq.com> Date: Sat, 6 Jan 2018 16:21:59 +0800 Subject: [PATCH 06/15] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E5=BF=85=E8=A6=81=E7=9A=84=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + FairyGUI-as3/bin/FairyGUI-as3.swc | Bin 717432 -> 0 bytes 2 files changed, 1 insertion(+) create mode 100644 .gitignore delete mode 100644 FairyGUI-as3/bin/FairyGUI-as3.swc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..db239b4 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/FairyGUI-as3/bin/*.swc diff --git a/FairyGUI-as3/bin/FairyGUI-as3.swc b/FairyGUI-as3/bin/FairyGUI-as3.swc deleted file mode 100644 index 7aa07a91015f4672c966204b5aafd16aecc74d4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 717432 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�ItQy5bB5D1UaTb6 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

  • JiKW+uBpGeTp5 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Πuj;icW#nP=Ceq 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 z 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

    See + * + * DoCoMo's documentation about the result types represented by subclasses of this class.

    )IVctW0qfahScHCrp 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⪼W!xR7O$rMVZ54Px$hb7VKIWB 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%0AES$;sprlW0}ve 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