Initial Commit Update Telerik

This commit is contained in:
2022-01-07 19:26:33 +01:00
commit 57e1cda236
2174 changed files with 1202494 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,478 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="jsml.xsl"?>
<jsml xmlns="http://cutesoft.net/jsml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://cutesoft.net/jsml ../../JSML/jsml.xsd">
<panel jsml-class="border_item" height="94" width="140" border_color="#cccccc" border_width="1">
<property name="framepadding">
<get>
return self._framepadding || [0,0,0,0];
</get>
<set arguments="val">
<![CDATA[
var arr = val.split(",");
if(arr.length==1) {
var ret = IntSure(arr[0]);
self._framepadding = [ret,ret,ret,ret];
return;
}
self._framepadding = [0,0,0,0];
for(var i=0;i<4;i++) {
if(arr.length>i) {
var ret = IntSure(arr[i]);
self._framepadding[i] = ret;
}
}
function IntSure(v)
{
if(typeof(v)=="undefined" || v==null || v=="" || isNaN(v))
return 0;
return parseInt(v);
}
]]>
</set>
</property>
<property name="framename">
<get>
return self._framename;
</get>
<set>
self._framename = value;
</set>
</property>
<property name="emptycorner">
<get>
if(!self._emptycorner) return ",";
return "," + self._emptycorner + ",";
</get>
<set>
<![CDATA[
self._emptycorner = value;
]]>
</set>
</property>
<property name="emptyborder">
<get>
if(!self._emptyborder) return ",";
return "," + self._emptyborder + ",";
</get>
<set>
<![CDATA[
self._emptyborder = value;
]]>
</set>
</property>
<property name="cornersize">
<get>
<![CDATA[
//four corners, [width,height]
return self._cornersize || [[0,0],[0,0],[0,0],[0,0]];
]]>
</get>
<set>
<![CDATA[
if(!value) return;
var val = eval("("+value+")");
if(val.length == 0)
return;
if(val.length==1)
{
self._cornersize = [val[0],val[0],val[0],val[0]];
return;
}
self._cornersize = [[0,0],[0,0],[0,0],[0,0]];
for(var i=0;i<4;i++)
{
if(val.length<=i) continue;
self._cornersize[i] = val[i];
}
]]>
</set>
</property>
<property name="mode">
<get>
return self._mode || "tile";
</get>
<set>
<![CDATA[
if(value=="single") self._mode = "single";
else if(value=="corner") self._mode = "corner";
else self._mode = "tile";
]]>
</set>
</property>
<panel jsml-local="btn_use" dock="bottom" margin="2" height="24" visible="0">
<panel dock="right" width="60" margin="2" css_text="text-shadow: 2px 2px 5px #99999;border:solid #d1decd 1px; background:#f3f3f3;color:#333333;border-radius:2px; -webkit-border-radius:2px;">
<image dock="left" margin="0,0,0,2" src="images/accept.png" vertical_align="middle" horizontal_align="center" width="16" cursor="default"></image>
<label dock="fill" text="@Btn_Apply" margin="0,0,0,3" css_text="font-weight:bold;" vertical_align="middle" horizontal_align="left"></label>
<attach name="click">
<![CDATA[
ImageEditorDocument.set_selection(null);
var pd = instance.get_framepadding();
var pdo = pd;
var es = ImageEditorDocument.GetOption("Ctx_FrameExpandSize");
if(!es) pd = [0,0,0,0];
var mode = instance.get_mode();
ImageEditorDocument.$0105(pd,DrawBorder);
function DrawBorder(layer)
{
if(mode=="tile" || mode=="single")
{
instance.PreviewTile(pdo, layer);
}
if(mode=="corner")
{
instance.PreviewCorner(pdo, layer);
}
}
instance.get_parent().get_parent().Remove();
]]>
</attach>
<initialize>
<![CDATA[
ImageEditorDocument.$043(self.get_element(),"top","#fce877","#dfb642");
]]>
</initialize>
<attach name="mousehover">
<![CDATA[
ImageEditorDocument.$043(self.get_element(),"top","#f1f6fa","#b0bce2");
]]>
</attach>
<attach name="mouseleave">
<![CDATA[
ImageEditorDocument.$043(self.get_element(),"top","#fce877","#dfb642");
return;
self.get_element().style.background = "";
if(jsml.msie) self.get_element().style.filter = "";
]]>
</attach>
</panel>
</panel>
<panel jsml-local="backpanel" dock="fill" vertical_align="middle" horizontal_align="center"></panel>
<panel jsml-local="fillpanel" dock="fill"></panel>
<attach name="click">
<![CDATA[
self.Preview();
self.get_parent().SelectFrame(self);
return;
]]>
</attach>
<method name="Preview">
<![CDATA[
var pd = self.get_framepadding();
var pdo = pd;
var es = ImageEditorDocument.GetOption("Ctx_FrameExpandSize");
if(!es) pd = [0,0,0,0];
var rs = ImageEditorDocument.GetOption("CanvasRealSize");
ImageEditorDocument._canvas.width = rs.width+pd[1]+pd[3];
ImageEditorDocument._canvas.height = rs.height+pd[0]+pd[2];
ImageEditorDocument._2d.clearRect(0,0, ImageEditorDocument._canvas.width, ImageEditorDocument._canvas.height);
try{ImageEditorDocument._canvas.calcpos();}catch(x){}
var layers = ImageEditorDocument._history._layers;
for(var i=0;i<layers.length;i++)
{
var layer = layers[i];
if(ImageEditorDocument._history.$040(layer, "Hidden"))
continue;
var sx = layer._canvas_x + pd[3];
var sy = layer._canvas_y + pd[0];
var dx = layer._canvas.width;
var dy = layer._canvas.height;
ImageEditorDocument._2d.drawImage(layer._cacheCanvas || layer._canvas, sx, sy, dx, dy);
}
var mode = self.get_mode();
if(mode=="tile" || mode=="single")
{
self.PreviewTile(pdo);
return;
}
if(mode=="corner")
{
self.PreviewCorner(pdo);
return;
}
]]>
</method>
<method name="PreviewCorner" arguments="pdo,layer">
<![CDATA[
var ec = self.get_emptycorner();
var eb = self.get_emptyborder();
var cs = self.get_cornersize();
var _doc = ImageEditorDocument;
var drawobj = _doc;
if(layer) drawobj=layer;
var canvas = document.createElement("canvas");
canvas.width = drawobj._canvas.width;
canvas.height = drawobj._canvas.height;
var ctx = canvas.getContext("2d");
var count = 0;
for(var i=1;i<=4;i++)
{
if(ec.indexOf(","+i+",")!=-1)
{
calctime();
continue;
}
var img = new Image();
img.ix = i;
img.onload = function()
{
var x = 0;
var y = 0;
if(this.ix==2 || this.ix==3) x = drawobj._canvas.width-this.width;
if(this.ix==4 || this.ix==3) y = drawobj._canvas.height-this.height;
drawobj._2d.drawImage(this, x, y,this.width,this.height);
calctime();
}
img.src = "images/frame/" + self.get_framename() + "_"+i+".png";
}
var icanvas = document.createElement("canvas");
var i2d = icanvas.getContext("2d");
for(var i=1;i<=4;i++)
{
if(eb.indexOf(","+i+",")!=-1)
{
calctime();
continue;
}
var img = new Image();
img.ix = i;
img.onload = function()
{
var ix = this.ix;
var c_prev = cs[ix-1];
var c_next = ix==4?cs[0]:cs[ix];
var h = this.height;
var w = this.width;
var x = 0;
var y = 0;
var patt = null
if(ix==1)
{
x = c_prev[0];
w = drawobj._canvas.width - c_prev[0] - c_next[0];
patt = i2d.createPattern(this,"repeat-x");
}
if(ix==2)
{
x = drawobj._canvas.width - this.width;
y = c_prev[1];
h = drawobj._canvas.height - c_prev[1] - c_next[1];
patt = i2d.createPattern(this,"repeat-y");
}
if(ix==3)
{
x = c_next[0];
y = drawobj._canvas.height - this.height;
w = drawobj._canvas.width - c_prev[0] - c_next[0];
patt = i2d.createPattern(this,"repeat-x");
}
if(ix == 4)
{
y = c_next[1];
h = drawobj._canvas.height - c_prev[1] - c_next[1];
patt = i2d.createPattern(this,"repeat-y");
}
icanvas.width = w;
icanvas.height = h;
i2d.fillStyle = patt;
i2d.fillRect(0,0,w,h);
drawobj._2d.drawImage(icanvas,x,y,w,h);
calctime();
}
img.src = "images/frame/" + self.get_framename() + "_"+i+"0.png";
}
function calctime()
{
count++;
if(count>=8 && layer) _doc.$0118();
}
]]>
</method>
<method name="PreviewTile" arguments="pdo,layer">
<![CDATA[
var _doc = ImageEditorDocument;
var drawobj = _doc;
if(layer) drawobj = layer;
var img = new Image();
img.onload = function()
{
if(self.get_mode()=="tile")
{
var canvas = document.createElement("canvas");
canvas.width = drawobj._canvas.width;
canvas.height = drawobj._canvas.height;
var ctx = canvas.getContext("2d");
var pattern = ctx.createPattern(img,"repeat");
ctx.fillStyle = pattern;
ctx.fillRect(0,0,canvas.width,canvas.height);
ctx.clearRect(pdo[0],pdo[3],canvas.width-pdo[1]-pdo[3],canvas.height-pdo[0]-pdo[2]);
drawobj._2d.drawImage(canvas,0,0);
}
else
{
var scalex = drawobj._canvas.width/img.width;
var scaley = drawobj._canvas.height/img.height;
var canvas = document.createElement("canvas");
canvas.width = drawobj._canvas.width;
canvas.height = drawobj._canvas.height;
var ctx = canvas.getContext("2d");
ctx.scale(scalex,scaley);
ctx.drawImage(img,0,0);
drawobj._2d.drawImage(canvas,0,0);
}
if(layer) _doc.$0118();
}
img.src = "images/frame/" + self.get_framename() + ".png";
]]>
</method>
<method name="SetButtonEnable" arguments="val">
<![CDATA[
if(val==true)
{
btn_use.set_visible(1);
self.set_height(114);
}
else
{
btn_use.set_visible(0);
self.set_height(90);
}
]]>
</method>
<initialize>
<![CDATA[
var div = backpanel.get_element();
setTimeout(function(){
var w = self.get_current_width();
var pd = self.get_framepadding();
fillpanel.set_margin(pd);
if(self.get_mode()=="tile")
{
backpanel.set_background("url(images/frame/" + self.get_framename() + ".png)");
fillpanel.set_back_color("gray");
return;
}
var img = new Image();
img.onload = function()
{
if(img.width>w || img.height>90)
{
if(img.width/img.height<w/90)
{
img.style.height = "90px";
img.style.width = parseInt(img.width*90/img.height+"") + "px";
img.style.marginLeft = parseInt((w-img.width*90/img.height)/2 + "") + "px";
}
else
{
img.style.width = w + "px";
img.style.height = parseInt(img.height*w/img.width+"") + "px";
img.style.marginTop = parseInt((90-img.height*w/img.width)/2 + "") + "px";
}
}
else
{
img.style.marginLeft = parseInt((w-img.width)/2 + "") + "px";
img.style.marginTop = parseInt((90-img.height)/2 + "") + "px";
}
div.appendChild(img);
}
img.src = "images/frame/" + self.get_framename() + ".png";
},100);
]]>
</initialize>
</panel>
<panel jsml-class="borderlist" right="0" width="150" border_width="0,1,1,1" back_color="#eeeeee" border_color="#cccccc">
<panel dock="top" height="24" css_text="background:#bcc3c6 url(images/back/group.gif) repeat-x;">
<image dock="right" src="images/close.gif" tooltip="@Title_Close" vertical_align="middle" width="16" cursor="default">
<attach name="click">
if(instance._selectedframe)
{
instance._selectedframe = null;
ImageEditorDocument.$0118();
}
instance.Remove();
</attach>
</image>
<label dock="fill" width="10" overflow="visible" text="@Tool_Frame_Head" vertical_align="middle" text_color="#545454" css_text="font-weight:bold;" margin="0,0,0,3"></label>
</panel>
<panel dock="bottom" height="22">
<checkbox dock="left" width="20" vertical_align="middle" margin="0,0,2,0">
<initialize>
<![CDATA[
self.set_checked(ImageEditorDocument.GetOption("Ctx_FrameExpandSize"));
]]>
</initialize>
<attach name="click">
<![CDATA[
ImageEditorDocument.SetOption("Ctx_FrameExpandSize",self.get_checked());
]]>
</attach>
</checkbox>
<label dock="fill" vertical_align="middle" horizontal_align="left" text="@Tool_Frame_Expand"></label>
</panel>
<panel dock="fill" overflow_y="scroll">
<panel jsml-base="border_item" dock="top" framepadding="10" framename="greenflower" mode="tile" margin="3"></panel>
<panel jsml-base="border_item" dock="top" framepadding="40,45,40,45" framename="rope" mode="single" margin="3"></panel>
<panel jsml-base="border_item" dock="top" framepadding="80" framename="leaf" mode="single" margin="3"></panel>
<panel jsml-base="border_item" dock="top" framepadding="35" framename="fallleaf" mode="corner" emptycorner="2,4" emptyborder="1,2,3,4" margin="3"></panel>
<panel jsml-base="border_item" dock="top" framepadding="30" framename="redline" mode="corner" cornersize="[[138,122]]" emptycorner="" emptyborder="" margin="3"></panel>
<panel jsml-base="border_item" dock="top" framepadding="19,19,21,18" framename="brooch" mode="corner" cornersize="[[47,42],[23,24],[39,45],[22,25]]" margin="3"></panel>
<method name="SelectFrame" arguments="frame">
<![CDATA[
var arr = self.get_children();
for(var i=0;i<arr.length;i++)
{
arr[i].set_border_color("#cccccc");
arr[i].SetButtonEnable(false);
}
if(frame)
{
frame.set_border_color("red");
frame.SetButtonEnable(true);
instance._selectedframe = frame;
}
]]>
</method>
</panel>
<initialize>
<![CDATA[
ImageEditorDocument._framelist = self;
setInterval(function(){
self.AdjustHight();
},100);
self.AdjustHight();
]]>
</initialize>
<method name="AdjustHight">
<![CDATA[
var rect=jsml.get_body_rect();
self.set_left(rect.width-150);
if(rect.height==self.get_height())
return;
self.set_height(rect.height);
]]>
</method>
<method name="Remove">
<![CDATA[
ImageEditorDocument._framelist = null;
self.dispose();
]]>
</method>
</panel>
<execute>
<![CDATA[
plugin.LoadUI = function(ctrl)
{
ctrl.append_child(jsml.class_create_instance("borderlist"));
}
]]>
</execute>
</jsml>

