Merge XFA to PDFium master at 4dc95e7 on 10/28/2014
[pdfium.git] / xfa / src / fxfa / src / app / xfa_checksum.h
1 // Copyright 2014 PDFium Authors. All rights reserved.\r
2 // Use of this source code is governed by a BSD-style license that can be\r
3 // found in the LICENSE file.\r
4 \r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
6 \r
7 #ifndef _FXFA_FORMFILLER_CHECKSUM_IMP_H\r
8 #define _FXFA_FORMFILLER_CHECKSUM_IMP_H\r
9 class CXFA_SAXReaderHandler;\r
10 class CXFA_ChecksumContext;\r
11 class CXFA_SAXContext : public CFX_Object\r
12 {\r
13 public:\r
14     CXFA_SAXContext() : m_eNode(FX_SAXNODE_Unknown)\r
15     {\r
16     }\r
17     CFX_ByteTextBuf             m_TextBuf;\r
18     CFX_ByteString              m_bsTagName;\r
19     FX_SAXNODE                  m_eNode;\r
20 };\r
21 class CXFA_SAXReaderHandler : public IFX_SAXReaderHandler, public CFX_Object\r
22 {\r
23 public:\r
24     CXFA_SAXReaderHandler(CXFA_ChecksumContext *pContext);\r
25     virtual ~CXFA_SAXReaderHandler();\r
26     virtual FX_LPVOID   OnTagEnter(FX_BSTR bsTagName, FX_SAXNODE eType, FX_DWORD dwStartPos);\r
27     virtual void                OnTagAttribute(FX_LPVOID pTag, FX_BSTR bsAttri, FX_BSTR bsValue);\r
28     virtual void                OnTagBreak(FX_LPVOID pTag);\r
29     virtual void                OnTagData(FX_LPVOID pTag, FX_SAXNODE eType, FX_BSTR bsData, FX_DWORD dwStartPos);\r
30     virtual void                OnTagClose(FX_LPVOID pTag, FX_DWORD dwEndPos);\r
31     virtual void                OnTagEnd(FX_LPVOID pTag, FX_BSTR bsTagName, FX_DWORD dwEndPos);\r
32 \r
33     virtual void                OnTargetData(FX_LPVOID pTag, FX_SAXNODE eType, FX_BSTR bsData, FX_DWORD dwStartPos);\r
34 protected:\r
35     void                                UpdateChecksum(FX_BOOL bCheckSpace);\r
36     CXFA_ChecksumContext        *m_pContext;\r
37     CXFA_SAXContext                     m_SAXContext;\r
38 };\r
39 class CXFA_ChecksumContext : public IXFA_ChecksumContext, public CFX_Object\r
40 {\r
41 public:\r
42     CXFA_ChecksumContext();\r
43     ~CXFA_ChecksumContext();\r
44     virtual     void            Release()\r
45     {\r
46         delete this;\r
47     }\r
48     virtual FX_BOOL             StartChecksum();\r
49     virtual FX_BOOL             UpdateChecksum(IFX_FileRead *pSrcFile, FX_FILESIZE offset = 0, size_t size = 0);\r
50     virtual void                FinishChecksum();\r
51     virtual void                GetChecksum(CFX_ByteString &bsChecksum);\r
52     void                                Update(FX_BSTR bsText);\r
53 protected:\r
54     IFX_SAXReader               *m_pSAXReader;\r
55     FX_LPBYTE                   m_pByteContext;\r
56     CFX_ByteString              m_bsChecksum;\r
57 };\r
58 #endif\r