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
193class VTKINFOVISCORE_EXPORT vtkWordCloud : public vtkImageAlgorithm
194{
195public:
197 void PrintSelf(ostream& os, vtkIndent indent) override;
198
202 static vtkWordCloud* New();
203
204 // Typedefs
205 using ColorDistributionContainer = std::array<double, 2>;
206 using OffsetDistributionContainer = std::array<int, 2>;
207 using OrientationDistributionContainer = std::array<double, 2>;
208 using OrientationsContainer = std::vector<double>;
209 using PairType = std::tuple<std::string, std::string>;
210 using ReplacementPairsContainer = std::vector<PairType>;
211 using SizesContainer = std::array<int, 2>;
212 using StopWordsContainer = std::set<std::string>;
213 using StringContainer = std::vector<std::string>;
214
216
220 virtual SizesContainer GetAdjustedSizes() { return AdjustedSizes; }
221
222#define SetStdContainerMacro(name, container) \
223 virtual void Set##name(container arg) \
224 { \
225 bool changed = false; \
226 if (arg.size() != name.size()) \
227 { \
228 changed = true; \
229 } \
230 else \
231 { \
232 auto a = arg.begin(); \
233 for (auto r : name) \
234 { \
235 if (*a != r) \
236 { \
237 changed = true; \
238 } \
239 a++; \
240 } \
241 } \
242 if (changed) \
243 { \
244 name = arg; \
245 this->Modified(); \
246 } \
247 }
248
250
255 {
256 if (arg != BackgroundColorName)
257 {
258 this->Modified();
259 BackgroundColorName = arg;
260 }
261 }
262 virtual std::string GetBackgroundColorName() { return BackgroundColorName; }
263
265
270 virtual void SetBWMask(bool arg)
271 {
272 if (BWMask != arg)
273 {
274 this->Modified();
275 BWMask = arg;
276 }
277 }
278 virtual bool GetBWMask() { return BWMask; }
279
281
289 {
290 if (ColorSchemeName != arg)
291 {
292 this->Modified();
293 ColorSchemeName = arg;
294 }
295 }
296 virtual std::string GetColorSchemeName() { return ColorSchemeName; }
297
299
306 vtkSetMacro(DPI, int);
307 vtkGetMacro(DPI, int);
308
310
316 {
317 if (FileName != arg)
318 {
319 this->Modified();
320 FileName = arg;
321 }
322 }
323 virtual std::string GetFileName() { return FileName; }
324
326
333 {
334 if (FontFileName != arg)
335 {
336 this->Modified();
337 FontFileName = arg;
338 }
339 }
340 virtual std::string GetFontFileName() { return FontFileName; }
341
343
348 vtkSetMacro(Gap, int);
349 vtkGetMacro(Gap, int);
350
352
359 {
360 if (MaskColorName != arg)
361 {
362 this->Modified();
363 MaskColorName = arg;
364 }
365 }
366 virtual std::string GetMaskColorName() { return MaskColorName; }
367
369
380 {
381 if (MaskFileName != arg)
382 {
383 this->Modified();
384 MaskFileName = arg;
385 }
386 }
387 virtual std::string GetMaskFileName() { return MaskFileName; }
388
390
394 vtkSetMacro(MaxFontSize, int);
395 vtkGetMacro(MaxFontSize, int);
396
398
402 vtkSetMacro(MinFontSize, int);
403 vtkGetMacro(MinFontSize, int);
404
406
412 vtkSetMacro(MinFrequency, int);
413 vtkGetMacro(MinFrequency, int);
414
416
421 vtkSetMacro(FontMultiplier, int);
422 vtkGetMacro(FontMultiplier, int);
423
425
431 virtual ColorDistributionContainer GetColorDistribution() { return ColorDistribution; }
432
434
441 virtual OffsetDistributionContainer GetOffsetDistribution() { return OffsetDistribution; }
442
444
452 {
453 return OrientationDistribution;
454 }
455
457
464 void AddOrientation(double arg)
465 {
466 Orientations.push_back(arg);
467 this->Modified();
468 }
469 virtual OrientationsContainer GetOrientations() { return Orientations; }
470
472
480 {
481 ReplacementPairs.push_back(arg);
482 this->Modified();
483 }
484
485 virtual ReplacementPairsContainer GetReplacementPairs() { return ReplacementPairs; }
486
488
493 virtual SizesContainer GetSizes() { return Sizes; }
494
496
504 {
505 StopWords.insert(word);
506 this->Modified();
507 }
509 {
510 StopWords.clear();
511 this->Modified();
512 }
513 virtual StopWordsContainer GetStopWords() { return StopWords; }
514
516
522 {
523 if (StopListFileName != arg)
524 {
525 this->Modified();
526 StopListFileName = arg;
527 }
528 }
529 virtual std::string GetStopListFileName() { return StopListFileName; }
530
532
537 virtual void SetTitle(std::string arg)
538 {
539 if (Title != arg)
540 {
541 this->Modified();
542 Title = arg;
543 }
544 }
545 virtual std::string GetTitle() { return Title; }
546
548
555 {
556 if (WordColorName != arg)
557 {
558 this->Modified();
559 WordColorName = arg;
560 }
561 }
562 virtual std::string GetWordColorName() { return WordColorName; }
564
568 virtual std::vector<std::string>& GetKeptWords() { return KeptWords; }
569
571
576 virtual std::vector<std::string>& GetSkippedWords() { return SkippedWords; }
577
579
583 virtual std::vector<std::string>& GetStoppedWords() { return StoppedWords; }
584
585protected:
587 ~vtkWordCloud() override = default;
588
590
592
594 int WholeExtent[6];
595
598 bool BWMask;
601 int DPI;
605 int Gap;
620
621 std::vector<std::string> KeptWords;
622 std::vector<std::string> SkippedWords;
623 std::vector<std::string> StoppedWords;
624
625private:
626 vtkWordCloud(const vtkWordCloud&) = delete;
627 void operator=(const vtkWordCloud&) = delete;
628
629 // Declaring the type of Predicate that accepts 2 pairs and returns a bool
630 typedef std::function<bool(std::pair<std::string, int>, std::pair<std::string, int>)> Comparator;
631
632 std::multiset<std::pair<std::string, int>, Comparator> FindWordsSortedByFrequency(
634 struct ExtentOffset
635 {
636 ExtentOffset(int _x = 0.0, int _y = 0.0)
637 : x(_x)
638 , y(_y)
639 {
640 }
641 int x, y;
642 };
643};
644#endif
645
646// LocalWords: vtkNamedColors SetMaskColorName
Generic algorithm superclass for image algs.
a simple class to control print indentation
Definition: vtkIndent.h:43
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
virtual void Modified()
Update the modification time for this object.
generate a word cloud visualization of a text document
Definition: vtkWordCloud.h:194
virtual OrientationsContainer GetOrientations()
Definition: vtkWordCloud.h:469
virtual OffsetDistributionContainer GetOffsetDistribution()
Definition: vtkWordCloud.h:441
virtual void SetFontFileName(VTK_FILEPATH std::string arg)
Set/Get FontFileName, If empty, the built-in Arial font is used().
Definition: vtkWordCloud.h:332
virtual void SetWordColorName(std::string arg)
Set/Get WordColorName, the name of the color for the words().
Definition: vtkWordCloud.h:554
virtual void SetBackgroundColorName(std::string arg)
Set/Get the vtkNamedColors name for the background(MidNightBlue).
Definition: vtkWordCloud.h:254
virtual SizesContainer GetAdjustedSizes()
Return the AdjustedSizes of the resized mask file.
Definition: vtkWordCloud.h:220
static vtkWordCloud * New()
Construct object with vertex cell generation turned off.
virtual void SetFileName(VTK_FILEPATH std::string arg)
Set/Get FileName, the name of the file that contains the text to be processed.
Definition: vtkWordCloud.h:315
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called in response to a REQUEST_DATA request from the executive.
std::vector< PairType > ReplacementPairsContainer
Definition: vtkWordCloud.h:210
virtual void SetTitle(std::string arg)
Set/Get Title, add this word to the document's words and set a high frequency, so that is will be ren...
Definition: vtkWordCloud.h:537
std::string StopListFileName
Definition: vtkWordCloud.h:617
vtkSmartPointer< vtkImageData > ImageData
Definition: vtkWordCloud.h:593
std::array< int, 2 > OffsetDistributionContainer
Definition: vtkWordCloud.h:206
std::string ColorSchemeName
Definition: vtkWordCloud.h:600
SetStdContainerMacro(Orientations, OrientationsContainer)
Set/Add/Get Orientations, a vector of discrete orientations ().
virtual std::vector< std::string > & GetKeptWords()
Get a vector of words that are kept in the final image.
Definition: vtkWordCloud.h:568
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:288
virtual std::string GetWordColorName()
Definition: vtkWordCloud.h:562
virtual void SetMaskColorName(std::string arg)
Set/Get MaskColorName, the name of the color for the mask (black).
Definition: vtkWordCloud.h:358
std::tuple< std::string, std::string > PairType
Definition: vtkWordCloud.h:209
SetStdContainerMacro(StopWords, StopWordsContainer)
Set/Add/Get StopWords, a set of user provided stop words().
std::string MaskFileName
Definition: vtkWordCloud.h:607
std::string WordColorName
Definition: vtkWordCloud.h:619
virtual std::string GetMaskFileName()
Definition: vtkWordCloud.h:387
std::string BackgroundColorName
Definition: vtkWordCloud.h:597
SetStdContainerMacro(ColorDistribution, ColorDistributionContainer)
Set/Get ColorDistribution, the distribution of random colors(.6 1.0), if WordColorName is empty.
std::array< double, 2 > ColorDistributionContainer
Definition: vtkWordCloud.h:205
virtual std::vector< std::string > & GetStoppedWords()
Get a vector of words that were stopped in the final image.
Definition: vtkWordCloud.h:583
std::set< std::string > StopWordsContainer
Definition: vtkWordCloud.h:212
ReplacementPairsContainer ReplacementPairs
Definition: vtkWordCloud.h:614
std::string FileName
Definition: vtkWordCloud.h:602
std::array< double, 2 > OrientationDistributionContainer
Definition: vtkWordCloud.h:207
std::vector< std::string > StringContainer
Definition: vtkWordCloud.h:213
SizesContainer AdjustedSizes
Definition: vtkWordCloud.h:596
std::string FontFileName
Definition: vtkWordCloud.h:603
virtual std::vector< std::string > & GetSkippedWords()
Get a vector of words that are skipped.
Definition: vtkWordCloud.h:576
SetStdContainerMacro(Sizes, SizesContainer)
Set/Get Sizes, the size of the output image(640 480).
OrientationsContainer Orientations
Definition: vtkWordCloud.h:613
virtual std::string GetTitle()
Definition: vtkWordCloud.h:545
virtual SizesContainer GetSizes()
Definition: vtkWordCloud.h:493
OrientationDistributionContainer OrientationDistribution
Definition: vtkWordCloud.h:612
int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
Subclasses can reimplement this method to collect information from their inputs and set information f...
SizesContainer Sizes
Definition: vtkWordCloud.h:615
virtual std::string GetFontFileName()
Definition: vtkWordCloud.h:340
virtual void SetMaskFileName(VTK_FILEPATH std::string arg)
Set/Get MaskFileName, the mask file name().
Definition: vtkWordCloud.h:379
std::string Title
Definition: vtkWordCloud.h:618
virtual std::string GetStopListFileName()
Definition: vtkWordCloud.h:529
virtual void SetStopListFileName(VTK_FILEPATH std::string arg)
Set/Get StopListFileName, the name of the file that contains the stop words, one per line.
Definition: vtkWordCloud.h:521
virtual StopWordsContainer GetStopWords()
Definition: vtkWordCloud.h:513
virtual std::string GetFileName()
Definition: vtkWordCloud.h:323
SetStdContainerMacro(OffsetDistribution, OffsetDistributionContainer)
Set/Get OffsetDistribution, the range of uniform random offsets(-size[0]/100.0 -size{1]/100....
virtual std::string GetMaskColorName()
Definition: vtkWordCloud.h:366
std::vector< std::string > SkippedWords
Definition: vtkWordCloud.h:622
std::vector< std::string > KeptWords
Definition: vtkWordCloud.h:621
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
ColorDistributionContainer ColorDistribution
Definition: vtkWordCloud.h:599
void ClearStopWords()
Definition: vtkWordCloud.h:508
SetStdContainerMacro(OrientationDistribution, OrientationDistributionContainer)
Set/Get OrientationDistribution, ranges of random orientations(-20 20).
virtual ColorDistributionContainer GetColorDistribution()
Definition: vtkWordCloud.h:431
virtual std::string GetBackgroundColorName()
Definition: vtkWordCloud.h:262
virtual ReplacementPairsContainer GetReplacementPairs()
Definition: vtkWordCloud.h:485
virtual std::string GetColorSchemeName()
Definition: vtkWordCloud.h:296
StopWordsContainer StopWords
Definition: vtkWordCloud.h:616
~vtkWordCloud() override=default
virtual OrientationDistributionContainer GetOrientationDistribution()
Definition: vtkWordCloud.h:451
std::vector< double > OrientationsContainer
Definition: vtkWordCloud.h:208
void AddReplacementPair(PairType arg)
Definition: vtkWordCloud.h:479
std::vector< std::string > StoppedWords
Definition: vtkWordCloud.h:623
void AddStopWord(std::string word)
Definition: vtkWordCloud.h:503
OffsetDistributionContainer OffsetDistribution
Definition: vtkWordCloud.h:611
virtual bool GetBWMask()
Definition: vtkWordCloud.h:278
virtual void SetBWMask(bool arg)
Set/Get boolean that indicates the mask image is a single channel(false).
Definition: vtkWordCloud.h:270
SetStdContainerMacro(ReplacementPairs, ReplacementPairsContainer)
Set/Add/Get ReplacementPairs, a vector of words that replace the first word with another second word ...
std::string MaskColorName
Definition: vtkWordCloud.h:606
std::array< int, 2 > SizesContainer
Definition: vtkWordCloud.h:211
void AddOrientation(double arg)
Definition: vtkWordCloud.h:464
@ function
Definition: vtkX3D.h:255
@ string
Definition: vtkX3D.h:496
#define VTK_FILEPATH