View File

@@ -0,0 +1,519 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="jsml.xsl"?>
<jsml xmlns="http://cutesoft.net/jsml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://cutesoft.net/jsml ../../core/jsml.xsd">
<panel jsml-class="contextmenuitem" height="30" border_color="transparent" border_width="1" css_text="border-radius:3px;" margin="2,3,2,3">
<panel dock="left" width ="26" height="28" vertical_align="middle" horizontal_align="center" margin="-1,0,-1,0">
<panel width="24" margin="3,0,0,0">
<image jsml-local="menu_image" visible="0" border_width="0"></image>
</panel>
</panel>
<panel dock="right" width="18" height="28" vertical_align="middle" horizontal_align="center">
<panel width="18" height="18">
<image jsml-local="menu_subimage" visible="0" border_width="0"></image>
</panel>
</panel>
<panel dock="fill" vertical_align="middle" margin="0,0,0,5" height="28">
<label jsml-local="label_name" vertical_align="middle" padding="1"></label>
</panel>
<initialize>
<![CDATA[
self.get_element().oncontextmenu = function(e)
{
var evt = window.event || e;
if(jsml.msie) evt.cancelBubble = true;
if (evt.stopPropagation) evt.stopPropagation();
if (evt.preventDefault) evt.preventDefault();
evt.returnValue = false;
return false;
}
]]>
</initialize>
<property name="menutext">
<get>
return label_name.get_text();
</get>
<set arguments="val">
label_name.set_text(val);
</set>
</property>
<property name="enabled">
<get>
return self._enabled;
</get>
<set arguments="val">
<![CDATA[
self._enabled = val;
if(val=="0")
{
label_name.set_text_color("gray");
menu_subimage.set_visible(0);
}
else
{
label_name.set_text_color("");
if(self.get_subimage())
menu_subimage.set_visible(1);
}
]]>
</set>
</property>
<property name="menuimage">
<get>
return self._img;
</get>
<set arguments="val">
self._img = val;
menu_image.set_src(val);
menu_image.set_visible(1);
</set>
</property>
<property name="subimage">
<get>
return self._subimg;
</get>
<set arguments="val">
self._subimg = val;
menu_subimage.set_src(val);
if(self.get_enabled()!="0")
menu_subimage.set_visible(1);
</set>
</property>
<attach name="mousehover">
<![CDATA[
var scm = self.get_parent()._doc._subcontextmenu;
if(scm && scm.get_target()!=self && scm != self.get_parent())
{
scm.Remove();
self.get_parent()._doc._subcontextmenu = null;
}
if(self.get_enabled()=="0")
return;
self.set_border_width(1);
self.set_border_color("#FFBD69");
self.set_back_color("#FFE7A2");
]]>
</attach>
<attach name="mouseleave">
<![CDATA[
if(self.get_enabled()=="0")
return;
self.set_border_color("transparent");
self.set_back_color("transparent");
]]>
</attach>
<attach name="click" arguments="sender,evt">
<![CDATA[
if(self.get_enabled()!="0" && !menu_subimage.get_visible())
{
self.get_parent()._doc.$044();
}
var e = window.event || evt.event;
if(jsml.msie) e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
if (e.preventDefault) e.preventDefault();
e.returnValue = false;
return false;
]]>
</attach>
</panel>
<panel jsml-class="canvascontextmenupanel" width="210" height="238" border_color="rgb(169, 169, 169)" border_width="1" css_text="box-shadow: rgb(153, 153, 153) 3px 3px 12px;" background="transparent url(images/menuleft.gif) repeat-y">
<panel jsml-base="contextmenuitem" dock="top" menutext="@Context_Unselect">
<initialize>
<![CDATA[
var sel = instance._doc.get_selection();
if(!sel)
self.set_enabled("0");
]]>
</initialize>
<attach name="click">
<![CDATA[
if(self.get_enabled()=="0")
return;
var layer = instance.FindPixelLayer();
instance._doc.set_selection(null);
instance._doc.$0118();
]]>
</attach>
</panel>
<panel jsml-base="contextmenuitem" dock="top" menutext="@Context_Invert">
<initialize>
<![CDATA[
var sel = instance._doc.get_selection();
if(!sel)
self.set_enabled("0");
]]>
</initialize>
<attach name="click">
<![CDATA[
if(self.get_enabled()=="0")
return;
var _canvas = document.createElement("canvas");
_canvas.width = instance._doc._canvas.width;
_canvas.height = instance._doc._canvas.height;
var _2d = _canvas.getContext("2d");
_2d.fillStyle = instance._doc.GetOption("SelectionPattern");
var _oldselection = instance._doc.get_selection();
instance._doc.set_selection(null);
var w = _canvas.width;
var h = _canvas.height;
var c1 = ToolSelection_Inverse(_oldselection);
_2d.drawImage(c1, 0, 0, w, h);
instance._doc.$0118();
instance._doc.set_selection(_canvas);
instance._doc.$056(_canvas);
instance._doc._invertcount = instance._doc._invertcount+1;
function ToolSelection_Inverse(canvas)
{
var newc = document.createElement("canvas");
newc.width = canvas.width;
newc.height = canvas.height;
var new2d = newc.getContext("2d");
new2d.fillStyle = ImageEditorDocument.GetOption("SelectionPattern");
new2d.fillRect(0, 0, canvas.width, canvas.height);
new2d.globalCompositeOperation = "destination-out"
new2d.drawImage(canvas, 0, 0, canvas.width, canvas.height);
return newc;
}
]]>
</attach>
</panel>
<panel jsml-base="contextmenuitem" dock="top" menutext="@Context_SelectLayer" enabled="0" menuimage="images/select.png" subimage="images/submenu.gif">
<initialize>
<![CDATA[
var sel = instance._doc.get_selection();
if(!sel)
{
setTimeout(function(){
var layer = instance.FindPixelLayer();
if(layer!=null)
{
self.set_enabled("1");
var layername = layer.get_name().length>12?layer.get_name().substr(0,9)+"...":layer.get_name();
self.set_menutext(self.get_menutext() + " ("+ layername + ")");
}
},100);
}
]]>
</initialize>
<attach name="mousehover">
<![CDATA[
if(self.get_enabled()=="0")
return;
var scm = instance._doc._subcontextmenu;
if(scm && scm.get_target()==self)
return;
var cmp = jsml.class_create_instance("subcontextmenuselectlayer", [instance._doc]);
cmp.set_parent(document.body);
cmp.SetPos(instance,self,{x:0,y:60,width:210,height:30});
instance._doc._subcontextmenu = cmp;
]]>
</attach>
</panel>
<panel jsml-base="contextmenuitem" dock="top" menutext="@Context_MoveUp">
<initialize>
<![CDATA[
var layerlist = instance._doc.$073();
var currlayer = instance._doc.get_layer();
if(layerlist.length==0 || layerlist[layerlist.length-1]._layerid==currlayer._layerid)
self.set_enabled("0");
else
{
var layername = currlayer.get_name().length>12?currlayer.get_name().substr(0,9)+"...":currlayer.get_name();
self.set_menutext(self.get_menutext() + " ("+ layername + ")");
}
]]>
</initialize>
<attach name="click">
<![CDATA[
if(self.get_enabled()=="0")
return;
var currlayer = instance._doc.get_layer();
instance._doc.$082(currlayer);
]]>
</attach>
</panel>
<panel jsml-base="contextmenuitem" dock="top" menutext="@Context_Delete">
<initialize>
<![CDATA[
var sel = instance._doc.get_selection();
if(!sel)
self.set_enabled("0");
]]>
</initialize>
<attach name="click">
<![CDATA[
if(self.get_enabled()=="0")
return;
instance._doc.$025();
]]>
</attach>
</panel>
<panel jsml-base="contextmenuitem" dock="top" menutext="@Context_Copy">
<initialize>
<![CDATA[
var sel = instance._doc.get_selection();
if(!sel)
self.set_enabled("0");
]]>
</initialize>
<attach name="click">
<![CDATA[
if(self.get_enabled()=="0")
return;
var sel = instance._doc.get_selection();
//Create a new history using selected area
var newlayer = jsml.class_create_instance("$042", [instance._doc]);
newlayer.set_name(ImageEditorDocument.Text["Layer_Copy"]);
//Draw new layer
var ctx = newlayer._2d;
var layer = instance._doc.get_layer();
var sw = layer._canvas.width;
var sh = layer._canvas.height;
var dw = newlayer._canvas.width;
var dh = newlayer._canvas.height;
ctx.drawImage(layer._canvas, 0 - layer._canvas_x, 0 - layer._canvas_y, dw, dh, 0, 0, dw, dh);
ctx.save();
ctx.globalCompositeOperation = "destination-out";
ctx.drawImage(sel, 0, 0, sel.width, sel.height);
ctx.restore();
instance._doc._clipboard = newlayer;
instance._doc.set_selection(null);
instance._doc.$0118();
]]>
</attach>
</panel>
<panel jsml-base="contextmenuitem" dock="top" menutext="@Context_Paste">
<initialize>
<![CDATA[
if(!instance._doc._clipboard)
self.set_enabled("0");
]]>
</initialize>
<attach name="click">
<![CDATA[
if(self.get_enabled()=="0")
return;
var newlayer = jsml.class_create_instance("$042", [instance._doc]);
newlayer.set_name(ImageEditorDocument.Text["Layer_Paste"]);
var ctx = newlayer._2d;
var sw = instance._doc._clipboard._canvas.width;
var sh = instance._doc._clipboard._canvas.height;
var dw = newlayer._canvas.width;
var dh = newlayer._canvas.height;
ctx.drawImage(instance._doc._clipboard._canvas, 0 - instance._doc._clipboard._canvas_x, 0 - instance._doc._clipboard._canvas_y, dw, dh, 0, 0, dw, dh);
instance._doc.$097(newlayer);
//select this layer
//instance._doc.$015(newlayer);
]]>
</attach>
</panel>
<constructor arguments="doc,pos">
self.panel_constructor();
self._doc = doc;
self._pos = pos;
</constructor>
<initialize>
<![CDATA[
self.get_element().oncontextmenu = function(e)
{
var evt = window.event || e;
if (evt.stopPropagation) evt.stopPropagation();
if (evt.preventDefault) evt.preventDefault();
evt.returnValue = false;
return false;
}
]]>
</initialize>
<method name="Remove">
try {document.body.removeChild(self.get_element());}catch(x){}
</method>
<method name="SetPos">
<![CDATA[
//self._pos = pos;
var pos = self._pos;
var rect=jsml.get_body_rect();
var sw = self.get_current_width();
var sh = self.get_current_height();
var left = pos.x;
if(left+sw>rect.width)
left = rect.width-sw;
var top = pos.y;
if(top+sh>rect.height)
top = rect.height-sh;
var style = self.get_element().style;
style.position = "absolute";
self.set_offset_x(left);
self.set_offset_y(top);
self._pos.rx = left;
self._pos.ry = top;
self._pos.width = sw;
self._pos.height = sh;
]]>
</method>
<method name="FindPixelLayer">
<![CDATA[
var history = self._doc.get_history();
var ls = history._layers;
var layer = null;
for (var i = ls.length - 1; i >= 0; i--) {
var _layer = ls[i];
var tp = self._doc.$0100({x:self._pos.offsetX,y:self._pos.offsetY});
var x = tp.x - _layer._canvas_x;
var y = tp.y - _layer._canvas_y;
var imgdata = _layer._2d.getImageData(x, y, 1, 1);
if (imgdata && imgdata.data && imgdata.data[3] > 0) {
layer = _layer;
break;
}
}
return layer;
]]>
</method>
</panel>
<panel jsml-class="subcontextmenubase">
<constructor arguments="doc">
self.panel_constructor();
self._doc = doc;
</constructor>
<initialize>
<![CDATA[
self.get_element().oncontextmenu = function(e)
{
var evt = window.event || e;
if (evt.stopPropagation) evt.stopPropagation();
if (evt.preventDefault) evt.preventDefault();
evt.returnValue = false;
return false;
}
]]>
</initialize>
<method name="Remove">
try {document.body.removeChild(self.get_element());}catch(x){}
</method>
<method name="SetPos" arguments="parentmenu,target,targetoffset">
<![CDATA[
var parentpos = parentmenu._pos;
self.set_owner(parentmenu);
self.set_target(target);
var rect=jsml.get_body_rect();
var sw = self.get_current_width();
var sh = self.get_current_height();
var left = parentpos.rx + targetoffset.width;
if(left+sw>rect.width)
left = parentpos.rx-sw;
var top = parentpos.ry + targetoffset.y;
if(top+sh>rect.height)
top = top-sh;
var style = self.get_element().style;
style.position = "absolute";
self.set_offset_x(left);
self.set_offset_y(top);
self._pos = {x:left,y:top,width:sw,height:sh};
]]>
</method>
<property name="target">
<get>
return self._target;
</get>
<set>
<![CDATA[
self._target = value;
]]>
</set>
</property>
<property name="owner">
<get>
return self._owner;
</get>
<set>
<![CDATA[
self._owner = value;
]]>
</set>
</property>
</panel>
<panel jsml-class="subcontextmenuselectlayer" jsml-base="subcontextmenubase" width="210" height="68" border_color="transparent" border_width="1" css_text="box-shadow: rgb(153, 153, 153) 3px 3px 12px;" background="transparent url(images/menuleft.gif) repeat-y">
<panel jsml-base="contextmenuitem" dock="top" menutext="@Context_SetSelection" enabled="0">
<initialize>
<![CDATA[
var sel = instance._doc.get_selection();
if(!sel)
{
try
{
setTimeout(function(){
var layer = instance.get_owner().FindPixelLayer();
if(layer!=null)
self.set_enabled("1");
},100);
}catch(x){}
}
]]>
</initialize>
<attach name="click">
<![CDATA[
if(self.get_enabled()=="0")
return;
var layer = instance.get_owner().FindPixelLayer();
if(layer==null)
return;
instance._doc.$015(layer);
//instance._doc.set_layer(layer);
]]>
</attach>
</panel>
<panel jsml-base="contextmenuitem" dock="top" menutext="@Context_SelectLayer" enabled="0">
<initialize>
<![CDATA[
var sel = instance._doc.get_selection();
if(!sel)
{
try
{
setTimeout(function(){
var layer = instance.get_owner().FindPixelLayer();
if(layer!=null)
self.set_enabled("1");
},100);
}catch(x){}
}
]]>
</initialize>
<attach name="click">
<![CDATA[
if(self.get_enabled()=="0")
return;
var layer = instance.get_owner().FindPixelLayer();
if(layer==null)
return;
//instance._doc.$015(layer);
instance._doc.set_layer(layer);
]]>
</attach>
</panel>
</panel>
<execute>
<![CDATA[
plugin.LoadUI = function(ctrl,pos)
{
var cmp = jsml.class_create_instance("canvascontextmenupanel",[doc, pos]);
cmp.set_parent(ctrl);
cmp.SetPos(pos);
doc._contextmenu = cmp;
}
]]>
</execute>
</jsml>

