@@ -2,8 +2,8 @@ | |||
set -e | |||
JUCE_MODULES_DIR="/home/falktx/FOSS/GIT-mine/DISTRHO/libs/juce/source/modules/" | |||
CARLA_MODULES_DIR="/home/falktx/FOSS/GIT-mine/Carla/source/modules/" | |||
JUCE_MODULES_DIR="/home/falktx/Personal/FOSS/GIT/distrho/DISTRHO/libs/juce/source/modules/" | |||
CARLA_MODULES_DIR="/home/falktx/Personal/FOSS/GIT/falktx/Carla/source/modules/" | |||
MODULES=("juce_audio_basics juce_audio_devices juce_audio_formats juce_audio_processors juce_core juce_data_structures juce_events juce_graphics juce_gui_basics juce_gui_extra") | |||
@@ -229,7 +229,7 @@ namespace FloatVectorHelpers | |||
static Type findMinOrMax (const Type* src, int num, const bool isMinimum) noexcept | |||
{ | |||
const int numLongOps = num / Mode::numParallel; | |||
int numLongOps = num / Mode::numParallel; | |||
#if JUCE_USE_SSE_INTRINSICS | |||
if (numLongOps > 1 && isSSE2Available()) | |||
@@ -246,7 +246,7 @@ namespace FloatVectorHelpers | |||
if (isMinimum) | |||
{ | |||
for (int i = 1; i < numLongOps; ++i) | |||
while (--numLongOps > 0) | |||
{ | |||
src += Mode::numParallel; | |||
val = Mode::min (val, Mode::loadA (src)); | |||
@@ -254,7 +254,7 @@ namespace FloatVectorHelpers | |||
} | |||
else | |||
{ | |||
for (int i = 1; i < numLongOps; ++i) | |||
while (--numLongOps > 0) | |||
{ | |||
src += Mode::numParallel; | |||
val = Mode::max (val, Mode::loadA (src)); | |||
@@ -268,7 +268,7 @@ namespace FloatVectorHelpers | |||
if (isMinimum) | |||
{ | |||
for (int i = 1; i < numLongOps; ++i) | |||
while (--numLongOps > 0) | |||
{ | |||
src += Mode::numParallel; | |||
val = Mode::min (val, Mode::loadU (src)); | |||
@@ -276,7 +276,7 @@ namespace FloatVectorHelpers | |||
} | |||
else | |||
{ | |||
for (int i = 1; i < numLongOps; ++i) | |||
while (--numLongOps > 0) | |||
{ | |||
src += Mode::numParallel; | |||
val = Mode::max (val, Mode::loadU (src)); | |||
@@ -288,6 +288,7 @@ namespace FloatVectorHelpers | |||
: Mode::max (val); | |||
num &= (Mode::numParallel - 1); | |||
src += Mode::numParallel; | |||
for (int i = 0; i < num; ++i) | |||
result = isMinimum ? jmin (result, src[i]) | |||
@@ -302,7 +303,7 @@ namespace FloatVectorHelpers | |||
static Range<Type> findMinAndMax (const Type* src, int num) noexcept | |||
{ | |||
const int numLongOps = num / Mode::numParallel; | |||
int numLongOps = num / Mode::numParallel; | |||
#if JUCE_USE_SSE_INTRINSICS | |||
if (numLongOps > 1 && isSSE2Available()) | |||
@@ -318,7 +319,7 @@ namespace FloatVectorHelpers | |||
mn = Mode::loadA (src); | |||
mx = mn; | |||
for (int i = 1; i < numLongOps; ++i) | |||
while (--numLongOps > 0) | |||
{ | |||
src += Mode::numParallel; | |||
const ParallelType v = Mode::loadA (src); | |||
@@ -332,7 +333,7 @@ namespace FloatVectorHelpers | |||
mn = Mode::loadU (src); | |||
mx = mn; | |||
for (int i = 1; i < numLongOps; ++i) | |||
while (--numLongOps > 0) | |||
{ | |||
src += Mode::numParallel; | |||
const ParallelType v = Mode::loadU (src); | |||
@@ -345,6 +346,8 @@ namespace FloatVectorHelpers | |||
Mode::max (mx)); | |||
num &= 3; | |||
src += Mode::numParallel; | |||
for (int i = 0; i < num; ++i) | |||
result = result.getUnionWith (src[i]); | |||
@@ -1758,7 +1758,7 @@ private: | |||
//============================================================================== | |||
VST3ModuleHandle::Ptr module; | |||
friend class VST3HostContext; | |||
friend VST3HostContext; | |||
ComSmartPtr<VST3HostContext> host; | |||
// Information objects: | |||
@@ -272,6 +272,7 @@ extern JUCE_API void JUCE_CALLTYPE logAssertion (const char* file, int line) noe | |||
#include "zip/juce_GZIPDecompressorInputStream.h" | |||
#include "zip/juce_ZipFile.h" | |||
#include "containers/juce_PropertySet.h" | |||
#include "memory/juce_SharedResourcePointer.h" | |||
} | |||
@@ -329,17 +329,17 @@ public: | |||
//============================================================================== | |||
/** Returns the object that this pointer references. | |||
The pointer returned may be zero, of course. | |||
The pointer returned may be null, of course. | |||
*/ | |||
operator ReferencedType*() const noexcept { return referencedObject; } | |||
/** Returns the object that this pointer references. | |||
The pointer returned may be zero, of course. | |||
The pointer returned may be null, of course. | |||
*/ | |||
ReferencedType* get() const noexcept { return referencedObject; } | |||
/** Returns the object that this pointer references. | |||
The pointer returned may be zero, of course. | |||
The pointer returned may be null, of course. | |||
*/ | |||
ReferencedType* getObject() const noexcept { return referencedObject; } | |||
@@ -29,7 +29,7 @@ | |||
#ifndef JUCE_WIN32_COMSMARTPTR_H_INCLUDED | |||
#define JUCE_WIN32_COMSMARTPTR_H_INCLUDED | |||
#if ! defined (_MSC_VER) //|| defined (__uuidof)) | |||
#if ! (defined (_MSC_VER) || defined (__uuidof)) | |||
template<typename Type> struct UUIDGetter { static CLSID get() { jassertfalse; return CLSID(); } }; | |||
#define __uuidof(x) UUIDGetter<x>::get() | |||
#endif | |||
@@ -890,20 +890,22 @@ namespace EdgeTableFillers | |||
forcedinline void copyRow (DestPixelType* dest, SrcPixelType const* src, int width) const noexcept | |||
{ | |||
if (srcData.pixelStride == 3 && destData.pixelStride == 3) | |||
const int destStride = destData.pixelStride; | |||
const int srcStride = srcData.pixelStride; | |||
if (destStride == srcStride | |||
&& srcData.pixelFormat == Image::RGB | |||
&& destData.pixelFormat == Image::RGB) | |||
{ | |||
memcpy (dest, src, sizeof (PixelRGB) * (size_t) width); | |||
memcpy (dest, src, (size_t) (width * srcStride)); | |||
} | |||
else | |||
{ | |||
const int destStride = destData.pixelStride; | |||
const int srcStride = srcData.pixelStride; | |||
do | |||
{ | |||
dest->blend (*src); | |||
dest = addBytesToPointer (dest, destStride); | |||
src = addBytesToPointer (src, srcStride); | |||
src = addBytesToPointer (src, srcStride); | |||
} while (--width > 0); | |||
} | |||
} | |||
@@ -37,10 +37,9 @@ public: | |||
D2D1_RENDER_TARGET_PROPERTIES props = D2D1::RenderTargetProperties(); | |||
D2D1_HWND_RENDER_TARGET_PROPERTIES propsHwnd = D2D1::HwndRenderTargetProperties (hwnd, size); | |||
const Direct2DFactories& factories = Direct2DFactories::getInstance(); | |||
if (factories.d2dFactory != nullptr) | |||
if (factories->d2dFactory != nullptr) | |||
{ | |||
HRESULT hr = factories.d2dFactory->CreateHwndRenderTarget (props, propsHwnd, renderingTarget.resetAndGetPointerAddress()); | |||
HRESULT hr = factories->d2dFactory->CreateHwndRenderTarget (props, propsHwnd, renderingTarget.resetAndGetPointerAddress()); | |||
jassert (SUCCEEDED (hr)); (void) hr; | |||
hr = renderingTarget->CreateSolidColorBrush (D2D1::ColorF::ColorF (0.0f, 0.0f, 0.0f, 1.0f), colourBrush.resetAndGetPointerAddress()); | |||
} | |||
@@ -287,9 +286,8 @@ public: | |||
{ | |||
renderingTarget->SetTransform (transformToMatrix (currentState->transform)); | |||
const Direct2DFactories& factories = Direct2DFactories::getInstance(); | |||
DirectWriteTypeLayout::drawToD2DContext (text, area, renderingTarget, factories.directWriteFactory, | |||
factories.d2dFactory, factories.systemFonts); | |||
DirectWriteTypeLayout::drawToD2DContext (text, area, renderingTarget, factories->directWriteFactory, | |||
factories->d2dFactory, factories->systemFonts); | |||
renderingTarget->SetTransform (D2D1::IdentityMatrix()); | |||
return true; | |||
@@ -695,6 +693,7 @@ public: | |||
//============================================================================== | |||
private: | |||
SharedResourcePointer<Direct2DFactories> factories; | |||
HWND hwnd; | |||
ComSmartPtr <ID2D1HwndRenderTarget> renderingTarget; | |||
ComSmartPtr <ID2D1SolidColorBrush> colourBrush; | |||
@@ -733,7 +732,7 @@ private: | |||
static ID2D1PathGeometry* rectListToPathGeometry (const RectangleList<int>& clipRegion) | |||
{ | |||
ID2D1PathGeometry* p = nullptr; | |||
Direct2DFactories::getInstance().d2dFactory->CreatePathGeometry (&p); | |||
factories->d2dFactory->CreatePathGeometry (&p); | |||
ComSmartPtr <ID2D1GeometrySink> sink; | |||
HRESULT hr = p->Open (sink.resetAndGetPointerAddress()); // xxx handle error | |||
@@ -811,7 +810,7 @@ private: | |||
static ID2D1PathGeometry* pathToPathGeometry (const Path& path, const AffineTransform& transform) | |||
{ | |||
ID2D1PathGeometry* p = nullptr; | |||
Direct2DFactories::getInstance().d2dFactory->CreatePathGeometry (&p); | |||
factories->d2dFactory->CreatePathGeometry (&p); | |||
ComSmartPtr <ID2D1GeometrySink> sink; | |||
HRESULT hr = p->Open (sink.resetAndGetPointerAddress()); | |||
@@ -389,9 +389,9 @@ namespace DirectWriteTypeLayout | |||
bool TextLayout::createNativeLayout (const AttributedString& text) | |||
{ | |||
#if JUCE_USE_DIRECTWRITE | |||
const Direct2DFactories& factories = Direct2DFactories::getInstance(); | |||
SharedResourcePointer<Direct2DFactories> factories; | |||
if (factories.d2dFactory != nullptr && factories.systemFonts != nullptr) | |||
if (factories->d2dFactory != nullptr && factories->systemFonts != nullptr) | |||
{ | |||
#if JUCE_64BIT | |||
// There's a mysterious bug in 64-bit Windows that causes garbage floating-point | |||
@@ -402,13 +402,13 @@ bool TextLayout::createNativeLayout (const AttributedString& text) | |||
{ | |||
hasBeenCalled = true; | |||
TextLayout dummy; | |||
DirectWriteTypeLayout::createLayout (dummy, text, factories.directWriteFactory, | |||
factories.d2dFactory, factories.systemFonts); | |||
DirectWriteTypeLayout::createLayout (dummy, text, factories->directWriteFactory, | |||
factories->d2dFactory, factories->systemFonts); | |||
} | |||
#endif | |||
DirectWriteTypeLayout::createLayout (*this, text, factories.directWriteFactory, | |||
factories.d2dFactory, factories.systemFonts); | |||
DirectWriteTypeLayout::createLayout (*this, text, factories->directWriteFactory, | |||
factories->d2dFactory, factories->systemFonts); | |||
return true; | |||
} | |||
#else | |||
@@ -107,15 +107,9 @@ public: | |||
systemFonts = nullptr; | |||
} | |||
static const Direct2DFactories& getInstance() | |||
{ | |||
static Direct2DFactories instance; | |||
return instance; | |||
} | |||
ComSmartPtr <ID2D1Factory> d2dFactory; | |||
ComSmartPtr <IDWriteFactory> directWriteFactory; | |||
ComSmartPtr <IDWriteFontCollection> systemFonts; | |||
ComSmartPtr<ID2D1Factory> d2dFactory; | |||
ComSmartPtr<IDWriteFactory> directWriteFactory; | |||
ComSmartPtr<IDWriteFontCollection> systemFonts; | |||
private: | |||
DynamicLibrary direct2dDll, directWriteDll; | |||
@@ -255,6 +249,7 @@ public: | |||
IDWriteFontFace* getIDWriteFontFace() const noexcept { return dwFontFace; } | |||
private: | |||
SharedResourcePointer<Direct2DFactories> factories; | |||
ComSmartPtr<IDWriteFontFace> dwFontFace; | |||
float unitsToHeightScaleFactor, heightToPointsFactor, ascent; | |||
int designUnitsPerEm; | |||
@@ -176,17 +176,17 @@ StringArray Font::findAllTypefaceNames() | |||
StringArray results; | |||
#if JUCE_USE_DIRECTWRITE | |||
const Direct2DFactories& factories = Direct2DFactories::getInstance(); | |||
SharedResourcePointer<Direct2DFactories> factories; | |||
if (factories.systemFonts != nullptr) | |||
if (factories->systemFonts != nullptr) | |||
{ | |||
ComSmartPtr<IDWriteFontFamily> fontFamily; | |||
uint32 fontFamilyCount = 0; | |||
fontFamilyCount = factories.systemFonts->GetFontFamilyCount(); | |||
fontFamilyCount = factories->systemFonts->GetFontFamilyCount(); | |||
for (uint32 i = 0; i < fontFamilyCount; ++i) | |||
{ | |||
HRESULT hr = factories.systemFonts->GetFontFamily (i, fontFamily.resetAndGetPointerAddress()); | |||
HRESULT hr = factories->systemFonts->GetFontFamily (i, fontFamily.resetAndGetPointerAddress()); | |||
if (SUCCEEDED (hr)) | |||
results.addIfNotAlreadyThere (getFontFamilyName (fontFamily)); | |||
@@ -226,20 +226,20 @@ StringArray Font::findAllTypefaceStyles (const String& family) | |||
StringArray results; | |||
#if JUCE_USE_DIRECTWRITE | |||
const Direct2DFactories& factories = Direct2DFactories::getInstance(); | |||
SharedResourcePointer<Direct2DFactories> factories; | |||
if (factories.systemFonts != nullptr) | |||
if (factories->systemFonts != nullptr) | |||
{ | |||
BOOL fontFound = false; | |||
uint32 fontIndex = 0; | |||
HRESULT hr = factories.systemFonts->FindFamilyName (family.toWideCharPointer(), &fontIndex, &fontFound); | |||
HRESULT hr = factories->systemFonts->FindFamilyName (family.toWideCharPointer(), &fontIndex, &fontFound); | |||
if (! fontFound) | |||
fontIndex = 0; | |||
// Get the font family using the search results | |||
// Fonts like: Times New Roman, Times New Roman Bold, Times New Roman Italic are all in the same font family | |||
ComSmartPtr<IDWriteFontFamily> fontFamily; | |||
hr = factories.systemFonts->GetFontFamily (fontIndex, fontFamily.resetAndGetPointerAddress()); | |||
hr = factories->systemFonts->GetFontFamily (fontIndex, fontFamily.resetAndGetPointerAddress()); | |||
// Get the font faces | |||
ComSmartPtr<IDWriteFont> dwFont; | |||
@@ -619,11 +619,11 @@ const MAT2 WindowsTypeface::identityMatrix = { { 0, 1 }, { 0, 0 }, { 0, 0 }, { 0 | |||
Typeface::Ptr Typeface::createSystemTypefaceFor (const Font& font) | |||
{ | |||
#if JUCE_USE_DIRECTWRITE | |||
const Direct2DFactories& factories = Direct2DFactories::getInstance(); | |||
SharedResourcePointer<Direct2DFactories> factories; | |||
if (factories.systemFonts != nullptr) | |||
if (factories->systemFonts != nullptr) | |||
{ | |||
ScopedPointer<WindowsDirectWriteTypeface> wtf (new WindowsDirectWriteTypeface (font, factories.systemFonts)); | |||
ScopedPointer<WindowsDirectWriteTypeface> wtf (new WindowsDirectWriteTypeface (font, factories->systemFonts)); | |||
if (wtf->loadedOk()) | |||
return wtf.release(); | |||
@@ -30,6 +30,8 @@ Viewport::Viewport (const String& name) | |||
showHScrollbar (true), | |||
showVScrollbar (true), | |||
deleteContent (true), | |||
allowScrollingWithoutScrollbarV (false), | |||
allowScrollingWithoutScrollbarH (false), | |||
verticalScrollBar (true), | |||
horizontalScrollBar (false) | |||
{ | |||
@@ -234,31 +236,23 @@ void Viewport::updateVisibleArea() | |||
Point<int> visibleOrigin (-contentBounds.getPosition()); | |||
if (hBarVisible) | |||
{ | |||
horizontalScrollBar.setBounds (0, contentArea.getHeight(), contentArea.getWidth(), scrollbarWidth); | |||
horizontalScrollBar.setRangeLimits (0.0, contentBounds.getWidth()); | |||
horizontalScrollBar.setCurrentRange (visibleOrigin.x, contentArea.getWidth()); | |||
horizontalScrollBar.setSingleStepSize (singleStepX); | |||
horizontalScrollBar.cancelPendingUpdate(); | |||
} | |||
else if (canShowHBar) | |||
{ | |||
horizontalScrollBar.setBounds (0, contentArea.getHeight(), contentArea.getWidth(), scrollbarWidth); | |||
horizontalScrollBar.setRangeLimits (0.0, contentBounds.getWidth()); | |||
horizontalScrollBar.setCurrentRange (visibleOrigin.x, contentArea.getWidth()); | |||
horizontalScrollBar.setSingleStepSize (singleStepX); | |||
horizontalScrollBar.cancelPendingUpdate(); | |||
if (canShowHBar && ! hBarVisible) | |||
visibleOrigin.setX (0); | |||
} | |||
if (vBarVisible) | |||
{ | |||
verticalScrollBar.setBounds (contentArea.getWidth(), 0, scrollbarWidth, contentArea.getHeight()); | |||
verticalScrollBar.setRangeLimits (0.0, contentBounds.getHeight()); | |||
verticalScrollBar.setCurrentRange (visibleOrigin.y, contentArea.getHeight()); | |||
verticalScrollBar.setSingleStepSize (singleStepY); | |||
verticalScrollBar.cancelPendingUpdate(); | |||
} | |||
else if (canShowVBar) | |||
{ | |||
verticalScrollBar.setBounds (contentArea.getWidth(), 0, scrollbarWidth, contentArea.getHeight()); | |||
verticalScrollBar.setRangeLimits (0.0, contentBounds.getHeight()); | |||
verticalScrollBar.setCurrentRange (visibleOrigin.y, contentArea.getHeight()); | |||
verticalScrollBar.setSingleStepSize (singleStepY); | |||
verticalScrollBar.cancelPendingUpdate(); | |||
if (canShowVBar && ! vBarVisible) | |||
visibleOrigin.setY (0); | |||
} | |||
// Force the visibility *after* setting the ranges to avoid flicker caused by edge conditions in the numbers. | |||
horizontalScrollBar.setVisible (hBarVisible); | |||
@@ -301,8 +295,13 @@ void Viewport::setSingleStepSizes (const int stepX, const int stepY) | |||
} | |||
void Viewport::setScrollBarsShown (const bool showVerticalScrollbarIfNeeded, | |||
const bool showHorizontalScrollbarIfNeeded) | |||
const bool showHorizontalScrollbarIfNeeded, | |||
const bool allowVerticalScrollingWithoutScrollbar, | |||
const bool allowHorizontalScrollingWithoutScrollbar) | |||
{ | |||
allowScrollingWithoutScrollbarV = allowVerticalScrollingWithoutScrollbar; | |||
allowScrollingWithoutScrollbarH = allowHorizontalScrollingWithoutScrollbar; | |||
if (showVScrollbar != showVerticalScrollbarIfNeeded | |||
|| showHScrollbar != showHorizontalScrollbarIfNeeded) | |||
{ | |||
@@ -347,47 +346,44 @@ void Viewport::mouseWheelMove (const MouseEvent& e, const MouseWheelDetails& whe | |||
Component::mouseWheelMove (e, wheel); | |||
} | |||
static float rescaleMouseWheelDistance (float distance, int singleStepSize) noexcept | |||
{ | |||
if (distance == 0) | |||
return 0; | |||
distance *= 14.0f * singleStepSize; | |||
return distance < 0 ? jmin (distance, -1.0f) | |||
: jmax (distance, 1.0f); | |||
} | |||
bool Viewport::useMouseWheelMoveIfNeeded (const MouseEvent& e, const MouseWheelDetails& wheel) | |||
{ | |||
if (! (e.mods.isAltDown() || e.mods.isCtrlDown() || e.mods.isCommandDown())) | |||
{ | |||
const bool hasVertBar = verticalScrollBar.isVisible(); | |||
const bool hasHorzBar = horizontalScrollBar.isVisible(); | |||
const bool canScrollVert = (allowScrollingWithoutScrollbarV || verticalScrollBar.isVisible()); | |||
const bool canScrollHorz = (allowScrollingWithoutScrollbarH || horizontalScrollBar.isVisible()); | |||
if (hasHorzBar || hasVertBar) | |||
if (canScrollHorz || canScrollVert) | |||
{ | |||
float wheelIncrementX = wheel.deltaX; | |||
float wheelIncrementY = wheel.deltaY; | |||
if (wheelIncrementX != 0) | |||
{ | |||
wheelIncrementX *= 14.0f * singleStepX; | |||
wheelIncrementX = (wheelIncrementX < 0) ? jmin (wheelIncrementX, -1.0f) | |||
: jmax (wheelIncrementX, 1.0f); | |||
} | |||
if (wheelIncrementY != 0) | |||
{ | |||
wheelIncrementY *= 14.0f * singleStepY; | |||
wheelIncrementY = (wheelIncrementY < 0) ? jmin (wheelIncrementY, -1.0f) | |||
: jmax (wheelIncrementY, 1.0f); | |||
} | |||
float wheelIncrementX = rescaleMouseWheelDistance (wheel.deltaX, singleStepX); | |||
float wheelIncrementY = rescaleMouseWheelDistance (wheel.deltaY, singleStepY); | |||
Point<int> pos (getViewPosition()); | |||
if (wheelIncrementX != 0 && wheelIncrementY != 0 && hasHorzBar && hasVertBar) | |||
if (wheelIncrementX != 0 && wheelIncrementY != 0 && canScrollHorz && canScrollVert) | |||
{ | |||
pos.setX (pos.x - roundToInt (wheelIncrementX)); | |||
pos.setY (pos.y - roundToInt (wheelIncrementY)); | |||
} | |||
else if (hasHorzBar && (wheelIncrementX != 0 || e.mods.isShiftDown() || ! hasVertBar)) | |||
else if (canScrollHorz && (wheelIncrementX != 0 || e.mods.isShiftDown() || ! canScrollVert)) | |||
{ | |||
if (wheelIncrementX == 0 && ! hasVertBar) | |||
if (wheelIncrementX == 0 && ! canScrollVert) | |||
wheelIncrementX = wheelIncrementY; | |||
pos.setX (pos.x - roundToInt (wheelIncrementX)); | |||
} | |||
else if (hasVertBar && wheelIncrementY != 0) | |||
else if (canScrollVert && wheelIncrementY != 0) | |||
{ | |||
pos.setY (pos.y - roundToInt (wheelIncrementY)); | |||
} | |||
@@ -191,9 +191,15 @@ public: | |||
If set to false, the scrollbars won't ever appear. When true (the default) | |||
they will appear only when needed. | |||
The allowVerticalScrollingWithoutScrollbar parameters allow you to enable | |||
mouse-wheel scrolling even when there the scrollbars are hidden. When the | |||
scrollbars are visible, these parameters are ignored. | |||
*/ | |||
void setScrollBarsShown (bool showVerticalScrollbarIfNeeded, | |||
bool showHorizontalScrollbarIfNeeded); | |||
bool showHorizontalScrollbarIfNeeded, | |||
bool allowVerticalScrollingWithoutScrollbar = false, | |||
bool allowHorizontalScrollingWithoutScrollbar = false); | |||
/** True if the vertical scrollbar is enabled. | |||
@see setScrollBarsShown | |||
@@ -258,9 +264,9 @@ private: | |||
int scrollBarThickness; | |||
int singleStepX, singleStepY; | |||
bool showHScrollbar, showVScrollbar, deleteContent; | |||
bool allowScrollingWithoutScrollbarV, allowScrollingWithoutScrollbarH; | |||
Component contentHolder; | |||
ScrollBar verticalScrollBar; | |||
ScrollBar horizontalScrollBar; | |||
ScrollBar verticalScrollBar, horizontalScrollBar; | |||
Point<int> viewportPosToCompPos (Point<int>) const; | |||
void updateVisibleArea(); | |||
@@ -62,7 +62,7 @@ public: | |||
gapAroundColourSpaceComponent indicates how much of a gap to put around the | |||
colourspace and hue selector components. | |||
*/ | |||
ColourSelector (int sectionsToShow = (showAlphaChannel | showColourAtTop | showSliders | showColourspace), | |||
ColourSelector (int flags = (showAlphaChannel | showColourAtTop | showSliders | showColourspace), | |||
int edgeGap = 4, | |||
int gapAroundColourSpaceComponent = 7); | |||
@@ -79,8 +79,7 @@ public: | |||
*/ | |||
Colour getCurrentColour() const; | |||
/** Changes the colour that is currently being shown. | |||
*/ | |||
/** Changes the colour that is currently being shown. */ | |||
void setCurrentColour (Colour newColour); | |||
//============================================================================== | |||
@@ -22,7 +22,6 @@ | |||
============================================================================== | |||
*/ | |||
struct NSViewResizeWatcher | |||
{ | |||
NSViewResizeWatcher() : callback (nil) {} | |||