blob: e5b438e58930416ccec4f0261784da21261d643f [file] [log] [blame]
// Copyright 2016 The PDFium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
#ifndef CORE_FPDFAPI_PAGE_CPDF_ALLSTATES_H_
#define CORE_FPDFAPI_PAGE_CPDF_ALLSTATES_H_
#include "core/fpdfapi/page/cpdf_graphicstates.h"
#include "core/fxcrt/fx_coordinates.h"
class CPDF_Array;
class CPDF_Dictionary;
class CPDF_StreamContentParser;
class CPDF_AllStates {
public:
CPDF_AllStates();
CPDF_AllStates(const CPDF_AllStates& that);
CPDF_AllStates& operator=(const CPDF_AllStates& that);
~CPDF_AllStates();
void SetDefaultStates();
void ProcessExtGS(const CPDF_Dictionary* pGS,
CPDF_StreamContentParser* pParser);
void SetLineDash(const CPDF_Array* pArray, float phase);
CFX_PointF GetTransformedTextPosition() const;
void ResetTextPosition();
void MoveTextPoint(const CFX_PointF& point);
void MoveTextToNextLine();
void IncrementTextPositionX(float value);
void IncrementTextPositionY(float value);
const CFX_Matrix& text_matrix() const { return text_matrix_; }
void set_text_matrix(const CFX_Matrix& matrix) { text_matrix_ = matrix; }
const CFX_Matrix& current_transformation_matrix() const { return ctm_; }
void set_current_transformation_matrix(const CFX_Matrix& matrix) {
ctm_ = matrix;
}
void prepend_to_current_transformation_matrix(const CFX_Matrix& matrix) {
ctm_ = matrix * ctm_;
}
const CFX_Matrix& parent_matrix() const { return parent_matrix_; }
void set_parent_matrix(const CFX_Matrix& matrix) { parent_matrix_ = matrix; }
void set_text_leading(float value) { text_leading_ = value; }
void set_text_rise(float value) { text_rise_ = value; }
float text_horz_scale() const { return text_horz_scale_; }
void set_text_horz_scale(float value) { text_horz_scale_ = value; }
const CPDF_ClipPath& clip_path() const { return graphic_states_.clip_path(); }
CPDF_ClipPath& mutable_clip_path() {
return graphic_states_.mutable_clip_path();
}
const CFX_GraphState& graph_state() const {
return graphic_states_.graph_state();
}
CFX_GraphState& mutable_graph_state() {
return graphic_states_.mutable_graph_state();
}
const CPDF_ColorState& color_state() const {
return graphic_states_.color_state();
}
CPDF_ColorState& mutable_color_state() {
return graphic_states_.mutable_color_state();
}
const CPDF_TextState& text_state() const {
return graphic_states_.text_state();
}
CPDF_TextState& mutable_text_state() {
return graphic_states_.mutable_text_state();
}
const CPDF_GeneralState& general_state() const {
return graphic_states_.general_state();
}
CPDF_GeneralState& mutable_general_state() {
return graphic_states_.mutable_general_state();
}
const CPDF_GraphicStates& graphic_states() const { return graphic_states_; }
private:
CPDF_GraphicStates graphic_states_;
CFX_Matrix text_matrix_;
CFX_Matrix ctm_;
CFX_Matrix parent_matrix_;
CFX_PointF text_pos_;
CFX_PointF text_line_pos_;
float text_leading_ = 0.0f;
float text_rise_ = 0.0f;
float text_horz_scale_ = 1.0f;
};
#endif // CORE_FPDFAPI_PAGE_CPDF_ALLSTATES_H_