View File

@@ -0,0 +1,226 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="jsml.xsl"?>
<jsml xmlns="http://cutesoft.net/jsml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://cutesoft.net/jsml ../../JSML/jsml.xsd">
<panel jsml-class="createdialog_select" dock="top" back_color="rgba(220,220,220,1)" border_color="rgba(204,204,204,1)" border_width="1">
<label jsml-local="label" dock="fill" horizontal_align="left" padding="0,0,0,20" font_size="26px" vertical_align="middle" cursor="pointer">
</label>
<attach name="mousehover">
<![CDATA[
self.set_back_color("rgba(172,203,222,1)");
self.set_border_color("rgba(158,187,205,1)");
]]>
</attach>
<attach name="mouseleave">
<![CDATA[
self.set_back_color("rgba(220,220,220,1)");
self.set_border_color("rgba(204,204,204,1)");
]]>
</attach>
<property name="label_text">
<get>
return label.get_text();
</get>
<set>
label.set_text(value);
</set>
</property>
</panel>
<panel back_color="rgba(128,128,128,0.4)" dock="over" jsml-class="createdialog" vertical_align="middle" horizontal_align="center">
<panel jsml-local="basic" width="400" height="250" back_color="white" padding="0,10,10,10" css_text="border-radius:5px;">
<panel dock="top" height="25" vertical_align="middle" margin="5,-5,0,0">
<image src="images/close.gif" width="16" cursor="default" dock="right" tooltip="@Title_Close">
<attach name="click">
instance.dispose();
</attach>
</image>
</panel>
<panel dock="top" height="60" jsml-base="createdialog_select" label_text="@Tool_New_Canvas">
<attach name="click">
basic.set_visible(0);
canvastype.set_visible(1);
</attach>
</panel>
<panel dock="top" height="60" jsml-base="createdialog_select" label_text="@Tool_New_FromURL" margin="10,0,0,0">
<attach name="click">
basic.set_visible(0);
urltype.set_visible(1);
</attach>
</panel>
<panel dock="top" height="60" jsml-base="createdialog_select" label_text="@Tool_New_File" margin="10,0,0,0" vertical_align="middle">
<initialize>
if(typeof(FileReader)=="undefined")
{
self.set_visible(0);
}
</initialize>
<attach name="click">
<![CDATA[
var input=document.getElementById("imageeditorloadfile");
if(!input.files)
{
alert(ImageEditorDocument.Text["FileAPI"]);
return;
}
input.onchange=function()
{
if(!confirm(ImageEditorDocument.Text["ConfirmCreate"]))
{
input.value = "";
return;
}
var file=input.files[0];
ImageEditorDocument.$0109(file,true);
input.value = "";
instance.dispose();
}
input.click();
]]>
</attach>
</panel>
<initialize>
if(typeof(FileReader)=="undefined")
self.set_height(180);
</initialize>
</panel>
<panel jsml-local="canvastype" visible="0" width="320" height="190" back_color="#eeeeee" border_color="#cccccc" border_width="1" padding="10,20,10,20">
<panel dock="top" height="30" margin="10,0,0,0">
<label dock="left" width="110" css_text="font-weight:bold;" vertical_align="middle" text="@Tool_Width"></label>
<textbox jsml-local="txt_width" dock="left" width="100">
<initialize>
<![CDATA[
ImageEditorDocument.$093(self._input);
]]>
</initialize>
</textbox>
</panel>
<panel dock="top" height="30" margin="10,0,0,0">
<label dock="left" width="110" css_text="font-weight:bold;" vertical_align="middle" text="@Tool_Height"></label>
<textbox jsml-local="txt_height" dock="left" width="100">
<initialize>
<![CDATA[
ImageEditorDocument.$093(self._input);
]]>
</initialize>
</textbox>
</panel>
<panel dock="top" height="30" margin="10,0,0,0">
<label dock="left" width="110" css_text="font-weight:bold;" vertical_align="middle" text="@Tool_New_FillColor"></label>
<dropdown jsml-local="ddl_fillcolor" dock="left" width="100">
<listitem value="transparent" text="@Select_Color_Transparent"></listitem>
<listitem value="backcolor" text="@Select_Color_BackColor"></listitem>
<listitem value="forecolor" text="@Select_Color_ForeColor"></listitem>
</dropdown>
</panel>
<panel dock="top" height="30" margin="10,0,0,0">
<button text="@Btn_Apply" dock="left" css_text="border:solid #999999 1px; background:#f3f3f3;color:#333333;border-radius:2px; -webkit-border-radius:2px;" width="60" vertical_align="middle" margin="0,5,0,80">
<attach name="click">
<![CDATA[
var w = txt_width.get_text();
var h = txt_height.get_text();
if(!w)
{
txt_width.focus();
return;
}
if(!h)
{
txt_height.focus();
return;
}
if(isNaN(w) || parseInt(w)<=0)
{
txt_width.focus();
alert(ImageEditorDocument.Text["CreateWidth"]);
return;
}
if(isNaN(h) || parseInt(h)<=0)
{
txt_height.focus();
alert(ImageEditorDocument.Text["CreateHeight"]);
return;
}
if(!confirm(ImageEditorDocument.Text["ConfirmCreate"]))
return;
var fillcolor = ddl_fillcolor.get_text();
var backcolor = ImageEditorDocument.GetOption("Ctx_BackColor");
var forecolor = ImageEditorDocument.GetOption("Ctx_ForeColor");
ImageEditorDocument.$090();
ImageEditorDocument._canvas.width = parseInt(w);
ImageEditorDocument._canvas.height = parseInt(h);
ImageEditorDocument.SetOption("CanvasRealSize", {width:parseInt(w),height:parseInt(h)});
ImageEditorDocument.$0116();
ImageEditorDocument._history = null;
ImageEditorDocument._history = jsml.class_create_instance("$029", [ImageEditorDocument]);
ImageEditorDocument._history.set_name(ImageEditorDocument.Text["Layer_Background"]);
if(fillcolor!="transparent")
{
var layer = jsml.class_create_instance("$042", [ImageEditorDocument]);
layer.set_name(ImageEditorDocument.Text["Layer_Background"]);
layer._2d.fillStyle = fillcolor=="backcolor"?backcolor:forecolor;
layer._2d.fillRect(0,0,layer._canvas.width,layer._canvas.height);
ImageEditorDocument._history._layers[0] = layer;
ImageEditorDocument._history._selectLayer = layer;
}
ImageEditorDocument.$055([ImageEditorDocument._history]);
ImageEditorDocument.set_SelectedTool(null);
ImageEditorDocument._canvas.calcpos();
instance.dispose();
]]>
</attach>
</button>
<button text="@Btn_Cancel" dock="left" css_text="border:solid #999999 1px; background:#f3f3f3;color:#333333;border-radius:2px; -webkit-border-radius:2px;" width="60" vertical_align="middle">
<attach name="click">
<![CDATA[
canvastype.set_visible(0);
basic.set_visible(1);
]]>
</attach>
</button>
</panel>
</panel>
<panel jsml-local="urltype" visible="0" width="480" height="110" back_color="#eeeeee" border_color="#cccccc" border_width="1" padding="10,20,10,20">
<panel dock="top" height="30" margin="10,0,0,0">
<label dock="left" width="80" css_text="font-weight:bold;" vertical_align="middle" text="@Tool_New_URL"></label>
<textbox jsml-local="txt_imageurl" dock="left" width="360"></textbox>
</panel>
<panel dock="top" height="30" margin="10,0,0,0">
<button text="@Btn_Apply" dock="left" css_text="border:solid #999999 1px; background:#f3f3f3;color:#333333;border-radius:2px; -webkit-border-radius:2px;" width="60" vertical_align="middle" margin="0,5,0,80">
<attach name="click">
<![CDATA[
if(!txt_imageurl.get_text())
{
txt_imageurl.focus();
//alert(ImageEditorDocument.Text["NeedUrl"]);
return;
}
if(!confirm(ImageEditorDocument.Text["ConfirmCreate"]))
return;
ImageEditorDocument.LoadUrl("",txt_imageurl.get_text());
instance.dispose();
]]>
</attach>
</button>
<button text="@Btn_Cancel" dock="left" css_text="border:solid #999999 1px; background:#f3f3f3;color:#333333;border-radius:2px; -webkit-border-radius:2px;" width="60" vertical_align="middle">
<attach name="click">
<![CDATA[
urltype.set_visible(0);
basic.set_visible(1);
]]>
</attach>
</button>
</panel>
</panel>
</panel>
<execute>
<![CDATA[
plugin.LoadUI = function(ctrl)
{
ctrl.append_child(jsml.class_create_instance("createdialog"));
}
]]>
</execute>
</jsml>

