blob: f8c30b77df5f7e0f567535afd41763571147a878 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
/* -*- 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/.
*
*/
#pragma once
#include <swdllapi.h>
#include <doc.hxx>
#include <basegfx/range/b2drange.hxx>
namespace sw::search
{
enum class NodeType
{
Undefined = 0,
WriterNode = 1,
CommonNode = 2 // node in a SdrObject
};
struct SearchIndexData
{
NodeType meType = NodeType::Undefined;
SwNodeOffset mnNodeIndex{ 0 };
OUString maObjectName;
SearchIndexData() {}
SearchIndexData(NodeType eType, SwNodeOffset nNodeIndex,
OUString const& aObjectName = OUString())
: meType(eType)
, mnNodeIndex(nNodeIndex)
, maObjectName(aObjectName)
{
}
};
struct LocationResult
{
bool mbFound = false;
std::vector<basegfx::B2DRange> maRectangles;
};
class SW_DLLPUBLIC SearchResultLocator
{
SwDoc* mpDocument;
void findOne(LocationResult& rResult, SearchIndexData const& rSearchIndexData);
static bool tryParseJSON(const char* pPayload,
std::vector<sw::search::SearchIndexData>& rDataVector);
static bool tryParseXML(const char* pPayload,
std::vector<sw::search::SearchIndexData>& rDataVector);
public:
SearchResultLocator(SwDoc* pDoc)
: mpDocument(pDoc)
{
}
LocationResult find(std::vector<SearchIndexData> const& rSearchIndexDataVector);
LocationResult findForPayload(const char* pPayload);
};
} // end sw namespace
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|