| OLD | NEW | 
|---|
|  | (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_ |  | 
| OLD | NEW | 
|---|