| @@ -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" | ||||
| @@ -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, | ||||
| @@ -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"> | ||||
| @@ -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"> | ||||
| @@ -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"> | ||||
| @@ -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"/> | ||||
| @@ -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> | ||||
| @@ -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, | ||||
| @@ -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"> | ||||
| @@ -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) | ||||
| @@ -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; | ||||
| @@ -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. | ||||
| @@ -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)) | ||||
| @@ -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); | ||||
| }; | }; | ||||
| @@ -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" | |||||
| //============================================================================== | //============================================================================== | ||||
| @@ -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 | |||||
| @@ -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__ | |||||
| @@ -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 | |||||
| @@ -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__ | |||||
| @@ -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 | |||||
| @@ -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__ | |||||
| @@ -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 | |||||
| @@ -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__ | |||||
| @@ -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 | |||||
| @@ -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__ | |||||
| @@ -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 | |||||
| @@ -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__ | |||||
| @@ -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; | ||||
| @@ -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" | |||||
| //============================================================================== | //============================================================================== | ||||
| @@ -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" | |||||
| //============================================================================== | //============================================================================== | ||||
| @@ -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; | ||||
| @@ -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); | ||||
| @@ -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" | |||||
| //============================================================================== | //============================================================================== | ||||
| @@ -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" | |||||
| //============================================================================== | //============================================================================== | ||||
| @@ -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" | |||||
| //============================================================================== | //============================================================================== | ||||
| @@ -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__ | |||||
| @@ -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 | ||||
| @@ -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; | ||||