View File

@@ -0,0 +1,376 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="jsml.xsl"?>
<jsml xmlns="http://cutesoft.net/jsml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://cutesoft.net/jsml ../../core/jsml.xsd">
<panel jsml-class="effectapplybutton" dock="top" height="20" margin="5,2,5,3">
<button text="@Btn_Apply" dock="right" width="60" margin="0,15,0,5" vertical_align="middle" horizontal_align="center" css_text="border:solid #999999 1px; background:#f3f3f3;color:#333333;border-radius:2px; -webkit-border-radius:2px;">
<attach name="click">
<![CDATA[
instance._effectbox.$0106(true);
instance._mybox.dispose();
]]>
</attach>
</button>
<constructor arguments="effectbox,mybox">
<![CDATA[
self.panel_constructor();
self._effectbox = effectbox;
self._mybox = mybox;
]]>
</constructor>
</panel>
<panel jsml-class="effectbutton" width="70" height="80" margin="3" border_color="#8f8f8f" border_width="0" css_text="border-radius:2px;">
<image jsml-local="icon" dock="top" height ="56" margin="3,3,0,3" vertical_align="middle"></image>
<label jsml-local="txt" dock="fill" margin="0,3,0,3" vertical_align="middle" horizontal_align="center"></label>
<attach name="click">
<![CDATA[
self.get_parent().Select(self);
self.get_parent().get_parent().ShowApply(self);
]]>
</attach>
<attach name="mousehover">
<![CDATA[
self.set_back_color("#bfd6e6");
self.get_parent().get_parent().CloseChild();
]]>
</attach>
<attach name="mouseleave">
<![CDATA[
if(self.get_selected())
return;
self.set_back_color("");
]]>
</attach>
<property name="selected">
<get>
return self._selected;
</get>
<set>
<![CDATA[
self._selected=value;
]]>
</set>
</property>
<property name="src">
<get>
return self._src;
</get>
<set>
<![CDATA[
self._src=value;
icon.set_src(value);
]]>
</set>
</property>
<property name="effectname">
<get>
return self._effectname;
</get>
<set>
<![CDATA[
self._effectname=value;
icon.set_src("images/effect/sample_"+value+".gif");
]]>
</set>
</property>
<property name="title">
<get>
return self._title;
</get>
<set>
<![CDATA[
self._title=value;
txt.set_text(value);
]]>
</set>
</property>
</panel>
<panel jsml-class="effectpanel" width="390" height="205" back_color="white">
<panel jsml-local="backpanel" back_color="gray" opacity="30" visible="0" dock="over" vertical_align="middle" horizontal_align="center">
<image jsml-local="backimg" src="images/loading.gif" back_color="transparent" vertical_align="middle" horizontal_align="center" width="120" height="120" css_text="z-index:101;"></image>
<initialize>
<![CDATA[
var style=self._element.style;
style.zIndex="100";
function repos()
{
if(self._removed || self._jsml_disposed)return;
setTimeout(repos,100);
self.set_parent(document.body);
var rect=jsml.get_body_rect();
style.position="absolute";
style.top=rect.top+"px";
style.left=rect.left+"px";
style.width = rect.width + "px";
style.height = rect.height + "px";
backimg._element.style.top = parseInt((rect.height-120)/2)+"px";
backimg._element.style.left = parseInt((rect.width-120)/2)+"px";
}
//repos();
]]>
</initialize>
<method name="Remove">
//self._removed = true;
//document.body.removeChild(self.get_element());
</method>
</panel>
<panel dock="bottom" height="30" border_color="#8f8f8f" border_width="1,0,0,0" padding="0,5,0,5">
<button text="@Btn_Cancel" dock="right" width="60" margin="3,0,3,5" vertical_align="middle" horizontal_align="center" css_text="border:solid #999999 1px; background:#f3f3f3;color:#333333;border-radius:2px; -webkit-border-radius:2px;">
<attach name="click">
<![CDATA[
doc.$0118();
backpanel.Remove();
instance.dispose();
instance.get_box().dispose();
]]>
</attach>
</button>
<button text="@Btn_Apply" dock="right" width="60" margin="3,0,3,5" vertical_align="middle" horizontal_align="center" css_text="border:solid #999999 1px; background:#f3f3f3;color:#333333;border-radius:2px; -webkit-border-radius:2px;">
<attach name="click">
<![CDATA[
if(instance._effect)
{
instance.$0106();
}
else
{
backpanel.Remove();
instance.dispose();
instance.get_box().dispose();
}
]]>
</attach>
</button>
<checkbox jsml-local="cbx_all" dock="right" checked="1" vertical_align="middle" margin="4,0,0,0"></checkbox>
<label dock="fill" text_align="right" vertical_align="middle" text="@Effect_AllLayer"></label>
</panel>
<panel dock="fill">
<panel dock="flow" jsml-base="effectbutton" title="@Effect_S_Aqua" effectname="aqua"/>
<panel dock="flow" jsml-base="effectbutton" title="@Effect_S_Vivid" effectname="vivid"/>
<panel dock="flow" jsml-base="effectbutton" title="@Effect_S_Coldblue" effectname="coldblue"/>
<panel dock="flow" jsml-base="effectbutton" title="@Effect_S_Fresh" effectname="fresh"/>
<panel dock="flow" jsml-base="effectbutton" title="@Effect_S_Concorde" effectname="concorde"/>
<panel dock="flow" jsml-base="effectbutton" title="@Effect_S_Elegant" effectname="elegant"/>
<panel dock="flow" jsml-base="effectbutton" title="@Effect_S_Indiglow" effectname="indiglow"/>
<panel dock="flow" jsml-base="effectbutton" title="@Effect_S_Old" effectname="old"/>
<panel dock="flow" jsml-base="effectbutton" title="@Effect_S_Singe" effectname="singe"/>
<panel dock="flow" jsml-base="effectbutton" title="@Effect_S_Softfocus" effectname="softfocus"/>
<method name="Select" arguments="btn">
<![CDATA[
var arr = self.get_children();
for(var i=0;i<arr.length;i++)
{
arr[i].set_selected(null);
arr[i].set_back_color("");
}
if(btn)
{
instance._effect = btn.get_effectname();
btn.set_selected(true);
btn.set_back_color("#bfd6e6");
instance.Preview();
}
]]>
</method>
</panel>
<property name="box">
<get>
return self._box;
</get>
<set>
self._box = value;
</set>
</property>
<method name="CloseChild">
<![CDATA[
if(self._effectbox)self._effectbox.dispose();
self._effectbox=null;
]]>
</method>
<method name="ShowApply" arguments="tag">
<![CDATA[
var effectbox=jsml.class_create_instance("floatbox");
effectbox.set_height(31);
effectbox.set_manualclose(true);
effectbox.show(tag.get_element(),0,10,{"floatMode":"r-b"});
instance._effectbox = effectbox;
var bluroption = jsml.class_create_instance("effectapplybutton",[instance,effectbox]);
effectbox.append_child(bluroption);
]]>
</method>
<method name="$0106" arguments="keepopen">
<![CDATA[
if(self._effect)
{
doc.$0106(DrawEffect);
}
function DrawEffect()
{
self.Preview(true,keepopen);
}
]]>
</method>
<method name="Preview" arguments="isapply,keepopen">
<![CDATA[
if(!self._effect) return;
backpanel.set_visible(1);
var effect = jsml.class_create_instance("$035");
var method = self._effect;
setTimeout(Func,100);
function Func(){
var isall = cbx_all.get_checked();
var rs = doc.GetOption("CanvasRealSize");
doc._canvas.width = rs.width;
doc._canvas.height = rs.height;
doc._2d.clearRect(0,0, doc._canvas.width, doc._canvas.height);
try{doc._canvas.calcpos();}catch(x){}
var layers = doc._history._layers;
var currlayer = doc.get_layer();
var sel = doc.get_selection();
for(var i=0;i<layers.length;i++)
{
var layer = layers[i];
if(doc._history.$040(layer, "Hidden"))
continue;
var sx = layer._canvas_x;
var sy = layer._canvas_y;
var dx = layer._canvas.width;
var dy = layer._canvas.height;
if(isall || currlayer._layerid==layer._layerid)
{
var tcanvas = document.createElement("canvas");
tcanvas.width = dx;
tcanvas.height = dy;
var t2d = tcanvas.getContext("2d");
t2d.drawImage(layer._canvas,0,0);
DoEffect(method,tcanvas);
if(sel)
{
t2d.save();
t2d.globalCompositeOperation = "destination-out";
t2d.drawImage(sel, -layer._canvas_x, -layer._canvas_y, sel.width, sel.height);
t2d.restore();
if (layer._canvas_x < 0)
t2d.clearRect(0, 0, -layer._canvas_x, layer._canvas.height);
if (layer._canvas_y < 0)
t2d.clearRect(0, 0, layer._canvas.width, -layer._canvas_y);
var wextra = layer._canvas_x + layer._canvas.width - rs.width;
if (wextra > 0)
t2d.clearRect(-layer._canvas_x + rs.width, 0, wextra, layer._canvas.height);
var hextra = layer._canvas_y + layer._canvas.height - rs.height;
if (hextra > 0)
t2d.clearRect(0, -layer._canvas_y + rs.height, layer._canvas.width, hextra);
t2d.save();
t2d.globalCompositeOperation = "destination-over";
t2d.drawImage(layer._canvas,0,0);
t2d.restore();
}
if(isapply)
layer._canvas = tcanvas;
doc._2d.drawImage(tcanvas, sx, sy, dx, dy);
}
else
doc._2d.drawImage(layer._canvas, sx, sy, dx, dy);
}
if(sel)
doc.$056(sel, "noanimation");
//if(isapply && sel)
// doc.set_selection(null);
backpanel.set_visible(0);
if(isapply)
self._effect = null;
if(isapply && !keepopen)
{
backpanel.Remove();
self.dispose();
self.get_box().dispose();
}
}
function DoEffect(m,canvas)
{
switch(m)
{
case "aqua":
effect.$075(canvas,0,48,0);
break;
case "vivid":
effect.$0125(canvas,1.36);
break;
case "coldblue":
effect.$075(canvas,0,30,70);
break;
case "fresh":
effect.$075(canvas,10,0,4);
break;
case "concorde":
effect.$0108(canvas,80);
effect.$0104(canvas);
break;
case "elegant":
effect.$075(canvas,20,6,0);
break;
case "indiglow":
effect.$0125(canvas,0.88);
effect.$0108(canvas,80);
effect.$0131(canvas,0,40,0);
break;
case "old":
effect.$075(canvas,55,0,-55);
effect.$0125(canvas,0.8);
break;
case "singe":
effect.$075(canvas,36,0,-50);
break;
case "softfocus":
effect.$0127(canvas,3);
effect.$0131(canvas,0,0,6);
break;
}
}
]]>
</method>
<attach name="attach_dom">
<![CDATA[
if(self._eventattached)return;
self._eventattached=true;
self._handleClosing=function()
{
doc.$0118();
}
self.get_box().attach_event("closing",self._handleClosing);
]]>
</attach>
<attach name="detach_dom">
<![CDATA[
self._eventattached=false;
self.get_box().detach_event("closing",self._handleClosing);
]]>
</attach>
</panel>
<execute>
<![CDATA[
plugin.LoadUI = function(ctrl)
{
var pl = jsml.class_create_instance("effectpanel");
pl.set_box(ctrl);
ctrl.append_child(pl);
}
]]>
</execute>
</jsml>

