summaryrefslogtreecommitdiff
path: root/hwpfilter/source/hinfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'hwpfilter/source/hinfo.cpp')
-rw-r--r--hwpfilter/source/hinfo.cpp221
1 files changed, 221 insertions, 0 deletions
diff --git a/hwpfilter/source/hinfo.cpp b/hwpfilter/source/hinfo.cpp
new file mode 100644
index 000000000000..773fbf05ca1d
--- /dev/null
+++ b/hwpfilter/source/hinfo.cpp
@@ -0,0 +1,221 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+/* $Id: hinfo.cpp,v 1.5 2008-06-04 09:58:52 vg Exp $ */
+
+#include "precompile.h"
+
+#include "hwplib.h"
+#include "hinfo.h"
+#include "hwpfile.h"
+
+// Info Block
+
+//int ParaShape::count = 0;
+//int CharShape::count = 0;
+
+static bool HWPReadInfoBlock(void *ptr, int len, HWPFile & hwpf)
+{
+ hwpf.info_block_len = len;
+ if (0 == len)
+ return true;
+ else
+ return hwpf.ReadBlock(ptr, len) ? true : false;
+}
+
+
+// Document Infomation
+
+HWPInfo::HWPInfo(void)
+{
+ info_block = 0;
+ back_info.isset = false;
+}
+
+
+HWPInfo::~HWPInfo(void)
+{
+ if (info_block)
+ delete[]info_block;
+ info_block = 0;
+}
+
+
+/**
+ * ¹®¼­Á¤º¸¸¦ ÀоîµéÀÌ´Â ÇÔ¼ö ( 128 bytes )
+ * ¹®¼­Á¤º¸´Â ÆÄÀÏÀνÄÁ¤º¸( 30 bytes ) ´ÙÀ½¿¡ À§Ä¡ÇÑ Á¤º¸ÀÌ´Ù.
+ */
+bool HWPInfo::Read(HWPFile & hwpf)
+{
+ hwpf.Read2b(&cur_col, 1); /* ¹®¼­¸¦ ÀúÀåÇÒ ´ç½ÃÀÇ Ä¿¼­°¡ À§Ä¡ÇÑ ¹®´Ü¹øÈ£ */
+ hwpf.Read2b(&cur_row, 1); /* ¹®´Ü Ä­ */
+
+ hwpf.Read1b(&paper.paper_kind, 1); /* ¿ëÁö Á¾·ù */
+ hwpf.Read1b(&paper.paper_direction, 1); /* ¿ëÁö ¹æÇâ */
+
+// paper geometry information
+ paper.paper_height = (short) hwpf.Read2b(); /* ¿ëÁö ±æÀÌ */
+ paper.paper_width = (short) hwpf.Read2b(); /* ¿ëÁö ³Êºñ */
+ paper.top_margin = (short) hwpf.Read2b(); /* À§ÂÊ ¿©¹é */
+ paper.bottom_margin = (short) hwpf.Read2b(); /* ¾Æ·¡ÂÊ ¿©¹é */
+ paper.left_margin = (short) hwpf.Read2b(); /* ¿ÞÂÊ ¿©¹é */
+ paper.right_margin = (short) hwpf.Read2b(); /* ¿À¸¥ÂÊ ¿©¹é */
+ paper.header_length = (short) hwpf.Read2b(); /* ¸Ó¸®¸» ±æÀÌ */
+ paper.footer_length = (short) hwpf.Read2b(); /* ²¿¸®¸» ±æÀÌ */
+ paper.gutter_length = (short) hwpf.Read2b(); /* Á¦º»¿©¹é */
+ hwpf.Read2b(&readonly, 1); /* ¿¹¾à */
+ hwpf.Read1b(reserved1, 4); /* ¿¹¾à */
+ hwpf.Read1b(&chain_info.chain_page_no, 1); /* ÂÊ ¹øÈ£ ¿¬°á 1-¿¬°á, 0-»õ·Î½ÃÀÛ (¿¬°áÀμ⿡¼­ »ç¿ë) */
+ hwpf.Read1b(&chain_info.chain_footnote_no, 1);/* °¢ÁÖ¹øÈ£ ¿¬°á 1-¿¬°á 0-»õ·Î½ÃÀÛ */
+ /* ¿¬°áÀμâÇÒ ÆÄÀÏÀÇ À̸§ */
+ hwpf.Read1b(chain_info.chain_filename, CHAIN_MAX_PATH);
+
+ hwpf.Read1b(annotation, ANNOTATION_LEN); /* µ¡ºÙÀÌ´Â ¸» ( ÆÄÀÏ ÀúÀåÇÒ ¶§ µ¡ºÙÀÌ´Â ¸»¿¡ ÁöÁ¤ÇÑ ³»¿ë ) */
+ hwpf.Read2b(&encrypted, 1); /* ¾ÏÈ£ ¿©ºÎ 0-º¸ÅëÆÄÀÏ, ±×¿Ü-¾ÏÈ£°É¸° ÆÄÀÏ */
+//hwpf.Read1b(reserved2, 6); /* ¾Æ·¡ 3°³ÀÇ°ªÀ¸·Î ¹Ù²î¾ú´Ù. */
+ hwpf.Read2b(&beginpagenum,1); /* ÆäÀÌÁö½ÃÀÛ¹øÈ£ */
+
+// footnote
+ hwpf.Read2b(&beginfnnum,1); /* °¢ÁÖ ½ÃÀÛ¹øÈ£ */
+ hwpf.Read2b(&countfn,1); /* °¢ÁÖ °¹¼ö */
+ splinetext = (short) hwpf.Read2b();
+ splinefn = (short) hwpf.Read2b();
+ spfnfn = (short) hwpf.Read2b();
+ hwpf.Read1b(&fnchar, 1);
+ hwpf.Read1b(&fnlinetype, 1);
+// border layout
+ for (int ii = 0; ii < 4; ++ii)
+ bordermargin[ii] = (short) hwpf.Read2b();
+ hwpf.Read2b(&borderline, 1);
+
+ hwpf.Read1b(&empty_line_hide, 1);
+ hwpf.Read1b(&table_move, 1);
+ hwpf.Read1b(&compressed, 1);
+
+ hwpf.Read1b(&reserved3, 1);
+
+ hwpf.Read2b(&info_block_len, 1);
+ if (hwpf.State())
+ return false;
+
+/* ¹®¼­ ¿ä¾àÀ» Àд´Ù. */
+ if (!summary.Read(hwpf))
+ return false;
+ if (info_block_len > 0)
+ {
+ info_block = new unsigned char[info_block_len + 1];
+
+ if (0 == info_block ||
+ !HWPReadInfoBlock(info_block, info_block_len, hwpf))
+ return false;
+ }
+
+/* hwpfÀÇ °ªÀ» Àç¼³Á¤ ÇÑ´Ù. */
+ hwpf.compressed = compressed ? true : false;
+ hwpf.encrypted = encrypted ? true : false;
+ hwpf.info_block_len = info_block_len;
+ hwpf.SetCompressed(hwpf.compressed);
+
+ return (!hwpf.State());
+}
+
+
+// Document Summary
+
+bool HWPSummary::Read(HWPFile & hwpf)
+{
+ hwpf.Read2b(title, 56);
+ hwpf.Read2b(subject, 56);
+ hwpf.Read2b(author, 56);
+ hwpf.Read2b(date, 56);
+ hwpf.Read2b(keyword[0], 56);
+ hwpf.Read2b(keyword[1], 56);
+ hwpf.Read2b(etc[0], 56);
+ hwpf.Read2b(etc[1], 56);
+ hwpf.Read2b(etc[2], 56);
+
+ return (!hwpf.State());
+}
+
+
+//
+
+bool ParaShape::Read(HWPFile & hwpf)
+{
+ pagebreak = 0;
+ left_margin = (short) hwpf.Read2b();
+ right_margin = (short) hwpf.Read2b();
+ indent = (short) hwpf.Read2b();
+ lspacing = (short) hwpf.Read2b();
+ pspacing_next = (short) hwpf.Read2b();
+
+ hwpf.Read1b(&condense, 1);
+ hwpf.Read1b(&arrange_type, 1);
+ for (int ii = 0; ii < MAXTABS; ii++)
+ {
+ hwpf.Read1b(&tabs[ii].type, 1);
+ hwpf.Read1b(&tabs[ii].dot_continue, 1);
+ tabs[ii].position = (short) hwpf.Read2b();
+ }
+ hwpf.Read1b(&coldef.ncols, 1);
+ hwpf.Read1b(&coldef.separator, 1);
+ coldef.spacing = (short) hwpf.Read2b();
+ coldef.columnlen = (short) hwpf.Read2b();
+ coldef.columnlen0 = (short) hwpf.Read2b();
+ hwpf.Read1b(&shade, 1);
+ hwpf.Read1b(&outline, 1);
+ hwpf.Read1b(&outline_continue, 1);
+ pspacing_prev = (short) hwpf.Read2b();
+
+ hwpf.Read1b(reserved, 2);
+ return (!hwpf.State());
+}
+
+
+/*
+CharShape::~CharShape()
+{
+}
+ParaShape::~ParaShape()
+{
+}
+
+*/
+bool CharShape::Read(HWPFile & hwpf)
+{
+//index = ++count;
+ size = (short) hwpf.Read2b();
+ hwpf.Read1b(font, NLanguage);
+ hwpf.Read1b(ratio, NLanguage);
+ hwpf.Read1b(space, NLanguage);
+ hwpf.Read1b(color, 2);
+ hwpf.Read1b(&shade, 1);
+ hwpf.Read1b(&attr, 1);
+ hwpf.Read1b(reserved, 4);
+
+ return (!hwpf.State());
+}