File indexing completed on 2024-05-12 15:58:48
0001 /* 0002 * SPDX-FileCopyrightText: 2013 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "kis_wrapped_random_accessor.h" 0008 0009 #include "kis_wrapped_rect.h" 0010 0011 0012 KisWrappedRandomAccessor::KisWrappedRandomAccessor(KisTiledDataManager *ktm, 0013 qint32 offsetX, qint32 offsetY, 0014 bool writable, 0015 KisIteratorCompleteListener *completeListener, 0016 const QRect &wrapRect) 0017 : KisRandomAccessor2(ktm, offsetX, offsetY, writable, completeListener), 0018 m_wrapRect(wrapRect), 0019 m_currentPos(QPoint()) 0020 { 0021 } 0022 0023 void KisWrappedRandomAccessor::moveTo(qint32 x, qint32 y) 0024 { 0025 m_currentPos = QPoint(x, y); 0026 0027 x = KisWrappedRect::xToWrappedX(x, m_wrapRect); 0028 y = KisWrappedRect::yToWrappedY(y, m_wrapRect); 0029 0030 KisRandomAccessor2::moveTo(x, y); 0031 } 0032 0033 qint32 KisWrappedRandomAccessor::numContiguousColumns(qint32 x) const 0034 { 0035 x = KisWrappedRect::xToWrappedX(x, m_wrapRect); 0036 qint32 distanceToBorder = m_wrapRect.x() + m_wrapRect.width() - x; 0037 0038 return qMin(distanceToBorder, KisRandomAccessor2::numContiguousColumns(x)); 0039 } 0040 0041 qint32 KisWrappedRandomAccessor::numContiguousRows(qint32 y) const 0042 { 0043 y = KisWrappedRect::yToWrappedY(y, m_wrapRect); 0044 qint32 distanceToBorder = m_wrapRect.y() + m_wrapRect.height() - y; 0045 0046 return qMin(distanceToBorder, KisRandomAccessor2::numContiguousRows(y)); 0047 } 0048 0049 qint32 KisWrappedRandomAccessor::rowStride(qint32 x, qint32 y) const 0050 { 0051 x = KisWrappedRect::xToWrappedX(x, m_wrapRect); 0052 y = KisWrappedRect::yToWrappedY(y, m_wrapRect); 0053 return KisRandomAccessor2::rowStride(x, y); 0054 } 0055 0056 qint32 KisWrappedRandomAccessor::x() const 0057 { 0058 return m_currentPos.x(); 0059 } 0060 0061 qint32 KisWrappedRandomAccessor::y() const 0062 { 0063 return m_currentPos.y(); 0064 }