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 #include "core/fxge/cfx_graphstatedata.h" 8 9 #include "core/fxcrt/fx_memory.h" 10 #include "core/fxcrt/fx_system.h" 11 12 CFX_GraphStateData::CFX_GraphStateData() 13 : m_LineCap(LineCapButt), 14 m_DashCount(0), 15 m_DashArray(nullptr), 16 m_DashPhase(0), 17 m_LineJoin(LineJoinMiter), 18 m_MiterLimit(10 * 1.0f), 19 m_LineWidth(1.0f) {} 20 21 CFX_GraphStateData::CFX_GraphStateData(const CFX_GraphStateData& src) { 22 m_DashArray = nullptr; 23 Copy(src); 24 } 25 26 void CFX_GraphStateData::Copy(const CFX_GraphStateData& src) { 27 m_LineCap = src.m_LineCap; 28 m_DashCount = src.m_DashCount; 29 FX_Free(m_DashArray); 30 m_DashArray = nullptr; 31 m_DashPhase = src.m_DashPhase; 32 m_LineJoin = src.m_LineJoin; 33 m_MiterLimit = src.m_MiterLimit; 34 m_LineWidth = src.m_LineWidth; 35 if (m_DashCount) { 36 m_DashArray = FX_Alloc(float, m_DashCount); 37 memcpy(m_DashArray, src.m_DashArray, m_DashCount * sizeof(float)); 38 } 39 } 40 41 CFX_GraphStateData::~CFX_GraphStateData() { 42 FX_Free(m_DashArray); 43 } 44 45 void CFX_GraphStateData::SetDashCount(int count) { 46 FX_Free(m_DashArray); 47 m_DashArray = nullptr; 48 m_DashCount = count; 49 if (count == 0) 50 return; 51 m_DashArray = FX_Alloc(float, count); 52 } 53