Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(403)

Side by Side Diff: core/fpdfapi/fpdf_page/cpdf_psengine.h

Issue 2386423004: Move core/fpdfapi/fpdf_page to core/fpdfapi/page (Closed)
Patch Set: Rebase to master Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « core/fpdfapi/fpdf_page/cpdf_pattern.cpp ('k') | core/fpdfapi/fpdf_page/cpdf_shadingobject.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2016 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7 #ifndef CORE_FPDFAPI_FPDF_PAGE_CPDF_PSENGINE_H_
8 #define CORE_FPDFAPI_FPDF_PAGE_CPDF_PSENGINE_H_
9
10 #include <memory>
11 #include <vector>
12
13 #include "core/fxcrt/fx_system.h"
14
15 class CPDF_PSEngine;
16 class CPDF_PSOP;
17 class CPDF_SimpleParser;
18
19 enum PDF_PSOP {
20 PSOP_ADD,
21 PSOP_SUB,
22 PSOP_MUL,
23 PSOP_DIV,
24 PSOP_IDIV,
25 PSOP_MOD,
26 PSOP_NEG,
27 PSOP_ABS,
28 PSOP_CEILING,
29 PSOP_FLOOR,
30 PSOP_ROUND,
31 PSOP_TRUNCATE,
32 PSOP_SQRT,
33 PSOP_SIN,
34 PSOP_COS,
35 PSOP_ATAN,
36 PSOP_EXP,
37 PSOP_LN,
38 PSOP_LOG,
39 PSOP_CVI,
40 PSOP_CVR,
41 PSOP_EQ,
42 PSOP_NE,
43 PSOP_GT,
44 PSOP_GE,
45 PSOP_LT,
46 PSOP_LE,
47 PSOP_AND,
48 PSOP_OR,
49 PSOP_XOR,
50 PSOP_NOT,
51 PSOP_BITSHIFT,
52 PSOP_TRUE,
53 PSOP_FALSE,
54 PSOP_IF,
55 PSOP_IFELSE,
56 PSOP_POP,
57 PSOP_EXCH,
58 PSOP_DUP,
59 PSOP_COPY,
60 PSOP_INDEX,
61 PSOP_ROLL,
62 PSOP_PROC,
63 PSOP_CONST
64 };
65
66 constexpr uint32_t PSENGINE_STACKSIZE = 100;
67
68 class CPDF_PSProc {
69 public:
70 CPDF_PSProc();
71 ~CPDF_PSProc();
72
73 FX_BOOL Parse(CPDF_SimpleParser* parser, int depth);
74 FX_BOOL Execute(CPDF_PSEngine* pEngine);
75
76 private:
77 static const int kMaxDepth = 128;
78 std::vector<std::unique_ptr<CPDF_PSOP>> m_Operators;
79 };
80
81 class CPDF_PSEngine {
82 public:
83 CPDF_PSEngine();
84 ~CPDF_PSEngine();
85
86 FX_BOOL Parse(const FX_CHAR* str, int size);
87 FX_BOOL Execute();
88 FX_BOOL DoOperator(PDF_PSOP op);
89 void Reset() { m_StackCount = 0; }
90 void Push(FX_FLOAT value);
91 void Push(int value) { Push((FX_FLOAT)value); }
92 FX_FLOAT Pop();
93 uint32_t GetStackSize() const { return m_StackCount; }
94
95 private:
96 FX_FLOAT m_Stack[PSENGINE_STACKSIZE];
97 uint32_t m_StackCount;
98 CPDF_PSProc m_MainProc;
99 };
100
101 #endif // CORE_FPDFAPI_FPDF_PAGE_CPDF_PSENGINE_H_
OLDNEW
« no previous file with comments | « core/fpdfapi/fpdf_page/cpdf_pattern.cpp ('k') | core/fpdfapi/fpdf_page/cpdf_shadingobject.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698