1ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Copyright 2014 PDFium Authors. All rights reserved. 2ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 3ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// found in the LICENSE file. 4ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 5ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Original code is licensed as follows: 7ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann/* 8ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * Copyright 2013 ZXing authors 9ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * 10ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * Licensed under the Apache License, Version 2.0 (the "License"); 11ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * you may not use this file except in compliance with the License. 12ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * You may obtain a copy of the License at 13ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * 14ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * http://www.apache.org/licenses/LICENSE-2.0 15ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * 16ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * Unless required by applicable law or agreed to in writing, software 17ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * distributed under the License is distributed on an "AS IS" BASIS, 18ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * See the License for the specific language governing permissions and 20ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * limitations under the License. 21ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann */ 22ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 23ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/fxbarcode/barcode.h" 24ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/fxbarcode/BC_ResultPoint.h" 25ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/fxbarcode/common/BC_CommonBitMatrix.h" 26ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "BC_PDF417BoundingBox.h" 27ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCBC_BoundingBox::CBC_BoundingBox(CBC_CommonBitMatrix* image, 28ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CBC_ResultPoint* topLeft, 29ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CBC_ResultPoint* bottomLeft, 30ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CBC_ResultPoint* topRight, 31ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CBC_ResultPoint* bottomRight, 32ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t& e) { 33ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if ((topLeft == NULL && topRight == NULL) || 34ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (bottomLeft == NULL && bottomRight == NULL) || 35ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (topLeft != NULL && bottomLeft == NULL) || 36ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (topRight != NULL && bottomRight == NULL)) { 37ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann e = BCExceptionNotFoundInstance; 38ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 39ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann init(image, topLeft, bottomLeft, topRight, bottomRight); 40ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 41ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCBC_BoundingBox::CBC_BoundingBox(CBC_BoundingBox* boundingBox) { 42ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann init(boundingBox->m_image, boundingBox->m_topLeft, boundingBox->m_bottomLeft, 43ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann boundingBox->m_topRight, boundingBox->m_bottomRight); 44ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 45ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCBC_BoundingBox::~CBC_BoundingBox() { 46ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_topLeft) { 47ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete m_topLeft; 48ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 49ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_bottomLeft) { 50ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete m_bottomLeft; 51ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 52ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_topRight) { 53ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete m_topRight; 54ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 55ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_bottomRight) { 56ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete m_bottomRight; 57ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 58ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 59ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCBC_BoundingBox* CBC_BoundingBox::merge(CBC_BoundingBox* leftBox, 60ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CBC_BoundingBox* rightBox, 61ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t& e) { 62ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CBC_BoundingBox* boundingBox = NULL; 63ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (leftBox == NULL) { 64ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann boundingBox = new CBC_BoundingBox(rightBox); 65ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return boundingBox; 66ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 67ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (rightBox == NULL) { 68ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann boundingBox = new CBC_BoundingBox(leftBox); 69ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return boundingBox; 70ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 71ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann boundingBox = new CBC_BoundingBox(leftBox->m_image, leftBox->m_topLeft, 72ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann leftBox->m_bottomLeft, rightBox->m_topRight, 73ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rightBox->m_bottomRight, e); 74ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 75ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return boundingBox; 76ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 77ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCBC_BoundingBox* CBC_BoundingBox::addMissingRows(int32_t missingStartRows, 78ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t missingEndRows, 79ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL isLeft, 80ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t& e) { 81ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CBC_ResultPoint* newTopLeft = m_topLeft; 82ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CBC_ResultPoint* newBottomLeft = m_bottomLeft; 83ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CBC_ResultPoint* newTopRight = m_topRight; 84ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CBC_ResultPoint* newBottomRight = m_bottomRight; 85ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CBC_ResultPoint* newTop = NULL; 86ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CBC_ResultPoint* newBottom = NULL; 87ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (missingStartRows > 0) { 88ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CBC_ResultPoint* top = isLeft ? m_topLeft : m_topRight; 89ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t newMinY = (int32_t)top->GetY() - missingStartRows; 90ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (newMinY < 0) { 91ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann newMinY = 0; 92ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 93ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann newTop = new CBC_ResultPoint((FX_FLOAT)top->GetX(), (FX_FLOAT)newMinY); 94ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (isLeft) { 95ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann newTopLeft = newTop; 96ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 97ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann newTopRight = newTop; 98ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 99ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 100ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (missingEndRows > 0) { 101ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CBC_ResultPoint* bottom = isLeft ? m_bottomLeft : m_bottomRight; 102ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t newMaxY = (int32_t)bottom->GetY() + missingEndRows; 103ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (newMaxY >= m_image->GetHeight()) { 104ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann newMaxY = m_image->GetHeight() - 1; 105ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 106ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann newBottom = 107ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann new CBC_ResultPoint((FX_FLOAT)bottom->GetX(), (FX_FLOAT)newMaxY); 108ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (isLeft) { 109ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann newBottomLeft = newBottom; 110ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 111ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann newBottomRight = newBottom; 112ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 113ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 114ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann calculateMinMaxValues(); 115ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CBC_BoundingBox* boundingBox = new CBC_BoundingBox( 116ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_image, newTopLeft, newBottomLeft, newTopRight, newBottomRight, e); 117ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete newTop; 118ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete newBottom; 119ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 120ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return boundingBox; 121ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 122ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CBC_BoundingBox::setTopRight(CBC_ResultPoint topRight) { 123ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_topRight) { 124ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete m_topRight; 125ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 126ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_topRight = new CBC_ResultPoint(topRight.GetX(), topRight.GetY()); 127ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann calculateMinMaxValues(); 128ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 129ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CBC_BoundingBox::setBottomRight(CBC_ResultPoint bottomRight) { 130ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_bottomRight) { 131ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete m_bottomRight; 132ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 133ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_bottomRight = new CBC_ResultPoint(bottomRight.GetX(), bottomRight.GetY()); 134ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann calculateMinMaxValues(); 135ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 136ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint32_t CBC_BoundingBox::getMinX() { 137ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_minX; 138ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 139ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint32_t CBC_BoundingBox::getMaxX() { 140ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_maxX; 141ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 142ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint32_t CBC_BoundingBox::getMinY() { 143ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_minY; 144ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 145ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint32_t CBC_BoundingBox::getMaxY() { 146ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_maxY; 147ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 148ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCBC_ResultPoint* CBC_BoundingBox::getTopLeft() { 149ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_topLeft; 150ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 151ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCBC_ResultPoint* CBC_BoundingBox::getTopRight() { 152ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_topRight; 153ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 154ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCBC_ResultPoint* CBC_BoundingBox::getBottomLeft() { 155ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_bottomLeft; 156ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 157ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCBC_ResultPoint* CBC_BoundingBox::getBottomRight() { 158ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_bottomRight; 159ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 160ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CBC_BoundingBox::init(CBC_CommonBitMatrix* image, 161ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CBC_ResultPoint* topLeft, 162ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CBC_ResultPoint* bottomLeft, 163ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CBC_ResultPoint* topRight, 164ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CBC_ResultPoint* bottomRight) { 165ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_topLeft = NULL; 166ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_bottomLeft = NULL; 167ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_topRight = NULL; 168ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_bottomRight = NULL; 169ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_image = image; 170ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (topLeft) { 171ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_topLeft = new CBC_ResultPoint(topLeft->GetX(), topLeft->GetY()); 172ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 173ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bottomLeft) { 174ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_bottomLeft = new CBC_ResultPoint(bottomLeft->GetX(), bottomLeft->GetY()); 175ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 176ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (topRight) { 177ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_topRight = new CBC_ResultPoint(topRight->GetX(), topRight->GetY()); 178ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 179ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (bottomRight) { 180ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_bottomRight = 181ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann new CBC_ResultPoint(bottomRight->GetX(), bottomRight->GetY()); 182ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 183ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann calculateMinMaxValues(); 184ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 185ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CBC_BoundingBox::calculateMinMaxValues() { 186ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_topLeft == NULL) { 187ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_topLeft = new CBC_ResultPoint(0, m_topRight->GetY()); 188ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_bottomLeft = new CBC_ResultPoint(0, m_bottomRight->GetY()); 189ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else if (m_topRight == NULL) { 190ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_topRight = new CBC_ResultPoint((FX_FLOAT)m_image->GetWidth() - 1, 191ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_FLOAT)m_topLeft->GetY()); 192ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_bottomRight = new CBC_ResultPoint((FX_FLOAT)m_image->GetWidth() - 1, 193ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_FLOAT)m_bottomLeft->GetY()); 194ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 195ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_minX = (int32_t)(m_topLeft->GetX() < m_bottomLeft->GetX() 196ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ? m_topLeft->GetX() 197ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : m_bottomLeft->GetX()); 198ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_maxX = (int32_t)(m_topRight->GetX() > m_bottomRight->GetX() 199ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ? m_topRight->GetX() 200ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : m_bottomRight->GetX()); 201ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_minY = 202ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (int32_t)(m_topLeft->GetY() < m_topRight->GetY() ? m_topLeft->GetY() 203ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : m_topRight->GetY()); 204ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_maxY = (int32_t)(m_bottomLeft->GetY() > m_bottomRight->GetY() 205ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ? m_bottomLeft->GetY() 206ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : m_bottomRight->GetY()); 207ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 208