openshot-audio  0.1.7
juce_CallOutBox.h
Go to the documentation of this file.
1 /*
2  ==============================================================================
3 
4  This file is part of the JUCE library.
5  Copyright (c) 2015 - ROLI Ltd.
6 
7  Permission is granted to use this software under the terms of either:
8  a) the GPL v2 (or any later version)
9  b) the Affero GPL v3
10 
11  Details of these licenses can be found at: www.gnu.org/licenses
12 
13  JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
14  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
15  A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16 
17  ------------------------------------------------------------------------------
18 
19  To release a closed-source product which uses JUCE, commercial licenses are
20  available: visit www.juce.com for more information.
21 
22  ==============================================================================
23 */
24 
25 #ifndef JUCE_CALLOUTBOX_H_INCLUDED
26 #define JUCE_CALLOUTBOX_H_INCLUDED
27 
28 
29 //==============================================================================
57 {
58 public:
59  //==============================================================================
73  CallOutBox (Component& contentComponent,
74  const Rectangle<int>& areaToPointTo,
75  Component* parentComponent);
76 
78  ~CallOutBox();
79 
80  //==============================================================================
82  void setArrowSize (float newSize);
83 
92  void updatePosition (const Rectangle<int>& newAreaToPointTo,
93  const Rectangle<int>& newAreaToFitIn);
94 
95 
117  static CallOutBox& launchAsynchronously (Component* contentComponent,
118  const Rectangle<int>& areaToPointTo,
119  Component* parentComponent);
120 
124  void dismiss();
125 
134  void setDismissalMouseClicksAreAlwaysConsumed (bool shouldAlwaysBeConsumed) noexcept;
135 
136  //==============================================================================
139  {
140  virtual ~LookAndFeelMethods() {}
141 
142  virtual void drawCallOutBoxBackground (CallOutBox&, Graphics&, const Path&, Image& cachedImage) = 0;
143  virtual int getCallOutBoxBorderSize (const CallOutBox&) = 0;
144  };
145 
146  //==============================================================================
148  void paint (Graphics&) override;
150  void resized() override;
152  void moved() override;
154  void childBoundsChanged (Component*) override;
156  bool hitTest (int x, int y) override;
158  void inputAttemptWhenModal() override;
160  bool keyPressed (const KeyPress&) override;
162  void handleCommandMessage (int) override;
164  int getBorderSize() const noexcept;
165 
166 private:
167  //==============================================================================
168  float arrowSize;
169  Component& content;
170  Path outline;
171  Point<float> targetPoint;
172  Rectangle<int> availableArea, targetArea;
173  Image background;
174  bool dismissalMouseClicksAreAlwaysConsumed;
175 
176  void refreshPath();
177 
179 };
180 
181 
182 #endif // JUCE_CALLOUTBOX_H_INCLUDED
Definition: juce_KeyPress.h:37
#define noexcept
Definition: juce_CompilerSupport.h:141
virtual ~LookAndFeelMethods()
Definition: juce_CallOutBox.h:140
Definition: juce_Point.h:39
#define JUCE_API
Definition: juce_StandardHeader.h:139
#define const
Definition: juce_CallOutBox.h:138
Definition: juce_Rectangle.h:36
Definition: juce_Path.h:62
Definition: juce_Component.h:33
Definition: juce_CallOutBox.h:56
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)
Definition: juce_PlatformDefs.h:198
Definition: juce_GraphicsContext.h:42
Definition: juce_Image.h:54