2014-03-23 21:30:00 +00:00
|
|
|
/* [MS-XLSB] 2.4.651 BrtFmt */
|
2017-02-10 19:23:01 +00:00
|
|
|
function parse_BrtFmt(data, length/*:number*/) {
|
2014-01-31 11:52:18 +00:00
|
|
|
var ifmt = data.read_shift(2);
|
|
|
|
var stFmtCode = parse_XLWideString(data,length-2);
|
|
|
|
return [ifmt, stFmtCode];
|
|
|
|
}
|
2014-01-28 16:38:02 +00:00
|
|
|
|
2014-03-29 02:05:50 +00:00
|
|
|
/* [MS-XLSB] 2.4.653 BrtFont TODO */
|
2017-02-10 19:23:01 +00:00
|
|
|
function parse_BrtFont(data, length/*:number*/) {
|
|
|
|
var out = ({flags:{}}/*:any*/);
|
2014-06-29 18:29:45 +00:00
|
|
|
out.dyHeight = data.read_shift(2);
|
2014-03-29 02:05:50 +00:00
|
|
|
out.grbit = parse_FontFlags(data, 2);
|
2014-06-29 18:29:45 +00:00
|
|
|
out.bls = data.read_shift(2);
|
|
|
|
out.sss = data.read_shift(2);
|
|
|
|
out.uls = data.read_shift(1);
|
|
|
|
out.bFamily = data.read_shift(1);
|
|
|
|
out.bCharSet = data.read_shift(1);
|
2014-03-29 02:05:50 +00:00
|
|
|
data.l++;
|
|
|
|
out.brtColor = parse_BrtColor(data, 8);
|
2014-06-29 18:29:45 +00:00
|
|
|
out.bFontScheme = data.read_shift(1);
|
2014-03-29 02:05:50 +00:00
|
|
|
out.name = parse_XLWideString(data, length - 21);
|
|
|
|
|
|
|
|
out.flags.Bold = out.bls === 0x02BC;
|
|
|
|
out.flags.Italic = out.grbit.fItalic;
|
|
|
|
out.flags.Strikeout = out.grbit.fStrikeout;
|
|
|
|
out.flags.Outline = out.grbit.fOutline;
|
|
|
|
out.flags.Shadow = out.grbit.fShadow;
|
|
|
|
out.flags.Condense = out.grbit.fCondense;
|
|
|
|
out.flags.Extend = out.grbit.fExtend;
|
|
|
|
out.flags.Sub = out.sss & 0x2;
|
|
|
|
out.flags.Sup = out.sss & 0x1;
|
|
|
|
return out;
|
|
|
|
}
|
|
|
|
|
2014-03-23 21:30:00 +00:00
|
|
|
/* [MS-XLSB] 2.4.816 BrtXF */
|
2017-02-10 19:23:01 +00:00
|
|
|
function parse_BrtXF(data, length/*:number*/) {
|
2014-01-31 11:52:18 +00:00
|
|
|
var ixfeParent = data.read_shift(2);
|
|
|
|
var ifmt = data.read_shift(2);
|
|
|
|
parsenoop(data, length-4);
|
|
|
|
return {ixfe:ixfeParent, ifmt:ifmt };
|
|
|
|
}
|
|
|
|
|
2014-03-23 21:30:00 +00:00
|
|
|
/* [MS-XLSB] 2.1.7.50 Styles */
|
2017-03-19 06:50:30 +00:00
|
|
|
function parse_sty_bin(data, themes, opts) {
|
2017-03-18 23:25:50 +00:00
|
|
|
var styles = {};
|
2017-02-10 19:23:01 +00:00
|
|
|
styles.NumberFmt = ([]/*:any*/);
|
2014-01-31 11:52:18 +00:00
|
|
|
for(var y in SSF._table) styles.NumberFmt[y] = SSF._table[y];
|
2014-02-07 10:53:40 +00:00
|
|
|
|
2014-01-31 11:52:18 +00:00
|
|
|
styles.CellXf = [];
|
2017-04-08 06:55:35 +00:00
|
|
|
var state = [];
|
2014-01-31 11:52:18 +00:00
|
|
|
var pass = false;
|
2014-06-29 18:29:45 +00:00
|
|
|
recordhopper(data, function hopper_sty(val, R, RT) {
|
2014-01-31 11:52:18 +00:00
|
|
|
switch(R.n) {
|
|
|
|
case 'BrtFmt':
|
|
|
|
styles.NumberFmt[val[0]] = val[1]; SSF.load(val[1], val[0]);
|
|
|
|
break;
|
|
|
|
case 'BrtFont': break; /* TODO */
|
|
|
|
case 'BrtKnownFonts': break; /* TODO */
|
|
|
|
case 'BrtFill': break; /* TODO */
|
|
|
|
case 'BrtBorder': break; /* TODO */
|
|
|
|
case 'BrtXF':
|
2017-04-08 06:55:35 +00:00
|
|
|
if(state[state.length - 1] == "BrtBeginCellXFs") {
|
2014-01-31 11:52:18 +00:00
|
|
|
styles.CellXf.push(val);
|
|
|
|
}
|
|
|
|
break; /* TODO */
|
|
|
|
case 'BrtStyle': break; /* TODO */
|
2014-02-17 08:44:22 +00:00
|
|
|
case 'BrtDXF': break; /* TODO */
|
|
|
|
case 'BrtMRUColor': break; /* TODO */
|
|
|
|
case 'BrtIndexedColor': break; /* TODO */
|
2017-04-08 06:55:35 +00:00
|
|
|
|
|
|
|
case 'BrtDXF14': break;
|
|
|
|
case 'BrtDXF15': break;
|
|
|
|
case 'BrtUid': break;
|
|
|
|
case 'BrtSlicerStyleElement': break;
|
2014-02-17 08:44:22 +00:00
|
|
|
case 'BrtTableStyleElement': break;
|
2017-04-08 06:55:35 +00:00
|
|
|
case 'BrtTimelineStyleElement': break;
|
|
|
|
|
2014-01-31 11:52:18 +00:00
|
|
|
case 'BrtFRTBegin': pass = true; break;
|
|
|
|
case 'BrtFRTEnd': pass = false; break;
|
2017-04-08 06:55:35 +00:00
|
|
|
case 'BrtACBegin': state.push(R.n); break;
|
|
|
|
case 'BrtACEnd': state.pop(); break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
if((R.n||"").indexOf("Begin") > 0) state.push(R.n);
|
|
|
|
else if((R.n||"").indexOf("End") > 0) state.pop();
|
|
|
|
else if(!pass || opts.WTF) throw new Error("Unexpected record " + RT + " " + R.n);
|
2014-01-31 11:52:18 +00:00
|
|
|
}
|
|
|
|
});
|
|
|
|
return styles;
|
2014-01-28 16:38:02 +00:00
|
|
|
}
|
2014-05-29 22:30:03 +00:00
|
|
|
|
2014-07-28 13:22:32 +00:00
|
|
|
/* [MS-XLSB] 2.1.7.50 Styles */
|
|
|
|
function write_sty_bin(data, opts) {
|
|
|
|
var ba = buf_array();
|
|
|
|
write_record(ba, "BrtBeginStyleSheet");
|
|
|
|
/* [FMTS] */
|
|
|
|
/* [FONTS] */
|
|
|
|
/* [FILLS] */
|
|
|
|
/* [BORDERS] */
|
|
|
|
/* CELLSTYLEXFS */
|
|
|
|
/* CELLXFS*/
|
|
|
|
/* STYLES */
|
|
|
|
/* DXFS */
|
|
|
|
/* TABLESTYLES */
|
|
|
|
/* [COLORPALETTE] */
|
|
|
|
/* FRTSTYLESHEET*/
|
|
|
|
write_record(ba, "BrtEndStyleSheet");
|
|
|
|
return ba.end();
|
|
|
|
}
|