LMMS
Loading...
Searching...
No Matches
juce_BubbleMessageComponent.cpp
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
6
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
9
10 By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11 Agreement and JUCE Privacy Policy.
12
13 End User License Agreement: www.juce.com/juce-7-licence
14 Privacy Policy: www.juce.com/juce-privacy-policy
15
16 Or: You may also use this code under the terms of the GPL v3 (see
17 www.gnu.org/licenses).
18
19 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21 DISCLAIMED.
22
23 ==============================================================================
24*/
25
26namespace juce
27{
28
30 : fadeOutLength (fadeOutLengthMs), mouseClickCounter (0),
32{
33}
34
38
41 const int numMillisecondsBeforeRemoving,
42 const bool removeWhenMouseClicked,
43 const bool deleteSelfAfterUse)
44{
46 setPosition (pos);
47 init (numMillisecondsBeforeRemoving, removeWhenMouseClicked, deleteSelfAfterUse);
48}
49
52 const int numMillisecondsBeforeRemoving,
53 const bool removeWhenMouseClicked,
54 const bool deleteSelfAfterUse)
55{
57 setPosition (component);
58 init (numMillisecondsBeforeRemoving, removeWhenMouseClicked, deleteSelfAfterUse);
59}
60
62{
63 textLayout.createLayoutWithBalancedLineLengths (text, 256);
64}
65
66void BubbleMessageComponent::init (const int numMillisecondsBeforeRemoving,
67 const bool removeWhenMouseClicked,
68 const bool deleteSelfAfterUse)
69{
70 setAlpha (1.0f);
71 setVisible (true);
72 deleteAfterUse = deleteSelfAfterUse;
73
74 expiryTime = numMillisecondsBeforeRemoving > 0
75 ? (Time::getMillisecondCounter() + (uint32) numMillisecondsBeforeRemoving) : 0;
76
77 mouseClickCounter = Desktop::getInstance().getMouseButtonClickCounter();
78
79 if (! (removeWhenMouseClicked && isShowing()))
80 mouseClickCounter += 0xfffff;
81
82 startTimer (77);
83 repaint();
84}
85
86const float bubblePaddingX = 20.0f;
87const float bubblePaddingY = 14.0f;
88
90{
91 w = (int) (bubblePaddingX + textLayout.getWidth());
92 h = (int) (bubblePaddingY + textLayout.getHeight());
93}
94
96{
98
100 (float) w - bubblePaddingX, (float) h - bubblePaddingY));
101}
102
104{
105 if (Desktop::getInstance().getMouseButtonClickCounter() > mouseClickCounter)
106 hide (false);
108 hide (true);
109}
110
111void BubbleMessageComponent::hide (const bool fadeOut)
112{
113 stopTimer();
114
115 if (fadeOut)
116 Desktop::getInstance().getAnimator().fadeOut (this, fadeOutLength);
117 else
118 setVisible (false);
119
120 if (deleteAfterUse)
121 delete this;
122}
123
124} // namespace juce
Definition juce_AttributedString.h:47
void setPosition(Component *componentToPointTo, int distanceFromTarget=15, int arrowLength=10)
Definition juce_BubbleComponent.cpp:57
TextLayout textLayout
Definition juce_BubbleMessageComponent.h:114
void getContentSize(int &w, int &h) override
Definition juce_BubbleMessageComponent.cpp:89
void hide(bool fadeOut)
Definition juce_BubbleMessageComponent.cpp:111
void init(int, bool, bool)
Definition juce_BubbleMessageComponent.cpp:66
int64 expiryTime
Definition juce_BubbleMessageComponent.h:115
int mouseClickCounter
Definition juce_BubbleMessageComponent.h:113
void showAt(const Rectangle< int > &position, const AttributedString &message, int numMillisecondsBeforeRemoving, bool removeWhenMouseClicked=true, bool deleteSelfAfterUse=false)
Definition juce_BubbleMessageComponent.cpp:39
int fadeOutLength
Definition juce_BubbleMessageComponent.h:113
BubbleMessageComponent(int fadeOutLengthMs=150)
Definition juce_BubbleMessageComponent.cpp:29
void paintContent(Graphics &g, int w, int h) override
Definition juce_BubbleMessageComponent.cpp:95
bool deleteAfterUse
Definition juce_BubbleMessageComponent.h:116
~BubbleMessageComponent() override
Definition juce_BubbleMessageComponent.cpp:35
void createLayout(const AttributedString &)
Definition juce_BubbleMessageComponent.cpp:61
void timerCallback() override
Definition juce_BubbleMessageComponent.cpp:103
Definition juce_Component.h:36
bool isShowing() const
Definition juce_Component.cpp:634
void setAlpha(float newAlpha)
Definition juce_Component.cpp:1892
void repaint()
Definition juce_Component.cpp:1917
Colour findColour(int colourID, bool inheritFromParent=false) const
Definition juce_Component.cpp:2219
virtual void setVisible(bool shouldBeVisible)
Definition juce_Component.cpp:575
static Desktop &JUCE_CALLTYPE getInstance()
Definition juce_Desktop.cpp:50
Definition juce_GraphicsContext.h:45
Definition juce_Rectangle.h:67
static uint32 getMillisecondCounter() noexcept
Definition juce_Time.cpp:241
void stopTimer() noexcept
Definition juce_Timer.cpp:357
void startTimer(int intervalInMilliseconds) noexcept
Definition juce_Timer.cpp:332
@ textColourId
Definition juce_TooltipWindow.h:115
UINT_D64 w
Definition inflate.c:942
int g
Definition inflate.c:1573
Definition carla_juce.cpp:31
unsigned int uint32
Definition juce_MathsFunctions.h:45
const float bubblePaddingY
Definition juce_BubbleMessageComponent.cpp:87
const float bubblePaddingX
Definition juce_BubbleMessageComponent.cpp:86
#define false
Definition ordinals.h:83
const char * text
Definition swell-functions.h:167
uch h[RAND_HEAD_LEN]
Definition crypt.c:459
ZCONST uch * init
Definition extract.c:2392
typedef int(UZ_EXP MsgFn)()