From: edward Date: Wed, 6 Sep 2017 05:06:04 +0000 (+0800) Subject: Pman.Gnumeric.js X-Git-Url: http://git.roojs.org/?p=Pman.Core;a=commitdiff_plain;h=ea363619819672c185925bb95b7c42586460a908 Pman.Gnumeric.js --- diff --git a/Pman.Gnumeric.js b/Pman.Gnumeric.js index 302f2851..492e3b92 100644 --- a/Pman.Gnumeric.js +++ b/Pman.Gnumeric.js @@ -1166,6 +1166,102 @@ Roo.extend(Pman.Gnumeric, Roo.util.Observable, { // crop-right="0.000000"> + //alert(gnumeric_colRowToName(row,col)); + + // this is where we really have fun!!!... + // since our design currently assumes the height is enough to fit + // stuff in, we only really need to work out how wide it has to be.. + + // note we should probably use centralized calcs if it fits in the first cell! + + // step 1 - work out how many columns it will span.. + // lets hope the spreadsheet is big enought.. + var colwidth = 0; + var endcol=col; + for ( endcol=col;endcol <100; endcol++) { + if (!this.colInfo[endcol]) { + this.colInfo[endcol] = 100; // eak fudge + } + colwidth += this.colInfo[endcol]; + if (colwidth > width) { + break; + } + } + + soi.setAttribute('ObjectBound', + //gnumeric_colRowToName(row,col) + ':' + gnumeric_colRowToName(row+1,col+1)); + this.RCtoCell(row,col) + ':' + this.RCtoCell(row,endcol)); + + var ww = 0.01; // offset a bit... + var hh = 0.01; // + + var ww2 = 1 - ((colwidth - width) / this.colInfo[endcol]); + var hh2 = 0.99; + + var offset_str = ww + ' ' + hh + ' ' + ww2 + ' '+hh2; + //console.log(offset_str ); + //alert(offset_str); + soi.setAttribute('ObjectOffset', offset_str); + soi.setAttribute('ObjectAnchorType','16 16 16 16'); + soi.setAttribute('Direction','17'); + soi.setAttribute('crop-top','0.000000'); + soi.setAttribute('crop-bottom','0.000000'); + soi.setAttribute('crop-left','0.000000'); + soi.setAttribute('crop-right','0.000000'); + // ...... < / Content> + + var name = 'Image' + Math.random().toString(36).substring(2); + var content = this.doc.createElement('Content'); + content.setAttribute('image-type', type ? type : 'jpeg'); + content.setAttribute('name', name); + soi.appendChild(content); + objs.appendChild(soi); + + var godoc = this.doc.getElementsByTagNameNS('*','GODoc')[0]; + + var goimage = this.doc.createElement('GOImage'); + goimage.setAttribute('image-type', type ? type : 'jpeg'); + goimage.setAttribute('name', name); + goimage.setAttribute('type', 'GOPixbuf'); + goimage.setAttribute('width', width); + goimage.setAttribute('height', height); + goimage.textContent = data; + + godoc.appendChild(goimage); + + return true; + //< /gnm:SheetObjectImage> + // < /gnm:Objects> + + }, + + writeFixedImage : function (row, col, data, width, height, type) + { + + if (!data) { + throw "write Image called with missing data"; + } + // our default height width is 50/50 ?! + //console.log('w='+width+',height='+height); + // + row*=1; + col*=1; + height*=1; + width*=1; + var objs = this.sheet.getElementsByTagNameNS('*','Objects')[0]; + var soi = this.doc.createElementNS('http://www.gnumeric.org/v10.dtd', 'gnm:SheetObjectImage'); + + // + + //alert(gnumeric_colRowToName(row,col)); // this is where we really have fun!!!...