X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=Pman.Gnumeric.js;h=2574bd27b3cc8cf6ca5b3f0343ff55b2011941d1;hb=66c7f301d01738f3a6c98694f48ee851d6213441;hp=f81b68efa1ad58cee6988870db4d2974f4cca162;hpb=2f133d3e71f6397fd1a75cad3b2d88830d489e17;p=Pman.Core diff --git a/Pman.Gnumeric.js b/Pman.Gnumeric.js index f81b68ef..2574bd27 100644 --- a/Pman.Gnumeric.js +++ b/Pman.Gnumeric.js @@ -1122,7 +1122,7 @@ Roo.extend(Pman.Gnumeric, Roo.util.Observable, { }, /** - * writeImage: + * writeImageOld: * write an image in old gnumberic format (needs base64 data to write it) * * @@ -1133,9 +1133,77 @@ Roo.extend(Pman.Gnumeric, Roo.util.Observable, { * @param {Number} width image height * */ - writeImageOld : function (row, col, data, width, height, type) + writeImageOld : function (row, col, data, width, height, type, size) { + if (!data) { + throw "write Image called with missing data"; + } + + 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'); + + 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', 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; + + //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'); + + var content = this.doc.createElement('Content'); + content.setAttribute('image-type', type ? type : 'jpeg'); + content.setAttribute('size-bytes', size); + soi.appendChild(content); + objs.appendChild(soi); + + if (typeof(this.grid[row]) == 'undefined') { + this.grid[row] = []; + } + if (typeof(this.grid[row][col]) == 'undefined') { + this.createCell(row,col); + } + + this.grid[row][col].value= data; + this.grid[row][col].valueFormat = 'image'; + this.grid[row][col].imageType = type; + this.grid[row][col].width = width; + this.grid[row][col].height = height; + + var godoc = this.doc.getElementsByTagNameNS('*','GODoc')[0]; + + if(godoc && godoc.parentNode) { + godoc.parentNode.removeChild(godoc); + } + + return true; }, /** @@ -1150,10 +1218,9 @@ Roo.extend(Pman.Gnumeric, Roo.util.Observable, { * @param {Number} width image height * */ - - writeImage : function (row, col, data, width, height, type) { + if (!data) { throw "write Image called with missing data"; } @@ -1188,32 +1255,32 @@ Roo.extend(Pman.Gnumeric, Roo.util.Observable, { // 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; -// } -// } + 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,col)); + 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; + 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; //alert(offset_str); - soi.setAttribute('ObjectOffset', '0 0 0 0'); + soi.setAttribute('ObjectOffset', offset_str); soi.setAttribute('ObjectAnchorType','16 16 16 16'); soi.setAttribute('Direction','17'); soi.setAttribute('crop-top','0.000000'); @@ -1260,6 +1327,65 @@ Roo.extend(Pman.Gnumeric, Roo.util.Observable, { }, + /** + * writeFixedImageOld: + * write an image in old gnumberic format (needs base64 data to write it) + */ + writeFixedImageOld : function (startCol, startRow, endCol, endRow, type, data, width, height, size) + { + if (!data) { + throw "write Image called with missing data"; + } + + startCol = startCol * 1; + startRow = startRow * 1; + endCol = endCol * 1; + endRow = endRow * 1; + width = width * 1; + height = height * 1; + + var objs = this.sheet.getElementsByTagNameNS('*','Objects')[0]; + var soi = this.doc.createElementNS('http://www.gnumeric.org/v10.dtd', 'gnm:SheetObjectImage'); + + soi.setAttribute('ObjectBound',this.RCtoCell(startRow, startCol) + ':' + this.RCtoCell(endRow, endCol)); + + soi.setAttribute('ObjectOffset', '0 0 0 0'); + 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'); + + var content = this.doc.createElement('Content'); + content.setAttribute('image-type', type ? type : 'jpeg'); + content.setAttribute('size-bytes', size); + content.textContent = data; + soi.appendChild(content); + objs.appendChild(soi); + + if (typeof(this.grid[startRow]) == 'undefined') { + this.grid[startRow] = []; + } + if (typeof(this.grid[startRow][startCol]) == 'undefined') { + this.createCell(startRow,startCol); + } + + this.grid[startRow][startCol].value= data; + this.grid[startRow][startCol].valueFormat = 'image'; + this.grid[startRow][startCol].imageType = type; + this.grid[startRow][startCol].width = width; + this.grid[startRow][startCol].height = height; + + var godoc = this.doc.getElementsByTagNameNS('*','GODoc')[0]; + + if(godoc && godoc.parentNode) { + godoc.parentNode.removeChild(godoc); + } + + return true; + }, + writeFixedImage : function (startCol, startRow, endCol, endRow, type, data, width, height) { if (!data) {