/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ #ifndef INCLUDED_SC_INC_MARKARR_HXX #define INCLUDED_SC_INC_MARKARR_HXX #include "address.hxx" #include #define SC_MARKARRAY_DELTA 4 struct ScMarkEntry { SCROW nRow; bool bMarked; }; class ScMarkArray { SCSIZE nCount; SCSIZE nLimit; std::unique_ptr pData; friend class ScMarkArrayIter; friend class ScDocument; // for FillInfo public: ScMarkArray(); ScMarkArray( ScMarkArray&& rArray ); ~ScMarkArray(); void Reset( bool bMarked = false, SCSIZE nNeeded = 1 ); bool GetMark( SCROW nRow ) const; void SetMarkArea( SCROW nStartRow, SCROW nEndRow, bool bMarked ); bool IsAllMarked( SCROW nStartRow, SCROW nEndRow ) const; bool HasOneMark( SCROW& rStartRow, SCROW& rEndRow ) const; bool HasEqualRowsMarked( const ScMarkArray& rOther ) const; bool HasMarks() const { return ( nCount > 1 || ( nCount == 1 && pData[0].bMarked ) ); } void CopyMarksTo( ScMarkArray& rDestMarkArray ) const; bool Search( SCROW nRow, SCSIZE& nIndex ) const; /// Including current row, may return -1 if bUp and not found SCROW GetNextMarked( SCROW nRow, bool bUp ) const; SCROW GetMarkEnd( SCROW nRow, bool bUp ) const; void Shift( SCROW nStartRow, long nOffset ); void Intersect( const ScMarkArray& rOther ); }; class ScMarkArrayIter // iterate over selected range { const ScMarkArray* pArray; SCSIZE nPos; public: ScMarkArrayIter( const ScMarkArray* pNewArray ); ~ScMarkArrayIter(); bool Next( SCROW& rTop, SCROW& rBottom ); void reset( const ScMarkArray* pNewArray ); }; #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /co-24.04.11'>distro/collabora/co-24.04.11 LibreOffice 核心代码仓库文档基金会
summaryrefslogtreecommitdiff
AgeCommit message (Expand)Author
2022-08-29ref-count SdrObjectNoel Grandin
2021-03-23tdf#124176 Use pragma once in s*Vincent LE GARREC
2018-10-06return unique_ptr from CreateDefaultObject in sc/Noel Grandin
2018-05-24ScTabViewShell is never optionalCaolán McNamara
2017-08-25loplugin:constparam in sc part6Noel Grandin
2017-03-31tdf#82580 tools: rename Rectangle to tools::RectangleMiklos Vajna
2016-09-13loplugin:override: No more need for the "MSVC dtor override" workaroundStephan Bergmann
2016-07-15new loplugin unnecessary overrideNoel Grandin
2015-10-12Replace "SAL_OVERRIDE" with "override" in LIBO_INTERNAL_ONLY codeStephan Bergmann
2014-09-23fdo#82577: Handle WindowNoel Grandin
2014-04-19fixincludeguards.sh: scThomas Arnhold
2014-04-06whitespace cleanup in scMarkus Mohrhard
2014-03-27Second batch of adding SAL_OVERRIDE to overriding function declarationsStephan Bergmann
2014-02-18sal_Bool->boolNoel Grandin
2014-02-18sal_Bool->boolNoel Grandin
2014-02-18sal_Bool->boolNoel Grandin
2014-02-18sal_Bool->boolNoel Grandin
2012-12-04re-base on ALv2 code. Includes:Michael Meeks
2012-08-17Translation of comments from german in sc/source/ui/inc/Albert Thuswaldner