Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*
3 : : * This file is part of the LibreOffice project.
4 : : *
5 : : * This Source Code Form is subject to the terms of the Mozilla Public
6 : : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : : *
9 : : * This file incorporates work covered by the following license notice:
10 : : *
11 : : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : : * contributor license agreements. See the NOTICE file distributed
13 : : * with this work for additional information regarding copyright
14 : : * ownership. The ASF licenses this file to you under the Apache
15 : : * License, Version 2.0 (the "License"); you may not use this file
16 : : * except in compliance with the License. You may obtain a copy of
17 : : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : : */
19 : :
20 : :
21 : : #include "cellrange.hxx"
22 : :
23 : : // -----------------------------------------------------------------------------
24 : :
25 : : using ::rtl::OUString;
26 : : using namespace ::com::sun::star::uno;
27 : : using namespace ::com::sun::star::lang;
28 : : using namespace ::com::sun::star::container;
29 : : using namespace ::com::sun::star::table;
30 : :
31 : : // -----------------------------------------------------------------------------
32 : :
33 : : namespace sdr { namespace table {
34 : :
35 : : // -----------------------------------------------------------------------------
36 : : // CellRange
37 : : // -----------------------------------------------------------------------------
38 : :
39 : 0 : CellRange::CellRange( const TableModelRef & xTable, sal_Int32 nLeft, sal_Int32 nTop, sal_Int32 nRight, sal_Int32 nBottom )
40 : : : mxTable( xTable )
41 : : , mnLeft(nLeft)
42 : : , mnTop(nTop)
43 : : , mnRight(nRight)
44 : 0 : , mnBottom(nBottom)
45 : : {
46 : 0 : }
47 : :
48 : : // -----------------------------------------------------------------------------
49 : :
50 : 0 : CellRange::~CellRange()
51 : : {
52 [ # # ]: 0 : }
53 : :
54 : : // -----------------------------------------------------------------------------
55 : : // ICellRange
56 : : // -----------------------------------------------------------------------------
57 : :
58 : 0 : sal_Int32 CellRange::getLeft()
59 : : {
60 : 0 : return mnLeft;
61 : : }
62 : :
63 : 0 : sal_Int32 CellRange::getTop()
64 : : {
65 : 0 : return mnTop;
66 : : }
67 : :
68 : 0 : sal_Int32 CellRange::getRight()
69 : : {
70 : 0 : return mnRight;
71 : : }
72 : :
73 : 0 : sal_Int32 CellRange::getBottom()
74 : : {
75 : 0 : return mnBottom;
76 : : }
77 : :
78 : 0 : Reference< XTable > CellRange::getTable()
79 : : {
80 [ # # ]: 0 : return mxTable.get();
81 : : }
82 : :
83 : : // -----------------------------------------------------------------------------
84 : : // XCellRange
85 : : // -----------------------------------------------------------------------------
86 : :
87 : 0 : Reference< XCell > SAL_CALL CellRange::getCellByPosition( sal_Int32 nColumn, sal_Int32 nRow ) throw (IndexOutOfBoundsException, RuntimeException)
88 : : {
89 : 0 : return mxTable->getCellByPosition( mnLeft + nColumn, mnTop + nRow );
90 : : }
91 : :
92 : : // -----------------------------------------------------------------------------
93 : :
94 : 0 : Reference< XCellRange > SAL_CALL CellRange::getCellRangeByPosition( sal_Int32 nLeft, sal_Int32 nTop, sal_Int32 nRight, sal_Int32 nBottom ) throw (IndexOutOfBoundsException, RuntimeException)
95 : : {
96 [ # # ][ # # ]: 0 : if( (nLeft >= 0 ) && (nTop >= 0) && (nRight >= nLeft) && (nBottom >= nTop) )
[ # # ][ # # ]
97 : : {
98 : 0 : nLeft += mnLeft;
99 : 0 : nTop += mnTop;
100 : 0 : nRight += mnLeft;
101 : 0 : nBottom += mnTop;
102 : :
103 [ # # ]: 0 : const sal_Int32 nMaxColumns = (mnRight == -1) ? mxTable->getColumnCount() : mnLeft;
104 [ # # ]: 0 : const sal_Int32 nMaxRows = (mnBottom == -1) ? mxTable->getRowCount() : mnBottom;
105 [ # # ][ # # ]: 0 : if( (nLeft < nMaxColumns) && (nRight < nMaxColumns) && (nTop < nMaxRows) && (nBottom < nMaxRows) )
[ # # ][ # # ]
106 : : {
107 : 0 : return mxTable->getCellRangeByPosition( nLeft, nTop, nRight, nBottom );
108 : : }
109 : : }
110 [ # # ]: 0 : throw IndexOutOfBoundsException();
111 : : }
112 : :
113 : : // -----------------------------------------------------------------------------
114 : :
115 : 0 : Reference< XCellRange > SAL_CALL CellRange::getCellRangeByName( const OUString& /*aRange*/ ) throw (RuntimeException)
116 : : {
117 : 0 : return Reference< XCellRange >();
118 : : }
119 : :
120 : : // -----------------------------------------------------------------------------
121 : :
122 : : } }
123 : :
124 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|