VTK  9.1.0
vtkWordCloud.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkWordCloud.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
15 #ifndef vtkWordCloud_h
16 #define vtkWordCloud_h
17 
18 #include "vtkImageAlgorithm.h"
19 #include "vtkImageData.h" // For ImageData
20 #include "vtkInfovisCoreModule.h" // For export macro
21 #include "vtkSmartPointer.h" // For SmartPointer
22 
23 #include <array> // For stl array
24 #include <functional> // for function
25 #include <set> // for stl multiset
26 #include <string> // For stl string
27 #include <vector> // For stl vector
28 
203 class VTKINFOVISCORE_EXPORT vtkWordCloud : public vtkImageAlgorithm
204 {
205 public:
207  void PrintSelf(ostream& os, vtkIndent indent) override;
208 
212  static vtkWordCloud* New();
213 
214  // Typedefs
215  using ColorDistributionContainer = std::array<double, 2>;
216  using OffsetDistributionContainer = std::array<int, 2>;
217  using OrientationDistributionContainer = std::array<double, 2>;
218  using OrientationsContainer = std::vector<double>;
219  using PairType = std::tuple<std::string, std::string>;
220  using ReplacementPairsContainer = std::vector<PairType>;
221  using SizesContainer = std::array<int, 2>;
222  using StopWordsContainer = std::set<std::string>;
223  using StringContainer = std::vector<std::string>;
224 
226 
229  virtual SizesContainer GetAdjustedSizes() { return AdjustedSizes; }
231 
232 #define SetStdContainerMacro(name, container) \
233  virtual void Set##name(container arg) \
234  { \
235  bool changed = false; \
236  if (arg.size() != name.size()) \
237  { \
238  changed = true; \
239  } \
240  else \
241  { \
242  auto a = arg.begin(); \
243  for (auto r : name) \
244  { \
245  if (*a != r) \
246  { \
247  changed = true; \
248  } \
249  a++; \
250  } \
251  } \
252  if (changed) \
253  { \
254  name = arg; \
255  this->Modified(); \
256  } \
257  }
258 
260 
263  virtual void SetBackgroundColorName(std::string arg)
265  {
266  if (arg != BackgroundColorName)
267  {
268  this->Modified();
269  BackgroundColorName = arg;
270  }
271  }
272  virtual std::string GetBackgroundColorName() { return BackgroundColorName; }
273 
275 
279  virtual void SetBWMask(bool arg)
281  {
282  if (BWMask != arg)
283  {
284  this->Modified();
285  BWMask = arg;
286  }
287  }
288  virtual bool GetBWMask() { return BWMask; }
289 
291 
297  virtual void SetColorSchemeName(std::string arg)
299  {
300  if (ColorSchemeName != arg)
301  {
302  this->Modified();
303  ColorSchemeName = arg;
304  }
305  }
306  virtual std::string GetColorSchemeName() { return ColorSchemeName; }
307 
309 
315  vtkSetMacro(DPI, int);
317  vtkGetMacro(DPI, int);
318 
320 
324  virtual void SetFileName(VTK_FILEPATH std::string arg)
326  {
327  if (FileName != arg)
328  {
329  this->Modified();
330  FileName = arg;
331  }
332  }
333  virtual std::string GetFileName() { return FileName; }
334 
336 
341  virtual void SetFontFileName(VTK_FILEPATH std::string arg)
343  {
344  if (FontFileName != arg)
345  {
346  this->Modified();
347  FontFileName = arg;
348  }
349  }
350  virtual std::string GetFontFileName() { return FontFileName; }
351 
353 
357  vtkSetMacro(Gap, int);
359  vtkGetMacro(Gap, int);
360 
362 
367  virtual void SetMaskColorName(std::string arg)
369  {
370  if (MaskColorName != arg)
371  {
372  this->Modified();
373  MaskColorName = arg;
374  }
375  }
376  virtual std::string GetMaskColorName() { return MaskColorName; }
377 
379 
388  virtual void SetMaskFileName(VTK_FILEPATH std::string arg)
390  {
391  if (MaskFileName != arg)
392  {
393  this->Modified();
394  MaskFileName = arg;
395  }
396  }
397  virtual std::string GetMaskFileName() { return MaskFileName; }
398 
400 
403  vtkSetMacro(MaxFontSize, int);
405  vtkGetMacro(MaxFontSize, int);
406 
408 
411  vtkSetMacro(MinFontSize, int);
413  vtkGetMacro(MinFontSize, int);
414 
416 
421  vtkSetMacro(MinFrequency, int);
423  vtkGetMacro(MinFrequency, int);
424 
426 
430  vtkSetMacro(FontMultiplier, int);
432  vtkGetMacro(FontMultiplier, int);
433 
435 
441  virtual ColorDistributionContainer GetColorDistribution() { return ColorDistribution; }
442 
444 
449  SetStdContainerMacro(OffsetDistribution, OffsetDistributionContainer);
451  virtual OffsetDistributionContainer GetOffsetDistribution() { return OffsetDistribution; }
452 
454 
459  SetStdContainerMacro(OrientationDistribution, OrientationDistributionContainer);
462  {
463  return OrientationDistribution;
464  }
465 
467 
472  SetStdContainerMacro(Orientations, OrientationsContainer);
474  void AddOrientation(double arg)
475  {
476  Orientations.push_back(arg);
477  this->Modified();
478  }
479  virtual OrientationsContainer GetOrientations() { return Orientations; }
480 
482 
487  SetStdContainerMacro(ReplacementPairs, ReplacementPairsContainer);
490  {
491  ReplacementPairs.push_back(arg);
492  this->Modified();
493  }
494 
495  virtual ReplacementPairsContainer GetReplacementPairs() { return ReplacementPairs; }
496 
498 
501  SetStdContainerMacro(Sizes, SizesContainer);
503  virtual SizesContainer GetSizes() { return Sizes; }
504 
506 
511  SetStdContainerMacro(StopWords, StopWordsContainer);
514  {
515  StopWords.insert(word);
516  this->Modified();
517  }
519  {
520  StopWords.clear();
521  this->Modified();
522  }
523  virtual StopWordsContainer GetStopWords() { return StopWords; }
524 
526 
530  virtual void SetStopListFileName(VTK_FILEPATH std::string arg)
532  {
533  if (StopListFileName != arg)
534  {
535  this->Modified();
536  StopListFileName = arg;
537  }
538  }
539  virtual std::string GetStopListFileName() { return StopListFileName; }
540 
542 
546  virtual void SetTitle(std::string arg)
548  {
549  if (Title != arg)
550  {
551  this->Modified();
552  Title = arg;
553  }
554  }
555  virtual std::string GetTitle() { return Title; }
556 
558 
563  virtual void SetWordColorName(std::string arg)
565  {
566  if (WordColorName != arg)
567  {
568  this->Modified();
569  WordColorName = arg;
570  }
571  }
572  virtual std::string GetWordColorName() { return WordColorName; }
574 
577  virtual std::vector<std::string>& GetKeptWords() { return KeptWords; }
579 
581 
585  virtual std::vector<std::string>& GetSkippedWords() { return SkippedWords; }
587 
589 
592  virtual std::vector<std::string>& GetStoppedWords() { return StoppedWords; }
594 
595 protected:
597  ~vtkWordCloud() override = default;
598 
600 
602 
604  int WholeExtent[6];
605 
608  bool BWMask;
611  int DPI;
615  int Gap;
630 
631  std::vector<std::string> KeptWords;
632  std::vector<std::string> SkippedWords;
633  std::vector<std::string> StoppedWords;
634 
635 private:
636  vtkWordCloud(const vtkWordCloud&) = delete;
637  void operator=(const vtkWordCloud&) = delete;
638 
639  // Declaring the type of Predicate that accepts 2 pairs and returns a bool
640  typedef std::function<bool(std::pair<std::string, int>, std::pair<std::string, int>)> Comparator;
641 
642  std::multiset<std::pair<std::string, int>, Comparator> FindWordsSortedByFrequency(
644  struct ExtentOffset
645  {
646  ExtentOffset(int _x = 0.0, int _y = 0.0)
647  : x(_x)
648  , y(_y)
649  {
650  }
651  int x, y;
652  };
653 };
654 #endif
655 
656 // LocalWords: vtkNamedColors SetMaskColorName
vtkWordCloud::Gap
int Gap
Definition: vtkWordCloud.h:615
vtkImageData.h
vtkX3D::function
@ function
Definition: vtkX3D.h:255
vtkWordCloud::ColorSchemeName
std::string ColorSchemeName
Definition: vtkWordCloud.h:610
vtkWordCloud::New
static vtkWordCloud * New()
Construct object with vertex cell generation turned off.
vtkWordCloud::Title
std::string Title
Definition: vtkWordCloud.h:628
vtkWordCloud::RequestData
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called in response to a REQUEST_DATA request from the executive.
vtkWordCloud::OffsetDistribution
OffsetDistributionContainer OffsetDistribution
Definition: vtkWordCloud.h:621
vtkWordCloud::ClearStopWords
void ClearStopWords()
Definition: vtkWordCloud.h:518
vtkWordCloud::FontFileName
std::string FontFileName
Definition: vtkWordCloud.h:613
vtkWordCloud::MaskFileName
std::string MaskFileName
Definition: vtkWordCloud.h:617
VTK_FILEPATH
#define VTK_FILEPATH
Definition: vtkWrappingHints.h:46
vtkWordCloud::OffsetDistributionContainer
std::array< int, 2 > OffsetDistributionContainer
Definition: vtkWordCloud.h:216
vtkWordCloud::Sizes
SizesContainer Sizes
Definition: vtkWordCloud.h:625
vtkWordCloud::PairType
std::tuple< std::string, std::string > PairType
Definition: vtkWordCloud.h:219
vtkWordCloud::ColorDistribution
ColorDistributionContainer ColorDistribution
Definition: vtkWordCloud.h:609
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:145
vtkWordCloud::ColorDistributionContainer
std::array< double, 2 > ColorDistributionContainer
Definition: vtkWordCloud.h:215
vtkWordCloud::GetStopWords
virtual StopWordsContainer GetStopWords()
Definition: vtkWordCloud.h:523
vtkObject::Modified
virtual void Modified()
Update the modification time for this object.
vtkWordCloud::OrientationsContainer
std::vector< double > OrientationsContainer
Definition: vtkWordCloud.h:218
vtkWordCloud::BWMask
bool BWMask
Definition: vtkWordCloud.h:608
vtkImageAlgorithm.h
vtkSmartPointer< vtkImageData >
vtkWordCloud::StringContainer
std::vector< std::string > StringContainer
Definition: vtkWordCloud.h:223
vtkWordCloud::MinFrequency
int MinFrequency
Definition: vtkWordCloud.h:620
vtkWordCloud::GetBWMask
virtual bool GetBWMask()
Definition: vtkWordCloud.h:288
vtkImageAlgorithm
Generic algorithm superclass for image algs.
Definition: vtkImageAlgorithm.h:57
vtkWordCloud::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkWordCloud::Orientations
OrientationsContainer Orientations
Definition: vtkWordCloud.h:623
vtkWordCloud::MaskColorName
std::string MaskColorName
Definition: vtkWordCloud.h:616
vtkWordCloud::GetTitle
virtual std::string GetTitle()
Definition: vtkWordCloud.h:555
vtkWordCloud::SkippedWords
std::vector< std::string > SkippedWords
Definition: vtkWordCloud.h:632
vtkWordCloud::GetSizes
virtual SizesContainer GetSizes()
Definition: vtkWordCloud.h:503
vtkWordCloud::GetWordColorName
virtual std::string GetWordColorName()
Definition: vtkWordCloud.h:572
vtkWordCloud::ReplacementPairsContainer
std::vector< PairType > ReplacementPairsContainer
Definition: vtkWordCloud.h:220
vtkWordCloud
generate a word cloud visualization of a text document
Definition: vtkWordCloud.h:204
vtkWordCloud::StopListFileName
std::string StopListFileName
Definition: vtkWordCloud.h:627
vtkWordCloud::AdjustedSizes
SizesContainer AdjustedSizes
Definition: vtkWordCloud.h:606
vtkWordCloud::GetOrientationDistribution
virtual OrientationDistributionContainer GetOrientationDistribution()
Definition: vtkWordCloud.h:461
vtkWordCloud::GetStopListFileName
virtual std::string GetStopListFileName()
Definition: vtkWordCloud.h:539
vtkWordCloud::GetOffsetDistribution
virtual OffsetDistributionContainer GetOffsetDistribution()
Definition: vtkWordCloud.h:451
vtkWordCloud::ImageData
vtkSmartPointer< vtkImageData > ImageData
Definition: vtkWordCloud.h:603
vtkWordCloud::GetOrientations
virtual OrientationsContainer GetOrientations()
Definition: vtkWordCloud.h:479
vtkWordCloud::StopWordsContainer
std::set< std::string > StopWordsContainer
Definition: vtkWordCloud.h:222
vtkWordCloud::MinFontSize
int MinFontSize
Definition: vtkWordCloud.h:619
vtkWordCloud::AddReplacementPair
void AddReplacementPair(PairType arg)
Definition: vtkWordCloud.h:489
vtkWordCloud::OrientationDistribution
OrientationDistributionContainer OrientationDistribution
Definition: vtkWordCloud.h:622
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:113
vtkWordCloud::GetFileName
virtual std::string GetFileName()
Definition: vtkWordCloud.h:333
vtkWordCloud::GetMaskFileName
virtual std::string GetMaskFileName()
Definition: vtkWordCloud.h:397
vtkSmartPointer.h
vtkWordCloud::GetBackgroundColorName
virtual std::string GetBackgroundColorName()
Definition: vtkWordCloud.h:272
vtkWordCloud::KeptWords
std::vector< std::string > KeptWords
Definition: vtkWordCloud.h:631
vtkWordCloud::FontMultiplier
int FontMultiplier
Definition: vtkWordCloud.h:614
vtkWordCloud::MaxFontSize
int MaxFontSize
Definition: vtkWordCloud.h:618
vtkWordCloud::RequestInformation
int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
Subclasses can reimplement this method to collect information from their inputs and set information f...
vtkWordCloud::AddOrientation
void AddOrientation(double arg)
Definition: vtkWordCloud.h:474
vtkWordCloud::StopWords
StopWordsContainer StopWords
Definition: vtkWordCloud.h:626
vtkWordCloud::GetColorSchemeName
virtual std::string GetColorSchemeName()
Definition: vtkWordCloud.h:306
SetStdContainerMacro
#define SetStdContainerMacro(name, container)
Definition: vtkWordCloud.h:232
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:183
vtkX3D::string
@ string
Definition: vtkX3D.h:496
vtkWordCloud::StoppedWords
std::vector< std::string > StoppedWords
Definition: vtkWordCloud.h:633
vtkWordCloud::GetColorDistribution
virtual ColorDistributionContainer GetColorDistribution()
Definition: vtkWordCloud.h:441
vtkWordCloud::BackgroundColorName
std::string BackgroundColorName
Definition: vtkWordCloud.h:607
vtkWordCloud::FileName
std::string FileName
Definition: vtkWordCloud.h:612
vtkWordCloud::GetMaskColorName
virtual std::string GetMaskColorName()
Definition: vtkWordCloud.h:376
vtkWordCloud::~vtkWordCloud
~vtkWordCloud() override=default
vtkWordCloud::AddStopWord
void AddStopWord(std::string word)
Definition: vtkWordCloud.h:513
vtkWordCloud::GetFontFileName
virtual std::string GetFontFileName()
Definition: vtkWordCloud.h:350
vtkWordCloud::vtkWordCloud
vtkWordCloud()
vtkWordCloud::GetReplacementPairs
virtual ReplacementPairsContainer GetReplacementPairs()
Definition: vtkWordCloud.h:495
vtkWordCloud::WordColorName
std::string WordColorName
Definition: vtkWordCloud.h:629
vtkWordCloud::ReplacementPairs
ReplacementPairsContainer ReplacementPairs
Definition: vtkWordCloud.h:624
vtkWordCloud::OrientationDistributionContainer
std::array< double, 2 > OrientationDistributionContainer
Definition: vtkWordCloud.h:217
vtkWordCloud::SizesContainer
std::array< int, 2 > SizesContainer
Definition: vtkWordCloud.h:221
vtkWordCloud::DPI
int DPI
Definition: vtkWordCloud.h:611