VTK  9.3.1
vtkWordCloud.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
3 #ifndef vtkWordCloud_h
4 #define vtkWordCloud_h
5 
6 #include "vtkImageAlgorithm.h"
7 #include "vtkImageData.h" // For ImageData
8 #include "vtkInfovisCoreModule.h" // For export macro
9 #include "vtkSmartPointer.h" // For SmartPointer
10 
11 #include <array> // For stl array
12 #include <functional> // for function
13 #include <set> // for stl multiset
14 #include <string> // For stl string
15 #include <vector> // For stl vector
16 
172 VTK_ABI_NAMESPACE_BEGIN
173 class VTKINFOVISCORE_EXPORT vtkWordCloud : public vtkImageAlgorithm
174 {
175 public:
177  void PrintSelf(ostream& os, vtkIndent indent) override;
178 
182  static vtkWordCloud* New();
183 
184  // Typedefs
185  using ColorDistributionContainer = std::array<double, 2>;
186  using OffsetDistributionContainer = std::array<int, 2>;
187  using OrientationDistributionContainer = std::array<double, 2>;
188  using OrientationsContainer = std::vector<double>;
189  using PairType = std::tuple<std::string, std::string>;
190  using ReplacementPairsContainer = std::vector<PairType>;
191  using SizesContainer = std::array<int, 2>;
192  using StopWordsContainer = std::set<std::string>;
193  using StringContainer = std::vector<std::string>;
194 
196 
199  virtual SizesContainer GetAdjustedSizes() { return AdjustedSizes; }
201 
202 #define SetStdContainerMacro(name, container) \
203  virtual void Set##name(container arg) \
204  { \
205  bool changed = false; \
206  if (arg.size() != name.size()) \
207  { \
208  changed = true; \
209  } \
210  else \
211  { \
212  auto a = arg.begin(); \
213  for (auto r : name) \
214  { \
215  if (*a != r) \
216  { \
217  changed = true; \
218  } \
219  a++; \
220  } \
221  } \
222  if (changed) \
223  { \
224  name = arg; \
225  this->Modified(); \
226  } \
227  }
228 
230 
233  virtual void SetBackgroundColorName(std::string arg)
235  {
236  if (arg != BackgroundColorName)
237  {
238  this->Modified();
239  BackgroundColorName = arg;
240  }
241  }
242  virtual std::string GetBackgroundColorName() { return BackgroundColorName; }
243 
245 
249  virtual void SetBWMask(bool arg)
251  {
252  if (BWMask != arg)
253  {
254  this->Modified();
255  BWMask = arg;
256  }
257  }
258  virtual bool GetBWMask() { return BWMask; }
259 
261 
267  virtual void SetColorSchemeName(std::string arg)
269  {
270  if (ColorSchemeName != arg)
271  {
272  this->Modified();
273  ColorSchemeName = arg;
274  }
275  }
276  virtual std::string GetColorSchemeName() { return ColorSchemeName; }
277 
279 
285  vtkSetMacro(DPI, int);
287  vtkGetMacro(DPI, int);
288 
290 
294  virtual void SetFileName(VTK_FILEPATH std::string arg)
296  {
297  if (FileName != arg)
298  {
299  this->Modified();
300  FileName = arg;
301  }
302  }
303  virtual std::string GetFileName() VTK_FUTURE_CONST { return FileName; }
304 
306 
311  virtual void SetFontFileName(VTK_FILEPATH VTK_FUTURE_CONST std::string arg)
313  {
314  if (FontFileName != arg)
315  {
316  this->Modified();
317  FontFileName = arg;
318  }
319  }
320  virtual std::string GetFontFileName() VTK_FUTURE_CONST { return FontFileName; }
321 
323 
327  vtkSetMacro(Gap, int);
329  vtkGetMacro(Gap, int);
330 
332 
337  virtual void SetMaskColorName(std::string arg)
339  {
340  if (MaskColorName != arg)
341  {
342  this->Modified();
343  MaskColorName = arg;
344  }
345  }
346  virtual std::string GetMaskColorName() { return MaskColorName; }
347 
349 
358  virtual void SetMaskFileName(VTK_FILEPATH VTK_FUTURE_CONST std::string arg)
360  {
361  if (MaskFileName != arg)
362  {
363  this->Modified();
364  MaskFileName = arg;
365  }
366  }
367  virtual std::string GetMaskFileName() VTK_FUTURE_CONST { return MaskFileName; }
368 
370 
373  vtkSetMacro(MaxFontSize, int);
375  vtkGetMacro(MaxFontSize, int);
376 
378 
381  vtkSetMacro(MinFontSize, int);
383  vtkGetMacro(MinFontSize, int);
384 
386 
391  vtkSetMacro(MinFrequency, int);
393  vtkGetMacro(MinFrequency, int);
394 
396 
400  vtkSetMacro(FontMultiplier, int);
402  vtkGetMacro(FontMultiplier, int);
403 
405 
409  SetStdContainerMacro(ColorDistribution, ColorDistributionContainer);
411  virtual ColorDistributionContainer GetColorDistribution() { return ColorDistribution; }
412 
414 
419  SetStdContainerMacro(OffsetDistribution, OffsetDistributionContainer);
421  virtual OffsetDistributionContainer GetOffsetDistribution() { return OffsetDistribution; }
422 
424 
429  SetStdContainerMacro(OrientationDistribution, OrientationDistributionContainer);
432  {
433  return OrientationDistribution;
434  }
435 
437 
442  SetStdContainerMacro(Orientations, OrientationsContainer);
444  void AddOrientation(double arg)
445  {
446  Orientations.push_back(arg);
447  this->Modified();
448  }
449  virtual OrientationsContainer GetOrientations() { return Orientations; }
450 
452 
457  SetStdContainerMacro(ReplacementPairs, ReplacementPairsContainer);
460  {
461  ReplacementPairs.push_back(arg);
462  this->Modified();
463  }
464 
465  virtual ReplacementPairsContainer GetReplacementPairs() { return ReplacementPairs; }
466 
468 
471  SetStdContainerMacro(Sizes, SizesContainer);
473  virtual SizesContainer GetSizes() { return Sizes; }
474 
476 
481  SetStdContainerMacro(StopWords, StopWordsContainer);
484  {
485  StopWords.insert(word);
486  this->Modified();
487  }
489  {
490  StopWords.clear();
491  this->Modified();
492  }
493  virtual StopWordsContainer GetStopWords() { return StopWords; }
494 
496 
500  virtual void SetStopListFileName(VTK_FILEPATH VTK_FUTURE_CONST std::string arg)
502  {
503  if (StopListFileName != arg)
504  {
505  this->Modified();
506  StopListFileName = arg;
507  }
508  }
509  virtual std::string GetStopListFileName() VTK_FUTURE_CONST { return StopListFileName; }
510 
512 
516  virtual void SetTitle(std::string arg)
518  {
519  if (Title != arg)
520  {
521  this->Modified();
522  Title = arg;
523  }
524  }
525  virtual std::string GetTitle() { return Title; }
526 
528 
533  virtual void SetWordColorName(std::string arg)
535  {
536  if (WordColorName != arg)
537  {
538  this->Modified();
539  WordColorName = arg;
540  }
541  }
542  virtual std::string GetWordColorName() { return WordColorName; }
544 
547  virtual std::vector<std::string>& GetKeptWords() { return KeptWords; }
549 
551 
555  virtual std::vector<std::string>& GetSkippedWords() { return SkippedWords; }
557 
559 
562  virtual std::vector<std::string>& GetStoppedWords() { return StoppedWords; }
564 
565 protected:
566  vtkWordCloud();
567  ~vtkWordCloud() override = default;
568 
570 
572 
574  int WholeExtent[6];
575 
578  bool BWMask;
581  int DPI;
585  int Gap;
600 
601  std::vector<std::string> KeptWords;
602  std::vector<std::string> SkippedWords;
603  std::vector<std::string> StoppedWords;
604 
605 private:
606  vtkWordCloud(const vtkWordCloud&) = delete;
607  void operator=(const vtkWordCloud&) = delete;
608 
609  // Declaring the type of Predicate that accepts 2 pairs and returns a bool
610  typedef std::function<bool(std::pair<std::string, int>, std::pair<std::string, int>)> Comparator;
611 
612  std::multiset<std::pair<std::string, int>, Comparator> FindWordsSortedByFrequency(
614  struct ExtentOffset
615  {
616  ExtentOffset(int _x = 0.0, int _y = 0.0)
617  : x(_x)
618  , y(_y)
619  {
620  }
621  int x, y;
622  };
623 };
624 VTK_ABI_NAMESPACE_END
625 #endif
626 
627 // LocalWords: vtkNamedColors SetMaskColorName
std::string FileName
Definition: vtkWordCloud.h:582
virtual StopWordsContainer GetStopWords()
Definition: vtkWordCloud.h:493
virtual std::string GetMaskColorName()
Definition: vtkWordCloud.h:346
std::vector< double > OrientationsContainer
Definition: vtkWordCloud.h:188
std::string MaskColorName
Definition: vtkWordCloud.h:586
std::vector< std::string > StringContainer
Definition: vtkWordCloud.h:193
ReplacementPairsContainer ReplacementPairs
Definition: vtkWordCloud.h:594
Store vtkAlgorithm input/output information.
std::array< int, 2 > SizesContainer
Definition: vtkWordCloud.h:191
OrientationsContainer Orientations
Definition: vtkWordCloud.h:593
std::vector< PairType > ReplacementPairsContainer
Definition: vtkWordCloud.h:190
virtual std::string GetTitle()
Definition: vtkWordCloud.h:525
std::string Title
Definition: vtkWordCloud.h:598
OffsetDistributionContainer OffsetDistribution
Definition: vtkWordCloud.h:591
std::string FontFileName
Definition: vtkWordCloud.h:583
vtkSmartPointer< vtkImageData > ImageData
Definition: vtkWordCloud.h:573
std::string StopListFileName
Definition: vtkWordCloud.h:597
SizesContainer AdjustedSizes
Definition: vtkWordCloud.h:576
void ClearStopWords()
Definition: vtkWordCloud.h:488
virtual OrientationDistributionContainer GetOrientationDistribution()
Definition: vtkWordCloud.h:431
virtual std::string GetFontFileName() VTK_FUTURE_CONST
Definition: vtkWordCloud.h:320
SizesContainer Sizes
Definition: vtkWordCloud.h:595
std::tuple< std::string, std::string > PairType
Definition: vtkWordCloud.h:189
virtual std::string GetMaskFileName() VTK_FUTURE_CONST
Definition: vtkWordCloud.h:367
generate a word cloud visualization of a text document
Definition: vtkWordCloud.h:173
OrientationDistributionContainer OrientationDistribution
Definition: vtkWordCloud.h:592
void AddReplacementPair(PairType arg)
Definition: vtkWordCloud.h:459
ColorDistributionContainer ColorDistribution
Definition: vtkWordCloud.h:579
virtual std::string GetBackgroundColorName()
Definition: vtkWordCloud.h:242
std::array< double, 2 > ColorDistributionContainer
Definition: vtkWordCloud.h:185
std::vector< std::string > KeptWords
Definition: vtkWordCloud.h:601
#define SetStdContainerMacro(name, container)
Definition: vtkWordCloud.h:202
virtual bool GetBWMask()
Definition: vtkWordCloud.h:258
a simple class to control print indentation
Definition: vtkIndent.h:28
virtual int RequestInformation(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
Subclasses can reimplement this method to collect information from their inputs and set information f...
virtual std::string GetColorSchemeName()
Definition: vtkWordCloud.h:276
std::vector< std::string > StoppedWords
Definition: vtkWordCloud.h:603
std::vector< std::string > SkippedWords
Definition: vtkWordCloud.h:602
virtual SizesContainer GetSizes()
Definition: vtkWordCloud.h:473
virtual void Modified()
Update the modification time for this object.
virtual std::string GetWordColorName()
Definition: vtkWordCloud.h:542
virtual OffsetDistributionContainer GetOffsetDistribution()
Definition: vtkWordCloud.h:421
virtual OrientationsContainer GetOrientations()
Definition: vtkWordCloud.h:449
virtual ReplacementPairsContainer GetReplacementPairs()
Definition: vtkWordCloud.h:465
std::set< std::string > StopWordsContainer
Definition: vtkWordCloud.h:192
virtual std::string GetFileName() VTK_FUTURE_CONST
Definition: vtkWordCloud.h:303
#define VTK_FILEPATH
void AddStopWord(std::string word)
Definition: vtkWordCloud.h:483
virtual std::string GetStopListFileName() VTK_FUTURE_CONST
Definition: vtkWordCloud.h:509
std::string WordColorName
Definition: vtkWordCloud.h:599
std::array< double, 2 > OrientationDistributionContainer
Definition: vtkWordCloud.h:187
Generic algorithm superclass for image algs.
Store zero or more vtkInformation instances.
static vtkAlgorithm * New()
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void AddOrientation(double arg)
Definition: vtkWordCloud.h:444
StopWordsContainer StopWords
Definition: vtkWordCloud.h:596
virtual int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
This is called in response to a REQUEST_DATA request from the executive.
std::string ColorSchemeName
Definition: vtkWordCloud.h:580
virtual ColorDistributionContainer GetColorDistribution()
Definition: vtkWordCloud.h:411
std::string MaskFileName
Definition: vtkWordCloud.h:587
std::array< int, 2 > OffsetDistributionContainer
Definition: vtkWordCloud.h:186
std::string BackgroundColorName
Definition: vtkWordCloud.h:577