1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00
This commit is contained in:
jules 2008-02-28 16:47:56 +00:00
parent 1418dcc0a4
commit 370b00e338
6 changed files with 2926 additions and 2886 deletions

View file

@ -72,6 +72,7 @@ const tchar* File::separatorString = T("\\");
//==============================================================================
#if JUCE_ENABLE_WIN98_COMPATIBILITY
UNICODE_FUNCTION (GetFileAttributesW, DWORD, (LPCWSTR))
UNICODE_FUNCTION (GetFileAttributesExW, BOOL, (LPCWSTR, GET_FILEEX_INFO_LEVELS, LPVOID))
UNICODE_FUNCTION (SetFileAttributesW, BOOL, (LPCWSTR, DWORD))
UNICODE_FUNCTION (RemoveDirectoryW, BOOL, (LPCWSTR))
UNICODE_FUNCTION (DeleteFileW, BOOL, (LPCWSTR))
@ -98,6 +99,7 @@ void juce_initialiseUnicodeFileFunctions() throw()
HMODULE h = GetModuleHandleA ("kernel32.dll");
UNICODE_FUNCTION_LOAD (GetFileAttributesW)
UNICODE_FUNCTION_LOAD (GetFileAttributesExW)
UNICODE_FUNCTION_LOAD (SetFileAttributesW)
UNICODE_FUNCTION_LOAD (RemoveDirectoryW)
UNICODE_FUNCTION_LOAD (DeleteFileW)
@ -133,8 +135,8 @@ bool juce_fileExists (const String& fileName,
const DWORD attr = GetFileAttributesW (fileName);
#endif
return (dontCountDirectories) ? ((attr & FILE_ATTRIBUTE_DIRECTORY) == 0)
: (attr != 0xffffffff);
return dontCountDirectories ? ((attr & FILE_ATTRIBUTE_DIRECTORY) == 0)
: (attr != 0xffffffff);
}
bool juce_isDirectory (const String& fileName) throw()
@ -346,16 +348,17 @@ void juce_fileFlush (void* handle) throw()
int64 juce_getFileSize (const String& fileName) throw()
{
void* const handle = juce_fileOpen (fileName, false);
WIN32_FILE_ATTRIBUTE_DATA attributes;
if (handle != 0)
#if JUCE_ENABLE_WIN98_COMPATIBILITY
if (wGetFileAttributesExW != 0 ? wGetFileAttributesExW (fileName, GetFileExInfoStandard, &attributes)
: GetFileAttributesEx (fileName, GetFileExInfoStandard, &attributes))
#else
if (GetFileAttributesExW (fileName, GetFileExInfoStandard, &attributes))
#endif
{
LARGE_INTEGER li;
li.LowPart = GetFileSize (handle, (LPDWORD) &li.HighPart);
juce_fileClose (handle);
if (li.LowPart != INVALID_FILE_SIZE || GetLastError() != NO_ERROR)
return li.QuadPart;
return (((int64) attributes.nFileSizeHigh) << 32)
| attributes.nFileSizeLow;
}
return 0;
@ -388,21 +391,23 @@ void juce_getFileTimes (const String& fileName,
int64& accessTime,
int64& creationTime) throw()
{
creationTime = accessTime = modificationTime = 0;
void* const h = juce_fileOpen (fileName, false);
WIN32_FILE_ATTRIBUTE_DATA attributes;
if (h != 0)
#if JUCE_ENABLE_WIN98_COMPATIBILITY
if (wGetFileAttributesExW != 0 ? wGetFileAttributesExW (fileName, GetFileExInfoStandard, &attributes)
: GetFileAttributesEx (fileName, GetFileExInfoStandard, &attributes))
#else
if (GetFileAttributesExW (fileName, GetFileExInfoStandard, &attributes))
#endif
{
FILETIME m, a, c;
if (GetFileTime ((HANDLE) h, &c, &a, &m))
{
creationTime = fileTimeToTime (&c);
accessTime = fileTimeToTime (&a);
modificationTime = fileTimeToTime (&m);
}
juce_fileClose (h);
modificationTime = fileTimeToTime (&attributes.ftLastWriteTime);
creationTime = fileTimeToTime (&attributes.ftCreationTime);
accessTime = fileTimeToTime (&attributes.ftLastAccessTime);
}
else
{
creationTime = accessTime = modificationTime = 0;
}
}

View file

@ -445,7 +445,7 @@ static void updateKeyModifiers() throw()
currentModifiers |= ModifierKeys::altModifier;
if ((GetKeyState (VK_RMENU) & 0x8000) != 0)
currentModifiers &= ~(ModifierKeys::ctrlModifier | ModifierKeys::altModifier);
currentModifiers &= ~(ModifierKeys::ctrlModifier | ModifierKeys::altModifier);
}
void ModifierKeys::updateCurrentModifiers() throw()
@ -1739,7 +1739,7 @@ private:
BYTE keyState[256];
GetKeyboardState (keyState);
WCHAR unicodeChar[32];
const DWORD converted = wToUnicode (virtualKey, virtualScanCode, keyState,
const DWORD converted = wToUnicode (virtualKey, virtualScanCode, keyState,
unicodeChar, 32, 0);
if (converted > 0)
textChar = unicodeChar[0];
@ -1752,7 +1752,7 @@ private:
BYTE keyState[256];
GetKeyboardState (keyState);
WCHAR unicodeChar[32];
const DWORD converted = ToUnicode (virtualKey, virtualScanCode, keyState,
const DWORD converted = ToUnicode (virtualKey, virtualScanCode, keyState,
unicodeChar, 32, 0);
if (converted > 0)
textChar = unicodeChar[0];

View file

@ -136,6 +136,12 @@ public:
outDataSize = sizeof (void*);
return noErr;
}
else if (inID == kAudioUnitProperty_OfflineRender)
{
outWritable = true;
outDataSize = sizeof (UInt32);
return noErr;
}
}
return JuceAUBaseClass::GetPropertyInfo (inID, inScope, inElement, outDataSize, outWritable);
@ -150,7 +156,12 @@ public:
{
if (inID == juceFilterObjectPropertyID)
{
*((void**) outData) = (void*) juceFilter;
*(void**) outData = (void*) juceFilter;
return noErr;
}
else if (inID == kAudioUnitProperty_OfflineRender)
{
*(UInt32*) outData = (juceFilter != 0 && juceFilter->isNonRealtime()) ? 1 : 0;
return noErr;
}
}
@ -158,6 +169,23 @@ public:
return JuceAUBaseClass::GetProperty (inID, inScope, inElement, outData);
}
ComponentResult SetProperty (AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
const void * inData,
UInt32 inDataSize)
{
if (inScope == kAudioUnitScope_Global && inID == kAudioUnitProperty_OfflineRender)
{
if (juceFilter != 0)
juceFilter->setNonRealtime ((*(UInt32*) inData) != 0);
return noErr;
}
return MusicDeviceBase::SetProperty (inID, inScope, inElement, inData, inDataSize);
}
ComponentResult SaveState (CFPropertyListRef* outData)
{
ComponentResult err = JuceAUBaseClass::SaveState (outData);
@ -176,7 +204,7 @@ public:
if (state.getSize() > 0)
{
CFDataRef ourState = CFDataCreate (kCFAllocatorDefault, (const uint8*) state, state.getSize());
CFDataRef ourState = CFDataCreate (kCFAllocatorDefault, (const UInt8*) state.getData(), state.getSize());
CFDictionarySetValue (dict, CFSTR("jucePluginState"), ourState);
CFRelease (ourState);
}
@ -740,7 +768,7 @@ protected:
{
presets[i].presetNumber = i;
presets[i].presetName = PlatformUtilities::juceStringToCFString (juceFilter->getProgramName (i));
CFArrayAppendValue (presetsArray, presets + i);
}
@ -766,7 +794,7 @@ protected:
SetAFactoryPresetAsCurrent (chosenPreset);
return noErr;
}
}
//==============================================================================
private:

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -33,6 +33,7 @@
#pragma warning (disable: 4514)
#pragma warning (push)
#endif
#include <locale>
#include "../basics/juce_StandardHeader.h"
@ -53,6 +54,12 @@ BEGIN_JUCE_NAMESPACE
static const char* const emptyCharString = "\0\0\0\0JUCE";
static const int safeEmptyStringRefCount = 0x3fffffff;
String::InternalRefCountedStringHolder String::emptyString = { safeEmptyStringRefCount, 0, { 0 } };
static tchar decimalPoint = T('.');
void juce_initialiseStrings()
{
decimalPoint = String::fromUTF8 ((const uint8*) localeconv()->decimal_point) [0];
}
//==============================================================================
void String::deleteInternal() throw()
@ -405,7 +412,7 @@ void String::doubleToStringWithDecPlaces (double n, int numDecPlaces) throw()
while (numDecPlaces >= 0 || v > 0)
{
if (numDecPlaces == 0)
*--t = T('.');
*--t = decimalPoint;
*--t = (tchar) (T('0') + (v % 10));
@ -1291,7 +1298,7 @@ void String::vprintf (const tchar* const pf, va_list& args) throw()
bufSize += 256;
buf = (tchar*) juce_malloc (bufSize * sizeof (tchar));
}
while (bufSize < 65536); // this is a sanity check to avoid situations where vprintf repeatedly
while (bufSize < 65536); // this is a sanity check to avoid situations where vprintf repeatedly
// returns -1 because of an error rather than because it needs more space.
if (buf != stackBuf)