|
@@ -267,8 +267,95 @@ namespace HiTeachCC.Service.PowerPoint.Implement
|
|
|
layoutResObj,
|
|
|
masterResObj
|
|
|
};
|
|
|
+ var bgColor = GetSlideBackgroundFill(slideContent, slideLayoutContent, slideMasterContent, warpObj);
|
|
|
+ var result = "<div class='slide' style='width:" + slideSize.width + "px; height:" + slideSize.height + "px;" + bgColor + "'>";
|
|
|
+ //result += "<div>"+getBackgroundShapes(slideContent, slideLayoutContent, slideMasterContent,warpObj) + "</div>" - TODO
|
|
|
+ foreach (XmlNode node in nodes)
|
|
|
+ {
|
|
|
+ result += ProcessNodesInSlide(node.Name, node, warpObj);
|
|
|
+ }
|
|
|
return "";
|
|
|
}
|
|
|
+
|
|
|
+ private dynamic ProcessNodesInSlide(string nodeKey, XmlNode nodeValue, dynamic warpObj)
|
|
|
+ {
|
|
|
+ var result = "";
|
|
|
+
|
|
|
+ switch (nodeKey)
|
|
|
+ {
|
|
|
+ case "p:sp": // Shape, Text
|
|
|
+ result = ProcessSpNode(nodeValue, warpObj);
|
|
|
+ break;
|
|
|
+ case "p:cxnSp": // Shape, Text (with connection)
|
|
|
+ result = ProcessCxnSpNode(nodeValue, warpObj);
|
|
|
+ break;
|
|
|
+ case "p:pic": // Picture
|
|
|
+ result = ProcessPicNode(nodeValue, warpObj);
|
|
|
+ break;
|
|
|
+ case "p:graphicFrame": // Chart, Diagram, Table
|
|
|
+ result = ProcessGraphicFrameNode(nodeValue, warpObj);
|
|
|
+ break;
|
|
|
+ case "p:grpSp":
|
|
|
+ result = ProcessGroupSpNode(nodeValue, warpObj);
|
|
|
+ break;
|
|
|
+ case "mc:AlternateContent": //Equations and formulas as Image
|
|
|
+ var mcFallbackNode = nodeValue.GetTextByPath("mc:Fallback/p:sp");
|
|
|
+ result = ProcessSpNode(mcFallbackNode, warpObj);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ private string ProcessGroupSpNode(XmlNode node, dynamic warpObj)
|
|
|
+ {
|
|
|
+ var factor =1.00* px96 / px914400;
|
|
|
+
|
|
|
+ var xfrmNode = node.GetTextByPath("p:grpSpPr/a:xfrm");
|
|
|
+ var x = int.Parse(xfrmNode.GetTextByPath("a:off/@x").Value) * factor;
|
|
|
+ var y = int.Parse(xfrmNode.GetTextByPath("a:off/@y").Value) * factor;
|
|
|
+ var chx = int.Parse(xfrmNode.GetTextByPath("a:chOff/@x").Value) * factor;
|
|
|
+ var chy = int.Parse(xfrmNode.GetTextByPath("a:chOff/@y").Value) * factor;
|
|
|
+ var cx = int.Parse(xfrmNode.GetTextByPath("a:ext/@cx").Value) * factor;
|
|
|
+ var cy = int.Parse(xfrmNode.GetTextByPath("a:ext/@cy").Value) * factor;
|
|
|
+ var chcx = int.Parse(xfrmNode.GetTextByPath("a:chExt/@cx").Value) * factor;
|
|
|
+ var chcy = int.Parse(xfrmNode.GetTextByPath("a:chExt/@cy").Value) * factor;
|
|
|
+ var order = node["attrs"]["order"];
|
|
|
+ var result = "<div class='block group' style='z-index: " + order + "; top: " + (y - chy) + "px; left: " + (x - chx) + "px; width: " + (cx - chcx) + "px; height: " + (cy - chcy) + "px;'>";
|
|
|
+
|
|
|
+ // Procsee all child nodes
|
|
|
+ var nodes = node.ChildNodes;
|
|
|
+ foreach(XmlNode nd in nodes)
|
|
|
+ {
|
|
|
+ result += ProcessNodesInSlide(nd.Name, nd, warpObj);
|
|
|
+ }
|
|
|
+
|
|
|
+ result += "</div>";
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ private string ProcessGraphicFrameNode(XmlNode nodeValue, dynamic warpObj)
|
|
|
+ {
|
|
|
+ throw new NotImplementedException();
|
|
|
+ }
|
|
|
+
|
|
|
+ private string ProcessPicNode(XmlNode nodeValue, dynamic warpObj)
|
|
|
+ {
|
|
|
+ throw new NotImplementedException();
|
|
|
+ }
|
|
|
+
|
|
|
+ private string ProcessCxnSpNode(XmlNode nodeValue, dynamic warpObj)
|
|
|
+ {
|
|
|
+ throw new NotImplementedException();
|
|
|
+ }
|
|
|
+
|
|
|
+ private string ProcessSpNode(XmlNode nodeValue, dynamic warpObj)
|
|
|
+ {
|
|
|
+ throw new NotImplementedException();
|
|
|
+ }
|
|
|
+
|
|
|
private Fill GetSlideBackgroundFill(XmlNode slideContent ,XmlNode slideLayoutContent , XmlNode slideMasterContent , dynamic warpObj) {
|
|
|
var bgPr = slideContent.GetTextByPath("p:sld/p:cSld/p:bg/p:bgPr");
|
|
|
var bgRef = slideContent.GetTextByPath("p:sld/p:cSld/p:bg/p:bgRef");
|