/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2020 - Raw Material Software Limited JUCE is an open source library subject to commercial or open-source licensing. By using JUCE, you agree to the terms of both the JUCE 6 End-User License Agreement and JUCE Privacy Policy (both effective as of the 16th June 2020). End User License Agreement: www.juce.com/juce-6-licence Privacy Policy: www.juce.com/juce-privacy-policy Or: You may also use this code under the terms of the GPL v3 (see www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE DISCLAIMED. ============================================================================== */ #pragma once //============================================================================== class JustificationProperty : public ChoicePropertyComponent { public: JustificationProperty (const String& name, const bool onlyHorizontalOptions) : ChoicePropertyComponent (name) { if (onlyHorizontalOptions) { choices.add ("centre"); choices.add ("left"); choices.add ("right"); } else { choices.add ("centred"); choices.add ("centred left"); choices.add ("centred right"); choices.add ("centred top"); choices.add ("centred bottom"); choices.add ("top left"); choices.add ("top right"); choices.add ("bottom left"); choices.add ("bottom right"); } } //============================================================================== virtual void setJustification (Justification newJustification) = 0; virtual Justification getJustification() const = 0; //============================================================================== void setIndex (int newIndex) { const int types[] = { Justification::centred, Justification::centredLeft, Justification::centredRight, Justification::centredTop, Justification::centredBottom, Justification::topLeft, Justification::topRight, Justification::bottomLeft, Justification::bottomRight }; if (((unsigned int) newIndex) < (unsigned int) numElementsInArray (types) && types [newIndex] != getJustification().getFlags()) { setJustification (Justification (types [newIndex])); } } int getIndex() const { const int types[] = { Justification::centred, Justification::centredLeft, Justification::centredRight, Justification::centredTop, Justification::centredBottom, Justification::topLeft, Justification::topRight, Justification::bottomLeft, Justification::bottomRight }; const int rawFlags = getJustification().getFlags(); for (int i = numElementsInArray (types); --i >= 0;) if (types[i] == rawFlags) return i; return -1; } };