+# rfxview.sc - a document viewer for pdf2swf converted files
+#
+# Copyright (c) 2008 Matthias Kramm
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following condition:
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+
.flash filename=rfxview.swf fps=30 bbox=600x800 version=8 compress background=#CCCCCC export=0
.define width 600
lineTo 8,-8
.end
-.font arialbold filename="../viewer/ArialBold.ttf" glyphs="1:"
-.font arial filename="../viewer/Arial.ttf" glyphs="0123456789 /:"
+.font arialbold filename="../wx/ArialBold.ttf" glyphs="1:"
+.font arial filename="../wx/Arial.ttf" glyphs="0123456789 /:"
.textshape oneoneoutline text="1:1" font=arialbold size=14pt
lineTo 2,-8
.end
+.outline zoomoutline:
+ moveTo 8,0 lineTo 4,3 lineTo 4,-3 lineTo 8,0
+ moveTo -8,0 lineTo -4,3 lineTo -4,-3 lineTo -8,0
+ moveTo 0,8 lineTo 3,4 lineTo -3,4 lineTo 0,8
+ moveTo 0,-8 lineTo 3,-4 lineTo -3,-4 lineTo 0,-8
+.end
+
.outline minusoutline:
moveTo -7,2
lineTo -7,-2
.filled mincircle_over outline=minusoutline fill=grad4l line=1 color=#00000060
.filled oincircle outline=oneoneoutline fill=grad2l line=1.2 color=#00000060
.filled oincircle_over outline=oneoneoutline fill=grad4l line=1.2 color=#00000060
+.filled zincircle outline=zoomoutline fill=grad2l line=1 color=#00000060
+.filled zincircle_over outline=zoomoutline fill=grad4l line=1 color=#00000060
.sprite plusface
.put shadcircle 11 13 pin=center .put outcircle 11 11 pin=center .put pincircle 11 11 pin=center scale=90%
.put shadcircle 11 13 pin=center scale=90% .put outcircle_over 11 11 pin=center scale=90% .put oincircle_over 9 11 pin=center scale=79%
.end
+.sprite zbface
+ .put shadcircle 11 13 pin=center .put outcircle 11 11 pin=center .put zincircle 10 11 pin=center scale=90% luminance=50%
+.end
+.sprite zbfaceover
+ .put shadcircle 11 13 pin=center .put outcircle_over 11 11 pin=center .put zincircle_over 10 11 pin=center scale=90%
+.end
+.sprite zbfacedown
+ .put shadcircle 11 13 pin=center scale=90% .put outcircle_over 11 11 pin=center scale=90% .put zincircle_over 10 11 pin=center scale=79%
+.end
+
.button rightbutton
.show rbface as=idle
.show outcircle as=area
.show obfaceover as=hover
.end
+.button fullsizebutton
+ .show zbface as=idle
+ .show outcircle as=area
+ .show zbfacedown as=pressed
+ .show zbfaceover as=hover
+.end
+
#======================================== frame ===========================================================
.frame 1
+.box background_box line=1 color=#00000030 fill=#00000030 width=800 height=600
+.sprite background
+ .put background_box x=0 y=0
+.end
+.put background
+
+# horizontal scroll outline
+.box hscroll_box line=1 color=#000000 width=800-20 height=10
+.sprite hscroll_outline
+ .put hscroll_box x=0 y=0
+.end
+.put hscroll_outline
+
+# vertical scroll outline
+.box vscroll_box line=1 color=#000000 width=10 height=600-20
+.sprite vscroll_outline
+ .put vscroll_box x=0 y=0
+.end
+.put vscroll_outline
+
+# content outline
+.box content_box width=100 height=100 line=1 color=#000000
+.sprite content_outline
+ .put content_box x=0 y=0
+.end
+.put content_outline
+
.put p1=plusbutton x=width-25-20 y=20 pin=center
.put m1=minusbutton x=width-50-20 y=20 pin=center
-.put l1=leftbutton x=width/2-100 y=20 pin=center
-.put r1=rightbutton x=width/2+100 y=20 pin=center
-
.put o1=oneonebutton x=width-75-20 y=20 pin=center
+.put z1=fullsizebutton x=width-100-20 y=20 pin=center
-.sprite background
-.end
-.put background
+.put l1=leftbutton x=width/2-100 y=20 pin=center
+.put r1=rightbutton x=width/2+100 y=20 pin=center
.sprite vscrollbar
.box vscroll2_shadow line=0 fill=#00000033 width=14 height=100
.put hscrollbar y=height-22 x=10
.put vscrollbar x=width-22 y=40
-.edittext et width=110 height=20 font=arial size=18pt color=black noselect align=center
+.edittext et width=50 height=20 font=arial size=18pt color=black variable=current_pagenumber maxlength=3 text="1" align=left
+.edittext etmiddle text="/" width=10 height=25 font=arial color=black noselect size=18pt align=center
+.edittext et_total_pages width=50 height=25 font=arial color=black noselect size=18pt align=right
-.font dbgarial filename="../doc/Courier.ttf"
+#.font dbgarial filename="Courier.ttf"
#.edittext debugtxt width=width height=20 font=dbgarial size=18pt color=#004000 noselect
#.put debugtxt y=20
-.put et x=width/2-30 y=8
+.put et x=width/2-55 y=8
+.put etmiddle x=width/2-5 y=8
+.put et_total_pages x=width/2+5 y=8
-#.swf swf filename=paper5.swf
-.sprite swf
+#.swf viewport filename=paper5.viewport
+.sprite viewport
.end
.box f width=100 height=100 line=0 fill=black
.button areabutton
.show f as=area
.on_press inside:
- swf.startDrag(false, left-scrollxrange, top-scrollyrange, left,top);
+ viewport.startDrag(false, left-scrollxrange, top-scrollyrange, left,top);
Dragging = "xy";
.end
.on_release:
- swf.stopDrag();
+ viewport.stopDrag();
Dragging = "";
.end
.end
.put f
.end
.put cliparea=cf x=10 y=40
-.put swf x=10 y=40
+.put viewport x=10 y=40
-.action:
- swfwidth = swf._width;
- swfheight = swf._height;
+.action:
+ et_total_pages.text=viewport._totalframes;
+ swfwidth = viewport._width;
+ swfheight = viewport._height;
Dragging = "";
contentwidth = fullwidth - 40;
contentheight = fullheight - 70;
+ background._width = fullwidth-1;
+ background._height = fullheight-1;
+
+ // resize/position hscroll outline
+ hscroll_outline._x = 10;
+ hscroll_outline._y = fullheight-20;
+ hscroll_outline._width = fullwidth-40;
+ hscroll_outline._height = 10;
+
+ // resize/position vscroll outline
+ vscroll_outline._x = fullwidth-20;
+ vscroll_outline._y = 40;
+ vscroll_outline._width = 10;
+ vscroll_outline._height = fullheight-70;
+
+ // resize/position content outline
+ content_outline._x = 9;
+ content_outline._y = 39;
+ content_outline._width = contentwidth+1;
+ content_outline._height = contentheight+1;
+
// move all objects to their proper positions
vscrollbar._x = fullwidth-22;
hscrollbar._y = fullheight-22;
p1._x = fullwidth-25-20 - p1._width/2;
o1._x = fullwidth-50-20 - o1._width/2;
- m1._x = fullwidth-75-20 - m1._width/2;
+ z1._x = fullwidth-75-20 - z1._width/2;
+ m1._x = fullwidth-100-20 - m1._width/2;
l1._x = fullwidth/2-100 - l1._width/2;
r1._x = fullwidth/2+100 - r1._width/2;
- et._x = fullwidth/2 - et._width/2;
-
- //.box f width=width-40 height=height-40-30 line=0 fill=black
- //.box vscroll1 width=10 height=height-40-30 line=1 color=#00000060 fill=grad7
- //.box hscroll1 height=10 width=width-40 line=1 color=#00000060 fill=grad72
- //.put vscroll1 x=width-20 y=40
- //.put hscroll1 x=10 y=height-20
-
- // horizontal scrollbar
- background.lineStyle(1, 0, 0x60);
- background.moveTo(10 ,fullheight-20);
- background.lineTo(10 ,fullheight-10);
- background.lineTo(10+fullwidth-40,fullheight-10);
- background.lineTo(10+fullwidth-40,fullheight-20);
- background.lineTo(10 ,fullheight-20);
-
- // vertical scrollbar
- background.moveTo(fullwidth-20 ,40);
- background.lineTo(fullwidth-20 ,fullheight-30);
- background.lineTo(fullwidth-10 ,fullheight-30);
- background.lineTo(fullwidth-10 ,40);
- background.lineTo(fullwidth-20 ,40);
-
- // content area
- background.lineStyle(1, 0);
- background.startFill(0x000000);
- background.moveTo(9, 39);
- background.lineTo(fullwidth-30+1, 39);
- background.lineTo(fullwidth-30+1, fullheight-29);
- background.lineTo(9, fullheight-29);
- background.lineTo(9, 39);
- background.endFill();
+ et._x = fullwidth/2 - (et._width+etmiddle._width+et_total_pages._width)/2;
+ etmiddle._x = fullwidth/2 - (et._width+etmiddle._width+et_total_pages._width)/2 + et._width;
+ et_total_pages._x = fullwidth/2 - (et._width+etmiddle._width+et_total_pages._width)/2 + et._width+etmiddle._width;
areabutton._xscale = contentwidth;
areabutton._yscale = contentheight;
cliparea._xscale = contentwidth;
cliparea._yscale = contentheight;
- swf.setMask(cliparea);
+ viewport.setMask(cliparea);
lastzoom = 1;
zoom = 1;
//debugtxt.text = Stage.width+ " x " + Stage.height;
-
- setPageNr = function() {
- et.text = " "+pagenr+" / "+swf._totalframes;
- swf.gotoAndStop(pagenr);
+ //debugtxt.text = zoomtype;
+
+ setPageNr = function(setscroll) {
+ current_pagenumber = pagenr;
+ viewport.gotoAndStop(pagenr);
+ if(!setscroll) {
+ viewport._y = top;
+ swfpos2scrollbars();
+ }
+ else {
+ viewport._y = setscroll;
+ swfpos2scrollbars();
+ }
};
setNoScrollZoomLevel = function() {
}
};
+ setOneDirScrollZoomLevel = function() {
+ xscale = contentwidth / swfwidth;
+ yscale = contentheight / swfheight;
+ if(xscale > yscale) {
+ zoom = xscale;
+ setZoomLevel();
+ } else {
+ zoom = yscale;
+ setZoomLevel();
+ }
+ };
+
set11ZoomLevel = function() {
zoom = 1.0;
setZoomLevel();
swfpos2scrollbars = function() {
if(scrollxrange) {
- hscrollbar._x = 10 + (left-swf._x)*scrollbarxrange/scrollxrange;
+ hscrollbar._x = 10 + (left-viewport._x)*scrollbarxrange/scrollxrange;
} else {
hscrollbar._x = 10;
}
if(scrollyrange) {
- vscrollbar._y = 40 + (top-swf._y)*scrollbaryrange/scrollyrange;
+ vscrollbar._y = 40 + (top-viewport._y)*scrollbaryrange/scrollyrange;
} else {
vscrollbar._y = 40;
}
scrollbaryrange = 0;
}
- swf._xscale = zoom*100;
- swf._yscale = zoom*100;
+ viewport._xscale = zoom*100;
+ viewport._yscale = zoom*100;
- focusx = contentwidth/2 - (swf._x-10);
- focusy = contentheight/2 - (swf._y-40);
+ focusx = contentwidth/2 - (viewport._x-10);
+ focusy = contentheight/2 - (viewport._y-40);
- swf._x = left - focusx * zoom / lastzoom + width/2;
- swf._y = top - focusy * zoom / lastzoom + height/2;
+ viewport._x = left - focusx * zoom / lastzoom + width/2;
+ viewport._y = top - focusy * zoom / lastzoom + height/2;
- if(swf._x > left) {
- swf._x = left;
- } else if(swf._x < left-scrollxrange) {
- swf._x = left-scrollxrange;
+ if(viewport._x > left) {
+ viewport._x = left;
+ } else if(viewport._x < left-scrollxrange) {
+ viewport._x = left-scrollxrange;
}
- if(swf._y > top) {
- swf._y = top;
- } else if(swf._y < top-scrollyrange) {
- swf._y = top-scrollyrange;
+ if(viewport._y > top) {
+ viewport._y = top;
+ } else if(viewport._y < top-scrollyrange) {
+ viewport._y = top-scrollyrange;
}
swfpos2scrollbars();
pagenr = 1;
setPageNr();
- setNoScrollZoomLevel();
- //set11ZoomLevel();
+
+ if(zoomtype=="1") {
+ set11ZoomLevel();
+ } else if(zoomtype=="2") {
+ setNoScrollZoomLevel();
+ } else {
+ setOneDirScrollZoomLevel();
+ }
+ et.onChanged = function(){
+ if(current_pagenumber <= viewport._totalframes) {
+ if (current_pagenumber > 0) {
+ pagenr = int(current_pagenumber);
+ setPageNr();
+ }
+ }
+ };
l1.onRelease = function(){
if(pagenr > 1) {
pagenr = pagenr - 1;
}
};
r1.onRelease = function(){
- if(pagenr < swf._totalframes) {
+ if(pagenr < viewport._totalframes) {
pagenr = pagenr + 1;
setPageNr();
}
o1.onRelease = function(){
setNoScrollZoomLevel();
};
+ z1.onRelease = function(){
+ setOneDirScrollZoomLevel();
+ };
refreshDrag = function(){
if(Dragging == "h") {
- swf._x = left + (10-hscrollbar._x)*scrollxrange/scrollbarxrange;
+ viewport._x = left + (10-hscrollbar._x)*scrollxrange/scrollbarxrange;
} else if(Dragging == "v") {
- swf._y = top + (40-vscrollbar._y)*scrollyrange/scrollbaryrange;
+ viewport._y = top + (40-vscrollbar._y)*scrollyrange/scrollbaryrange;
} else if(Dragging == "xy") {
swfpos2scrollbars();
}
};
dragrefresh = setInterval(refreshDrag, 20);
+
+ var mouseListener = new Object();
+
+ mouseListener.onMouseWheel = function(delta) {
+ divideDelta = delta/Math.abs(delta);
+ viewport._y = viewport._y + 30*zoom*divideDelta;
+ swfpos2scrollbars();
+ if(viewport._y < top-scrollyrange) {
+ if(pagenr < viewport._totalframes) {
+ pageNr = pageNr + 1;
+ setPageNr();
+ }
+ else {
+ viewport._y = top-scrollyrange;
+ swfpos2scrollbars();
+ }
+ }
+ else if(viewport._y > top) {
+ if(pagenr > 1) {
+ pageNr = pageNr - 1;
+ setPageNr(top-scrollyrange);
+ }
+ else {
+ viewport._y = top;
+ swfpos2scrollbars();
+ }
+ }
+ };
+
+ Mouse.addListener(mouseListener);
.end
.end