VTK  9.0.1
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 
181 class VTKINFOVISCORE_EXPORT vtkWordCloud : public vtkImageAlgorithm
182 {
183 public:
185  void PrintSelf(ostream& os, vtkIndent indent) override;
186 
190  static vtkWordCloud* New();
191 
192  // Typedefs
193  using ColorDistributionContainer = std::array<double, 2>;
194  using OffsetDistributionContainer = std::array<int, 2>;
195  using OrientationDistributionContainer = std::array<double, 2>;
196  using OrientationsContainer = std::vector<double>;
197  using PairType = std::tuple<std::string, std::string>;
198  using ReplacementPairsContainer = std::vector<PairType>;
199  using SizesContainer = std::array<int, 2>;
200  using StopWordsContainer = std::set<std::string>;
201  using StringContainer = std::vector<std::string>;
202 
204 
208  virtual SizesContainer GetAdjustedSizes() { return AdjustedSizes; }
209 
210 #define SetStdContainerMacro(name, container) \
211  virtual void Set##name(container arg) \
212  { \
213  bool changed = false; \
214  if (arg.size() != name.size()) \
215  { \
216  changed = true; \
217  } \
218  else \
219  { \
220  auto a = arg.begin(); \
221  for (auto r : name) \
222  { \
223  if (*a != r) \
224  { \
225  changed = true; \
226  } \
227  a++; \
228  } \
229  } \
230  if (changed) \
231  { \
232  name = arg; \
233  this->Modified(); \
234  } \
235  }
236 
238 
243  {
244  if (arg != BackgroundColorName)
245  {
246  this->Modified();
247  BackgroundColorName = arg;
248  }
249  }
250  virtual std::string GetBackgroundColorName() { return BackgroundColorName; }
251 
253 
258  virtual void SetBWMask(bool arg)
259  {
260  if (BWMask != arg)
261  {
262  this->Modified();
263  BWMask = arg;
264  }
265  }
266  virtual bool GetBWMask() { return BWMask; }
267 
269 
276  virtual void SetColorSchemeName(std::string arg)
277  {
278  if (ColorSchemeName != arg)
279  {
280  this->Modified();
281  ColorSchemeName = arg;
282  }
283  }
284  virtual std::string GetColorSchemeName() { return ColorSchemeName; }
285 
287 
294  vtkSetMacro(DPI, int);
295  vtkGetMacro(DPI, int);
296 
298 
303  virtual void SetFileName(std::string arg)
304  {
305  if (FileName != arg)
306  {
307  this->Modified();
308  FileName = arg;
309  }
310  }
311  virtual std::string GetFileName() { return FileName; }
312 
314 
320  virtual void SetFontFileName(std::string arg)
321  {
322  if (FontFileName != arg)
323  {
324  this->Modified();
325  FontFileName = arg;
326  }
327  }
328  virtual std::string GetFontFileName() { return FontFileName; }
329 
331 
336  vtkSetMacro(Gap, int);
337  vtkGetMacro(Gap, int);
338 
340 
346  virtual void SetMaskColorName(std::string arg)
347  {
348  if (MaskColorName != arg)
349  {
350  this->Modified();
351  MaskColorName = arg;
352  }
353  }
354  virtual std::string GetMaskColorName() { return MaskColorName; }
355 
357 
367  virtual void SetMaskFileName(std::string arg)
368  {
369  if (MaskFileName != arg)
370  {
371  this->Modified();
372  MaskFileName = arg;
373  }
374  }
375  virtual std::string GetMaskFileName() { return MaskFileName; }
376 
378 
382  vtkSetMacro(MaxFontSize, int);
383  vtkGetMacro(MaxFontSize, int);
384 
386 
390  vtkSetMacro(MinFontSize, int);
391  vtkGetMacro(MinFontSize, int);
392 
394 
400  vtkSetMacro(MinFrequency, int);
401  vtkGetMacro(MinFrequency, int);
402 
404 
409  vtkSetMacro(FontMultiplier, int);
410  vtkGetMacro(FontMultiplier, int);
411 
413 
418  SetStdContainerMacro(ColorDistribution, ColorDistributionContainer);
419  virtual ColorDistributionContainer GetColorDistribution() { return ColorDistribution; }
420 
422 
428  SetStdContainerMacro(OffsetDistribution, OffsetDistributionContainer);
429  virtual OffsetDistributionContainer GetOffsetDistribution() { return OffsetDistribution; }
430 
432 
438  SetStdContainerMacro(OrientationDistribution, OrientationDistributionContainer);
440  {
441  return OrientationDistribution;
442  }
443 
445 
451  SetStdContainerMacro(Orientations, OrientationsContainer);
452  void AddOrientation(double arg)
453  {
454  Orientations.push_back(arg);
455  this->Modified();
456  }
457  virtual OrientationsContainer GetOrientations() { return Orientations; }
458 
460 
466  SetStdContainerMacro(ReplacementPairs, ReplacementPairsContainer);
468  {
469  ReplacementPairs.push_back(arg);
470  this->Modified();
471  }
472 
473  virtual ReplacementPairsContainer GetReplacementPairs() { return ReplacementPairs; }
474 
476 
480  SetStdContainerMacro(Sizes, SizesContainer);
481  virtual SizesContainer GetSizes() { return Sizes; }
482 
484 
490  SetStdContainerMacro(StopWords, StopWordsContainer);
492  {
493  StopWords.insert(word);
494  this->Modified();
495  }
497  {
498  StopWords.clear();
499  this->Modified();
500  }
501  virtual StopWordsContainer GetStopWords() { return StopWords; }
502 
504 
510  {
511  if (StopListFileName != arg)
512  {
513  this->Modified();
514  StopListFileName = arg;
515  }
516  }
517  virtual std::string GetStopListFileName() { return StopListFileName; }
518 
520 
525  virtual void SetTitle(std::string arg)
526  {
527  if (Title != arg)
528  {
529  this->Modified();
530  Title = arg;
531  }
532  }
533  virtual std::string GetTitle() { return Title; }
534 
536 
542  virtual void SetWordColorName(std::string arg)
543  {
544  if (WordColorName != arg)
545  {
546  this->Modified();
547  WordColorName = arg;
548  }
549  }
550  virtual std::string GetWordColorName() { return WordColorName; }
552 
556  virtual std::vector<std::string>& GetKeptWords() { return KeptWords; }
557 
559 
564  virtual std::vector<std::string>& GetSkippedWords() { return SkippedWords; }
565 
567 
571  virtual std::vector<std::string>& GetStoppedWords() { return StoppedWords; }
572 
573 protected:
574  vtkWordCloud();
575  ~vtkWordCloud() override {}
576 
578 
580 
582  int WholeExtent[6];
583 
586  bool BWMask;
589  int DPI;
593  int Gap;
608 
609  std::vector<std::string> KeptWords;
610  std::vector<std::string> SkippedWords;
611  std::vector<std::string> StoppedWords;
612 
613 private:
614  vtkWordCloud(const vtkWordCloud&) = delete;
615  void operator=(const vtkWordCloud&) = delete;
616 
617  // Declaring the type of Predicate that accepts 2 pairs and returns a bool
618  typedef std::function<bool(std::pair<std::string, int>, std::pair<std::string, int>)> Comparator;
619 
620  std::multiset<std::pair<std::string, int>, Comparator> FindWordsSortedByFrequency(
622  struct ExtentOffset
623  {
624  ExtentOffset(int _x = 0.0, int _y = 0.0)
625  : x(_x)
626  , y(_y)
627  {
628  }
629  int x, y;
630  };
631 };
632 #endif
633 
634 // LocalWords: vtkNamedColors SetMaskColorName
std::string FileName
Definition: vtkWordCloud.h:590
virtual StopWordsContainer GetStopWords()
Definition: vtkWordCloud.h:501
virtual std::string GetMaskColorName()
Definition: vtkWordCloud.h:354
std::vector< double > OrientationsContainer
Definition: vtkWordCloud.h:196
virtual std::string GetFontFileName()
Definition: vtkWordCloud.h:328
std::string MaskColorName
Definition: vtkWordCloud.h:594
std::vector< std::string > StringContainer
Definition: vtkWordCloud.h:201
virtual void SetBackgroundColorName(std::string arg)
Set/Get the vtkNamedColors name for the background(MidNightBlue).
Definition: vtkWordCloud.h:242
ReplacementPairsContainer ReplacementPairs
Definition: vtkWordCloud.h:602
Store vtkAlgorithm input/output information.
std::array< int, 2 > SizesContainer
Definition: vtkWordCloud.h:199
OrientationsContainer Orientations
Definition: vtkWordCloud.h:601
virtual std::vector< std::string > & GetKeptWords()
Get a vector of words that are kept in the final image.
Definition: vtkWordCloud.h:556
virtual void SetMaskFileName(std::string arg)
Set/Get MaskFileName, the mask file name().
Definition: vtkWordCloud.h:367
std::vector< PairType > ReplacementPairsContainer
Definition: vtkWordCloud.h:198
virtual std::string GetTitle()
Definition: vtkWordCloud.h:533
std::string Title
Definition: vtkWordCloud.h:606
OffsetDistributionContainer OffsetDistribution
Definition: vtkWordCloud.h:599
virtual std::string GetStopListFileName()
Definition: vtkWordCloud.h:517
std::string FontFileName
Definition: vtkWordCloud.h:591
vtkSmartPointer< vtkImageData > ImageData
Definition: vtkWordCloud.h:581
std::string StopListFileName
Definition: vtkWordCloud.h:605
SizesContainer AdjustedSizes
Definition: vtkWordCloud.h:584
void ClearStopWords()
Definition: vtkWordCloud.h:496
virtual OrientationDistributionContainer GetOrientationDistribution()
Definition: vtkWordCloud.h:439
~vtkWordCloud() override
Definition: vtkWordCloud.h:575
SizesContainer Sizes
Definition: vtkWordCloud.h:603
std::tuple< std::string, std::string > PairType
Definition: vtkWordCloud.h:197
generate a word cloud visualization of a text document
Definition: vtkWordCloud.h:181
OrientationDistributionContainer OrientationDistribution
Definition: vtkWordCloud.h:600
void AddReplacementPair(PairType arg)
Definition: vtkWordCloud.h:467
ColorDistributionContainer ColorDistribution
Definition: vtkWordCloud.h:587
virtual std::string GetBackgroundColorName()
Definition: vtkWordCloud.h:250
std::array< double, 2 > ColorDistributionContainer
Definition: vtkWordCloud.h:193
virtual std::string GetFileName()
Definition: vtkWordCloud.h:311
virtual void SetTitle(std::string arg)
Set/Get Title, add this word to the document&#39;s words and set a high frequency, so that is will be ren...
Definition: vtkWordCloud.h:525
virtual std::string GetMaskFileName()
Definition: vtkWordCloud.h:375
std::vector< std::string > KeptWords
Definition: vtkWordCloud.h:609
virtual void SetMaskColorName(std::string arg)
Set/Get MaskColorName, the name of the color for the mask (black).
Definition: vtkWordCloud.h:346
virtual bool GetBWMask()
Definition: vtkWordCloud.h:266
virtual void SetStopListFileName(std::string arg)
Set/Get StopListFileName, the name of the file that contains the stop words, one per line...
Definition: vtkWordCloud.h:509
a simple class to control print indentation
Definition: vtkIndent.h:33
virtual void SetBWMask(bool arg)
Set/Get boolean that indicates the mask image is a single channel(false).
Definition: vtkWordCloud.h:258
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:284
std::vector< std::string > StoppedWords
Definition: vtkWordCloud.h:611
std::vector< std::string > SkippedWords
Definition: vtkWordCloud.h:610
virtual void SetWordColorName(std::string arg)
Set/Get WordColorName, the name of the color for the words().
Definition: vtkWordCloud.h:542
virtual SizesContainer GetSizes()
Definition: vtkWordCloud.h:481
virtual void Modified()
Update the modification time for this object.
virtual std::string GetWordColorName()
Definition: vtkWordCloud.h:550
virtual OffsetDistributionContainer GetOffsetDistribution()
Definition: vtkWordCloud.h:429
virtual void SetColorSchemeName(std::string arg)
Set/Get ColorSchemeName, the name of a color scheme from vtkColorScheme to be used to select colors f...
Definition: vtkWordCloud.h:276
virtual OrientationsContainer GetOrientations()
Definition: vtkWordCloud.h:457
virtual ReplacementPairsContainer GetReplacementPairs()
Definition: vtkWordCloud.h:473
std::set< std::string > StopWordsContainer
Definition: vtkWordCloud.h:200
void AddStopWord(std::string word)
Definition: vtkWordCloud.h:491
virtual std::vector< std::string > & GetStoppedWords()
Get a vector of words that were stopped in the final image.
Definition: vtkWordCloud.h:571
std::string WordColorName
Definition: vtkWordCloud.h:607
std::array< double, 2 > OrientationDistributionContainer
Definition: vtkWordCloud.h:195
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:452
virtual void SetFileName(std::string arg)
Set/Get FileName, the name of the file that contains the text to be processed.
Definition: vtkWordCloud.h:303
StopWordsContainer StopWords
Definition: vtkWordCloud.h:604
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:588
virtual ColorDistributionContainer GetColorDistribution()
Definition: vtkWordCloud.h:419
virtual SizesContainer GetAdjustedSizes()
Return the AdjustedSizes of the resized mask file.
Definition: vtkWordCloud.h:208
#define SetStdContainerMacro(name, container)
Definition: vtkWordCloud.h:210
virtual std::vector< std::string > & GetSkippedWords()
Get a vector of words that are skipped.
Definition: vtkWordCloud.h:564
std::string MaskFileName
Definition: vtkWordCloud.h:595
virtual void SetFontFileName(std::string arg)
Set/Get FontFileName, If empty, the built-in Arial font is used().
Definition: vtkWordCloud.h:320
std::array< int, 2 > OffsetDistributionContainer
Definition: vtkWordCloud.h:194
std::string BackgroundColorName
Definition: vtkWordCloud.h:585