You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

PICFAbstractType.java 20KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697
  1. /*
  2. * ====================================================================
  3. * Licensed to the Apache Software Foundation (ASF) under one or more
  4. * contributor license agreements. See the NOTICE file distributed with
  5. * this work for additional information regarding copyright ownership.
  6. * The ASF licenses this file to You under the Apache License, Version 2.0
  7. * (the "License"); you may not use this file except in compliance with
  8. * the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an "AS IS" BASIS,
  14. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. * ====================================================================
  18. */
  19. package org.apache.poi.hwpf.model.types;
  20. import java.util.Arrays;
  21. import org.apache.poi.util.Internal;
  22. import org.apache.poi.util.LittleEndian;
  23. /**
  24. * The PICF structure specifies the type of a picture, as well as the size of the
  25. * picture and information about its border.
  26. */
  27. @Internal
  28. public abstract class PICFAbstractType
  29. {
  30. protected int field_1_lcb;
  31. protected int field_2_cbHeader;
  32. protected short field_3_mm;
  33. protected short field_4_xExt;
  34. protected short field_5_yExt;
  35. protected short field_6_swHMF;
  36. protected int field_7_grf;
  37. protected int field_8_padding;
  38. protected int field_9_mmPM;
  39. protected int field_10_padding2;
  40. protected short field_11_dxaGoal;
  41. protected short field_12_dyaGoal;
  42. protected int field_13_mx;
  43. protected int field_14_my;
  44. protected short field_15_dxaReserved1;
  45. protected short field_16_dyaReserved1;
  46. protected short field_17_dxaReserved2;
  47. protected short field_18_dyaReserved2;
  48. protected byte field_19_fReserved;
  49. protected byte field_20_bpp;
  50. protected byte[] field_21_brcTop80;
  51. protected byte[] field_22_brcLeft80;
  52. protected byte[] field_23_brcBottom80;
  53. protected byte[] field_24_brcRight80;
  54. protected short field_25_dxaReserved3;
  55. protected short field_26_dyaReserved3;
  56. protected short field_27_cProps;
  57. protected PICFAbstractType()
  58. {
  59. this.field_21_brcTop80 = new byte[4];
  60. this.field_22_brcLeft80 = new byte[4];
  61. this.field_23_brcBottom80 = new byte[4];
  62. this.field_24_brcRight80 = new byte[4];
  63. }
  64. protected void fillFields( byte[] data, int offset )
  65. {
  66. field_1_lcb = LittleEndian.getInt( data, 0x0 + offset );
  67. field_2_cbHeader = LittleEndian.getShort( data, 0x4 + offset );
  68. field_3_mm = LittleEndian.getShort( data, 0x6 + offset );
  69. field_4_xExt = LittleEndian.getShort( data, 0x8 + offset );
  70. field_5_yExt = LittleEndian.getShort( data, 0xa + offset );
  71. field_6_swHMF = LittleEndian.getShort( data, 0xc + offset );
  72. field_7_grf = LittleEndian.getInt( data, 0xe + offset );
  73. field_8_padding = LittleEndian.getInt( data, 0x12 + offset );
  74. field_9_mmPM = LittleEndian.getShort( data, 0x16 + offset );
  75. field_10_padding2 = LittleEndian.getInt( data, 0x18 + offset );
  76. field_11_dxaGoal = LittleEndian.getShort( data, 0x1c + offset );
  77. field_12_dyaGoal = LittleEndian.getShort( data, 0x1e + offset );
  78. field_13_mx = LittleEndian.getShort( data, 0x20 + offset );
  79. field_14_my = LittleEndian.getShort( data, 0x22 + offset );
  80. field_15_dxaReserved1 = LittleEndian.getShort( data, 0x24 + offset );
  81. field_16_dyaReserved1 = LittleEndian.getShort( data, 0x26 + offset );
  82. field_17_dxaReserved2 = LittleEndian.getShort( data, 0x28 + offset );
  83. field_18_dyaReserved2 = LittleEndian.getShort( data, 0x2a + offset );
  84. field_19_fReserved = data[ 0x2c + offset ];
  85. field_20_bpp = data[ 0x2d + offset ];
  86. field_21_brcTop80 = Arrays.copyOfRange( data, 0x2e + offset, 0x2e + offset + 4 );
  87. field_22_brcLeft80 = Arrays.copyOfRange( data, 0x32 + offset, 0x32 + offset + 4 );
  88. field_23_brcBottom80 = Arrays.copyOfRange( data, 0x36 + offset, 0x36 + offset + 4 );
  89. field_24_brcRight80 = Arrays.copyOfRange( data, 0x3a + offset, 0x3a + offset + 4 );
  90. field_25_dxaReserved3 = LittleEndian.getShort( data, 0x3e + offset );
  91. field_26_dyaReserved3 = LittleEndian.getShort( data, 0x40 + offset );
  92. field_27_cProps = LittleEndian.getShort( data, 0x42 + offset );
  93. }
  94. public void serialize( byte[] data, int offset )
  95. {
  96. LittleEndian.putInt( data, 0x0 + offset, field_1_lcb );
  97. LittleEndian.putUShort( data, 0x4 + offset, field_2_cbHeader );
  98. LittleEndian.putShort( data, 0x6 + offset, field_3_mm );
  99. LittleEndian.putShort( data, 0x8 + offset, field_4_xExt );
  100. LittleEndian.putShort( data, 0xa + offset, field_5_yExt );
  101. LittleEndian.putShort( data, 0xc + offset, field_6_swHMF );
  102. LittleEndian.putInt( data, 0xe + offset, field_7_grf );
  103. LittleEndian.putInt( data, 0x12 + offset, field_8_padding );
  104. LittleEndian.putUShort( data, 0x16 + offset, field_9_mmPM );
  105. LittleEndian.putInt( data, 0x18 + offset, field_10_padding2 );
  106. LittleEndian.putShort( data, 0x1c + offset, field_11_dxaGoal );
  107. LittleEndian.putShort( data, 0x1e + offset, field_12_dyaGoal );
  108. LittleEndian.putUShort( data, 0x20 + offset, field_13_mx );
  109. LittleEndian.putUShort( data, 0x22 + offset, field_14_my );
  110. LittleEndian.putShort( data, 0x24 + offset, field_15_dxaReserved1 );
  111. LittleEndian.putShort( data, 0x26 + offset, field_16_dyaReserved1 );
  112. LittleEndian.putShort( data, 0x28 + offset, field_17_dxaReserved2 );
  113. LittleEndian.putShort( data, 0x2a + offset, field_18_dyaReserved2 );
  114. data[ 0x2c + offset ] = field_19_fReserved;
  115. data[ 0x2d + offset ] = field_20_bpp;
  116. System.arraycopy( field_21_brcTop80, 0, data, 0x2e + offset, field_21_brcTop80.length );
  117. System.arraycopy( field_22_brcLeft80, 0, data, 0x32 + offset, field_22_brcLeft80.length );
  118. System.arraycopy( field_23_brcBottom80, 0, data, 0x36 + offset, field_23_brcBottom80.length );
  119. System.arraycopy( field_24_brcRight80, 0, data, 0x3a + offset, field_24_brcRight80.length );
  120. LittleEndian.putShort( data, 0x3e + offset, field_25_dxaReserved3 );
  121. LittleEndian.putShort( data, 0x40 + offset, field_26_dyaReserved3 );
  122. LittleEndian.putShort( data, 0x42 + offset, field_27_cProps );
  123. }
  124. public byte[] serialize()
  125. {
  126. final byte[] result = new byte[ getSize() ];
  127. serialize( result, 0 );
  128. return result;
  129. }
  130. /**
  131. * Size of record
  132. */
  133. public static int getSize()
  134. {
  135. return 0 + 4 + 2 + 2 + 2 + 2 + 2 + 4 + 4 + 2 + 4 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 1 + 1 + 4 + 4 + 4 + 4 + 2 + 2 + 2;
  136. }
  137. public String toString()
  138. {
  139. StringBuilder builder = new StringBuilder();
  140. builder.append("[PICF]\n");
  141. builder.append(" .lcb = ");
  142. builder.append(" (").append(getLcb()).append(" )\n");
  143. builder.append(" .cbHeader = ");
  144. builder.append(" (").append(getCbHeader()).append(" )\n");
  145. builder.append(" .mm = ");
  146. builder.append(" (").append(getMm()).append(" )\n");
  147. builder.append(" .xExt = ");
  148. builder.append(" (").append(getXExt()).append(" )\n");
  149. builder.append(" .yExt = ");
  150. builder.append(" (").append(getYExt()).append(" )\n");
  151. builder.append(" .swHMF = ");
  152. builder.append(" (").append(getSwHMF()).append(" )\n");
  153. builder.append(" .grf = ");
  154. builder.append(" (").append(getGrf()).append(" )\n");
  155. builder.append(" .padding = ");
  156. builder.append(" (").append(getPadding()).append(" )\n");
  157. builder.append(" .mmPM = ");
  158. builder.append(" (").append(getMmPM()).append(" )\n");
  159. builder.append(" .padding2 = ");
  160. builder.append(" (").append(getPadding2()).append(" )\n");
  161. builder.append(" .dxaGoal = ");
  162. builder.append(" (").append(getDxaGoal()).append(" )\n");
  163. builder.append(" .dyaGoal = ");
  164. builder.append(" (").append(getDyaGoal()).append(" )\n");
  165. builder.append(" .mx = ");
  166. builder.append(" (").append(getMx()).append(" )\n");
  167. builder.append(" .my = ");
  168. builder.append(" (").append(getMy()).append(" )\n");
  169. builder.append(" .dxaReserved1 = ");
  170. builder.append(" (").append(getDxaReserved1()).append(" )\n");
  171. builder.append(" .dyaReserved1 = ");
  172. builder.append(" (").append(getDyaReserved1()).append(" )\n");
  173. builder.append(" .dxaReserved2 = ");
  174. builder.append(" (").append(getDxaReserved2()).append(" )\n");
  175. builder.append(" .dyaReserved2 = ");
  176. builder.append(" (").append(getDyaReserved2()).append(" )\n");
  177. builder.append(" .fReserved = ");
  178. builder.append(" (").append(getFReserved()).append(" )\n");
  179. builder.append(" .bpp = ");
  180. builder.append(" (").append(getBpp()).append(" )\n");
  181. builder.append(" .brcTop80 = ");
  182. builder.append(" (").append(Arrays.toString(getBrcTop80())).append(" )\n");
  183. builder.append(" .brcLeft80 = ");
  184. builder.append(" (").append(Arrays.toString(getBrcLeft80())).append(" )\n");
  185. builder.append(" .brcBottom80 = ");
  186. builder.append(" (").append(Arrays.toString(getBrcBottom80())).append(" )\n");
  187. builder.append(" .brcRight80 = ");
  188. builder.append(" (").append(Arrays.toString(getBrcRight80())).append(" )\n");
  189. builder.append(" .dxaReserved3 = ");
  190. builder.append(" (").append(getDxaReserved3()).append(" )\n");
  191. builder.append(" .dyaReserved3 = ");
  192. builder.append(" (").append(getDyaReserved3()).append(" )\n");
  193. builder.append(" .cProps = ");
  194. builder.append(" (").append(getCProps()).append(" )\n");
  195. builder.append("[/PICF]\n");
  196. return builder.toString();
  197. }
  198. /**
  199. * A signed integer that specifies the size, in bytes, of this PICF structure and the subsequent data.
  200. */
  201. @Internal
  202. public int getLcb()
  203. {
  204. return field_1_lcb;
  205. }
  206. /**
  207. * A signed integer that specifies the size, in bytes, of this PICF structure and the subsequent data.
  208. */
  209. @Internal
  210. public void setLcb( int field_1_lcb )
  211. {
  212. this.field_1_lcb = field_1_lcb;
  213. }
  214. /**
  215. * An unsigned integer that specifies the size, in bytes, of this PICF structure. This value MUST be 0x44.
  216. */
  217. @Internal
  218. public int getCbHeader()
  219. {
  220. return field_2_cbHeader;
  221. }
  222. /**
  223. * An unsigned integer that specifies the size, in bytes, of this PICF structure. This value MUST be 0x44.
  224. */
  225. @Internal
  226. public void setCbHeader( int field_2_cbHeader )
  227. {
  228. this.field_2_cbHeader = field_2_cbHeader;
  229. }
  230. /**
  231. * A signed integer that specifies the format of the picture data.
  232. */
  233. @Internal
  234. public short getMm()
  235. {
  236. return field_3_mm;
  237. }
  238. /**
  239. * A signed integer that specifies the format of the picture data.
  240. */
  241. @Internal
  242. public void setMm( short field_3_mm )
  243. {
  244. this.field_3_mm = field_3_mm;
  245. }
  246. /**
  247. * This field is unused and MUST be ignored.
  248. */
  249. @Internal
  250. public short getXExt()
  251. {
  252. return field_4_xExt;
  253. }
  254. /**
  255. * This field is unused and MUST be ignored.
  256. */
  257. @Internal
  258. public void setXExt( short field_4_xExt )
  259. {
  260. this.field_4_xExt = field_4_xExt;
  261. }
  262. /**
  263. * This field is unused and MUST be ignored.
  264. */
  265. @Internal
  266. public short getYExt()
  267. {
  268. return field_5_yExt;
  269. }
  270. /**
  271. * This field is unused and MUST be ignored.
  272. */
  273. @Internal
  274. public void setYExt( short field_5_yExt )
  275. {
  276. this.field_5_yExt = field_5_yExt;
  277. }
  278. /**
  279. * This field is unused and MUST be ignored.
  280. */
  281. @Internal
  282. public short getSwHMF()
  283. {
  284. return field_6_swHMF;
  285. }
  286. /**
  287. * This field is unused and MUST be ignored.
  288. */
  289. @Internal
  290. public void setSwHMF( short field_6_swHMF )
  291. {
  292. this.field_6_swHMF = field_6_swHMF;
  293. }
  294. /**
  295. * This field MUST be ignored.
  296. */
  297. @Internal
  298. public int getGrf()
  299. {
  300. return field_7_grf;
  301. }
  302. /**
  303. * This field MUST be ignored.
  304. */
  305. @Internal
  306. public void setGrf( int field_7_grf )
  307. {
  308. this.field_7_grf = field_7_grf;
  309. }
  310. /**
  311. * This value MUST be zero and MUST be ignored.
  312. */
  313. @Internal
  314. public int getPadding()
  315. {
  316. return field_8_padding;
  317. }
  318. /**
  319. * This value MUST be zero and MUST be ignored.
  320. */
  321. @Internal
  322. public void setPadding( int field_8_padding )
  323. {
  324. this.field_8_padding = field_8_padding;
  325. }
  326. /**
  327. * This field MUST be ignored.
  328. */
  329. @Internal
  330. public int getMmPM()
  331. {
  332. return field_9_mmPM;
  333. }
  334. /**
  335. * This field MUST be ignored.
  336. */
  337. @Internal
  338. public void setMmPM( int field_9_mmPM )
  339. {
  340. this.field_9_mmPM = field_9_mmPM;
  341. }
  342. /**
  343. * This value MUST be zero and MUST be ignored.
  344. */
  345. @Internal
  346. public int getPadding2()
  347. {
  348. return field_10_padding2;
  349. }
  350. /**
  351. * This value MUST be zero and MUST be ignored.
  352. */
  353. @Internal
  354. public void setPadding2( int field_10_padding2 )
  355. {
  356. this.field_10_padding2 = field_10_padding2;
  357. }
  358. /**
  359. * Get the dxaGoal field for the PICF record.
  360. */
  361. @Internal
  362. public short getDxaGoal()
  363. {
  364. return field_11_dxaGoal;
  365. }
  366. /**
  367. * Set the dxaGoal field for the PICF record.
  368. */
  369. @Internal
  370. public void setDxaGoal( short field_11_dxaGoal )
  371. {
  372. this.field_11_dxaGoal = field_11_dxaGoal;
  373. }
  374. /**
  375. * Get the dyaGoal field for the PICF record.
  376. */
  377. @Internal
  378. public short getDyaGoal()
  379. {
  380. return field_12_dyaGoal;
  381. }
  382. /**
  383. * Set the dyaGoal field for the PICF record.
  384. */
  385. @Internal
  386. public void setDyaGoal( short field_12_dyaGoal )
  387. {
  388. this.field_12_dyaGoal = field_12_dyaGoal;
  389. }
  390. /**
  391. * Get the mx field for the PICF record.
  392. */
  393. @Internal
  394. public int getMx()
  395. {
  396. return field_13_mx;
  397. }
  398. /**
  399. * Set the mx field for the PICF record.
  400. */
  401. @Internal
  402. public void setMx( int field_13_mx )
  403. {
  404. this.field_13_mx = field_13_mx;
  405. }
  406. /**
  407. * Get the my field for the PICF record.
  408. */
  409. @Internal
  410. public int getMy()
  411. {
  412. return field_14_my;
  413. }
  414. /**
  415. * Set the my field for the PICF record.
  416. */
  417. @Internal
  418. public void setMy( int field_14_my )
  419. {
  420. this.field_14_my = field_14_my;
  421. }
  422. /**
  423. * Get the dxaReserved1 field for the PICF record.
  424. */
  425. @Internal
  426. public short getDxaReserved1()
  427. {
  428. return field_15_dxaReserved1;
  429. }
  430. /**
  431. * Set the dxaReserved1 field for the PICF record.
  432. */
  433. @Internal
  434. public void setDxaReserved1( short field_15_dxaReserved1 )
  435. {
  436. this.field_15_dxaReserved1 = field_15_dxaReserved1;
  437. }
  438. /**
  439. * Get the dyaReserved1 field for the PICF record.
  440. */
  441. @Internal
  442. public short getDyaReserved1()
  443. {
  444. return field_16_dyaReserved1;
  445. }
  446. /**
  447. * Set the dyaReserved1 field for the PICF record.
  448. */
  449. @Internal
  450. public void setDyaReserved1( short field_16_dyaReserved1 )
  451. {
  452. this.field_16_dyaReserved1 = field_16_dyaReserved1;
  453. }
  454. /**
  455. * Get the dxaReserved2 field for the PICF record.
  456. */
  457. @Internal
  458. public short getDxaReserved2()
  459. {
  460. return field_17_dxaReserved2;
  461. }
  462. /**
  463. * Set the dxaReserved2 field for the PICF record.
  464. */
  465. @Internal
  466. public void setDxaReserved2( short field_17_dxaReserved2 )
  467. {
  468. this.field_17_dxaReserved2 = field_17_dxaReserved2;
  469. }
  470. /**
  471. * Get the dyaReserved2 field for the PICF record.
  472. */
  473. @Internal
  474. public short getDyaReserved2()
  475. {
  476. return field_18_dyaReserved2;
  477. }
  478. /**
  479. * Set the dyaReserved2 field for the PICF record.
  480. */
  481. @Internal
  482. public void setDyaReserved2( short field_18_dyaReserved2 )
  483. {
  484. this.field_18_dyaReserved2 = field_18_dyaReserved2;
  485. }
  486. /**
  487. * Get the fReserved field for the PICF record.
  488. */
  489. @Internal
  490. public byte getFReserved()
  491. {
  492. return field_19_fReserved;
  493. }
  494. /**
  495. * Set the fReserved field for the PICF record.
  496. */
  497. @Internal
  498. public void setFReserved( byte field_19_fReserved )
  499. {
  500. this.field_19_fReserved = field_19_fReserved;
  501. }
  502. /**
  503. * Get the bpp field for the PICF record.
  504. */
  505. @Internal
  506. public byte getBpp()
  507. {
  508. return field_20_bpp;
  509. }
  510. /**
  511. * Set the bpp field for the PICF record.
  512. */
  513. @Internal
  514. public void setBpp( byte field_20_bpp )
  515. {
  516. this.field_20_bpp = field_20_bpp;
  517. }
  518. /**
  519. * Get the brcTop80 field for the PICF record.
  520. */
  521. @Internal
  522. public byte[] getBrcTop80()
  523. {
  524. return field_21_brcTop80;
  525. }
  526. /**
  527. * Set the brcTop80 field for the PICF record.
  528. */
  529. @Internal
  530. public void setBrcTop80( byte[] field_21_brcTop80 )
  531. {
  532. this.field_21_brcTop80 = field_21_brcTop80;
  533. }
  534. /**
  535. * Get the brcLeft80 field for the PICF record.
  536. */
  537. @Internal
  538. public byte[] getBrcLeft80()
  539. {
  540. return field_22_brcLeft80;
  541. }
  542. /**
  543. * Set the brcLeft80 field for the PICF record.
  544. */
  545. @Internal
  546. public void setBrcLeft80( byte[] field_22_brcLeft80 )
  547. {
  548. this.field_22_brcLeft80 = field_22_brcLeft80;
  549. }
  550. /**
  551. * Get the brcBottom80 field for the PICF record.
  552. */
  553. @Internal
  554. public byte[] getBrcBottom80()
  555. {
  556. return field_23_brcBottom80;
  557. }
  558. /**
  559. * Set the brcBottom80 field for the PICF record.
  560. */
  561. @Internal
  562. public void setBrcBottom80( byte[] field_23_brcBottom80 )
  563. {
  564. this.field_23_brcBottom80 = field_23_brcBottom80;
  565. }
  566. /**
  567. * Get the brcRight80 field for the PICF record.
  568. */
  569. @Internal
  570. public byte[] getBrcRight80()
  571. {
  572. return field_24_brcRight80;
  573. }
  574. /**
  575. * Set the brcRight80 field for the PICF record.
  576. */
  577. @Internal
  578. public void setBrcRight80( byte[] field_24_brcRight80 )
  579. {
  580. this.field_24_brcRight80 = field_24_brcRight80;
  581. }
  582. /**
  583. * Get the dxaReserved3 field for the PICF record.
  584. */
  585. @Internal
  586. public short getDxaReserved3()
  587. {
  588. return field_25_dxaReserved3;
  589. }
  590. /**
  591. * Set the dxaReserved3 field for the PICF record.
  592. */
  593. @Internal
  594. public void setDxaReserved3( short field_25_dxaReserved3 )
  595. {
  596. this.field_25_dxaReserved3 = field_25_dxaReserved3;
  597. }
  598. /**
  599. * Get the dyaReserved3 field for the PICF record.
  600. */
  601. @Internal
  602. public short getDyaReserved3()
  603. {
  604. return field_26_dyaReserved3;
  605. }
  606. /**
  607. * Set the dyaReserved3 field for the PICF record.
  608. */
  609. @Internal
  610. public void setDyaReserved3( short field_26_dyaReserved3 )
  611. {
  612. this.field_26_dyaReserved3 = field_26_dyaReserved3;
  613. }
  614. /**
  615. * This value MUST be 0 and MUST be ignored.
  616. */
  617. @Internal
  618. public short getCProps()
  619. {
  620. return field_27_cProps;
  621. }
  622. /**
  623. * This value MUST be 0 and MUST be ignored.
  624. */
  625. @Internal
  626. public void setCProps( short field_27_cProps )
  627. {
  628. this.field_27_cProps = field_27_cProps;
  629. }
  630. } // END OF CLASS