AnimtimeTree.cs 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace HTEXLib.Models
  5. {
  6. /// <summary>
  7. /// 物件動畫 時間系列 (animtimetree)
  8. /// </summary>
  9. public class AnimtimeTree
  10. {
  11. /// <summary>
  12. /// 物件動畫 時間節點 列表 (animnode list)
  13. /// </summary>
  14. public List<AnimtimeNode> actlst { get; set; }
  15. /// <summary>
  16. /// 物件(有動畫) 之 對應資訊 列表
  17. /// "Key": "00002", // *om* // 物件 自訂 uid
  18. /// "Value": objdata // *om* // 物件(有動畫) 之 對應資訊 (objdata)
  19. /// </summary>
  20. public Dictionary<string, AnimtimeData> obj_dic { get; set; }
  21. /// <summary>
  22. /// 是否循序 或 同時
  23. /// </summary>
  24. public bool seqf { get; set; }
  25. /// <summary>
  26. /// 物件動畫 時間系列 表列 (animtimetree list)
  27. /// </summary>
  28. public List<AnimtimeTree> subtreelst { get; set; }
  29. /// <summary>
  30. /// 物件動畫 時間系列 uid
  31. /// </summary>
  32. public string tree_id { get; set; }
  33. }
  34. /// <summary>
  35. /// 物件(有動畫) 之 對應資訊 (objdata) :
  36. /// </summary>
  37. public class AnimtimeData
  38. {
  39. /// <summary>
  40. /// 動畫結束後 是否 可見
  41. /// </summary>
  42. public bool endvisible { get; set; }
  43. /// <summary>
  44. /// 原始 是否可見
  45. /// </summary>
  46. public bool orgvisible { get; set; }
  47. /// <summary>
  48. /// 物件 於 pptx 之 原始 <p:sp/p:nvSpPr/p:cNvPr> id
  49. /// </summary>
  50. public string obj_spid { get; set; }
  51. /// <summary>
  52. /// 物件 自訂 uid
  53. /// </summary>
  54. public string obj_uid { get; set; }
  55. /// <summary>
  56. /// 對 pptx 物件 之 自訂類別: 0=形狀, 1=文字, m=替換元素 (若是形狀裡有文字, 則會被切成 (0=形狀)+(1=文字) 2 個物件 以組合處理)
  57. /// </summary>
  58. public string objtypelst { get; set; }
  59. /// <summary>
  60. /// 位置
  61. /// </summary>
  62. public Position position { get; set; }
  63. /// <summary>
  64. /// 原始 不透明值 (0, .., 1)
  65. /// </summary>
  66. public double orgopaque { get; set; }
  67. }
  68. /// <summary>
  69. /// 物件動畫 時間節點 (animnode)
  70. /// </summary>
  71. public class AnimtimeNode {
  72. /// <summary>
  73. /// 開始 加速
  74. /// </summary>
  75. public int accel { get; set; }
  76. /// <summary>
  77. /// 物件動畫 變化狀態 表列 (animxchg list)
  78. /// </summary>
  79. public List<AnimtimeExchange> achglst { get; set; }
  80. /// <summary>
  81. /// 自動反轉
  82. /// </summary>
  83. public bool autorev { get; set; }
  84. /// <summary>
  85. /// 開始之 旋轉角度 (記憶 物件動畫過程後 的 累計旋轉量)
  86. /// </summary>
  87. public int beg_rot { get; set; }
  88. /// <summary>
  89. /// 開始之 高 縮放比值
  90. /// </summary>
  91. public int begh_scale { get; set; }
  92. /// <summary>
  93. /// 開始之 寬 縮放比值
  94. /// </summary>
  95. public int begw_scale { get; set; }
  96. /// <summary>
  97. /// 結束 減速
  98. /// </summary>
  99. public int decel { get; set; }
  100. /// <summary>
  101. /// 延遲 播放
  102. /// </summary>
  103. public int delay { get; set; }
  104. /// <summary>
  105. /// 結束之 旋轉角度 (記憶 物件動畫過程後 的 累計旋轉量)
  106. /// </summary>
  107. public int end_rot { get; set; }
  108. /// <summary>
  109. /// 結束之 高 縮放比值
  110. /// </summary>
  111. public int endh_scale { get; set; }
  112. /// <summary>
  113. /// 結束之 寬 縮放比值
  114. /// </summary>
  115. public int endw_scale { get; set; }
  116. /// <summary>
  117. /// path 移動路徑) 之 最後 x 位置(pptx 給 頁面寬之比值)(左上角開始) (只對 path 移動路徑 有效)
  118. /// </summary>
  119. public int endx_rate { get; set; }
  120. /// <summary>
  121. /// (path 移動路徑) 之 最後 y 位置(pptx 給 頁面高之比值)(左上角開始) (只對 path 移動路徑 有效)
  122. /// </summary>
  123. public int endy_rate { get; set; }
  124. /// <summary>
  125. /// 動畫播放完成後 之 狀態
  126. /// </summary>
  127. public string fill { get; set; }
  128. /// <summary>
  129. /// 當 is_accrot > 0 時, 表示 end_rot 值有效 (壘加 旋轉動畫 角度 之用)
  130. /// </summary>
  131. public int is_accrot { get; set; }
  132. /// <summary>
  133. /// (預留)
  134. /// </summary>
  135. public int iterate_tmabs { get; set; }
  136. /// <summary>
  137. /// (對應 <p:iterate/p:tmAbs> 和 <p:iterate/p:tmPct>) 之 % 值
  138. /// </summary>
  139. public double iterate_tmpct { get; set; }
  140. /// <summary>
  141. /// (對應 <p:iterate>) 列舉
  142. /// </summary>
  143. public int iterate_type { get; set; }
  144. /// <summary>
  145. /// 物件動畫 播放方式: "clickEffect"(按下開始), "withEffect"(和前一動畫同時), "afterEffect"(接在前一動畫之後) (對應 <nodeType>)
  146. /// </summary>
  147. public int nodetype { get; set; }
  148. /// <summary>
  149. /// 物件動畫可能所屬 播放群組 id, 對應 <grpId>
  150. /// </summary>
  151. public int obj_grpid { get; set; }
  152. /// <summary>
  153. /// 物件 於 pptx 之 原始 <p:sp/p:nvSpPr/p:cNvPr> id
  154. /// </summary>
  155. public int obj_spid { get; set; }
  156. /// <summary>
  157. /// 物件 自訂 uid 表列
  158. /// </summary>
  159. public List<string> obj_uid { get; set; }
  160. /// <summary>
  161. /// 物件動畫 四大分類: "entr"(進入), "exit"(結束), "emph"(強調), "path"(移動路徑) (對應 <presetClass>)
  162. /// </summary>
  163. public string presetclass { get; set; }
  164. /// <summary>
  165. /// 物件動畫 樣式 id (對應 <presetID>)
  166. /// </summary>
  167. public string presetid { get; set; }
  168. /// <summary>
  169. /// 物件動畫 次樣式 形態 (對應 <presetSubtype>)
  170. /// </summary>
  171. public string presetsubtype { get; set; }
  172. /// <summary>
  173. /// 重覆 播放
  174. /// </summary>
  175. public int repeat { get; set; }
  176. }
  177. public class AnimtimeExchange {
  178. /// <summary>
  179. /// 開始 加速
  180. /// </summary>
  181. public int accel { get; set; }
  182. /// <summary>
  183. /// 自動反轉
  184. /// </summary>
  185. public bool autorev { get; set; }
  186. /// <summary>
  187. /// 結束 減速
  188. /// </summary>
  189. public int decel { get; set; }
  190. /// <summary>
  191. /// 延遲 播放
  192. /// </summary>
  193. public int delay { get; set; }
  194. /// <summary>
  195. /// 播放時間長度 (秒)
  196. /// </summary>
  197. public double dur { get; set; }
  198. /// <summary>
  199. /// 動畫播放完成後 之 狀態
  200. /// </summary>
  201. public string fill { get; set; }
  202. /// <summary>
  203. /// 物件動畫 變化狀態名稱 表列 (pptx 於眾多不同地方 設眾多不同值)
  204. /// (HiTeach 白板 除 pptx 給的原始值之外, 目前新增 "內定出現","內定消失", "內定強調", "color", "motion", "scale")
  205. /// </summary>
  206. public List<string> name_type { get; set; }
  207. /// <summary>
  208. /// 依 <p:tavLst> 各細項出現的順序, 記錄 相對應的 資料型態
  209. /// </summary>
  210. public List<string> newtavl { get; set; }
  211. /// <summary>
  212. /// bool 值 表列
  213. /// </summary>
  214. public bool newvalb { get; set; }
  215. /// <summary>
  216. /// (string) color 值 表列 (以 string 表示)
  217. /// </summary>
  218. public string newvalc { get; set; }
  219. /// <summary>
  220. /// double 值 表列
  221. /// </summary>
  222. public double newvald { get; set; }
  223. /// <summary>
  224. /// int 值 表列
  225. /// </summary>
  226. public int newvali { get; set; }
  227. /// <summary>
  228. /// string 值 表列
  229. /// </summary>
  230. public List<string> newvals { get; set; }
  231. /// <summary>
  232. /// (對應 <p:tav fmla="...">) fmla (string) 值 表列 (pptx 複雜動畫公式 會使用, 如:輕彈,猛然挪動,...等)
  233. /// </summary>
  234. public string tav_fmla_str { get; set; }
  235. /// <summary>
  236. /// (對應 <p:tav tm="...">) tm (%) 值 表列
  237. /// </summary>
  238. public List<int> tav_tm { get; set; }
  239. /// <summary>
  240. /// (對應 <p:cTn tmFilter="...">)
  241. /// </summary>
  242. public string tmfilter { get; set; }
  243. public string transition { get; set; }
  244. /// <summary>
  245. /// (對應 <p:txEl/p:charRg st="...">) int 值
  246. /// </summary>
  247. public int txtcrgbeg { get; set; }
  248. /// <summary>
  249. /// (對應 <p:txEl/p:charRg ="...">) int 值
  250. /// </summary>
  251. public int txtcrgend { get; set; }
  252. /// <summary>
  253. /// (對應 <p:txEl/p:pRg st="...">) int 值
  254. /// </summary>
  255. public int txtprgbeg { get; set; }
  256. /// <summary>
  257. /// (對應 <p:txEl/p:pRg end="...">) int 值
  258. /// </summary>
  259. public int txtprgend { get; set; }
  260. /// <summary>
  261. /// (by) 資料類別+index
  262. /// </summary>
  263. public string valby { get; set; }
  264. /// <summary>
  265. /// (from) 資料類別 + index
  266. /// </summary>
  267. public string valfrom { get; set; }
  268. /// <summary>
  269. /// (to) 資料類別+index
  270. /// </summary>
  271. public string valto { get; set; }
  272. }
  273. }