@@ -27,7 +27,7 @@ | |||
#include "../jucer_JucerDocument.h" | |||
#include "../jucer_UtilityFunctions.h" | |||
#include "../../Project Saving/jucer_ResourceFile.h" | |||
//============================================================================== | |||
class JucerFillType | |||
@@ -147,7 +147,7 @@ public: | |||
case imageBrush: | |||
{ | |||
const String imageVariable ("cachedImage_" + imageResourceName + "_" + String (code.getUniqueSuffix())); | |||
const String imageVariable ("cachedImage_" + imageResourceName.replace ("::", "_") + "_" + String (code.getUniqueSuffix())); | |||
code.addImageResourceLoader (imageVariable, imageResourceName); | |||
@@ -191,7 +191,7 @@ public: | |||
+ ", 1=" + gradCol2.toString(); | |||
case imageBrush: | |||
return "image: " + imageResourceName | |||
return "image: " + imageResourceName.replaceCharacter (':', '#') | |||
+ ", " | |||
+ String (imageOpacity) | |||
+ ", " | |||
@@ -236,7 +236,7 @@ public: | |||
else if (toks[0] == "image") | |||
{ | |||
mode = imageBrush; | |||
imageResourceName = toks[1]; | |||
imageResourceName = toks[1].replaceCharacter ('#', ':'); | |||
imageOpacity = toks[2].getDoubleValue(); | |||
imageAnchor= RelativePositionedRectangle(); | |||
imageAnchor.rect = PositionedRectangle (toks[3]); | |||
@@ -340,7 +340,30 @@ private: | |||
if (image.isNull()) | |||
{ | |||
if (document != nullptr) | |||
image = document->getResources().getImageFromCache (imageResourceName); | |||
{ | |||
if (imageResourceName.contains ("::")) | |||
{ | |||
if (Project* project = document->getCppDocument().getProject()) | |||
{ | |||
ResourceFile resourceFile (*project); | |||
for (int i = 0; i < resourceFile.getNumFiles(); ++i) | |||
{ | |||
const File& file = resourceFile.getFile(i); | |||
if (imageResourceName == resourceFile.getClassName() + "::" + resourceFile.getDataVariableFor (file)) | |||
{ | |||
image = ImageCache::getFromFile (file); | |||
break; | |||
} | |||
} | |||
} | |||
} | |||
else | |||
{ | |||
image = document->getResources().getImageFromCache (imageResourceName); | |||
} | |||
} | |||
if (image.isNull()) | |||
{ | |||
@@ -25,6 +25,7 @@ | |||
#ifndef __JUCER_IMAGERESOURCEPROPERTY_JUCEHEADER__ | |||
#define __JUCER_IMAGERESOURCEPROPERTY_JUCEHEADER__ | |||
#include "../../Project Saving/jucer_ResourceFile.h" | |||
//============================================================================== | |||
/** | |||
@@ -44,12 +45,7 @@ public: | |||
element (e), document (doc), | |||
allowChoiceOfNoResource (allowChoiceOfNoResource_) | |||
{ | |||
choices.add ("-- create a new image resource -- "); | |||
choices.add (String::empty); | |||
if (allowChoiceOfNoResource_) | |||
choices.add ("<< none >>"); | |||
choices.addArray (doc.getResources().getResourceNames()); | |||
refreshChoices(); | |||
doc.addChangeListener (this); | |||
} | |||
@@ -59,13 +55,7 @@ public: | |||
element (e), document (*e->getDocument()), | |||
allowChoiceOfNoResource (allowChoiceOfNoResource_) | |||
{ | |||
choices.add ("-- create a new image resource -- "); | |||
choices.add (String::empty); | |||
if (allowChoiceOfNoResource_) | |||
choices.add ("<< none >>"); | |||
choices.addArray (document.getResources().getResourceNames()); | |||
refreshChoices(); | |||
document.addChangeListener (this); | |||
} | |||
@@ -95,7 +85,7 @@ public: | |||
} | |||
else | |||
{ | |||
if (choices[newIndex] == "<< none >>" && allowChoiceOfNoResource) | |||
if (choices[newIndex] == getNoneText() && allowChoiceOfNoResource) | |||
setResource (String::empty); | |||
else | |||
setResource (choices [newIndex]); | |||
@@ -115,6 +105,36 @@ public: | |||
refresh(); | |||
} | |||
void refreshChoices() | |||
{ | |||
choices.clear(); | |||
choices.add ("-- create a new image resource -- "); | |||
choices.add (String::empty); | |||
if (allowChoiceOfNoResource) | |||
choices.add (getNoneText()); | |||
choices.addArray (document.getResources().getResourceNames()); | |||
const SourceCodeDocument& cpp = document.getCppDocument(); | |||
if (Project* project = cpp.getProject()) | |||
{ | |||
ResourceFile resourceFile (*project); | |||
for (int i = 0; i < resourceFile.getNumFiles(); ++i) | |||
{ | |||
const File& file = resourceFile.getFile(i); | |||
if (ImageFileFormat::findImageFormatForFileExtension(file)) | |||
choices.add (resourceFile.getClassName() + "::" + resourceFile.getDataVariableFor (file)); | |||
} | |||
} | |||
} | |||
const char* getNoneText() noexcept { return "<< none >>"; } | |||
protected: | |||
mutable Component::SafePointer<ElementType> element; | |||
JucerDocument& document; | |||
@@ -100,7 +100,7 @@ public: | |||
{ | |||
if (dynamic_cast <const DrawableImage*> (getDrawable()) != 0) | |||
{ | |||
const String imageVariable ("cachedImage_" + resourceName); | |||
const String imageVariable ("cachedImage_" + resourceName.replace ("::", "_")); | |||
code.addImageResourceLoader (imageVariable, resourceName); | |||
@@ -46,6 +46,8 @@ public: | |||
String getSizeVariableFor (const File& file) const; | |||
int getNumFiles() const { return files.size(); } | |||
const File& getFile (int index) const { return files.getReference (index); } | |||
int64 getTotalDataSize() const; | |||
bool write (Array<File>& filesCreated, int maxFileSize); | |||