1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_svx.hxx" 26 27 #include "cellrange.hxx" 28 29 // ----------------------------------------------------------------------------- 30 31 using ::rtl::OUString; 32 using namespace ::com::sun::star::uno; 33 using namespace ::com::sun::star::lang; 34 using namespace ::com::sun::star::container; 35 using namespace ::com::sun::star::table; 36 37 // ----------------------------------------------------------------------------- 38 39 namespace sdr { namespace table { 40 41 // ----------------------------------------------------------------------------- 42 // CellRange 43 // ----------------------------------------------------------------------------- 44 45 CellRange::CellRange( const TableModelRef & xTable, sal_Int32 nLeft, sal_Int32 nTop, sal_Int32 nRight, sal_Int32 nBottom ) 46 : mxTable( xTable ) 47 , mnLeft(nLeft) 48 , mnTop(nTop) 49 , mnRight(nRight) 50 , mnBottom(nBottom) 51 { 52 } 53 54 // ----------------------------------------------------------------------------- 55 56 CellRange::~CellRange() 57 { 58 } 59 60 // ----------------------------------------------------------------------------- 61 // ICellRange 62 // ----------------------------------------------------------------------------- 63 64 sal_Int32 CellRange::getLeft() 65 { 66 return mnLeft; 67 } 68 69 sal_Int32 CellRange::getTop() 70 { 71 return mnTop; 72 } 73 74 sal_Int32 CellRange::getRight() 75 { 76 return mnRight; 77 } 78 79 sal_Int32 CellRange::getBottom() 80 { 81 return mnBottom; 82 } 83 84 Reference< XTable > CellRange::getTable() 85 { 86 return mxTable.get(); 87 } 88 89 // ----------------------------------------------------------------------------- 90 // XCellRange 91 // ----------------------------------------------------------------------------- 92 93 Reference< XCell > SAL_CALL CellRange::getCellByPosition( sal_Int32 nColumn, sal_Int32 nRow ) throw (IndexOutOfBoundsException, RuntimeException) 94 { 95 return mxTable->getCellByPosition( mnLeft + nColumn, mnTop + nRow ); 96 } 97 98 // ----------------------------------------------------------------------------- 99 100 Reference< XCellRange > SAL_CALL CellRange::getCellRangeByPosition( sal_Int32 nLeft, sal_Int32 nTop, sal_Int32 nRight, sal_Int32 nBottom ) throw (IndexOutOfBoundsException, RuntimeException) 101 { 102 if( (nLeft >= 0 ) && (nTop >= 0) && (nRight >= nLeft) && (nBottom >= nTop) ) 103 { 104 nLeft += mnLeft; 105 nTop += mnTop; 106 nRight += mnLeft; 107 nBottom += mnTop; 108 109 const sal_Int32 nMaxColumns = (mnRight == -1) ? mxTable->getColumnCount() : mnLeft; 110 const sal_Int32 nMaxRows = (mnBottom == -1) ? mxTable->getRowCount() : mnBottom; 111 if( (nLeft < nMaxColumns) && (nRight < nMaxColumns) && (nTop < nMaxRows) && (nBottom < nMaxRows) ) 112 { 113 return mxTable->getCellRangeByPosition( nLeft, nTop, nRight, nBottom ); 114 } 115 } 116 throw IndexOutOfBoundsException(); 117 } 118 119 // ----------------------------------------------------------------------------- 120 121 Reference< XCellRange > SAL_CALL CellRange::getCellRangeByName( const OUString& /*aRange*/ ) throw (RuntimeException) 122 { 123 return Reference< XCellRange >(); 124 } 125 126 // ----------------------------------------------------------------------------- 127 128 } } 129