ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
penstylebox.cpp
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #include "penstylebox.h"
9 
10 #include <algorithm>
11 
12 namespace Widgets {
13 
14 const Qt::PenStyle PenStyleBox::patterns[] = {Qt::SolidLine, Qt::DashLine,
15  Qt::DotLine, Qt::DashDotLine,
16  Qt::DashDotDotLine};
17 
22 PenStyleBox::PenStyleBox(QWidget* parent) : QComboBox(parent) {
23  setEditable(false);
24  addItem("_____");
25  addItem("_ _ _");
26  addItem(".....");
27  addItem("_._._");
28  addItem("_.._..");
29 }
30 
35 void PenStyleBox::setStyle(const Qt::PenStyle& style) {
36  const Qt::PenStyle* ite =
37  std::find(patterns, patterns + sizeof(patterns), style);
38  if (ite == patterns + sizeof(patterns))
39  this->setCurrentIndex(0);
40  else
41  this->setCurrentIndex(ite - patterns);
42 }
43 
49 Qt::PenStyle PenStyleBox::penStyle(int index) {
50  if (index < (int)sizeof(patterns))
51  return patterns[index];
52  else
53  return Qt::SolidLine;
54 }
55 
60 Qt::PenStyle PenStyleBox::style() const {
61  size_t i = this->currentIndex();
62  if (i < sizeof(patterns))
63  return patterns[i];
64  else
65  return Qt::SolidLine;
66 }
67 
73 int PenStyleBox::styleIndex(const Qt::PenStyle& style) {
74  const Qt::PenStyle* ite =
75  std::find(patterns, patterns + sizeof(patterns), style);
76  if (ite == patterns + sizeof(patterns))
77  return 0;
78  else
79  return (ite - patterns);
80 }
81 } // namespace Widgets
PenStyleBox(QWidget *parent=0)
construct PenStyleBox.
Definition: penstylebox.cpp:22
void setStyle(const Qt::PenStyle &style)
set style.
Definition: penstylebox.cpp:35
Qt::PenStyle style() const
obtain selected style.
Definition: penstylebox.cpp:60
static Qt::PenStyle penStyle(int index)
get style.
Definition: penstylebox.cpp:49
static int styleIndex(const Qt::PenStyle &style)
get the index of style.
Definition: penstylebox.cpp:73