Browse Source

Small fixes for ComboBox items and AudioThumbnail. Reorganisation of all the RelativeCoordinate classes into their own folder. New RelativeCoordinatePositionerBase class and internal work on DrawablePath.

tags/2021-05-28
Julian Storer 15 years ago
parent
commit
e0ca6d6ca4
42 changed files with 3669 additions and 2579 deletions
  1. +42
    -12
      Builds/Linux/Makefile
  2. +45
    -13
      Builds/MacOSX/Juce.xcodeproj/project.pbxproj
  3. +16
    -4
      Builds/VisualStudio2005/Juce.vcproj
  4. +16
    -4
      Builds/VisualStudio2008/Juce.vcproj
  5. +16
    -4
      Builds/VisualStudio2008_DLL/Juce.vcproj
  6. +14
    -4
      Builds/VisualStudio2010/Juce.vcxproj
  7. +45
    -12
      Builds/VisualStudio2010/Juce.vcxproj.filters
  8. +45
    -13
      Builds/iPhone/Juce.xcodeproj/project.pbxproj
  9. +30
    -8
      Juce.jucer
  10. +7
    -2
      amalgamation/juce_amalgamated_template.cpp
  11. +725
    -534
      juce_amalgamated.cpp
  12. +579
    -456
      juce_amalgamated.h
  13. +5
    -0
      src/audio/audio_file_formats/juce_AudioThumbnail.cpp
  14. +1
    -1
      src/core/juce_StandardHeader.h
  15. +23
    -2
      src/gui/components/controls/juce_ComboBox.cpp
  16. +1
    -0
      src/gui/components/controls/juce_ComboBox.h
  17. +0
    -0
      src/gui/components/positioning/juce_MarkerList.cpp
  18. +1
    -1
      src/gui/components/positioning/juce_MarkerList.h
  19. +176
    -0
      src/gui/components/positioning/juce_RelativeCoordinate.cpp
  20. +138
    -0
      src/gui/components/positioning/juce_RelativeCoordinate.h
  21. +279
    -0
      src/gui/components/positioning/juce_RelativeCoordinatePositioner.cpp
  22. +83
    -0
      src/gui/components/positioning/juce_RelativeCoordinatePositioner.h
  23. +133
    -0
      src/gui/components/positioning/juce_RelativeParallelogram.cpp
  24. +66
    -0
      src/gui/components/positioning/juce_RelativeParallelogram.h
  25. +111
    -0
      src/gui/components/positioning/juce_RelativePoint.cpp
  26. +98
    -0
      src/gui/components/positioning/juce_RelativePoint.h
  27. +306
    -0
      src/gui/components/positioning/juce_RelativePointPath.cpp
  28. +196
    -0
      src/gui/components/positioning/juce_RelativePointPath.h
  29. +189
    -0
      src/gui/components/positioning/juce_RelativeRectangle.cpp
  30. +107
    -0
      src/gui/components/positioning/juce_RelativeRectangle.h
  31. +1
    -1
      src/gui/graphics/drawables/juce_Drawable.h
  32. +3
    -1
      src/gui/graphics/drawables/juce_DrawableComposite.h
  33. +1
    -0
      src/gui/graphics/drawables/juce_DrawableImage.h
  34. +135
    -21
      src/gui/graphics/drawables/juce_DrawablePath.cpp
  35. +11
    -1
      src/gui/graphics/drawables/juce_DrawablePath.h
  36. +1
    -0
      src/gui/graphics/drawables/juce_DrawableRectangle.h
  37. +1
    -0
      src/gui/graphics/drawables/juce_DrawableShape.h
  38. +1
    -0
      src/gui/graphics/drawables/juce_DrawableText.h
  39. +0
    -1017
      src/gui/graphics/geometry/juce_RelativeCoordinate.cpp
  40. +0
    -462
      src/gui/graphics/geometry/juce_RelativeCoordinate.h
  41. +21
    -6
      src/juce_app_includes.h
  42. +1
    -0
      src/text/juce_XmlElement.h

+ 42
- 12
Builds/Linux/Makefile View File

@@ -174,7 +174,6 @@ OBJECTS := \
$(OBJDIR)/juce_ComponentBuilder_2aa6c5a.o \ $(OBJDIR)/juce_ComponentBuilder_2aa6c5a.o \
$(OBJDIR)/juce_ComponentMovementWatcher_cbb3e7cc.o \ $(OBJDIR)/juce_ComponentMovementWatcher_cbb3e7cc.o \
$(OBJDIR)/juce_GroupComponent_456e237a.o \ $(OBJDIR)/juce_GroupComponent_456e237a.o \
$(OBJDIR)/juce_MarkerList_aea878b4.o \
$(OBJDIR)/juce_MultiDocumentPanel_50e05aac.o \ $(OBJDIR)/juce_MultiDocumentPanel_50e05aac.o \
$(OBJDIR)/juce_ResizableBorderComponent_7f4f2182.o \ $(OBJDIR)/juce_ResizableBorderComponent_7f4f2182.o \
$(OBJDIR)/juce_ResizableCornerComponent_1cac2df9.o \ $(OBJDIR)/juce_ResizableCornerComponent_1cac2df9.o \
@@ -197,6 +196,13 @@ OBJECTS := \
$(OBJDIR)/juce_MouseHoverDetector_d4af7a00.o \ $(OBJDIR)/juce_MouseHoverDetector_d4af7a00.o \
$(OBJDIR)/juce_MouseInputSource_8904aa23.o \ $(OBJDIR)/juce_MouseInputSource_8904aa23.o \
$(OBJDIR)/juce_MouseListener_eb73f8a0.o \ $(OBJDIR)/juce_MouseListener_eb73f8a0.o \
$(OBJDIR)/juce_MarkerList_2fbb4ef.o \
$(OBJDIR)/juce_RelativeCoordinate_ab2eee5b.o \
$(OBJDIR)/juce_RelativeCoordinatePositioner_c1352791.o \
$(OBJDIR)/juce_RelativeParallelogram_5d17dbe6.o \
$(OBJDIR)/juce_RelativePoint_9d2cc957.o \
$(OBJDIR)/juce_RelativePointPath_a4fed61c.o \
$(OBJDIR)/juce_RelativeRectangle_cc5440b6.o \
$(OBJDIR)/juce_BooleanPropertyComponent_92b54aa5.o \ $(OBJDIR)/juce_BooleanPropertyComponent_92b54aa5.o \
$(OBJDIR)/juce_ButtonPropertyComponent_3675d6bb.o \ $(OBJDIR)/juce_ButtonPropertyComponent_3675d6bb.o \
$(OBJDIR)/juce_ChoicePropertyComponent_b9b44bac.o \ $(OBJDIR)/juce_ChoicePropertyComponent_b9b44bac.o \
@@ -255,7 +261,6 @@ OBJECTS := \
$(OBJDIR)/juce_PathStrokeType_506dcb86.o \ $(OBJDIR)/juce_PathStrokeType_506dcb86.o \
$(OBJDIR)/juce_PositionedRectangle_1b6e8982.o \ $(OBJDIR)/juce_PositionedRectangle_1b6e8982.o \
$(OBJDIR)/juce_RectangleList_b6ae7ee8.o \ $(OBJDIR)/juce_RectangleList_b6ae7ee8.o \
$(OBJDIR)/juce_RelativeCoordinate_23fb9d3.o \
$(OBJDIR)/juce_GIFLoader_61887b90.o \ $(OBJDIR)/juce_GIFLoader_61887b90.o \
$(OBJDIR)/juce_JPEGLoader_412d2ccc.o \ $(OBJDIR)/juce_JPEGLoader_412d2ccc.o \
$(OBJDIR)/juce_PNGLoader_7f80a3b5.o \ $(OBJDIR)/juce_PNGLoader_7f80a3b5.o \
@@ -1039,11 +1044,6 @@ $(OBJDIR)/juce_GroupComponent_456e237a.o: ../../src/gui/components/layout/juce_G
@echo "Compiling juce_GroupComponent.cpp" @echo "Compiling juce_GroupComponent.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/juce_MarkerList_aea878b4.o: ../../src/gui/components/layout/juce_MarkerList.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling juce_MarkerList.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/juce_MultiDocumentPanel_50e05aac.o: ../../src/gui/components/layout/juce_MultiDocumentPanel.cpp $(OBJDIR)/juce_MultiDocumentPanel_50e05aac.o: ../../src/gui/components/layout/juce_MultiDocumentPanel.cpp
-@mkdir -p $(OBJDIR) -@mkdir -p $(OBJDIR)
@echo "Compiling juce_MultiDocumentPanel.cpp" @echo "Compiling juce_MultiDocumentPanel.cpp"
@@ -1154,6 +1154,41 @@ $(OBJDIR)/juce_MouseListener_eb73f8a0.o: ../../src/gui/components/mouse/juce_Mou
@echo "Compiling juce_MouseListener.cpp" @echo "Compiling juce_MouseListener.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/juce_MarkerList_2fbb4ef.o: ../../src/gui/components/positioning/juce_MarkerList.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling juce_MarkerList.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/juce_RelativeCoordinate_ab2eee5b.o: ../../src/gui/components/positioning/juce_RelativeCoordinate.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling juce_RelativeCoordinate.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/juce_RelativeCoordinatePositioner_c1352791.o: ../../src/gui/components/positioning/juce_RelativeCoordinatePositioner.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling juce_RelativeCoordinatePositioner.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/juce_RelativeParallelogram_5d17dbe6.o: ../../src/gui/components/positioning/juce_RelativeParallelogram.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling juce_RelativeParallelogram.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/juce_RelativePoint_9d2cc957.o: ../../src/gui/components/positioning/juce_RelativePoint.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling juce_RelativePoint.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/juce_RelativePointPath_a4fed61c.o: ../../src/gui/components/positioning/juce_RelativePointPath.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling juce_RelativePointPath.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/juce_RelativeRectangle_cc5440b6.o: ../../src/gui/components/positioning/juce_RelativeRectangle.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling juce_RelativeRectangle.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/juce_BooleanPropertyComponent_92b54aa5.o: ../../src/gui/components/properties/juce_BooleanPropertyComponent.cpp $(OBJDIR)/juce_BooleanPropertyComponent_92b54aa5.o: ../../src/gui/components/properties/juce_BooleanPropertyComponent.cpp
-@mkdir -p $(OBJDIR) -@mkdir -p $(OBJDIR)
@echo "Compiling juce_BooleanPropertyComponent.cpp" @echo "Compiling juce_BooleanPropertyComponent.cpp"
@@ -1444,11 +1479,6 @@ $(OBJDIR)/juce_RectangleList_b6ae7ee8.o: ../../src/gui/graphics/geometry/juce_Re
@echo "Compiling juce_RectangleList.cpp" @echo "Compiling juce_RectangleList.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/juce_RelativeCoordinate_23fb9d3.o: ../../src/gui/graphics/geometry/juce_RelativeCoordinate.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling juce_RelativeCoordinate.cpp"
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/juce_GIFLoader_61887b90.o: ../../src/gui/graphics/imaging/image_file_formats/juce_GIFLoader.cpp $(OBJDIR)/juce_GIFLoader_61887b90.o: ../../src/gui/graphics/imaging/image_file_formats/juce_GIFLoader.cpp
-@mkdir -p $(OBJDIR) -@mkdir -p $(OBJDIR)
@echo "Compiling juce_GIFLoader.cpp" @echo "Compiling juce_GIFLoader.cpp"


+ 45
- 13
Builds/MacOSX/Juce.xcodeproj/project.pbxproj View File

