package org.alivepdf.pages { import org.alivepdf.events.PagingEvent; import org.alivepdf.layout.Orientation; import org.alivepdf.layout.Size; import org.alivepdf.layout.Unit; public final class Page { private var _width:Number; private var _height:Number; private var _fwPt:Number; private var _fhPt:Number; private var _wPt:Number; private var _hPt:Number; private var _fw:Number; private var _fh:Number; private var _w:Number; private var _h:Number; private var _rotation:Number; private var _page:int; private var _pageTransition:String; private var _content:String; private var _annots:String; private var _orientation:String; private var _size:Size; private var _format:Array; private var _k:Number; private var _unit:String; public function Page ( pOrientation:String, unit:String="Mm", size:Object=null, pRotation:Number=0 ) { _orientation = pOrientation; _rotation = pRotation; this._unit = setUnit( unit ); _size = Size.getSize( size ).clone(); if ( _size != null ) _format = _size.dimensions; else throw new RangeError ("Incorrect dimensions."); _fwPt = _format[0]; _fhPt = _format[1]; _fw = _fwPt/_k; _fh = _fhPt/_k; if ( this._orientation == Orientation.PORTRAIT ) { wPt = _fwPt; hPt = _fhPt; w = _fw; h = _fh; _width = wPt; _height = hPt; } else if ( this._orientation == Orientation.LANDSCAPE ) { wPt = _fhPt; hPt = _fwPt; w = _fh; h = _fw; _width = wPt; _height = hPt; } else throw new RangeError ('Incorrect orientation: ' + pOrientation); _page = 0; _annots = new String(); _content = new String(); transitions = new String(); } /** * * @return Page * @example * This example shows how to clone a page : * <div class="listing"> * <pre> * * var clonedPage = existingPage.clone(); * myPDF.addPage ( clonedPage ); * </pre> * </div> */ public function clone ( ):Page { var page:Page = new Page ( orientation, _unit, size, rotation ); page.content = content; page.transitions = transitions; return page; } public function get orientation ( ):String { return _orientation; } public function setUnit ( unit:String ):String { if ( unit == Unit.POINT ) _k = 1; else if ( unit == Unit.MM ) _k = 72/25.4; else if ( unit == Unit.CM ) _k = 72/2.54; else if ( unit == Unit.INCHES ) _k = 72; else throw new RangeError ('Incorrect unit: ' + unit); return unit; } public function rotate ( pRotation:Number ):void { if ( pRotation % 90 ) throw new RangeError ("Rotation must be a multiple of 90"); _rotation = pRotation; } private function paging ( evt:PagingEvent ):void { _page = evt.page; } /** * Lets you resize the Page dimensions * * @param width * @param height * */ public function resize ( width:Number, height:Number ):void { width = _fwPt = wPt = width; height = _fhPt = hPt = height; } public function addTransition ( style:String='R', duration:Number=1, dimension:String='H', motionDirection:String='I', transitionDirection:int=0 ):void { transitions = '/Trans << /Type /Trans /D '+duration+' /S /'+style+' /Dm /'+dimension+' /M /'+motionDirection+' /Di /'+transitionDirection+' >>'; } public function set width ( pWidth:Number ):void { _format[0] = _width = pWidth; } public function get width ( ):Number { return _width; } public function set height ( pHeight:Number ):void { _format[1] = _height = pHeight; } public function get height ( ):Number { return _height; } public function set wPt ( pwPt:Number ):void { _wPt = pwPt; } public function get wPt ( ):Number { return _wPt; } public function set hPt ( phPt:Number ):void { _hPt = phPt; } public function get hPt ( ):Number { return _hPt; } public function set w ( pW:Number ):void { _w = pW; } public function get w ( ):Number { return _w; } public function set h ( pH:Number ):void { _h = pH; } public function get h ( ):Number { return _h; } public function get size ():Size { return _size; } public function set size ( size:Size ):void { _size = size; } public function set rotation ( pRotation:Number ):void { _rotation = pRotation; } public function get rotation ( ):Number { return _rotation; } public function get page ( ):int { return _page; } public function set content ( pContent:String ):void { _content = pContent; } public function get content ( ):String { return _content; } public function get transitions ( ):String { return _pageTransition; } public function set transitions ( pTransition:String ):void { _pageTransition = pTransition; } public function get annotations ( ):String { return _annots; } public function set annotations ( pAnnotation:String ):void { _annots = pAnnotation; } public function toString ( ):String { return "[Page orientation="+_orientation+" page="+page+" width="+(w>>0)+" height="+(h>>0)+"]"; } } }