View File

@@ -0,0 +1,501 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="jsml.xsl"?>
<jsml xmlns="http://cutesoft.net/jsml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://cutesoft.net/jsml ../../JSML/jsml.xsd">
<panel jsml-class="propertypanel" width="520" height="360" border_width="1" border_color="Gray" css_text="display:none;">
<panel jsml-local="backpanel" back_color="gray" opacity="20">
<initialize>
<![CDATA[
var style=self._element.style;
style.zIndex="987653";
function repos()
{
if(self._removed || self._jsml_disposed)return;
setTimeout(repos,100);
self.set_parent(document.body);
var rect=jsml.get_body_rect();
style.position="absolute";
style.top=rect.top+"px";
style.left=rect.left+"px";
style.width = rect.width + "px";
style.height = rect.height + "px";
}
repos();
]]>
</initialize>
<method name="Remove">
self._removed = true;
document.body.removeChild(self.get_element());
</method>
</panel>
<panel dock="top" height="30" back_color="#cccccc" vertical_align="middle">
<label jsml-local="label_layername" dock="fill" css_text="font-weight:bold;" margin="5" text="@Property_Header" vertical_align="middle" width="150"></label>
<attach name="mousedown" arguments="jevent,devent">
instance.start_move_offset(devent);
</attach>
</panel>
<panel dock="left" width="120" back_color="#eeeeee">
<panel dock="fill" margin="5" border_width="1" border_color="Gray">
<label dock="top" height="20" css_text="font-weight:bold;" margin="5" text="@Property_GroupTitle" vertical_align="middle" width="10" overflow="visible"></label>
<panel dock="fill" border_width="1,0,0,0" border_color="Gray" padding="5">
<panel jsml-local="shadowtab" height="25" dock="top" border_width="0,0,1,0" border_color="white" vertical_align="middle">
<htmlcontrol width="20" dock="left" vertical_align="middle">
<xmldata>
<input id="cbx_shadow" type="checkbox">
</input>
</xmldata>
<attach name="click">
instance.Preview("ShadowEnabled",self.find_element("cbx_shadow").checked);
</attach>
</htmlcontrol>
<label left="25" text="@Property_GroupShadow" vertical_align="middle" width="10" overflow="visible">
<attach name="click">
instance.ShowContainer(shadowcontainer,shadowtab);
instance.find_element("cbx_shadow").checked = true;
instance.Preview("ShadowEnabled", true);
</attach>
</label>
</panel>
<panel jsml-local="glowouttab" height="25" dock="top" border_width="0,0,1,0" border_color="white" vertical_align="middle">
<htmlcontrol width="20" dock="left" vertical_align="middle">
<xmldata>
<input id="cbx_glowout" type="checkbox">
</input>
</xmldata>
<attach name="click">
instance.Preview("GlowOutEnabled",self.find_element("cbx_glowout").checked);
</attach>
</htmlcontrol>
<label left="25" text="@Property_GroupOutGlow" vertical_align="middle" width="10" overflow="visible">
<attach name="click">
instance.ShowContainer(glowoutcontainer,glowouttab);
instance.find_element("cbx_glowout").checked = true;
instance.Preview("GlowOutEnabled", true);
</attach>
</label>
</panel>
<panel jsml-local="glowintab" height="25" dock="top" border_width="0,0,1,0" border_color="white" vertical_align="middle">
<htmlcontrol width="20" dock="left" vertical_align="middle">
<xmldata>
<input id="cbx_glowin" type="checkbox">
</input>
</xmldata>
<attach name="click">
instance.Preview("GlowInEnabled",self.find_element("cbx_glowin").checked);
</attach>
</htmlcontrol>
<label left="25" text="@Property_GroupInGlow" vertical_align="middle" width="10" overflow="visible">
<attach name="click">
instance.ShowContainer(glowincontainer,glowintab);
instance.find_element("cbx_glowin").checked = true;
instance.Preview("GlowInEnabled", true);
</attach>
</label>
</panel>
</panel>
</panel>
</panel>
<panel jsml-local="optioncontainer" dock="fill" back_color="white" padding="5">
<panel dock="bottom" height="30">
<button text="@Btn_Save" left="40" css_text="border:solid #999999 1px; background:#f3f3f3;color:#333333;border-radius:2px; -webkit-border-radius:2px;">
<attach name="click">
<![CDATA[
var his=ImageEditorDocument.get_history()
var lay=instance.get_layer();
lay.$010();
ImageEditorDocument.$0118();
document.body.removeChild(instance.get_element());
backpanel.Remove();
]]>
</attach>
</button>
<button text="@Btn_Cancel" left="130" css_text="border:solid #999999 1px; background:#f3f3f3;color:#333333;border-radius:2px; -webkit-border-radius:2px;">
<attach name="click">
<![CDATA[
var his=ImageEditorDocument.get_history()
var lay=instance.get_layer();
for(var p in instance._propbackup)
his.$041(lay,p,instance._propbackup[p]);
if(lay.$010())
ImageEditorDocument.$0118();
document.body.removeChild(instance.get_element());
backpanel.Remove();
]]>
</attach>
</button>
</panel>
<panel jsml-local="shadowcontainer" dock="fill" visible="1">
<panel dock="top" height="30">
<panel dock="left" vertical_align="middle">
<label width="50" text="@Property_Blur"></label>
</panel>
<panel dock="fill" vertical_align="middle">
<textbox text="0" jsml-local="tb_shadowblur">
<initialize>
<![CDATA[
ImageEditorDocument.$093(self._input);
self._input.onblur=function()
{
instance.Preview("ShadowBlur",self.get_text());
}
]]>
</initialize>
</textbox>
</panel>
</panel>
<panel dock="top" height="30">
<panel dock="left" vertical_align="middle">
<label width="55" text="@Property_OffsetX"></label>
</panel>
<panel dock="fill" vertical_align="middle">
<textbox text="0" jsml-local="tb_shadowx">
<initialize>
<![CDATA[
ImageEditorDocument.$093(self._input);
self._input.onblur=function()
{
instance.Preview("ShadowX",self.get_text());
}
]]>
</initialize>
</textbox>
</panel>
</panel>
<panel dock="top" height="30">
<panel dock="left" vertical_align="middle">
<label width="55" text="@Property_OffsetY"></label>
</panel>
<panel dock="fill" vertical_align="middle">
<textbox text="0" jsml-local="tb_shadowy">
<initialize>
<![CDATA[
ImageEditorDocument.$093(self._input);
self._input.onblur=function()
{
instance.Preview("ShadowY",self.get_text());
}
]]>
</initialize>
</textbox>
</panel>
</panel>
<panel dock="top" height="30">
<panel dock="left" vertical_align="middle">
<label width="50" text="@Property_Color"></label>
</panel>
<panel dock="fill" vertical_align="middle">
<panel jsml-local="tb_shadowcolor" width="20" height="20" border_color="#cccccc" border_width="1">
<attach name="click" arguments="sender,evt">
<![CDATA[
//shadowcolorpicker.set_target(self);
var cp = ImageEditorDocument.$050();
cp.set_target(self);
cp.set_visible(1);
//var style = cp._element.style;
function AdjustPos()
{
var target = self.get_element();
var y = 0;
var x = 0;
var iy = 0;
while(target != document.body)
{
if(target == instance.get_element())
iy = y;
x += parseInt(target.offsetLeft)||0;
y += parseInt(target.offsetTop)||0;
target = target.parentNode;
}
var left = x + self.get_current_width() + 5;
var top = y;
if(top<0) top =0;
cp.set_offset_x(left + 28);
cp.set_offset_y(top - iy + 2);
}
AdjustPos();
ImageEditorDocument.CancelBubble(evt);
return false;
]]>
</attach>
<method name="SaveColor" arguments="color">
self.set_back_color(color);
//instance.$041("ShadowColor",color);
instance.Preview("ShadowColor",color);
</method>
</panel>
</panel>
</panel>
</panel>
<panel jsml-local="glowoutcontainer" dock="fill" visible="0">
<panel dock="top" height="30">
<panel dock="left" vertical_align="middle">
<label width="50" text="@Property_GlowWidth"></label>
</panel>
<panel dock="fill" vertical_align="middle">
<textbox text="3" jsml-local="tb_glowoutwidth">
<initialize>
<![CDATA[
ImageEditorDocument.$093(self._input);
self._input.onblur=function()
{
var val = self.get_text();
if(val!=null && val.length>0 && isNaN(val))
{
alert(ImageEditorDocument.Text["NumberValid"]);
return;
}
if(parseInt(val)<0)
{
alert(ImageEditorDocument.Text["NumberValidZero"]);
return;
}
instance.Preview("GlowOutWidth", val);
}
]]>
</initialize>
</textbox>
</panel>
</panel>
<panel dock="top" height="30">
<panel dock="left" vertical_align="middle">
<label width="50" text="@Property_Color"></label>
</panel>
<panel dock="fill" vertical_align="middle">
<panel jsml-local="tb_glowoutcolor" width="20" height="20" border_color="#cccccc" border_width="1">
<attach name="click" arguments="sender,evt">
<![CDATA[
//glowoutcolorpicker.set_target(self);
var cp = ImageEditorDocument.$050();
cp.set_target(self);
cp.set_visible(1);
//var style = cp._element.style;
function AdjustPos()
{
var target = self.get_element();
var y = 0;
var x = 0;
var iy = 0;
while(target != document.body)
{
if(target == instance.get_element())
iy = y;
x += parseInt(target.offsetLeft)||0;
y += parseInt(target.offsetTop)||0;
target = target.parentNode;
}
var left = x + self.get_current_width() + 5;
var top = y;
if(top<0) top =0;
cp.set_offset_x(left + 28);
cp.set_offset_y(top - iy + 2);
}
AdjustPos();
ImageEditorDocument.CancelBubble(evt);
return false;
]]>
</attach>
<method name="SaveColor" arguments="color">
self.set_back_color(color);
instance.Preview("GlowOutColor",color);
</method>
</panel>
</panel>
</panel>
</panel>
<panel jsml-local="glowincontainer" dock="fill" visible="0">
<panel dock="top" height="30">
<panel dock="left" vertical_align="middle">
<label width="50" text="@Property_GlowWidth"></label>
</panel>
<panel dock="fill" vertical_align="middle">
<textbox text="3" jsml-local="tb_glowinwidth">
<initialize>
<![CDATA[
ImageEditorDocument.$093(self._input);
self._input.onblur=function()
{
var val = self.get_text();
if(val!=null && val.length>0 && isNaN(val))
{
alert(ImageEditorDocument.Text["NumberValid"]);
return;
}
if(parseInt(val)<0)
{
alert(ImageEditorDocument.Text["NumberValidZero"]);
return;
}
instance.Preview("GlowInWidth", val);
}
]]>
</initialize>
</textbox>
</panel>
</panel>
<panel dock="top" height="30">
<panel dock="left" vertical_align="middle">
<label width="50" text="@Property_Color"></label>
</panel>
<panel dock="fill" vertical_align="middle">
<panel jsml-local="tb_glowincolor" width="20" height="20" border_color="#cccccc" border_width="1">
<attach name="click" arguments="sender,evt">
<![CDATA[
//glowincolorpicker.set_target(self);
var cp = ImageEditorDocument.$050();
cp.set_target(self);
cp.set_visible(1);
//var style = cp._element.style;
function AdjustPos()
{
var target = self.get_element();
var y = 0;
var x = 0;
var iy = 0;
while(target != document.body)
{
if(target == instance.get_element())
iy = y;
x += parseInt(target.offsetLeft)||0;
y += parseInt(target.offsetTop)||0;
target = target.parentNode;
}
var left = x + self.get_current_width() + 5;
var top = y;
if(top<0) top =0;
cp.set_offset_x(left + 28);
cp.set_offset_y(top - iy + 2);
}
AdjustPos();
ImageEditorDocument.CancelBubble(evt);
return false;
]]>
</attach>
<method name="SaveColor" arguments="color">
self.set_back_color(color);
instance.Preview("GlowInColor",color);
</method>
</panel>
</panel>
</panel>
</panel>
</panel>
<method name="Preview" arguments="name,val">
<![CDATA[
var his=ImageEditorDocument.get_history();
var lay=instance.get_layer();
if(!self._propsaved[name] )
{
self._propbackup[name]=his.$040(lay,name);
self._propsaved[name]=true;
}
his.$041(lay,name,val);
lay.$010()
ImageEditorDocument.$0118();
]]>
</method>
<method name="ShowContainer" arguments="ctn,tab">
<![CDATA[
var ctnarr = [shadowcontainer,glowoutcontainer,glowincontainer];
var tabarr = [shadowtab,glowouttab,glowintab];
for(var i=0;i<ctnarr.length;i++)
{
ctnarr[i].set_visible(0);
tabarr[i].set_back_color("");
}
ctn.set_visible(1);
tab.set_back_color("#e5eff3");
]]>
</method>
<method name="$040" arguments="name">
<![CDATA[
var his=ImageEditorDocument.get_history()
var lay=self.get_layer();
return his.$040(lay,name);
]]>
</method>
<method name="$041" arguments="name,val">
<![CDATA[
var his=ImageEditorDocument.get_history()
var lay=self.get_layer();
return his.$041(lay,name,val);
]]>
</method>
<property name="layer">
<get>
var layeritem = self.get_layeritem();
if(!layeritem) return null;
return layeritem.get_layer();
</get>
</property>
<property name="layeritem">
<get>
return self._layeritem;
</get>
<set>
self._layeritem = value;
//label_layername.set_text(self.get_layer().get_name());
//set attributes
//Shadow
instance.find_element("cbx_shadow").checked = self.$040("ShadowEnabled") || false;
tb_shadowx.set_text(self.$040("ShadowX")||"5");
tb_shadowy.set_text(self.$040("ShadowY")||"5");
tb_shadowblur.set_text(self.$040("ShadowBlur")||"0");
tb_shadowcolor.set_back_color(self.$040("ShadowColor")||"rgba(0,0,0,1)");
instance.find_element("cbx_glowout").checked = self.$040("GlowOutEnabled") || false;
tb_glowoutwidth.set_text(self.$040("GlowOutWidth")||"5");
tb_glowoutcolor.set_back_color(self.$040("GlowOutColor")||"rgba(255,255,255,0.5)");
instance.find_element("cbx_glowin").checked = self.$040("GlowInEnabled") || false;
tb_glowinwidth.set_text(self.$040("GlowInWidth")||"5");
tb_glowincolor.set_back_color(self.$040("GlowInColor")||"rgba(255,255,255,0.5)");
</set>
</property>
<attach name="click">
<![CDATA[
]]>
</attach>
<initialize>
<![CDATA[
self._propsaved = {};
self._propbackup = {};
var style=self._element.style;
style.zIndex="987654";
var myself = self;
function AdjustPos()
{
var x = (document.body.offsetWidth - myself.get_width())/2;
var y = (document.body.offsetHeight - myself.get_height())/2;
myself.set_offset_x(x);
myself.set_offset_y(y);
style.position="absolute";
//myself.set_visible(1);
style.display = "";
}
setTimeout(AdjustPos, 50);
]]>
</initialize>
</panel>
<execute>
<![CDATA[
plugin.LoadUI = function(layer)
{
var propertypanel = jsml.class_create_instance("propertypanel");
propertypanel.set_parent(document.body);
propertypanel.set_layeritem(layer);
}
]]>
</execute>
</jsml>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,216 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="jsml.xsl"?>
<jsml xmlns="http://cutesoft.net/jsml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://cutesoft.net/jsml ../../JSML/jsml.xsd">
<panel jsml-class="watermark_item" height="84" width="140" border_color="#cccccc" border_width="1">
<property name="framepadding">
<get>
return self._framepadding || [0,0];
</get>
<set arguments="val">
<![CDATA[
var arr = val.split(",");
if(arr.length==1) {
var ret = IntSure(arr[0]);
self._framepadding = [ret,ret];
return;
}
self._framepadding = [0,0];
for(var i=0;i<2;i++) {
if(arr.length>i) {
var ret = IntSure(arr[i]);
self._framepadding[i] = ret;
}
}
function IntSure(v)
{
if(typeof(v)=="undefined" || v==null || v=="" || isNaN(v))
return 0;
return parseInt(v);
}
]]>
</set>
</property>
<property name="src">
<get>
return self._src;
</get>
<set>
self._src = value;
</set>
</property>
<panel jsml-local="btn_use" dock="bottom" margin="2" height="24" visible="0">
<panel dock="right" width="60" margin="2" css_text="text-shadow: 2px 2px 5px #99999;border:solid #d1decd 1px; background:#f3f3f3;color:#333333;border-radius:2px; -webkit-border-radius:2px;">
<image dock="left" margin="0,0,0,2" src="images/accept.png" vertical_align="middle" horizontal_align="center" width="16" cursor="default"></image>
<label dock="fill" text="@Btn_Apply" margin="0,0,0,3" css_text="font-weight:bold;" vertical_align="middle" horizontal_align="left"></label>
<attach name="click">
<![CDATA[
ImageEditorDocument.$068(instance.get_framepadding(), instance.get_src());
instance.get_parent().get_parent().Remove();
]]>
</attach>
<initialize>
<![CDATA[
ImageEditorDocument.$043(self.get_element(),"top","#fce877","#dfb642");
]]>
</initialize>
<attach name="mousehover">
<![CDATA[
ImageEditorDocument.$043(self.get_element(),"top","#f1f6fa","#b0bce2");
]]>
</attach>
<attach name="mouseleave">
<![CDATA[
ImageEditorDocument.$043(self.get_element(),"top","#fce877","#dfb642");
]]>
</attach>
</panel>
</panel>
<panel jsml-local="backpanel" dock="fill" vertical_align="middle" horizontal_align="center"></panel>
<attach name="click">
<![CDATA[
self.Preview();
self.get_parent().SelectFrame(self);
return;
]]>
</attach>
<method name="Preview">
<![CDATA[
var pd = self.get_framepadding();
var img = new Image();
img.onload = function()
{
ImageEditorDocument.$0118();
var offsetx = ImageEditorDocument._canvas.width - img.width - pd[0];
var offsety = ImageEditorDocument._canvas.height - img.height - pd[1];
ImageEditorDocument._2d.drawImage(img, offsetx, offsety);
}
var src = self.get_src();
//if (src.toLowerCase().indexOf("http://") == 0 || src.toLowerCase().indexOf("https://") == 0)
// src = "ReadImage.html5." + ImageEditorDocument.GetOption("PageType") + "?url=" + encodeURIComponent(src);
img.src = src;
]]>
</method>
<method name="SetButtonEnable" arguments="val">
<![CDATA[
if(val==true)
{
btn_use.set_visible(1);
self.set_height(104);
}
else
{
btn_use.set_visible(0);
self.set_height(80);
}
]]>
</method>
<initialize>
<![CDATA[
var div = backpanel.get_element();
setTimeout(function(){
var w = self.get_current_width();
var img = new Image();
img.onload = function()
{
if(img.width>w || img.height>80)
{
if(img.width/img.height<w/80)
{
img.style.height = "80px";
img.style.width = parseInt(img.width*80/img.height+"") + "px";
img.style.marginLeft = parseInt((w-img.width*80/img.height)/2 + "") + "px";
}
else
{
img.style.width = w + "px";
img.style.height = parseInt(img.height*w/img.width+"") + "px";
img.style.marginTop = parseInt((80-img.height*w/img.width)/2 + "") + "px";
}
}
else
{
img.style.marginLeft = parseInt((w-img.width)/2 + "") + "px";
img.style.marginTop = parseInt((80-img.height)/2 + "") + "px";
}
div.appendChild(img);
}
img.src = self.get_src();
},100);
]]>
</initialize>
</panel>
<panel jsml-class="watermarklist" right="0" width="150" border_width="0,1,1,1" back_color="#eeeeee" border_color="#cccccc">
<panel dock="top" height="24" css_text="background:#bcc3c6 url(images/back/group.gif) repeat-x;">
<image dock="right" src="images/close.gif" tooltip="@Title_Close" vertical_align="middle" width="16" cursor="default">
<attach name="click">
<![CDATA[
if(instance._selectedmark)
{
instance._selectedmark = null;
ImageEditorDocument.$0118();
}
instance.Remove();
]]>
</attach>
</image>
<label dock="fill" width="10" overflow="visible" text="@Tool_Water_Head" vertical_align="middle" text_color="#545454" css_text="font-weight:bold;" margin="0,0,0,3"></label>
</panel>
<panel dock="fill" overflow_y="scroll">
<panel jsml-base="watermark_item" dock="top" margin="3" framepadding="5" src="images/watermark/sample1.jpg"></panel>
<panel jsml-base="watermark_item" dock="top" margin="3" framepadding="5" src="images/watermark/sample2.jpg"></panel>
<panel jsml-base="watermark_item" dock="top" margin="3" framepadding="5" src="images/watermark/sample3.jpg"></panel>
<panel jsml-base="watermark_item" dock="top" margin="3" framepadding="5,5" src="images/watermark/sample4.gif"></panel>
<panel jsml-base="watermark_item" dock="top" margin="3" framepadding="5" src="images/watermark/sample5.jpg"></panel>
<method name="SelectFrame" arguments="frame">
<![CDATA[
var arr = self.get_children();
for(var i=0;i<arr.length;i++)
{
arr[i].set_border_color("#cccccc");
arr[i].SetButtonEnable(false);
}
if(frame)
{
frame.set_border_color("red");
frame.SetButtonEnable(true);
instance._selectedmark = frame;
}
]]>
</method>
</panel>
<initialize>
<![CDATA[
ImageEditorDocument._watermarklist = self;
setInterval(function(){
self.AdjustHight();
},100);
self.AdjustHight();
]]>
</initialize>
<method name="AdjustHight">
<![CDATA[
var rect=jsml.get_body_rect();
self.set_left(rect.width-150);
if(rect.height==self.get_height())
return;
self.set_height(rect.height);
]]>
</method>
<method name="Remove">
<![CDATA[
ImageEditorDocument._watermarklist = null;
self.dispose();
]]>
</method>
</panel>
<execute>
<![CDATA[
plugin.LoadUI = function(ctrl)
{
ctrl.append_child(jsml.class_create_instance("watermarklist"));
}
]]>
</execute>
</jsml>