@@ -143,7 +143,6 @@
9AA76460DA7D34CE6A69E2B1 = { isa = PBXBuildFile; fileRef = 45E5EE9E0173683D721FABDA; }; 9AA76460DA7D34CE6A69E2B1 = { isa = PBXBuildFile; fileRef = 45E5EE9E0173683D721FABDA; };
4E81BC4A50CF1883F529E152 = { isa = PBXBuildFile; fileRef = F8FCCCE06D31FEF697FCD80D; }; 4E81BC4A50CF1883F529E152 = { isa = PBXBuildFile; fileRef = F8FCCCE06D31FEF697FCD80D; };
8FBB6BF0C5406E1BA481CFEF = { isa = PBXBuildFile; fileRef = A6AD7357F905309D1B461EB7; }; 8FBB6BF0C5406E1BA481CFEF = { isa = PBXBuildFile; fileRef = A6AD7357F905309D1B461EB7; };
260EF664D324038F9DC6C35B = { isa = PBXBuildFile; fileRef = F665A039C3A85EFDAA3E1245; };
F5F3F25D9F377128DC74D95B = { isa = PBXBuildFile; fileRef = FF046140CCF1EDB0DFF80178; }; F5F3F25D9F377128DC74D95B = { isa = PBXBuildFile; fileRef = FF046140CCF1EDB0DFF80178; };
C64A2BF05224582134872415 = { isa = PBXBuildFile; fileRef = A95F42C5CB0C2E5052B31568; }; C64A2BF05224582134872415 = { isa = PBXBuildFile; fileRef = A95F42C5CB0C2E5052B31568; };
0A9C9486A6B31F21B1472D2B = { isa = PBXBuildFile; fileRef = A31221E2A50CCE9DF06B5F4B; }; 0A9C9486A6B31F21B1472D2B = { isa = PBXBuildFile; fileRef = A31221E2A50CCE9DF06B5F4B; };
@@ -166,6 +165,13 @@
968B31D8101A937444C6DFB3 = { isa = PBXBuildFile; fileRef = 2531C57B0C861A48E3F3A673; }; 968B31D8101A937444C6DFB3 = { isa = PBXBuildFile; fileRef = 2531C57B0C861A48E3F3A673; };
E064E329741F36C329989203 = { isa = PBXBuildFile; fileRef = 441257DD380138C03568FCBD; }; E064E329741F36C329989203 = { isa = PBXBuildFile; fileRef = 441257DD380138C03568FCBD; };
61E659ADBF9D832ED8F24540 = { isa = PBXBuildFile; fileRef = 2886656DF7ACC9DDC888827F; }; 61E659ADBF9D832ED8F24540 = { isa = PBXBuildFile; fileRef = 2886656DF7ACC9DDC888827F; };
9379C833B875207E5DFC5A3F = { isa = PBXBuildFile; fileRef = 82DFF1BD3665DC32672FCCE8; };
F1A6C2E3226F87860BFC4EBC = { isa = PBXBuildFile; fileRef = D39C0B853C3EBBBD11E7C71E; };
144872E56AED1981C0973B24 = { isa = PBXBuildFile; fileRef = D31704DAB806B6AF3ED52DC7; };
95648DF5676EBEF57009D09A = { isa = PBXBuildFile; fileRef = 243EF1A31A779413BC2D5B98; };
2FE59D80851A0A392EF2F923 = { isa = PBXBuildFile; fileRef = 36BB6DDF702EC9B3DAC851FF; };
621D2E6CDA267030405166C2 = { isa = PBXBuildFile; fileRef = 9DA988F1D7CE29E0DFED7EF0; };
90347B7C32ACE8A11FC1B708 = { isa = PBXBuildFile; fileRef = 072D77C3834B1B3FB77F277B; };
FAC87D81FE5168E37645A113 = { isa = PBXBuildFile; fileRef = 1C3FFBA02AE51EDD72A6250B; }; FAC87D81FE5168E37645A113 = { isa = PBXBuildFile; fileRef = 1C3FFBA02AE51EDD72A6250B; };
E5BB4B5EBFE206E09D0E6E10 = { isa = PBXBuildFile; fileRef = C45E7E6B6E45DEFBF80940DD; }; E5BB4B5EBFE206E09D0E6E10 = { isa = PBXBuildFile; fileRef = C45E7E6B6E45DEFBF80940DD; };
1906C642BF6CA67821512855 = { isa = PBXBuildFile; fileRef = ECCBF2452804ECB2D5B4BC50; }; 1906C642BF6CA67821512855 = { isa = PBXBuildFile; fileRef = ECCBF2452804ECB2D5B4BC50; };
@@ -224,7 +230,6 @@
E7C9FAA5F8A4AEDAD8A8CC1D = { isa = PBXBuildFile; fileRef = 9D3F1BAB1D48DDECB9F35916; }; E7C9FAA5F8A4AEDAD8A8CC1D = { isa = PBXBuildFile; fileRef = 9D3F1BAB1D48DDECB9F35916; };
DC4BB8AFC054ECD4141B47CC = { isa = PBXBuildFile; fileRef = 11D8021D49B895410A836486; }; DC4BB8AFC054ECD4141B47CC = { isa = PBXBuildFile; fileRef = 11D8021D49B895410A836486; };
084C9F2D4F78134CB1EFE676 = { isa = PBXBuildFile; fileRef = 1B170F70AF8AA0A39074F671; }; 084C9F2D4F78134CB1EFE676 = { isa = PBXBuildFile; fileRef = 1B170F70AF8AA0A39074F671; };
1110DD0779F44F625316D083 = { isa = PBXBuildFile; fileRef = 2AA4DDD1F26188A570F4DBE2; };
4DAD08CD3A688747C9CA237B = { isa = PBXBuildFile; fileRef = 0F1C5770B363EF7DF64A876A; }; 4DAD08CD3A688747C9CA237B = { isa = PBXBuildFile; fileRef = 0F1C5770B363EF7DF64A876A; };
60FE8BFA252E3EF2D60B77AD = { isa = PBXBuildFile; fileRef = 6619D27E74F623B1E8CE8F71; }; 60FE8BFA252E3EF2D60B77AD = { isa = PBXBuildFile; fileRef = 6619D27E74F623B1E8CE8F71; };
C592CC923C5495467EF05D48 = { isa = PBXBuildFile; fileRef = EAF0F2EAB230F7539B91A7FB; }; C592CC923C5495467EF05D48 = { isa = PBXBuildFile; fileRef = EAF0F2EAB230F7539B91A7FB; };
@@ -667,8 +672,6 @@
44CDA79090B115C3B62A2168 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ComponentMovementWatcher.h; path = ../../src/gui/components/layout/juce_ComponentMovementWatcher.h; sourceTree = SOURCE_ROOT; }; 44CDA79090B115C3B62A2168 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ComponentMovementWatcher.h; path = ../../src/gui/components/layout/juce_ComponentMovementWatcher.h; sourceTree = SOURCE_ROOT; };
A6AD7357F905309D1B461EB7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_GroupComponent.cpp; path = ../../src/gui/components/layout/juce_GroupComponent.cpp; sourceTree = SOURCE_ROOT; }; A6AD7357F905309D1B461EB7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_GroupComponent.cpp; path = ../../src/gui/components/layout/juce_GroupComponent.cpp; sourceTree = SOURCE_ROOT; };
E9242E8425497D889C764C66 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_GroupComponent.h; path = ../../src/gui/components/layout/juce_GroupComponent.h; sourceTree = SOURCE_ROOT; }; E9242E8425497D889C764C66 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_GroupComponent.h; path = ../../src/gui/components/layout/juce_GroupComponent.h; sourceTree = SOURCE_ROOT; };
F665A039C3A85EFDAA3E1245 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MarkerList.cpp; path = ../../src/gui/components/layout/juce_MarkerList.cpp; sourceTree = SOURCE_ROOT; };
8A9F1A98C0C96BF655F606AB = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MarkerList.h; path = ../../src/gui/components/layout/juce_MarkerList.h; sourceTree = SOURCE_ROOT; };
FF046140CCF1EDB0DFF80178 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MultiDocumentPanel.cpp; path = ../../src/gui/components/layout/juce_MultiDocumentPanel.cpp; sourceTree = SOURCE_ROOT; }; FF046140CCF1EDB0DFF80178 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MultiDocumentPanel.cpp; path = ../../src/gui/components/layout/juce_MultiDocumentPanel.cpp; sourceTree = SOURCE_ROOT; };
B6A223FB5B4A9388C83D6FC7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MultiDocumentPanel.h; path = ../../src/gui/components/layout/juce_MultiDocumentPanel.h; sourceTree = SOURCE_ROOT; }; B6A223FB5B4A9388C83D6FC7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MultiDocumentPanel.h; path = ../../src/gui/components/layout/juce_MultiDocumentPanel.h; sourceTree = SOURCE_ROOT; };
A95F42C5CB0C2E5052B31568 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ResizableBorderComponent.cpp; path = ../../src/gui/components/layout/juce_ResizableBorderComponent.cpp; sourceTree = SOURCE_ROOT; }; A95F42C5CB0C2E5052B31568 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ResizableBorderComponent.cpp; path = ../../src/gui/components/layout/juce_ResizableBorderComponent.cpp; sourceTree = SOURCE_ROOT; };
@@ -718,6 +721,20 @@
2886656DF7ACC9DDC888827F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MouseListener.cpp; path = ../../src/gui/components/mouse/juce_MouseListener.cpp; sourceTree = SOURCE_ROOT; }; 2886656DF7ACC9DDC888827F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MouseListener.cpp; path = ../../src/gui/components/mouse/juce_MouseListener.cpp; sourceTree = SOURCE_ROOT; };
0C28F27F9D1CE6CD65185760 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MouseListener.h; path = ../../src/gui/components/mouse/juce_MouseListener.h; sourceTree = SOURCE_ROOT; }; 0C28F27F9D1CE6CD65185760 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MouseListener.h; path = ../../src/gui/components/mouse/juce_MouseListener.h; sourceTree = SOURCE_ROOT; };
89AA49DD2A63D80E90A56768 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TooltipClient.h; path = ../../src/gui/components/mouse/juce_TooltipClient.h; sourceTree = SOURCE_ROOT; }; 89AA49DD2A63D80E90A56768 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TooltipClient.h; path = ../../src/gui/components/mouse/juce_TooltipClient.h; sourceTree = SOURCE_ROOT; };
82DFF1BD3665DC32672FCCE8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MarkerList.cpp; path = ../../src/gui/components/positioning/juce_MarkerList.cpp; sourceTree = SOURCE_ROOT; };
5B6CD1833A98F9844B7E3FF4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MarkerList.h; path = ../../src/gui/components/positioning/juce_MarkerList.h; sourceTree = SOURCE_ROOT; };
D39C0B853C3EBBBD11E7C71E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativeCoordinate.cpp; path = ../../src/gui/components/positioning/juce_RelativeCoordinate.cpp; sourceTree = SOURCE_ROOT; };
657546D70AB7B2709619E07A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativeCoordinate.h; path = ../../src/gui/components/positioning/juce_RelativeCoordinate.h; sourceTree = SOURCE_ROOT; };
D31704DAB806B6AF3ED52DC7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativeCoordinatePositioner.cpp; path = ../../src/gui/components/positioning/juce_RelativeCoordinatePositioner.cpp; sourceTree = SOURCE_ROOT; };
574EC603B2B1189687851319 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativeCoordinatePositioner.h; path = ../../src/gui/components/positioning/juce_RelativeCoordinatePositioner.h; sourceTree = SOURCE_ROOT; };
243EF1A31A779413BC2D5B98 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativeParallelogram.cpp; path = ../../src/gui/components/positioning/juce_RelativeParallelogram.cpp; sourceTree = SOURCE_ROOT; };
72EFFDE39C7255D50F926944 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativeParallelogram.h; path = ../../src/gui/components/positioning/juce_RelativeParallelogram.h; sourceTree = SOURCE_ROOT; };
36BB6DDF702EC9B3DAC851FF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativePoint.cpp; path = ../../src/gui/components/positioning/juce_RelativePoint.cpp; sourceTree = SOURCE_ROOT; };
A3B6342C6207D452F6AD985C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativePoint.h; path = ../../src/gui/components/positioning/juce_RelativePoint.h; sourceTree = SOURCE_ROOT; };
9DA988F1D7CE29E0DFED7EF0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativePointPath.cpp; path = ../../src/gui/components/positioning/juce_RelativePointPath.cpp; sourceTree = SOURCE_ROOT; };
C1A3232DDB617A20D9C26526 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativePointPath.h; path = ../../src/gui/components/positioning/juce_RelativePointPath.h; sourceTree = SOURCE_ROOT; };
072D77C3834B1B3FB77F277B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativeRectangle.cpp; path = ../../src/gui/components/positioning/juce_RelativeRectangle.cpp; sourceTree = SOURCE_ROOT; };
749CA35420339A25BA4E500F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativeRectangle.h; path = ../../src/gui/components/positioning/juce_RelativeRectangle.h; sourceTree = SOURCE_ROOT; };
1C3FFBA02AE51EDD72A6250B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_BooleanPropertyComponent.cpp; path = ../../src/gui/components/properties/juce_BooleanPropertyComponent.cpp; sourceTree = SOURCE_ROOT; }; 1C3FFBA02AE51EDD72A6250B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_BooleanPropertyComponent.cpp; path = ../../src/gui/components/properties/juce_BooleanPropertyComponent.cpp; sourceTree = SOURCE_ROOT; };
B422688E380911F3C21E3F04 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_BooleanPropertyComponent.h; path = ../../src/gui/components/properties/juce_BooleanPropertyComponent.h; sourceTree = SOURCE_ROOT; }; B422688E380911F3C21E3F04 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_BooleanPropertyComponent.h; path = ../../src/gui/components/properties/juce_BooleanPropertyComponent.h; sourceTree = SOURCE_ROOT; };
C45E7E6B6E45DEFBF80940DD = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ButtonPropertyComponent.cpp; path = ../../src/gui/components/properties/juce_ButtonPropertyComponent.cpp; sourceTree = SOURCE_ROOT; }; C45E7E6B6E45DEFBF80940DD = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ButtonPropertyComponent.cpp; path = ../../src/gui/components/properties/juce_ButtonPropertyComponent.cpp; sourceTree = SOURCE_ROOT; };
@@ -843,8 +860,6 @@
F8C44FF03700F6140950F373 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Rectangle.h; path = ../../src/gui/graphics/geometry/juce_Rectangle.h; sourceTree = SOURCE_ROOT; }; F8C44FF03700F6140950F373 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Rectangle.h; path = ../../src/gui/graphics/geometry/juce_Rectangle.h; sourceTree = SOURCE_ROOT; };
1B170F70AF8AA0A39074F671 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RectangleList.cpp; path = ../../src/gui/graphics/geometry/juce_RectangleList.cpp; sourceTree = SOURCE_ROOT; }; 1B170F70AF8AA0A39074F671 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RectangleList.cpp; path = ../../src/gui/graphics/geometry/juce_RectangleList.cpp; sourceTree = SOURCE_ROOT; };
8B7D7435287A20CB2D8E3704 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RectangleList.h; path = ../../src/gui/graphics/geometry/juce_RectangleList.h; sourceTree = SOURCE_ROOT; }; 8B7D7435287A20CB2D8E3704 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RectangleList.h; path = ../../src/gui/graphics/geometry/juce_RectangleList.h; sourceTree = SOURCE_ROOT; };
2AA4DDD1F26188A570F4DBE2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativeCoordinate.cpp; path = ../../src/gui/graphics/geometry/juce_RelativeCoordinate.cpp; sourceTree = SOURCE_ROOT; };
54D9BBB69BDA3837240F7749 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativeCoordinate.h; path = ../../src/gui/graphics/geometry/juce_RelativeCoordinate.h; sourceTree = SOURCE_ROOT; };
0F1C5770B363EF7DF64A876A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_GIFLoader.cpp; path = ../../src/gui/graphics/imaging/image_file_formats/juce_GIFLoader.cpp; sourceTree = SOURCE_ROOT; }; 0F1C5770B363EF7DF64A876A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_GIFLoader.cpp; path = ../../src/gui/graphics/imaging/image_file_formats/juce_GIFLoader.cpp; sourceTree = SOURCE_ROOT; };
6619D27E74F623B1E8CE8F71 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_JPEGLoader.cpp; path = ../../src/gui/graphics/imaging/image_file_formats/juce_JPEGLoader.cpp; sourceTree = SOURCE_ROOT; }; 6619D27E74F623B1E8CE8F71 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_JPEGLoader.cpp; path = ../../src/gui/graphics/imaging/image_file_formats/juce_JPEGLoader.cpp; sourceTree = SOURCE_ROOT; };
EAF0F2EAB230F7539B91A7FB = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PNGLoader.cpp; path = ../../src/gui/graphics/imaging/image_file_formats/juce_PNGLoader.cpp; sourceTree = SOURCE_ROOT; }; EAF0F2EAB230F7539B91A7FB = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PNGLoader.cpp; path = ../../src/gui/graphics/imaging/image_file_formats/juce_PNGLoader.cpp; sourceTree = SOURCE_ROOT; };
@@ -1400,8 +1415,6 @@
44CDA79090B115C3B62A2168, 44CDA79090B115C3B62A2168,
A6AD7357F905309D1B461EB7, A6AD7357F905309D1B461EB7,
E9242E8425497D889C764C66, E9242E8425497D889C764C66,
F665A039C3A85EFDAA3E1245,
8A9F1A98C0C96BF655F606AB,
FF046140CCF1EDB0DFF80178, FF046140CCF1EDB0DFF80178,
B6A223FB5B4A9388C83D6FC7, B6A223FB5B4A9388C83D6FC7,
A95F42C5CB0C2E5052B31568, A95F42C5CB0C2E5052B31568,
@@ -1454,6 +1467,21 @@
2886656DF7ACC9DDC888827F, 2886656DF7ACC9DDC888827F,
0C28F27F9D1CE6CD65185760, 0C28F27F9D1CE6CD65185760,
89AA49DD2A63D80E90A56768 ); name = mouse; sourceTree = "<group>"; }; 89AA49DD2A63D80E90A56768 ); name = mouse; sourceTree = "<group>"; };
362862B72D7FF7997C44CECF = { isa = PBXGroup; children = (
82DFF1BD3665DC32672FCCE8,
5B6CD1833A98F9844B7E3FF4,
D39C0B853C3EBBBD11E7C71E,
657546D70AB7B2709619E07A,
D31704DAB806B6AF3ED52DC7,
574EC603B2B1189687851319,
243EF1A31A779413BC2D5B98,
72EFFDE39C7255D50F926944,
36BB6DDF702EC9B3DAC851FF,
A3B6342C6207D452F6AD985C,
9DA988F1D7CE29E0DFED7EF0,
C1A3232DDB617A20D9C26526,
072D77C3834B1B3FB77F277B,
749CA35420339A25BA4E500F ); name = positioning; sourceTree = "<group>"; };
0F03F34FC3542EF0CF8B31E6 = { isa = PBXGroup; children = ( 0F03F34FC3542EF0CF8B31E6 = { isa = PBXGroup; children = (
1C3FFBA02AE51EDD72A6250B, 1C3FFBA02AE51EDD72A6250B,
B422688E380911F3C21E3F04, B422688E380911F3C21E3F04,
@@ -1533,6 +1561,7 @@
EAE72EDE682D52DF77747660, EAE72EDE682D52DF77747660,
870DE7235866DA3B81B683B8, 870DE7235866DA3B81B683B8,
4F37E36BA5E052B3BD4B87AD, 4F37E36BA5E052B3BD4B87AD,
362862B72D7FF7997C44CECF,
0F03F34FC3542EF0CF8B31E6, 0F03F34FC3542EF0CF8B31E6,
5C03BF1C4CF3DEE1E0D6A3A1, 5C03BF1C4CF3DEE1E0D6A3A1,
48D41BA310DED74E900A5AB0 ); name = components; sourceTree = "<group>"; }; 48D41BA310DED74E900A5AB0 ); name = components; sourceTree = "<group>"; };
@@ -1608,9 +1637,7 @@
469347B6414F2CE9DCEEA386, 469347B6414F2CE9DCEEA386,
F8C44FF03700F6140950F373, F8C44FF03700F6140950F373,
1B170F70AF8AA0A39074F671, 1B170F70AF8AA0A39074F671,
8B7D7435287A20CB2D8E3704,
2AA4DDD1F26188A570F4DBE2,
54D9BBB69BDA3837240F7749 ); name = geometry; sourceTree = "<group>"; };
8B7D7435287A20CB2D8E3704 ); name = geometry; sourceTree = "<group>"; };
D71FD838B3FD1536FCA839A4 = { isa = PBXGroup; children = ( D71FD838B3FD1536FCA839A4 = { isa = PBXGroup; children = (
0F1C5770B363EF7DF64A876A, 0F1C5770B363EF7DF64A876A,
6619D27E74F623B1E8CE8F71, 6619D27E74F623B1E8CE8F71,
@@ -2082,7 +2109,6 @@
9AA76460DA7D34CE6A69E2B1, 9AA76460DA7D34CE6A69E2B1,
4E81BC4A50CF1883F529E152, 4E81BC4A50CF1883F529E152,
8FBB6BF0C5406E1BA481CFEF, 8FBB6BF0C5406E1BA481CFEF,
260EF664D324038F9DC6C35B,
F5F3F25D9F377128DC74D95B, F5F3F25D9F377128DC74D95B,
C64A2BF05224582134872415, C64A2BF05224582134872415,
0A9C9486A6B31F21B1472D2B, 0A9C9486A6B31F21B1472D2B,
@@ -2105,6 +2131,13 @@
968B31D8101A937444C6DFB3, 968B31D8101A937444C6DFB3,
E064E329741F36C329989203, E064E329741F36C329989203,
61E659ADBF9D832ED8F24540, 61E659ADBF9D832ED8F24540,
9379C833B875207E5DFC5A3F,
F1A6C2E3226F87860BFC4EBC,
144872E56AED1981C0973B24,
95648DF5676EBEF57009D09A,
2FE59D80851A0A392EF2F923,
621D2E6CDA267030405166C2,
90347B7C32ACE8A11FC1B708,
FAC87D81FE5168E37645A113, FAC87D81FE5168E37645A113,
E5BB4B5EBFE206E09D0E6E10, E5BB4B5EBFE206E09D0E6E10,
1906C642BF6CA67821512855, 1906C642BF6CA67821512855,
@@ -2163,7 +2196,6 @@
E7C9FAA5F8A4AEDAD8A8CC1D, E7C9FAA5F8A4AEDAD8A8CC1D,
DC4BB8AFC054ECD4141B47CC, DC4BB8AFC054ECD4141B47CC,
084C9F2D4F78134CB1EFE676, 084C9F2D4F78134CB1EFE676,
1110DD0779F44F625316D083,
4DAD08CD3A688747C9CA237B, 4DAD08CD3A688747C9CA237B,
60FE8BFA252E3EF2D60B77AD, 60FE8BFA252E3EF2D60B77AD,
C592CC923C5495467EF05D48, C592CC923C5495467EF05D48,


+ 16
- 4
Builds/VisualStudio2005/Juce.vcproj View File

@@ -548,8 +548,6 @@
<File RelativePath="..\..\src\gui\components\layout\juce_ComponentMovementWatcher.h"/> <File RelativePath="..\..\src\gui\components\layout\juce_ComponentMovementWatcher.h"/>
<File RelativePath="..\..\src\gui\components\layout\juce_GroupComponent.cpp"/> <File RelativePath="..\..\src\gui\components\layout\juce_GroupComponent.cpp"/>
<File RelativePath="..\..\src\gui\components\layout\juce_GroupComponent.h"/> <File RelativePath="..\..\src\gui\components\layout\juce_GroupComponent.h"/>
<File RelativePath="..\..\src\gui\components\layout\juce_MarkerList.cpp"/>
<File RelativePath="..\..\src\gui\components\layout\juce_MarkerList.h"/>
<File RelativePath="..\..\src\gui\components\layout\juce_MultiDocumentPanel.cpp"/> <File RelativePath="..\..\src\gui\components\layout\juce_MultiDocumentPanel.cpp"/>
<File RelativePath="..\..\src\gui\components\layout\juce_MultiDocumentPanel.h"/> <File RelativePath="..\..\src\gui\components\layout\juce_MultiDocumentPanel.h"/>
<File RelativePath="..\..\src\gui\components\layout\juce_ResizableBorderComponent.cpp"/> <File RelativePath="..\..\src\gui\components\layout\juce_ResizableBorderComponent.cpp"/>
@@ -606,6 +604,22 @@
<File RelativePath="..\..\src\gui\components\mouse\juce_MouseListener.h"/> <File RelativePath="..\..\src\gui\components\mouse\juce_MouseListener.h"/>
<File RelativePath="..\..\src\gui\components\mouse\juce_TooltipClient.h"/> <File RelativePath="..\..\src\gui\components\mouse\juce_TooltipClient.h"/>
</Filter> </Filter>
<Filter Name="positioning">
<File RelativePath="..\..\src\gui\components\positioning\juce_MarkerList.cpp"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_MarkerList.h"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativeCoordinate.cpp"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativeCoordinate.h"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativeCoordinatePositioner.cpp"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativeCoordinatePositioner.h"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativeParallelogram.cpp"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativeParallelogram.h"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativePoint.cpp"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativePoint.h"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativePointPath.cpp"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativePointPath.h"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativeRectangle.cpp"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativeRectangle.h"/>
</Filter>
<Filter Name="properties"> <Filter Name="properties">
<File RelativePath="..\..\src\gui\components\properties\juce_BooleanPropertyComponent.cpp"/> <File RelativePath="..\..\src\gui\components\properties\juce_BooleanPropertyComponent.cpp"/>
<File RelativePath="..\..\src\gui\components\properties\juce_BooleanPropertyComponent.h"/> <File RelativePath="..\..\src\gui\components\properties\juce_BooleanPropertyComponent.h"/>
@@ -750,8 +764,6 @@
<File RelativePath="..\..\src\gui\graphics\geometry\juce_Rectangle.h"/> <File RelativePath="..\..\src\gui\graphics\geometry\juce_Rectangle.h"/>
<File RelativePath="..\..\src\gui\graphics\geometry\juce_RectangleList.cpp"/> <File RelativePath="..\..\src\gui\graphics\geometry\juce_RectangleList.cpp"/>
<File RelativePath="..\..\src\gui\graphics\geometry\juce_RectangleList.h"/> <File RelativePath="..\..\src\gui\graphics\geometry\juce_RectangleList.h"/>
<File RelativePath="..\..\src\gui\graphics\geometry\juce_RelativeCoordinate.cpp"/>
<File RelativePath="..\..\src\gui\graphics\geometry\juce_RelativeCoordinate.h"/>
</Filter> </Filter>
<Filter Name="imaging"> <Filter Name="imaging">
<Filter Name="image_file_formats"> <Filter Name="image_file_formats">


+ 16
- 4
Builds/VisualStudio2008/Juce.vcproj View File

@@ -548,8 +548,6 @@
<File RelativePath="..\..\src\gui\components\layout\juce_ComponentMovementWatcher.h"/> <File RelativePath="..\..\src\gui\components\layout\juce_ComponentMovementWatcher.h"/>
<File RelativePath="..\..\src\gui\components\layout\juce_GroupComponent.cpp"/> <File RelativePath="..\..\src\gui\components\layout\juce_GroupComponent.cpp"/>
<File RelativePath="..\..\src\gui\components\layout\juce_GroupComponent.h"/> <File RelativePath="..\..\src\gui\components\layout\juce_GroupComponent.h"/>
<File RelativePath="..\..\src\gui\components\layout\juce_MarkerList.cpp"/>
<File RelativePath="..\..\src\gui\components\layout\juce_MarkerList.h"/>
<File RelativePath="..\..\src\gui\components\layout\juce_MultiDocumentPanel.cpp"/> <File RelativePath="..\..\src\gui\components\layout\juce_MultiDocumentPanel.cpp"/>
<File RelativePath="..\..\src\gui\components\layout\juce_MultiDocumentPanel.h"/> <File RelativePath="..\..\src\gui\components\layout\juce_MultiDocumentPanel.h"/>
<File RelativePath="..\..\src\gui\components\layout\juce_ResizableBorderComponent.cpp"/> <File RelativePath="..\..\src\gui\components\layout\juce_ResizableBorderComponent.cpp"/>
@@ -606,6 +604,22 @@
<File RelativePath="..\..\src\gui\components\mouse\juce_MouseListener.h"/> <File RelativePath="..\..\src\gui\components\mouse\juce_MouseListener.h"/>
<File RelativePath="..\..\src\gui\components\mouse\juce_TooltipClient.h"/> <File RelativePath="..\..\src\gui\components\mouse\juce_TooltipClient.h"/>
</Filter> </Filter>
<Filter Name="positioning">
<File RelativePath="..\..\src\gui\components\positioning\juce_MarkerList.cpp"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_MarkerList.h"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativeCoordinate.cpp"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativeCoordinate.h"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativeCoordinatePositioner.cpp"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativeCoordinatePositioner.h"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativeParallelogram.cpp"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativeParallelogram.h"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativePoint.cpp"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativePoint.h"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativePointPath.cpp"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativePointPath.h"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativeRectangle.cpp"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativeRectangle.h"/>
</Filter>
<Filter Name="properties"> <Filter Name="properties">
<File RelativePath="..\..\src\gui\components\properties\juce_BooleanPropertyComponent.cpp"/> <File RelativePath="..\..\src\gui\components\properties\juce_BooleanPropertyComponent.cpp"/>
<File RelativePath="..\..\src\gui\components\properties\juce_BooleanPropertyComponent.h"/> <File RelativePath="..\..\src\gui\components\properties\juce_BooleanPropertyComponent.h"/>
@@ -750,8 +764,6 @@
<File RelativePath="..\..\src\gui\graphics\geometry\juce_Rectangle.h"/> <File RelativePath="..\..\src\gui\graphics\geometry\juce_Rectangle.h"/>
<File RelativePath="..\..\src\gui\graphics\geometry\juce_RectangleList.cpp"/> <File RelativePath="..\..\src\gui\graphics\geometry\juce_RectangleList.cpp"/>
<File RelativePath="..\..\src\gui\graphics\geometry\juce_RectangleList.h"/> <File RelativePath="..\..\src\gui\graphics\geometry\juce_RectangleList.h"/>
<File RelativePath="..\..\src\gui\graphics\geometry\juce_RelativeCoordinate.cpp"/>
<File RelativePath="..\..\src\gui\graphics\geometry\juce_RelativeCoordinate.h"/>
</Filter> </Filter>
<Filter Name="imaging"> <Filter Name="imaging">
<Filter Name="image_file_formats"> <Filter Name="image_file_formats">


+ 16
- 4
Builds/VisualStudio2008_DLL/Juce.vcproj View File

@@ -550,8 +550,6 @@
<File RelativePath="..\..\src\gui\components\layout\juce_ComponentMovementWatcher.h"/> <File RelativePath="..\..\src\gui\components\layout\juce_ComponentMovementWatcher.h"/>
<File RelativePath="..\..\src\gui\components\layout\juce_GroupComponent.cpp"/> <File RelativePath="..\..\src\gui\components\layout\juce_GroupComponent.cpp"/>
<File RelativePath="..\..\src\gui\components\layout\juce_GroupComponent.h"/> <File RelativePath="..\..\src\gui\components\layout\juce_GroupComponent.h"/>
<File RelativePath="..\..\src\gui\components\layout\juce_MarkerList.cpp"/>
<File RelativePath="..\..\src\gui\components\layout\juce_MarkerList.h"/>
<File RelativePath="..\..\src\gui\components\layout\juce_MultiDocumentPanel.cpp"/> <File RelativePath="..\..\src\gui\components\layout\juce_MultiDocumentPanel.cpp"/>
<File RelativePath="..\..\src\gui\components\layout\juce_MultiDocumentPanel.h"/> <File RelativePath="..\..\src\gui\components\layout\juce_MultiDocumentPanel.h"/>
<File RelativePath="..\..\src\gui\components\layout\juce_ResizableBorderComponent.cpp"/> <File RelativePath="..\..\src\gui\components\layout\juce_ResizableBorderComponent.cpp"/>
@@ -608,6 +606,22 @@
<File RelativePath="..\..\src\gui\components\mouse\juce_MouseListener.h"/> <File RelativePath="..\..\src\gui\components\mouse\juce_MouseListener.h"/>
<File RelativePath="..\..\src\gui\components\mouse\juce_TooltipClient.h"/> <File RelativePath="..\..\src\gui\components\mouse\juce_TooltipClient.h"/>
</Filter> </Filter>
<Filter Name="positioning">
<File RelativePath="..\..\src\gui\components\positioning\juce_MarkerList.cpp"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_MarkerList.h"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativeCoordinate.cpp"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativeCoordinate.h"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativeCoordinatePositioner.cpp"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativeCoordinatePositioner.h"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativeParallelogram.cpp"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativeParallelogram.h"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativePoint.cpp"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativePoint.h"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativePointPath.cpp"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativePointPath.h"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativeRectangle.cpp"/>
<File RelativePath="..\..\src\gui\components\positioning\juce_RelativeRectangle.h"/>
</Filter>
<Filter Name="properties"> <Filter Name="properties">
<File RelativePath="..\..\src\gui\components\properties\juce_BooleanPropertyComponent.cpp"/> <File RelativePath="..\..\src\gui\components\properties\juce_BooleanPropertyComponent.cpp"/>
<File RelativePath="..\..\src\gui\components\properties\juce_BooleanPropertyComponent.h"/> <File RelativePath="..\..\src\gui\components\properties\juce_BooleanPropertyComponent.h"/>
@@ -752,8 +766,6 @@
<File RelativePath="..\..\src\gui\graphics\geometry\juce_Rectangle.h"/> <File RelativePath="..\..\src\gui\graphics\geometry\juce_Rectangle.h"/>
<File RelativePath="..\..\src\gui\graphics\geometry\juce_RectangleList.cpp"/> <File RelativePath="..\..\src\gui\graphics\geometry\juce_RectangleList.cpp"/>
<File RelativePath="..\..\src\gui\graphics\geometry\juce_RectangleList.h"/> <File RelativePath="..\..\src\gui\graphics\geometry\juce_RectangleList.h"/>
<File RelativePath="..\..\src\gui\graphics\geometry\juce_RelativeCoordinate.cpp"/>
<File RelativePath="..\..\src\gui\graphics\geometry\juce_RelativeCoordinate.h"/>
</Filter> </Filter>
<Filter Name="imaging"> <Filter Name="imaging">
<Filter Name="image_file_formats"> <Filter Name="image_file_formats">


+ 14
- 4
Builds/VisualStudio2010/Juce.vcxproj View File

@@ -257,7 +257,6 @@
<ClCompile Include="..\..\src\gui\components\layout\juce_ComponentBuilder.cpp"/> <ClCompile Include="..\..\src\gui\components\layout\juce_ComponentBuilder.cpp"/>
<ClCompile Include="..\..\src\gui\components\layout\juce_ComponentMovementWatcher.cpp"/> <ClCompile Include="..\..\src\gui\components\layout\juce_ComponentMovementWatcher.cpp"/>
<ClCompile Include="..\..\src\gui\components\layout\juce_GroupComponent.cpp"/> <ClCompile Include="..\..\src\gui\components\layout\juce_GroupComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\layout\juce_MarkerList.cpp"/>
<ClCompile Include="..\..\src\gui\components\layout\juce_MultiDocumentPanel.cpp"/> <ClCompile Include="..\..\src\gui\components\layout\juce_MultiDocumentPanel.cpp"/>
<ClCompile Include="..\..\src\gui\components\layout\juce_ResizableBorderComponent.cpp"/> <ClCompile Include="..\..\src\gui\components\layout\juce_ResizableBorderComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\layout\juce_ResizableCornerComponent.cpp"/> <ClCompile Include="..\..\src\gui\components\layout\juce_ResizableCornerComponent.cpp"/>
@@ -280,6 +279,13 @@
<ClCompile Include="..\..\src\gui\components\mouse\juce_MouseHoverDetector.cpp"/> <ClCompile Include="..\..\src\gui\components\mouse\juce_MouseHoverDetector.cpp"/>
<ClCompile Include="..\..\src\gui\components\mouse\juce_MouseInputSource.cpp"/> <ClCompile Include="..\..\src\gui\components\mouse\juce_MouseInputSource.cpp"/>
<ClCompile Include="..\..\src\gui\components\mouse\juce_MouseListener.cpp"/> <ClCompile Include="..\..\src\gui\components\mouse\juce_MouseListener.cpp"/>
<ClCompile Include="..\..\src\gui\components\positioning\juce_MarkerList.cpp"/>
<ClCompile Include="..\..\src\gui\components\positioning\juce_RelativeCoordinate.cpp"/>
<ClCompile Include="..\..\src\gui\components\positioning\juce_RelativeCoordinatePositioner.cpp"/>
<ClCompile Include="..\..\src\gui\components\positioning\juce_RelativeParallelogram.cpp"/>
<ClCompile Include="..\..\src\gui\components\positioning\juce_RelativePoint.cpp"/>
<ClCompile Include="..\..\src\gui\components\positioning\juce_RelativePointPath.cpp"/>
<ClCompile Include="..\..\src\gui\components\positioning\juce_RelativeRectangle.cpp"/>
<ClCompile Include="..\..\src\gui\components\properties\juce_BooleanPropertyComponent.cpp"/> <ClCompile Include="..\..\src\gui\components\properties\juce_BooleanPropertyComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\properties\juce_ButtonPropertyComponent.cpp"/> <ClCompile Include="..\..\src\gui\components\properties\juce_ButtonPropertyComponent.cpp"/>
<ClCompile Include="..\..\src\gui\components\properties\juce_ChoicePropertyComponent.cpp"/> <ClCompile Include="..\..\src\gui\components\properties\juce_ChoicePropertyComponent.cpp"/>
@@ -338,7 +344,6 @@
<ClCompile Include="..\..\src\gui\graphics\geometry\juce_PathStrokeType.cpp"/> <ClCompile Include="..\..\src\gui\graphics\geometry\juce_PathStrokeType.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\geometry\juce_PositionedRectangle.cpp"/> <ClCompile Include="..\..\src\gui\graphics\geometry\juce_PositionedRectangle.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\geometry\juce_RectangleList.cpp"/> <ClCompile Include="..\..\src\gui\graphics\geometry\juce_RectangleList.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\geometry\juce_RelativeCoordinate.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\imaging\image_file_formats\juce_GIFLoader.cpp"/> <ClCompile Include="..\..\src\gui\graphics\imaging\image_file_formats\juce_GIFLoader.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\imaging\image_file_formats\juce_JPEGLoader.cpp"/> <ClCompile Include="..\..\src\gui\graphics\imaging\image_file_formats\juce_JPEGLoader.cpp"/>
<ClCompile Include="..\..\src\gui\graphics\imaging\image_file_formats\juce_PNGLoader.cpp"/> <ClCompile Include="..\..\src\gui\graphics\imaging\image_file_formats\juce_PNGLoader.cpp"/>
@@ -608,7 +613,6 @@
<ClInclude Include="..\..\src\gui\components\layout\juce_ComponentBuilder.h"/> <ClInclude Include="..\..\src\gui\components\layout\juce_ComponentBuilder.h"/>
<ClInclude Include="..\..\src\gui\components\layout\juce_ComponentMovementWatcher.h"/> <ClInclude Include="..\..\src\gui\components\layout\juce_ComponentMovementWatcher.h"/>
<ClInclude Include="..\..\src\gui\components\layout\juce_GroupComponent.h"/> <ClInclude Include="..\..\src\gui\components\layout\juce_GroupComponent.h"/>
<ClInclude Include="..\..\src\gui\components\layout\juce_MarkerList.h"/>
<ClInclude Include="..\..\src\gui\components\layout\juce_MultiDocumentPanel.h"/> <ClInclude Include="..\..\src\gui\components\layout\juce_MultiDocumentPanel.h"/>
<ClInclude Include="..\..\src\gui\components\layout\juce_ResizableBorderComponent.h"/> <ClInclude Include="..\..\src\gui\components\layout\juce_ResizableBorderComponent.h"/>
<ClInclude Include="..\..\src\gui\components\layout\juce_ResizableCornerComponent.h"/> <ClInclude Include="..\..\src\gui\components\layout\juce_ResizableCornerComponent.h"/>
@@ -636,6 +640,13 @@
<ClInclude Include="..\..\src\gui\components\mouse\juce_MouseInputSource.h"/> <ClInclude Include="..\..\src\gui\components\mouse\juce_MouseInputSource.h"/>
<ClInclude Include="..\..\src\gui\components\mouse\juce_MouseListener.h"/> <ClInclude Include="..\..\src\gui\components\mouse\juce_MouseListener.h"/>
<ClInclude Include="..\..\src\gui\components\mouse\juce_TooltipClient.h"/> <ClInclude Include="..\..\src\gui\components\mouse\juce_TooltipClient.h"/>
<ClInclude Include="..\..\src\gui\components\positioning\juce_MarkerList.h"/>
<ClInclude Include="..\..\src\gui\components\positioning\juce_RelativeCoordinate.h"/>
<ClInclude Include="..\..\src\gui\components\positioning\juce_RelativeCoordinatePositioner.h"/>
<ClInclude Include="..\..\src\gui\components\positioning\juce_RelativeParallelogram.h"/>
<ClInclude Include="..\..\src\gui\components\positioning\juce_RelativePoint.h"/>
<ClInclude Include="..\..\src\gui\components\positioning\juce_RelativePointPath.h"/>
<ClInclude Include="..\..\src\gui\components\positioning\juce_RelativeRectangle.h"/>
<ClInclude Include="..\..\src\gui\components\properties\juce_BooleanPropertyComponent.h"/> <ClInclude Include="..\..\src\gui\components\properties\juce_BooleanPropertyComponent.h"/>
<ClInclude Include="..\..\src\gui\components\properties\juce_ButtonPropertyComponent.h"/> <ClInclude Include="..\..\src\gui\components\properties\juce_ButtonPropertyComponent.h"/>
<ClInclude Include="..\..\src\gui\components\properties\juce_ChoicePropertyComponent.h"/> <ClInclude Include="..\..\src\gui\components\properties\juce_ChoicePropertyComponent.h"/>
@@ -703,7 +714,6 @@
<ClInclude Include="..\..\src\gui\graphics\geometry\juce_PositionedRectangle.h"/> <ClInclude Include="..\..\src\gui\graphics\geometry\juce_PositionedRectangle.h"/>
<ClInclude Include="..\..\src\gui\graphics\geometry\juce_Rectangle.h"/> <ClInclude Include="..\..\src\gui\graphics\geometry\juce_Rectangle.h"/>
<ClInclude Include="..\..\src\gui\graphics\geometry\juce_RectangleList.h"/> <ClInclude Include="..\..\src\gui\graphics\geometry\juce_RectangleList.h"/>
<ClInclude Include="..\..\src\gui\graphics\geometry\juce_RelativeCoordinate.h"/>
<ClInclude Include="..\..\src\gui\graphics\imaging\juce_CameraDevice.h"/> <ClInclude Include="..\..\src\gui\graphics\imaging\juce_CameraDevice.h"/>
<ClInclude Include="..\..\src\gui\graphics\imaging\juce_Image.h"/> <ClInclude Include="..\..\src\gui\graphics\imaging\juce_Image.h"/>
<ClInclude Include="..\..\src\gui\graphics\imaging\juce_ImageCache.h"/> <ClInclude Include="..\..\src\gui\graphics\imaging\juce_ImageCache.h"/>


+ 45
- 12
Builds/VisualStudio2010/Juce.vcxproj.filters View File

@@ -101,6 +101,9 @@
<Filter Include="Juce\Source\gui\components\mouse"> <Filter Include="Juce\Source\gui\components\mouse">
<UniqueIdentifier>{B0D9CCC8-4718-BF06-EA13-DA2333E77AEE}</UniqueIdentifier> <UniqueIdentifier>{B0D9CCC8-4718-BF06-EA13-DA2333E77AEE}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Juce\Source\gui\components\positioning">
<UniqueIdentifier>{34D7048B-783F-B48F-2D42-7F22515A2741}</UniqueIdentifier>
</Filter>
<Filter Include="Juce\Source\gui\components\properties"> <Filter Include="Juce\Source\gui\components\properties">
<UniqueIdentifier>{6A81EDB6-D54A-343C-8BB0-CCE4DAA4823F}</UniqueIdentifier> <UniqueIdentifier>{6A81EDB6-D54A-343C-8BB0-CCE4DAA4823F}</UniqueIdentifier>
</Filter> </Filter>
@@ -625,9 +628,6 @@
<ClCompile Include="..\..\src\gui\components\layout\juce_GroupComponent.cpp"> <ClCompile Include="..\..\src\gui\components\layout\juce_GroupComponent.cpp">
<Filter>Juce\Source\gui\components\layout</Filter> <Filter>Juce\Source\gui\components\layout</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\gui\components\layout\juce_MarkerList.cpp">
<Filter>Juce\Source\gui\components\layout</Filter>
</ClCompile>
<ClCompile Include="..\..\src\gui\components\layout\juce_MultiDocumentPanel.cpp"> <ClCompile Include="..\..\src\gui\components\layout\juce_MultiDocumentPanel.cpp">
<Filter>Juce\Source\gui\components\layout</Filter> <Filter>Juce\Source\gui\components\layout</Filter>
</ClCompile> </ClCompile>
@@ -694,6 +694,27 @@
<ClCompile Include="..\..\src\gui\components\mouse\juce_MouseListener.cpp"> <ClCompile Include="..\..\src\gui\components\mouse\juce_MouseListener.cpp">
<Filter>Juce\Source\gui\components\mouse</Filter> <Filter>Juce\Source\gui\components\mouse</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\gui\components\positioning\juce_MarkerList.cpp">
<Filter>Juce\Source\gui\components\positioning</Filter>
</ClCompile>
<ClCompile Include="..\..\src\gui\components\positioning\juce_RelativeCoordinate.cpp">
<Filter>Juce\Source\gui\components\positioning</Filter>
</ClCompile>
<ClCompile Include="..\..\src\gui\components\positioning\juce_RelativeCoordinatePositioner.cpp">
<Filter>Juce\Source\gui\components\positioning</Filter>
</ClCompile>
<ClCompile Include="..\..\src\gui\components\positioning\juce_RelativeParallelogram.cpp">
<Filter>Juce\Source\gui\components\positioning</Filter>
</ClCompile>
<ClCompile Include="..\..\src\gui\components\positioning\juce_RelativePoint.cpp">
<Filter>Juce\Source\gui\components\positioning</Filter>
</ClCompile>
<ClCompile Include="..\..\src\gui\components\positioning\juce_RelativePointPath.cpp">
<Filter>Juce\Source\gui\components\positioning</Filter>
</ClCompile>
<ClCompile Include="..\..\src\gui\components\positioning\juce_RelativeRectangle.cpp">
<Filter>Juce\Source\gui\components\positioning</Filter>
</ClCompile>
<ClCompile Include="..\..\src\gui\components\properties\juce_BooleanPropertyComponent.cpp"> <ClCompile Include="..\..\src\gui\components\properties\juce_BooleanPropertyComponent.cpp">
<Filter>Juce\Source\gui\components\properties</Filter> <Filter>Juce\Source\gui\components\properties</Filter>
</ClCompile> </ClCompile>
@@ -868,9 +889,6 @@
<ClCompile Include="..\..\src\gui\graphics\geometry\juce_RectangleList.cpp"> <ClCompile Include="..\..\src\gui\graphics\geometry\juce_RectangleList.cpp">
<Filter>Juce\Source\gui\graphics\geometry</Filter> <Filter>Juce\Source\gui\graphics\geometry</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\gui\graphics\geometry\juce_RelativeCoordinate.cpp">
<Filter>Juce\Source\gui\graphics\geometry</Filter>
</ClCompile>
<ClCompile Include="..\..\src\gui\graphics\imaging\image_file_formats\juce_GIFLoader.cpp"> <ClCompile Include="..\..\src\gui\graphics\imaging\image_file_formats\juce_GIFLoader.cpp">
<Filter>Juce\Source\gui\graphics\imaging\image_file_formats</Filter> <Filter>Juce\Source\gui\graphics\imaging\image_file_formats</Filter>
</ClCompile> </ClCompile>
@@ -1752,9 +1770,6 @@
<ClInclude Include="..\..\src\gui\components\layout\juce_GroupComponent.h"> <ClInclude Include="..\..\src\gui\components\layout\juce_GroupComponent.h">
<Filter>Juce\Source\gui\components\layout</Filter> <Filter>Juce\Source\gui\components\layout</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\src\gui\components\layout\juce_MarkerList.h">
<Filter>Juce\Source\gui\components\layout</Filter>
</ClInclude>
<ClInclude Include="..\..\src\gui\components\layout\juce_MultiDocumentPanel.h"> <ClInclude Include="..\..\src\gui\components\layout\juce_MultiDocumentPanel.h">
<Filter>Juce\Source\gui\components\layout</Filter> <Filter>Juce\Source\gui\components\layout</Filter>
</ClInclude> </ClInclude>
@@ -1836,6 +1851,27 @@
<ClInclude Include="..\..\src\gui\components\mouse\juce_TooltipClient.h"> <ClInclude Include="..\..\src\gui\components\mouse\juce_TooltipClient.h">
<Filter>Juce\Source\gui\components\mouse</Filter> <Filter>Juce\Source\gui\components\mouse</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\src\gui\components\positioning\juce_MarkerList.h">
<Filter>Juce\Source\gui\components\positioning</Filter>
</ClInclude>
<ClInclude Include="..\..\src\gui\components\positioning\juce_RelativeCoordinate.h">
<Filter>Juce\Source\gui\components\positioning</Filter>
</ClInclude>
<ClInclude Include="..\..\src\gui\components\positioning\juce_RelativeCoordinatePositioner.h">
<Filter>Juce\Source\gui\components\positioning</Filter>
</ClInclude>
<ClInclude Include="..\..\src\gui\components\positioning\juce_RelativeParallelogram.h">
<Filter>Juce\Source\gui\components\positioning</Filter>
</ClInclude>
<ClInclude Include="..\..\src\gui\components\positioning\juce_RelativePoint.h">
<Filter>Juce\Source\gui\components\positioning</Filter>
</ClInclude>
<ClInclude Include="..\..\src\gui\components\positioning\juce_RelativePointPath.h">
<Filter>Juce\Source\gui\components\positioning</Filter>
</ClInclude>
<ClInclude Include="..\..\src\gui\components\positioning\juce_RelativeRectangle.h">
<Filter>Juce\Source\gui\components\positioning</Filter>
</ClInclude>
<ClInclude Include="..\..\src\gui\components\properties\juce_BooleanPropertyComponent.h"> <ClInclude Include="..\..\src\gui\components\properties\juce_BooleanPropertyComponent.h">
<Filter>Juce\Source\gui\components\properties</Filter> <Filter>Juce\Source\gui\components\properties</Filter>
</ClInclude> </ClInclude>
@@ -2037,9 +2073,6 @@
<ClInclude Include="..\..\src\gui\graphics\geometry\juce_RectangleList.h"> <ClInclude Include="..\..\src\gui\graphics\geometry\juce_RectangleList.h">
<Filter>Juce\Source\gui\graphics\geometry</Filter> <Filter>Juce\Source\gui\graphics\geometry</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\src\gui\graphics\geometry\juce_RelativeCoordinate.h">
<Filter>Juce\Source\gui\graphics\geometry</Filter>
</ClInclude>
<ClInclude Include="..\..\src\gui\graphics\imaging\juce_CameraDevice.h"> <ClInclude Include="..\..\src\gui\graphics\imaging\juce_CameraDevice.h">
<Filter>Juce\Source\gui\graphics\imaging</Filter> <Filter>Juce\Source\gui\graphics\imaging</Filter>
</ClInclude> </ClInclude>


+ 45
- 13
Builds/iPhone/Juce.xcodeproj/project.pbxproj View File

@@ -143,7 +143,6 @@
9AA76460DA7D34CE6A69E2B1 = { isa = PBXBuildFile; fileRef = 45E5EE9E0173683D721FABDA; }; 9AA76460DA7D34CE6A69E2B1 = { isa = PBXBuildFile; fileRef = 45E5EE9E0173683D721FABDA; };
4E81BC4A50CF1883F529E152 = { isa = PBXBuildFile; fileRef = F8FCCCE06D31FEF697FCD80D; }; 4E81BC4A50CF1883F529E152 = { isa = PBXBuildFile; fileRef = F8FCCCE06D31FEF697FCD80D; };
8FBB6BF0C5406E1BA481CFEF = { isa = PBXBuildFile; fileRef = A6AD7357F905309D1B461EB7; }; 8FBB6BF0C5406E1BA481CFEF = { isa = PBXBuildFile; fileRef = A6AD7357F905309D1B461EB7; };
260EF664D324038F9DC6C35B = { isa = PBXBuildFile; fileRef = F665A039C3A85EFDAA3E1245; };
F5F3F25D9F377128DC74D95B = { isa = PBXBuildFile; fileRef = FF046140CCF1EDB0DFF80178; }; F5F3F25D9F377128DC74D95B = { isa = PBXBuildFile; fileRef = FF046140CCF1EDB0DFF80178; };
C64A2BF05224582134872415 = { isa = PBXBuildFile; fileRef = A95F42C5CB0C2E5052B31568; }; C64A2BF05224582134872415 = { isa = PBXBuildFile; fileRef = A95F42C5CB0C2E5052B31568; };
0A9C9486A6B31F21B1472D2B = { isa = PBXBuildFile; fileRef = A31221E2A50CCE9DF06B5F4B; }; 0A9C9486A6B31F21B1472D2B = { isa = PBXBuildFile; fileRef = A31221E2A50CCE9DF06B5F4B; };
@@ -166,6 +165,13 @@
968B31D8101A937444C6DFB3 = { isa = PBXBuildFile; fileRef = 2531C57B0C861A48E3F3A673; }; 968B31D8101A937444C6DFB3 = { isa = PBXBuildFile; fileRef = 2531C57B0C861A48E3F3A673; };
E064E329741F36C329989203 = { isa = PBXBuildFile; fileRef = 441257DD380138C03568FCBD; }; E064E329741F36C329989203 = { isa = PBXBuildFile; fileRef = 441257DD380138C03568FCBD; };
61E659ADBF9D832ED8F24540 = { isa = PBXBuildFile; fileRef = 2886656DF7ACC9DDC888827F; }; 61E659ADBF9D832ED8F24540 = { isa = PBXBuildFile; fileRef = 2886656DF7ACC9DDC888827F; };
9379C833B875207E5DFC5A3F = { isa = PBXBuildFile; fileRef = 82DFF1BD3665DC32672FCCE8; };
F1A6C2E3226F87860BFC4EBC = { isa = PBXBuildFile; fileRef = D39C0B853C3EBBBD11E7C71E; };
144872E56AED1981C0973B24 = { isa = PBXBuildFile; fileRef = D31704DAB806B6AF3ED52DC7; };
95648DF5676EBEF57009D09A = { isa = PBXBuildFile; fileRef = 243EF1A31A779413BC2D5B98; };
2FE59D80851A0A392EF2F923 = { isa = PBXBuildFile; fileRef = 36BB6DDF702EC9B3DAC851FF; };
621D2E6CDA267030405166C2 = { isa = PBXBuildFile; fileRef = 9DA988F1D7CE29E0DFED7EF0; };
90347B7C32ACE8A11FC1B708 = { isa = PBXBuildFile; fileRef = 072D77C3834B1B3FB77F277B; };
FAC87D81FE5168E37645A113 = { isa = PBXBuildFile; fileRef = 1C3FFBA02AE51EDD72A6250B; }; FAC87D81FE5168E37645A113 = { isa = PBXBuildFile; fileRef = 1C3FFBA02AE51EDD72A6250B; };
E5BB4B5EBFE206E09D0E6E10 = { isa = PBXBuildFile; fileRef = C45E7E6B6E45DEFBF80940DD; }; E5BB4B5EBFE206E09D0E6E10 = { isa = PBXBuildFile; fileRef = C45E7E6B6E45DEFBF80940DD; };
1906C642BF6CA67821512855 = { isa = PBXBuildFile; fileRef = ECCBF2452804ECB2D5B4BC50; }; 1906C642BF6CA67821512855 = { isa = PBXBuildFile; fileRef = ECCBF2452804ECB2D5B4BC50; };
@@ -224,7 +230,6 @@
E7C9FAA5F8A4AEDAD8A8CC1D = { isa = PBXBuildFile; fileRef = 9D3F1BAB1D48DDECB9F35916; }; E7C9FAA5F8A4AEDAD8A8CC1D = { isa = PBXBuildFile; fileRef = 9D3F1BAB1D48DDECB9F35916; };
DC4BB8AFC054ECD4141B47CC = { isa = PBXBuildFile; fileRef = 11D8021D49B895410A836486; }; DC4BB8AFC054ECD4141B47CC = { isa = PBXBuildFile; fileRef = 11D8021D49B895410A836486; };
084C9F2D4F78134CB1EFE676 = { isa = PBXBuildFile; fileRef = 1B170F70AF8AA0A39074F671; }; 084C9F2D4F78134CB1EFE676 = { isa = PBXBuildFile; fileRef = 1B170F70AF8AA0A39074F671; };
1110DD0779F44F625316D083 = { isa = PBXBuildFile; fileRef = 2AA4DDD1F26188A570F4DBE2; };
4DAD08CD3A688747C9CA237B = { isa = PBXBuildFile; fileRef = 0F1C5770B363EF7DF64A876A; }; 4DAD08CD3A688747C9CA237B = { isa = PBXBuildFile; fileRef = 0F1C5770B363EF7DF64A876A; };
60FE8BFA252E3EF2D60B77AD = { isa = PBXBuildFile; fileRef = 6619D27E74F623B1E8CE8F71; }; 60FE8BFA252E3EF2D60B77AD = { isa = PBXBuildFile; fileRef = 6619D27E74F623B1E8CE8F71; };
C592CC923C5495467EF05D48 = { isa = PBXBuildFile; fileRef = EAF0F2EAB230F7539B91A7FB; }; C592CC923C5495467EF05D48 = { isa = PBXBuildFile; fileRef = EAF0F2EAB230F7539B91A7FB; };
@@ -667,8 +672,6 @@
44CDA79090B115C3B62A2168 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ComponentMovementWatcher.h; path = ../../src/gui/components/layout/juce_ComponentMovementWatcher.h; sourceTree = SOURCE_ROOT; }; 44CDA79090B115C3B62A2168 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_ComponentMovementWatcher.h; path = ../../src/gui/components/layout/juce_ComponentMovementWatcher.h; sourceTree = SOURCE_ROOT; };
A6AD7357F905309D1B461EB7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_GroupComponent.cpp; path = ../../src/gui/components/layout/juce_GroupComponent.cpp; sourceTree = SOURCE_ROOT; }; A6AD7357F905309D1B461EB7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_GroupComponent.cpp; path = ../../src/gui/components/layout/juce_GroupComponent.cpp; sourceTree = SOURCE_ROOT; };
E9242E8425497D889C764C66 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_GroupComponent.h; path = ../../src/gui/components/layout/juce_GroupComponent.h; sourceTree = SOURCE_ROOT; }; E9242E8425497D889C764C66 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_GroupComponent.h; path = ../../src/gui/components/layout/juce_GroupComponent.h; sourceTree = SOURCE_ROOT; };
F665A039C3A85EFDAA3E1245 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MarkerList.cpp; path = ../../src/gui/components/layout/juce_MarkerList.cpp; sourceTree = SOURCE_ROOT; };
8A9F1A98C0C96BF655F606AB = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MarkerList.h; path = ../../src/gui/components/layout/juce_MarkerList.h; sourceTree = SOURCE_ROOT; };
FF046140CCF1EDB0DFF80178 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MultiDocumentPanel.cpp; path = ../../src/gui/components/layout/juce_MultiDocumentPanel.cpp; sourceTree = SOURCE_ROOT; }; FF046140CCF1EDB0DFF80178 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MultiDocumentPanel.cpp; path = ../../src/gui/components/layout/juce_MultiDocumentPanel.cpp; sourceTree = SOURCE_ROOT; };
B6A223FB5B4A9388C83D6FC7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MultiDocumentPanel.h; path = ../../src/gui/components/layout/juce_MultiDocumentPanel.h; sourceTree = SOURCE_ROOT; }; B6A223FB5B4A9388C83D6FC7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MultiDocumentPanel.h; path = ../../src/gui/components/layout/juce_MultiDocumentPanel.h; sourceTree = SOURCE_ROOT; };
A95F42C5CB0C2E5052B31568 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ResizableBorderComponent.cpp; path = ../../src/gui/components/layout/juce_ResizableBorderComponent.cpp; sourceTree = SOURCE_ROOT; }; A95F42C5CB0C2E5052B31568 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ResizableBorderComponent.cpp; path = ../../src/gui/components/layout/juce_ResizableBorderComponent.cpp; sourceTree = SOURCE_ROOT; };
@@ -718,6 +721,20 @@
2886656DF7ACC9DDC888827F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MouseListener.cpp; path = ../../src/gui/components/mouse/juce_MouseListener.cpp; sourceTree = SOURCE_ROOT; }; 2886656DF7ACC9DDC888827F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MouseListener.cpp; path = ../../src/gui/components/mouse/juce_MouseListener.cpp; sourceTree = SOURCE_ROOT; };
0C28F27F9D1CE6CD65185760 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MouseListener.h; path = ../../src/gui/components/mouse/juce_MouseListener.h; sourceTree = SOURCE_ROOT; }; 0C28F27F9D1CE6CD65185760 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MouseListener.h; path = ../../src/gui/components/mouse/juce_MouseListener.h; sourceTree = SOURCE_ROOT; };
89AA49DD2A63D80E90A56768 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TooltipClient.h; path = ../../src/gui/components/mouse/juce_TooltipClient.h; sourceTree = SOURCE_ROOT; }; 89AA49DD2A63D80E90A56768 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_TooltipClient.h; path = ../../src/gui/components/mouse/juce_TooltipClient.h; sourceTree = SOURCE_ROOT; };
82DFF1BD3665DC32672FCCE8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_MarkerList.cpp; path = ../../src/gui/components/positioning/juce_MarkerList.cpp; sourceTree = SOURCE_ROOT; };
5B6CD1833A98F9844B7E3FF4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_MarkerList.h; path = ../../src/gui/components/positioning/juce_MarkerList.h; sourceTree = SOURCE_ROOT; };
D39C0B853C3EBBBD11E7C71E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativeCoordinate.cpp; path = ../../src/gui/components/positioning/juce_RelativeCoordinate.cpp; sourceTree = SOURCE_ROOT; };
657546D70AB7B2709619E07A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativeCoordinate.h; path = ../../src/gui/components/positioning/juce_RelativeCoordinate.h; sourceTree = SOURCE_ROOT; };
D31704DAB806B6AF3ED52DC7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativeCoordinatePositioner.cpp; path = ../../src/gui/components/positioning/juce_RelativeCoordinatePositioner.cpp; sourceTree = SOURCE_ROOT; };
574EC603B2B1189687851319 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativeCoordinatePositioner.h; path = ../../src/gui/components/positioning/juce_RelativeCoordinatePositioner.h; sourceTree = SOURCE_ROOT; };
243EF1A31A779413BC2D5B98 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativeParallelogram.cpp; path = ../../src/gui/components/positioning/juce_RelativeParallelogram.cpp; sourceTree = SOURCE_ROOT; };
72EFFDE39C7255D50F926944 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativeParallelogram.h; path = ../../src/gui/components/positioning/juce_RelativeParallelogram.h; sourceTree = SOURCE_ROOT; };
36BB6DDF702EC9B3DAC851FF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativePoint.cpp; path = ../../src/gui/components/positioning/juce_RelativePoint.cpp; sourceTree = SOURCE_ROOT; };
A3B6342C6207D452F6AD985C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativePoint.h; path = ../../src/gui/components/positioning/juce_RelativePoint.h; sourceTree = SOURCE_ROOT; };
9DA988F1D7CE29E0DFED7EF0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativePointPath.cpp; path = ../../src/gui/components/positioning/juce_RelativePointPath.cpp; sourceTree = SOURCE_ROOT; };
C1A3232DDB617A20D9C26526 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativePointPath.h; path = ../../src/gui/components/positioning/juce_RelativePointPath.h; sourceTree = SOURCE_ROOT; };
072D77C3834B1B3FB77F277B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativeRectangle.cpp; path = ../../src/gui/components/positioning/juce_RelativeRectangle.cpp; sourceTree = SOURCE_ROOT; };
749CA35420339A25BA4E500F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativeRectangle.h; path = ../../src/gui/components/positioning/juce_RelativeRectangle.h; sourceTree = SOURCE_ROOT; };
1C3FFBA02AE51EDD72A6250B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_BooleanPropertyComponent.cpp; path = ../../src/gui/components/properties/juce_BooleanPropertyComponent.cpp; sourceTree = SOURCE_ROOT; }; 1C3FFBA02AE51EDD72A6250B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_BooleanPropertyComponent.cpp; path = ../../src/gui/components/properties/juce_BooleanPropertyComponent.cpp; sourceTree = SOURCE_ROOT; };
B422688E380911F3C21E3F04 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_BooleanPropertyComponent.h; path = ../../src/gui/components/properties/juce_BooleanPropertyComponent.h; sourceTree = SOURCE_ROOT; }; B422688E380911F3C21E3F04 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_BooleanPropertyComponent.h; path = ../../src/gui/components/properties/juce_BooleanPropertyComponent.h; sourceTree = SOURCE_ROOT; };
C45E7E6B6E45DEFBF80940DD = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ButtonPropertyComponent.cpp; path = ../../src/gui/components/properties/juce_ButtonPropertyComponent.cpp; sourceTree = SOURCE_ROOT; }; C45E7E6B6E45DEFBF80940DD = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_ButtonPropertyComponent.cpp; path = ../../src/gui/components/properties/juce_ButtonPropertyComponent.cpp; sourceTree = SOURCE_ROOT; };
@@ -843,8 +860,6 @@
F8C44FF03700F6140950F373 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Rectangle.h; path = ../../src/gui/graphics/geometry/juce_Rectangle.h; sourceTree = SOURCE_ROOT; }; F8C44FF03700F6140950F373 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_Rectangle.h; path = ../../src/gui/graphics/geometry/juce_Rectangle.h; sourceTree = SOURCE_ROOT; };
1B170F70AF8AA0A39074F671 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RectangleList.cpp; path = ../../src/gui/graphics/geometry/juce_RectangleList.cpp; sourceTree = SOURCE_ROOT; }; 1B170F70AF8AA0A39074F671 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RectangleList.cpp; path = ../../src/gui/graphics/geometry/juce_RectangleList.cpp; sourceTree = SOURCE_ROOT; };
8B7D7435287A20CB2D8E3704 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RectangleList.h; path = ../../src/gui/graphics/geometry/juce_RectangleList.h; sourceTree = SOURCE_ROOT; }; 8B7D7435287A20CB2D8E3704 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RectangleList.h; path = ../../src/gui/graphics/geometry/juce_RectangleList.h; sourceTree = SOURCE_ROOT; };
2AA4DDD1F26188A570F4DBE2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_RelativeCoordinate.cpp; path = ../../src/gui/graphics/geometry/juce_RelativeCoordinate.cpp; sourceTree = SOURCE_ROOT; };
54D9BBB69BDA3837240F7749 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = juce_RelativeCoordinate.h; path = ../../src/gui/graphics/geometry/juce_RelativeCoordinate.h; sourceTree = SOURCE_ROOT; };
0F1C5770B363EF7DF64A876A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_GIFLoader.cpp; path = ../../src/gui/graphics/imaging/image_file_formats/juce_GIFLoader.cpp; sourceTree = SOURCE_ROOT; }; 0F1C5770B363EF7DF64A876A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_GIFLoader.cpp; path = ../../src/gui/graphics/imaging/image_file_formats/juce_GIFLoader.cpp; sourceTree = SOURCE_ROOT; };
6619D27E74F623B1E8CE8F71 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_JPEGLoader.cpp; path = ../../src/gui/graphics/imaging/image_file_formats/juce_JPEGLoader.cpp; sourceTree = SOURCE_ROOT; }; 6619D27E74F623B1E8CE8F71 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_JPEGLoader.cpp; path = ../../src/gui/graphics/imaging/image_file_formats/juce_JPEGLoader.cpp; sourceTree = SOURCE_ROOT; };
EAF0F2EAB230F7539B91A7FB = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PNGLoader.cpp; path = ../../src/gui/graphics/imaging/image_file_formats/juce_PNGLoader.cpp; sourceTree = SOURCE_ROOT; }; EAF0F2EAB230F7539B91A7FB = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = juce_PNGLoader.cpp; path = ../../src/gui/graphics/imaging/image_file_formats/juce_PNGLoader.cpp; sourceTree = SOURCE_ROOT; };
@@ -1400,8 +1415,6 @@
44CDA79090B115C3B62A2168, 44CDA79090B115C3B62A2168,
A6AD7357F905309D1B461EB7, A6AD7357F905309D1B461EB7,
E9242E8425497D889C764C66, E9242E8425497D889C764C66,
F665A039C3A85EFDAA3E1245,
8A9F1A98C0C96BF655F606AB,
FF046140CCF1EDB0DFF80178, FF046140CCF1EDB0DFF80178,
B6A223FB5B4A9388C83D6FC7, B6A223FB5B4A9388C83D6FC7,
A95F42C5CB0C2E5052B31568, A95F42C5CB0C2E5052B31568,
@@ -1454,6 +1467,21 @@
2886656DF7ACC9DDC888827F, 2886656DF7ACC9DDC888827F,
0C28F27F9D1CE6CD65185760, 0C28F27F9D1CE6CD65185760,
89AA49DD2A63D80E90A56768 ); name = mouse; sourceTree = "<group>"; }; 89AA49DD2A63D80E90A56768 ); name = mouse; sourceTree = "<group>"; };
362862B72D7FF7997C44CECF = { isa = PBXGroup; children = (
82DFF1BD3665DC32672FCCE8,
5B6CD1833A98F9844B7E3FF4,
D39C0B853C3EBBBD11E7C71E,
657546D70AB7B2709619E07A,
D31704DAB806B6AF3ED52DC7,
574EC603B2B1189687851319,
243EF1A31A779413BC2D5B98,
72EFFDE39C7255D50F926944,
36BB6DDF702EC9B3DAC851FF,
A3B6342C6207D452F6AD985C,
9DA988F1D7CE29E0DFED7EF0,
C1A3232DDB617A20D9C26526,
072D77C3834B1B3FB77F277B,
749CA35420339A25BA4E500F ); name = positioning; sourceTree = "<group>"; };
0F03F34FC3542EF0CF8B31E6 = { isa = PBXGroup; children = ( 0F03F34FC3542EF0CF8B31E6 = { isa = PBXGroup; children = (
1C3FFBA02AE51EDD72A6250B, 1C3FFBA02AE51EDD72A6250B,
B422688E380911F3C21E3F04, B422688E380911F3C21E3F04,
@@ -1533,6 +1561,7 @@
EAE72EDE682D52DF77747660, EAE72EDE682D52DF77747660,
870DE7235866DA3B81B683B8, 870DE7235866DA3B81B683B8,
4F37E36BA5E052B3BD4B87AD, 4F37E36BA5E052B3BD4B87AD,
362862B72D7FF7997C44CECF,
0F03F34FC3542EF0CF8B31E6, 0F03F34FC3542EF0CF8B31E6,
5C03BF1C4CF3DEE1E0D6A3A1, 5C03BF1C4CF3DEE1E0D6A3A1,
48D41BA310DED74E900A5AB0 ); name = components; sourceTree = "<group>"; }; 48D41BA310DED74E900A5AB0 ); name = components; sourceTree = "<group>"; };
@@ -1608,9 +1637,7 @@
469347B6414F2CE9DCEEA386, 469347B6414F2CE9DCEEA386,
F8C44FF03700F6140950F373, F8C44FF03700F6140950F373,
1B170F70AF8AA0A39074F671, 1B170F70AF8AA0A39074F671,
8B7D7435287A20CB2D8E3704,
2AA4DDD1F26188A570F4DBE2,
54D9BBB69BDA3837240F7749 ); name = geometry; sourceTree = "<group>"; };
8B7D7435287A20CB2D8E3704 ); name = geometry; sourceTree = "<group>"; };
D71FD838B3FD1536FCA839A4 = { isa = PBXGroup; children = ( D71FD838B3FD1536FCA839A4 = { isa = PBXGroup; children = (
0F1C5770B363EF7DF64A876A, 0F1C5770B363EF7DF64A876A,
6619D27E74F623B1E8CE8F71, 6619D27E74F623B1E8CE8F71,
@@ -2082,7 +2109,6 @@
9AA76460DA7D34CE6A69E2B1, 9AA76460DA7D34CE6A69E2B1,
4E81BC4A50CF1883F529E152, 4E81BC4A50CF1883F529E152,
8FBB6BF0C5406E1BA481CFEF, 8FBB6BF0C5406E1BA481CFEF,
260EF664D324038F9DC6C35B,
F5F3F25D9F377128DC74D95B, F5F3F25D9F377128DC74D95B,
C64A2BF05224582134872415, C64A2BF05224582134872415,
0A9C9486A6B31F21B1472D2B, 0A9C9486A6B31F21B1472D2B,
@@ -2105,6 +2131,13 @@
968B31D8101A937444C6DFB3, 968B31D8101A937444C6DFB3,
E064E329741F36C329989203, E064E329741F36C329989203,
61E659ADBF9D832ED8F24540, 61E659ADBF9D832ED8F24540,
9379C833B875207E5DFC5A3F,
F1A6C2E3226F87860BFC4EBC,
144872E56AED1981C0973B24,
95648DF5676EBEF57009D09A,
2FE59D80851A0A392EF2F923,
621D2E6CDA267030405166C2,
90347B7C32ACE8A11FC1B708,
FAC87D81FE5168E37645A113, FAC87D81FE5168E37645A113,
E5BB4B5EBFE206E09D0E6E10, E5BB4B5EBFE206E09D0E6E10,
1906C642BF6CA67821512855, 1906C642BF6CA67821512855,
@@ -2163,7 +2196,6 @@
E7C9FAA5F8A4AEDAD8A8CC1D, E7C9FAA5F8A4AEDAD8A8CC1D,
DC4BB8AFC054ECD4141B47CC, DC4BB8AFC054ECD4141B47CC,
084C9F2D4F78134CB1EFE676, 084C9F2D4F78134CB1EFE676,
1110DD0779F44F625316D083,
4DAD08CD3A688747C9CA237B, 4DAD08CD3A688747C9CA237B,
60FE8BFA252E3EF2D60B77AD, 60FE8BFA252E3EF2D60B77AD,
C592CC923C5495467EF05D48, C592CC923C5495467EF05D48,


+ 30
- 8
Juce.jucer View File

@@ -728,10 +728,6 @@
file="src/gui/components/layout/juce_GroupComponent.cpp"/> file="src/gui/components/layout/juce_GroupComponent.cpp"/>
<FILE id="JsmHuUYf" name="juce_GroupComponent.h" compile="0" resource="0" <FILE id="JsmHuUYf" name="juce_GroupComponent.h" compile="0" resource="0"
file="src/gui/components/layout/juce_GroupComponent.h"/> file="src/gui/components/layout/juce_GroupComponent.h"/>
<FILE id="V5xE9Zr" name="juce_MarkerList.cpp" compile="1" resource="0"
file="src/gui/components/layout/juce_MarkerList.cpp"/>
<FILE id="yRrV92n" name="juce_MarkerList.h" compile="0" resource="0"
file="src/gui/components/layout/juce_MarkerList.h"/>
<FILE id="VDH7MUcn5" name="juce_MultiDocumentPanel.cpp" compile="1" <FILE id="VDH7MUcn5" name="juce_MultiDocumentPanel.cpp" compile="1"
resource="0" file="src/gui/components/layout/juce_MultiDocumentPanel.cpp"/> resource="0" file="src/gui/components/layout/juce_MultiDocumentPanel.cpp"/>
<FILE id="FHg3JXTUa" name="juce_MultiDocumentPanel.h" compile="0" resource="0" <FILE id="FHg3JXTUa" name="juce_MultiDocumentPanel.h" compile="0" resource="0"
@@ -837,6 +833,36 @@
<FILE id="hCJfcdNV" name="juce_TooltipClient.h" compile="0" resource="0" <FILE id="hCJfcdNV" name="juce_TooltipClient.h" compile="0" resource="0"
file="src/gui/components/mouse/juce_TooltipClient.h"/> file="src/gui/components/mouse/juce_TooltipClient.h"/>
</GROUP> </GROUP>
<GROUP id="atSBpAe" name="positioning">
<FILE id="A9UAxfF" name="juce_MarkerList.cpp" compile="1" resource="0"
file="src/gui/components/positioning/juce_MarkerList.cpp"/>
<FILE id="cpzKkZg" name="juce_MarkerList.h" compile="0" resource="0"
file="src/gui/components/positioning/juce_MarkerList.h"/>
<FILE id="rDGFuZ8" name="juce_RelativeCoordinate.cpp" compile="1" resource="0"
file="src/gui/components/positioning/juce_RelativeCoordinate.cpp"/>
<FILE id="joDe8QG" name="juce_RelativeCoordinate.h" compile="0" resource="0"
file="src/gui/components/positioning/juce_RelativeCoordinate.h"/>
<FILE id="1eZoAMe" name="juce_RelativeCoordinatePositioner.cpp" compile="1"
resource="0" file="src/gui/components/positioning/juce_RelativeCoordinatePositioner.cpp"/>
<FILE id="XAiqum" name="juce_RelativeCoordinatePositioner.h" compile="0"
resource="0" file="src/gui/components/positioning/juce_RelativeCoordinatePositioner.h"/>
<FILE id="hHlqkdv" name="juce_RelativeParallelogram.cpp" compile="1"
resource="0" file="src/gui/components/positioning/juce_RelativeParallelogram.cpp"/>
<FILE id="CsV5EuL" name="juce_RelativeParallelogram.h" compile="0"
resource="0" file="src/gui/components/positioning/juce_RelativeParallelogram.h"/>
<FILE id="0YwEobm" name="juce_RelativePoint.cpp" compile="1" resource="0"
file="src/gui/components/positioning/juce_RelativePoint.cpp"/>
<FILE id="qfEgr1N" name="juce_RelativePoint.h" compile="0" resource="0"
file="src/gui/components/positioning/juce_RelativePoint.h"/>
<FILE id="Tpw467z" name="juce_RelativePointPath.cpp" compile="1" resource="0"
file="src/gui/components/positioning/juce_RelativePointPath.cpp"/>
<FILE id="IWnsihE" name="juce_RelativePointPath.h" compile="0" resource="0"
file="src/gui/components/positioning/juce_RelativePointPath.h"/>
<FILE id="0KZhQdm" name="juce_RelativeRectangle.cpp" compile="1" resource="0"
file="src/gui/components/positioning/juce_RelativeRectangle.cpp"/>
<FILE id="TFUIpnH" name="juce_RelativeRectangle.h" compile="0" resource="0"
file="src/gui/components/positioning/juce_RelativeRectangle.h"/>
</GROUP>
<GROUP id="ynWya5uGz" name="properties"> <GROUP id="ynWya5uGz" name="properties">
<FILE id="MUcTrPpj" name="juce_BooleanPropertyComponent.cpp" compile="1" <FILE id="MUcTrPpj" name="juce_BooleanPropertyComponent.cpp" compile="1"
resource="0" file="src/gui/components/properties/juce_BooleanPropertyComponent.cpp"/> resource="0" file="src/gui/components/properties/juce_BooleanPropertyComponent.cpp"/>
@@ -1101,10 +1127,6 @@
file="src/gui/graphics/geometry/juce_RectangleList.cpp"/> file="src/gui/graphics/geometry/juce_RectangleList.cpp"/>
<FILE id="OEwUQsN86" name="juce_RectangleList.h" compile="0" resource="0" <FILE id="OEwUQsN86" name="juce_RectangleList.h" compile="0" resource="0"
file="src/gui/graphics/geometry/juce_RectangleList.h"/> file="src/gui/graphics/geometry/juce_RectangleList.h"/>
<FILE id="qXlVCF8ol" name="juce_RelativeCoordinate.cpp" compile="1"
resource="0" file="src/gui/graphics/geometry/juce_RelativeCoordinate.cpp"/>
<FILE id="OKz41frTz" name="juce_RelativeCoordinate.h" compile="0" resource="0"
file="src/gui/graphics/geometry/juce_RelativeCoordinate.h"/>
</GROUP> </GROUP>
<GROUP id="UvRZ4CgGl" name="imaging"> <GROUP id="UvRZ4CgGl" name="imaging">
<GROUP id="UpDEgf4Fr" name="image_file_formats"> <GROUP id="UpDEgf4Fr" name="image_file_formats">


+ 7
- 2
amalgamation/juce_amalgamated_template.cpp View File

@@ -277,7 +277,6 @@
#include "../src/gui/components/layout/juce_ComponentBoundsConstrainer.cpp" #include "../src/gui/components/layout/juce_ComponentBoundsConstrainer.cpp"
#include "../src/gui/components/layout/juce_ComponentMovementWatcher.cpp" #include "../src/gui/components/layout/juce_ComponentMovementWatcher.cpp"
#include "../src/gui/components/layout/juce_GroupComponent.cpp" #include "../src/gui/components/layout/juce_GroupComponent.cpp"
#include "../src/gui/components/layout/juce_MarkerList.cpp"
#include "../src/gui/components/layout/juce_MultiDocumentPanel.cpp" #include "../src/gui/components/layout/juce_MultiDocumentPanel.cpp"
#include "../src/gui/components/layout/juce_ResizableBorderComponent.cpp" #include "../src/gui/components/layout/juce_ResizableBorderComponent.cpp"
#include "../src/gui/components/layout/juce_ResizableCornerComponent.cpp" #include "../src/gui/components/layout/juce_ResizableCornerComponent.cpp"
@@ -327,7 +326,13 @@
#include "../src/gui/components/windows/juce_ThreadWithProgressWindow.cpp" #include "../src/gui/components/windows/juce_ThreadWithProgressWindow.cpp"
#include "../src/gui/components/windows/juce_TooltipWindow.cpp" #include "../src/gui/components/windows/juce_TooltipWindow.cpp"
#include "../src/gui/components/windows/juce_TopLevelWindow.cpp" #include "../src/gui/components/windows/juce_TopLevelWindow.cpp"
#include "../src/gui/graphics/geometry/juce_RelativeCoordinate.cpp"
#include "../src/gui/components/positioning/juce_MarkerList.cpp"
#include "../src/gui/components/positioning/juce_RelativeCoordinate.cpp"
#include "../src/gui/components/positioning/juce_RelativePoint.cpp"
#include "../src/gui/components/positioning/juce_RelativeRectangle.cpp"
#include "../src/gui/components/positioning/juce_RelativePointPath.cpp"
#include "../src/gui/components/positioning/juce_RelativeParallelogram.cpp"
#include "../src/gui/components/positioning/juce_RelativeCoordinatePositioner.cpp"
#endif #endif
#if JUCE_BUILD_MISC // (put these in misc to balance the file sizes and avoid problems in iphone build) #if JUCE_BUILD_MISC // (put these in misc to balance the file sizes and avoid problems in iphone build)


+ 725
- 534
juce_amalgamated.cpp
File diff suppressed because it is too large
View File


+ 579
- 456
juce_amalgamated.h
File diff suppressed because it is too large
View File


+ 5
- 0
src/audio/audio_file_formats/juce_AudioThumbnail.cpp View File

@@ -731,6 +731,11 @@ bool AudioThumbnail::isFullyLoaded() const throw()
return numSamplesFinished >= totalSamples - samplesPerThumbSample; return numSamplesFinished >= totalSamples - samplesPerThumbSample;
} }
int64 AudioThumbnail::getNumSamplesFinished() const throw()
{
return numSamplesFinished;
}
float AudioThumbnail::getApproximatePeak() const float AudioThumbnail::getApproximatePeak() const
{ {
int peak = 0; int peak = 0;


+ 1
- 1
src/core/juce_StandardHeader.h View File

@@ -33,7 +33,7 @@
*/ */
#define JUCE_MAJOR_VERSION 1 #define JUCE_MAJOR_VERSION 1
#define JUCE_MINOR_VERSION 53 #define JUCE_MINOR_VERSION 53
#define JUCE_BUILDNUMBER 4
#define JUCE_BUILDNUMBER 6
/** Current Juce version number. /** Current Juce version number.


+ 23
- 2
src/gui/components/controls/juce_ComboBox.cpp View File

@@ -289,6 +289,19 @@ void ComboBox::setSelectedId (const int newItemId, const bool dontSendChangeMess
} }
} }
bool ComboBox::selectIfEnabled (const int index)
{
const ItemInfo* const item = getItemForIndex (index);
if (item != 0 && item->isEnabled)
{
setSelectedItemIndex (index);
return true;
}
return false;
}
void ComboBox::valueChanged (Value&) void ComboBox::valueChanged (Value&)
{ {
if (lastCurrentId != (int) currentId.getValue()) if (lastCurrentId != (int) currentId.getValue())
@@ -438,12 +451,20 @@ bool ComboBox::keyPressed (const KeyPress& key)
{ {
if (key.isKeyCode (KeyPress::upKey) || key.isKeyCode (KeyPress::leftKey)) if (key.isKeyCode (KeyPress::upKey) || key.isKeyCode (KeyPress::leftKey))
{ {
setSelectedItemIndex (jmax (0, getSelectedItemIndex() - 1));
int index = getSelectedItemIndex() - 1;
while (index >= 0 && ! selectIfEnabled (index))
--index;
return true; return true;
} }
else if (key.isKeyCode (KeyPress::downKey) || key.isKeyCode (KeyPress::rightKey)) else if (key.isKeyCode (KeyPress::downKey) || key.isKeyCode (KeyPress::rightKey))
{ {
setSelectedItemIndex (jmin (getSelectedItemIndex() + 1, getNumItems() - 1));
int index = getSelectedItemIndex() + 1;
while (index < getNumItems() && ! selectIfEnabled (index))
++index;
return true; return true;
} }
else if (key.isKeyCode (KeyPress::returnKey)) else if (key.isKeyCode (KeyPress::returnKey))


+ 1
- 0
src/gui/components/controls/juce_ComboBox.h View File

@@ -397,6 +397,7 @@ private:
ItemInfo* getItemForId (int itemId) const throw(); ItemInfo* getItemForId (int itemId) const throw();
ItemInfo* getItemForIndex (int index) const throw(); ItemInfo* getItemForIndex (int index) const throw();
bool selectIfEnabled (int index);
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ComboBox); JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ComboBox);
}; };


src/gui/components/layout/juce_MarkerList.cpp → src/gui/components/positioning/juce_MarkerList.cpp View File


src/gui/components/layout/juce_MarkerList.h → src/gui/components/positioning/juce_MarkerList.h View File

@@ -27,7 +27,7 @@
#define __JUCE_MARKERLIST_JUCEHEADER__ #define __JUCE_MARKERLIST_JUCEHEADER__
#include "../../../containers/juce_ValueTree.h" #include "../../../containers/juce_ValueTree.h"
#include "../../graphics/geometry/juce_RelativeCoordinate.h"
#include "../positioning/juce_RelativeCoordinate.h"
//============================================================================== //==============================================================================

+ 176
- 0
src/gui/components/positioning/juce_RelativeCoordinate.cpp View File

@@ -0,0 +1,176 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the GNU General
Public License (Version 2), as published by the Free Software Foundation.
A copy of the license is included in the JUCE distribution, or can be found
online at www.gnu.org/licenses.
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
------------------------------------------------------------------------------
To release a closed-source product which uses JUCE, commercial licenses are
available: visit www.rawmaterialsoftware.com/juce for more information.
==============================================================================
*/
#include "../../../core/juce_StandardHeader.h"
BEGIN_JUCE_NAMESPACE
#include "juce_RelativeCoordinate.h"
//==============================================================================
const String RelativeCoordinate::Strings::parent ("parent");
const String RelativeCoordinate::Strings::this_ ("this");
const String RelativeCoordinate::Strings::left ("left");
const String RelativeCoordinate::Strings::right ("right");
const String RelativeCoordinate::Strings::top ("top");
const String RelativeCoordinate::Strings::bottom ("bottom");
const String RelativeCoordinate::Strings::parentLeft ("parent.left");
const String RelativeCoordinate::Strings::parentTop ("parent.top");
const String RelativeCoordinate::Strings::parentRight ("parent.right");
const String RelativeCoordinate::Strings::parentBottom ("parent.bottom");
//==============================================================================
RelativeCoordinate::RelativeCoordinate()
{
}
RelativeCoordinate::RelativeCoordinate (const Expression& term_)
: term (term_)
{
}
RelativeCoordinate::RelativeCoordinate (const RelativeCoordinate& other)
: term (other.term)
{
}
RelativeCoordinate& RelativeCoordinate::operator= (const RelativeCoordinate& other)
{
term = other.term;
return *this;
}
RelativeCoordinate::RelativeCoordinate (const double absoluteDistanceFromOrigin)
: term (absoluteDistanceFromOrigin)
{
}
RelativeCoordinate::RelativeCoordinate (const String& s)
{
try
{
term = Expression (s);
}
catch (...)
{}
}
RelativeCoordinate::~RelativeCoordinate()
{
}
bool RelativeCoordinate::operator== (const RelativeCoordinate& other) const throw()
{
return term.toString() == other.term.toString();
}
bool RelativeCoordinate::operator!= (const RelativeCoordinate& other) const throw()
{
return ! operator== (other);
}
double RelativeCoordinate::resolve (const Expression::EvaluationContext* context) const
{
try
{
if (context != 0)
return term.evaluate (*context);
else
return term.evaluate();
}
catch (...)
{}
return 0.0;
}
bool RelativeCoordinate::isRecursive (const Expression::EvaluationContext* context) const
{
try
{
if (context != 0)
term.evaluate (*context);
else
term.evaluate();
}
catch (...)
{
return true;
}
return false;
}
void RelativeCoordinate::moveToAbsolute (double newPos, const Expression::EvaluationContext* context)
{
try
{
if (context != 0)
{
term = term.adjustedToGiveNewResult (newPos, *context);
}
else
{
Expression::EvaluationContext defaultContext;
term = term.adjustedToGiveNewResult (newPos, defaultContext);
}
}
catch (...)
{}
}
bool RelativeCoordinate::references (const String& coordName, const Expression::EvaluationContext* context) const
{
try
{
return term.referencesSymbol (coordName, context);
}
catch (...)
{}
return false;
}
bool RelativeCoordinate::isDynamic() const
{
return term.usesAnySymbols();
}
const String RelativeCoordinate::toString() const
{
return term.toString();
}
void RelativeCoordinate::renameSymbolIfUsed (const String& oldName, const String& newName)
{
jassert (newName.isNotEmpty() && newName.toLowerCase().containsOnly ("abcdefghijklmnopqrstuvwxyz0123456789_"));
if (term.referencesSymbol (oldName, 0))
term = term.withRenamedSymbol (oldName, newName);
}
END_JUCE_NAMESPACE

+ 138
- 0
src/gui/components/positioning/juce_RelativeCoordinate.h View File

@@ -0,0 +1,138 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the GNU General
Public License (Version 2), as published by the Free Software Foundation.
A copy of the license is included in the JUCE distribution, or can be found
online at www.gnu.org/licenses.
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
------------------------------------------------------------------------------
To release a closed-source product which uses JUCE, commercial licenses are
available: visit www.rawmaterialsoftware.com/juce for more information.
==============================================================================
*/
#ifndef __JUCE_RELATIVECOORDINATE_JUCEHEADER__
#define __JUCE_RELATIVECOORDINATE_JUCEHEADER__
#include "../../graphics/geometry/juce_Path.h"
#include "../../graphics/geometry/juce_Rectangle.h"
#include "../../../maths/juce_Expression.h"
//==============================================================================
/**
Expresses a coordinate as a dynamically evaluated expression.
@see RelativePoint, RelativeRectangle
*/
class JUCE_API RelativeCoordinate
{
public:
//==============================================================================
/** Creates a zero coordinate. */
RelativeCoordinate();
RelativeCoordinate (const Expression& expression);
RelativeCoordinate (const RelativeCoordinate& other);
RelativeCoordinate& operator= (const RelativeCoordinate& other);
/** Creates an absolute position from the parent origin on either the X or Y axis.
@param absoluteDistanceFromOrigin the distance from the origin
*/
RelativeCoordinate (double absoluteDistanceFromOrigin);
/** Recreates a coordinate from a string description.
The string will be parsed by ExpressionParser::parse().
@param stringVersion the expression to use
@see toString
*/
RelativeCoordinate (const String& stringVersion);
/** Destructor. */
~RelativeCoordinate();
bool operator== (const RelativeCoordinate& other) const throw();
bool operator!= (const RelativeCoordinate& other) const throw();
//==============================================================================
/** Calculates the absolute position of this coordinate.
You'll need to provide a suitable Expression::EvaluationContext for looking up any coordinates that may
be needed to calculate the result.
*/
double resolve (const Expression::EvaluationContext* evaluationContext) const;
/** Returns true if this coordinate uses the specified coord name at any level in its evaluation.
This will recursively check any coordinates upon which this one depends.
*/
bool references (const String& coordName, const Expression::EvaluationContext* evaluationContext) const;
/** Returns true if there's a recursive loop when trying to resolve this coordinate's position. */
bool isRecursive (const Expression::EvaluationContext* evaluationContext) const;
/** Returns true if this coordinate depends on any other coordinates for its position. */
bool isDynamic() const;
//==============================================================================
/** Changes the value of this coord to make it resolve to the specified position.
Calling this will leave the anchor points unchanged, but will set this coordinate's absolute
or relative position to whatever value is necessary to make its resultant position
match the position that is provided.
*/
void moveToAbsolute (double absoluteTargetPosition, const Expression::EvaluationContext* evaluationContext);
/** Changes the name of a symbol if it is used as part of the coordinate's expression. */
void renameSymbolIfUsed (const String& oldName, const String& newName);
/** Returns the expression that defines this coordinate. */
const Expression& getExpression() const { return term; }
//==============================================================================
/** Returns a string which represents this coordinate.
For details of the string syntax, see the constructor notes.
*/
const String toString() const;
//==============================================================================
/** A set of static strings that are commonly used by the RelativeCoordinate class.
As well as avoiding using string literals in your code, using these preset values
has the advantage that all instances of the same string will share the same, reference-counted
String object, so if you have thousands of points which all refer to the same
anchor points, this can save a significant amount of memory allocation.
*/
struct Strings
{
static const String parent; /**< "parent" */
static const String this_; /**< "this" */
static const String left; /**< "left" */
static const String right; /**< "right" */
static const String top; /**< "top" */
static const String bottom; /**< "bottom" */
static const String parentLeft; /**< "parent.left" */
static const String parentTop; /**< "parent.top" */
static const String parentRight; /**< "parent.right" */
static const String parentBottom; /**< "parent.bottom" */
};
private:
//==============================================================================
Expression term;
};
#endif // __JUCE_RELATIVECOORDINATE_JUCEHEADER__

+ 279
- 0
src/gui/components/positioning/juce_RelativeCoordinatePositioner.cpp View File

@@ -0,0 +1,279 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the GNU General
Public License (Version 2), as published by the Free Software Foundation.
A copy of the license is included in the JUCE distribution, or can be found
online at www.gnu.org/licenses.
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
------------------------------------------------------------------------------
To release a closed-source product which uses JUCE, commercial licenses are
available: visit www.rawmaterialsoftware.com/juce for more information.
==============================================================================
*/
#include "../../../core/juce_StandardHeader.h"
BEGIN_JUCE_NAMESPACE
#include "juce_RelativeCoordinatePositioner.h"
//==============================================================================
RelativeCoordinatePositionerBase::RelativeCoordinatePositionerBase (Component& component_)
: Component::Positioner (component_), registeredOk (false)
{
}
RelativeCoordinatePositionerBase::~RelativeCoordinatePositionerBase()
{
unregisterListeners();
}
const Expression RelativeCoordinatePositionerBase::getSymbolValue (const String& objectName, const String& member) const
{
jassert (objectName.isNotEmpty());
if (member.isNotEmpty())
{
const Component* comp = getSourceComponent (objectName);
if (comp == 0)
{
if (objectName == RelativeCoordinate::Strings::parent)
comp = getComponent().getParentComponent();
else if (objectName == RelativeCoordinate::Strings::this_ || objectName == getComponent().getComponentID())
comp = &getComponent();
}
if (comp != 0)
{
if (member == RelativeCoordinate::Strings::left) return xToExpression (comp, 0);
if (member == RelativeCoordinate::Strings::right) return xToExpression (comp, comp->getWidth());
if (member == RelativeCoordinate::Strings::top) return yToExpression (comp, 0);
if (member == RelativeCoordinate::Strings::bottom) return yToExpression (comp, comp->getHeight());
}
}
for (int i = sourceMarkerLists.size(); --i >= 0;)
{
MarkerList* const markerList = sourceMarkerLists.getUnchecked(i);
const MarkerList::Marker* const marker = markerList->getMarker (objectName);
if (marker != 0)
return marker->position.getExpression();
}
return Expression::EvaluationContext::getSymbolValue (objectName, member);
}
void RelativeCoordinatePositionerBase::componentMovedOrResized (Component&, bool /*wasMoved*/, bool /*wasResized*/)
{
apply();
}
void RelativeCoordinatePositionerBase::componentParentHierarchyChanged (Component&)
{
apply();
}
void RelativeCoordinatePositionerBase::componentBeingDeleted (Component& component)
{
jassert (sourceComponents.contains (&component));
sourceComponents.removeValue (&component);
}
void RelativeCoordinatePositionerBase::markersChanged (MarkerList*)
{
apply();
}
void RelativeCoordinatePositionerBase::markerListBeingDeleted (MarkerList* markerList)
{
jassert (sourceMarkerLists.contains (markerList));
sourceMarkerLists.removeValue (markerList);
}
void RelativeCoordinatePositionerBase::apply()
{
if (! registeredOk)
{
unregisterListeners();
registeredOk = registerCoordinates();
}
applyToComponentBounds();
}
bool RelativeCoordinatePositionerBase::addCoordinate (const RelativeCoordinate& coord)
{
return registerListeners (coord.getExpression());
}
bool RelativeCoordinatePositionerBase::registerListeners (const Expression& e)
{
bool ok = true;
if (e.getType() == Expression::symbolType)
{
String objectName, memberName;
e.getSymbolParts (objectName, memberName);
if (memberName.isNotEmpty())
ok = registerComponent (objectName) && ok;
else
ok = registerMarker (objectName) && ok;
}
else
{
for (int i = e.getNumInputs(); --i >= 0;)
ok = registerListeners (e.getInput (i)) && ok;
}
return ok;
}
bool RelativeCoordinatePositionerBase::registerComponent (const String& componentID)
{
Component* comp = findComponent (componentID);
if (comp == 0)
{
if (componentID == RelativeCoordinate::Strings::parent)
comp = getComponent().getParentComponent();
else if (componentID == RelativeCoordinate::Strings::this_ || componentID == getComponent().getComponentID())
comp = &getComponent();
}
if (comp != 0)
{
if (comp != &getComponent())
registerComponentListener (comp);
return true;
}
else
{
// The component we want doesn't exist, so watch the parent in case the hierarchy changes and it appears later..
Component* const parent = getComponent().getParentComponent();
if (parent != 0)
registerComponentListener (parent);
else
registerComponentListener (&getComponent());
return false;
}
}
bool RelativeCoordinatePositionerBase::registerMarker (const String markerName)
{
Component* const parent = getComponent().getParentComponent();
if (parent != 0)
{
MarkerList* list = parent->getMarkers (true);
if (list == 0 || list->getMarker (markerName) == 0)
list = parent->getMarkers (false);
if (list != 0 && list->getMarker (markerName) != 0)
{
registerMarkerListListener (list);
return true;
}
else
{
// The marker we want doesn't exist, so watch all lists in case they change and the marker appears later..
registerMarkerListListener (parent->getMarkers (true));
registerMarkerListListener (parent->getMarkers (false));
}
}
return false;
}
void RelativeCoordinatePositionerBase::registerComponentListener (Component* const comp)
{
if (comp != 0 && ! sourceComponents.contains (comp))
{
comp->addComponentListener (this);
sourceComponents.add (comp);
}
}
void RelativeCoordinatePositionerBase::registerMarkerListListener (MarkerList* const list)
{
if (list != 0 && ! sourceMarkerLists.contains (list))
{
list->addListener (this);
sourceMarkerLists.add (list);
}
}
void RelativeCoordinatePositionerBase::unregisterListeners()
{
int i;
for (i = sourceComponents.size(); --i >= 0;)
sourceComponents.getUnchecked(i)->removeComponentListener (this);
for (i = sourceMarkerLists.size(); --i >= 0;)
sourceMarkerLists.getUnchecked(i)->removeListener (this);
sourceComponents.clear();
sourceMarkerLists.clear();
}
Component* RelativeCoordinatePositionerBase::findComponent (const String& componentID) const
{
Component* const parent = getComponent().getParentComponent();
if (parent != 0)
{
for (int i = parent->getNumChildComponents(); --i >= 0;)
{
Component* const c = parent->getChildComponent(i);
if (c->getComponentID() == componentID)
return c;
}
}
return 0;
}
Component* RelativeCoordinatePositionerBase::getSourceComponent (const String& objectName) const
{
for (int i = sourceComponents.size(); --i >= 0;)
{
Component* const comp = sourceComponents.getUnchecked(i);
if (comp->getComponentID() == objectName)
return comp;
}
return 0;
}
const Expression RelativeCoordinatePositionerBase::xToExpression (const Component* const source, const int x) const
{
return Expression ((double) (getComponent().getLocalPoint (source, Point<int> (x, 0)).getX() + getComponent().getX()));
}
const Expression RelativeCoordinatePositionerBase::yToExpression (const Component* const source, const int y) const
{
return Expression ((double) (getComponent().getLocalPoint (source, Point<int> (0, y)).getY() + getComponent().getY()));
}
END_JUCE_NAMESPACE

+ 83
- 0
src/gui/components/positioning/juce_RelativeCoordinatePositioner.h View File

@@ -0,0 +1,83 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the GNU General
Public License (Version 2), as published by the Free Software Foundation.
A copy of the license is included in the JUCE distribution, or can be found
online at www.gnu.org/licenses.
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
------------------------------------------------------------------------------
To release a closed-source product which uses JUCE, commercial licenses are
available: visit www.rawmaterialsoftware.com/juce for more information.
==============================================================================
*/
#ifndef __JUCE_RELATIVECOORDINATEPOSITIONER_JUCEHEADER__
#define __JUCE_RELATIVECOORDINATEPOSITIONER_JUCEHEADER__
#include "juce_RelativeCoordinate.h"
#include "juce_MarkerList.h"
#include "../juce_Component.h"
//==============================================================================
/**
Base class for Component::Positioners that are based upon relative coordinates.
*/
class RelativeCoordinatePositionerBase : public Component::Positioner,
public ComponentListener,
public MarkerList::Listener,
public Expression::EvaluationContext
{
public:
RelativeCoordinatePositionerBase (Component& component_);
~RelativeCoordinatePositionerBase();
const Expression getSymbolValue (const String& objectName, const String& member) const;
void componentMovedOrResized (Component&, bool, bool);
void componentParentHierarchyChanged (Component&);
void componentBeingDeleted (Component& component);
void markersChanged (MarkerList*);
void markerListBeingDeleted (MarkerList* markerList);
void apply();
protected:
bool addCoordinate (const RelativeCoordinate& coord);
virtual bool registerCoordinates() = 0;
virtual void applyToComponentBounds() = 0;
private:
Array <Component*> sourceComponents;
Array <MarkerList*> sourceMarkerLists;
bool registeredOk;
bool registerListeners (const Expression& e);
bool registerComponent (const String& componentID);
bool registerMarker (const String markerName);
void registerComponentListener (Component* const comp);
void registerMarkerListListener (MarkerList* const list);
void unregisterListeners();
Component* findComponent (const String& componentID) const;
Component* getSourceComponent (const String& objectName) const;
const Expression xToExpression (const Component* const source, const int x) const;
const Expression yToExpression (const Component* const source, const int y) const;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (RelativeCoordinatePositionerBase);
};
#endif // __JUCE_RELATIVECOORDINATEPOSITIONER_JUCEHEADER__

+ 133
- 0
src/gui/components/positioning/juce_RelativeParallelogram.cpp View File

@@ -0,0 +1,133 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the GNU General
Public License (Version 2), as published by the Free Software Foundation.
A copy of the license is included in the JUCE distribution, or can be found
online at www.gnu.org/licenses.
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
------------------------------------------------------------------------------
To release a closed-source product which uses JUCE, commercial licenses are
available: visit www.rawmaterialsoftware.com/juce for more information.
==============================================================================
*/
#include "../../../core/juce_StandardHeader.h"
BEGIN_JUCE_NAMESPACE
#include "juce_RelativeParallelogram.h"
//==============================================================================
RelativeParallelogram::RelativeParallelogram()
{
}
RelativeParallelogram::RelativeParallelogram (const Rectangle<float>& r)
: topLeft (r.getTopLeft()), topRight (r.getTopRight()), bottomLeft (r.getBottomLeft())
{
}
RelativeParallelogram::RelativeParallelogram (const RelativePoint& topLeft_, const RelativePoint& topRight_, const RelativePoint& bottomLeft_)
: topLeft (topLeft_), topRight (topRight_), bottomLeft (bottomLeft_)
{
}
RelativeParallelogram::RelativeParallelogram (const String& topLeft_, const String& topRight_, const String& bottomLeft_)
: topLeft (topLeft_), topRight (topRight_), bottomLeft (bottomLeft_)
{
}
RelativeParallelogram::~RelativeParallelogram()
{
}
void RelativeParallelogram::resolveThreePoints (Point<float>* points, Expression::EvaluationContext* const coordFinder) const
{
points[0] = topLeft.resolve (coordFinder);
points[1] = topRight.resolve (coordFinder);
points[2] = bottomLeft.resolve (coordFinder);
}
void RelativeParallelogram::resolveFourCorners (Point<float>* points, Expression::EvaluationContext* const coordFinder) const
{
resolveThreePoints (points, coordFinder);
points[3] = points[1] + (points[2] - points[0]);
}
const Rectangle<float> RelativeParallelogram::getBounds (Expression::EvaluationContext* const coordFinder) const
{
Point<float> points[4];
resolveFourCorners (points, coordFinder);
return Rectangle<float>::findAreaContainingPoints (points, 4);
}
void RelativeParallelogram::getPath (Path& path, Expression::EvaluationContext* const coordFinder) const
{
Point<float> points[4];
resolveFourCorners (points, coordFinder);
path.startNewSubPath (points[0]);
path.lineTo (points[1]);
path.lineTo (points[3]);
path.lineTo (points[2]);
path.closeSubPath();
}
const AffineTransform RelativeParallelogram::resetToPerpendicular (Expression::EvaluationContext* const coordFinder)
{
Point<float> corners[3];
resolveThreePoints (corners, coordFinder);
const Line<float> top (corners[0], corners[1]);
const Line<float> left (corners[0], corners[2]);
const Point<float> newTopRight (corners[0] + Point<float> (top.getLength(), 0.0f));
const Point<float> newBottomLeft (corners[0] + Point<float> (0.0f, left.getLength()));
topRight.moveToAbsolute (newTopRight, coordFinder);
bottomLeft.moveToAbsolute (newBottomLeft, coordFinder);
return AffineTransform::fromTargetPoints (corners[0].getX(), corners[0].getY(), corners[0].getX(), corners[0].getY(),
corners[1].getX(), corners[1].getY(), newTopRight.getX(), newTopRight.getY(),
corners[2].getX(), corners[2].getY(), newBottomLeft.getX(), newBottomLeft.getY());
}
bool RelativeParallelogram::operator== (const RelativeParallelogram& other) const throw()
{
return topLeft == other.topLeft && topRight == other.topRight && bottomLeft == other.bottomLeft;
}
bool RelativeParallelogram::operator!= (const RelativeParallelogram& other) const throw()
{
return ! operator== (other);
}
const Point<float> RelativeParallelogram::getInternalCoordForPoint (const Point<float>* const corners, Point<float> target) throw()
{
const Point<float> tr (corners[1] - corners[0]);
const Point<float> bl (corners[2] - corners[0]);
target -= corners[0];
return Point<float> (Line<float> (Point<float>(), tr).getIntersection (Line<float> (target, target - bl)).getDistanceFromOrigin(),
Line<float> (Point<float>(), bl).getIntersection (Line<float> (target, target - tr)).getDistanceFromOrigin());
}
const Point<float> RelativeParallelogram::getPointForInternalCoord (const Point<float>* const corners, const Point<float>& point) throw()
{
return corners[0]
+ Line<float> (Point<float>(), corners[1] - corners[0]).getPointAlongLine (point.getX())
+ Line<float> (Point<float>(), corners[2] - corners[0]).getPointAlongLine (point.getY());
}
END_JUCE_NAMESPACE

+ 66
- 0
src/gui/components/positioning/juce_RelativeParallelogram.h View File

@@ -0,0 +1,66 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the GNU General
Public License (Version 2), as published by the Free Software Foundation.
A copy of the license is included in the JUCE distribution, or can be found
online at www.gnu.org/licenses.
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
------------------------------------------------------------------------------
To release a closed-source product which uses JUCE, commercial licenses are
available: visit www.rawmaterialsoftware.com/juce for more information.
==============================================================================
*/
#ifndef __JUCE_RELATIVEPARALLELOGRAM_JUCEHEADER__
#define __JUCE_RELATIVEPARALLELOGRAM_JUCEHEADER__
#include "juce_RelativePoint.h"
//==============================================================================
/**
A parallelogram defined by three RelativePoint positions.
@see RelativePoint, RelativeCoordinate
*/
class JUCE_API RelativeParallelogram
{
public:
//==============================================================================
RelativeParallelogram();
RelativeParallelogram (const Rectangle<float>& simpleRectangle);
RelativeParallelogram (const RelativePoint& topLeft, const RelativePoint& topRight, const RelativePoint& bottomLeft);
RelativeParallelogram (const String& topLeft, const String& topRight, const String& bottomLeft);
~RelativeParallelogram();
//==============================================================================
void resolveThreePoints (Point<float>* points, Expression::EvaluationContext* coordFinder) const;
void resolveFourCorners (Point<float>* points, Expression::EvaluationContext* coordFinder) const;
const Rectangle<float> getBounds (Expression::EvaluationContext* coordFinder) const;
void getPath (Path& path, Expression::EvaluationContext* coordFinder) const;
const AffineTransform resetToPerpendicular (Expression::EvaluationContext* coordFinder);
bool operator== (const RelativeParallelogram& other) const throw();
bool operator!= (const RelativeParallelogram& other) const throw();
static const Point<float> getInternalCoordForPoint (const Point<float>* parallelogramCorners, Point<float> point) throw();
static const Point<float> getPointForInternalCoord (const Point<float>* parallelogramCorners, const Point<float>& internalPoint) throw();
//==============================================================================
RelativePoint topLeft, topRight, bottomLeft;
};
#endif // __JUCE_RELATIVEPARALLELOGRAM_JUCEHEADER__

+ 111
- 0
src/gui/components/positioning/juce_RelativePoint.cpp View File

@@ -0,0 +1,111 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the GNU General
Public License (Version 2), as published by the Free Software Foundation.
A copy of the license is included in the JUCE distribution, or can be found
online at www.gnu.org/licenses.
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
------------------------------------------------------------------------------
To release a closed-source product which uses JUCE, commercial licenses are
available: visit www.rawmaterialsoftware.com/juce for more information.
==============================================================================
*/
#include "../../../core/juce_StandardHeader.h"
BEGIN_JUCE_NAMESPACE
#include "juce_RelativePoint.h"
namespace RelativePointHelpers
{
void skipComma (const juce_wchar* const s, int& i)
{
while (CharacterFunctions::isWhitespace (s[i]))
++i;
if (s[i] == ',')
++i;
}
}
//==============================================================================
RelativePoint::RelativePoint()
{
}
RelativePoint::RelativePoint (const Point<float>& absolutePoint)
: x (absolutePoint.getX()), y (absolutePoint.getY())
{
}
RelativePoint::RelativePoint (const float x_, const float y_)
: x (x_), y (y_)
{
}
RelativePoint::RelativePoint (const RelativeCoordinate& x_, const RelativeCoordinate& y_)
: x (x_), y (y_)
{
}
RelativePoint::RelativePoint (const String& s)
{
int i = 0;
x = RelativeCoordinate (Expression::parse (s, i));
RelativePointHelpers::skipComma (s, i);
y = RelativeCoordinate (Expression::parse (s, i));
}
bool RelativePoint::operator== (const RelativePoint& other) const throw()
{
return x == other.x && y == other.y;
}
bool RelativePoint::operator!= (const RelativePoint& other) const throw()
{
return ! operator== (other);
}
const Point<float> RelativePoint::resolve (const Expression::EvaluationContext* context) const
{
return Point<float> ((float) x.resolve (context),
(float) y.resolve (context));
}
void RelativePoint::moveToAbsolute (const Point<float>& newPos, const Expression::EvaluationContext* context)
{
x.moveToAbsolute (newPos.getX(), context);
y.moveToAbsolute (newPos.getY(), context);
}
const String RelativePoint::toString() const
{
return x.toString() + ", " + y.toString();
}
void RelativePoint::renameSymbolIfUsed (const String& oldName, const String& newName)
{
x.renameSymbolIfUsed (oldName, newName);
y.renameSymbolIfUsed (oldName, newName);
}
bool RelativePoint::isDynamic() const
{
return x.isDynamic() || y.isDynamic();
}
END_JUCE_NAMESPACE

+ 98
- 0
src/gui/components/positioning/juce_RelativePoint.h View File

@@ -0,0 +1,98 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the GNU General
Public License (Version 2), as published by the Free Software Foundation.
A copy of the license is included in the JUCE distribution, or can be found
online at www.gnu.org/licenses.
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
------------------------------------------------------------------------------
To release a closed-source product which uses JUCE, commercial licenses are
available: visit www.rawmaterialsoftware.com/juce for more information.
==============================================================================
*/
#ifndef __JUCE_RELATIVEPOINT_JUCEHEADER__
#define __JUCE_RELATIVEPOINT_JUCEHEADER__
#include "juce_RelativeCoordinate.h"
//==============================================================================
/**
An X-Y position stored as a pair of RelativeCoordinate values.
@see RelativeCoordinate, RelativeRectangle
*/
class JUCE_API RelativePoint
{
public:
/** Creates a point at the origin. */
RelativePoint();
/** Creates an absolute point, relative to the origin. */
RelativePoint (const Point<float>& absolutePoint);
/** Creates an absolute point, relative to the origin. */
RelativePoint (float absoluteX, float absoluteY);
/** Creates an absolute point from two coordinates. */
RelativePoint (const RelativeCoordinate& x, const RelativeCoordinate& y);
/** Creates a point from a stringified representation.
The string must contain a pair of coordinates, separated by space or a comma. The syntax for the coordinate
strings is explained in the RelativeCoordinate class.
@see toString
*/
RelativePoint (const String& stringVersion);
bool operator== (const RelativePoint& other) const throw();
bool operator!= (const RelativePoint& other) const throw();
/** Calculates the absolute position of this point.
You'll need to provide a suitable Expression::EvaluationContext for looking up any coordinates that may
be needed to calculate the result.
*/
const Point<float> resolve (const Expression::EvaluationContext* evaluationContext) const;
/** Changes the values of this point's coordinates to make it resolve to the specified position.
Calling this will leave any anchor points unchanged, but will set any absolute
or relative positions to whatever values are necessary to make the resultant position
match the position that is provided.
*/
void moveToAbsolute (const Point<float>& newPos, const Expression::EvaluationContext* evaluationContext);
/** Returns a string which represents this point.
This returns a comma-separated pair of coordinates. For details of the string syntax used by the
coordinates, see the RelativeCoordinate constructor notes.
The string that is returned can be passed to the RelativePoint constructor to recreate the point.
*/
const String toString() const;
/** Renames a symbol if it is used by any of the coordinates.
This calls RelativeCoordinate::renameAnchorIfUsed() on its X and Y coordinates.
*/
void renameSymbolIfUsed (const String& oldName, const String& newName);
/** Returns true if this point depends on any other coordinates for its position. */
bool isDynamic() const;
// The actual X and Y coords...
RelativeCoordinate x, y;
};
#endif // __JUCE_RELATIVEPOINT_JUCEHEADER__

+ 306
- 0
src/gui/components/positioning/juce_RelativePointPath.cpp View File

@@ -0,0 +1,306 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the GNU General
Public License (Version 2), as published by the Free Software Foundation.
A copy of the license is included in the JUCE distribution, or can be found
online at www.gnu.org/licenses.
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
------------------------------------------------------------------------------
To release a closed-source product which uses JUCE, commercial licenses are
available: visit www.rawmaterialsoftware.com/juce for more information.
==============================================================================
*/
#include "../../../core/juce_StandardHeader.h"
BEGIN_JUCE_NAMESPACE
#include "juce_RelativePointPath.h"
#include "../../graphics/drawables/juce_DrawablePath.h"
//==============================================================================
RelativePointPath::RelativePointPath()
: usesNonZeroWinding (true),
containsDynamicPoints (false)
{
}
RelativePointPath::RelativePointPath (const RelativePointPath& other)
: usesNonZeroWinding (true),
containsDynamicPoints (false)
{
for (int i = 0; i < other.elements.size(); ++i)
elements.add (other.elements.getUnchecked(i)->clone());
}
RelativePointPath::RelativePointPath (const Path& path)
{
usesNonZeroWinding = path.isUsingNonZeroWinding();
Path::Iterator i (path);
while (i.next())
{
switch (i.elementType)
{
case Path::Iterator::startNewSubPath: elements.add (new StartSubPath (RelativePoint (i.x1, i.y1))); break;
case Path::Iterator::lineTo: elements.add (new LineTo (RelativePoint (i.x1, i.y1))); break;
case Path::Iterator::quadraticTo: elements.add (new QuadraticTo (RelativePoint (i.x1, i.y1), RelativePoint (i.x2, i.y2))); break;
case Path::Iterator::cubicTo: elements.add (new CubicTo (RelativePoint (i.x1, i.y1), RelativePoint (i.x2, i.y2), RelativePoint (i.x3, i.y3))); break;
case Path::Iterator::closePath: elements.add (new CloseSubPath()); break;
default: jassertfalse; break;
}
}
}
RelativePointPath::~RelativePointPath()
{
}
bool RelativePointPath::operator== (const RelativePointPath& other) const throw()
{
if (elements.size() != other.elements.size()
|| usesNonZeroWinding != other.usesNonZeroWinding
|| containsDynamicPoints != other.containsDynamicPoints)
return false;
for (int i = 0; i < elements.size(); ++i)
{
ElementBase* const e1 = elements.getUnchecked(i);
ElementBase* const e2 = other.elements.getUnchecked(i);
if (e1->type != e2->type)
return false;
int numPoints1, numPoints2;
RelativePoint* const points1 = e1->getControlPoints (numPoints1);
RelativePoint* const points2 = e2->getControlPoints (numPoints2);
jassert (numPoints1 == numPoints2);
for (int j = numPoints1; --j >= 0;)
if (points1[j] != points2[j])
return false;
}
return true;
}
bool RelativePointPath::operator!= (const RelativePointPath& other) const throw()
{
return ! operator== (other);
}
void RelativePointPath::swapWith (RelativePointPath& other) throw()
{
elements.swapWithArray (other.elements);
swapVariables (usesNonZeroWinding, other.usesNonZeroWinding);
}
void RelativePointPath::createPath (Path& path, Expression::EvaluationContext* coordFinder) const
{
for (int i = 0; i < elements.size(); ++i)
elements.getUnchecked(i)->addToPath (path, coordFinder);
}
bool RelativePointPath::containsAnyDynamicPoints() const
{
return containsDynamicPoints;
}
void RelativePointPath::addElement (ElementBase* newElement)
{
if (newElement != 0)
{
elements.add (newElement);
containsDynamicPoints = containsDynamicPoints || newElement->isDynamic();
}
}
//==============================================================================
RelativePointPath::ElementBase::ElementBase (const ElementType type_) : type (type_)
{
}
bool RelativePointPath::ElementBase::isDynamic()
{
int numPoints;
const RelativePoint* const points = getControlPoints (numPoints);
for (int i = numPoints; --i >= 0;)
if (points[i].isDynamic())
return true;
return false;
}
//==============================================================================
RelativePointPath::StartSubPath::StartSubPath (const RelativePoint& pos)
: ElementBase (startSubPathElement), startPos (pos)
{
}
const ValueTree RelativePointPath::StartSubPath::createTree() const
{
ValueTree v (DrawablePath::ValueTreeWrapper::Element::startSubPathElement);
v.setProperty (DrawablePath::ValueTreeWrapper::point1, startPos.toString(), 0);
return v;
}
void RelativePointPath::StartSubPath::addToPath (Path& path, Expression::EvaluationContext* coordFinder) const
{
path.startNewSubPath (startPos.resolve (coordFinder));
}
RelativePoint* RelativePointPath::StartSubPath::getControlPoints (int& numPoints)
{
numPoints = 1;
return &startPos;
}
RelativePointPath::ElementBase* RelativePointPath::StartSubPath::clone() const
{
return new StartSubPath (startPos);
}
//==============================================================================
RelativePointPath::CloseSubPath::CloseSubPath()
: ElementBase (closeSubPathElement)
{
}
const ValueTree RelativePointPath::CloseSubPath::createTree() const
{
return ValueTree (DrawablePath::ValueTreeWrapper::Element::closeSubPathElement);
}
void RelativePointPath::CloseSubPath::addToPath (Path& path, Expression::EvaluationContext*) const
{
path.closeSubPath();
}
RelativePoint* RelativePointPath::CloseSubPath::getControlPoints (int& numPoints)
{
numPoints = 0;
return 0;
}
RelativePointPath::ElementBase* RelativePointPath::CloseSubPath::clone() const
{
return new CloseSubPath();
}
//==============================================================================
RelativePointPath::LineTo::LineTo (const RelativePoint& endPoint_)
: ElementBase (lineToElement), endPoint (endPoint_)
{
}
const ValueTree RelativePointPath::LineTo::createTree() const
{
ValueTree v (DrawablePath::ValueTreeWrapper::Element::lineToElement);
v.setProperty (DrawablePath::ValueTreeWrapper::point1, endPoint.toString(), 0);
return v;
}
void RelativePointPath::LineTo::addToPath (Path& path, Expression::EvaluationContext* coordFinder) const
{
path.lineTo (endPoint.resolve (coordFinder));
}
RelativePoint* RelativePointPath::LineTo::getControlPoints (int& numPoints)
{
numPoints = 1;
return &endPoint;
}
RelativePointPath::ElementBase* RelativePointPath::LineTo::clone() const
{
return new LineTo (endPoint);
}
//==============================================================================
RelativePointPath::QuadraticTo::QuadraticTo (const RelativePoint& controlPoint, const RelativePoint& endPoint)
: ElementBase (quadraticToElement)
{
controlPoints[0] = controlPoint;
controlPoints[1] = endPoint;
}
const ValueTree RelativePointPath::QuadraticTo::createTree() const
{
ValueTree v (DrawablePath::ValueTreeWrapper::Element::quadraticToElement);
v.setProperty (DrawablePath::ValueTreeWrapper::point1, controlPoints[0].toString(), 0);
v.setProperty (DrawablePath::ValueTreeWrapper::point2, controlPoints[1].toString(), 0);
return v;
}
void RelativePointPath::QuadraticTo::addToPath (Path& path, Expression::EvaluationContext* coordFinder) const
{
path.quadraticTo (controlPoints[0].resolve (coordFinder),
controlPoints[1].resolve (coordFinder));
}
RelativePoint* RelativePointPath::QuadraticTo::getControlPoints (int& numPoints)
{
numPoints = 2;
return controlPoints;
}
RelativePointPath::ElementBase* RelativePointPath::QuadraticTo::clone() const
{
return new QuadraticTo (controlPoints[0], controlPoints[1]);
}
//==============================================================================
RelativePointPath::CubicTo::CubicTo (const RelativePoint& controlPoint1, const RelativePoint& controlPoint2, const RelativePoint& endPoint)
: ElementBase (cubicToElement)
{
controlPoints[0] = controlPoint1;
controlPoints[1] = controlPoint2;
controlPoints[2] = endPoint;
}
const ValueTree RelativePointPath::CubicTo::createTree() const
{
ValueTree v (DrawablePath::ValueTreeWrapper::Element::cubicToElement);
v.setProperty (DrawablePath::ValueTreeWrapper::point1, controlPoints[0].toString(), 0);
v.setProperty (DrawablePath::ValueTreeWrapper::point2, controlPoints[1].toString(), 0);
v.setProperty (DrawablePath::ValueTreeWrapper::point3, controlPoints[2].toString(), 0);
return v;
}
void RelativePointPath::CubicTo::addToPath (Path& path, Expression::EvaluationContext* coordFinder) const
{
path.cubicTo (controlPoints[0].resolve (coordFinder),
controlPoints[1].resolve (coordFinder),
controlPoints[2].resolve (coordFinder));
}
RelativePoint* RelativePointPath::CubicTo::getControlPoints (int& numPoints)
{
numPoints = 3;
return controlPoints;
}
RelativePointPath::ElementBase* RelativePointPath::CubicTo::clone() const
{
return new CubicTo (controlPoints[0], controlPoints[1], controlPoints[2]);
}
END_JUCE_NAMESPACE

+ 196
- 0
src/gui/components/positioning/juce_RelativePointPath.h View File

@@ -0,0 +1,196 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the GNU General
Public License (Version 2), as published by the Free Software Foundation.
A copy of the license is included in the JUCE distribution, or can be found
online at www.gnu.org/licenses.
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
------------------------------------------------------------------------------
To release a closed-source product which uses JUCE, commercial licenses are
available: visit www.rawmaterialsoftware.com/juce for more information.
==============================================================================
*/
#ifndef __JUCE_RELATIVEPOINTPATH_JUCEHEADER__
#define __JUCE_RELATIVEPOINTPATH_JUCEHEADER__
#include "juce_RelativePoint.h"
#include "../../../containers/juce_OwnedArray.h"
#include "../../../containers/juce_ValueTree.h"
class DrawablePath;
//==============================================================================
/**
A path object that consists of RelativePoint coordinates rather than the normal fixed ones.
One of these paths can be converted into a Path object for drawing and manipulation, but
unlike a Path, its points can be dynamic instead of just fixed.
@see RelativePoint, RelativeCoordinate
*/
class JUCE_API RelativePointPath
{
public:
//==============================================================================
RelativePointPath();
RelativePointPath (const RelativePointPath& other);
RelativePointPath (const Path& path);
~RelativePointPath();
bool operator== (const RelativePointPath& other) const throw();
bool operator!= (const RelativePointPath& other) const throw();
//==============================================================================
/** Resolves this points in this path and adds them to a normal Path object. */
void createPath (Path& path, Expression::EvaluationContext* coordFinder) const;
/** Returns true if the path contains any non-fixed points. */
bool containsAnyDynamicPoints() const;
/** Quickly swaps the contents of this path with another. */
void swapWith (RelativePointPath& other) throw();
//==============================================================================
/** The types of element that may be contained in this path.
@see RelativePointPath::ElementBase
*/
enum ElementType
{
nullElement,
startSubPathElement,
closeSubPathElement,
lineToElement,
quadraticToElement,
cubicToElement
};
//==============================================================================
/** Base class for the elements that make up a RelativePointPath.
*/
class JUCE_API ElementBase
{
public:
ElementBase (ElementType type);
virtual ~ElementBase() {}
virtual const ValueTree createTree() const = 0;
virtual void addToPath (Path& path, Expression::EvaluationContext* coordFinder) const = 0;
virtual RelativePoint* getControlPoints (int& numPoints) = 0;
virtual ElementBase* clone() const = 0;
bool isDynamic();
const ElementType type;
private:
JUCE_DECLARE_NON_COPYABLE (ElementBase);
};
//==============================================================================
class JUCE_API StartSubPath : public ElementBase
{
public:
StartSubPath (const RelativePoint& pos);
const ValueTree createTree() const;
void addToPath (Path& path, Expression::EvaluationContext* coordFinder) const;
RelativePoint* getControlPoints (int& numPoints);
ElementBase* clone() const;
RelativePoint startPos;
private:
JUCE_DECLARE_NON_COPYABLE (StartSubPath);
};
//==============================================================================
class JUCE_API CloseSubPath : public ElementBase
{
public:
CloseSubPath();
const ValueTree createTree() const;
void addToPath (Path& path, Expression::EvaluationContext* coordFinder) const;
RelativePoint* getControlPoints (int& numPoints);
ElementBase* clone() const;
private:
JUCE_DECLARE_NON_COPYABLE (CloseSubPath);
};
//==============================================================================
class JUCE_API LineTo : public ElementBase
{
public:
LineTo (const RelativePoint& endPoint);
const ValueTree createTree() const;
void addToPath (Path& path, Expression::EvaluationContext* coordFinder) const;
RelativePoint* getControlPoints (int& numPoints);
ElementBase* clone() const;
RelativePoint endPoint;
private:
JUCE_DECLARE_NON_COPYABLE (LineTo);
};
//==============================================================================
class JUCE_API QuadraticTo : public ElementBase
{
public:
QuadraticTo (const RelativePoint& controlPoint, const RelativePoint& endPoint);
const ValueTree createTree() const;
void addToPath (Path& path, Expression::EvaluationContext* coordFinder) const;
RelativePoint* getControlPoints (int& numPoints);
ElementBase* clone() const;
RelativePoint controlPoints[2];
private:
JUCE_DECLARE_NON_COPYABLE (QuadraticTo);
};
//==============================================================================
class JUCE_API CubicTo : public ElementBase
{
public:
CubicTo (const RelativePoint& controlPoint1, const RelativePoint& controlPoint2, const RelativePoint& endPoint);
const ValueTree createTree() const;
void addToPath (Path& path, Expression::EvaluationContext* coordFinder) const;
RelativePoint* getControlPoints (int& numPoints);
ElementBase* clone() const;
RelativePoint controlPoints[3];
private:
JUCE_DECLARE_NON_COPYABLE (CubicTo);
};
//==============================================================================
void addElement (ElementBase* newElement);
//==============================================================================
OwnedArray <ElementBase> elements;
bool usesNonZeroWinding;
private:
class Positioner;
friend class Positioner;
bool containsDynamicPoints;
void applyTo (DrawablePath& path) const;
RelativePointPath& operator= (const RelativePointPath&);
JUCE_LEAK_DETECTOR (RelativePointPath);
};
#endif // __JUCE_RELATIVEPOINTPATH_JUCEHEADER__

+ 189
- 0
src/gui/components/positioning/juce_RelativeRectangle.cpp View File

@@ -0,0 +1,189 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the GNU General
Public License (Version 2), as published by the Free Software Foundation.
A copy of the license is included in the JUCE distribution, or can be found
online at www.gnu.org/licenses.
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
------------------------------------------------------------------------------
To release a closed-source product which uses JUCE, commercial licenses are
available: visit www.rawmaterialsoftware.com/juce for more information.
==============================================================================
*/
#include "../../../core/juce_StandardHeader.h"
BEGIN_JUCE_NAMESPACE
#include "juce_RelativeRectangle.h"
#include "juce_RelativeCoordinatePositioner.h"
namespace RelativeRectangleHelpers
{
inline void skipComma (const juce_wchar* const s, int& i)
{
while (CharacterFunctions::isWhitespace (s[i]))
++i;
if (s[i] == ',')
++i;
}
}
//==============================================================================
RelativeRectangle::RelativeRectangle()
{
}
RelativeRectangle::RelativeRectangle (const RelativeCoordinate& left_, const RelativeCoordinate& right_,
const RelativeCoordinate& top_, const RelativeCoordinate& bottom_)
: left (left_), right (right_), top (top_), bottom (bottom_)
{
}
RelativeRectangle::RelativeRectangle (const Rectangle<float>& rect, const String& componentName)
: left (rect.getX()),
right (Expression::symbol (componentName + "." + RelativeCoordinate::Strings::left) + Expression ((double) rect.getWidth())),
top (rect.getY()),
bottom (Expression::symbol (componentName + "." + RelativeCoordinate::Strings::top) + Expression ((double) rect.getHeight()))
{
}
RelativeRectangle::RelativeRectangle (const String& s)
{
int i = 0;
left = RelativeCoordinate (Expression::parse (s, i));
RelativeRectangleHelpers::skipComma (s, i);
top = RelativeCoordinate (Expression::parse (s, i));
RelativeRectangleHelpers::skipComma (s, i);
right = RelativeCoordinate (Expression::parse (s, i));
RelativeRectangleHelpers::skipComma (s, i);
bottom = RelativeCoordinate (Expression::parse (s, i));
}
bool RelativeRectangle::operator== (const RelativeRectangle& other) const throw()
{
return left == other.left && top == other.top && right == other.right && bottom == other.bottom;
}
bool RelativeRectangle::operator!= (const RelativeRectangle& other) const throw()
{
return ! operator== (other);
}
const Rectangle<float> RelativeRectangle::resolve (const Expression::EvaluationContext* context) const
{
const double l = left.resolve (context);
const double r = right.resolve (context);
const double t = top.resolve (context);
const double b = bottom.resolve (context);
return Rectangle<float> ((float) l, (float) t, (float) jmax (0.0, r - l), (float) jmax (0.0, b - t));
}
void RelativeRectangle::moveToAbsolute (const Rectangle<float>& newPos, const Expression::EvaluationContext* context)
{
left.moveToAbsolute (newPos.getX(), context);
right.moveToAbsolute (newPos.getRight(), context);
top.moveToAbsolute (newPos.getY(), context);
bottom.moveToAbsolute (newPos.getBottom(), context);
}
bool RelativeRectangle::isDynamic() const
{
return left.isDynamic() || right.isDynamic() || top.isDynamic() || bottom.isDynamic();
}
const String RelativeRectangle::toString() const
{
return left.toString() + ", " + top.toString() + ", " + right.toString() + ", " + bottom.toString();
}
void RelativeRectangle::renameSymbolIfUsed (const String& oldName, const String& newName)
{
left.renameSymbolIfUsed (oldName, newName);
right.renameSymbolIfUsed (oldName, newName);
top.renameSymbolIfUsed (oldName, newName);
bottom.renameSymbolIfUsed (oldName, newName);
}
//==============================================================================
class RelativeRectangleComponentPositioner : public RelativeCoordinatePositionerBase
{
public:
RelativeRectangleComponentPositioner (Component& component_, const RelativeRectangle& rectangle_)
: RelativeCoordinatePositionerBase (component_),
rectangle (rectangle_)
{
}
bool registerCoordinates()
{
bool ok = addCoordinate (rectangle.left);
ok = addCoordinate (rectangle.right) && ok;
ok = addCoordinate (rectangle.top) && ok;
ok = addCoordinate (rectangle.bottom) && ok;
return ok;
}
bool isUsingRectangle (const RelativeRectangle& other) const throw()
{
return rectangle == other;
}
void applyToComponentBounds()
{
for (int i = 4; --i >= 0;)
{
const Rectangle<int> newBounds (rectangle.resolve (this).getSmallestIntegerContainer());
if (newBounds == getComponent().getBounds())
return;
getComponent().setBounds (newBounds);
}
jassertfalse; // must be a recursive reference!
}
private:
const RelativeRectangle rectangle;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (RelativeRectangleComponentPositioner);
};
void RelativeRectangle::applyToComponent (Component& component) const
{
if (isDynamic())
{
RelativeRectangleComponentPositioner* current = dynamic_cast <RelativeRectangleComponentPositioner*> (component.getPositioner());
if (current == 0 || ! current->isUsingRectangle (*this))
{
RelativeRectangleComponentPositioner* p = new RelativeRectangleComponentPositioner (component, *this);
component.setPositioner (p);
p->apply();
}
}
else
{
component.setPositioner (0);
component.setBounds (resolve (0).getSmallestIntegerContainer());
}
}
END_JUCE_NAMESPACE

+ 107
- 0
src/gui/components/positioning/juce_RelativeRectangle.h View File

@@ -0,0 +1,107 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the GNU General
Public License (Version 2), as published by the Free Software Foundation.
A copy of the license is included in the JUCE distribution, or can be found
online at www.gnu.org/licenses.
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
------------------------------------------------------------------------------
To release a closed-source product which uses JUCE, commercial licenses are
available: visit www.rawmaterialsoftware.com/juce for more information.
==============================================================================
*/
#ifndef __JUCE_RELATIVERECTANGLE_JUCEHEADER__
#define __JUCE_RELATIVERECTANGLE_JUCEHEADER__
#include "juce_RelativeCoordinate.h"
class Component;
//==============================================================================
/**
An rectangle stored as a set of RelativeCoordinate values.
The rectangle's top, left, bottom and right edge positions are each stored as a RelativeCoordinate.
@see RelativeCoordinate, RelativePoint
*/
class JUCE_API RelativeRectangle
{
public:
//==============================================================================
/** Creates a zero-size rectangle at the origin. */
RelativeRectangle();
/** Creates an absolute rectangle, relative to the origin. */
explicit RelativeRectangle (const Rectangle<float>& rect, const String& componentName);
/** Creates a rectangle from four coordinates. */
RelativeRectangle (const RelativeCoordinate& left, const RelativeCoordinate& right,
const RelativeCoordinate& top, const RelativeCoordinate& bottom);
/** Creates a rectangle from a stringified representation.
The string must contain a sequence of 4 coordinates, separated by commas, in the order
left, top, right, bottom. The syntax for the coordinate strings is explained in the
RelativeCoordinate class.
@see toString
*/
explicit RelativeRectangle (const String& stringVersion);
bool operator== (const RelativeRectangle& other) const throw();
bool operator!= (const RelativeRectangle& other) const throw();
//==============================================================================
/** Calculates the absolute position of this rectangle.
You'll need to provide a suitable Expression::EvaluationContext for looking up any coordinates that may
be needed to calculate the result.
*/
const Rectangle<float> resolve (const Expression::EvaluationContext* evaluationContext) const;
/** Changes the values of this rectangle's coordinates to make it resolve to the specified position.
Calling this will leave any anchor points unchanged, but will set any absolute
or relative positions to whatever values are necessary to make the resultant position
match the position that is provided.
*/
void moveToAbsolute (const Rectangle<float>& newPos, const Expression::EvaluationContext* evaluationContext);
/** Returns true if this rectangle depends on any other coordinates for its position. */
bool isDynamic() const;
/** Returns a string which represents this point.
This returns a comma-separated list of coordinates, in the order left, top, right, bottom. For details of
the string syntax used by the coordinates, see the RelativeCoordinate constructor notes.
The string that is returned can be passed to the RelativeRectangle constructor to recreate the rectangle.
*/
const String toString() const;
/** Renames a symbol if it is used by any of the coordinates.
This calls RelativeCoordinate::renameSymbolIfUsed() on the rectangle's coordinates.
*/
void renameSymbolIfUsed (const String& oldName, const String& newName);
/** Creates and sets an appropriate Component::Positioner object for the given component, which will
keep it positioned with this rectangle.
*/
void applyToComponent (Component& component) const;
//==============================================================================
// The actual rectangle coords...
RelativeCoordinate left, right, top, bottom;
};
#endif // __JUCE_RELATIVERECTANGLE_JUCEHEADER__

+ 1
- 1
src/gui/graphics/drawables/juce_Drawable.h View File

@@ -27,7 +27,7 @@
#define __JUCE_DRAWABLE_JUCEHEADER__ #define __JUCE_DRAWABLE_JUCEHEADER__
#include "../../components/juce_Component.h" #include "../../components/juce_Component.h"
#include "../geometry/juce_RelativeCoordinate.h"
#include "../../components/positioning/juce_RelativeCoordinate.h"
#include "../../../containers/juce_ValueTree.h" #include "../../../containers/juce_ValueTree.h"
#include "../../components/layout/juce_ComponentBuilder.h" #include "../../components/layout/juce_ComponentBuilder.h"
class DrawableComposite; class DrawableComposite;


+ 3
- 1
src/gui/graphics/drawables/juce_DrawableComposite.h View File

@@ -27,7 +27,9 @@
#define __JUCE_DRAWABLECOMPOSITE_JUCEHEADER__ #define __JUCE_DRAWABLECOMPOSITE_JUCEHEADER__
#include "juce_Drawable.h" #include "juce_Drawable.h"
#include "../../components/layout/juce_MarkerList.h"
#include "../../components/positioning/juce_MarkerList.h"
#include "../../components/positioning/juce_RelativeParallelogram.h"
#include "../../components/positioning/juce_RelativeRectangle.h"
//============================================================================== //==============================================================================


+ 1
- 0
src/gui/graphics/drawables/juce_DrawableImage.h View File

@@ -28,6 +28,7 @@
#include "juce_Drawable.h" #include "juce_Drawable.h"
#include "../imaging/juce_Image.h" #include "../imaging/juce_Image.h"
#include "../../components/positioning/juce_RelativeParallelogram.h"
//============================================================================== //==============================================================================


+ 135
- 21
src/gui/graphics/drawables/juce_DrawablePath.cpp View File

@@ -29,6 +29,7 @@ BEGIN_JUCE_NAMESPACE
#include "juce_DrawablePath.h" #include "juce_DrawablePath.h"
#include "juce_DrawableComposite.h" #include "juce_DrawableComposite.h"
#include "../../components/positioning/juce_RelativeCoordinatePositioner.h"
//============================================================================== //==============================================================================
@@ -39,8 +40,10 @@ DrawablePath::DrawablePath()
DrawablePath::DrawablePath (const DrawablePath& other) DrawablePath::DrawablePath (const DrawablePath& other)
: DrawableShape (other) : DrawableShape (other)
{ {
if (other.relativePath != 0)
relativePath = new RelativePointPath (*other.relativePath);
const RelativePointPath* const relativePath = other.getRelativePath();
if (relativePath != 0)
setPath (*relativePath);
else else
setPath (other.path); setPath (other.path);
} }
@@ -73,14 +76,89 @@ const Path& DrawablePath::getStrokePath() const
bool DrawablePath::rebuildPath (Path& path) const bool DrawablePath::rebuildPath (Path& path) const
{ {
if (relativePath != 0)
return false;
}
void DrawablePath::applyRelativePath (const RelativePointPath& relativePath)
{
Path newPath;
relativePath.createPath (newPath, 0);
if (path != newPath)
{ {
path.clear();
relativePath->createPath (path, getParent());
return true;
path.swapWithPath (newPath);
pathChanged();
} }
}
return false;
//==============================================================================
class DrawablePath::RelativePositioner : public RelativeCoordinatePositionerBase
{
public:
RelativePositioner (DrawablePath& component_, const RelativePointPath& path_)
: RelativeCoordinatePositionerBase (component_),
path (path_),
owner (component_)
{
}
bool registerCoordinates()
{
bool ok = true;
for (int i = 0; i < path.elements.size(); ++i)
{
RelativePointPath::ElementBase* const e = path.elements.getUnchecked(i);
int numPoints;
RelativePoint* const points = e->getControlPoints (numPoints);
for (int j = numPoints; --j >= 0;)
{
ok = addCoordinate (points[j].x) && ok;
ok = addCoordinate (points[j].y) && ok;
}
}
return ok;
}
void applyToComponentBounds()
{
owner.applyRelativePath (path);
}
const RelativePointPath path;
private:
DrawablePath& owner;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (RelativePositioner);
};
const RelativePointPath* DrawablePath::getRelativePath() const
{
RelativePositioner* current = dynamic_cast <RelativePositioner*> (getPositioner());
return current != 0 ? &(current->path) : 0;
}
void DrawablePath::setPath (const RelativePointPath& source)
{
if (source.containsAnyDynamicPoints())
{
const RelativePointPath* current = getRelativePath();
if (current == 0 || source != *current)
{
RelativePositioner* const p = new RelativePositioner (*this, source);
setPositioner (p);
p->apply();
}
}
else
{
applyRelativePath (source);
}
} }
//============================================================================== //==============================================================================
@@ -113,6 +191,47 @@ void DrawablePath::ValueTreeWrapper::setUsesNonZeroWinding (bool b, UndoManager*
state.setProperty (nonZeroWinding, b, undoManager); state.setProperty (nonZeroWinding, b, undoManager);
} }
void DrawablePath::ValueTreeWrapper::readFrom (const RelativePointPath& relativePath, UndoManager* undoManager)
{
setUsesNonZeroWinding (relativePath.usesNonZeroWinding, undoManager);
ValueTree pathTree (getPathState());
pathTree.removeAllChildren (undoManager);
for (int i = 0; i < relativePath.elements.size(); ++i)
pathTree.addChild (relativePath.elements.getUnchecked(i)->createTree(), -1, undoManager);
}
void DrawablePath::ValueTreeWrapper::writeTo (RelativePointPath& relativePath) const
{
relativePath.usesNonZeroWinding = usesNonZeroWinding();
RelativePoint points[3];
const ValueTree pathTree (state.getChildWithName (path));
const int num = pathTree.getNumChildren();
for (int i = 0; i < num; ++i)
{
const Element e (pathTree.getChild(i));
const int numCps = e.getNumControlPoints();
for (int j = 0; j < numCps; ++j)
points[j] = e.getControlPoint (j);
const Identifier type (e.getType());
RelativePointPath::ElementBase* newElement = 0;
if (type == Element::startSubPathElement) newElement = new RelativePointPath::StartSubPath (points[0]);
else if (type == Element::closeSubPathElement) newElement = new RelativePointPath::CloseSubPath();
else if (type == Element::lineToElement) newElement = new RelativePointPath::LineTo (points[0]);
else if (type == Element::quadraticToElement) newElement = new RelativePointPath::QuadraticTo (points[0], points[1]);
else if (type == Element::cubicToElement) newElement = new RelativePointPath::CubicTo (points[0], points[1], points[2]);
else jassertfalse;
relativePath.addElement (newElement);
}
}
//============================================================================== //==============================================================================
const Identifier DrawablePath::ValueTreeWrapper::Element::mode ("mode"); const Identifier DrawablePath::ValueTreeWrapper::Element::mode ("mode");
const Identifier DrawablePath::ValueTreeWrapper::Element::startSubPathElement ("Move"); const Identifier DrawablePath::ValueTreeWrapper::Element::startSubPathElement ("Move");
@@ -448,23 +567,16 @@ void DrawablePath::refreshFromValueTree (const ValueTree& tree, ComponentBuilder
if (refreshFillTypes (v, getParent(), builder.getImageProvider())) if (refreshFillTypes (v, getParent(), builder.getImageProvider()))
repaint(); repaint();
ScopedPointer<RelativePointPath> newRelativePath (new RelativePointPath (tree));
Path newPath;
newRelativePath->createPath (newPath, getParent());
if (! newRelativePath->containsAnyDynamicPoints())
newRelativePath = 0;
const PathStrokeType newStroke (v.getStrokeType()); const PathStrokeType newStroke (v.getStrokeType());
if (strokeType != newStroke || path != newPath)
if (strokeType != newStroke)
{ {
path.swapWithPath (newPath);
strokeType = newStroke; strokeType = newStroke;
pathChanged();
strokeChanged();
} }
relativePath = newRelativePath;
RelativePointPath newRelativePath;
v.writeTo (newRelativePath);
setPath (newRelativePath);
} }
const ValueTree DrawablePath::createValueTree (ComponentBuilder::ImageProvider* imageProvider) const const ValueTree DrawablePath::createValueTree (ComponentBuilder::ImageProvider* imageProvider) const
@@ -475,14 +587,16 @@ const ValueTree DrawablePath::createValueTree (ComponentBuilder::ImageProvider*
v.setID (getComponentID()); v.setID (getComponentID());
writeTo (v, imageProvider, 0); writeTo (v, imageProvider, 0);
const RelativePointPath* const relativePath = getRelativePath();
if (relativePath != 0) if (relativePath != 0)
{ {
relativePath->writeTo (tree, 0);
v.readFrom (*relativePath, 0);
} }
else else
{ {
RelativePointPath rp (path); RelativePointPath rp (path);
rp.writeTo (tree, 0);
v.readFrom (rp, 0);
} }
return tree; return tree;


+ 11
- 1
src/gui/graphics/drawables/juce_DrawablePath.h View File

@@ -27,6 +27,7 @@
#define __JUCE_DRAWABLEPATH_JUCEHEADER__ #define __JUCE_DRAWABLEPATH_JUCEHEADER__
#include "juce_DrawableShape.h" #include "juce_DrawableShape.h"
#include "../../components/positioning/juce_RelativePointPath.h"
//============================================================================== //==============================================================================
@@ -54,6 +55,9 @@ public:
*/ */
void setPath (const Path& newPath); void setPath (const Path& newPath);
/** */
void setPath (const RelativePointPath& source);
/** Returns the current path. */ /** Returns the current path. */
const Path& getPath() const; const Path& getPath() const;
@@ -120,6 +124,9 @@ public:
ValueTree getPathState(); ValueTree getPathState();
void readFrom (const RelativePointPath& path, UndoManager* undoManager);
void writeTo (RelativePointPath& path) const;
static const Identifier nonZeroWinding, point1, point2, point3; static const Identifier nonZeroWinding, point1, point2, point3;
}; };
@@ -128,7 +135,10 @@ protected:
private: private:
//============================================================================== //==============================================================================
ScopedPointer<RelativePointPath> relativePath;
class RelativePositioner;
friend class RelativePositioner;
void applyRelativePath (const RelativePointPath& newPath);
const RelativePointPath* getRelativePath() const;
DrawablePath& operator= (const DrawablePath&); DrawablePath& operator= (const DrawablePath&);
JUCE_LEAK_DETECTOR (DrawablePath); JUCE_LEAK_DETECTOR (DrawablePath);


+ 1
- 0
src/gui/graphics/drawables/juce_DrawableRectangle.h View File

@@ -27,6 +27,7 @@
#define __JUCE_DRAWABLERECTANGLE_JUCEHEADER__ #define __JUCE_DRAWABLERECTANGLE_JUCEHEADER__
#include "juce_DrawableShape.h" #include "juce_DrawableShape.h"
#include "../../components/positioning/juce_RelativeParallelogram.h"
//============================================================================== //==============================================================================


+ 1
- 0
src/gui/graphics/drawables/juce_DrawableShape.h View File

@@ -29,6 +29,7 @@
#include "juce_Drawable.h" #include "juce_Drawable.h"
#include "../contexts/juce_FillType.h" #include "../contexts/juce_FillType.h"
#include "../colour/juce_ColourGradient.h" #include "../colour/juce_ColourGradient.h"
#include "../../components/positioning/juce_RelativePoint.h"
//============================================================================== //==============================================================================


+ 1
- 0
src/gui/graphics/drawables/juce_DrawableText.h View File

@@ -28,6 +28,7 @@
#include "juce_Drawable.h" #include "juce_Drawable.h"
#include "../fonts/juce_GlyphArrangement.h" #include "../fonts/juce_GlyphArrangement.h"
#include "../../components/positioning/juce_RelativeParallelogram.h"
//============================================================================== //==============================================================================


+ 0
- 1017
src/gui/graphics/geometry/juce_RelativeCoordinate.cpp
File diff suppressed because it is too large
View File


+ 0
- 462
src/gui/graphics/geometry/juce_RelativeCoordinate.h View File

@@ -1,462 +0,0 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-10 by Raw Material Software Ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the GNU General
Public License (Version 2), as published by the Free Software Foundation.
A copy of the license is included in the JUCE distribution, or can be found
online at www.gnu.org/licenses.
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
------------------------------------------------------------------------------
To release a closed-source product which uses JUCE, commercial licenses are
available: visit www.rawmaterialsoftware.com/juce for more information.
==============================================================================
*/
#ifndef __JUCE_RELATIVECOORDINATE_JUCEHEADER__
#define __JUCE_RELATIVECOORDINATE_JUCEHEADER__
#include "juce_Path.h"
#include "juce_Rectangle.h"
#include "../../../maths/juce_Expression.h"
#include "../../../containers/juce_OwnedArray.h"
#include "../../../containers/juce_ValueTree.h"
class Component;
//==============================================================================
/**
Expresses a coordinate as a dynamically evaluated expression.
@see RelativePoint, RelativeRectangle
*/
class JUCE_API RelativeCoordinate
{
public:
//==============================================================================
/** Creates a zero coordinate. */
RelativeCoordinate();
RelativeCoordinate (const Expression& expression);
RelativeCoordinate (const RelativeCoordinate& other);
RelativeCoordinate& operator= (const RelativeCoordinate& other);
/** Creates an absolute position from the parent origin on either the X or Y axis.
@param absoluteDistanceFromOrigin the distance from the origin
*/
RelativeCoordinate (double absoluteDistanceFromOrigin);
/** Recreates a coordinate from a string description.
The string will be parsed by ExpressionParser::parse().
@param stringVersion the expression to use
@see toString
*/
RelativeCoordinate (const String& stringVersion);
/** Destructor. */
~RelativeCoordinate();
bool operator== (const RelativeCoordinate& other) const throw();
bool operator!= (const RelativeCoordinate& other) const throw();
//==============================================================================
/** Calculates the absolute position of this coordinate.
You'll need to provide a suitable Expression::EvaluationContext for looking up any coordinates that may
be needed to calculate the result.
*/
double resolve (const Expression::EvaluationContext* evaluationContext) const;
/** Returns true if this coordinate uses the specified coord name at any level in its evaluation.
This will recursively check any coordinates upon which this one depends.
*/
bool references (const String& coordName, const Expression::EvaluationContext* evaluationContext) const;
/** Returns true if there's a recursive loop when trying to resolve this coordinate's position. */
bool isRecursive (const Expression::EvaluationContext* evaluationContext) const;
/** Returns true if this coordinate depends on any other coordinates for its position. */
bool isDynamic() const;
//==============================================================================
/** Changes the value of this coord to make it resolve to the specified position.
Calling this will leave the anchor points unchanged, but will set this coordinate's absolute
or relative position to whatever value is necessary to make its resultant position
match the position that is provided.
*/
void moveToAbsolute (double absoluteTargetPosition, const Expression::EvaluationContext* evaluationContext);
/** Changes the name of a symbol if it is used as part of the coordinate's expression. */
void renameSymbolIfUsed (const String& oldName, const String& newName);
/** Returns the expression that defines this coordinate. */
const Expression& getExpression() const { return term; }
//==============================================================================
/** Returns a string which represents this coordinate.
For details of the string syntax, see the constructor notes.
*/
const String toString() const;
//==============================================================================
/** A set of static strings that are commonly used by the RelativeCoordinate class.
As well as avoiding using string literals in your code, using these preset values
has the advantage that all instances of the same string will share the same, reference-counted
String object, so if you have thousands of points which all refer to the same
anchor points, this can save a significant amount of memory allocation.
*/
struct Strings
{
static const String parent; /**< "parent" */
static const String this_; /**< "this" */
static const String left; /**< "left" */
static const String right; /**< "right" */
static const String top; /**< "top" */
static const String bottom; /**< "bottom" */
static const String parentLeft; /**< "parent.left" */
static const String parentTop; /**< "parent.top" */
static const String parentRight; /**< "parent.right" */
static const String parentBottom; /**< "parent.bottom" */
};
private:
//==============================================================================
Expression term;
};
//==============================================================================
/**
An X-Y position stored as a pair of RelativeCoordinate values.
@see RelativeCoordinate, RelativeRectangle
*/
class JUCE_API RelativePoint
{
public:
/** Creates a point at the origin. */
RelativePoint();
/** Creates an absolute point, relative to the origin. */
RelativePoint (const Point<float>& absolutePoint);
/** Creates an absolute point, relative to the origin. */
RelativePoint (float absoluteX, float absoluteY);
/** Creates an absolute point from two coordinates. */
RelativePoint (const RelativeCoordinate& x, const RelativeCoordinate& y);
/** Creates a point from a stringified representation.
The string must contain a pair of coordinates, separated by space or a comma. The syntax for the coordinate
strings is explained in the RelativeCoordinate class.
@see toString
*/
RelativePoint (const String& stringVersion);
bool operator== (const RelativePoint& other) const throw();
bool operator!= (const RelativePoint& other) const throw();
/** Calculates the absolute position of this point.
You'll need to provide a suitable Expression::EvaluationContext for looking up any coordinates that may
be needed to calculate the result.
*/
const Point<float> resolve (const Expression::EvaluationContext* evaluationContext) const;
/** Changes the values of this point's coordinates to make it resolve to the specified position.
Calling this will leave any anchor points unchanged, but will set any absolute
or relative positions to whatever values are necessary to make the resultant position
match the position that is provided.
*/
void moveToAbsolute (const Point<float>& newPos, const Expression::EvaluationContext* evaluationContext);
/** Returns a string which represents this point.
This returns a comma-separated pair of coordinates. For details of the string syntax used by the
coordinates, see the RelativeCoordinate constructor notes.
The string that is returned can be passed to the RelativePoint constructor to recreate the point.
*/
const String toString() const;
/** Renames a symbol if it is used by any of the coordinates.
This calls RelativeCoordinate::renameAnchorIfUsed() on its X and Y coordinates.
*/
void renameSymbolIfUsed (const String& oldName, const String& newName);
/** Returns true if this point depends on any other coordinates for its position. */
bool isDynamic() const;
// The actual X and Y coords...
RelativeCoordinate x, y;
};
//==============================================================================
/**
An rectangle stored as a set of RelativeCoordinate values.
The rectangle's top, left, bottom and right edge positions are each stored as a RelativeCoordinate.
@see RelativeCoordinate, RelativePoint
*/
class JUCE_API RelativeRectangle
{
public:
//==============================================================================
/** Creates a zero-size rectangle at the origin. */
RelativeRectangle();
/** Creates an absolute rectangle, relative to the origin. */
explicit RelativeRectangle (const Rectangle<float>& rect, const String& componentName);
/** Creates a rectangle from four coordinates. */
RelativeRectangle (const RelativeCoordinate& left, const RelativeCoordinate& right,
const RelativeCoordinate& top, const RelativeCoordinate& bottom);
/** Creates a rectangle from a stringified representation.
The string must contain a sequence of 4 coordinates, separated by commas, in the order
left, top, right, bottom. The syntax for the coordinate strings is explained in the
RelativeCoordinate class.
@see toString
*/
explicit RelativeRectangle (const String& stringVersion);
bool operator== (const RelativeRectangle& other) const throw();
bool operator!= (const RelativeRectangle& other) const throw();
//==============================================================================
/** Calculates the absolute position of this rectangle.
You'll need to provide a suitable Expression::EvaluationContext for looking up any coordinates that may
be needed to calculate the result.
*/
const Rectangle<float> resolve (const Expression::EvaluationContext* evaluationContext) const;
/** Changes the values of this rectangle's coordinates to make it resolve to the specified position.
Calling this will leave any anchor points unchanged, but will set any absolute
or relative positions to whatever values are necessary to make the resultant position
match the position that is provided.
*/
void moveToAbsolute (const Rectangle<float>& newPos, const Expression::EvaluationContext* evaluationContext);
/** Returns true if this rectangle depends on any other coordinates for its position. */
bool isDynamic() const;
/** Returns a string which represents this point.
This returns a comma-separated list of coordinates, in the order left, top, right, bottom. For details of
the string syntax used by the coordinates, see the RelativeCoordinate constructor notes.
The string that is returned can be passed to the RelativeRectangle constructor to recreate the rectangle.
*/
const String toString() const;
/** Renames a symbol if it is used by any of the coordinates.
This calls RelativeCoordinate::renameSymbolIfUsed() on the rectangle's coordinates.
*/
void renameSymbolIfUsed (const String& oldName, const String& newName);
/** */
void applyToComponent (Component& component) const;
// The actual rectangle coords...
RelativeCoordinate left, right, top, bottom;
};
//==============================================================================
/**
A path object that consists of RelativePoint coordinates rather than the normal fixed ones.
One of these paths can be converted into a Path object for drawing and manipulation, but
unlike a Path, its points can be dynamic instead of just fixed.
@see RelativePoint, RelativeCoordinate
*/
class JUCE_API RelativePointPath
{
public:
//==============================================================================
RelativePointPath();
RelativePointPath (const RelativePointPath& other);
RelativePointPath (const ValueTree& drawable);
RelativePointPath (const Path& path);
~RelativePointPath();
//==============================================================================
/** Resolves this points in this path and adds them to a normal Path object. */
void createPath (Path& path, Expression::EvaluationContext* coordFinder);
/** Returns true if the path contains any non-fixed points. */
bool containsAnyDynamicPoints() const;
/** Writes the path to this drawable encoding. */
void writeTo (ValueTree state, UndoManager* undoManager) const;
/** Quickly swaps the contents of this path with another. */
void swapWith (RelativePointPath& other) throw();
//==============================================================================
/** The types of element that may be contained in this path.
@see RelativePointPath::ElementBase
*/
enum ElementType
{
nullElement,
startSubPathElement,
closeSubPathElement,
lineToElement,
quadraticToElement,
cubicToElement
};
//==============================================================================
/** Base class for the elements that make up a RelativePointPath.
*/
class JUCE_API ElementBase
{
public:
ElementBase (ElementType type);
virtual ~ElementBase() {}
virtual const ValueTree createTree() const = 0;
virtual void addToPath (Path& path, Expression::EvaluationContext* coordFinder) const = 0;
virtual RelativePoint* getControlPoints (int& numPoints) = 0;
const ElementType type;
private:
JUCE_DECLARE_NON_COPYABLE (ElementBase);
};
class JUCE_API StartSubPath : public ElementBase
{
public:
StartSubPath (const RelativePoint& pos);
~StartSubPath() {}
const ValueTree createTree() const;
void addToPath (Path& path, Expression::EvaluationContext* coordFinder) const;
RelativePoint* getControlPoints (int& numPoints);
RelativePoint startPos;
private:
JUCE_DECLARE_NON_COPYABLE (StartSubPath);
};
class JUCE_API CloseSubPath : public ElementBase
{
public:
CloseSubPath();
~CloseSubPath() {}
const ValueTree createTree() const;
void addToPath (Path& path, Expression::EvaluationContext* coordFinder) const;
RelativePoint* getControlPoints (int& numPoints);
private:
JUCE_DECLARE_NON_COPYABLE (CloseSubPath);
};
class JUCE_API LineTo : public ElementBase
{
public:
LineTo (const RelativePoint& endPoint);
~LineTo() {}
const ValueTree createTree() const;
void addToPath (Path& path, Expression::EvaluationContext* coordFinder) const;
RelativePoint* getControlPoints (int& numPoints);
RelativePoint endPoint;
private:
JUCE_DECLARE_NON_COPYABLE (LineTo);
};
class JUCE_API QuadraticTo : public ElementBase
{
public:
QuadraticTo (const RelativePoint& controlPoint, const RelativePoint& endPoint);
~QuadraticTo() {}
const ValueTree createTree() const;
void addToPath (Path& path, Expression::EvaluationContext* coordFinder) const;
RelativePoint* getControlPoints (int& numPoints);
RelativePoint controlPoints[2];
private:
JUCE_DECLARE_NON_COPYABLE (QuadraticTo);
};
class JUCE_API CubicTo : public ElementBase
{
public:
CubicTo (const RelativePoint& controlPoint1, const RelativePoint& controlPoint2, const RelativePoint& endPoint);
~CubicTo() {}
const ValueTree createTree() const;
void addToPath (Path& path, Expression::EvaluationContext* coordFinder) const;
RelativePoint* getControlPoints (int& numPoints);
RelativePoint controlPoints[3];
private:
JUCE_DECLARE_NON_COPYABLE (CubicTo);
};
//==============================================================================
OwnedArray <ElementBase> elements;
bool usesNonZeroWinding;
private:
bool containsDynamicPoints;
void parse (const ValueTree& state);
RelativePointPath& operator= (const RelativePointPath&);
};
//==============================================================================
/**
A parallelogram defined by three RelativePoint positions.
@see RelativePoint, RelativeCoordinate
*/
class JUCE_API RelativeParallelogram
{
public:
//==============================================================================
RelativeParallelogram();
RelativeParallelogram (const Rectangle<float>& simpleRectangle);
RelativeParallelogram (const RelativePoint& topLeft, const RelativePoint& topRight, const RelativePoint& bottomLeft);
RelativeParallelogram (const String& topLeft, const String& topRight, const String& bottomLeft);
~RelativeParallelogram();
//==============================================================================
void resolveThreePoints (Point<float>* points, Expression::EvaluationContext* coordFinder) const;
void resolveFourCorners (Point<float>* points, Expression::EvaluationContext* coordFinder) const;
const Rectangle<float> getBounds (Expression::EvaluationContext* coordFinder) const;
void getPath (Path& path, Expression::EvaluationContext* coordFinder) const;
const AffineTransform resetToPerpendicular (Expression::EvaluationContext* coordFinder);
bool operator== (const RelativeParallelogram& other) const throw();
bool operator!= (const RelativeParallelogram& other) const throw();
static const Point<float> getInternalCoordForPoint (const Point<float>* parallelogramCorners, Point<float> point) throw();
static const Point<float> getPointForInternalCoord (const Point<float>* parallelogramCorners, const Point<float>& internalPoint) throw();
//==============================================================================
RelativePoint topLeft, topRight, bottomLeft;
};
#endif // __JUCE_RELATIVECOORDINATE_JUCEHEADER__

+ 21
- 6
src/juce_app_includes.h View File

@@ -437,9 +437,6 @@
#ifndef __JUCE_GROUPCOMPONENT_JUCEHEADER__ #ifndef __JUCE_GROUPCOMPONENT_JUCEHEADER__
#include "gui/components/layout/juce_GroupComponent.h" #include "gui/components/layout/juce_GroupComponent.h"
#endif #endif
#ifndef __JUCE_MARKERLIST_JUCEHEADER__
#include "gui/components/layout/juce_MarkerList.h"
#endif
#ifndef __JUCE_MULTIDOCUMENTPANEL_JUCEHEADER__ #ifndef __JUCE_MULTIDOCUMENTPANEL_JUCEHEADER__
#include "gui/components/layout/juce_MultiDocumentPanel.h" #include "gui/components/layout/juce_MultiDocumentPanel.h"
#endif #endif
@@ -521,6 +518,27 @@
#ifndef __JUCE_TOOLTIPCLIENT_JUCEHEADER__ #ifndef __JUCE_TOOLTIPCLIENT_JUCEHEADER__
#include "gui/components/mouse/juce_TooltipClient.h" #include "gui/components/mouse/juce_TooltipClient.h"
#endif #endif
#ifndef __JUCE_MARKERLIST_JUCEHEADER__
#include "gui/components/positioning/juce_MarkerList.h"
#endif
#ifndef __JUCE_RELATIVECOORDINATE_JUCEHEADER__
#include "gui/components/positioning/juce_RelativeCoordinate.h"
#endif
#ifndef __JUCE_RELATIVECOORDINATEPOSITIONER_JUCEHEADER__
#include "gui/components/positioning/juce_RelativeCoordinatePositioner.h"
#endif
#ifndef __JUCE_RELATIVEPARALLELOGRAM_JUCEHEADER__
#include "gui/components/positioning/juce_RelativeParallelogram.h"
#endif
#ifndef __JUCE_RELATIVEPOINT_JUCEHEADER__
#include "gui/components/positioning/juce_RelativePoint.h"
#endif
#ifndef __JUCE_RELATIVEPOINTPATH_JUCEHEADER__
#include "gui/components/positioning/juce_RelativePointPath.h"
#endif
#ifndef __JUCE_RELATIVERECTANGLE_JUCEHEADER__
#include "gui/components/positioning/juce_RelativeRectangle.h"
#endif
#ifndef __JUCE_BOOLEANPROPERTYCOMPONENT_JUCEHEADER__ #ifndef __JUCE_BOOLEANPROPERTYCOMPONENT_JUCEHEADER__
#include "gui/components/properties/juce_BooleanPropertyComponent.h" #include "gui/components/properties/juce_BooleanPropertyComponent.h"
#endif #endif
@@ -722,9 +740,6 @@
#ifndef __JUCE_RECTANGLELIST_JUCEHEADER__ #ifndef __JUCE_RECTANGLELIST_JUCEHEADER__
#include "gui/graphics/geometry/juce_RectangleList.h" #include "gui/graphics/geometry/juce_RectangleList.h"
#endif #endif
#ifndef __JUCE_RELATIVECOORDINATE_JUCEHEADER__
#include "gui/graphics/geometry/juce_RelativeCoordinate.h"
#endif
#ifndef __JUCE_CAMERADEVICE_JUCEHEADER__ #ifndef __JUCE_CAMERADEVICE_JUCEHEADER__
#include "gui/graphics/imaging/juce_CameraDevice.h" #include "gui/graphics/imaging/juce_CameraDevice.h"
#endif #endif


+ 1
- 0
src/text/juce_XmlElement.h View File

@@ -703,6 +703,7 @@ private:
friend class XmlDocument; friend class XmlDocument;
friend class LinkedListPointer<XmlAttributeNode>; friend class LinkedListPointer<XmlAttributeNode>;
friend class LinkedListPointer <XmlElement>; friend class LinkedListPointer <XmlElement>;
friend class LinkedListPointer <XmlElement>::Appender;
LinkedListPointer <XmlElement> nextListItem; LinkedListPointer <XmlElement> nextListItem;
LinkedListPointer <XmlElement> firstChildElement; LinkedListPointer <XmlElement> firstChildElement;


Loading…
Cancel
Save