mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-02-07 04:10:08 +00:00
Small fixes for ComboBox items and AudioThumbnail. Reorganisation of all the RelativeCoordinate classes into their own folder. New RelativeCoordinatePositionerBase class and internal work on DrawablePath.
This commit is contained in:
parent
2a8cf6f75f
commit
e0ca6d6ca4
42 changed files with 3722 additions and 2632 deletions
|
|
@ -174,7 +174,6 @@ OBJECTS := \
|
|||
$(OBJDIR)/juce_ComponentBuilder_2aa6c5a.o \
|
||||
$(OBJDIR)/juce_ComponentMovementWatcher_cbb3e7cc.o \
|
||||
$(OBJDIR)/juce_GroupComponent_456e237a.o \
|
||||
$(OBJDIR)/juce_MarkerList_aea878b4.o \
|
||||
$(OBJDIR)/juce_MultiDocumentPanel_50e05aac.o \
|
||||
$(OBJDIR)/juce_ResizableBorderComponent_7f4f2182.o \
|
||||
$(OBJDIR)/juce_ResizableCornerComponent_1cac2df9.o \
|
||||
|
|
@ -197,6 +196,13 @@ OBJECTS := \
|
|||
$(OBJDIR)/juce_MouseHoverDetector_d4af7a00.o \
|
||||
$(OBJDIR)/juce_MouseInputSource_8904aa23.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_ButtonPropertyComponent_3675d6bb.o \
|
||||
$(OBJDIR)/juce_ChoicePropertyComponent_b9b44bac.o \
|
||||
|
|
@ -255,7 +261,6 @@ OBJECTS := \
|
|||
$(OBJDIR)/juce_PathStrokeType_506dcb86.o \
|
||||
$(OBJDIR)/juce_PositionedRectangle_1b6e8982.o \
|
||||
$(OBJDIR)/juce_RectangleList_b6ae7ee8.o \
|
||||
$(OBJDIR)/juce_RelativeCoordinate_23fb9d3.o \
|
||||
$(OBJDIR)/juce_GIFLoader_61887b90.o \
|
||||
$(OBJDIR)/juce_JPEGLoader_412d2ccc.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"
|
||||
@$(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
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@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"
|
||||
@$(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
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@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"
|
||||
@$(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
|
||||
-@mkdir -p $(OBJDIR)
|
||||
@echo "Compiling juce_GIFLoader.cpp"
|
||||
|
|
|
|||
|
|
@ -143,7 +143,6 @@
|
|||
9AA76460DA7D34CE6A69E2B1 = { isa = PBXBuildFile; fileRef = 45E5EE9E0173683D721FABDA; };
|
||||
4E81BC4A50CF1883F529E152 = { isa = PBXBuildFile; fileRef = F8FCCCE06D31FEF697FCD80D; };
|
||||
8FBB6BF0C5406E1BA481CFEF = { isa = PBXBuildFile; fileRef = A6AD7357F905309D1B461EB7; };
|
||||
260EF664D324038F9DC6C35B = { isa = PBXBuildFile; fileRef = F665A039C3A85EFDAA3E1245; };
|
||||
F5F3F25D9F377128DC74D95B = { isa = PBXBuildFile; fileRef = FF046140CCF1EDB0DFF80178; };
|
||||
C64A2BF05224582134872415 = { isa = PBXBuildFile; fileRef = A95F42C5CB0C2E5052B31568; };
|
||||
0A9C9486A6B31F21B1472D2B = { isa = PBXBuildFile; fileRef = A31221E2A50CCE9DF06B5F4B; };
|
||||
|
|
@ -166,6 +165,13 @@
|
|||
968B31D8101A937444C6DFB3 = { isa = PBXBuildFile; fileRef = 2531C57B0C861A48E3F3A673; };
|
||||
E064E329741F36C329989203 = { isa = PBXBuildFile; fileRef = 441257DD380138C03568FCBD; };
|
||||
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; };
|
||||
E5BB4B5EBFE206E09D0E6E10 = { isa = PBXBuildFile; fileRef = C45E7E6B6E45DEFBF80940DD; };
|
||||
1906C642BF6CA67821512855 = { isa = PBXBuildFile; fileRef = ECCBF2452804ECB2D5B4BC50; };
|
||||
|
|
@ -224,7 +230,6 @@
|
|||
E7C9FAA5F8A4AEDAD8A8CC1D = { isa = PBXBuildFile; fileRef = 9D3F1BAB1D48DDECB9F35916; };
|
||||
DC4BB8AFC054ECD4141B47CC = { isa = PBXBuildFile; fileRef = 11D8021D49B895410A836486; };
|
||||
084C9F2D4F78134CB1EFE676 = { isa = PBXBuildFile; fileRef = 1B170F70AF8AA0A39074F671; };
|
||||
1110DD0779F44F625316D083 = { isa = PBXBuildFile; fileRef = 2AA4DDD1F26188A570F4DBE2; };
|
||||
4DAD08CD3A688747C9CA237B = { isa = PBXBuildFile; fileRef = 0F1C5770B363EF7DF64A876A; };
|
||||
60FE8BFA252E3EF2D60B77AD = { isa = PBXBuildFile; fileRef = 6619D27E74F623B1E8CE8F71; };
|
||||
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; };
|
||||
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; };
|
||||
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; };
|
||||
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; };
|
||||
|
|
@ -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; };
|
||||
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; };
|
||||
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; };
|
||||
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; };
|
||||
|
|
@ -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; };
|
||||
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; };
|
||||
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; };
|
||||
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; };
|
||||
|
|
@ -1400,8 +1415,6 @@
|
|||
44CDA79090B115C3B62A2168,
|
||||
A6AD7357F905309D1B461EB7,
|
||||
E9242E8425497D889C764C66,
|
||||
F665A039C3A85EFDAA3E1245,
|
||||
8A9F1A98C0C96BF655F606AB,
|
||||
FF046140CCF1EDB0DFF80178,
|
||||
B6A223FB5B4A9388C83D6FC7,
|
||||
A95F42C5CB0C2E5052B31568,
|
||||
|
|
@ -1454,6 +1467,21 @@
|
|||
2886656DF7ACC9DDC888827F,
|
||||
0C28F27F9D1CE6CD65185760,
|
||||
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 = (
|
||||
1C3FFBA02AE51EDD72A6250B,
|
||||
B422688E380911F3C21E3F04,
|
||||
|
|
@ -1533,6 +1561,7 @@
|
|||
EAE72EDE682D52DF77747660,
|
||||
870DE7235866DA3B81B683B8,
|
||||
4F37E36BA5E052B3BD4B87AD,
|
||||
362862B72D7FF7997C44CECF,
|
||||
0F03F34FC3542EF0CF8B31E6,
|
||||
5C03BF1C4CF3DEE1E0D6A3A1,
|
||||
48D41BA310DED74E900A5AB0 ); name = components; sourceTree = "<group>"; };
|
||||
|
|
@ -1608,9 +1637,7 @@
|
|||
469347B6414F2CE9DCEEA386,
|
||||
F8C44FF03700F6140950F373,
|
||||
1B170F70AF8AA0A39074F671,
|
||||
8B7D7435287A20CB2D8E3704,
|
||||
2AA4DDD1F26188A570F4DBE2,
|
||||
54D9BBB69BDA3837240F7749 ); name = geometry; sourceTree = "<group>"; };
|
||||
8B7D7435287A20CB2D8E3704 ); name = geometry; sourceTree = "<group>"; };
|
||||
D71FD838B3FD1536FCA839A4 = { isa = PBXGroup; children = (
|
||||
0F1C5770B363EF7DF64A876A,
|
||||
6619D27E74F623B1E8CE8F71,
|
||||
|
|
@ -2082,7 +2109,6 @@
|
|||
9AA76460DA7D34CE6A69E2B1,
|
||||
4E81BC4A50CF1883F529E152,
|
||||
8FBB6BF0C5406E1BA481CFEF,
|
||||
260EF664D324038F9DC6C35B,
|
||||
F5F3F25D9F377128DC74D95B,
|
||||
C64A2BF05224582134872415,
|
||||
0A9C9486A6B31F21B1472D2B,
|
||||
|
|
@ -2105,6 +2131,13 @@
|
|||
968B31D8101A937444C6DFB3,
|
||||
E064E329741F36C329989203,
|
||||
61E659ADBF9D832ED8F24540,
|
||||
9379C833B875207E5DFC5A3F,
|
||||
F1A6C2E3226F87860BFC4EBC,
|
||||
144872E56AED1981C0973B24,
|
||||
95648DF5676EBEF57009D09A,
|
||||
2FE59D80851A0A392EF2F923,
|
||||
621D2E6CDA267030405166C2,
|
||||
90347B7C32ACE8A11FC1B708,
|
||||
FAC87D81FE5168E37645A113,
|
||||
E5BB4B5EBFE206E09D0E6E10,
|
||||
1906C642BF6CA67821512855,
|
||||
|
|
@ -2163,7 +2196,6 @@
|
|||
E7C9FAA5F8A4AEDAD8A8CC1D,
|
||||
DC4BB8AFC054ECD4141B47CC,
|
||||
084C9F2D4F78134CB1EFE676,
|
||||
1110DD0779F44F625316D083,
|
||||
4DAD08CD3A688747C9CA237B,
|
||||
60FE8BFA252E3EF2D60B77AD,
|
||||
C592CC923C5495467EF05D48,
|
||||
|
|
|
|||
|
|
@ -548,8 +548,6 @@
|
|||
<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.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.h"/>
|
||||
<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_TooltipClient.h"/>
|
||||
</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">
|
||||
<File RelativePath="..\..\src\gui\components\properties\juce_BooleanPropertyComponent.cpp"/>
|
||||
<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_RectangleList.cpp"/>
|
||||
<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 Name="imaging">
|
||||
<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_GroupComponent.cpp"/>
|
||||
<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.h"/>
|
||||
<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_TooltipClient.h"/>
|
||||
</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">
|
||||
<File RelativePath="..\..\src\gui\components\properties\juce_BooleanPropertyComponent.cpp"/>
|
||||
<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_RectangleList.cpp"/>
|
||||
<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 Name="imaging">
|
||||
<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_GroupComponent.cpp"/>
|
||||
<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.h"/>
|
||||
<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_TooltipClient.h"/>
|
||||
</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">
|
||||
<File RelativePath="..\..\src\gui\components\properties\juce_BooleanPropertyComponent.cpp"/>
|
||||
<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_RectangleList.cpp"/>
|
||||
<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 Name="imaging">
|
||||
<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_ComponentMovementWatcher.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_ResizableBorderComponent.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_MouseInputSource.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_ButtonPropertyComponent.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_PositionedRectangle.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_JPEGLoader.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_ComponentMovementWatcher.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_ResizableBorderComponent.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_MouseListener.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_ButtonPropertyComponent.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_Rectangle.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_Image.h"/>
|
||||
<ClInclude Include="..\..\src\gui\graphics\imaging\juce_ImageCache.h"/>
|
||||
|
|
|
|||
|
|
@ -101,6 +101,9 @@
|
|||
<Filter Include="Juce\Source\gui\components\mouse">
|
||||
<UniqueIdentifier>{B0D9CCC8-4718-BF06-EA13-DA2333E77AEE}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Juce\Source\gui\components\positioning">
|
||||
<UniqueIdentifier>{34D7048B-783F-B48F-2D42-7F22515A2741}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Juce\Source\gui\components\properties">
|
||||
<UniqueIdentifier>{6A81EDB6-D54A-343C-8BB0-CCE4DAA4823F}</UniqueIdentifier>
|
||||
</Filter>
|
||||
|
|
@ -625,9 +628,6 @@
|
|||
<ClCompile Include="..\..\src\gui\components\layout\juce_GroupComponent.cpp">
|
||||
<Filter>Juce\Source\gui\components\layout</Filter>
|
||||
</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">
|
||||
<Filter>Juce\Source\gui\components\layout</Filter>
|
||||
</ClCompile>
|
||||
|
|
@ -694,6 +694,27 @@
|
|||
<ClCompile Include="..\..\src\gui\components\mouse\juce_MouseListener.cpp">
|
||||
<Filter>Juce\Source\gui\components\mouse</Filter>
|
||||
</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">
|
||||
<Filter>Juce\Source\gui\components\properties</Filter>
|
||||
</ClCompile>
|
||||
|
|
@ -868,9 +889,6 @@
|
|||
<ClCompile Include="..\..\src\gui\graphics\geometry\juce_RectangleList.cpp">
|
||||
<Filter>Juce\Source\gui\graphics\geometry</Filter>
|
||||
</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">
|
||||
<Filter>Juce\Source\gui\graphics\imaging\image_file_formats</Filter>
|
||||
</ClCompile>
|
||||
|
|
@ -1752,9 +1770,6 @@
|
|||
<ClInclude Include="..\..\src\gui\components\layout\juce_GroupComponent.h">
|
||||
<Filter>Juce\Source\gui\components\layout</Filter>
|
||||
</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">
|
||||
<Filter>Juce\Source\gui\components\layout</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -1836,6 +1851,27 @@
|
|||
<ClInclude Include="..\..\src\gui\components\mouse\juce_TooltipClient.h">
|
||||
<Filter>Juce\Source\gui\components\mouse</Filter>
|
||||
</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">
|
||||
<Filter>Juce\Source\gui\components\properties</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -2037,9 +2073,6 @@
|
|||
<ClInclude Include="..\..\src\gui\graphics\geometry\juce_RectangleList.h">
|
||||
<Filter>Juce\Source\gui\graphics\geometry</Filter>
|
||||
</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">
|
||||
<Filter>Juce\Source\gui\graphics\imaging</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -143,7 +143,6 @@
|
|||
9AA76460DA7D34CE6A69E2B1 = { isa = PBXBuildFile; fileRef = 45E5EE9E0173683D721FABDA; };
|
||||
4E81BC4A50CF1883F529E152 = { isa = PBXBuildFile; fileRef = F8FCCCE06D31FEF697FCD80D; };
|
||||
8FBB6BF0C5406E1BA481CFEF = { isa = PBXBuildFile; fileRef = A6AD7357F905309D1B461EB7; };
|
||||
260EF664D324038F9DC6C35B = { isa = PBXBuildFile; fileRef = F665A039C3A85EFDAA3E1245; };
|
||||
F5F3F25D9F377128DC74D95B = { isa = PBXBuildFile; fileRef = FF046140CCF1EDB0DFF80178; };
|
||||
C64A2BF05224582134872415 = { isa = PBXBuildFile; fileRef = A95F42C5CB0C2E5052B31568; };
|
||||
0A9C9486A6B31F21B1472D2B = { isa = PBXBuildFile; fileRef = A31221E2A50CCE9DF06B5F4B; };
|
||||
|
|
@ -166,6 +165,13 @@
|
|||
968B31D8101A937444C6DFB3 = { isa = PBXBuildFile; fileRef = 2531C57B0C861A48E3F3A673; };
|
||||
E064E329741F36C329989203 = { isa = PBXBuildFile; fileRef = 441257DD380138C03568FCBD; };
|
||||
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; };
|
||||
E5BB4B5EBFE206E09D0E6E10 = { isa = PBXBuildFile; fileRef = C45E7E6B6E45DEFBF80940DD; };
|
||||
1906C642BF6CA67821512855 = { isa = PBXBuildFile; fileRef = ECCBF2452804ECB2D5B4BC50; };
|
||||
|
|
@ -224,7 +230,6 @@
|
|||
E7C9FAA5F8A4AEDAD8A8CC1D = { isa = PBXBuildFile; fileRef = 9D3F1BAB1D48DDECB9F35916; };
|
||||
DC4BB8AFC054ECD4141B47CC = { isa = PBXBuildFile; fileRef = 11D8021D49B895410A836486; };
|
||||
084C9F2D4F78134CB1EFE676 = { isa = PBXBuildFile; fileRef = 1B170F70AF8AA0A39074F671; };
|
||||
1110DD0779F44F625316D083 = { isa = PBXBuildFile; fileRef = 2AA4DDD1F26188A570F4DBE2; };
|
||||
4DAD08CD3A688747C9CA237B = { isa = PBXBuildFile; fileRef = 0F1C5770B363EF7DF64A876A; };
|
||||
60FE8BFA252E3EF2D60B77AD = { isa = PBXBuildFile; fileRef = 6619D27E74F623B1E8CE8F71; };
|
||||
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; };
|
||||
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; };
|
||||
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; };
|
||||
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; };
|
||||
|
|
@ -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; };
|
||||
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; };
|
||||
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; };
|
||||
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; };
|
||||
|
|
@ -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; };
|
||||
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; };
|
||||
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; };
|
||||
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; };
|
||||
|
|
@ -1400,8 +1415,6 @@
|
|||
44CDA79090B115C3B62A2168,
|
||||
A6AD7357F905309D1B461EB7,
|
||||
E9242E8425497D889C764C66,
|
||||
F665A039C3A85EFDAA3E1245,
|
||||
8A9F1A98C0C96BF655F606AB,
|
||||
FF046140CCF1EDB0DFF80178,
|
||||
B6A223FB5B4A9388C83D6FC7,
|
||||
A95F42C5CB0C2E5052B31568,
|
||||
|
|
@ -1454,6 +1467,21 @@
|
|||
2886656DF7ACC9DDC888827F,
|
||||
0C28F27F9D1CE6CD65185760,
|
||||
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 = (
|
||||
1C3FFBA02AE51EDD72A6250B,
|
||||
B422688E380911F3C21E3F04,
|
||||
|
|
@ -1533,6 +1561,7 @@
|
|||
EAE72EDE682D52DF77747660,
|
||||
870DE7235866DA3B81B683B8,
|
||||
4F37E36BA5E052B3BD4B87AD,
|
||||
362862B72D7FF7997C44CECF,
|
||||
0F03F34FC3542EF0CF8B31E6,
|
||||
5C03BF1C4CF3DEE1E0D6A3A1,
|
||||
48D41BA310DED74E900A5AB0 ); name = components; sourceTree = "<group>"; };
|
||||
|
|
@ -1608,9 +1637,7 @@
|
|||
469347B6414F2CE9DCEEA386,
|
||||
F8C44FF03700F6140950F373,
|
||||
1B170F70AF8AA0A39074F671,
|
||||
8B7D7435287A20CB2D8E3704,
|
||||
2AA4DDD1F26188A570F4DBE2,
|
||||
54D9BBB69BDA3837240F7749 ); name = geometry; sourceTree = "<group>"; };
|
||||
8B7D7435287A20CB2D8E3704 ); name = geometry; sourceTree = "<group>"; };
|
||||
D71FD838B3FD1536FCA839A4 = { isa = PBXGroup; children = (
|
||||
0F1C5770B363EF7DF64A876A,
|
||||
6619D27E74F623B1E8CE8F71,
|
||||
|
|
@ -2082,7 +2109,6 @@
|
|||
9AA76460DA7D34CE6A69E2B1,
|
||||
4E81BC4A50CF1883F529E152,
|
||||
8FBB6BF0C5406E1BA481CFEF,
|
||||
260EF664D324038F9DC6C35B,
|
||||
F5F3F25D9F377128DC74D95B,
|
||||
C64A2BF05224582134872415,
|
||||
0A9C9486A6B31F21B1472D2B,
|
||||
|
|
@ -2105,6 +2131,13 @@
|
|||
968B31D8101A937444C6DFB3,
|
||||
E064E329741F36C329989203,
|
||||
61E659ADBF9D832ED8F24540,
|
||||
9379C833B875207E5DFC5A3F,
|
||||
F1A6C2E3226F87860BFC4EBC,
|
||||
144872E56AED1981C0973B24,
|
||||
95648DF5676EBEF57009D09A,
|
||||
2FE59D80851A0A392EF2F923,
|
||||
621D2E6CDA267030405166C2,
|
||||
90347B7C32ACE8A11FC1B708,
|
||||
FAC87D81FE5168E37645A113,
|
||||
E5BB4B5EBFE206E09D0E6E10,
|
||||
1906C642BF6CA67821512855,
|
||||
|
|
@ -2163,7 +2196,6 @@
|
|||
E7C9FAA5F8A4AEDAD8A8CC1D,
|
||||
DC4BB8AFC054ECD4141B47CC,
|
||||
084C9F2D4F78134CB1EFE676,
|
||||
1110DD0779F44F625316D083,
|
||||
4DAD08CD3A688747C9CA237B,
|
||||
60FE8BFA252E3EF2D60B77AD,
|
||||
C592CC923C5495467EF05D48,
|
||||
|
|
|
|||
38
Juce.jucer
38
Juce.jucer
|
|
@ -728,10 +728,6 @@
|
|||
file="src/gui/components/layout/juce_GroupComponent.cpp"/>
|
||||
<FILE id="JsmHuUYf" name="juce_GroupComponent.h" compile="0" resource="0"
|
||||
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"
|
||||
resource="0" file="src/gui/components/layout/juce_MultiDocumentPanel.cpp"/>
|
||||
<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="src/gui/components/mouse/juce_TooltipClient.h"/>
|
||||
</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">
|
||||
<FILE id="MUcTrPpj" name="juce_BooleanPropertyComponent.cpp" compile="1"
|
||||
resource="0" file="src/gui/components/properties/juce_BooleanPropertyComponent.cpp"/>
|
||||
|
|
@ -1101,10 +1127,6 @@
|
|||
file="src/gui/graphics/geometry/juce_RectangleList.cpp"/>
|
||||
<FILE id="OEwUQsN86" name="juce_RectangleList.h" compile="0" resource="0"
|
||||
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 id="UvRZ4CgGl" name="imaging">
|
||||
<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_ComponentMovementWatcher.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_ResizableBorderComponent.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_TooltipWindow.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
|
||||
|
||||
#if JUCE_BUILD_MISC // (put these in misc to balance the file sizes and avoid problems in iphone build)
|
||||
|
|
|
|||
1365
juce_amalgamated.cpp
1365
juce_amalgamated.cpp
File diff suppressed because it is too large
Load diff
1035
juce_amalgamated.h
1035
juce_amalgamated.h
File diff suppressed because it is too large
Load diff
|
|
@ -731,6 +731,11 @@ bool AudioThumbnail::isFullyLoaded() const throw()
|
|||
return numSamplesFinished >= totalSamples - samplesPerThumbSample;
|
||||
}
|
||||
|
||||
int64 AudioThumbnail::getNumSamplesFinished() const throw()
|
||||
{
|
||||
return numSamplesFinished;
|
||||
}
|
||||
|
||||
float AudioThumbnail::getApproximatePeak() const
|
||||
{
|
||||
int peak = 0;
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@
|
|||
*/
|
||||
#define JUCE_MAJOR_VERSION 1
|
||||
#define JUCE_MINOR_VERSION 53
|
||||
#define JUCE_BUILDNUMBER 4
|
||||
#define JUCE_BUILDNUMBER 6
|
||||
|
||||
/** 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&)
|
||||
{
|
||||
if (lastCurrentId != (int) currentId.getValue())
|
||||
|
|
@ -438,12 +451,20 @@ bool ComboBox::keyPressed (const KeyPress& key)
|
|||
{
|
||||
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;
|
||||
}
|
||||
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;
|
||||
}
|
||||
else if (key.isKeyCode (KeyPress::returnKey))
|
||||
|
|
|
|||
|
|
@ -397,6 +397,7 @@ private:
|
|||
|
||||
ItemInfo* getItemForId (int itemId) const throw();
|
||||
ItemInfo* getItemForIndex (int index) const throw();
|
||||
bool selectIfEnabled (int index);
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ComboBox);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
#define __JUCE_MARKERLIST_JUCEHEADER__
|
||||
|
||||
#include "../../../containers/juce_ValueTree.h"
|
||||
#include "../../graphics/geometry/juce_RelativeCoordinate.h"
|
||||
#include "../positioning/juce_RelativeCoordinate.h"
|
||||
|
||||
|
||||
//==============================================================================
|
||||
176
src/gui/components/positioning/juce_RelativeCoordinate.cpp
Normal file
176
src/gui/components/positioning/juce_RelativeCoordinate.cpp
Normal file
|
|
@ -0,0 +1,176 @@
|
|||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library - "Jules' Utility Class Extensions"
|
||||
Copyright 2004-10 by Raw Material Software Ltd.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
JUCE can be redistributed and/or modified under the terms of the GNU General
|
||||
Public License (Version 2), as published by the Free Software Foundation.
|
||||
A copy of the license is included in the JUCE distribution, or can be found
|
||||
online at www.gnu.org/licenses.
|
||||
|
||||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
To release a closed-source product which uses JUCE, commercial licenses are
|
||||
available: visit www.rawmaterialsoftware.com/juce for more information.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#include "../../../core/juce_StandardHeader.h"
|
||||
|
||||
BEGIN_JUCE_NAMESPACE
|
||||
|
||||
#include "juce_RelativeCoordinate.h"
|
||||
|
||||
|
||||
//==============================================================================
|
||||
const String RelativeCoordinate::Strings::parent ("parent");
|
||||
const String RelativeCoordinate::Strings::this_ ("this");
|
||||
const String RelativeCoordinate::Strings::left ("left");
|
||||
const String RelativeCoordinate::Strings::right ("right");
|
||||
const String RelativeCoordinate::Strings::top ("top");
|
||||
const String RelativeCoordinate::Strings::bottom ("bottom");
|
||||
const String RelativeCoordinate::Strings::parentLeft ("parent.left");
|
||||
const String RelativeCoordinate::Strings::parentTop ("parent.top");
|
||||
const String RelativeCoordinate::Strings::parentRight ("parent.right");
|
||||
const String RelativeCoordinate::Strings::parentBottom ("parent.bottom");
|
||||
|
||||
//==============================================================================
|
||||
RelativeCoordinate::RelativeCoordinate()
|
||||
{
|
||||
}
|
||||
|
||||
RelativeCoordinate::RelativeCoordinate (const Expression& term_)
|
||||
: term (term_)
|
||||
{
|
||||
}
|
||||
|
||||
RelativeCoordinate::RelativeCoordinate (const RelativeCoordinate& other)
|
||||
: term (other.term)
|
||||
{
|
||||
}
|
||||
|
||||
RelativeCoordinate& RelativeCoordinate::operator= (const RelativeCoordinate& other)
|
||||
{
|
||||
term = other.term;
|
||||
return *this;
|
||||
}
|
||||
|
||||
RelativeCoordinate::RelativeCoordinate (const double absoluteDistanceFromOrigin)
|
||||
: term (absoluteDistanceFromOrigin)
|
||||
{
|
||||
}
|
||||
|
||||
RelativeCoordinate::RelativeCoordinate (const String& s)
|
||||
{
|
||||
try
|
||||
{
|
||||
term = Expression (s);
|
||||
}
|
||||
catch (...)
|
||||
{}
|
||||
}
|
||||
|
||||
RelativeCoordinate::~RelativeCoordinate()
|
||||
{
|
||||
}
|
||||
|
||||
bool RelativeCoordinate::operator== (const RelativeCoordinate& other) const throw()
|
||||
{
|
||||
return term.toString() == other.term.toString();
|
||||
}
|
||||
|
||||
bool RelativeCoordinate::operator!= (const RelativeCoordinate& other) const throw()
|
||||
{
|
||||
return ! operator== (other);
|
||||
}
|
||||
|
||||
double RelativeCoordinate::resolve (const Expression::EvaluationContext* context) const
|
||||
{
|
||||
try
|
||||
{
|
||||
if (context != 0)
|
||||
return term.evaluate (*context);
|
||||
else
|
||||
return term.evaluate();
|
||||
}
|
||||
catch (...)
|
||||
{}
|
||||
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
bool RelativeCoordinate::isRecursive (const Expression::EvaluationContext* context) const
|
||||
{
|
||||
try
|
||||
{
|
||||
if (context != 0)
|
||||
term.evaluate (*context);
|
||||
else
|
||||
term.evaluate();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void RelativeCoordinate::moveToAbsolute (double newPos, const Expression::EvaluationContext* context)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (context != 0)
|
||||
{
|
||||
term = term.adjustedToGiveNewResult (newPos, *context);
|
||||
}
|
||||
else
|
||||
{
|
||||
Expression::EvaluationContext defaultContext;
|
||||
term = term.adjustedToGiveNewResult (newPos, defaultContext);
|
||||
}
|
||||
}
|
||||
catch (...)
|
||||
{}
|
||||
}
|
||||
|
||||
bool RelativeCoordinate::references (const String& coordName, const Expression::EvaluationContext* context) const
|
||||
{
|
||||
try
|
||||
{
|
||||
return term.referencesSymbol (coordName, context);
|
||||
}
|
||||
catch (...)
|
||||
{}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool RelativeCoordinate::isDynamic() const
|
||||
{
|
||||
return term.usesAnySymbols();
|
||||
}
|
||||
|
||||
const String RelativeCoordinate::toString() const
|
||||
{
|
||||
return term.toString();
|
||||
}
|
||||
|
||||
void RelativeCoordinate::renameSymbolIfUsed (const String& oldName, const String& newName)
|
||||
{
|
||||
jassert (newName.isNotEmpty() && newName.toLowerCase().containsOnly ("abcdefghijklmnopqrstuvwxyz0123456789_"));
|
||||
|
||||
if (term.referencesSymbol (oldName, 0))
|
||||
term = term.withRenamedSymbol (oldName, newName);
|
||||
}
|
||||
|
||||
|
||||
END_JUCE_NAMESPACE
|
||||
138
src/gui/components/positioning/juce_RelativeCoordinate.h
Normal file
138
src/gui/components/positioning/juce_RelativeCoordinate.h
Normal file
|
|
@ -0,0 +1,138 @@
|
|||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library - "Jules' Utility Class Extensions"
|
||||
Copyright 2004-10 by Raw Material Software Ltd.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
JUCE can be redistributed and/or modified under the terms of the GNU General
|
||||
Public License (Version 2), as published by the Free Software Foundation.
|
||||
A copy of the license is included in the JUCE distribution, or can be found
|
||||
online at www.gnu.org/licenses.
|
||||
|
||||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
To release a closed-source product which uses JUCE, commercial licenses are
|
||||
available: visit www.rawmaterialsoftware.com/juce for more information.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#ifndef __JUCE_RELATIVECOORDINATE_JUCEHEADER__
|
||||
#define __JUCE_RELATIVECOORDINATE_JUCEHEADER__
|
||||
|
||||
#include "../../graphics/geometry/juce_Path.h"
|
||||
#include "../../graphics/geometry/juce_Rectangle.h"
|
||||
#include "../../../maths/juce_Expression.h"
|
||||
|
||||
|
||||
//==============================================================================
|
||||
/**
|
||||
Expresses a coordinate as a dynamically evaluated expression.
|
||||
|
||||
@see RelativePoint, RelativeRectangle
|
||||
*/
|
||||
class JUCE_API RelativeCoordinate
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
/** Creates a zero coordinate. */
|
||||
RelativeCoordinate();
|
||||
RelativeCoordinate (const Expression& expression);
|
||||
RelativeCoordinate (const RelativeCoordinate& other);
|
||||
RelativeCoordinate& operator= (const RelativeCoordinate& other);
|
||||
|
||||
/** Creates an absolute position from the parent origin on either the X or Y axis.
|
||||
|
||||
@param absoluteDistanceFromOrigin the distance from the origin
|
||||
*/
|
||||
RelativeCoordinate (double absoluteDistanceFromOrigin);
|
||||
|
||||
/** Recreates a coordinate from a string description.
|
||||
The string will be parsed by ExpressionParser::parse().
|
||||
@param stringVersion the expression to use
|
||||
@see toString
|
||||
*/
|
||||
RelativeCoordinate (const String& stringVersion);
|
||||
|
||||
/** Destructor. */
|
||||
~RelativeCoordinate();
|
||||
|
||||
bool operator== (const RelativeCoordinate& other) const throw();
|
||||
bool operator!= (const RelativeCoordinate& other) const throw();
|
||||
|
||||
//==============================================================================
|
||||
/** Calculates the absolute position of this coordinate.
|
||||
|
||||
You'll need to provide a suitable Expression::EvaluationContext for looking up any coordinates that may
|
||||
be needed to calculate the result.
|
||||
*/
|
||||
double resolve (const Expression::EvaluationContext* evaluationContext) const;
|
||||
|
||||
/** Returns true if this coordinate uses the specified coord name at any level in its evaluation.
|
||||
This will recursively check any coordinates upon which this one depends.
|
||||
*/
|
||||
bool references (const String& coordName, const Expression::EvaluationContext* evaluationContext) const;
|
||||
|
||||
/** Returns true if there's a recursive loop when trying to resolve this coordinate's position. */
|
||||
bool isRecursive (const Expression::EvaluationContext* evaluationContext) const;
|
||||
|
||||
/** Returns true if this coordinate depends on any other coordinates for its position. */
|
||||
bool isDynamic() const;
|
||||
|
||||
//==============================================================================
|
||||
/** Changes the value of this coord to make it resolve to the specified position.
|
||||
|
||||
Calling this will leave the anchor points unchanged, but will set this coordinate's absolute
|
||||
or relative position to whatever value is necessary to make its resultant position
|
||||
match the position that is provided.
|
||||
*/
|
||||
void moveToAbsolute (double absoluteTargetPosition, const Expression::EvaluationContext* evaluationContext);
|
||||
|
||||
/** Changes the name of a symbol if it is used as part of the coordinate's expression. */
|
||||
void renameSymbolIfUsed (const String& oldName, const String& newName);
|
||||
|
||||
/** Returns the expression that defines this coordinate. */
|
||||
const Expression& getExpression() const { return term; }
|
||||
|
||||
|
||||
//==============================================================================
|
||||
/** Returns a string which represents this coordinate.
|
||||
For details of the string syntax, see the constructor notes.
|
||||
*/
|
||||
const String toString() const;
|
||||
|
||||
//==============================================================================
|
||||
/** A set of static strings that are commonly used by the RelativeCoordinate class.
|
||||
|
||||
As well as avoiding using string literals in your code, using these preset values
|
||||
has the advantage that all instances of the same string will share the same, reference-counted
|
||||
String object, so if you have thousands of points which all refer to the same
|
||||
anchor points, this can save a significant amount of memory allocation.
|
||||
*/
|
||||
struct Strings
|
||||
{
|
||||
static const String parent; /**< "parent" */
|
||||
static const String this_; /**< "this" */
|
||||
static const String left; /**< "left" */
|
||||
static const String right; /**< "right" */
|
||||
static const String top; /**< "top" */
|
||||
static const String bottom; /**< "bottom" */
|
||||
static const String parentLeft; /**< "parent.left" */
|
||||
static const String parentTop; /**< "parent.top" */
|
||||
static const String parentRight; /**< "parent.right" */
|
||||
static const String parentBottom; /**< "parent.bottom" */
|
||||
};
|
||||
|
||||
private:
|
||||
//==============================================================================
|
||||
Expression term;
|
||||
};
|
||||
|
||||
|
||||
#endif // __JUCE_RELATIVECOORDINATE_JUCEHEADER__
|
||||
|
|
@ -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__
|
||||
133
src/gui/components/positioning/juce_RelativeParallelogram.cpp
Normal file
133
src/gui/components/positioning/juce_RelativeParallelogram.cpp
Normal file
|
|
@ -0,0 +1,133 @@
|
|||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library - "Jules' Utility Class Extensions"
|
||||
Copyright 2004-10 by Raw Material Software Ltd.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
JUCE can be redistributed and/or modified under the terms of the GNU General
|
||||
Public License (Version 2), as published by the Free Software Foundation.
|
||||
A copy of the license is included in the JUCE distribution, or can be found
|
||||
online at www.gnu.org/licenses.
|
||||
|
||||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
To release a closed-source product which uses JUCE, commercial licenses are
|
||||
available: visit www.rawmaterialsoftware.com/juce for more information.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#include "../../../core/juce_StandardHeader.h"
|
||||
|
||||
BEGIN_JUCE_NAMESPACE
|
||||
|
||||
#include "juce_RelativeParallelogram.h"
|
||||
|
||||
//==============================================================================
|
||||
RelativeParallelogram::RelativeParallelogram()
|
||||
{
|
||||
}
|
||||
|
||||
RelativeParallelogram::RelativeParallelogram (const Rectangle<float>& r)
|
||||
: topLeft (r.getTopLeft()), topRight (r.getTopRight()), bottomLeft (r.getBottomLeft())
|
||||
{
|
||||
}
|
||||
|
||||
RelativeParallelogram::RelativeParallelogram (const RelativePoint& topLeft_, const RelativePoint& topRight_, const RelativePoint& bottomLeft_)
|
||||
: topLeft (topLeft_), topRight (topRight_), bottomLeft (bottomLeft_)
|
||||
{
|
||||
}
|
||||
|
||||
RelativeParallelogram::RelativeParallelogram (const String& topLeft_, const String& topRight_, const String& bottomLeft_)
|
||||
: topLeft (topLeft_), topRight (topRight_), bottomLeft (bottomLeft_)
|
||||
{
|
||||
}
|
||||
|
||||
RelativeParallelogram::~RelativeParallelogram()
|
||||
{
|
||||
}
|
||||
|
||||
void RelativeParallelogram::resolveThreePoints (Point<float>* points, Expression::EvaluationContext* const coordFinder) const
|
||||
{
|
||||
points[0] = topLeft.resolve (coordFinder);
|
||||
points[1] = topRight.resolve (coordFinder);
|
||||
points[2] = bottomLeft.resolve (coordFinder);
|
||||
}
|
||||
|
||||
void RelativeParallelogram::resolveFourCorners (Point<float>* points, Expression::EvaluationContext* const coordFinder) const
|
||||
{
|
||||
resolveThreePoints (points, coordFinder);
|
||||
points[3] = points[1] + (points[2] - points[0]);
|
||||
}
|
||||
|
||||
const Rectangle<float> RelativeParallelogram::getBounds (Expression::EvaluationContext* const coordFinder) const
|
||||
{
|
||||
Point<float> points[4];
|
||||
resolveFourCorners (points, coordFinder);
|
||||
return Rectangle<float>::findAreaContainingPoints (points, 4);
|
||||
}
|
||||
|
||||
void RelativeParallelogram::getPath (Path& path, Expression::EvaluationContext* const coordFinder) const
|
||||
{
|
||||
Point<float> points[4];
|
||||
resolveFourCorners (points, coordFinder);
|
||||
|
||||
path.startNewSubPath (points[0]);
|
||||
path.lineTo (points[1]);
|
||||
path.lineTo (points[3]);
|
||||
path.lineTo (points[2]);
|
||||
path.closeSubPath();
|
||||
}
|
||||
|
||||
const AffineTransform RelativeParallelogram::resetToPerpendicular (Expression::EvaluationContext* const coordFinder)
|
||||
{
|
||||
Point<float> corners[3];
|
||||
resolveThreePoints (corners, coordFinder);
|
||||
|
||||
const Line<float> top (corners[0], corners[1]);
|
||||
const Line<float> left (corners[0], corners[2]);
|
||||
const Point<float> newTopRight (corners[0] + Point<float> (top.getLength(), 0.0f));
|
||||
const Point<float> newBottomLeft (corners[0] + Point<float> (0.0f, left.getLength()));
|
||||
|
||||
topRight.moveToAbsolute (newTopRight, coordFinder);
|
||||
bottomLeft.moveToAbsolute (newBottomLeft, coordFinder);
|
||||
|
||||
return AffineTransform::fromTargetPoints (corners[0].getX(), corners[0].getY(), corners[0].getX(), corners[0].getY(),
|
||||
corners[1].getX(), corners[1].getY(), newTopRight.getX(), newTopRight.getY(),
|
||||
corners[2].getX(), corners[2].getY(), newBottomLeft.getX(), newBottomLeft.getY());
|
||||
}
|
||||
|
||||
bool RelativeParallelogram::operator== (const RelativeParallelogram& other) const throw()
|
||||
{
|
||||
return topLeft == other.topLeft && topRight == other.topRight && bottomLeft == other.bottomLeft;
|
||||
}
|
||||
|
||||
bool RelativeParallelogram::operator!= (const RelativeParallelogram& other) const throw()
|
||||
{
|
||||
return ! operator== (other);
|
||||
}
|
||||
|
||||
const Point<float> RelativeParallelogram::getInternalCoordForPoint (const Point<float>* const corners, Point<float> target) throw()
|
||||
{
|
||||
const Point<float> tr (corners[1] - corners[0]);
|
||||
const Point<float> bl (corners[2] - corners[0]);
|
||||
target -= corners[0];
|
||||
|
||||
return Point<float> (Line<float> (Point<float>(), tr).getIntersection (Line<float> (target, target - bl)).getDistanceFromOrigin(),
|
||||
Line<float> (Point<float>(), bl).getIntersection (Line<float> (target, target - tr)).getDistanceFromOrigin());
|
||||
}
|
||||
|
||||
const Point<float> RelativeParallelogram::getPointForInternalCoord (const Point<float>* const corners, const Point<float>& point) throw()
|
||||
{
|
||||
return corners[0]
|
||||
+ Line<float> (Point<float>(), corners[1] - corners[0]).getPointAlongLine (point.getX())
|
||||
+ Line<float> (Point<float>(), corners[2] - corners[0]).getPointAlongLine (point.getY());
|
||||
}
|
||||
|
||||
END_JUCE_NAMESPACE
|
||||
66
src/gui/components/positioning/juce_RelativeParallelogram.h
Normal file
66
src/gui/components/positioning/juce_RelativeParallelogram.h
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library - "Jules' Utility Class Extensions"
|
||||
Copyright 2004-10 by Raw Material Software Ltd.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
JUCE can be redistributed and/or modified under the terms of the GNU General
|
||||
Public License (Version 2), as published by the Free Software Foundation.
|
||||
A copy of the license is included in the JUCE distribution, or can be found
|
||||
online at www.gnu.org/licenses.
|
||||
|
||||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
To release a closed-source product which uses JUCE, commercial licenses are
|
||||
available: visit www.rawmaterialsoftware.com/juce for more information.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#ifndef __JUCE_RELATIVEPARALLELOGRAM_JUCEHEADER__
|
||||
#define __JUCE_RELATIVEPARALLELOGRAM_JUCEHEADER__
|
||||
|
||||
#include "juce_RelativePoint.h"
|
||||
|
||||
|
||||
//==============================================================================
|
||||
/**
|
||||
A parallelogram defined by three RelativePoint positions.
|
||||
|
||||
@see RelativePoint, RelativeCoordinate
|
||||
*/
|
||||
class JUCE_API RelativeParallelogram
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
RelativeParallelogram();
|
||||
RelativeParallelogram (const Rectangle<float>& simpleRectangle);
|
||||
RelativeParallelogram (const RelativePoint& topLeft, const RelativePoint& topRight, const RelativePoint& bottomLeft);
|
||||
RelativeParallelogram (const String& topLeft, const String& topRight, const String& bottomLeft);
|
||||
~RelativeParallelogram();
|
||||
|
||||
//==============================================================================
|
||||
void resolveThreePoints (Point<float>* points, Expression::EvaluationContext* coordFinder) const;
|
||||
void resolveFourCorners (Point<float>* points, Expression::EvaluationContext* coordFinder) const;
|
||||
const Rectangle<float> getBounds (Expression::EvaluationContext* coordFinder) const;
|
||||
void getPath (Path& path, Expression::EvaluationContext* coordFinder) const;
|
||||
const AffineTransform resetToPerpendicular (Expression::EvaluationContext* coordFinder);
|
||||
|
||||
bool operator== (const RelativeParallelogram& other) const throw();
|
||||
bool operator!= (const RelativeParallelogram& other) const throw();
|
||||
|
||||
static const Point<float> getInternalCoordForPoint (const Point<float>* parallelogramCorners, Point<float> point) throw();
|
||||
static const Point<float> getPointForInternalCoord (const Point<float>* parallelogramCorners, const Point<float>& internalPoint) throw();
|
||||
|
||||
//==============================================================================
|
||||
RelativePoint topLeft, topRight, bottomLeft;
|
||||
};
|
||||
|
||||
|
||||
#endif // __JUCE_RELATIVEPARALLELOGRAM_JUCEHEADER__
|
||||
111
src/gui/components/positioning/juce_RelativePoint.cpp
Normal file
111
src/gui/components/positioning/juce_RelativePoint.cpp
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library - "Jules' Utility Class Extensions"
|
||||
Copyright 2004-10 by Raw Material Software Ltd.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
JUCE can be redistributed and/or modified under the terms of the GNU General
|
||||
Public License (Version 2), as published by the Free Software Foundation.
|
||||
A copy of the license is included in the JUCE distribution, or can be found
|
||||
online at www.gnu.org/licenses.
|
||||
|
||||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
To release a closed-source product which uses JUCE, commercial licenses are
|
||||
available: visit www.rawmaterialsoftware.com/juce for more information.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#include "../../../core/juce_StandardHeader.h"
|
||||
|
||||
BEGIN_JUCE_NAMESPACE
|
||||
|
||||
#include "juce_RelativePoint.h"
|
||||
|
||||
namespace RelativePointHelpers
|
||||
{
|
||||
void skipComma (const juce_wchar* const s, int& i)
|
||||
{
|
||||
while (CharacterFunctions::isWhitespace (s[i]))
|
||||
++i;
|
||||
|
||||
if (s[i] == ',')
|
||||
++i;
|
||||
}
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
RelativePoint::RelativePoint()
|
||||
{
|
||||
}
|
||||
|
||||
RelativePoint::RelativePoint (const Point<float>& absolutePoint)
|
||||
: x (absolutePoint.getX()), y (absolutePoint.getY())
|
||||
{
|
||||
}
|
||||
|
||||
RelativePoint::RelativePoint (const float x_, const float y_)
|
||||
: x (x_), y (y_)
|
||||
{
|
||||
}
|
||||
|
||||
RelativePoint::RelativePoint (const RelativeCoordinate& x_, const RelativeCoordinate& y_)
|
||||
: x (x_), y (y_)
|
||||
{
|
||||
}
|
||||
|
||||
RelativePoint::RelativePoint (const String& s)
|
||||
{
|
||||
int i = 0;
|
||||
x = RelativeCoordinate (Expression::parse (s, i));
|
||||
RelativePointHelpers::skipComma (s, i);
|
||||
y = RelativeCoordinate (Expression::parse (s, i));
|
||||
}
|
||||
|
||||
bool RelativePoint::operator== (const RelativePoint& other) const throw()
|
||||
{
|
||||
return x == other.x && y == other.y;
|
||||
}
|
||||
|
||||
bool RelativePoint::operator!= (const RelativePoint& other) const throw()
|
||||
{
|
||||
return ! operator== (other);
|
||||
}
|
||||
|
||||
const Point<float> RelativePoint::resolve (const Expression::EvaluationContext* context) const
|
||||
{
|
||||
return Point<float> ((float) x.resolve (context),
|
||||
(float) y.resolve (context));
|
||||
}
|
||||
|
||||
void RelativePoint::moveToAbsolute (const Point<float>& newPos, const Expression::EvaluationContext* context)
|
||||
{
|
||||
x.moveToAbsolute (newPos.getX(), context);
|
||||
y.moveToAbsolute (newPos.getY(), context);
|
||||
}
|
||||
|
||||
const String RelativePoint::toString() const
|
||||
{
|
||||
return x.toString() + ", " + y.toString();
|
||||
}
|
||||
|
||||
void RelativePoint::renameSymbolIfUsed (const String& oldName, const String& newName)
|
||||
{
|
||||
x.renameSymbolIfUsed (oldName, newName);
|
||||
y.renameSymbolIfUsed (oldName, newName);
|
||||
}
|
||||
|
||||
bool RelativePoint::isDynamic() const
|
||||
{
|
||||
return x.isDynamic() || y.isDynamic();
|
||||
}
|
||||
|
||||
|
||||
END_JUCE_NAMESPACE
|
||||
98
src/gui/components/positioning/juce_RelativePoint.h
Normal file
98
src/gui/components/positioning/juce_RelativePoint.h
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library - "Jules' Utility Class Extensions"
|
||||
Copyright 2004-10 by Raw Material Software Ltd.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
JUCE can be redistributed and/or modified under the terms of the GNU General
|
||||
Public License (Version 2), as published by the Free Software Foundation.
|
||||
A copy of the license is included in the JUCE distribution, or can be found
|
||||
online at www.gnu.org/licenses.
|
||||
|
||||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
To release a closed-source product which uses JUCE, commercial licenses are
|
||||
available: visit www.rawmaterialsoftware.com/juce for more information.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#ifndef __JUCE_RELATIVEPOINT_JUCEHEADER__
|
||||
#define __JUCE_RELATIVEPOINT_JUCEHEADER__
|
||||
|
||||
#include "juce_RelativeCoordinate.h"
|
||||
|
||||
|
||||
//==============================================================================
|
||||
/**
|
||||
An X-Y position stored as a pair of RelativeCoordinate values.
|
||||
|
||||
@see RelativeCoordinate, RelativeRectangle
|
||||
*/
|
||||
class JUCE_API RelativePoint
|
||||
{
|
||||
public:
|
||||
/** Creates a point at the origin. */
|
||||
RelativePoint();
|
||||
|
||||
/** Creates an absolute point, relative to the origin. */
|
||||
RelativePoint (const Point<float>& absolutePoint);
|
||||
|
||||
/** Creates an absolute point, relative to the origin. */
|
||||
RelativePoint (float absoluteX, float absoluteY);
|
||||
|
||||
/** Creates an absolute point from two coordinates. */
|
||||
RelativePoint (const RelativeCoordinate& x, const RelativeCoordinate& y);
|
||||
|
||||
/** Creates a point from a stringified representation.
|
||||
The string must contain a pair of coordinates, separated by space or a comma. The syntax for the coordinate
|
||||
strings is explained in the RelativeCoordinate class.
|
||||
@see toString
|
||||
*/
|
||||
RelativePoint (const String& stringVersion);
|
||||
|
||||
bool operator== (const RelativePoint& other) const throw();
|
||||
bool operator!= (const RelativePoint& other) const throw();
|
||||
|
||||
/** Calculates the absolute position of this point.
|
||||
|
||||
You'll need to provide a suitable Expression::EvaluationContext for looking up any coordinates that may
|
||||
be needed to calculate the result.
|
||||
*/
|
||||
const Point<float> resolve (const Expression::EvaluationContext* evaluationContext) const;
|
||||
|
||||
/** Changes the values of this point's coordinates to make it resolve to the specified position.
|
||||
|
||||
Calling this will leave any anchor points unchanged, but will set any absolute
|
||||
or relative positions to whatever values are necessary to make the resultant position
|
||||
match the position that is provided.
|
||||
*/
|
||||
void moveToAbsolute (const Point<float>& newPos, const Expression::EvaluationContext* evaluationContext);
|
||||
|
||||
/** Returns a string which represents this point.
|
||||
This returns a comma-separated pair of coordinates. For details of the string syntax used by the
|
||||
coordinates, see the RelativeCoordinate constructor notes.
|
||||
The string that is returned can be passed to the RelativePoint constructor to recreate the point.
|
||||
*/
|
||||
const String toString() const;
|
||||
|
||||
/** Renames a symbol if it is used by any of the coordinates.
|
||||
This calls RelativeCoordinate::renameAnchorIfUsed() on its X and Y coordinates.
|
||||
*/
|
||||
void renameSymbolIfUsed (const String& oldName, const String& newName);
|
||||
|
||||
/** Returns true if this point depends on any other coordinates for its position. */
|
||||
bool isDynamic() const;
|
||||
|
||||
// The actual X and Y coords...
|
||||
RelativeCoordinate x, y;
|
||||
};
|
||||
|
||||
|
||||
#endif // __JUCE_RELATIVEPOINT_JUCEHEADER__
|
||||
306
src/gui/components/positioning/juce_RelativePointPath.cpp
Normal file
306
src/gui/components/positioning/juce_RelativePointPath.cpp
Normal file
|
|
@ -0,0 +1,306 @@
|
|||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library - "Jules' Utility Class Extensions"
|
||||
Copyright 2004-10 by Raw Material Software Ltd.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
JUCE can be redistributed and/or modified under the terms of the GNU General
|
||||
Public License (Version 2), as published by the Free Software Foundation.
|
||||
A copy of the license is included in the JUCE distribution, or can be found
|
||||
online at www.gnu.org/licenses.
|
||||
|
||||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
To release a closed-source product which uses JUCE, commercial licenses are
|
||||
available: visit www.rawmaterialsoftware.com/juce for more information.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#include "../../../core/juce_StandardHeader.h"
|
||||
|
||||
BEGIN_JUCE_NAMESPACE
|
||||
|
||||
#include "juce_RelativePointPath.h"
|
||||
#include "../../graphics/drawables/juce_DrawablePath.h"
|
||||
|
||||
|
||||
//==============================================================================
|
||||
RelativePointPath::RelativePointPath()
|
||||
: usesNonZeroWinding (true),
|
||||
containsDynamicPoints (false)
|
||||
{
|
||||
}
|
||||
|
||||
RelativePointPath::RelativePointPath (const RelativePointPath& other)
|
||||
: usesNonZeroWinding (true),
|
||||
containsDynamicPoints (false)
|
||||
{
|
||||
for (int i = 0; i < other.elements.size(); ++i)
|
||||
elements.add (other.elements.getUnchecked(i)->clone());
|
||||
}
|
||||
|
||||
RelativePointPath::RelativePointPath (const Path& path)
|
||||
{
|
||||
usesNonZeroWinding = path.isUsingNonZeroWinding();
|
||||
|
||||
Path::Iterator i (path);
|
||||
|
||||
while (i.next())
|
||||
{
|
||||
switch (i.elementType)
|
||||
{
|
||||
case Path::Iterator::startNewSubPath: elements.add (new StartSubPath (RelativePoint (i.x1, i.y1))); break;
|
||||
case Path::Iterator::lineTo: elements.add (new LineTo (RelativePoint (i.x1, i.y1))); break;
|
||||
case Path::Iterator::quadraticTo: elements.add (new QuadraticTo (RelativePoint (i.x1, i.y1), RelativePoint (i.x2, i.y2))); break;
|
||||
case Path::Iterator::cubicTo: elements.add (new CubicTo (RelativePoint (i.x1, i.y1), RelativePoint (i.x2, i.y2), RelativePoint (i.x3, i.y3))); break;
|
||||
case Path::Iterator::closePath: elements.add (new CloseSubPath()); break;
|
||||
default: jassertfalse; break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RelativePointPath::~RelativePointPath()
|
||||
{
|
||||
}
|
||||
|
||||
bool RelativePointPath::operator== (const RelativePointPath& other) const throw()
|
||||
{
|
||||
if (elements.size() != other.elements.size()
|
||||
|| usesNonZeroWinding != other.usesNonZeroWinding
|
||||
|| containsDynamicPoints != other.containsDynamicPoints)
|
||||
return false;
|
||||
|
||||
for (int i = 0; i < elements.size(); ++i)
|
||||
{
|
||||
ElementBase* const e1 = elements.getUnchecked(i);
|
||||
ElementBase* const e2 = other.elements.getUnchecked(i);
|
||||
|
||||
if (e1->type != e2->type)
|
||||
return false;
|
||||
|
||||
int numPoints1, numPoints2;
|
||||
RelativePoint* const points1 = e1->getControlPoints (numPoints1);
|
||||
RelativePoint* const points2 = e2->getControlPoints (numPoints2);
|
||||
|
||||
jassert (numPoints1 == numPoints2);
|
||||
|
||||
for (int j = numPoints1; --j >= 0;)
|
||||
if (points1[j] != points2[j])
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool RelativePointPath::operator!= (const RelativePointPath& other) const throw()
|
||||
{
|
||||
return ! operator== (other);
|
||||
}
|
||||
|
||||
void RelativePointPath::swapWith (RelativePointPath& other) throw()
|
||||
{
|
||||
elements.swapWithArray (other.elements);
|
||||
swapVariables (usesNonZeroWinding, other.usesNonZeroWinding);
|
||||
}
|
||||
|
||||
void RelativePointPath::createPath (Path& path, Expression::EvaluationContext* coordFinder) const
|
||||
{
|
||||
for (int i = 0; i < elements.size(); ++i)
|
||||
elements.getUnchecked(i)->addToPath (path, coordFinder);
|
||||
}
|
||||
|
||||
bool RelativePointPath::containsAnyDynamicPoints() const
|
||||
{
|
||||
return containsDynamicPoints;
|
||||
}
|
||||
|
||||
void RelativePointPath::addElement (ElementBase* newElement)
|
||||
{
|
||||
if (newElement != 0)
|
||||
{
|
||||
elements.add (newElement);
|
||||
containsDynamicPoints = containsDynamicPoints || newElement->isDynamic();
|
||||
}
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
RelativePointPath::ElementBase::ElementBase (const ElementType type_) : type (type_)
|
||||
{
|
||||
}
|
||||
|
||||
bool RelativePointPath::ElementBase::isDynamic()
|
||||
{
|
||||
int numPoints;
|
||||
const RelativePoint* const points = getControlPoints (numPoints);
|
||||
|
||||
for (int i = numPoints; --i >= 0;)
|
||||
if (points[i].isDynamic())
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
RelativePointPath::StartSubPath::StartSubPath (const RelativePoint& pos)
|
||||
: ElementBase (startSubPathElement), startPos (pos)
|
||||
{
|
||||
}
|
||||
|
||||
const ValueTree RelativePointPath::StartSubPath::createTree() const
|
||||
{
|
||||
ValueTree v (DrawablePath::ValueTreeWrapper::Element::startSubPathElement);
|
||||
v.setProperty (DrawablePath::ValueTreeWrapper::point1, startPos.toString(), 0);
|
||||
return v;
|
||||
}
|
||||
|
||||
void RelativePointPath::StartSubPath::addToPath (Path& path, Expression::EvaluationContext* coordFinder) const
|
||||
{
|
||||
path.startNewSubPath (startPos.resolve (coordFinder));
|
||||
}
|
||||
|
||||
RelativePoint* RelativePointPath::StartSubPath::getControlPoints (int& numPoints)
|
||||
{
|
||||
numPoints = 1;
|
||||
return &startPos;
|
||||
}
|
||||
|
||||
RelativePointPath::ElementBase* RelativePointPath::StartSubPath::clone() const
|
||||
{
|
||||
return new StartSubPath (startPos);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
RelativePointPath::CloseSubPath::CloseSubPath()
|
||||
: ElementBase (closeSubPathElement)
|
||||
{
|
||||
}
|
||||
|
||||
const ValueTree RelativePointPath::CloseSubPath::createTree() const
|
||||
{
|
||||
return ValueTree (DrawablePath::ValueTreeWrapper::Element::closeSubPathElement);
|
||||
}
|
||||
|
||||
void RelativePointPath::CloseSubPath::addToPath (Path& path, Expression::EvaluationContext*) const
|
||||
{
|
||||
path.closeSubPath();
|
||||
}
|
||||
|
||||
RelativePoint* RelativePointPath::CloseSubPath::getControlPoints (int& numPoints)
|
||||
{
|
||||
numPoints = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
RelativePointPath::ElementBase* RelativePointPath::CloseSubPath::clone() const
|
||||
{
|
||||
return new CloseSubPath();
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
RelativePointPath::LineTo::LineTo (const RelativePoint& endPoint_)
|
||||
: ElementBase (lineToElement), endPoint (endPoint_)
|
||||
{
|
||||
}
|
||||
|
||||
const ValueTree RelativePointPath::LineTo::createTree() const
|
||||
{
|
||||
ValueTree v (DrawablePath::ValueTreeWrapper::Element::lineToElement);
|
||||
v.setProperty (DrawablePath::ValueTreeWrapper::point1, endPoint.toString(), 0);
|
||||
return v;
|
||||
}
|
||||
|
||||
void RelativePointPath::LineTo::addToPath (Path& path, Expression::EvaluationContext* coordFinder) const
|
||||
{
|
||||
path.lineTo (endPoint.resolve (coordFinder));
|
||||
}
|
||||
|
||||
RelativePoint* RelativePointPath::LineTo::getControlPoints (int& numPoints)
|
||||
{
|
||||
numPoints = 1;
|
||||
return &endPoint;
|
||||
}
|
||||
|
||||
RelativePointPath::ElementBase* RelativePointPath::LineTo::clone() const
|
||||
{
|
||||
return new LineTo (endPoint);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
RelativePointPath::QuadraticTo::QuadraticTo (const RelativePoint& controlPoint, const RelativePoint& endPoint)
|
||||
: ElementBase (quadraticToElement)
|
||||
{
|
||||
controlPoints[0] = controlPoint;
|
||||
controlPoints[1] = endPoint;
|
||||
}
|
||||
|
||||
const ValueTree RelativePointPath::QuadraticTo::createTree() const
|
||||
{
|
||||
ValueTree v (DrawablePath::ValueTreeWrapper::Element::quadraticToElement);
|
||||
v.setProperty (DrawablePath::ValueTreeWrapper::point1, controlPoints[0].toString(), 0);
|
||||
v.setProperty (DrawablePath::ValueTreeWrapper::point2, controlPoints[1].toString(), 0);
|
||||
return v;
|
||||
}
|
||||
|
||||
void RelativePointPath::QuadraticTo::addToPath (Path& path, Expression::EvaluationContext* coordFinder) const
|
||||
{
|
||||
path.quadraticTo (controlPoints[0].resolve (coordFinder),
|
||||
controlPoints[1].resolve (coordFinder));
|
||||
}
|
||||
|
||||
RelativePoint* RelativePointPath::QuadraticTo::getControlPoints (int& numPoints)
|
||||
{
|
||||
numPoints = 2;
|
||||
return controlPoints;
|
||||
}
|
||||
|
||||
RelativePointPath::ElementBase* RelativePointPath::QuadraticTo::clone() const
|
||||
{
|
||||
return new QuadraticTo (controlPoints[0], controlPoints[1]);
|
||||
}
|
||||
|
||||
|
||||
//==============================================================================
|
||||
RelativePointPath::CubicTo::CubicTo (const RelativePoint& controlPoint1, const RelativePoint& controlPoint2, const RelativePoint& endPoint)
|
||||
: ElementBase (cubicToElement)
|
||||
{
|
||||
controlPoints[0] = controlPoint1;
|
||||
controlPoints[1] = controlPoint2;
|
||||
controlPoints[2] = endPoint;
|
||||
}
|
||||
|
||||
const ValueTree RelativePointPath::CubicTo::createTree() const
|
||||
{
|
||||
ValueTree v (DrawablePath::ValueTreeWrapper::Element::cubicToElement);
|
||||
v.setProperty (DrawablePath::ValueTreeWrapper::point1, controlPoints[0].toString(), 0);
|
||||
v.setProperty (DrawablePath::ValueTreeWrapper::point2, controlPoints[1].toString(), 0);
|
||||
v.setProperty (DrawablePath::ValueTreeWrapper::point3, controlPoints[2].toString(), 0);
|
||||
return v;
|
||||
}
|
||||
|
||||
void RelativePointPath::CubicTo::addToPath (Path& path, Expression::EvaluationContext* coordFinder) const
|
||||
{
|
||||
path.cubicTo (controlPoints[0].resolve (coordFinder),
|
||||
controlPoints[1].resolve (coordFinder),
|
||||
controlPoints[2].resolve (coordFinder));
|
||||
}
|
||||
|
||||
RelativePoint* RelativePointPath::CubicTo::getControlPoints (int& numPoints)
|
||||
{
|
||||
numPoints = 3;
|
||||
return controlPoints;
|
||||
}
|
||||
|
||||
RelativePointPath::ElementBase* RelativePointPath::CubicTo::clone() const
|
||||
{
|
||||
return new CubicTo (controlPoints[0], controlPoints[1], controlPoints[2]);
|
||||
}
|
||||
|
||||
|
||||
END_JUCE_NAMESPACE
|
||||
196
src/gui/components/positioning/juce_RelativePointPath.h
Normal file
196
src/gui/components/positioning/juce_RelativePointPath.h
Normal file
|
|
@ -0,0 +1,196 @@
|
|||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library - "Jules' Utility Class Extensions"
|
||||
Copyright 2004-10 by Raw Material Software Ltd.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
JUCE can be redistributed and/or modified under the terms of the GNU General
|
||||
Public License (Version 2), as published by the Free Software Foundation.
|
||||
A copy of the license is included in the JUCE distribution, or can be found
|
||||
online at www.gnu.org/licenses.
|
||||
|
||||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
To release a closed-source product which uses JUCE, commercial licenses are
|
||||
available: visit www.rawmaterialsoftware.com/juce for more information.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#ifndef __JUCE_RELATIVEPOINTPATH_JUCEHEADER__
|
||||
#define __JUCE_RELATIVEPOINTPATH_JUCEHEADER__
|
||||
|
||||
#include "juce_RelativePoint.h"
|
||||
#include "../../../containers/juce_OwnedArray.h"
|
||||
#include "../../../containers/juce_ValueTree.h"
|
||||
class DrawablePath;
|
||||
|
||||
//==============================================================================
|
||||
/**
|
||||
A path object that consists of RelativePoint coordinates rather than the normal fixed ones.
|
||||
|
||||
One of these paths can be converted into a Path object for drawing and manipulation, but
|
||||
unlike a Path, its points can be dynamic instead of just fixed.
|
||||
|
||||
@see RelativePoint, RelativeCoordinate
|
||||
*/
|
||||
class JUCE_API RelativePointPath
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
RelativePointPath();
|
||||
RelativePointPath (const RelativePointPath& other);
|
||||
RelativePointPath (const Path& path);
|
||||
~RelativePointPath();
|
||||
|
||||
bool operator== (const RelativePointPath& other) const throw();
|
||||
bool operator!= (const RelativePointPath& other) const throw();
|
||||
|
||||
//==============================================================================
|
||||
/** Resolves this points in this path and adds them to a normal Path object. */
|
||||
void createPath (Path& path, Expression::EvaluationContext* coordFinder) const;
|
||||
|
||||
/** Returns true if the path contains any non-fixed points. */
|
||||
bool containsAnyDynamicPoints() const;
|
||||
|
||||
/** Quickly swaps the contents of this path with another. */
|
||||
void swapWith (RelativePointPath& other) throw();
|
||||
|
||||
//==============================================================================
|
||||
/** The types of element that may be contained in this path.
|
||||
@see RelativePointPath::ElementBase
|
||||
*/
|
||||
enum ElementType
|
||||
{
|
||||
nullElement,
|
||||
startSubPathElement,
|
||||
closeSubPathElement,
|
||||
lineToElement,
|
||||
quadraticToElement,
|
||||
cubicToElement
|
||||
};
|
||||
|
||||
//==============================================================================
|
||||
/** Base class for the elements that make up a RelativePointPath.
|
||||
*/
|
||||
class JUCE_API ElementBase
|
||||
{
|
||||
public:
|
||||
ElementBase (ElementType type);
|
||||
virtual ~ElementBase() {}
|
||||
virtual const ValueTree createTree() const = 0;
|
||||
virtual void addToPath (Path& path, Expression::EvaluationContext* coordFinder) const = 0;
|
||||
virtual RelativePoint* getControlPoints (int& numPoints) = 0;
|
||||
virtual ElementBase* clone() const = 0;
|
||||
bool isDynamic();
|
||||
|
||||
const ElementType type;
|
||||
|
||||
private:
|
||||
JUCE_DECLARE_NON_COPYABLE (ElementBase);
|
||||
};
|
||||
|
||||
//==============================================================================
|
||||
class JUCE_API StartSubPath : public ElementBase
|
||||
{
|
||||
public:
|
||||
StartSubPath (const RelativePoint& pos);
|
||||
const ValueTree createTree() const;
|
||||
void addToPath (Path& path, Expression::EvaluationContext* coordFinder) const;
|
||||
RelativePoint* getControlPoints (int& numPoints);
|
||||
ElementBase* clone() const;
|
||||
|
||||
RelativePoint startPos;
|
||||
|
||||
private:
|
||||
JUCE_DECLARE_NON_COPYABLE (StartSubPath);
|
||||
};
|
||||
|
||||
//==============================================================================
|
||||
class JUCE_API CloseSubPath : public ElementBase
|
||||
{
|
||||
public:
|
||||
CloseSubPath();
|
||||
const ValueTree createTree() const;
|
||||
void addToPath (Path& path, Expression::EvaluationContext* coordFinder) const;
|
||||
RelativePoint* getControlPoints (int& numPoints);
|
||||
ElementBase* clone() const;
|
||||
|
||||
private:
|
||||
JUCE_DECLARE_NON_COPYABLE (CloseSubPath);
|
||||
};
|
||||
|
||||
//==============================================================================
|
||||
class JUCE_API LineTo : public ElementBase
|
||||
{
|
||||
public:
|
||||
LineTo (const RelativePoint& endPoint);
|
||||
const ValueTree createTree() const;
|
||||
void addToPath (Path& path, Expression::EvaluationContext* coordFinder) const;
|
||||
RelativePoint* getControlPoints (int& numPoints);
|
||||
ElementBase* clone() const;
|
||||
|
||||
RelativePoint endPoint;
|
||||
|
||||
private:
|
||||
JUCE_DECLARE_NON_COPYABLE (LineTo);
|
||||
};
|
||||
|
||||
//==============================================================================
|
||||
class JUCE_API QuadraticTo : public ElementBase
|
||||
{
|
||||
public:
|
||||
QuadraticTo (const RelativePoint& controlPoint, const RelativePoint& endPoint);
|
||||
const ValueTree createTree() const;
|
||||
void addToPath (Path& path, Expression::EvaluationContext* coordFinder) const;
|
||||
RelativePoint* getControlPoints (int& numPoints);
|
||||
ElementBase* clone() const;
|
||||
|
||||
RelativePoint controlPoints[2];
|
||||
|
||||
private:
|
||||
JUCE_DECLARE_NON_COPYABLE (QuadraticTo);
|
||||
};
|
||||
|
||||
//==============================================================================
|
||||
class JUCE_API CubicTo : public ElementBase
|
||||
{
|
||||
public:
|
||||
CubicTo (const RelativePoint& controlPoint1, const RelativePoint& controlPoint2, const RelativePoint& endPoint);
|
||||
const ValueTree createTree() const;
|
||||
void addToPath (Path& path, Expression::EvaluationContext* coordFinder) const;
|
||||
RelativePoint* getControlPoints (int& numPoints);
|
||||
ElementBase* clone() const;
|
||||
|
||||
RelativePoint controlPoints[3];
|
||||
|
||||
private:
|
||||
JUCE_DECLARE_NON_COPYABLE (CubicTo);
|
||||
};
|
||||
|
||||
//==============================================================================
|
||||
void addElement (ElementBase* newElement);
|
||||
|
||||
//==============================================================================
|
||||
OwnedArray <ElementBase> elements;
|
||||
bool usesNonZeroWinding;
|
||||
|
||||
private:
|
||||
class Positioner;
|
||||
friend class Positioner;
|
||||
bool containsDynamicPoints;
|
||||
|
||||
void applyTo (DrawablePath& path) const;
|
||||
|
||||
RelativePointPath& operator= (const RelativePointPath&);
|
||||
JUCE_LEAK_DETECTOR (RelativePointPath);
|
||||
};
|
||||
|
||||
|
||||
#endif // __JUCE_RELATIVEPOINTPATH_JUCEHEADER__
|
||||
189
src/gui/components/positioning/juce_RelativeRectangle.cpp
Normal file
189
src/gui/components/positioning/juce_RelativeRectangle.cpp
Normal file
|
|
@ -0,0 +1,189 @@
|
|||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library - "Jules' Utility Class Extensions"
|
||||
Copyright 2004-10 by Raw Material Software Ltd.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
JUCE can be redistributed and/or modified under the terms of the GNU General
|
||||
Public License (Version 2), as published by the Free Software Foundation.
|
||||
A copy of the license is included in the JUCE distribution, or can be found
|
||||
online at www.gnu.org/licenses.
|
||||
|
||||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
To release a closed-source product which uses JUCE, commercial licenses are
|
||||
available: visit www.rawmaterialsoftware.com/juce for more information.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#include "../../../core/juce_StandardHeader.h"
|
||||
|
||||
BEGIN_JUCE_NAMESPACE
|
||||
|
||||
#include "juce_RelativeRectangle.h"
|
||||
#include "juce_RelativeCoordinatePositioner.h"
|
||||
|
||||
namespace RelativeRectangleHelpers
|
||||
{
|
||||
inline void skipComma (const juce_wchar* const s, int& i)
|
||||
{
|
||||
while (CharacterFunctions::isWhitespace (s[i]))
|
||||
++i;
|
||||
|
||||
if (s[i] == ',')
|
||||
++i;
|
||||
}
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
RelativeRectangle::RelativeRectangle()
|
||||
{
|
||||
}
|
||||
|
||||
RelativeRectangle::RelativeRectangle (const RelativeCoordinate& left_, const RelativeCoordinate& right_,
|
||||
const RelativeCoordinate& top_, const RelativeCoordinate& bottom_)
|
||||
: left (left_), right (right_), top (top_), bottom (bottom_)
|
||||
{
|
||||
}
|
||||
|
||||
RelativeRectangle::RelativeRectangle (const Rectangle<float>& rect, const String& componentName)
|
||||
: left (rect.getX()),
|
||||
right (Expression::symbol (componentName + "." + RelativeCoordinate::Strings::left) + Expression ((double) rect.getWidth())),
|
||||
top (rect.getY()),
|
||||
bottom (Expression::symbol (componentName + "." + RelativeCoordinate::Strings::top) + Expression ((double) rect.getHeight()))
|
||||
{
|
||||
}
|
||||
|
||||
RelativeRectangle::RelativeRectangle (const String& s)
|
||||
{
|
||||
int i = 0;
|
||||
left = RelativeCoordinate (Expression::parse (s, i));
|
||||
RelativeRectangleHelpers::skipComma (s, i);
|
||||
top = RelativeCoordinate (Expression::parse (s, i));
|
||||
RelativeRectangleHelpers::skipComma (s, i);
|
||||
right = RelativeCoordinate (Expression::parse (s, i));
|
||||
RelativeRectangleHelpers::skipComma (s, i);
|
||||
bottom = RelativeCoordinate (Expression::parse (s, i));
|
||||
}
|
||||
|
||||
bool RelativeRectangle::operator== (const RelativeRectangle& other) const throw()
|
||||
{
|
||||
return left == other.left && top == other.top && right == other.right && bottom == other.bottom;
|
||||
}
|
||||
|
||||
bool RelativeRectangle::operator!= (const RelativeRectangle& other) const throw()
|
||||
{
|
||||
return ! operator== (other);
|
||||
}
|
||||
|
||||
const Rectangle<float> RelativeRectangle::resolve (const Expression::EvaluationContext* context) const
|
||||
{
|
||||
const double l = left.resolve (context);
|
||||
const double r = right.resolve (context);
|
||||
const double t = top.resolve (context);
|
||||
const double b = bottom.resolve (context);
|
||||
|
||||
return Rectangle<float> ((float) l, (float) t, (float) jmax (0.0, r - l), (float) jmax (0.0, b - t));
|
||||
}
|
||||
|
||||
void RelativeRectangle::moveToAbsolute (const Rectangle<float>& newPos, const Expression::EvaluationContext* context)
|
||||
{
|
||||
left.moveToAbsolute (newPos.getX(), context);
|
||||
right.moveToAbsolute (newPos.getRight(), context);
|
||||
top.moveToAbsolute (newPos.getY(), context);
|
||||
bottom.moveToAbsolute (newPos.getBottom(), context);
|
||||
}
|
||||
|
||||
bool RelativeRectangle::isDynamic() const
|
||||
{
|
||||
return left.isDynamic() || right.isDynamic() || top.isDynamic() || bottom.isDynamic();
|
||||
}
|
||||
|
||||
const String RelativeRectangle::toString() const
|
||||
{
|
||||
return left.toString() + ", " + top.toString() + ", " + right.toString() + ", " + bottom.toString();
|
||||
}
|
||||
|
||||
void RelativeRectangle::renameSymbolIfUsed (const String& oldName, const String& newName)
|
||||
{
|
||||
left.renameSymbolIfUsed (oldName, newName);
|
||||
right.renameSymbolIfUsed (oldName, newName);
|
||||
top.renameSymbolIfUsed (oldName, newName);
|
||||
bottom.renameSymbolIfUsed (oldName, newName);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
class RelativeRectangleComponentPositioner : public RelativeCoordinatePositionerBase
|
||||
{
|
||||
public:
|
||||
RelativeRectangleComponentPositioner (Component& component_, const RelativeRectangle& rectangle_)
|
||||
: RelativeCoordinatePositionerBase (component_),
|
||||
rectangle (rectangle_)
|
||||
{
|
||||
}
|
||||
|
||||
bool registerCoordinates()
|
||||
{
|
||||
bool ok = addCoordinate (rectangle.left);
|
||||
ok = addCoordinate (rectangle.right) && ok;
|
||||
ok = addCoordinate (rectangle.top) && ok;
|
||||
ok = addCoordinate (rectangle.bottom) && ok;
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool isUsingRectangle (const RelativeRectangle& other) const throw()
|
||||
{
|
||||
return rectangle == other;
|
||||
}
|
||||
|
||||
void applyToComponentBounds()
|
||||
{
|
||||
for (int i = 4; --i >= 0;)
|
||||
{
|
||||
const Rectangle<int> newBounds (rectangle.resolve (this).getSmallestIntegerContainer());
|
||||
|
||||
if (newBounds == getComponent().getBounds())
|
||||
return;
|
||||
|
||||
getComponent().setBounds (newBounds);
|
||||
}
|
||||
|
||||
jassertfalse; // must be a recursive reference!
|
||||
}
|
||||
|
||||
private:
|
||||
const RelativeRectangle rectangle;
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (RelativeRectangleComponentPositioner);
|
||||
};
|
||||
|
||||
void RelativeRectangle::applyToComponent (Component& component) const
|
||||
{
|
||||
if (isDynamic())
|
||||
{
|
||||
RelativeRectangleComponentPositioner* current = dynamic_cast <RelativeRectangleComponentPositioner*> (component.getPositioner());
|
||||
|
||||
if (current == 0 || ! current->isUsingRectangle (*this))
|
||||
{
|
||||
RelativeRectangleComponentPositioner* p = new RelativeRectangleComponentPositioner (component, *this);
|
||||
|
||||
component.setPositioner (p);
|
||||
p->apply();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
component.setPositioner (0);
|
||||
component.setBounds (resolve (0).getSmallestIntegerContainer());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
END_JUCE_NAMESPACE
|
||||
107
src/gui/components/positioning/juce_RelativeRectangle.h
Normal file
107
src/gui/components/positioning/juce_RelativeRectangle.h
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE library - "Jules' Utility Class Extensions"
|
||||
Copyright 2004-10 by Raw Material Software Ltd.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
JUCE can be redistributed and/or modified under the terms of the GNU General
|
||||
Public License (Version 2), as published by the Free Software Foundation.
|
||||
A copy of the license is included in the JUCE distribution, or can be found
|
||||
online at www.gnu.org/licenses.
|
||||
|
||||
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
To release a closed-source product which uses JUCE, commercial licenses are
|
||||
available: visit www.rawmaterialsoftware.com/juce for more information.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
#ifndef __JUCE_RELATIVERECTANGLE_JUCEHEADER__
|
||||
#define __JUCE_RELATIVERECTANGLE_JUCEHEADER__
|
||||
|
||||
#include "juce_RelativeCoordinate.h"
|
||||
class Component;
|
||||
|
||||
//==============================================================================
|
||||
/**
|
||||
An rectangle stored as a set of RelativeCoordinate values.
|
||||
|
||||
The rectangle's top, left, bottom and right edge positions are each stored as a RelativeCoordinate.
|
||||
|
||||
@see RelativeCoordinate, RelativePoint
|
||||
*/
|
||||
class JUCE_API RelativeRectangle
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
/** Creates a zero-size rectangle at the origin. */
|
||||
RelativeRectangle();
|
||||
|
||||
/** Creates an absolute rectangle, relative to the origin. */
|
||||
explicit RelativeRectangle (const Rectangle<float>& rect, const String& componentName);
|
||||
|
||||
/** Creates a rectangle from four coordinates. */
|
||||
RelativeRectangle (const RelativeCoordinate& left, const RelativeCoordinate& right,
|
||||
const RelativeCoordinate& top, const RelativeCoordinate& bottom);
|
||||
|
||||
/** Creates a rectangle from a stringified representation.
|
||||
The string must contain a sequence of 4 coordinates, separated by commas, in the order
|
||||
left, top, right, bottom. The syntax for the coordinate strings is explained in the
|
||||
RelativeCoordinate class.
|
||||
@see toString
|
||||
*/
|
||||
explicit RelativeRectangle (const String& stringVersion);
|
||||
|
||||
bool operator== (const RelativeRectangle& other) const throw();
|
||||
bool operator!= (const RelativeRectangle& other) const throw();
|
||||
|
||||
//==============================================================================
|
||||
/** Calculates the absolute position of this rectangle.
|
||||
|
||||
You'll need to provide a suitable Expression::EvaluationContext for looking up any coordinates that may
|
||||
be needed to calculate the result.
|
||||
*/
|
||||
const Rectangle<float> resolve (const Expression::EvaluationContext* evaluationContext) const;
|
||||
|
||||
/** Changes the values of this rectangle's coordinates to make it resolve to the specified position.
|
||||
|
||||
Calling this will leave any anchor points unchanged, but will set any absolute
|
||||
or relative positions to whatever values are necessary to make the resultant position
|
||||
match the position that is provided.
|
||||
*/
|
||||
void moveToAbsolute (const Rectangle<float>& newPos, const Expression::EvaluationContext* evaluationContext);
|
||||
|
||||
/** Returns true if this rectangle depends on any other coordinates for its position. */
|
||||
bool isDynamic() const;
|
||||
|
||||
/** Returns a string which represents this point.
|
||||
This returns a comma-separated list of coordinates, in the order left, top, right, bottom. For details of
|
||||
the string syntax used by the coordinates, see the RelativeCoordinate constructor notes.
|
||||
The string that is returned can be passed to the RelativeRectangle constructor to recreate the rectangle.
|
||||
*/
|
||||
const String toString() const;
|
||||
|
||||
/** Renames a symbol if it is used by any of the coordinates.
|
||||
This calls RelativeCoordinate::renameSymbolIfUsed() on the rectangle's coordinates.
|
||||
*/
|
||||
void renameSymbolIfUsed (const String& oldName, const String& newName);
|
||||
|
||||
/** Creates and sets an appropriate Component::Positioner object for the given component, which will
|
||||
keep it positioned with this rectangle.
|
||||
*/
|
||||
void applyToComponent (Component& component) const;
|
||||
|
||||
//==============================================================================
|
||||
// The actual rectangle coords...
|
||||
RelativeCoordinate left, right, top, bottom;
|
||||
};
|
||||
|
||||
|
||||
#endif // __JUCE_RELATIVERECTANGLE_JUCEHEADER__
|
||||
|
|
@ -27,7 +27,7 @@
|
|||
#define __JUCE_DRAWABLE_JUCEHEADER__
|
||||
|
||||
#include "../../components/juce_Component.h"
|
||||
#include "../geometry/juce_RelativeCoordinate.h"
|
||||
#include "../../components/positioning/juce_RelativeCoordinate.h"
|
||||
#include "../../../containers/juce_ValueTree.h"
|
||||
#include "../../components/layout/juce_ComponentBuilder.h"
|
||||
class DrawableComposite;
|
||||
|
|
|
|||
|
|
@ -27,7 +27,9 @@
|
|||
#define __JUCE_DRAWABLECOMPOSITE_JUCEHEADER__
|
||||
|
||||
#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 "../imaging/juce_Image.h"
|
||||
#include "../../components/positioning/juce_RelativeParallelogram.h"
|
||||
|
||||
|
||||
//==============================================================================
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ BEGIN_JUCE_NAMESPACE
|
|||
|
||||
#include "juce_DrawablePath.h"
|
||||
#include "juce_DrawableComposite.h"
|
||||
#include "../../components/positioning/juce_RelativeCoordinatePositioner.h"
|
||||
|
||||
|
||||
//==============================================================================
|
||||
|
|
@ -39,8 +40,10 @@ DrawablePath::DrawablePath()
|
|||
DrawablePath::DrawablePath (const DrawablePath& other)
|
||||
: DrawableShape (other)
|
||||
{
|
||||
if (other.relativePath != 0)
|
||||
relativePath = new RelativePointPath (*other.relativePath);
|
||||
const RelativePointPath* const relativePath = other.getRelativePath();
|
||||
|
||||
if (relativePath != 0)
|
||||
setPath (*relativePath);
|
||||
else
|
||||
setPath (other.path);
|
||||
}
|
||||
|
|
@ -73,14 +76,89 @@ const Path& DrawablePath::getStrokePath() 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.swapWithPath (newPath);
|
||||
pathChanged();
|
||||
}
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
class DrawablePath::RelativePositioner : public RelativeCoordinatePositionerBase
|
||||
{
|
||||
public:
|
||||
RelativePositioner (DrawablePath& component_, const RelativePointPath& path_)
|
||||
: RelativeCoordinatePositionerBase (component_),
|
||||
path (path_),
|
||||
owner (component_)
|
||||
{
|
||||
path.clear();
|
||||
relativePath->createPath (path, getParent());
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
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);
|
||||
}
|
||||
|
||||
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::startSubPathElement ("Move");
|
||||
|
|
@ -448,23 +567,16 @@ void DrawablePath::refreshFromValueTree (const ValueTree& tree, ComponentBuilder
|
|||
if (refreshFillTypes (v, getParent(), builder.getImageProvider()))
|
||||
repaint();
|
||||
|
||||
ScopedPointer<RelativePointPath> newRelativePath (new RelativePointPath (tree));
|
||||
|
||||
Path newPath;
|
||||
newRelativePath->createPath (newPath, getParent());
|
||||
|
||||
if (! newRelativePath->containsAnyDynamicPoints())
|
||||
newRelativePath = 0;
|
||||
|
||||
const PathStrokeType newStroke (v.getStrokeType());
|
||||
if (strokeType != newStroke || path != newPath)
|
||||
if (strokeType != newStroke)
|
||||
{
|
||||
path.swapWithPath (newPath);
|
||||
strokeType = newStroke;
|
||||
pathChanged();
|
||||
strokeChanged();
|
||||
}
|
||||
|
||||
relativePath = newRelativePath;
|
||||
RelativePointPath newRelativePath;
|
||||
v.writeTo (newRelativePath);
|
||||
setPath (newRelativePath);
|
||||
}
|
||||
|
||||
const ValueTree DrawablePath::createValueTree (ComponentBuilder::ImageProvider* imageProvider) const
|
||||
|
|
@ -475,14 +587,16 @@ const ValueTree DrawablePath::createValueTree (ComponentBuilder::ImageProvider*
|
|||
v.setID (getComponentID());
|
||||
writeTo (v, imageProvider, 0);
|
||||
|
||||
const RelativePointPath* const relativePath = getRelativePath();
|
||||
|
||||
if (relativePath != 0)
|
||||
{
|
||||
relativePath->writeTo (tree, 0);
|
||||
v.readFrom (*relativePath, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
RelativePointPath rp (path);
|
||||
rp.writeTo (tree, 0);
|
||||
v.readFrom (rp, 0);
|
||||
}
|
||||
|
||||
return tree;
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@
|
|||
#define __JUCE_DRAWABLEPATH_JUCEHEADER__
|
||||
|
||||
#include "juce_DrawableShape.h"
|
||||
#include "../../components/positioning/juce_RelativePointPath.h"
|
||||
|
||||
|
||||
//==============================================================================
|
||||
|
|
@ -54,6 +55,9 @@ public:
|
|||
*/
|
||||
void setPath (const Path& newPath);
|
||||
|
||||
/** */
|
||||
void setPath (const RelativePointPath& source);
|
||||
|
||||
/** Returns the current path. */
|
||||
const Path& getPath() const;
|
||||
|
||||
|
|
@ -120,6 +124,9 @@ public:
|
|||
|
||||
ValueTree getPathState();
|
||||
|
||||
void readFrom (const RelativePointPath& path, UndoManager* undoManager);
|
||||
void writeTo (RelativePointPath& path) const;
|
||||
|
||||
static const Identifier nonZeroWinding, point1, point2, point3;
|
||||
};
|
||||
|
||||
|
|
@ -128,7 +135,10 @@ protected:
|
|||
|
||||
private:
|
||||
//==============================================================================
|
||||
ScopedPointer<RelativePointPath> relativePath;
|
||||
class RelativePositioner;
|
||||
friend class RelativePositioner;
|
||||
void applyRelativePath (const RelativePointPath& newPath);
|
||||
const RelativePointPath* getRelativePath() const;
|
||||
|
||||
DrawablePath& operator= (const DrawablePath&);
|
||||
JUCE_LEAK_DETECTOR (DrawablePath);
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@
|
|||
#define __JUCE_DRAWABLERECTANGLE_JUCEHEADER__
|
||||
|
||||
#include "juce_DrawableShape.h"
|
||||
#include "../../components/positioning/juce_RelativeParallelogram.h"
|
||||
|
||||
|
||||
//==============================================================================
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
#include "juce_Drawable.h"
|
||||
#include "../contexts/juce_FillType.h"
|
||||
#include "../colour/juce_ColourGradient.h"
|
||||
#include "../../components/positioning/juce_RelativePoint.h"
|
||||
|
||||
|
||||
//==============================================================================
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
|
||||
#include "juce_Drawable.h"
|
||||
#include "../fonts/juce_GlyphArrangement.h"
|
||||
#include "../../components/positioning/juce_RelativeParallelogram.h"
|
||||
|
||||
|
||||
//==============================================================================
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -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__
|
||||
#include "gui/components/layout/juce_GroupComponent.h"
|
||||
#endif
|
||||
#ifndef __JUCE_MARKERLIST_JUCEHEADER__
|
||||
#include "gui/components/layout/juce_MarkerList.h"
|
||||
#endif
|
||||
#ifndef __JUCE_MULTIDOCUMENTPANEL_JUCEHEADER__
|
||||
#include "gui/components/layout/juce_MultiDocumentPanel.h"
|
||||
#endif
|
||||
|
|
@ -521,6 +518,27 @@
|
|||
#ifndef __JUCE_TOOLTIPCLIENT_JUCEHEADER__
|
||||
#include "gui/components/mouse/juce_TooltipClient.h"
|
||||
#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__
|
||||
#include "gui/components/properties/juce_BooleanPropertyComponent.h"
|
||||
#endif
|
||||
|
|
@ -722,9 +740,6 @@
|
|||
#ifndef __JUCE_RECTANGLELIST_JUCEHEADER__
|
||||
#include "gui/graphics/geometry/juce_RectangleList.h"
|
||||
#endif
|
||||
#ifndef __JUCE_RELATIVECOORDINATE_JUCEHEADER__
|
||||
#include "gui/graphics/geometry/juce_RelativeCoordinate.h"
|
||||
#endif
|
||||
#ifndef __JUCE_CAMERADEVICE_JUCEHEADER__
|
||||
#include "gui/graphics/imaging/juce_CameraDevice.h"
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -703,6 +703,7 @@ private:
|
|||
friend class XmlDocument;
|
||||
friend class LinkedListPointer<XmlAttributeNode>;
|
||||
friend class LinkedListPointer <XmlElement>;
|
||||
friend class LinkedListPointer <XmlElement>::Appender;
|
||||
|
||||
LinkedListPointer <XmlElement> nextListItem;
|
||||
LinkedListPointer <XmlElement> firstChildElement;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue