function matlash() win_size = get(gcf,'pos'); win_size = win_size(3:4); ax_pos = get(gca,'pos'); ax_pos(1) = ax_pos(1)*win_size(1); ax_pos(3) = ax_pos(3)*win_size(1); ax_pos(2) = (1-ax_pos(2)-ax_pos(4))*win_size(2); ax_pos(4) = ax_pos(4)*win_size(2); % get axes axis limits ax_xlim = get(gca,'xlim'); ax_ylim = get(gca,'ylim'); xticks = get(gca,'xticklabel'); yticks = get(gca,'yticklabel'); xtick_locs = (get(gca,'xtick')-ax_xlim(1))/range(ax_xlim) * ax_pos(3) + ax_pos(1); ytick_locs = (1-(get(gca,'ytick')-ax_ylim(1))/range(ax_ylim)) * ax_pos(4) + ax_pos(2); fh = fopen('Mtlplot.hx','w'); fprintf(fh,'import flash.MovieClip;\n'); fprintf(fh,'class Mtlplot {\n'); fprintf(fh,' static function main() {\n'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% mtl_draw_axes(fh, win_size, ax_pos, xticks, yticks, xtick_locs, ytick_locs); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ch = get(gca,'children'); J = length(ch); for j=1:J, ch_linewidth = get(ch(j),'linewidth'); ch_linecolor = get(ch(j),'color'); x = get(ch(j),'XData'); y = get(ch(j),'YData'); % now map axes coords to winsize coords x = (x - ax_xlim(1)) / range(ax_xlim) * ax_pos(3) + ax_pos(1); y = (1-(y - ax_ylim(1)) / range(ax_ylim)) * ax_pos(4) + ax_pos(2); mtl_draw_line(fh, J-j+1, x, y, ch_linecolor, ch_linewidth); %mtl_draw_points(fh, x, y, linecolor); end; fprintf(fh,' }\n'); fprintf(fh,'}\n'); fclose(fh); mtl_compile('matlash1.swf', win_size); mtl_write_html('matlash1.swf', win_size); function h = mtl_draw_line(fh, depth, x, y, linecolor, linewidth) linecolor = mtl_rgb2hex(linecolor); h = sprintf('line%d',ceil(1000*rand)); fprintf(fh,' var %s : flash.MovieClip;\n', h); fprintf(fh,' %s = flash.Lib._root.createEmptyMovieClip("%s",flash.Lib._root.getNextHighestDepth());\n',h,h); fprintf(fh,' %s.lineStyle(%f,0x%s);\n',h, linewidth,linecolor); fprintf(fh,' %s.moveTo(%f,%f);\n', h, x(1), y(1)); for i=2:length(x), fprintf(fh,' %s.lineTo(%f,%f);\n',h, x(i),y(i)); end; fprintf(fh,'\n'); function mtl_highlight(fh, h, col) hexcol = mtl_rgb2hex(col); fprintf(fh,' %s.onRollOver = function() { \n',h); fprintf(fh,' var colPan = new flash.Color(%s);\n',h); fprintf(fh,' colPan.setRGB(0x%s);\n',hexcol); fprintf(fh,' }; \n'); fprintf(fh,' %s.onRollOut = function() { \n',h); fprintf(fh,' var colPan = new flash.Color(%s);\n',h); fprintf(fh,' colPan.setRGB(0x000000);\n'); fprintf(fh,' }; \n\n'); function hexcol = mtl_rgb2hex(rgbcol) hexcol = ''; for i=1:3, if ~rgbcol(i), hexcol = [hexcol '00']; else, hexcol = [hexcol dec2hex(floor(rgbcol(i)*255))]; end; end; function mtl_draw_points(fh, x, y, linecolor, depth) linecolor = mtl_rgb2hex(linecolor); % draw points for i=1:length(x), fprintf(fh,' var point%d: flash.MovieClip;\n', i); fprintf(fh,' point%d = flash.Lib._root.createEmptyMovieClip("point%d",flash.Lib._root.getNextHighestDepth());\n',i,i); fprintf(fh,' point%d.lineStyle(10,0x666666);\n',i); fprintf(fh,' point%d.moveTo(%f,%f);\n', i,x(i), y(i)-.15); fprintf(fh,' point%d.lineTo(%f,%f);\n', i,x(i), y(i)+.15); mtl_highlight(fh, sprintf('point%d',i),[1 0 0]); % fprintf(fh,' onClipEvent (mouseMove) {\n'); % fprintf(fh,' if (this.hitTest(_root._xmouse, _root._ymouse, true) && hitState != "over") {\n'); % fprintf(fh,' this.lineStyle(20,0x000000);\n'); % fprintf(fh,' hitState = "over";\n'); % fprintf(fh,' }\n'); % fprintf(fh,' if (!this.hitTest(_root._xmouse, _root._ymouse, true) && hitState == "over") {\n'); % fprintf(fh,' this.gotoAndPlay("out");\n'); % fprintf(fh,' hitState = "out";\n'); % fprintf(fh,' }\n'); % fprintf(fh,' }\n'); if 0, fprintf(fh,' flash.Mouse.addListener(mcp%d);\n',i); fprintf(fh,' var colmcp%d = new flash.Color(mcp%d.lineColor);\n',i,i); fprintf(fh,' mcp%d.onMouseMove = function() { \n',i); % fprintf(fh,' if (mcp%d.hitTest(flash.Lib._root._xmouse, flash.Lib._root._ymouse, true)) {\n',i); fprintf(fh,' colmcp%d.setRGB(0xFF00FF);\n',1); fprintf(fh,' }\n'); end; end; function mtl_draw_axes(fh, win_size, ax_pos, xticks, yticks, xtick_locs, ytick_locs) fprintf(fh,' var bkg : flash.MovieClip;\n'); fprintf(fh,' bkg = flash.Lib._root.createEmptyMovieClip("bkg", flash.Lib._root.getNextHighestDepth());\n'); fprintf(fh,' bkg.beginFill(0xCCCCCC);\n'); fprintf(fh,' bkg.moveTo(%f,%f);\n',0,0); fprintf(fh,' bkg.lineTo(%f,%f);\n',win_size(1),0); fprintf(fh,' bkg.lineTo(%f,%f);\n',win_size(1),win_size(2)); fprintf(fh,' bkg.lineTo(%f,%f);\n',0, win_size(2)); fprintf(fh,' bkg.endFill();\n\n'); fprintf(fh,' var pan : flash.MovieClip;\n'); fprintf(fh,' pan = flash.Lib._root.createEmptyMovieClip("pan",flash.Lib._root.getNextHighestDepth());\n'); fprintf(fh,' pan.beginFill(0xFFFFFF);\n'); fprintf(fh,' pan.moveTo(%f,%f);\n',ax_pos(1), ax_pos(2)); fprintf(fh,' pan.lineTo(%f,%f);\n',ax_pos(1)+ax_pos(3),ax_pos(2)); fprintf(fh,' pan.lineTo(%f,%f);\n',ax_pos(1)+ax_pos(3),ax_pos(2)+ax_pos(4)); fprintf(fh,' pan.lineTo(%f,%f);\n',ax_pos(1), ax_pos(2)+ax_pos(4)); fprintf(fh,' pan.endFill();\n\n'); fprintf(fh,'\n\n var my_fmt:flash.TextFormat = new flash.TextFormat();\n'); fprintf(fh,' my_fmt.color = 0x000000;\n'); fprintf(fh,' my_fmt.font = "Arial";\n\n'); for i=1:length(xticks), xpos = xtick_locs(i); fprintf(fh,' pan.createTextField("xticktf%d",%d, %.1f, %.1f, 35, 20);\n',i, i, xpos-win_size(1)/50, ax_pos(2)+ax_pos(4)+5); fprintf(fh,' pan.xticktf%d.text = "%s";\n',i,xticks(i,:)); fprintf(fh,' pan.xticktf%d.setTextFormat(my_fmt);\n',i); fprintf(fh,' var xtick%d : MovieClip = flash.Lib._root.createEmptyMovieClip("xtick%d",flash.Lib._root.getNextHighestDepth());\n',i,i); % fprintf(fh,' var xtick%d : flash.MovieClip = flash.Lib.current;\n',i); fprintf(fh,' xtick%d.lineStyle(2,0x000000);',i); fprintf(fh,' xtick%d.moveTo(%f,%f);',i, xpos, ax_pos(2)+ax_pos(4)); fprintf(fh,' xtick%d.lineTo(%f,%f);\n\n',i, xpos, ax_pos(2)+ax_pos(4)+2); end; fprintf(fh,' var xaxis : MovieClip = flash.Lib._root.createEmptyMovieClip("xaxis",flash.Lib._root.getNextHighestDepth());\n'); fprintf(fh,' xaxis.lineStyle(2,0x000000);\n'); fprintf(fh,' xaxis.moveTo(%f,%f);\n', ax_pos(1), ax_pos(2)+ax_pos(4)); fprintf(fh,' xaxis.lineTo(%f,%f);\n\n',ax_pos(1)+ax_pos(3), ax_pos(2)+ax_pos(4)); fprintf(fh,' var yaxis : MovieClip = flash.Lib._root.createEmptyMovieClip("yaxis",flash.Lib._root.getNextHighestDepth());\n'); fprintf(fh,' yaxis.lineStyle(2,0x000000);\n'); fprintf(fh,' yaxis.moveTo(%f,%f);\n', ax_pos(1), ax_pos(2)); fprintf(fh,' yaxis.lineTo(%f,%f);\n\n',ax_pos(1), ax_pos(2)+ax_pos(4)); fprintf(fh,'\n'); lt = length(xticks); for i=1:length(yticks), ypos = ytick_locs(i); fprintf(fh,' pan.createTextField("yticktf%d",%d, %.2f, %.2f, 35, 20); ',i, lt+i, ax_pos(1)-30, ypos-8); fprintf(fh,'pan.yticktf%d.text = "%s";\n',i,yticks(i,:)); fprintf(fh,' pan.yticktf%d.setTextFormat(my_fmt);\n',i); fprintf(fh,' var ytick%d : MovieClip = flash.Lib._root.createEmptyMovieClip("ytick%d",flash.Lib._root.getNextHighestDepth());\n',i,i); % fprintf(fh,' var ytick%d : flash.MovieClip = flash.Lib.current;\n',i); fprintf(fh,' ytick%d.lineStyle(2,0x000000);',i); fprintf(fh,' ytick%d.moveTo(%f,%f);',i, ax_pos(1), ypos); fprintf(fh,' ytick%d.lineTo(%f,%f);\n',i, ax_pos(1)-2,ypos); end; fprintf(fh,'\n'); function mtl_write_html(swfname, winsize) fh = fopen('test.html','w'); fprintf(fh,['\n' ... 'MatLash test1\n' ... '\n' ... '
\n' ... '\n' ... '\n' ... '\n' ... '\n' ... '\n' ... '\n' ... '\n' ... '\n' ... '
\n' ... '\n'],winsize(1), winsize(2), swfname, swfname, winsize(1), winsize(2)); fclose(fh); function mtl_compile(swfname, winsize) fh = fopen('compile.hxml','w'); fprintf(fh,'-swf %s\n',swfname); fprintf(fh,'-main Mtlplot\n'); %fprintf(fh,'-swf-version 9\n'); fprintf(fh,'-swf-header %d:%d:40:000000\n',winsize(1),winsize(2)); fclose(fh); eval('!haxe compile.hxml'); %eval('!rm compile.hxml');