From 97587996ee9db30ce00190bdcedd8210490b99f5 Mon Sep 17 00:00:00 2001 From: pepper Date: Sat, 31 Jan 2015 21:41:28 -0800 Subject: backup vst 2.4 --- README-VSTSDK.txt | 7 + artwork/Thumbs.db | Bin 0 -> 13824 bytes artwork/VSTLogoAlpha.png | Bin 0 -> 192488 bytes artwork/VSTLogoBlack.jpg | Bin 0 -> 142191 bytes artwork/VSTLogoWhite.jpg | Bin 0 -> 147730 bytes artwork/VST_Logo_Usage_Guideline.pdf | Bin 0 -> 30648 bytes bin/mac/VSTMonitor.vst/Contents/Info.plist | 26 + bin/mac/VSTMonitor.vst/Contents/MacOS/VSTMonitor | Bin 0 -> 628468 bytes bin/mac/VSTMonitor.vst/Contents/PkgInfo | 1 + .../VSTMonitor.vst/Contents/Resources/bmp50000.bmp | Bin 0 -> 328406 bytes .../VSTMonitor.vst/Contents/Resources/bmp50001.bmp | Bin 0 -> 1824 bytes .../VSTMonitor.vst/Contents/Resources/bmp50002.bmp | Bin 0 -> 5096 bytes .../VSTMonitor.vst/Contents/Resources/bmp50003.bmp | Bin 0 -> 5096 bytes .../VSTMonitor.vst/Contents/Resources/bmp50004.bmp | Bin 0 -> 5096 bytes .../VSTMonitor.vst/Contents/Resources/bmp50005.bmp | Bin 0 -> 5096 bytes .../VSTMonitor.vst/Contents/Resources/bmp50006.bmp | Bin 0 -> 534 bytes .../VSTMonitor.vst/Contents/Resources/bmp50007.bmp | Bin 0 -> 111190 bytes .../VSTMonitor.vst/Contents/Resources/bmp50008.bmp | Bin 0 -> 1822 bytes bin/mac/VSTParamTool.app/Contents/Info.plist | 24 + .../VSTParamTool.app/Contents/MacOS/VSTParamTool | Bin 0 -> 9723732 bytes bin/mac/VSTParamTool.app/Contents/PkgInfo | 1 + .../Contents/Resources/VSTParamTool.rsrc | Bin 0 -> 9921 bytes bin/win/vstmonitor.dll | Bin 0 -> 630784 bytes bin/win/vstparamtool.exe | Bin 0 -> 2723840 bytes doc/VST Licensing Agreement.rtf | 241 + doc/gfx/folder.gif | Bin 0 -> 377 bytes doc/gfx/mac.gif | Bin 0 -> 1018 bytes doc/gfx/vstpluglogo_small.jpg | Bin 0 -> 3249 bytes doc/gfx/win.gif | Bin 0 -> 1049 bytes doc/html/Blocksizechange.gif | Bin 0 -> 3907 bytes doc/html/ControlChanged.gif | Bin 0 -> 5452 bytes doc/html/IOchange.gif | Bin 0 -> 10017 bytes doc/html/Initialisation.gif | Bin 0 -> 4730 bytes doc/html/Offlineprocessing.gif | Bin 0 -> 9541 bytes doc/html/Sampleratechange.gif | Bin 0 -> 4094 bytes doc/html/SpeakerarrangementnegotiationforVSTfx.gif | Bin 0 -> 8005 bytes doc/html/Termination.gif | Bin 0 -> 3395 bytes doc/html/TurnOff.gif | Bin 0 -> 3326 bytes doc/html/TurnOn.gif | Bin 0 -> 3275 bytes doc/html/aeffect_8h.html | 786 ++ doc/html/aeffectx_8h.html | 2072 ++++ doc/html/aeffeditor_8h.html | 49 + doc/html/annotated.html | 71 + doc/html/audioeffect_8cpp.html | 50 + doc/html/audioeffect_8h.html | 49 + doc/html/audioeffectx_8cpp.html | 119 + doc/html/audioeffectx_8h.html | 50 + doc/html/class_a_eff_editor-members.html | 56 + doc/html/class_a_eff_editor.html | 390 + doc/html/class_audio_effect-members.html | 93 + doc/html/class_audio_effect.html | 1703 ++++ doc/html/class_audio_effect.png | Bin 0 -> 391 bytes doc/html/class_audio_effect_x-members.html | 159 + doc/html/class_audio_effect_x.html | 2406 +++++ doc/html/class_audio_effect_x.png | Bin 0 -> 382 bytes doc/html/deprecated.html | 289 + doc/html/dir_2d3252dd12c84c66c1d25b26bb45a1f5.html | 55 + doc/html/dir_77c628dfee72e555f82d5ef53b733f38.html | 47 + doc/html/dir_f81105d3b854bea570aaf3bae5cb64c1.html | 43 + doc/html/dir_fa0454ab79b4262333bf837ea3d765e9.html | 43 + doc/html/dirs.html | 45 + doc/html/doc_8h.html | 45 + doc/html/doxygen.css | 358 + doc/html/doxygen.png | Bin 0 -> 1281 bytes doc/html/files.html | 52 + doc/html/ftv2blank.png | Bin 0 -> 174 bytes doc/html/ftv2doc.png | Bin 0 -> 255 bytes doc/html/ftv2folderclosed.png | Bin 0 -> 259 bytes doc/html/ftv2folderopen.png | Bin 0 -> 261 bytes doc/html/ftv2lastnode.png | Bin 0 -> 233 bytes doc/html/ftv2link.png | Bin 0 -> 358 bytes doc/html/ftv2mlastnode.png | Bin 0 -> 160 bytes doc/html/ftv2mnode.png | Bin 0 -> 194 bytes doc/html/ftv2node.png | Bin 0 -> 235 bytes doc/html/ftv2plastnode.png | Bin 0 -> 165 bytes doc/html/ftv2pnode.png | Bin 0 -> 200 bytes doc/html/ftv2vertline.png | Bin 0 -> 229 bytes doc/html/functions.html | 89 + doc/html/functions_0x62.html | 90 + doc/html/functions_0x63.html | 102 + doc/html/functions_0x64.html | 93 + doc/html/functions_0x65.html | 90 + doc/html/functions_0x66.html | 90 + doc/html/functions_0x67.html | 126 + doc/html/functions_0x68.html | 87 + doc/html/functions_0x69.html | 94 + doc/html/functions_0x6b.html | 83 + doc/html/functions_0x6c.html | 86 + doc/html/functions_0x6d.html | 98 + doc/html/functions_0x6e.html | 108 + doc/html/functions_0x6f.html | 92 + doc/html/functions_0x70.html | 103 + doc/html/functions_0x72.html | 96 + doc/html/functions_0x73.html | 128 + doc/html/functions_0x74.html | 94 + doc/html/functions_0x75.html | 90 + doc/html/functions_0x76.html | 87 + doc/html/functions_0x77.html | 86 + doc/html/functions_0x78.html | 83 + doc/html/functions_0x79.html | 83 + doc/html/functions_0x7e.html | 84 + doc/html/functions_func.html | 230 + doc/html/functions_vars.html | 304 + doc/html/globals.html | 124 + doc/html/globals_0x62.html | 72 + doc/html/globals_0x63.html | 93 + doc/html/globals_0x64.html | 72 + doc/html/globals_0x65.html | 163 + doc/html/globals_0x66.html | 73 + doc/html/globals_0x6b.html | 277 + doc/html/globals_0x6d.html | 75 + doc/html/globals_0x74.html | 72 + doc/html/globals_0x76.html | 168 + doc/html/globals_defs.html | 71 + doc/html/globals_enum.html | 85 + doc/html/globals_eval.html | 115 + doc/html/globals_eval_0x65.html | 158 + doc/html/globals_eval_0x6b.html | 270 + doc/html/globals_eval_0x6d.html | 70 + doc/html/globals_eval_0x76.html | 123 + doc/html/globals_func.html | 61 + doc/html/globals_type.html | 59 + doc/html/globals_vars.html | 72 + doc/html/hierarchy.html | 73 + doc/html/history.html | 62 + doc/html/index.html | 8 + doc/html/intro.html | 65 + doc/html/license.html | 99 + doc/html/maceditor.html | 76 + doc/html/main.html | 50 + doc/html/namespace_host_can_dos.html | 330 + doc/html/namespace_plug_can_dos.html | 210 + doc/html/namespacemembers.html | 67 + doc/html/namespacemembers_vars.html | 67 + doc/html/namespaces.html | 44 + doc/html/others.html | 53 + doc/html/pages.html | 59 + doc/html/sequences.html | 99 + doc/html/struct_a_effect-members.html | 65 + doc/html/struct_a_effect.html | 493 + doc/html/struct_e_rect-members.html | 46 + doc/html/struct_e_rect.html | 133 + doc/html/struct_midi_key_name-members.html | 47 + doc/html/struct_midi_key_name.html | 153 + doc/html/struct_midi_program_category-members.html | 46 + doc/html/struct_midi_program_category.html | 133 + doc/html/struct_midi_program_name-members.html | 50 + doc/html/struct_midi_program_name.html | 214 + doc/html/struct_vst_audio_file-members.html | 64 + doc/html/struct_vst_audio_file.html | 493 + doc/html/struct_vst_audio_file_marker-members.html | 47 + doc/html/struct_vst_audio_file_marker.html | 153 + doc/html/struct_vst_event-members.html | 47 + doc/html/struct_vst_event.html | 151 + doc/html/struct_vst_events-members.html | 45 + doc/html/struct_vst_events.html | 113 + doc/html/struct_vst_file_select-members.html | 55 + doc/html/struct_vst_file_select.html | 310 + doc/html/struct_vst_file_type-members.html | 49 + doc/html/struct_vst_file_type.html | 230 + doc/html/struct_vst_key_code-members.html | 45 + doc/html/struct_vst_key_code.html | 109 + doc/html/struct_vst_midi_event-members.html | 53 + doc/html/struct_vst_midi_event.html | 271 + doc/html/struct_vst_midi_sysex_event-members.html | 50 + doc/html/struct_vst_midi_sysex_event.html | 213 + doc/html/struct_vst_offline_task-members.html | 73 + doc/html/struct_vst_offline_task.html | 673 ++ .../struct_vst_parameter_properties-members.html | 58 + doc/html/struct_vst_parameter_properties.html | 371 + doc/html/struct_vst_patch_chunk_info-members.html | 47 + doc/html/struct_vst_patch_chunk_info.html | 153 + doc/html/struct_vst_pin_properties-members.html | 47 + doc/html/struct_vst_pin_properties.html | 149 + .../struct_vst_speaker_arrangement-members.html | 45 + doc/html/struct_vst_speaker_arrangement.html | 114 + .../struct_vst_speaker_properties-members.html | 49 + doc/html/struct_vst_speaker_properties.html | 191 + doc/html/struct_vst_time_info-members.html | 56 + doc/html/struct_vst_time_info.html | 334 + doc/html/struct_vst_variable_io-members.html | 48 + doc/html/struct_vst_variable_io.html | 173 + doc/html/struct_vst_window-members.html | 52 + doc/html/struct_vst_window.html | 224 + doc/html/structfx_bank-members.html | 56 + doc/html/structfx_bank.html | 337 + doc/html/structfx_program-members.html | 55 + doc/html/structfx_program.html | 317 + doc/html/tab_b.gif | Bin 0 -> 35 bytes doc/html/tab_l.gif | Bin 0 -> 706 bytes doc/html/tab_r.gif | Bin 0 -> 2585 bytes doc/html/tabs.css | 102 + doc/html/thanks.html | 40 + doc/html/tree.html | 180 + doc/html/vstfxstore_8h.html | 138 + doc/html/vstoffline.html | 1391 +++ doc/html/vstparamstruct.html | 566 ++ doc/html/vstpluglogo.jpg | Bin 0 -> 16944 bytes doc/html/vstplugmain_8cpp.html | 111 + doc/html/whatsnew.html | 88 + doc/sdk.menu.html | 38 + doc/sdk.overview.html | 301 + doc/sdkdoc.css | 130 + index.html | 14 + pluginterfaces/vst2.x/aeffect.h | 351 + pluginterfaces/vst2.x/aeffectx.h | 1143 +++ pluginterfaces/vst2.x/vstfxstore.h | 106 + public.sdk/samples/vst2.x/adelay/adelay.cpp | 216 + public.sdk/samples/vst2.x/adelay/adelay.h | 93 + public.sdk/samples/vst2.x/adelay/adelaymain.cpp | 22 + .../vst2.x/adelay/editor/resources/bmp00128.bmp | Bin 0 -> 116154 bytes .../vst2.x/adelay/editor/resources/bmp00129.bmp | Bin 0 -> 2634 bytes .../vst2.x/adelay/editor/resources/bmp00130.bmp | Bin 0 -> 294 bytes .../adelay/editor/resources/surrounddelay.rc | 10 + .../samples/vst2.x/adelay/editor/sdeditor.cpp | 235 + public.sdk/samples/vst2.x/adelay/editor/sdeditor.h | 51 + public.sdk/samples/vst2.x/adelay/surrounddelay.cpp | 172 + public.sdk/samples/vst2.x/adelay/surrounddelay.h | 54 + public.sdk/samples/vst2.x/adelay/win/adelay.vcproj | 400 + .../samples/vst2.x/adelay/win/surrounddelay.vcproj | 444 + public.sdk/samples/vst2.x/again/source/again.cpp | 139 + public.sdk/samples/vst2.x/again/source/again.h | 50 + public.sdk/samples/vst2.x/again/win/again.vcproj | 396 + public.sdk/samples/vst2.x/mac/minihost-Info.plist | 20 + .../mac/vst 2.4 examples.xcodeproj/project.pbxproj | 924 ++ public.sdk/samples/vst2.x/mac/vst2.4Info.plist | 28 + .../samples/vst2.x/minihost/source/minieditor.cpp | 203 + .../samples/vst2.x/minihost/source/minihost.cpp | 333 + .../samples/vst2.x/minihost/win/minihost.vcproj | 364 + .../samples/vst2.x/vstxsynth/resource/vstxsynth.rc | 3 + .../vst2.x/vstxsynth/resource/vstxsynth.vstxml | 36 + .../samples/vst2.x/vstxsynth/source/gmnames.h | 222 + .../samples/vst2.x/vstxsynth/source/vstxsynth.cpp | 392 + .../samples/vst2.x/vstxsynth/source/vstxsynth.h | 139 + .../vst2.x/vstxsynth/source/vstxsynthproc.cpp | 178 + .../samples/vst2.x/vstxsynth/win/vstxsynth.vcproj | 448 + public.sdk/samples/vst2.x/win.vc2003/adelay.vcproj | 286 + public.sdk/samples/vst2.x/win.vc2003/again.vcproj | 266 + .../samples/vst2.x/win.vc2003/minihost.vcproj | 200 + public.sdk/samples/vst2.x/win.vc2003/samples.sln | 61 + .../samples/vst2.x/win.vc2003/surrounddelay.vcproj | 412 + .../samples/vst2.x/win.vc2003/vstxsynth.vcproj | 309 + public.sdk/samples/vst2.x/win.vc6/adelay.dsp | 155 + public.sdk/samples/vst2.x/win.vc6/again.dsp | 151 + public.sdk/samples/vst2.x/win.vc6/minihost.dsp | 114 + public.sdk/samples/vst2.x/win.vc6/samples.dsw | 89 + .../samples/vst2.x/win.vc6/surrounddelay.dsp | 199 + public.sdk/samples/vst2.x/win.vc6/vstxsynth.dsp | 167 + public.sdk/samples/vst2.x/win/samples.sln | 76 + public.sdk/samples/vst2.x/win/vstplug.def | 3 + public.sdk/source/vst2.x/aeffeditor.h | 61 + public.sdk/source/vst2.x/audioeffect.cpp | 703 ++ public.sdk/source/vst2.x/audioeffect.h | 177 + public.sdk/source/vst2.x/audioeffectx.cpp | 1546 +++ public.sdk/source/vst2.x/audioeffectx.h | 252 + public.sdk/source/vst2.x/vstplugmain.cpp | 68 + vstgui.sf/drawtest/mac/Info.plist | 28 + vstgui.sf/drawtest/mac/audiounit.exp | 2 + vstgui.sf/drawtest/mac/cw_vst_prefix.pch++ | 4 + vstgui.sf/drawtest/mac/drawtest.cw9prj | Bin 0 -> 152343 bytes vstgui.sf/drawtest/mac/drawtest.plc | 40 + .../drawtest/mac/drawtest.xcode/project.pbxproj | 2050 ++++ .../mac/drawtest.xcodeproj/project.pbxproj | 1142 +++ vstgui.sf/drawtest/mac/xcode_au_prefix.h | 8 + vstgui.sf/drawtest/mac/xcode_vst_prefix.h | 4 + vstgui.sf/drawtest/resources/audiounit.r | 34 + vstgui.sf/drawtest/resources/bmp00001.png | Bin 0 -> 58037 bytes vstgui.sf/drawtest/resources/bmp00100.png | Bin 0 -> 621 bytes vstgui.sf/drawtest/resources/bmp01000.png | Bin 0 -> 344792 bytes vstgui.sf/drawtest/resources/bmp10001.bmp | Bin 0 -> 264654 bytes vstgui.sf/drawtest/resources/bmp10002.bmp | Bin 0 -> 2334 bytes vstgui.sf/drawtest/resources/bmp10003.bmp | Bin 0 -> 2454 bytes vstgui.sf/drawtest/resources/bmp10004.bmp | Bin 0 -> 450 bytes vstgui.sf/drawtest/resources/bmp10005.bmp | Bin 0 -> 9174 bytes vstgui.sf/drawtest/resources/bmp10006.bmp | Bin 0 -> 9654 bytes vstgui.sf/drawtest/resources/bmp10007.bmp | Bin 0 -> 2814 bytes vstgui.sf/drawtest/resources/bmp10008.bmp | Bin 0 -> 150 bytes vstgui.sf/drawtest/resources/bmp10009.bmp | Bin 0 -> 1056 bytes vstgui.sf/drawtest/resources/bmp10010.bmp | Bin 0 -> 826 bytes vstgui.sf/drawtest/resources/bmp10011.bmp | Bin 0 -> 2938 bytes vstgui.sf/drawtest/resources/bmp10012.bmp | Bin 0 -> 338 bytes vstgui.sf/drawtest/resources/bmp10013.bmp | Bin 0 -> 338 bytes vstgui.sf/drawtest/resources/bmp10014.bmp | Bin 0 -> 8070 bytes vstgui.sf/drawtest/resources/bmp10015.bmp | Bin 0 -> 33654 bytes vstgui.sf/drawtest/resources/bmp10016.bmp | Bin 0 -> 48054 bytes vstgui.sf/drawtest/source/controlsgui.cpp | 541 ++ vstgui.sf/drawtest/source/controlsgui.h | 51 + vstgui.sf/drawtest/source/pdrawtesteditor.cpp | 266 + vstgui.sf/drawtest/source/pdrawtesteditor.h | 48 + vstgui.sf/drawtest/source/pdrawtesteffect.cpp | 177 + vstgui.sf/drawtest/source/pdrawtesteffect.h | 38 + vstgui.sf/drawtest/source/pdrawtestmain.cpp | 78 + vstgui.sf/drawtest/source/pdrawtestview.cpp | 299 + vstgui.sf/drawtest/source/pdrawtestview.h | 44 + vstgui.sf/drawtest/source/pprimitivesviews.cpp | 245 + vstgui.sf/drawtest/source/pprimitivesviews.h | 37 + vstgui.sf/drawtest/win.vc6/drawtest.dsp | 363 + vstgui.sf/drawtest/win.vc6/drawtest.dsw | 29 + vstgui.sf/drawtest/win/drawtest.def | 3 + vstgui.sf/drawtest/win/drawtest.rc | 32 + vstgui.sf/drawtest/win/drawtest.vcproj | 608 ++ vstgui.sf/vstgui/Changelog | 360 + .../vstgui/Documentation/Migrating from 2.3.rtf | 82 + .../Documentation/html/aeffguieditor_8cpp.html | 119 + .../Documentation/html/aeffguieditor_8h.html | 46 + vstgui.sf/vstgui/Documentation/html/annotated.html | 92 + .../Documentation/html/cfileselector_8cpp.html | 195 + .../Documentation/html/cfileselector_8h.html | 98 + .../html/class_a_eff_g_u_i_editor-members.html | 58 + .../html/class_a_eff_g_u_i_editor.html | 570 ++ .../html/class_c_anim_knob-members.html | 180 + .../Documentation/html/class_c_anim_knob.html | 421 + .../Documentation/html/class_c_anim_knob.png | Bin 0 -> 679 bytes .../html/class_c_attribute_list_entry-members.html | 52 + .../html/class_c_attribute_list_entry.html | 393 + .../html/class_c_auto_animation-members.html | 157 + .../Documentation/html/class_c_auto_animation.html | 575 ++ .../Documentation/html/class_c_auto_animation.png | Bin 0 -> 613 bytes .../Documentation/html/class_c_bitmap-members.html | 69 + .../vstgui/Documentation/html/class_c_bitmap.html | 846 ++ .../vstgui/Documentation/html/class_c_bitmap.png | Bin 0 -> 405 bytes .../Documentation/html/class_c_c_view-members.html | 45 + .../vstgui/Documentation/html/class_c_c_view.html | 184 + .../html/class_c_control-members.html | 144 + .../vstgui/Documentation/html/class_c_control.html | 1265 +++ .../vstgui/Documentation/html/class_c_control.png | Bin 0 -> 3399 bytes .../html/class_c_control_listener-members.html | 42 + .../html/class_c_control_listener.html | 140 + .../html/class_c_control_listener.png | Bin 0 -> 570 bytes .../html/class_c_drag_container-members.html | 58 + .../Documentation/html/class_c_drag_container.html | 398 + .../Documentation/html/class_c_drag_container.png | Bin 0 -> 467 bytes .../html/class_c_draw_context-members.html | 110 + .../Documentation/html/class_c_draw_context.html | 2235 +++++ .../Documentation/html/class_c_draw_context.png | Bin 0 -> 613 bytes .../html/class_c_file_selector-members.html | 45 + .../Documentation/html/class_c_file_selector.html | 190 + .../Documentation/html/class_c_frame-members.html | 184 + .../vstgui/Documentation/html/class_c_frame.html | 1886 ++++ .../vstgui/Documentation/html/class_c_frame.png | Bin 0 -> 622 bytes .../html/class_c_horizontal_slider-members.html | 173 + .../html/class_c_horizontal_slider.html | 226 + .../html/class_c_horizontal_slider.png | Bin 0 -> 732 bytes .../html/class_c_horizontal_switch-members.html | 151 + .../html/class_c_horizontal_switch.html | 412 + .../html/class_c_horizontal_switch.png | Bin 0 -> 628 bytes .../html/class_c_kick_button-members.html | 149 + .../Documentation/html/class_c_kick_button.html | 345 + .../Documentation/html/class_c_kick_button.png | Bin 0 -> 597 bytes .../Documentation/html/class_c_knob-members.html | 172 + .../vstgui/Documentation/html/class_c_knob.html | 1048 +++ .../vstgui/Documentation/html/class_c_knob.png | Bin 0 -> 696 bytes .../html/class_c_movie_bitmap-members.html | 150 + .../Documentation/html/class_c_movie_bitmap.html | 331 + .../Documentation/html/class_c_movie_bitmap.png | Bin 0 -> 618 bytes .../html/class_c_movie_button-members.html | 150 + .../Documentation/html/class_c_movie_button.html | 375 + .../Documentation/html/class_c_movie_button.png | Bin 0 -> 605 bytes .../html/class_c_offscreen_context-members.html | 123 + .../html/class_c_offscreen_context.html | 492 + .../html/class_c_offscreen_context.png | Bin 0 -> 593 bytes .../html/class_c_on_off_button-members.html | 151 + .../Documentation/html/class_c_on_off_button.html | 363 + .../Documentation/html/class_c_on_off_button.png | Bin 0 -> 729 bytes .../html/class_c_option_menu-members.html | 225 + .../Documentation/html/class_c_option_menu.html | 1633 ++++ .../Documentation/html/class_c_option_menu.png | Bin 0 -> 757 bytes .../html/class_c_option_menu_scheme-members.html | 63 + .../html/class_c_option_menu_scheme.html | 555 ++ .../html/class_c_option_menu_scheme.png | Bin 0 -> 501 bytes .../html/class_c_param_display-members.html | 180 + .../Documentation/html/class_c_param_display.html | 1152 +++ .../Documentation/html/class_c_param_display.png | Bin 0 -> 1369 bytes .../html/class_c_reference_counter-members.html | 45 + .../html/class_c_reference_counter.html | 229 + .../html/class_c_reference_counter.png | Bin 0 -> 7743 bytes .../html/class_c_rocker_switch-members.html | 150 + .../Documentation/html/class_c_rocker_switch.html | 437 + .../Documentation/html/class_c_rocker_switch.png | Bin 0 -> 620 bytes .../html/class_c_scroll_container-members.html | 148 + .../html/class_c_scroll_container.html | 397 + .../html/class_c_scroll_container.png | Bin 0 -> 662 bytes .../html/class_c_scroll_view-members.html | 154 + .../Documentation/html/class_c_scroll_view.html | 597 ++ .../Documentation/html/class_c_scroll_view.png | Bin 0 -> 996 bytes .../html/class_c_scrollbar-members.html | 172 + .../Documentation/html/class_c_scrollbar.html | 1001 ++ .../Documentation/html/class_c_scrollbar.png | Bin 0 -> 589 bytes .../Documentation/html/class_c_slider-members.html | 171 + .../vstgui/Documentation/html/class_c_slider.html | 1136 +++ .../vstgui/Documentation/html/class_c_slider.png | Bin 0 -> 1047 bytes .../html/class_c_special_digit-members.html | 152 + .../Documentation/html/class_c_special_digit.html | 372 + .../Documentation/html/class_c_special_digit.png | Bin 0 -> 621 bytes .../html/class_c_splash_screen-members.html | 154 + .../Documentation/html/class_c_splash_screen.html | 500 + .../Documentation/html/class_c_splash_screen.png | Bin 0 -> 628 bytes .../html/class_c_splash_screen_view-members.html | 109 + .../html/class_c_splash_screen_view.html | 204 + .../html/class_c_splash_screen_view.png | Bin 0 -> 584 bytes .../html/class_c_tab_button-members.html | 162 + .../Documentation/html/class_c_tab_button.html | 523 ++ .../Documentation/html/class_c_tab_button.png | Bin 0 -> 715 bytes .../html/class_c_tab_child_view-members.html | 51 + .../Documentation/html/class_c_tab_child_view.html | 212 + .../Documentation/html/class_c_tab_child_view.png | Bin 0 -> 453 bytes .../html/class_c_tab_view-members.html | 170 + .../Documentation/html/class_c_tab_view.html | 833 ++ .../vstgui/Documentation/html/class_c_tab_view.png | Bin 0 -> 975 bytes .../html/class_c_text_edit-members.html | 193 + .../Documentation/html/class_c_text_edit.html | 619 ++ .../Documentation/html/class_c_text_edit.png | Bin 0 -> 744 bytes .../html/class_c_text_label-members.html | 186 + .../Documentation/html/class_c_text_label.html | 294 + .../Documentation/html/class_c_text_label.png | Bin 0 -> 739 bytes .../html/class_c_vertical_slider-members.html | 173 + .../html/class_c_vertical_slider.html | 226 + .../Documentation/html/class_c_vertical_slider.png | Bin 0 -> 718 bytes .../html/class_c_vertical_switch-members.html | 151 + .../html/class_c_vertical_switch.html | 412 + .../Documentation/html/class_c_vertical_switch.png | Bin 0 -> 624 bytes .../Documentation/html/class_c_view-members.html | 107 + .../vstgui/Documentation/html/class_c_view.html | 2253 +++++ .../vstgui/Documentation/html/class_c_view.png | Bin 0 -> 6275 bytes .../html/class_c_view_container-members.html | 140 + .../Documentation/html/class_c_view_container.html | 2169 +++++ .../Documentation/html/class_c_view_container.png | Bin 0 -> 1484 bytes .../html/class_c_vu_meter-members.html | 158 + .../Documentation/html/class_c_vu_meter.html | 598 ++ .../vstgui/Documentation/html/class_c_vu_meter.png | Bin 0 -> 589 bytes .../html/class_i_scrollbar_drawer-members.html | 42 + .../html/class_i_scrollbar_drawer.html | 150 + .../html/class_plugin_g_u_i_editor-members.html | 63 + .../html/class_plugin_g_u_i_editor.html | 725 ++ .../Documentation/html/cscrollview_8cpp.html | 94 + .../vstgui/Documentation/html/cscrollview_8h.html | 53 + .../vstgui/Documentation/html/ctabview_8cpp.html | 74 + .../vstgui/Documentation/html/ctabview_8h.html | 46 + .../vstgui/Documentation/html/deprecated.html | 42 + vstgui.sf/vstgui/Documentation/html/doc_8h.html | 41 + vstgui.sf/vstgui/Documentation/html/doxygen.css | 310 + vstgui.sf/vstgui/Documentation/html/doxygen.png | Bin 0 -> 1281 bytes vstgui.sf/vstgui/Documentation/html/files.html | 60 + vstgui.sf/vstgui/Documentation/html/ftv2blank.png | Bin 0 -> 174 bytes vstgui.sf/vstgui/Documentation/html/ftv2doc.png | Bin 0 -> 255 bytes .../vstgui/Documentation/html/ftv2folderclosed.png | Bin 0 -> 259 bytes .../vstgui/Documentation/html/ftv2folderopen.png | Bin 0 -> 261 bytes .../vstgui/Documentation/html/ftv2lastnode.png | Bin 0 -> 233 bytes vstgui.sf/vstgui/Documentation/html/ftv2link.png | Bin 0 -> 358 bytes .../vstgui/Documentation/html/ftv2mlastnode.png | Bin 0 -> 160 bytes vstgui.sf/vstgui/Documentation/html/ftv2mnode.png | Bin 0 -> 194 bytes vstgui.sf/vstgui/Documentation/html/ftv2node.png | Bin 0 -> 235 bytes .../vstgui/Documentation/html/ftv2plastnode.png | Bin 0 -> 165 bytes vstgui.sf/vstgui/Documentation/html/ftv2pnode.png | Bin 0 -> 200 bytes .../vstgui/Documentation/html/ftv2vertline.png | Bin 0 -> 229 bytes vstgui.sf/vstgui/Documentation/html/functions.html | 96 + .../vstgui/Documentation/html/functions_0x62.html | 114 + .../vstgui/Documentation/html/functions_0x63.html | 148 + .../vstgui/Documentation/html/functions_0x64.html | 111 + .../vstgui/Documentation/html/functions_0x65.html | 88 + .../vstgui/Documentation/html/functions_0x66.html | 105 + .../vstgui/Documentation/html/functions_0x67.html | 183 + .../vstgui/Documentation/html/functions_0x68.html | 94 + .../vstgui/Documentation/html/functions_0x69.html | 105 + .../vstgui/Documentation/html/functions_0x6b.html | 110 + .../vstgui/Documentation/html/functions_0x6c.html | 99 + .../vstgui/Documentation/html/functions_0x6d.html | 97 + .../vstgui/Documentation/html/functions_0x6e.html | 99 + .../vstgui/Documentation/html/functions_0x6f.html | 103 + .../vstgui/Documentation/html/functions_0x70.html | 117 + .../vstgui/Documentation/html/functions_0x72.html | 110 + .../vstgui/Documentation/html/functions_0x73.html | 193 + .../vstgui/Documentation/html/functions_0x74.html | 98 + .../vstgui/Documentation/html/functions_0x75.html | 89 + .../vstgui/Documentation/html/functions_0x76.html | 95 + .../vstgui/Documentation/html/functions_0x77.html | 91 + .../vstgui/Documentation/html/functions_0x78.html | 86 + .../vstgui/Documentation/html/functions_0x79.html | 86 + .../vstgui/Documentation/html/functions_0x7a.html | 84 + .../vstgui/Documentation/html/functions_0x7e.html | 122 + .../vstgui/Documentation/html/functions_eval.html | 78 + .../vstgui/Documentation/html/functions_func.html | 89 + .../Documentation/html/functions_func_0x62.html | 82 + .../Documentation/html/functions_func_0x63.html | 134 + .../Documentation/html/functions_func_0x64.html | 100 + .../Documentation/html/functions_func_0x65.html | 80 + .../Documentation/html/functions_func_0x66.html | 88 + .../Documentation/html/functions_func_0x67.html | 178 + .../Documentation/html/functions_func_0x68.html | 82 + .../Documentation/html/functions_func_0x69.html | 94 + .../Documentation/html/functions_func_0x6c.html | 84 + .../Documentation/html/functions_func_0x6d.html | 82 + .../Documentation/html/functions_func_0x6e.html | 82 + .../Documentation/html/functions_func_0x6f.html | 94 + .../Documentation/html/functions_func_0x70.html | 83 + .../Documentation/html/functions_func_0x72.html | 94 + .../Documentation/html/functions_func_0x73.html | 168 + .../Documentation/html/functions_func_0x74.html | 80 + .../Documentation/html/functions_func_0x75.html | 83 + .../Documentation/html/functions_func_0x76.html | 83 + .../Documentation/html/functions_func_0x77.html | 84 + .../Documentation/html/functions_func_0x7e.html | 118 + .../vstgui/Documentation/html/functions_rela.html | 57 + .../vstgui/Documentation/html/functions_vars.html | 85 + .../Documentation/html/functions_vars_0x62.html | 110 + .../Documentation/html/functions_vars_0x63.html | 92 + .../Documentation/html/functions_vars_0x64.html | 89 + .../Documentation/html/functions_vars_0x65.html | 86 + .../Documentation/html/functions_vars_0x66.html | 95 + .../Documentation/html/functions_vars_0x67.html | 83 + .../Documentation/html/functions_vars_0x68.html | 91 + .../Documentation/html/functions_vars_0x69.html | 90 + .../Documentation/html/functions_vars_0x6b.html | 84 + .../Documentation/html/functions_vars_0x6c.html | 93 + .../Documentation/html/functions_vars_0x6d.html | 92 + .../Documentation/html/functions_vars_0x6e.html | 96 + .../Documentation/html/functions_vars_0x6f.html | 88 + .../Documentation/html/functions_vars_0x70.html | 112 + .../Documentation/html/functions_vars_0x72.html | 94 + .../Documentation/html/functions_vars_0x73.html | 103 + .../Documentation/html/functions_vars_0x74.html | 96 + .../Documentation/html/functions_vars_0x75.html | 84 + .../Documentation/html/functions_vars_0x76.html | 90 + .../Documentation/html/functions_vars_0x77.html | 86 + .../Documentation/html/functions_vars_0x78.html | 85 + .../Documentation/html/functions_vars_0x79.html | 85 + .../Documentation/html/functions_vars_0x7a.html | 83 + vstgui.sf/vstgui/Documentation/html/globals.html | 78 + .../vstgui/Documentation/html/globals_0x61.html | 77 + .../vstgui/Documentation/html/globals_0x62.html | 78 + .../vstgui/Documentation/html/globals_0x63.html | 92 + .../vstgui/Documentation/html/globals_0x65.html | 78 + .../vstgui/Documentation/html/globals_0x66.html | 78 + .../vstgui/Documentation/html/globals_0x67.html | 81 + .../vstgui/Documentation/html/globals_0x6b.html | 175 + .../vstgui/Documentation/html/globals_0x6d.html | 86 + .../vstgui/Documentation/html/globals_0x6e.html | 77 + .../vstgui/Documentation/html/globals_0x6f.html | 78 + .../vstgui/Documentation/html/globals_0x71.html | 77 + .../vstgui/Documentation/html/globals_0x72.html | 77 + .../vstgui/Documentation/html/globals_0x73.html | 82 + .../vstgui/Documentation/html/globals_0x74.html | 78 + .../vstgui/Documentation/html/globals_0x75.html | 83 + .../vstgui/Documentation/html/globals_0x76.html | 146 + .../vstgui/Documentation/html/globals_0x77.html | 77 + .../vstgui/Documentation/html/globals_defs.html | 179 + .../vstgui/Documentation/html/globals_enum.html | 65 + .../vstgui/Documentation/html/globals_eval.html | 196 + .../vstgui/Documentation/html/globals_type.html | 54 + .../vstgui/Documentation/html/globals_vars.html | 67 + vstgui.sf/vstgui/Documentation/html/hierarchy.html | 114 + vstgui.sf/vstgui/Documentation/html/index.html | 8 + vstgui.sf/vstgui/Documentation/html/intro.html | 63 + vstgui.sf/vstgui/Documentation/html/license.html | 97 + vstgui.sf/vstgui/Documentation/html/maceditor.html | 73 + vstgui.sf/vstgui/Documentation/html/main.html | 47 + vstgui.sf/vstgui/Documentation/html/others.html | 51 + vstgui.sf/vstgui/Documentation/html/pages.html | 37 + .../Documentation/html/plugguieditor_8cpp.html | 119 + .../Documentation/html/plugguieditor_8h.html | 47 + vstgui.sf/vstgui/Documentation/html/sequences.html | 97 + .../Documentation/html/struct_c_color-members.html | 49 + .../vstgui/Documentation/html/struct_c_color.html | 320 + .../Documentation/html/struct_c_point-members.html | 50 + .../vstgui/Documentation/html/struct_c_point.html | 349 + .../Documentation/html/struct_c_rect-members.html | 66 + .../vstgui/Documentation/html/struct_c_rect.html | 838 ++ .../Documentation/html/struct_e_rect-members.html | 44 + .../vstgui/Documentation/html/struct_e_rect.html | 148 + .../html/struct_vst_file_select-members.html | 53 + .../Documentation/html/struct_vst_file_select.html | 373 + .../html/struct_vst_file_type-members.html | 47 + .../Documentation/html/struct_vst_file_type.html | 263 + .../html/struct_vst_key_code-members.html | 43 + .../Documentation/html/struct_vst_key_code.html | 123 + vstgui.sf/vstgui/Documentation/html/tab_b.gif | Bin 0 -> 35 bytes vstgui.sf/vstgui/Documentation/html/tab_l.gif | Bin 0 -> 706 bytes vstgui.sf/vstgui/Documentation/html/tab_r.gif | Bin 0 -> 2585 bytes vstgui.sf/vstgui/Documentation/html/tabs.css | 102 + vstgui.sf/vstgui/Documentation/html/thanks.html | 38 + vstgui.sf/vstgui/Documentation/html/tree.html | 238 + .../Documentation/html/vstcontrols_8cpp.html | 127 + .../vstgui/Documentation/html/vstcontrols_8h.html | 494 + .../vstgui/Documentation/html/vstgui_8cpp.html | 835 ++ vstgui.sf/vstgui/Documentation/html/vstgui_8h.html | 1068 +++ .../vstgui/Documentation/html/vstkeycode_8h.html | 303 + .../vstgui/Documentation/html/vstoffline.html | 33 + .../vstgui/Documentation/html/vstparamstruct.html | 33 + .../Documentation/html/vstplugscarbon_8h.html | 293 + .../vstgui/Documentation/html/vstplugsmac_8h.html | 381 + .../Documentation/html/vstplugsmacho_8h.html | 418 + .../Documentation/html/vstplugsquartz_8h.html | 369 + vstgui.sf/vstgui/Documentation/html/whatsnew.html | 84 + vstgui.sf/vstgui/Documentation/index.html | 11 + vstgui.sf/vstgui/aeffguieditor.cpp | 409 + vstgui.sf/vstgui/aeffguieditor.h | 113 + vstgui.sf/vstgui/cfileselector.cpp | 1156 +++ vstgui.sf/vstgui/cfileselector.h | 133 + vstgui.sf/vstgui/cscrollview.cpp | 497 + vstgui.sf/vstgui/cscrollview.h | 179 + vstgui.sf/vstgui/ctabview.cpp | 404 + vstgui.sf/vstgui/ctabview.h | 100 + vstgui.sf/vstgui/plugguieditor.cpp | 301 + vstgui.sf/vstgui/plugguieditor.h | 122 + vstgui.sf/vstgui/vstcontrols.cpp | 5516 +++++++++++ vstgui.sf/vstgui/vstcontrols.h | 996 ++ vstgui.sf/vstgui/vstgui.cpp | 9851 ++++++++++++++++++++ vstgui.sf/vstgui/vstgui.h | 1227 +++ vstgui.sf/vstgui/vstkeycode.h | 91 + vstgui.sf/vstgui/vstplugscarbon.h | 15 + vstgui.sf/vstgui/vstplugsmac.h | 15 + vstgui.sf/vstgui/vstplugsmacho.h | 22 + vstgui.sf/vstgui/vstplugsquartz.h | 24 + 613 files changed, 121102 insertions(+) create mode 100644 README-VSTSDK.txt create mode 100644 artwork/Thumbs.db create mode 100644 artwork/VSTLogoAlpha.png create mode 100644 artwork/VSTLogoBlack.jpg create mode 100644 artwork/VSTLogoWhite.jpg create mode 100644 artwork/VST_Logo_Usage_Guideline.pdf create mode 100644 bin/mac/VSTMonitor.vst/Contents/Info.plist create mode 100644 bin/mac/VSTMonitor.vst/Contents/MacOS/VSTMonitor create mode 100644 bin/mac/VSTMonitor.vst/Contents/PkgInfo create mode 100644 bin/mac/VSTMonitor.vst/Contents/Resources/bmp50000.bmp create mode 100644 bin/mac/VSTMonitor.vst/Contents/Resources/bmp50001.bmp create mode 100644 bin/mac/VSTMonitor.vst/Contents/Resources/bmp50002.bmp create mode 100644 bin/mac/VSTMonitor.vst/Contents/Resources/bmp50003.bmp create mode 100644 bin/mac/VSTMonitor.vst/Contents/Resources/bmp50004.bmp create mode 100644 bin/mac/VSTMonitor.vst/Contents/Resources/bmp50005.bmp create mode 100644 bin/mac/VSTMonitor.vst/Contents/Resources/bmp50006.bmp create mode 100644 bin/mac/VSTMonitor.vst/Contents/Resources/bmp50007.bmp create mode 100644 bin/mac/VSTMonitor.vst/Contents/Resources/bmp50008.bmp create mode 100644 bin/mac/VSTParamTool.app/Contents/Info.plist create mode 100644 bin/mac/VSTParamTool.app/Contents/MacOS/VSTParamTool create mode 100644 bin/mac/VSTParamTool.app/Contents/PkgInfo create mode 100644 bin/mac/VSTParamTool.app/Contents/Resources/VSTParamTool.rsrc create mode 100644 bin/win/vstmonitor.dll create mode 100644 bin/win/vstparamtool.exe create mode 100644 doc/VST Licensing Agreement.rtf create mode 100644 doc/gfx/folder.gif create mode 100644 doc/gfx/mac.gif create mode 100644 doc/gfx/vstpluglogo_small.jpg create mode 100644 doc/gfx/win.gif create mode 100644 doc/html/Blocksizechange.gif create mode 100644 doc/html/ControlChanged.gif create mode 100644 doc/html/IOchange.gif create mode 100644 doc/html/Initialisation.gif create mode 100644 doc/html/Offlineprocessing.gif create mode 100644 doc/html/Sampleratechange.gif create mode 100644 doc/html/SpeakerarrangementnegotiationforVSTfx.gif create mode 100644 doc/html/Termination.gif create mode 100644 doc/html/TurnOff.gif create mode 100644 doc/html/TurnOn.gif create mode 100644 doc/html/aeffect_8h.html create mode 100644 doc/html/aeffectx_8h.html create mode 100644 doc/html/aeffeditor_8h.html create mode 100644 doc/html/annotated.html create mode 100644 doc/html/audioeffect_8cpp.html create mode 100644 doc/html/audioeffect_8h.html create mode 100644 doc/html/audioeffectx_8cpp.html create mode 100644 doc/html/audioeffectx_8h.html create mode 100644 doc/html/class_a_eff_editor-members.html create mode 100644 doc/html/class_a_eff_editor.html create mode 100644 doc/html/class_audio_effect-members.html create mode 100644 doc/html/class_audio_effect.html create mode 100644 doc/html/class_audio_effect.png create mode 100644 doc/html/class_audio_effect_x-members.html create mode 100644 doc/html/class_audio_effect_x.html create mode 100644 doc/html/class_audio_effect_x.png create mode 100644 doc/html/deprecated.html create mode 100644 doc/html/dir_2d3252dd12c84c66c1d25b26bb45a1f5.html create mode 100644 doc/html/dir_77c628dfee72e555f82d5ef53b733f38.html create mode 100644 doc/html/dir_f81105d3b854bea570aaf3bae5cb64c1.html create mode 100644 doc/html/dir_fa0454ab79b4262333bf837ea3d765e9.html create mode 100644 doc/html/dirs.html create mode 100644 doc/html/doc_8h.html create mode 100644 doc/html/doxygen.css create mode 100644 doc/html/doxygen.png create mode 100644 doc/html/files.html create mode 100644 doc/html/ftv2blank.png create mode 100644 doc/html/ftv2doc.png create mode 100644 doc/html/ftv2folderclosed.png create mode 100644 doc/html/ftv2folderopen.png create mode 100644 doc/html/ftv2lastnode.png create mode 100644 doc/html/ftv2link.png create mode 100644 doc/html/ftv2mlastnode.png create mode 100644 doc/html/ftv2mnode.png create mode 100644 doc/html/ftv2node.png create mode 100644 doc/html/ftv2plastnode.png create mode 100644 doc/html/ftv2pnode.png create mode 100644 doc/html/ftv2vertline.png create mode 100644 doc/html/functions.html create mode 100644 doc/html/functions_0x62.html create mode 100644 doc/html/functions_0x63.html create mode 100644 doc/html/functions_0x64.html create mode 100644 doc/html/functions_0x65.html create mode 100644 doc/html/functions_0x66.html create mode 100644 doc/html/functions_0x67.html create mode 100644 doc/html/functions_0x68.html create mode 100644 doc/html/functions_0x69.html create mode 100644 doc/html/functions_0x6b.html create mode 100644 doc/html/functions_0x6c.html create mode 100644 doc/html/functions_0x6d.html create mode 100644 doc/html/functions_0x6e.html create mode 100644 doc/html/functions_0x6f.html create mode 100644 doc/html/functions_0x70.html create mode 100644 doc/html/functions_0x72.html create mode 100644 doc/html/functions_0x73.html create mode 100644 doc/html/functions_0x74.html create mode 100644 doc/html/functions_0x75.html create mode 100644 doc/html/functions_0x76.html create mode 100644 doc/html/functions_0x77.html create mode 100644 doc/html/functions_0x78.html create mode 100644 doc/html/functions_0x79.html create mode 100644 doc/html/functions_0x7e.html create mode 100644 doc/html/functions_func.html create mode 100644 doc/html/functions_vars.html create mode 100644 doc/html/globals.html create mode 100644 doc/html/globals_0x62.html create mode 100644 doc/html/globals_0x63.html create mode 100644 doc/html/globals_0x64.html create mode 100644 doc/html/globals_0x65.html create mode 100644 doc/html/globals_0x66.html create mode 100644 doc/html/globals_0x6b.html create mode 100644 doc/html/globals_0x6d.html create mode 100644 doc/html/globals_0x74.html create mode 100644 doc/html/globals_0x76.html create mode 100644 doc/html/globals_defs.html create mode 100644 doc/html/globals_enum.html create mode 100644 doc/html/globals_eval.html create mode 100644 doc/html/globals_eval_0x65.html create mode 100644 doc/html/globals_eval_0x6b.html create mode 100644 doc/html/globals_eval_0x6d.html create mode 100644 doc/html/globals_eval_0x76.html create mode 100644 doc/html/globals_func.html create mode 100644 doc/html/globals_type.html create mode 100644 doc/html/globals_vars.html create mode 100644 doc/html/hierarchy.html create mode 100644 doc/html/history.html create mode 100644 doc/html/index.html create mode 100644 doc/html/intro.html create mode 100644 doc/html/license.html create mode 100644 doc/html/maceditor.html create mode 100644 doc/html/main.html create mode 100644 doc/html/namespace_host_can_dos.html create mode 100644 doc/html/namespace_plug_can_dos.html create mode 100644 doc/html/namespacemembers.html create mode 100644 doc/html/namespacemembers_vars.html create mode 100644 doc/html/namespaces.html create mode 100644 doc/html/others.html create mode 100644 doc/html/pages.html create mode 100644 doc/html/sequences.html create mode 100644 doc/html/struct_a_effect-members.html create mode 100644 doc/html/struct_a_effect.html create mode 100644 doc/html/struct_e_rect-members.html create mode 100644 doc/html/struct_e_rect.html create mode 100644 doc/html/struct_midi_key_name-members.html create mode 100644 doc/html/struct_midi_key_name.html create mode 100644 doc/html/struct_midi_program_category-members.html create mode 100644 doc/html/struct_midi_program_category.html create mode 100644 doc/html/struct_midi_program_name-members.html create mode 100644 doc/html/struct_midi_program_name.html create mode 100644 doc/html/struct_vst_audio_file-members.html create mode 100644 doc/html/struct_vst_audio_file.html create mode 100644 doc/html/struct_vst_audio_file_marker-members.html create mode 100644 doc/html/struct_vst_audio_file_marker.html create mode 100644 doc/html/struct_vst_event-members.html create mode 100644 doc/html/struct_vst_event.html create mode 100644 doc/html/struct_vst_events-members.html create mode 100644 doc/html/struct_vst_events.html create mode 100644 doc/html/struct_vst_file_select-members.html create mode 100644 doc/html/struct_vst_file_select.html create mode 100644 doc/html/struct_vst_file_type-members.html create mode 100644 doc/html/struct_vst_file_type.html create mode 100644 doc/html/struct_vst_key_code-members.html create mode 100644 doc/html/struct_vst_key_code.html create mode 100644 doc/html/struct_vst_midi_event-members.html create mode 100644 doc/html/struct_vst_midi_event.html create mode 100644 doc/html/struct_vst_midi_sysex_event-members.html create mode 100644 doc/html/struct_vst_midi_sysex_event.html create mode 100644 doc/html/struct_vst_offline_task-members.html create mode 100644 doc/html/struct_vst_offline_task.html create mode 100644 doc/html/struct_vst_parameter_properties-members.html create mode 100644 doc/html/struct_vst_parameter_properties.html create mode 100644 doc/html/struct_vst_patch_chunk_info-members.html create mode 100644 doc/html/struct_vst_patch_chunk_info.html create mode 100644 doc/html/struct_vst_pin_properties-members.html create mode 100644 doc/html/struct_vst_pin_properties.html create mode 100644 doc/html/struct_vst_speaker_arrangement-members.html create mode 100644 doc/html/struct_vst_speaker_arrangement.html create mode 100644 doc/html/struct_vst_speaker_properties-members.html create mode 100644 doc/html/struct_vst_speaker_properties.html create mode 100644 doc/html/struct_vst_time_info-members.html create mode 100644 doc/html/struct_vst_time_info.html create mode 100644 doc/html/struct_vst_variable_io-members.html create mode 100644 doc/html/struct_vst_variable_io.html create mode 100644 doc/html/struct_vst_window-members.html create mode 100644 doc/html/struct_vst_window.html create mode 100644 doc/html/structfx_bank-members.html create mode 100644 doc/html/structfx_bank.html create mode 100644 doc/html/structfx_program-members.html create mode 100644 doc/html/structfx_program.html create mode 100644 doc/html/tab_b.gif create mode 100644 doc/html/tab_l.gif create mode 100644 doc/html/tab_r.gif create mode 100644 doc/html/tabs.css create mode 100644 doc/html/thanks.html create mode 100644 doc/html/tree.html create mode 100644 doc/html/vstfxstore_8h.html create mode 100644 doc/html/vstoffline.html create mode 100644 doc/html/vstparamstruct.html create mode 100644 doc/html/vstpluglogo.jpg create mode 100644 doc/html/vstplugmain_8cpp.html create mode 100644 doc/html/whatsnew.html create mode 100644 doc/sdk.menu.html create mode 100644 doc/sdk.overview.html create mode 100644 doc/sdkdoc.css create mode 100644 index.html create mode 100644 pluginterfaces/vst2.x/aeffect.h create mode 100644 pluginterfaces/vst2.x/aeffectx.h create mode 100644 pluginterfaces/vst2.x/vstfxstore.h create mode 100644 public.sdk/samples/vst2.x/adelay/adelay.cpp create mode 100644 public.sdk/samples/vst2.x/adelay/adelay.h create mode 100644 public.sdk/samples/vst2.x/adelay/adelaymain.cpp create mode 100644 public.sdk/samples/vst2.x/adelay/editor/resources/bmp00128.bmp create mode 100644 public.sdk/samples/vst2.x/adelay/editor/resources/bmp00129.bmp create mode 100644 public.sdk/samples/vst2.x/adelay/editor/resources/bmp00130.bmp create mode 100644 public.sdk/samples/vst2.x/adelay/editor/resources/surrounddelay.rc create mode 100644 public.sdk/samples/vst2.x/adelay/editor/sdeditor.cpp create mode 100644 public.sdk/samples/vst2.x/adelay/editor/sdeditor.h create mode 100644 public.sdk/samples/vst2.x/adelay/surrounddelay.cpp create mode 100644 public.sdk/samples/vst2.x/adelay/surrounddelay.h create mode 100644 public.sdk/samples/vst2.x/adelay/win/adelay.vcproj create mode 100644 public.sdk/samples/vst2.x/adelay/win/surrounddelay.vcproj create mode 100644 public.sdk/samples/vst2.x/again/source/again.cpp create mode 100644 public.sdk/samples/vst2.x/again/source/again.h create mode 100644 public.sdk/samples/vst2.x/again/win/again.vcproj create mode 100644 public.sdk/samples/vst2.x/mac/minihost-Info.plist create mode 100644 public.sdk/samples/vst2.x/mac/vst 2.4 examples.xcodeproj/project.pbxproj create mode 100644 public.sdk/samples/vst2.x/mac/vst2.4Info.plist create mode 100644 public.sdk/samples/vst2.x/minihost/source/minieditor.cpp create mode 100644 public.sdk/samples/vst2.x/minihost/source/minihost.cpp create mode 100644 public.sdk/samples/vst2.x/minihost/win/minihost.vcproj create mode 100644 public.sdk/samples/vst2.x/vstxsynth/resource/vstxsynth.rc create mode 100644 public.sdk/samples/vst2.x/vstxsynth/resource/vstxsynth.vstxml create mode 100644 public.sdk/samples/vst2.x/vstxsynth/source/gmnames.h create mode 100644 public.sdk/samples/vst2.x/vstxsynth/source/vstxsynth.cpp create mode 100644 public.sdk/samples/vst2.x/vstxsynth/source/vstxsynth.h create mode 100644 public.sdk/samples/vst2.x/vstxsynth/source/vstxsynthproc.cpp create mode 100644 public.sdk/samples/vst2.x/vstxsynth/win/vstxsynth.vcproj create mode 100644 public.sdk/samples/vst2.x/win.vc2003/adelay.vcproj create mode 100644 public.sdk/samples/vst2.x/win.vc2003/again.vcproj create mode 100644 public.sdk/samples/vst2.x/win.vc2003/minihost.vcproj create mode 100644 public.sdk/samples/vst2.x/win.vc2003/samples.sln create mode 100644 public.sdk/samples/vst2.x/win.vc2003/surrounddelay.vcproj create mode 100644 public.sdk/samples/vst2.x/win.vc2003/vstxsynth.vcproj create mode 100644 public.sdk/samples/vst2.x/win.vc6/adelay.dsp create mode 100644 public.sdk/samples/vst2.x/win.vc6/again.dsp create mode 100644 public.sdk/samples/vst2.x/win.vc6/minihost.dsp create mode 100644 public.sdk/samples/vst2.x/win.vc6/samples.dsw create mode 100644 public.sdk/samples/vst2.x/win.vc6/surrounddelay.dsp create mode 100644 public.sdk/samples/vst2.x/win.vc6/vstxsynth.dsp create mode 100644 public.sdk/samples/vst2.x/win/samples.sln create mode 100644 public.sdk/samples/vst2.x/win/vstplug.def create mode 100644 public.sdk/source/vst2.x/aeffeditor.h create mode 100644 public.sdk/source/vst2.x/audioeffect.cpp create mode 100644 public.sdk/source/vst2.x/audioeffect.h create mode 100644 public.sdk/source/vst2.x/audioeffectx.cpp create mode 100644 public.sdk/source/vst2.x/audioeffectx.h create mode 100644 public.sdk/source/vst2.x/vstplugmain.cpp create mode 100644 vstgui.sf/drawtest/mac/Info.plist create mode 100644 vstgui.sf/drawtest/mac/audiounit.exp create mode 100644 vstgui.sf/drawtest/mac/cw_vst_prefix.pch++ create mode 100644 vstgui.sf/drawtest/mac/drawtest.cw9prj create mode 100644 vstgui.sf/drawtest/mac/drawtest.plc create mode 100644 vstgui.sf/drawtest/mac/drawtest.xcode/project.pbxproj create mode 100644 vstgui.sf/drawtest/mac/drawtest.xcodeproj/project.pbxproj create mode 100644 vstgui.sf/drawtest/mac/xcode_au_prefix.h create mode 100644 vstgui.sf/drawtest/mac/xcode_vst_prefix.h create mode 100644 vstgui.sf/drawtest/resources/audiounit.r create mode 100644 vstgui.sf/drawtest/resources/bmp00001.png create mode 100644 vstgui.sf/drawtest/resources/bmp00100.png create mode 100644 vstgui.sf/drawtest/resources/bmp01000.png create mode 100644 vstgui.sf/drawtest/resources/bmp10001.bmp create mode 100644 vstgui.sf/drawtest/resources/bmp10002.bmp create mode 100644 vstgui.sf/drawtest/resources/bmp10003.bmp create mode 100644 vstgui.sf/drawtest/resources/bmp10004.bmp create mode 100644 vstgui.sf/drawtest/resources/bmp10005.bmp create mode 100644 vstgui.sf/drawtest/resources/bmp10006.bmp create mode 100644 vstgui.sf/drawtest/resources/bmp10007.bmp create mode 100644 vstgui.sf/drawtest/resources/bmp10008.bmp create mode 100644 vstgui.sf/drawtest/resources/bmp10009.bmp create mode 100644 vstgui.sf/drawtest/resources/bmp10010.bmp create mode 100644 vstgui.sf/drawtest/resources/bmp10011.bmp create mode 100644 vstgui.sf/drawtest/resources/bmp10012.bmp create mode 100644 vstgui.sf/drawtest/resources/bmp10013.bmp create mode 100644 vstgui.sf/drawtest/resources/bmp10014.bmp create mode 100644 vstgui.sf/drawtest/resources/bmp10015.bmp create mode 100644 vstgui.sf/drawtest/resources/bmp10016.bmp create mode 100644 vstgui.sf/drawtest/source/controlsgui.cpp create mode 100644 vstgui.sf/drawtest/source/controlsgui.h create mode 100644 vstgui.sf/drawtest/source/pdrawtesteditor.cpp create mode 100644 vstgui.sf/drawtest/source/pdrawtesteditor.h create mode 100644 vstgui.sf/drawtest/source/pdrawtesteffect.cpp create mode 100644 vstgui.sf/drawtest/source/pdrawtesteffect.h create mode 100644 vstgui.sf/drawtest/source/pdrawtestmain.cpp create mode 100644 vstgui.sf/drawtest/source/pdrawtestview.cpp create mode 100644 vstgui.sf/drawtest/source/pdrawtestview.h create mode 100644 vstgui.sf/drawtest/source/pprimitivesviews.cpp create mode 100644 vstgui.sf/drawtest/source/pprimitivesviews.h create mode 100644 vstgui.sf/drawtest/win.vc6/drawtest.dsp create mode 100644 vstgui.sf/drawtest/win.vc6/drawtest.dsw create mode 100644 vstgui.sf/drawtest/win/drawtest.def create mode 100644 vstgui.sf/drawtest/win/drawtest.rc create mode 100644 vstgui.sf/drawtest/win/drawtest.vcproj create mode 100644 vstgui.sf/vstgui/Changelog create mode 100644 vstgui.sf/vstgui/Documentation/Migrating from 2.3.rtf create mode 100644 vstgui.sf/vstgui/Documentation/html/aeffguieditor_8cpp.html create mode 100644 vstgui.sf/vstgui/Documentation/html/aeffguieditor_8h.html create mode 100644 vstgui.sf/vstgui/Documentation/html/annotated.html create mode 100644 vstgui.sf/vstgui/Documentation/html/cfileselector_8cpp.html create mode 100644 vstgui.sf/vstgui/Documentation/html/cfileselector_8h.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_a_eff_g_u_i_editor-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_a_eff_g_u_i_editor.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_anim_knob-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_anim_knob.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_anim_knob.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_attribute_list_entry-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_attribute_list_entry.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_auto_animation-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_auto_animation.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_auto_animation.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_bitmap-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_bitmap.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_bitmap.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_c_view-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_c_view.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_control-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_control.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_control.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_control_listener-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_control_listener.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_control_listener.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_drag_container-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_drag_container.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_drag_container.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_draw_context-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_draw_context.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_draw_context.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_file_selector-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_file_selector.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_frame-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_frame.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_frame.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_horizontal_slider-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_horizontal_slider.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_horizontal_slider.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_horizontal_switch-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_horizontal_switch.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_horizontal_switch.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_kick_button-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_kick_button.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_kick_button.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_knob-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_knob.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_knob.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_movie_bitmap-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_movie_bitmap.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_movie_bitmap.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_movie_button-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_movie_button.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_movie_button.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_offscreen_context-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_offscreen_context.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_offscreen_context.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_on_off_button-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_on_off_button.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_on_off_button.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_option_menu-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_option_menu.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_option_menu.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_option_menu_scheme-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_option_menu_scheme.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_option_menu_scheme.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_param_display-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_param_display.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_param_display.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_reference_counter-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_reference_counter.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_reference_counter.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_rocker_switch-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_rocker_switch.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_rocker_switch.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_scroll_container-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_scroll_container.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_scroll_container.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_scroll_view-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_scroll_view.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_scroll_view.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_scrollbar-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_scrollbar.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_scrollbar.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_slider-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_slider.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_slider.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_special_digit-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_special_digit.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_special_digit.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_splash_screen-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_splash_screen.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_splash_screen.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_splash_screen_view-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_splash_screen_view.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_splash_screen_view.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_tab_button-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_tab_button.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_tab_button.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_tab_child_view-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_tab_child_view.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_tab_child_view.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_tab_view-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_tab_view.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_tab_view.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_text_edit-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_text_edit.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_text_edit.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_text_label-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_text_label.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_text_label.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_vertical_slider-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_vertical_slider.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_vertical_slider.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_vertical_switch-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_vertical_switch.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_vertical_switch.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_view-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_view.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_view.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_view_container-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_view_container.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_view_container.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_vu_meter-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_vu_meter.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_c_vu_meter.png create mode 100644 vstgui.sf/vstgui/Documentation/html/class_i_scrollbar_drawer-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_i_scrollbar_drawer.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_plugin_g_u_i_editor-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/class_plugin_g_u_i_editor.html create mode 100644 vstgui.sf/vstgui/Documentation/html/cscrollview_8cpp.html create mode 100644 vstgui.sf/vstgui/Documentation/html/cscrollview_8h.html create mode 100644 vstgui.sf/vstgui/Documentation/html/ctabview_8cpp.html create mode 100644 vstgui.sf/vstgui/Documentation/html/ctabview_8h.html create mode 100644 vstgui.sf/vstgui/Documentation/html/deprecated.html create mode 100644 vstgui.sf/vstgui/Documentation/html/doc_8h.html create mode 100644 vstgui.sf/vstgui/Documentation/html/doxygen.css create mode 100644 vstgui.sf/vstgui/Documentation/html/doxygen.png create mode 100644 vstgui.sf/vstgui/Documentation/html/files.html create mode 100644 vstgui.sf/vstgui/Documentation/html/ftv2blank.png create mode 100644 vstgui.sf/vstgui/Documentation/html/ftv2doc.png create mode 100644 vstgui.sf/vstgui/Documentation/html/ftv2folderclosed.png create mode 100644 vstgui.sf/vstgui/Documentation/html/ftv2folderopen.png create mode 100644 vstgui.sf/vstgui/Documentation/html/ftv2lastnode.png create mode 100644 vstgui.sf/vstgui/Documentation/html/ftv2link.png create mode 100644 vstgui.sf/vstgui/Documentation/html/ftv2mlastnode.png create mode 100644 vstgui.sf/vstgui/Documentation/html/ftv2mnode.png create mode 100644 vstgui.sf/vstgui/Documentation/html/ftv2node.png create mode 100644 vstgui.sf/vstgui/Documentation/html/ftv2plastnode.png create mode 100644 vstgui.sf/vstgui/Documentation/html/ftv2pnode.png create mode 100644 vstgui.sf/vstgui/Documentation/html/ftv2vertline.png create mode 100644 vstgui.sf/vstgui/Documentation/html/functions.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_0x62.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_0x63.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_0x64.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_0x65.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_0x66.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_0x67.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_0x68.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_0x69.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_0x6b.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_0x6c.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_0x6d.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_0x6e.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_0x6f.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_0x70.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_0x72.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_0x73.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_0x74.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_0x75.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_0x76.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_0x77.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_0x78.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_0x79.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_0x7a.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_0x7e.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_eval.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_func.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_func_0x62.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_func_0x63.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_func_0x64.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_func_0x65.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_func_0x66.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_func_0x67.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_func_0x68.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_func_0x69.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_func_0x6c.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_func_0x6d.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_func_0x6e.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_func_0x6f.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_func_0x70.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_func_0x72.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_func_0x73.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_func_0x74.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_func_0x75.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_func_0x76.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_func_0x77.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_func_0x7e.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_rela.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_vars.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_vars_0x62.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_vars_0x63.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_vars_0x64.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_vars_0x65.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_vars_0x66.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_vars_0x67.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_vars_0x68.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_vars_0x69.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_vars_0x6b.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_vars_0x6c.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_vars_0x6d.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_vars_0x6e.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_vars_0x6f.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_vars_0x70.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_vars_0x72.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_vars_0x73.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_vars_0x74.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_vars_0x75.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_vars_0x76.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_vars_0x77.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_vars_0x78.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_vars_0x79.html create mode 100644 vstgui.sf/vstgui/Documentation/html/functions_vars_0x7a.html create mode 100644 vstgui.sf/vstgui/Documentation/html/globals.html create mode 100644 vstgui.sf/vstgui/Documentation/html/globals_0x61.html create mode 100644 vstgui.sf/vstgui/Documentation/html/globals_0x62.html create mode 100644 vstgui.sf/vstgui/Documentation/html/globals_0x63.html create mode 100644 vstgui.sf/vstgui/Documentation/html/globals_0x65.html create mode 100644 vstgui.sf/vstgui/Documentation/html/globals_0x66.html create mode 100644 vstgui.sf/vstgui/Documentation/html/globals_0x67.html create mode 100644 vstgui.sf/vstgui/Documentation/html/globals_0x6b.html create mode 100644 vstgui.sf/vstgui/Documentation/html/globals_0x6d.html create mode 100644 vstgui.sf/vstgui/Documentation/html/globals_0x6e.html create mode 100644 vstgui.sf/vstgui/Documentation/html/globals_0x6f.html create mode 100644 vstgui.sf/vstgui/Documentation/html/globals_0x71.html create mode 100644 vstgui.sf/vstgui/Documentation/html/globals_0x72.html create mode 100644 vstgui.sf/vstgui/Documentation/html/globals_0x73.html create mode 100644 vstgui.sf/vstgui/Documentation/html/globals_0x74.html create mode 100644 vstgui.sf/vstgui/Documentation/html/globals_0x75.html create mode 100644 vstgui.sf/vstgui/Documentation/html/globals_0x76.html create mode 100644 vstgui.sf/vstgui/Documentation/html/globals_0x77.html create mode 100644 vstgui.sf/vstgui/Documentation/html/globals_defs.html create mode 100644 vstgui.sf/vstgui/Documentation/html/globals_enum.html create mode 100644 vstgui.sf/vstgui/Documentation/html/globals_eval.html create mode 100644 vstgui.sf/vstgui/Documentation/html/globals_type.html create mode 100644 vstgui.sf/vstgui/Documentation/html/globals_vars.html create mode 100644 vstgui.sf/vstgui/Documentation/html/hierarchy.html create mode 100644 vstgui.sf/vstgui/Documentation/html/index.html create mode 100644 vstgui.sf/vstgui/Documentation/html/intro.html create mode 100644 vstgui.sf/vstgui/Documentation/html/license.html create mode 100644 vstgui.sf/vstgui/Documentation/html/maceditor.html create mode 100644 vstgui.sf/vstgui/Documentation/html/main.html create mode 100644 vstgui.sf/vstgui/Documentation/html/others.html create mode 100644 vstgui.sf/vstgui/Documentation/html/pages.html create mode 100644 vstgui.sf/vstgui/Documentation/html/plugguieditor_8cpp.html create mode 100644 vstgui.sf/vstgui/Documentation/html/plugguieditor_8h.html create mode 100644 vstgui.sf/vstgui/Documentation/html/sequences.html create mode 100644 vstgui.sf/vstgui/Documentation/html/struct_c_color-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/struct_c_color.html create mode 100644 vstgui.sf/vstgui/Documentation/html/struct_c_point-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/struct_c_point.html create mode 100644 vstgui.sf/vstgui/Documentation/html/struct_c_rect-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/struct_c_rect.html create mode 100644 vstgui.sf/vstgui/Documentation/html/struct_e_rect-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/struct_e_rect.html create mode 100644 vstgui.sf/vstgui/Documentation/html/struct_vst_file_select-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/struct_vst_file_select.html create mode 100644 vstgui.sf/vstgui/Documentation/html/struct_vst_file_type-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/struct_vst_file_type.html create mode 100644 vstgui.sf/vstgui/Documentation/html/struct_vst_key_code-members.html create mode 100644 vstgui.sf/vstgui/Documentation/html/struct_vst_key_code.html create mode 100644 vstgui.sf/vstgui/Documentation/html/tab_b.gif create mode 100644 vstgui.sf/vstgui/Documentation/html/tab_l.gif create mode 100644 vstgui.sf/vstgui/Documentation/html/tab_r.gif create mode 100644 vstgui.sf/vstgui/Documentation/html/tabs.css create mode 100644 vstgui.sf/vstgui/Documentation/html/thanks.html create mode 100644 vstgui.sf/vstgui/Documentation/html/tree.html create mode 100644 vstgui.sf/vstgui/Documentation/html/vstcontrols_8cpp.html create mode 100644 vstgui.sf/vstgui/Documentation/html/vstcontrols_8h.html create mode 100644 vstgui.sf/vstgui/Documentation/html/vstgui_8cpp.html create mode 100644 vstgui.sf/vstgui/Documentation/html/vstgui_8h.html create mode 100644 vstgui.sf/vstgui/Documentation/html/vstkeycode_8h.html create mode 100644 vstgui.sf/vstgui/Documentation/html/vstoffline.html create mode 100644 vstgui.sf/vstgui/Documentation/html/vstparamstruct.html create mode 100644 vstgui.sf/vstgui/Documentation/html/vstplugscarbon_8h.html create mode 100644 vstgui.sf/vstgui/Documentation/html/vstplugsmac_8h.html create mode 100644 vstgui.sf/vstgui/Documentation/html/vstplugsmacho_8h.html create mode 100644 vstgui.sf/vstgui/Documentation/html/vstplugsquartz_8h.html create mode 100644 vstgui.sf/vstgui/Documentation/html/whatsnew.html create mode 100644 vstgui.sf/vstgui/Documentation/index.html create mode 100644 vstgui.sf/vstgui/aeffguieditor.cpp create mode 100644 vstgui.sf/vstgui/aeffguieditor.h create mode 100644 vstgui.sf/vstgui/cfileselector.cpp create mode 100644 vstgui.sf/vstgui/cfileselector.h create mode 100644 vstgui.sf/vstgui/cscrollview.cpp create mode 100644 vstgui.sf/vstgui/cscrollview.h create mode 100644 vstgui.sf/vstgui/ctabview.cpp create mode 100644 vstgui.sf/vstgui/ctabview.h create mode 100644 vstgui.sf/vstgui/plugguieditor.cpp create mode 100644 vstgui.sf/vstgui/plugguieditor.h create mode 100644 vstgui.sf/vstgui/vstcontrols.cpp create mode 100644 vstgui.sf/vstgui/vstcontrols.h create mode 100644 vstgui.sf/vstgui/vstgui.cpp create mode 100644 vstgui.sf/vstgui/vstgui.h create mode 100644 vstgui.sf/vstgui/vstkeycode.h create mode 100644 vstgui.sf/vstgui/vstplugscarbon.h create mode 100644 vstgui.sf/vstgui/vstplugsmac.h create mode 100644 vstgui.sf/vstgui/vstplugsmacho.h create mode 100644 vstgui.sf/vstgui/vstplugsquartz.h diff --git a/README-VSTSDK.txt b/README-VSTSDK.txt new file mode 100644 index 0000000..bd4555b --- /dev/null +++ b/README-VSTSDK.txt @@ -0,0 +1,7 @@ +Due to licensing restrictions, the VST SDK is not distributed with the +source code of this project. You must download it separately here: + +http://www.steinberg.net/en/company/developer.html + +Uncompress the VST SDK zipfile, and then copy the contents of the +"vstsdk2.4" directory here. diff --git a/artwork/Thumbs.db b/artwork/Thumbs.db new file mode 100644 index 0000000..217981f Binary files /dev/null and b/artwork/Thumbs.db differ diff --git a/artwork/VSTLogoAlpha.png b/artwork/VSTLogoAlpha.png new file mode 100644 index 0000000..cad97d9 Binary files /dev/null and b/artwork/VSTLogoAlpha.png differ diff --git a/artwork/VSTLogoBlack.jpg b/artwork/VSTLogoBlack.jpg new file mode 100644 index 0000000..3068007 Binary files /dev/null and b/artwork/VSTLogoBlack.jpg differ diff --git a/artwork/VSTLogoWhite.jpg b/artwork/VSTLogoWhite.jpg new file mode 100644 index 0000000..aa9ef62 Binary files /dev/null and b/artwork/VSTLogoWhite.jpg differ diff --git a/artwork/VST_Logo_Usage_Guideline.pdf b/artwork/VST_Logo_Usage_Guideline.pdf new file mode 100644 index 0000000..f8aa355 Binary files /dev/null and b/artwork/VST_Logo_Usage_Guideline.pdf differ diff --git a/bin/mac/VSTMonitor.vst/Contents/Info.plist b/bin/mac/VSTMonitor.vst/Contents/Info.plist new file mode 100644 index 0000000..bbc6ced --- /dev/null +++ b/bin/mac/VSTMonitor.vst/Contents/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + VSTMonitor + CFBundleIdentifier + com.apple.carbonbundletemplate + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + VSTMonitor + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + CSResourcesFileMapped + + + diff --git a/bin/mac/VSTMonitor.vst/Contents/MacOS/VSTMonitor b/bin/mac/VSTMonitor.vst/Contents/MacOS/VSTMonitor new file mode 100644 index 0000000..22cbdb3 Binary files /dev/null and b/bin/mac/VSTMonitor.vst/Contents/MacOS/VSTMonitor differ diff --git a/bin/mac/VSTMonitor.vst/Contents/PkgInfo b/bin/mac/VSTMonitor.vst/Contents/PkgInfo new file mode 100644 index 0000000..19a9cf6 --- /dev/null +++ b/bin/mac/VSTMonitor.vst/Contents/PkgInfo @@ -0,0 +1 @@ +BNDL???? \ No newline at end of file diff --git a/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50000.bmp b/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50000.bmp new file mode 100644 index 0000000..a337c33 Binary files /dev/null and b/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50000.bmp differ diff --git a/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50001.bmp b/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50001.bmp new file mode 100644 index 0000000..d9d1980 Binary files /dev/null and b/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50001.bmp differ diff --git a/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50002.bmp b/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50002.bmp new file mode 100644 index 0000000..fab2df1 Binary files /dev/null and b/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50002.bmp differ diff --git a/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50003.bmp b/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50003.bmp new file mode 100644 index 0000000..5c58ec9 Binary files /dev/null and b/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50003.bmp differ diff --git a/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50004.bmp b/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50004.bmp new file mode 100644 index 0000000..b8a9dc0 Binary files /dev/null and b/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50004.bmp differ diff --git a/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50005.bmp b/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50005.bmp new file mode 100644 index 0000000..bde19bc Binary files /dev/null and b/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50005.bmp differ diff --git a/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50006.bmp b/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50006.bmp new file mode 100644 index 0000000..538751f Binary files /dev/null and b/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50006.bmp differ diff --git a/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50007.bmp b/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50007.bmp new file mode 100644 index 0000000..0e9c129 Binary files /dev/null and b/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50007.bmp differ diff --git a/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50008.bmp b/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50008.bmp new file mode 100644 index 0000000..cd40e49 Binary files /dev/null and b/bin/mac/VSTMonitor.vst/Contents/Resources/bmp50008.bmp differ diff --git a/bin/mac/VSTParamTool.app/Contents/Info.plist b/bin/mac/VSTParamTool.app/Contents/Info.plist new file mode 100644 index 0000000..a7b110e --- /dev/null +++ b/bin/mac/VSTParamTool.app/Contents/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + VSTParamTool + CFBundleIdentifier + com.steinberg.vstparamtool + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + VSTParamTool + CFBundlePackageType + APPL + CFBundleSignature + ???? + CFBundleVersion + 1.0 + CSResourcesFileMapped + + + diff --git a/bin/mac/VSTParamTool.app/Contents/MacOS/VSTParamTool b/bin/mac/VSTParamTool.app/Contents/MacOS/VSTParamTool new file mode 100644 index 0000000..504e8a0 Binary files /dev/null and b/bin/mac/VSTParamTool.app/Contents/MacOS/VSTParamTool differ diff --git a/bin/mac/VSTParamTool.app/Contents/PkgInfo b/bin/mac/VSTParamTool.app/Contents/PkgInfo new file mode 100644 index 0000000..bd04210 --- /dev/null +++ b/bin/mac/VSTParamTool.app/Contents/PkgInfo @@ -0,0 +1 @@ +APPL???? \ No newline at end of file diff --git a/bin/mac/VSTParamTool.app/Contents/Resources/VSTParamTool.rsrc b/bin/mac/VSTParamTool.app/Contents/Resources/VSTParamTool.rsrc new file mode 100644 index 0000000..25575cc Binary files /dev/null and b/bin/mac/VSTParamTool.app/Contents/Resources/VSTParamTool.rsrc differ diff --git a/bin/win/vstmonitor.dll b/bin/win/vstmonitor.dll new file mode 100644 index 0000000..913a03b Binary files /dev/null and b/bin/win/vstmonitor.dll differ diff --git a/bin/win/vstparamtool.exe b/bin/win/vstparamtool.exe new file mode 100644 index 0000000..558c303 Binary files /dev/null and b/bin/win/vstparamtool.exe differ diff --git a/doc/VST Licensing Agreement.rtf b/doc/VST Licensing Agreement.rtf new file mode 100644 index 0000000..a528186 --- /dev/null +++ b/doc/VST Licensing Agreement.rtf @@ -0,0 +1,241 @@ +{\rtf1\ansi\ansicpg1252\uc1\deff36\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1031\deflangfe1031{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;} +{\f36\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Verdana;}{\f115\froman\fcharset238\fprq2 Times New Roman CE;}{\f116\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f118\froman\fcharset161\fprq2 Times New Roman Greek;} +{\f119\froman\fcharset162\fprq2 Times New Roman Tur;}{\f120\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f121\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f122\froman\fcharset186\fprq2 Times New Roman Baltic;} +{\f123\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f475\fswiss\fcharset238\fprq2 Verdana CE;}{\f476\fswiss\fcharset204\fprq2 Verdana Cyr;}{\f478\fswiss\fcharset161\fprq2 Verdana Greek;}{\f479\fswiss\fcharset162\fprq2 Verdana Tur;} +{\f482\fswiss\fcharset186\fprq2 Verdana Baltic;}{\f483\fswiss\fcharset163\fprq2 Verdana (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0; +\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{ +\ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 \f36\fs24\lang1033\langfe1031\cgrid\langnp1033\langfenp1031 \snext0 Normal;}{\s1\ql \li0\ri0\nowidctlpar\faauto\outlinelevel0\rin0\lin0\itap0 \f36\fs24\lang1033\langfe1031\cgrid\langnp1033\langfenp1031 +\sbasedon0 \snext0 heading 1;}{\s2\ql \li0\ri0\nowidctlpar\faauto\outlinelevel1\rin0\lin0\itap0 \f36\fs24\lang1033\langfe1031\cgrid\langnp1033\langfenp1031 \sbasedon0 \snext0 heading 2;}{\s3\ql \li0\ri0\nowidctlpar\faauto\outlinelevel2\rin0\lin0\itap0 +\f36\fs24\lang1033\langfe1031\cgrid\langnp1033\langfenp1031 \sbasedon0 \snext0 heading 3;}{\s4\ql \li0\ri0\nowidctlpar\faauto\outlinelevel3\rin0\lin0\itap0 \f36\fs24\lang1033\langfe1031\cgrid\langnp1033\langfenp1031 \sbasedon0 \snext0 heading 4;}{ +\s5\ql \li0\ri0\nowidctlpar\faauto\outlinelevel4\rin0\lin0\itap0 \f36\fs24\lang1033\langfe1031\cgrid\langnp1033\langfenp1031 \sbasedon0 \snext0 heading 5;}{\s6\ql \li0\ri0\nowidctlpar\faauto\outlinelevel5\rin0\lin0\itap0 +\f36\fs24\lang1033\langfe1031\cgrid\langnp1033\langfenp1031 \sbasedon0 \snext0 heading 6;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\* +\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv +\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}}{\*\listtable{\list\listtemplateid194138022\listsimple{\listlevel\levelnfc23\levelnfcn23 +\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\'01*;}{\levelnumbers;}}{\listname ;}\listid-2}{\list\listtemplateid910600962\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1 +\levelold\levelspace0\levelindent360{\leveltext\'02\'00.;}{\levelnumbers\'01;}\f36\fbias0 }{\listname ;}\listid125323114}{\list\listtemplateid-1647170324\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat2\levelold +\levelspace0\levelindent360{\leveltext\'02\'00.;}{\levelnumbers\'01;}\f36\fbias0 }{\listname ;}\listid833880899}{\list\listtemplateid910600962\listsimple{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelold\levelspace0 +\levelindent360{\leveltext\'02\'00.;}{\levelnumbers\'01;}\f36\fbias0 }{\listname ;}\listid1745569104}{\list\listtemplateid1815085384\listsimple{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelold\levelspace0 +\levelindent360{\leveltext\'03(\'00);}{\levelnumbers\'02;}\f36\fbias0 }{\listname ;}\listid1993564023}}{\*\listoverridetable{\listoverride\listid125323114\listoverridecount0\ls1}{\listoverride\listid-2\listoverridecount1{\lfolevel\listoverrideformat +{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelold\levelspace0\levelindent360{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 }}\ls2}{\listoverride\listid1993564023\listoverridecount0\ls3} +{\listoverride\listid833880899\listoverridecount0\ls4}{\listoverride\listid1745569104\listoverridecount0\ls5}}{\*\rsidtbl \rsid11812474}{\*\generator Microsoft Word 10.0.4524;}{\info{\author YGrabit}{\operator YGrabit}{\creatim\yr2006\mo1\dy12\hr10} +{\revtim\yr2006\mo1\dy12\hr10\min3}{\version2}{\edmins0}{\nofpages6}{\nofwords1342}{\nofchars8460}{\*\company Media Technologies GmbH}{\nofcharsws9783}{\vern16475}}\margl1417\margr1417\margt1417\margb1134 +\deftab708\widowctrl\ftnbj\aenddoc\hyphhotz425\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\nolnhtadjtbl\rsidroot11812474 +\fet0\sectd \linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4 +\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (} +{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \s3\qc \li0\ri0\keepn\nowidctlpar\faauto\outlinelevel2\rin0\lin0\itap0 +\f36\fs24\lang1033\langfe1031\cgrid\langnp1033\langfenp1031 {\b\fs22\insrsid11812474\charrsid11812474 Steinberg VST PlugIns SDK Licensing Agreement +\par }\pard\plain \qc \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 \f36\fs24\lang1033\langfe1031\cgrid\langnp1033\langfenp1031 {\fs22\insrsid11812474\charrsid11812474 (Version \'942.4\endash January 2006\'94)}{ +\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par }\pard \ql \li20\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin20\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par }{\fs22\insrsid11812474\charrsid11812474 between}{\b\fs22\insrsid11812474\charrsid11812474 +\par +\par }\pard\plain \s4\qc \li20\ri4\keepn\nowidctlpar\tx720\tx9440\faauto\outlinelevel3\rin4\lin20\itap0 \f36\fs24\lang1033\langfe1031\cgrid\langnp1033\langfenp1031 {\b\fs22\lang1031\langfe1031\langnp1031\insrsid11812474 STEINBERG MEDIA TECHNOLOGIES GMBH +\par }\pard\plain \ql \li20\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin20\itap0 \f36\fs24\lang1033\langfe1031\cgrid\langnp1033\langfenp1031 {\b\fs22\lang1031\langfe1031\langnp1031\insrsid11812474 +\par }{\fs22\lang1031\langfe1031\langnp1031\insrsid11812474\charrsid11812474 residing at +\par }{\b\fs22\lang1031\langfe1031\langnp1031\insrsid11812474\charrsid11812474 +\par }{\fs22\lang1031\langfe1031\langnp1031\insrsid11812474\charrsid11812474 Neuer Hoeltigbaum 22 - 32 , +\par }{\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 22143 Hamburg +\par GERMANY +\par }\pard \qr \li20\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin20\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 - Steinberg - +\par }\pard \ql \li20\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin20\itap0 {\b\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 and +\par }\pard \ql \li0\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin0\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par }\pard \qc \li20\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin20\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 .......................................... +\par }\pard \ql \li0\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin0\itap0 {\b\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par }\pard \ql \li20\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin20\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 residing at +\par ............................... +\par ............................... +\par ............................... +\par }\pard \qr \li20\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin20\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 - Licensee- }{\fs22\insrsid11812474 +\par }\pard \ql \li0\ri0\nowidctlpar\tx709\faauto\rin0\lin0\itap0 {\b\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par }\pard \ql \fi-709\li709\ri0\nowidctlpar\tx709\faauto\rin0\lin709\itap0 {\b\caps\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par \'a7 1\tab }{\b\caps\fs22\insrsid11812474 Object of the Agreement +\par }{\fs22\insrsid11812474 +\par {\pntext\pard\plain\f36\fs22\lang1033\langfe1031\langnp1033 \hich\af36\dbch\af0\loch\f36 1.\tab}}\pard \ql \fi-705\li705\ri0\nowidctlpar\tx705{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec\pnf36\pnstart1\pnindent360 {\pntxta .}} +\faauto\ls1\rin0\lin705\itap0\pararsid11812474 {\fs22\insrsid11812474 The object of this agreement consists of the Steinberg VST PlugIn Software Development Kit }{\b\fs22\ul\insrsid11812474 version 2.4,}{\fs22\insrsid11812474 + comprising of documentation, example code, and several VST PlugIn examples. These are described hereinafter as the }{\b\fs22\insrsid11812474 "Licensed Software Developer Kit"}{\fs22\insrsid11812474 . +\par }\pard \ql \fi-709\li709\ri0\nowidctlpar\tx709\faauto\rin0\lin709\itap0 {\fs22\insrsid11812474 2.\tab Steinberg is the holder of all copyrights, rights of ownership, and other rights concerning the Licensed Software Developer Kit.\line +\par }\pard \ql \fi-709\li709\ri4\nowidctlpar\tx709\faauto\rin4\lin709\itap0 {\fs22\insrsid11812474 3.\tab The }{\b\fs22\insrsid11812474 Licensed Software Developer Kit}{\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 contains information about +\par {\pntext\pard\plain\f3\fs22\lang2057\langfe1031\langnp2057 \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \ql \fi-360\li1068\ri4\nowidctlpar\tx1068\tx9440{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnindent360 {\pntxtb \'b7}} +\faauto\ls2\rin4\lin1068\itap0\pararsid11812474 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 how to develop a VST PlugIn, and +\par {\pntext\pard\plain\f3\fs22\lang2057\langfe1031\langnp2057 \loch\af3\dbch\af0\hich\f3 \'b7\tab}how to extend an application so that it can host VST PlugIns, that are developed under the VST PlugIn Specification, either by Steinberg or any Third-Parties. + +\par }\pard \ql \li708\ri4\nowidctlpar\tx9440\faauto\rin4\lin708\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par Currently the following computer platforms are supported: +\par }\pard \qj \li708\ri4\nowidctlpar\tx9440\faauto\rin4\lin708\itap0\pararsid11812474 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 - Apple Macintosh }{\fs22\lang2057\langfe1031\langnp2057\insrsid11812474\charrsid7554886 Computers under the Mac OS}{ +\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 9.x and Mac OS10.x}{\fs22\lang2057\langfe1031\langnp2057\insrsid11812474\charrsid7554886 , +\par - }{\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 Windows 95/98/2000}{\fs22\lang2057\langfe1031\langnp2057\insrsid11812474\charrsid7554886 and }{\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 Windows XP (32 and 64bit)}{ +\fs22\lang2057\langfe1031\langnp2057\insrsid11812474\charrsid7554886 +\par }\pard \ql \li0\ri0\nowidctlpar\tx709\faauto\rin0\lin0\itap0 {\b\caps\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 \page \'a7 2\tab Granting of Rights\tab +\par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\b\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par }\pard \ql \fi-709\li709\ri0\nowidctlpar\faauto\rin0\lin709\itap0 {\fs22\insrsid11812474 1.\tab +Steinberg hereby grants to the Licensee a non-exclusive, worldwide, nontransferable license during the term of this agreement to use the VST PlugIn Interface Technology solely: +\par {\pntext\pard\plain\f36\fs22\lang1033\langfe1031\langnp1033 \hich\af36\dbch\af0\loch\f36 (i)\tab}}\pard \ql \fi-720\li1428\ri0\nowidctlpar\tx1428{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pnlcrm\pnf36\pnstart1\pnindent360 {\pntxtb (}{\pntxta )}} +\faauto\ls3\rin0\lin1428\itap0\pararsid11812474 {\fs22\insrsid11812474 for the development of VST PlugIns and/or for the development of an application that can host VST PlugIns, +\par }\pard \ql \li708\ri0\nowidctlpar{\*\pn \pnlvlcont\ilvl12\ls0\pnrnot0\pndec\pnf36\pnstart1 }\faauto\ilvl12\rin0\lin708\itap0\pararsid11812474 {\fs22\insrsid11812474 +\par {\pntext\pard\plain\f36\fs22\lang1033\langfe1031\langnp1033 \hich\af36\dbch\af0\loch\f36 (ii)\tab}}\pard \ql \fi-720\li1428\ri0\nowidctlpar\tx1428{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pnlcrm\pnf36\pnstart1\pnindent360 {\pntxtb (}{\pntxta )}} +\faauto\ls3\rin0\lin1428\itap0\pararsid11812474 {\fs22\insrsid11812474 to publish a product under his own name that is using parts or all of the Licensed Software Developer Kit. +\par }\pard \ql \li0\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin0\itap0 {\fs22\insrsid11812474 +\par {\pntext\pard\plain\f36\fs22\lang2057\langfe1031\langnp2057 \hich\af36\dbch\af0\loch\f36 2.\tab}}\pard \ql \fi-705\li705\ri4\nowidctlpar\tx705\tx9440{\*\pn \pnlvlbody\ilvl0\ls4\pnrnot0\pndec\pnf36\pnstart2\pnindent360 {\pntxta .}} +\faauto\ls4\rin4\lin705\itap0\pararsid11812474 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 The Licensee has no permission to sell, licence, give-away and/or distribute the }{\fs22\insrsid11812474 +VST PlugIn Interface technology or parts of it in anyway, on any medium, including the Internet, to any other person, including sub-licensors of the Licensee or companies where the Licensee has any involvement.}{ +\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 }{\fs22\insrsid11812474 This includes re-working this specification, or reverse-engineering any products based upon this specification. }{\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par }\pard \ql \li0\ri4\nowidctlpar\tx9440{\*\pn \pnlvlcont\ilvl12\ls0\pnrnot0\pndec\pnf36\pnstart1 }\faauto\ilvl12\rin4\lin0\itap0\pararsid11812474 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par {\pntext\pard\plain\f36\fs22\lang2057\langfe1031\langnp2057 \hich\af36\dbch\af0\loch\f36 3.\tab}}\pard \ql \fi-705\li705\ri4\nowidctlpar\tx705\tx9440{\*\pn \pnlvlbody\ilvl0\ls4\pnrnot0\pndec\pnf36\pnstart2\pnindent360 {\pntxta .}} +\faauto\ls4\rin4\lin705\itap0\pararsid11812474 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +The Licensee recognises the value of the goodwill associated with the mark VST PlugIn Technology and acknowledges that such goodwill exclusively belongs to the benefit of Steinberg and belongs to Steinberg. The Licensee warrants that it will not use the m +a +rk VST PlugIn Technology on promotional merchandise, with the exception of demo versions of any of his product making use of this SDK. The Licensee warrants that it will not use the mark VST PlugIn Technology on, or in connection with products obscene, po +rnographic, excessively violent, or otherwise in poor taste. +\par }\pard \ql \li0\ri4\nowidctlpar\tx9440{\*\pn \pnlvlcont\ilvl12\ls0\pnrnot0\pndec\pnf36\pnstart1 }\faauto\ilvl12\rin4\lin0\itap0\pararsid11812474 {\fs22\insrsid11812474 +\par {\pntext\pard\plain\f36\fs22\lang1033\langfe1031\langnp1033 \hich\af36\dbch\af0\loch\f36 4.\tab}}\pard \ql \fi-705\li705\ri4\nowidctlpar\tx705\tx9440{\*\pn \pnlvlbody\ilvl0\ls4\pnrnot0\pndec\pnf36\pnstart2\pnindent360 {\pntxta .}} +\faauto\ls4\rin4\lin705\itap0\pararsid11812474 {\fs22\insrsid11812474 +If the Licensee is developing a product, that is using parts or all of the Licensed Software Developer Kit, and this product is not published under his own name but will be published by anot +her company, the Licensee is under the obligation to inform the publisher of the resulting product, that he too must be a party to this Licensing Agreement. The publisher has to completely agree with the VST PlugIn SDK Licensing Agreement. If the publishe +r is not in agreement with these conditions, the publisher is not allowed to distribute this product which is using parts or all of the Licensed Software Developer Kit. +\par }\pard \ql \li0\ri4\nowidctlpar\tx9440{\*\pn \pnlvlcont\ilvl12\ls0\pnrnot0\pndec\pnf36\pnstart1 }\faauto\ilvl12\rin4\lin0\itap0\pararsid11812474 {\fs22\insrsid11812474 +\par {\pntext\pard\plain\f36\fs22\lang1033\langfe1031\langnp1033 \hich\af36\dbch\af0\loch\f36 5.\tab}}\pard \ql \fi-705\li705\ri4\nowidctlpar\tx705\tx9440{\*\pn \pnlvlbody\ilvl0\ls4\pnrnot0\pndec\pnf36\pnstart2\pnindent360 {\pntxta .}} +\faauto\ls4\rin4\lin705\itap0\pararsid11812474 {\fs22\insrsid11812474 If the Licensee is planning to publish a product, that is using parts or all of th +e Licensed Software Developer Kit, the Licensee is under the obligation to inform Steinberg about it by sending the signed \lquote Steinberg VST PlugIns SDK Licensing Agreement\rquote to Steinberg, either by mail, or by fax. +\par }\pard \qj \li0\ri4\nowidctlpar\tx9440\faauto\rin4\lin0\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par }\pard \ql \li0\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin0\itap0 {\b\caps\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par }\pard \ql \li0\ri0\nowidctlpar\tx709\faauto\rin0\lin0\itap0 {\b\caps\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par \page \'a7 3\tab Use Of Trademarks +\par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\fs22\insrsid11812474 +\par }\pard \ql \li705\ri4\nowidctlpar\tx9440\faauto\rin4\lin705\itap0 {\fs22\insrsid11812474 If the Licensee is publishing a product under his own name that is using parts or all of the Licensed Software Developer Kit, the }{ +\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 Licensee shall be under an obligation to refer to Steinberg\rquote s copyrights and trademarks in the following way: +\par }{\fs22\insrsid11812474 +\par a) Steinberg\rquote s copyright notice should be included in the documentation, regardless of the media used to supply the documentation. +\par Copyright notice:\'94}{\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 VST is a trademark of Steinberg Media Technologies GmbH\'94 +\par }{\fs22\insrsid11812474 b) The VST Logo has to appear on packages and promotional material. +\par }\pard \ql \li709\ri4\nowidctlpar\tx709\tx9440\faauto\rin4\lin709\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 The VST Logo artwork and usage guidelines are part of the }{\b\fs22\insrsid11812474 "Licensed Software Developer Kit" }{ +\fs22\insrsid11812474 and}{\b\fs22\insrsid11812474 }{\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 are supplied by Steinberg in digital format. +\par }\pard \ql \li705\ri4\nowidctlpar\tx9440\faauto\rin4\lin705\itap0 {\fs22\insrsid11812474 +\par c) In the \lquote about box\rquote of the product in one of the following formats: +\par }\pard \ql \li0\ri4\nowidctlpar\tx993\faauto\rin4\lin0\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 \tab - VST PlugIn Technology by Steinberg, +\par }\pard \ql \li993\ri4\nowidctlpar\tx9440\faauto\rin4\lin993\itap0\pararsid11812474 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 - VST PlugIn Interface Technology by Ste}{\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +inberg Media Technologies GmbH.}{\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par }\pard \ql \li0\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin0\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par }\pard \ql \li0\ri4\nowidctlpar\tx709\tx9440\faauto\rin4\lin0\itap0 {\b\caps\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 \'a7 4\tab Fees and Royalties +\par }\pard \ql \fi-9\li0\ri4\nowidctlpar\tx709\tx9440\faauto\rin4\lin0\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par }\pard \ql \fi-709\li709\ri4\nowidctlpar\tx640\tx9440\faauto\rin4\lin709\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 \tab \tab +The Licensee shall not obligated to pay to Steinberg any fees or royalties with respect to the VST PlugIn Interface technology. +\par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\fs22\insrsid11812474 \line +\par }\pard \ql \li0\ri0\nowidctlpar\tx709\faauto\rin0\lin0\itap0 {\b\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 \'a7 5\tab }{\b\caps\fs22\insrsid11812474 Liability for Consequential Damages +\par }\pard \ql \li708\ri0\nowidctlpar\tx709\faauto\rin0\lin708\itap0 {\fs22\insrsid11812474 \line +Steinberg will not be liable for any consequential, special, incidental, direct or indirect damages of any kind, including the loss of data, damage of data-storage-devices, or any loss or damage to other programs being used, arising out of the use of the +Licensed Software Developer Kit or any software developed by the Licensee, including any future up-dates.\line \line +\par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\b\fs22\insrsid11812474 \'a7 6\tab }{\b\caps\fs22\insrsid11812474 Product Warranty}{\caps\fs22\insrsid11812474 +\par +\par }\pard \qj \li20\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin20\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 1.\tab Steinberg licences the VST PlugIn Interface Technology on an "AS IS" basis. +\par }\pard \qj \li720\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin720\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 Steinberg makes no warranties, express or implie +d, including without limitation the implied warranties of merchantability and fitness for a particular purpose, regarding the VST PlugIn Interface technology or operation and use in combination with the Licensee\rquote +s program. Neither the Licensee, its employees, agents, or Distributors have any right to make any other representation, warranty or promise with respect to the VST PlugIn Interface technology. +\par }\pard \ql \li729\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin729\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par }\pard \qj \li0\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin0\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 2.\tab In no event shall Steinberg be liable for incidental or consequential damages +\par }\pard \qj \li720\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin720\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 arising from the use, or + distribution of the VST PlugIn-Interface technology by the Licensee, whether theory of contract, product liability or otherwise. +\par }\pard \ql \li729\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin729\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 All claims for indemnification for losses by the Licensee itself or by third parties shall be excluded. +\par }\pard \ql \fi-709\li709\ri0\nowidctlpar\faauto\rin0\lin709\itap0 {\fs22\insrsid11812474 +\par 3.\tab Steinberg may release improved versions of the Licensed Software Developer Kit but offers no commitment whatsoever those releases will occur at anytime or for anybody. +\par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\fs22\insrsid11812474 +\par +\par }{\b\caps\fs22\insrsid11812474 \'a7 7\tab Infringement +\par +\par }\pard \qj \li708\ri0\nowidctlpar\faauto\rin0\lin708\itap0 {\fs22\insrsid11812474 Steinberg represents and warrants that, as of the date of this Agreement, it is not +aware of any claim or action alleging that VST, the VST PlugIn Interface Technology, or the content of the }{\b\fs22\insrsid11812474 Licensed Software Developer Kit }{\fs22\insrsid11812474 +infringes any third party intellectual property right. Steinberg, however, disclaims any obligation of defense or ind +emnify of the Licensee or its customer with respect to any such claim or action, or otherwise arising out of this agreement. Steinberg shall have no liability arising out of any such actual or alleged intellectual property infringement. +\par The Licensee, however, shall promptly notify Steinberg, in writing, of each such infringement claim of which the Licensee becomes aware. +\par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\fs22\insrsid11812474 +\par }\pard \ql \li20\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin20\itap0 {\b\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par }\pard \ql \fi-20\li0\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin0\itap0 {\b\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 \'a7 8\tab RELATIONSHIP BETWEEN THE TWO PARTIES +\par }\pard \qj \li720\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin720\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par Nothing stated in this Agreement will be construed as creating the relationships of joint ventures, partners, principal, agent or whatsoever. The Licensee shall not be entitled to represent Steinberg or to make statements on its behalf. +\par }\pard \qj \li0\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin0\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par +\par }\pard \ql \li0\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin0\itap0 {\b\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 \'a7 9\tab TERM OF THE AGREEMENT +\par }\pard \ql \li20\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin20\itap0 {\b\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par }{\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 1.\tab The Agreement shall run for an unlimited period. +\par }\pard \ql \li0\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin0\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par }\pard \qj \li0\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin0\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 2.\tab If the Licensee is in breach of any of its obligations set out in this agreement, +\par }\pard \qj \li720\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin720\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +Steinberg shall be entitled to terminate this agreement immediately in writing and inform the Licensee verbally about it. In such a case, this license and all the rights granted to the Licensee herein shall immediately cease.}{ +\b\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par }\pard \ql \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\fs22\insrsid11812474 \line +\par }\pard \ql \li0\ri0\nowidctlpar\tx709\faauto\rin0\lin0\itap0 {\b\caps\fs22\insrsid11812474 \'a7 10\tab }{\b\caps\fs22\expnd0\expndtw-3\insrsid11812474 Final provisions}{\fs22\insrsid11812474 \line +\par {\pntext\pard\plain\f36\fs22\lang1033\langfe1031\langnp1033 \hich\af36\dbch\af0\loch\f36 1.\tab}}\pard \ql \fi-705\li705\ri0\nowidctlpar\tx705{\*\pn \pnlvlbody\ilvl0\ls5\pnrnot0\pndec\pnf36\pnstart1\pnindent360 {\pntxta .}} +\faauto\ls5\rin0\lin705\itap0\pararsid11812474 {\fs22\insrsid11812474 This agreement and the interpreta\-tion thereof shall be exclusively subject to the laws of the Federal Republic of Germany. +\par }\pard \ql \li0\ri0\nowidctlpar{\*\pn \pnlvlcont\ilvl12\ls0\pnrnot0\pndec\pnf36\pnstart1 }\faauto\ilvl12\rin0\lin0\itap0\pararsid11812474 {\fs22\insrsid11812474 +\par {\pntext\pard\plain\f36\fs22\lang1033\langfe1031\langnp1033 \hich\af36\dbch\af0\loch\f36 2.\tab}}\pard \ql \fi-705\li705\ri0\nowidctlpar\tx705{\*\pn \pnlvlbody\ilvl0\ls5\pnrnot0\pndec\pnf36\pnstart1\pnindent360 {\pntxta .}} +\faauto\ls5\rin0\lin705\itap0\pararsid11812474 {\fs22\insrsid11812474 +The Licensee declares himself to be in agreement with the use of any personal data obtained through this licensing relationship by Steinberg for its own company purposes, and for the purposes of its Company Group, within the meaning of the relevant Data P +rotection laws. +\par }\pard \qj \li0\ri0\nowidctlpar{\*\pn \pnlvlcont\ilvl12\ls0\pnrnot0\pndec\pnf36\pnstart1 }\faauto\ilvl12\rin0\lin0\itap0\pararsid11812474 {\fs22\insrsid11812474 +\par {\pntext\pard\plain\f36\fs22\lang1033\langfe1031\langnp1033 \hich\af36\dbch\af0\loch\f36 3.\tab}}\pard \qj \fi-705\li705\ri0\nowidctlpar\tx709{\*\pn \pnlvlbody\ilvl0\ls5\pnrnot0\pndec\pnf36\pnstart1\pnindent360 {\pntxta .}} +\faauto\ls5\rin0\lin705\itap0\pararsid11812474 {\fs22\insrsid11812474 +If any one stipulation of this License contract should be or become invalid, completely or in part, this shall not affect the validity of the remaining stipulations. The parties undertake instead to replace the invalid stipulations wit +h a valid regulation which comes as closely as possible to the purpose originally intended. +\par }\pard \qj \li0\ri0\nowidctlpar{\*\pn \pnlvlcont\ilvl12\ls0\pnrnot0\pndec\pnf36\pnstart1 }\faauto\ilvl12\rin0\lin0\itap0\pararsid11812474 {\fs22\insrsid11812474 +\par {\pntext\pard\plain\f36\fs22\lang2057\langfe1031\langnp2057 \hich\af36\dbch\af0\loch\f36 4.\tab}}\pard \qj \fi-705\li705\ri4\nowidctlpar\tx705\tx9440{\*\pn \pnlvlbody\ilvl0\ls5\pnrnot0\pndec\pnf36\pnstart1\pnindent360 {\pntxta .}} +\faauto\ls5\rin4\lin705\itap0\pararsid11812474 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +Amendments, supplements and notices of termination of this agreement must be made in writing. The rescission of this agreement or an alteration to the requirement of the written form must also be made in writing. Sub\- +sidiary agreements have not been concluded. +\par }\pard \qj \li0\ri4\nowidctlpar\tx9440{\*\pn \pnlvlcont\ilvl12\ls0\pnrnot0\pndec\pnf36\pnstart1 }\faauto\ilvl12\rin4\lin0\itap0\pararsid11812474 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par {\pntext\pard\plain\f36\fs22\lang2057\langfe1031\langnp2057 \hich\af36\dbch\af0\loch\f36 5.\tab}}\pard \qj \fi-705\li705\ri4\nowidctlpar\tx720\tx9440{\*\pn \pnlvlbody\ilvl0\ls5\pnrnot0\pndec\pnf36\pnstart1\pnindent360 {\pntxta .}} +\faauto\ls5\rin4\lin705\itap0\pararsid11812474 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +Place of jurisdiction for all disputes is Hamburg. In addition, each party can bring an action against the other party at the general place of jurisdiction of the other party. +\par }\pard \qj \li0\ri4\nowidctlpar\tx9440{\*\pn \pnlvlcont\ilvl12\ls0\pnrnot0\pndec\pnf36\pnstart1 }\faauto\ilvl12\rin4\lin0\itap0\pararsid11812474 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par {\pntext\pard\plain\f36\fs22\lang2057\langfe1031\langnp2057 \hich\af36\dbch\af0\loch\f36 6.\tab}}\pard \qj \fi-705\li705\ri4\nowidctlpar\tx720\tx9440{\*\pn \pnlvlbody\ilvl0\ls5\pnrnot0\pndec\pnf36\pnstart1\pnindent360 {\pntxta .}} +\faauto\ls5\rin4\lin705\itap0\pararsid11812474 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 This agreement does not require a specific form (e.g. recording by a notary). +\par }\pard \qj \li0\ri0\nowidctlpar\faauto\rin0\lin0\itap0 {\fs22\insrsid11812474 +\par }\pard \ql \li0\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin0\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par }\pard\plain \s5\ql \li20\ri4\keepn\nowidctlpar\tx720\tx9440\faauto\outlinelevel4\rin4\lin20\itap0 \f36\fs24\lang1033\langfe1031\cgrid\langnp1033\langfenp1031 {\b\caps\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par +\par +\par +\par +\par }{\b\caps\fs22\lang1031\langfe1031\langnp1031\insrsid11812474 - Steinberg - +\par }\pard\plain \ql \li20\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin20\itap0 \f36\fs24\lang1033\langfe1031\cgrid\langnp1033\langfenp1031 {\fs22\lang1031\langfe1031\langnp1031\insrsid11812474 Media Technologies GmbH +\par +\par }\pard \ql \li20\ri4\nowidctlpar\tx720\tx2835\tx9440\faauto\rin4\lin20\itap0 {\fs22\insrsid11812474\charrsid11812474 By: \tab \tab .......................................... +\par }{\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 Printed Signature\tab .......................................... +\par Title\tab \tab .......................................... +\par Date executed\tab .......................................... +\par +\par }{\fs22\lang1031\langfe1031\langnp1031\insrsid11812474 By: \tab \tab .......................................... +\par }{\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 Printed Signature\tab .......................................... +\par Title\tab \tab .......................................... +\par Date executed\tab .......................................... +\par +\par }{\b\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par - }{\b\caps\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 Licensee}{\b\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 - +\par }{\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par By: \tab \tab .......................................... +\par Printed Signature\tab .......................................... +\par Title\tab \tab .......................................... +\par Date executed\tab .......................................... +\par }\pard \ql \li20\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin20\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par }\pard \ql \li0\ri4\nowidctlpar\faauto\rin4\lin0\itap0 {\fs22\insrsid11812474 \page }{\b\fs22\insrsid11812474 -Licensee- Technical Contact}{\b\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par +\par }\pard\plain \s6\ql \li0\ri4\keepn\nowidctlpar\tx2835\faauto\outlinelevel5\rin4\lin0\itap0 \f36\fs24\lang1033\langfe1031\cgrid\langnp1033\langfenp1031 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 Name:\tab +------------------------------------------------------- +\par }\pard\plain \ql \li0\ri4\nowidctlpar\faauto\rin4\lin0\itap0 \f36\fs24\lang1033\langfe1031\cgrid\langnp1033\langfenp1031 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par +\par }\pard\plain \s6\ql \li0\ri4\keepn\nowidctlpar\tx2835\faauto\outlinelevel5\rin4\lin0\itap0 \f36\fs24\lang1033\langfe1031\cgrid\langnp1033\langfenp1031 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 Address:\tab +------------------------------------------------------- +\par }\pard\plain \ql \li0\ri4\nowidctlpar\faauto\rin4\lin0\itap0 \f36\fs24\lang1033\langfe1031\cgrid\langnp1033\langfenp1031 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par +\par }\pard\plain \s6\ql \li0\ri4\keepn\nowidctlpar\tx2835\faauto\outlinelevel5\rin4\lin0\itap0 \f36\fs24\lang1033\langfe1031\cgrid\langnp1033\langfenp1031 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 Phone:\tab +------------------------------------------------------- +\par }\pard\plain \ql \li0\ri4\nowidctlpar\faauto\rin4\lin0\itap0 \f36\fs24\lang1033\langfe1031\cgrid\langnp1033\langfenp1031 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par +\par }\pard\plain \s6\ql \li0\ri4\keepn\nowidctlpar\tx2835\faauto\outlinelevel5\rin4\lin0\itap0 \f36\fs24\lang1033\langfe1031\cgrid\langnp1033\langfenp1031 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 Fax:\tab +------------------------------------------------------- +\par }\pard\plain \ql \li0\ri4\nowidctlpar\faauto\rin4\lin0\itap0 \f36\fs24\lang1033\langfe1031\cgrid\langnp1033\langfenp1031 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par +\par }\pard\plain \s6\ql \li0\ri4\keepn\nowidctlpar\tx2835\faauto\outlinelevel5\rin4\lin0\itap0 \f36\fs24\lang1033\langfe1031\cgrid\langnp1033\langfenp1031 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 Email:\tab +------------------------------------------------------- +\par }\pard\plain \ql \li0\ri4\nowidctlpar\faauto\rin4\lin0\itap0 \f36\fs24\lang1033\langfe1031\cgrid\langnp1033\langfenp1031 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par }\pard \ql \li20\ri4\nowidctlpar\tx720\tx9440\faauto\rin4\lin20\itap0 {\fs22\lang2057\langfe1031\langnp2057\insrsid11812474 +\par }\pard \qj \li0\ri0\nowidctlpar\tx709\faauto\rin0\lin0\itap0 {\fs22\insrsid11812474 +\par }} \ No newline at end of file diff --git a/doc/gfx/folder.gif b/doc/gfx/folder.gif new file mode 100644 index 0000000..391cfee Binary files /dev/null and b/doc/gfx/folder.gif differ diff --git a/doc/gfx/mac.gif b/doc/gfx/mac.gif new file mode 100644 index 0000000..cf351cd Binary files /dev/null and b/doc/gfx/mac.gif differ diff --git a/doc/gfx/vstpluglogo_small.jpg b/doc/gfx/vstpluglogo_small.jpg new file mode 100644 index 0000000..b6672e0 Binary files /dev/null and b/doc/gfx/vstpluglogo_small.jpg differ diff --git a/doc/gfx/win.gif b/doc/gfx/win.gif new file mode 100644 index 0000000..f114497 Binary files /dev/null and b/doc/gfx/win.gif differ diff --git a/doc/html/Blocksizechange.gif b/doc/html/Blocksizechange.gif new file mode 100644 index 0000000..bf5d3f6 Binary files /dev/null and b/doc/html/Blocksizechange.gif differ diff --git a/doc/html/ControlChanged.gif b/doc/html/ControlChanged.gif new file mode 100644 index 0000000..363df0d Binary files /dev/null and b/doc/html/ControlChanged.gif differ diff --git a/doc/html/IOchange.gif b/doc/html/IOchange.gif new file mode 100644 index 0000000..7a0e2b7 Binary files /dev/null and b/doc/html/IOchange.gif differ diff --git a/doc/html/Initialisation.gif b/doc/html/Initialisation.gif new file mode 100644 index 0000000..eae1940 Binary files /dev/null and b/doc/html/Initialisation.gif differ diff --git a/doc/html/Offlineprocessing.gif b/doc/html/Offlineprocessing.gif new file mode 100644 index 0000000..14c8b3b Binary files /dev/null and b/doc/html/Offlineprocessing.gif differ diff --git a/doc/html/Sampleratechange.gif b/doc/html/Sampleratechange.gif new file mode 100644 index 0000000..4d982d7 Binary files /dev/null and b/doc/html/Sampleratechange.gif differ diff --git a/doc/html/SpeakerarrangementnegotiationforVSTfx.gif b/doc/html/SpeakerarrangementnegotiationforVSTfx.gif new file mode 100644 index 0000000..5d79765 Binary files /dev/null and b/doc/html/SpeakerarrangementnegotiationforVSTfx.gif differ diff --git a/doc/html/Termination.gif b/doc/html/Termination.gif new file mode 100644 index 0000000..b172288 Binary files /dev/null and b/doc/html/Termination.gif differ diff --git a/doc/html/TurnOff.gif b/doc/html/TurnOff.gif new file mode 100644 index 0000000..993729f Binary files /dev/null and b/doc/html/TurnOff.gif differ diff --git a/doc/html/TurnOn.gif b/doc/html/TurnOn.gif new file mode 100644 index 0000000..0c1c0fd Binary files /dev/null and b/doc/html/TurnOn.gif differ diff --git a/doc/html/aeffect_8h.html b/doc/html/aeffect_8h.html new file mode 100644 index 0000000..aed8f93 --- /dev/null +++ b/doc/html/aeffect_8h.html @@ -0,0 +1,786 @@ + + +VST SDK 2.4: aeffect.h File Reference + + + + +
+
+
+
+ +

aeffect.h File Reference

#include <string.h>
+#include <stdint.h>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Classes

struct  AEffect
struct  ERect

Defines

#define VSTCALLBACK
#define VST_2_1_EXTENSIONS   1
 Version 2.1 extensions (08-06-2000).
#define VST_2_2_EXTENSIONS   1
 Version 2.2 extensions (08-06-2001).
#define VST_2_3_EXTENSIONS   1
 Version 2.3 extensions (20-05-2003).
#define kVstVersion   2400
#define VST_FORCE_DEPRECATED   VST_2_4_EXTENSIONS
#define DECLARE_VST_DEPRECATED(identifier)   __##identifier##Deprecated
#define VST_64BIT_PLATFORM   _WIN64 || __LP64__
#define CCONST(a, b, c, d)   ((((VstInt32)a) << 24) | (((VstInt32)b) << 16) | (((VstInt32)c) << 8) | (((VstInt32)d) << 0))
#define kEffectMagic   CCONST ('V', 's', 't', 'P')

Typedefs

typedef int16_t VstInt16
 16 bit integer type
typedef int32_t VstInt32
 32 bit integer type
typedef int64_t VstInt64
 64 bit integer type
typedef VstInt32 VstIntPtr
 platform-dependent integer type, same size as pointer

Enumerations

enum  VstAEffectFlags {
+  effFlagsHasEditor = 1 << 0, +effFlagsCanReplacing = 1 << 4, +effFlagsProgramChunks = 1 << 5, +effFlagsIsSynth = 1 << 8, +
+  effFlagsNoSoundInStop = 1 << 9, +effFlagsCanDoubleReplacing = 1 << 12, +effFlagsHasClip = 1 << 1, +effFlagsHasVu = 1 << 2, +
+  effFlagsCanMono = 1 << 3, +effFlagsExtIsAsync = 1 << 10, +effFlagsExtHasBuffer = 1 << 11 +
+ }
enum  AEffectOpcodes {
+  effOpen = 0, +effClose, +effSetProgram, +effGetProgram, +
+  effSetProgramName, +effGetProgramName, +effGetParamLabel, +effGetParamDisplay, +
+  effGetParamName, +effGetVu, +effSetSampleRate, +effSetBlockSize, +
+  effMainsChanged, +effEditGetRect, +effEditOpen, +effEditClose, +
+  effEditDraw, +effEditMouse, +effEditKey, +effEditIdle, +
+  effEditTop, +effEditSleep, +effIdentify, +effGetChunk, +
+  effSetChunk, +effNumOpcodes +
+ }
enum  AudioMasterOpcodes {
+  audioMasterAutomate = 0, +audioMasterVersion, +audioMasterCurrentId, +audioMasterIdle, +
+  audioMasterPinConnected +
+ }
enum  VstStringConstants {
+  kVstMaxProgNameLen = 24, +kVstMaxParamStrLen = 8, +kVstMaxVendorStrLen = 64, +kVstMaxProductStrLen = 64, +
+  kVstMaxEffectNameLen = 32 +
+ }

Functions

char * vst_strncpy (char *dst, const char *src, size_t maxLen)
char * vst_strncat (char *dst, const char *src, size_t maxLen)
template<class T>
T * FromVstPtr (VstIntPtr &arg)
template<class T>
VstIntPtr ToVstPtr (T *ptr)
+

Define Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define CCONST (a,
b,
c,
 )    ((((VstInt32)a) << 24) | (((VstInt32)b) << 16) | (((VstInt32)c) << 8) | (((VstInt32)d) << 0))
+
+
+ +

+Four Character Constant (for AEffect->uniqueID) +

+

+ +

+
+ + + + + + + + + +
#define DECLARE_VST_DEPRECATED (identifier   )    __##identifier##Deprecated
+
+
+ +

+Declares identifier as deprecated. +

+

+ +

+
+ + + + +
#define kEffectMagic   CCONST ('V', 's', 't', 'P')
+
+
+ +

+AEffect magic number +

+

+ +

+
+ + + + +
#define kVstVersion   2400
+
+
+ +

+Current VST Version +

+

+ +

+
+ + + + +
#define VST_2_1_EXTENSIONS   1
+
+
+ +

+Version 2.1 extensions (08-06-2000). +

+Define SDK Version (you can generate different versions (from 2.0 to 2.4) of this SDK by setting the unwanted extensions to 0). +

+

+ +

+
+ + + + +
#define VST_2_2_EXTENSIONS   1
+
+
+ +

+Version 2.2 extensions (08-06-2001). +

+ +

+

+ +

+
+ + + + +
#define VST_2_3_EXTENSIONS   1
+
+
+ +

+Version 2.3 extensions (20-05-2003). +

+ +

+

+ +

+
+ + + + +
#define VST_64BIT_PLATFORM   _WIN64 || __LP64__
+
+
+ +

+Define for 64 Bit Platform. +

+

+ +

+
+ + + + +
#define VST_FORCE_DEPRECATED   VST_2_4_EXTENSIONS
+
+
+ +

+Disable for Hosts to serve Plug-ins below VST 2.4 +

+

+ +

+
+ + + + +
#define VSTCALLBACK
+
+
+ +

+ +

+

+


Typedef Documentation

+ +
+
+ + + + +
typedef int16_t VstInt16
+
+
+ +

+16 bit integer type +

+ +

+

+ +

+
+ + + + +
typedef int32_t VstInt32
+
+
+ +

+32 bit integer type +

+ +

+

+ +

+
+ + + + +
typedef int64_t VstInt64
+
+
+ +

+64 bit integer type +

+ +

+

+ +

+
+ + + + +
typedef VstInt32 VstIntPtr
+
+
+ +

+platform-dependent integer type, same size as pointer +

+ +

+

+


Enumeration Type Documentation

+ +
+
+ + + + +
enum AEffectOpcodes
+
+
+ +

+Basic dispatcher Opcodes (Host to Plug-in)

Enumerator:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
effOpen  +no arguments +

+

See also:
AudioEffect::open
+
effClose  +no arguments +

+

See also:
AudioEffect::close
+
effSetProgram  +[value]: new program number +

+

See also:
AudioEffect::setProgram
+
effGetProgram  +[return value]: current program number +

+

See also:
AudioEffect::getProgram
+
effSetProgramName  +[ptr]: char* with new program name, limited to kVstMaxProgNameLen +

+

See also:
AudioEffect::setProgramName
+
effGetProgramName  +[ptr]: char buffer for current program name, limited to kVstMaxProgNameLen +

+

See also:
AudioEffect::getProgramName
+
effGetParamLabel  +[ptr]: char buffer for parameter label, limited to kVstMaxParamStrLen +

+

See also:
AudioEffect::getParameterLabel
+
effGetParamDisplay  +[ptr]: char buffer for parameter display, limited to kVstMaxParamStrLen +

+

See also:
AudioEffect::getParameterDisplay
+
effGetParamName  +[ptr]: char buffer for parameter name, limited to kVstMaxParamStrLen +

+

See also:
AudioEffect::getParameterName
+
effGetVu  +
Deprecated:
deprecated in VST 2.4
+
effSetSampleRate  +[opt]: new sample rate for audio processing +

+

See also:
AudioEffect::setSampleRate
+
effSetBlockSize  +[value]: new maximum block size for audio processing +

+

See also:
AudioEffect::setBlockSize
+
effMainsChanged  +[value]: 0 means "turn off", 1 means "turn on" +

+

See also:
AudioEffect::suspend

+AudioEffect::resume

+
effEditGetRect  +[ptr]: ERect** receiving pointer to editor size +

+

See also:
ERect

+AEffEditor::getRect

+
effEditOpen  +[ptr]: system dependent Window pointer, e.g. HWND on Windows +

+

See also:
AEffEditor::open
+
effEditClose  +no arguments +

+

See also:
AEffEditor::close
+
effEditDraw  +
Deprecated:
deprecated in VST 2.4
+
effEditMouse  +
Deprecated:
deprecated in VST 2.4
+
effEditKey  +
Deprecated:
deprecated in VST 2.4
+
effEditIdle  +no arguments +

+

See also:
AEffEditor::idle
+
effEditTop  +
Deprecated:
deprecated in VST 2.4
+
effEditSleep  +
Deprecated:
deprecated in VST 2.4
+
effIdentify  +
Deprecated:
deprecated in VST 2.4
+
effGetChunk  +[ptr]: void** for chunk data address [index]: 0 for bank, 1 for program +

+

See also:
AudioEffect::getChunk
+
effSetChunk  +[ptr]: chunk data [value]: byte size [index]: 0 for bank, 1 for program +

+

See also:
AudioEffect::setChunk
+
effNumOpcodes  +
+
+ +
+

+ +

+
+ + + + +
enum AudioMasterOpcodes
+
+
+ +

+Basic dispatcher Opcodes (Plug-in to Host)

Enumerator:
+ + + + + + +
audioMasterAutomate  +[index]: parameter index [opt]: parameter value +

+

See also:
AudioEffect::setParameterAutomated
+
audioMasterVersion  +[return value]: Host VST version (for example 2400 for VST 2.4) +

+

See also:
AudioEffect::getMasterVersion
+
audioMasterCurrentId  +[return value]: current unique identifier on shell plug-in +

+

See also:
AudioEffect::getCurrentUniqueId
+
audioMasterIdle  +no arguments +

+

See also:
AudioEffect::masterIdle
+
audioMasterPinConnected  +
Deprecated:
deprecated in VST 2.4 r2
+
+
+ +
+

+ +

+
+ + + + +
enum VstAEffectFlags
+
+
+ +

+AEffect flags

Enumerator:
+ + + + + + + + + + + + +
effFlagsHasEditor  +set if the plug-in provides a custom editor
effFlagsCanReplacing  +supports replacing process mode (which should the default mode in VST 2.4)
effFlagsProgramChunks  +program data is handled in formatless chunks
effFlagsIsSynth  +plug-in is a synth (VSTi), Host may assign mixer channels for its outputs
effFlagsNoSoundInStop  +plug-in does not produce sound when input is all silence
effFlagsCanDoubleReplacing  +plug-in supports double precision processing
effFlagsHasClip  +
Deprecated:
deprecated in VST 2.4
+
effFlagsHasVu  +
Deprecated:
deprecated in VST 2.4
+
effFlagsCanMono  +
Deprecated:
deprecated in VST 2.4
+
effFlagsExtIsAsync  +
Deprecated:
deprecated in VST 2.4
+
effFlagsExtHasBuffer  +
Deprecated:
deprecated in VST 2.4
+
+
+ +
+

+ +

+
+ + + + +
enum VstStringConstants
+
+
+ +

+String length limits (in characters excl. 0 byte)

Enumerator:
+ + + + + + +
kVstMaxProgNameLen  +used for effGetProgramName, effSetProgramName, effGetProgramNameIndexed
kVstMaxParamStrLen  +used for effGetParamLabel, effGetParamDisplay, effGetParamName
kVstMaxVendorStrLen  +used for effGetVendorString, audioMasterGetVendorString
kVstMaxProductStrLen  +used for effGetProductString, audioMasterGetProductString
kVstMaxEffectNameLen  +used for effGetEffectName
+
+ +
+

+


Function Documentation

+ +
+
+
+template<class T>
+ + + + + + + + + +
T* FromVstPtr (VstIntPtr arg  )  [inline]
+
+
+ +

+Cast VstIntPtr to pointer. +

+

+ +

+
+
+template<class T>
+ + + + + + + + + +
VstIntPtr ToVstPtr (T *  ptr  )  [inline]
+
+
+ +

+Cast pointer to VstIntPtr. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
char* vst_strncat (char *  dst,
const char *  src,
size_t  maxLen 
) [inline]
+
+
+ +

+String concatenation taking care of null terminator. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
char* vst_strncpy (char *  dst,
const char *  src,
size_t  maxLen 
) [inline]
+
+
+ +

+String copy taking care of null terminator. +

+

+ + + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/aeffectx_8h.html b/doc/html/aeffectx_8h.html new file mode 100644 index 0000000..20b602e --- /dev/null +++ b/doc/html/aeffectx_8h.html @@ -0,0 +1,2072 @@ + + +VST SDK 2.4: aeffectx.h File Reference + + + + +
+
+
+
+ +

aeffectx.h File Reference

#include "aeffect.h"
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Classes

struct  VstEvent
struct  VstEvents
struct  VstMidiEvent
struct  VstMidiSysexEvent
struct  VstTimeInfo
struct  VstVariableIo
struct  VstParameterProperties
struct  VstPinProperties
struct  MidiProgramName
struct  MidiProgramCategory
struct  MidiKeyName
struct  VstSpeakerProperties
struct  VstSpeakerArrangement
struct  VstOfflineTask
struct  VstAudioFile
struct  VstAudioFileMarker
struct  VstWindow
struct  VstKeyCode
struct  VstFileType
struct  VstFileSelect
struct  VstPatchChunkInfo

Enumerations

enum  Vst2StringConstants {
+  kVstMaxNameLen = 64, +kVstMaxLabelLen = 64, +kVstMaxShortLabelLen = 8, +kVstMaxCategLabelLen = 24, +
+  kVstMaxFileNameLen = 100 +
+ }
enum  VstEventTypes {
+  kVstMidiType = 1, +kVstAudioType, +kVstVideoType, +kVstParameterType, +
+  kVstTriggerType, +kVstSysExType +
+ }
enum  VstMidiEventFlags { kVstMidiEventIsRealtime = 1 << 0 + }
enum  VstTimeInfoFlags {
+  kVstTransportChanged = 1, +kVstTransportPlaying = 1 << 1, +kVstTransportCycleActive = 1 << 2, +kVstTransportRecording = 1 << 3, +
+  kVstAutomationWriting = 1 << 6, +kVstAutomationReading = 1 << 7, +kVstNanosValid = 1 << 8, +kVstPpqPosValid = 1 << 9, +
+  kVstTempoValid = 1 << 10, +kVstBarsValid = 1 << 11, +kVstCyclePosValid = 1 << 12, +kVstTimeSigValid = 1 << 13, +
+  kVstSmpteValid = 1 << 14, +kVstClockValid = 1 << 15 +
+ }
enum  VstSmpteFrameRate {
+  kVstSmpte24fps = 0, +kVstSmpte25fps = 1, +kVstSmpte2997fps = 2, +kVstSmpte30fps = 3, +
+  kVstSmpte2997dfps = 4, +kVstSmpte30dfps = 5, +kVstSmpteFilm16mm = 6, +kVstSmpteFilm35mm = 7, +
+  kVstSmpte239fps = 10, +kVstSmpte249fps = 11, +kVstSmpte599fps = 12, +kVstSmpte60fps = 13 +
+ }
enum  VstHostLanguage {
+  kVstLangEnglish = 1, +kVstLangGerman, +kVstLangFrench, +kVstLangItalian, +
+  kVstLangSpanish, +kVstLangJapanese +
+ }
enum  AudioMasterOpcodesX {
+  audioMasterWantMidi = audioMasterPinConnected + 2, +audioMasterGetTime, +audioMasterProcessEvents, +audioMasterSetTime, +
+  audioMasterTempoAt, +audioMasterGetNumAutomatableParameters, +audioMasterGetParameterQuantization, +audioMasterIOChanged, +
+  audioMasterNeedIdle, +audioMasterSizeWindow, +audioMasterGetSampleRate, +audioMasterGetBlockSize, +
+  audioMasterGetInputLatency, +audioMasterGetOutputLatency, +audioMasterGetPreviousPlug, +audioMasterGetNextPlug, +
+  audioMasterWillReplaceOrAccumulate, +audioMasterGetCurrentProcessLevel, +audioMasterGetAutomationState, +audioMasterOfflineStart, +
+  audioMasterOfflineRead, +audioMasterOfflineWrite, +audioMasterOfflineGetCurrentPass, +audioMasterOfflineGetCurrentMetaPass, +
+  audioMasterSetOutputSampleRate, +audioMasterGetOutputSpeakerArrangement, +audioMasterGetVendorString, +audioMasterGetProductString, +
+  audioMasterGetVendorVersion, +audioMasterVendorSpecific, +audioMasterSetIcon, +audioMasterCanDo, +
+  audioMasterGetLanguage, +audioMasterOpenWindow, +audioMasterCloseWindow, +audioMasterGetDirectory, +
+  audioMasterUpdateDisplay, +audioMasterBeginEdit, +audioMasterEndEdit, +audioMasterOpenFileSelector, +
+  audioMasterCloseFileSelector, +audioMasterEditFile, +audioMasterGetChunkFile, +audioMasterGetInputSpeakerArrangement +
+ }
enum  AEffectXOpcodes {
+  effProcessEvents = effSetChunk + 1, +effCanBeAutomated, +effString2Parameter, +effGetNumProgramCategories, +
+  effGetProgramNameIndexed, +effCopyProgram, +effConnectInput, +effConnectOutput, +
+  effGetInputProperties, +effGetOutputProperties, +effGetPlugCategory, +effGetCurrentPosition, +
+  effGetDestinationBuffer, +effOfflineNotify, +effOfflinePrepare, +effOfflineRun, +
+  effProcessVarIo, +effSetSpeakerArrangement, +effSetBlockSizeAndSampleRate, +effSetBypass, +
+  effGetEffectName, +effGetErrorText, +effGetVendorString, +effGetProductString, +
+  effGetVendorVersion, +effVendorSpecific, +effCanDo, +effGetTailSize, +
+  effIdle, +effGetIcon, +effSetViewPosition, +effGetParameterProperties, +
+  effKeysRequired, +effGetVstVersion, +effEditKeyDown, +effEditKeyUp, +
+  effSetEditKnobMode, +effGetMidiProgramName, +effGetCurrentMidiProgram, +effGetMidiProgramCategory, +
+  effHasMidiProgramsChanged, +effGetMidiKeyName, +effBeginSetProgram, +effEndSetProgram, +
+  effGetSpeakerArrangement, +effShellGetNextPlugin, +effStartProcess, +effStopProcess, +
+  effSetTotalSampleToProcess, +effSetPanLaw, +effBeginLoadBank, +effBeginLoadProgram, +
+  effSetProcessPrecision, +effGetNumMidiInputChannels, +effGetNumMidiOutputChannels +
+ }
enum  VstProcessPrecision { kVstProcessPrecision32 = 0, +kVstProcessPrecision64 + }
enum  VstParameterFlags {
+  kVstParameterIsSwitch = 1 << 0, +kVstParameterUsesIntegerMinMax = 1 << 1, +kVstParameterUsesFloatStep = 1 << 2, +kVstParameterUsesIntStep = 1 << 3, +
+  kVstParameterSupportsDisplayIndex = 1 << 4, +kVstParameterSupportsDisplayCategory = 1 << 5, +kVstParameterCanRamp = 1 << 6 +
+ }
enum  VstPinPropertiesFlags { kVstPinIsActive = 1 << 0, +kVstPinIsStereo = 1 << 1, +kVstPinUseSpeaker = 1 << 2 + }
enum  VstPlugCategory {
+  kPlugCategUnknown = 0, +kPlugCategEffect, +kPlugCategSynth, +kPlugCategAnalysis, +
+  kPlugCategMastering, +kPlugCategSpacializer, +kPlugCategRoomFx, +kPlugSurroundFx, +
+  kPlugCategRestoration, +kPlugCategOfflineProcess, +kPlugCategShell, +kPlugCategGenerator, +
+  kPlugCategMaxCount +
+ }
enum  VstMidiProgramNameFlags { kMidiIsOmni = 1 + }
enum  VstSpeakerType {
+  kSpeakerUndefined = 0x7fffffff, +kSpeakerM = 0, +kSpeakerL, +kSpeakerR, +
+  kSpeakerC, +kSpeakerLfe, +kSpeakerLs, +kSpeakerRs, +
+  kSpeakerLc, +kSpeakerRc, +kSpeakerS, +kSpeakerCs = kSpeakerS, +
+  kSpeakerSl, +kSpeakerSr, +kSpeakerTm, +kSpeakerTfl, +
+  kSpeakerTfc, +kSpeakerTfr, +kSpeakerTrl, +kSpeakerTrc, +
+  kSpeakerTrr, +kSpeakerLfe2 +
+ }
enum  VstUserSpeakerType {
+  kSpeakerU32 = -32, +kSpeakerU31, +kSpeakerU30, +kSpeakerU29, +
+  kSpeakerU28, +kSpeakerU27, +kSpeakerU26, +kSpeakerU25, +
+  kSpeakerU24, +kSpeakerU23, +kSpeakerU22, +kSpeakerU21, +
+  kSpeakerU20, +kSpeakerU19, +kSpeakerU18, +kSpeakerU17, +
+  kSpeakerU16, +kSpeakerU15, +kSpeakerU14, +kSpeakerU13, +
+  kSpeakerU12, +kSpeakerU11, +kSpeakerU10, +kSpeakerU9, +
+  kSpeakerU8, +kSpeakerU7, +kSpeakerU6, +kSpeakerU5, +
+  kSpeakerU4, +kSpeakerU3, +kSpeakerU2, +kSpeakerU1 +
+ }
enum  VstSpeakerArrangementType {
+  kSpeakerArrUserDefined = -2, +kSpeakerArrEmpty = -1, +kSpeakerArrMono = 0, +kSpeakerArrStereo, +
+  kSpeakerArrStereoSurround, +kSpeakerArrStereoCenter, +kSpeakerArrStereoSide, +kSpeakerArrStereoCLfe, +
+  kSpeakerArr30Cine, +kSpeakerArr30Music, +kSpeakerArr31Cine, +kSpeakerArr31Music, +
+  kSpeakerArr40Cine, +kSpeakerArr40Music, +kSpeakerArr41Cine, +kSpeakerArr41Music, +
+  kSpeakerArr50, +kSpeakerArr51, +kSpeakerArr60Cine, +kSpeakerArr60Music, +
+  kSpeakerArr61Cine, +kSpeakerArr61Music, +kSpeakerArr70Cine, +kSpeakerArr70Music, +
+  kSpeakerArr71Cine, +kSpeakerArr71Music, +kSpeakerArr80Cine, +kSpeakerArr80Music, +
+  kSpeakerArr81Cine, +kSpeakerArr81Music, +kSpeakerArr102, +kNumSpeakerArr +
+ }
enum  VstOfflineTaskFlags {
+  kVstOfflineUnvalidParameter = 1 << 0, +kVstOfflineNewFile = 1 << 1, +kVstOfflinePlugError = 1 << 10, +kVstOfflineInterleavedAudio = 1 << 11, +
+  kVstOfflineTempOutputFile = 1 << 12, +kVstOfflineFloatOutputFile = 1 << 13, +kVstOfflineRandomWrite = 1 << 14, +kVstOfflineStretch = 1 << 15, +
+  kVstOfflineNoThread = 1 << 16 +
+ }
enum  VstOfflineOption {
+  kVstOfflineAudio, +kVstOfflinePeaks, +kVstOfflineParameter, +kVstOfflineMarker, +
+  kVstOfflineCursor, +kVstOfflineSelection, +kVstOfflineQueryFiles +
+ }
enum  VstAudioFileFlags {
+  kVstOfflineReadOnly = 1 << 0, +kVstOfflineNoRateConversion = 1 << 1, +kVstOfflineNoChannelChange = 1 << 2, +kVstOfflineCanProcessSelection = 1 << 10, +
+  kVstOfflineNoCrossfade = 1 << 11, +kVstOfflineWantRead = 1 << 12, +kVstOfflineWantWrite = 1 << 13, +kVstOfflineWantWriteMarker = 1 << 14, +
+  kVstOfflineWantMoveCursor = 1 << 15, +kVstOfflineWantSelect = 1 << 16 +
+ }
enum  VstVirtualKey {
+  VKEY_BACK = 1, +VKEY_TAB, +VKEY_CLEAR, +VKEY_RETURN, +
+  VKEY_PAUSE, +VKEY_ESCAPE, +VKEY_SPACE, +VKEY_NEXT, +
+  VKEY_END, +VKEY_HOME, +VKEY_LEFT, +VKEY_UP, +
+  VKEY_RIGHT, +VKEY_DOWN, +VKEY_PAGEUP, +VKEY_PAGEDOWN, +
+  VKEY_SELECT, +VKEY_PRINT, +VKEY_ENTER, +VKEY_SNAPSHOT, +
+  VKEY_INSERT, +VKEY_DELETE, +VKEY_HELP, +VKEY_NUMPAD0, +
+  VKEY_NUMPAD1, +VKEY_NUMPAD2, +VKEY_NUMPAD3, +VKEY_NUMPAD4, +
+  VKEY_NUMPAD5, +VKEY_NUMPAD6, +VKEY_NUMPAD7, +VKEY_NUMPAD8, +
+  VKEY_NUMPAD9, +VKEY_MULTIPLY, +VKEY_ADD, +VKEY_SEPARATOR, +
+  VKEY_SUBTRACT, +VKEY_DECIMAL, +VKEY_DIVIDE, +VKEY_F1, +
+  VKEY_F2, +VKEY_F3, +VKEY_F4, +VKEY_F5, +
+  VKEY_F6, +VKEY_F7, +VKEY_F8, +VKEY_F9, +
+  VKEY_F10, +VKEY_F11, +VKEY_F12, +VKEY_NUMLOCK, +
+  VKEY_SCROLL, +VKEY_SHIFT, +VKEY_CONTROL, +VKEY_ALT, +
+  VKEY_EQUALS +
+ }
enum  VstModifierKey { MODIFIER_SHIFT = 1<<0, +MODIFIER_ALTERNATE = 1<<1, +MODIFIER_COMMAND = 1<<2, +MODIFIER_CONTROL = 1<<3 + }
enum  VstFileSelectCommand { kVstFileLoad = 0, +kVstFileSave, +kVstMultipleFilesLoad, +kVstDirectorySelect + }
enum  VstFileSelectType { kVstFileType = 0 + }
enum  VstPanLawType { kLinearPanLaw = 0, +kEqualPowerPanLaw + }
enum  VstProcessLevels {
+  kVstProcessLevelUnknown = 0, +kVstProcessLevelUser, +kVstProcessLevelRealtime, +kVstProcessLevelPrefetch, +
+  kVstProcessLevelOffline +
+ }
enum  VstAutomationStates {
+  kVstAutomationUnsupported = 0, +kVstAutomationOff, +kVstAutomationRead, +kVstAutomationWrite, +
+  kVstAutomationReadWrite +
+ }
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum AEffectXOpcodes
+
+
+ +

+VST 2.x dispatcher Opcodes (Host to Plug-in). Extension of AEffectOpcodes

Enumerator:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
effProcessEvents  +[ptr]: VstEvents* +

+

See also:
AudioEffectX::processEvents
+
effCanBeAutomated  +[index]: parameter index [return value]: 1=true, 0=false +

+

See also:
AudioEffectX::canParameterBeAutomated
+
effString2Parameter  +[index]: parameter index [ptr]: parameter string [return value]: true for success +

+

See also:
AudioEffectX::string2parameter
+
effGetNumProgramCategories  +
Deprecated:
deprecated in VST 2.4
+
effGetProgramNameIndexed  +[index]: program index [ptr]: buffer for program name, limited to kVstMaxProgNameLen [return value]: true for success +

+

See also:
AudioEffectX::getProgramNameIndexed
+
effCopyProgram  +
Deprecated:
deprecated in VST 2.4
+
effConnectInput  +
Deprecated:
deprecated in VST 2.4
+
effConnectOutput  +
Deprecated:
deprecated in VST 2.4
+
effGetInputProperties  +[index]: input index [ptr]: VstPinProperties* [return value]: 1 if supported +

+

See also:
AudioEffectX::getInputProperties
+
effGetOutputProperties  +[index]: output index [ptr]: VstPinProperties* [return value]: 1 if supported +

+

See also:
AudioEffectX::getOutputProperties
+
effGetPlugCategory  +[return value]: category +

+

See also:
VstPlugCategory

+AudioEffectX::getPlugCategory

+
effGetCurrentPosition  +
Deprecated:
deprecated in VST 2.4
+
effGetDestinationBuffer  +
Deprecated:
deprecated in VST 2.4
+
effOfflineNotify  +[ptr]: VstAudioFile array [value]: count [index]: start flag +

+

See also:
AudioEffectX::offlineNotify
+
effOfflinePrepare  +[ptr]: VstOfflineTask array [value]: count +

+

See also:
AudioEffectX::offlinePrepare
+
effOfflineRun  +[ptr]: VstOfflineTask array [value]: count +

+

See also:
AudioEffectX::offlineRun
+
effProcessVarIo  +[ptr]: VstVariableIo* +

+

See also:
AudioEffectX::processVariableIo
+
effSetSpeakerArrangement  +[value]: input VstSpeakerArrangement* [ptr]: output VstSpeakerArrangement* +

+

See also:
AudioEffectX::setSpeakerArrangement
+
effSetBlockSizeAndSampleRate  +
Deprecated:
deprecated in VST 2.4
+
effSetBypass  +[value]: 1 = bypass, 0 = no bypass +

+

See also:
AudioEffectX::setBypass
+
effGetEffectName  +[ptr]: buffer for effect name, limited to kVstMaxEffectNameLen +

+

See also:
AudioEffectX::getEffectName
+
effGetErrorText  +
Deprecated:
deprecated in VST 2.4
+
effGetVendorString  +[ptr]: buffer for effect vendor string, limited to kVstMaxVendorStrLen +

+

See also:
AudioEffectX::getVendorString
+
effGetProductString  +[ptr]: buffer for effect vendor string, limited to kVstMaxProductStrLen +

+

See also:
AudioEffectX::getProductString
+
effGetVendorVersion  +[return value]: vendor-specific version +

+

See also:
AudioEffectX::getVendorVersion
+
effVendorSpecific  +no definition, vendor specific handling +

+

See also:
AudioEffectX::vendorSpecific
+
effCanDo  +[ptr]: "can do" string [return value]: 0: "don't know" -1: "no" 1: "yes" +

+

See also:
AudioEffectX::canDo
+
effGetTailSize  +[return value]: tail size (for example the reverb time of a reverb plug-in); 0 is default (return 1 for 'no tail')
effIdle  +
Deprecated:
deprecated in VST 2.4
+
effGetIcon  +
Deprecated:
deprecated in VST 2.4
+
effSetViewPosition  +
Deprecated:
deprecated in VST 2.4
+
effGetParameterProperties  +[index]: parameter index [ptr]: VstParameterProperties* [return value]: 1 if supported +

+

See also:
AudioEffectX::getParameterProperties
+
effKeysRequired  +
Deprecated:
deprecated in VST 2.4
+
effGetVstVersion  +[return value]: VST version +

+

See also:
AudioEffectX::getVstVersion
+
effEditKeyDown  +[index]: ASCII character [value]: virtual key [opt]: modifiers [return value]: 1 if key used +

+

See also:
AEffEditor::onKeyDown
+
effEditKeyUp  +[index]: ASCII character [value]: virtual key [opt]: modifiers [return value]: 1 if key used +

+

See also:
AEffEditor::onKeyUp
+
effSetEditKnobMode  +[value]: knob mode 0: circular, 1: circular relativ, 2: linear (CKnobMode in VSTGUI) +

+

See also:
AEffEditor::setKnobMode
+
effGetMidiProgramName  +[index]: MIDI channel [ptr]: MidiProgramName* [return value]: number of used programs, 0 if unsupported +

+

See also:
AudioEffectX::getMidiProgramName
+
effGetCurrentMidiProgram  +[index]: MIDI channel [ptr]: MidiProgramName* [return value]: index of current program +

+

See also:
AudioEffectX::getCurrentMidiProgram
+
effGetMidiProgramCategory  +[index]: MIDI channel [ptr]: MidiProgramCategory* [return value]: number of used categories, 0 if unsupported +

+

See also:
AudioEffectX::getMidiProgramCategory
+
effHasMidiProgramsChanged  +[index]: MIDI channel [return value]: 1 if the MidiProgramName(s) or MidiKeyName(s) have changed +

+

See also:
AudioEffectX::hasMidiProgramsChanged
+
effGetMidiKeyName  +[index]: MIDI channel [ptr]: MidiKeyName* [return value]: true if supported, false otherwise +

+

See also:
AudioEffectX::getMidiKeyName
+
effBeginSetProgram  +no arguments +

+

See also:
AudioEffectX::beginSetProgram
+
effEndSetProgram  +no arguments +

+

See also:
AudioEffectX::endSetProgram
+
effGetSpeakerArrangement  +[value]: input VstSpeakerArrangement* [ptr]: output VstSpeakerArrangement* +

+

See also:
AudioEffectX::getSpeakerArrangement
+
effShellGetNextPlugin  +[ptr]: buffer for plug-in name, limited to kVstMaxProductStrLen [return value]: next plugin's uniqueID +

+

See also:
AudioEffectX::getNextShellPlugin
+
effStartProcess  +no arguments +

+

See also:
AudioEffectX::startProcess
+
effStopProcess  +no arguments +

+

See also:
AudioEffectX::stopProcess
+
effSetTotalSampleToProcess  +[value]: number of samples to process, offline only! +

+

See also:
AudioEffectX::setTotalSampleToProcess
+
effSetPanLaw  +[value]: pan law [opt]: gain +

+

See also:
VstPanLawType

+AudioEffectX::setPanLaw

+
effBeginLoadBank  +[ptr]: VstPatchChunkInfo* [return value]: -1: bank can't be loaded, 1: bank can be loaded, 0: unsupported +

+

See also:
AudioEffectX::beginLoadBank
+
effBeginLoadProgram  +[ptr]: VstPatchChunkInfo* [return value]: -1: prog can't be loaded, 1: prog can be loaded, 0: unsupported +

+

See also:
AudioEffectX::beginLoadProgram
+
effSetProcessPrecision  +[value]: +

+

See also:
VstProcessPrecision

+AudioEffectX::setProcessPrecision

+
effGetNumMidiInputChannels  +[return value]: number of used MIDI input channels (1-15) +

+

See also:
AudioEffectX::getNumMidiInputChannels
+
effGetNumMidiOutputChannels  +[return value]: number of used MIDI output channels (1-15) +

+

See also:
AudioEffectX::getNumMidiOutputChannels
+
+
+ +
+

+ +

+
+ + + + +
enum AudioMasterOpcodesX
+
+
+ +

+VST 2.x dispatcher Opcodes (Plug-in to Host). Extension of AudioMasterOpcodes

Enumerator:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
audioMasterWantMidi  +
Deprecated:
deprecated in VST 2.4
+
audioMasterGetTime  +[return value]: VstTimeInfo* or null if not supported [value]: request mask +

+

See also:
VstTimeInfoFlags

+AudioEffectX::getTimeInfo

+
audioMasterProcessEvents  +[ptr]: pointer to VstEvents +

+

See also:
VstEvents

+AudioEffectX::sendVstEventsToHost

+
audioMasterSetTime  +
Deprecated:
deprecated in VST 2.4
+
audioMasterTempoAt  +
Deprecated:
deprecated in VST 2.4
+
audioMasterGetNumAutomatableParameters  +
Deprecated:
deprecated in VST 2.4
+
audioMasterGetParameterQuantization  +
Deprecated:
deprecated in VST 2.4
+
audioMasterIOChanged  +[return value]: 1 if supported +

+

See also:
AudioEffectX::ioChanged
+
audioMasterNeedIdle  +
Deprecated:
deprecated in VST 2.4
+
audioMasterSizeWindow  +[index]: new width [value]: new height [return value]: 1 if supported +

+

See also:
AudioEffectX::sizeWindow
+
audioMasterGetSampleRate  +[return value]: current sample rate +

+

See also:
AudioEffectX::updateSampleRate
+
audioMasterGetBlockSize  +[return value]: current block size +

+

See also:
AudioEffectX::updateBlockSize
+
audioMasterGetInputLatency  +[return value]: input latency in audio samples +

+

See also:
AudioEffectX::getInputLatency
+
audioMasterGetOutputLatency  +[return value]: output latency in audio samples +

+

See also:
AudioEffectX::getOutputLatency
+
audioMasterGetPreviousPlug  +
Deprecated:
deprecated in VST 2.4
+
audioMasterGetNextPlug  +
Deprecated:
deprecated in VST 2.4
+
audioMasterWillReplaceOrAccumulate  +
Deprecated:
deprecated in VST 2.4
+
audioMasterGetCurrentProcessLevel  +[return value]: current process level +

+

See also:
VstProcessLevels
+
audioMasterGetAutomationState  +[return value]: current automation state +

+

See also:
VstAutomationStates
+
audioMasterOfflineStart  +[index]: numNewAudioFiles [value]: numAudioFiles [ptr]: VstAudioFile* +

+

See also:
AudioEffectX::offlineStart
+
audioMasterOfflineRead  +[index]: bool readSource [value]: VstOfflineOption* +

+

See also:
VstOfflineOption [ptr]: VstOfflineTask*

+VstOfflineTask

+AudioEffectX::offlineRead

+
audioMasterOfflineWrite  +
See also:
audioMasterOfflineRead

+AudioEffectX::offlineRead

+
audioMasterOfflineGetCurrentPass  +
See also:
AudioEffectX::offlineGetCurrentPass
+
audioMasterOfflineGetCurrentMetaPass  +
See also:
AudioEffectX::offlineGetCurrentMetaPass
+
audioMasterSetOutputSampleRate  +
Deprecated:
deprecated in VST 2.4
+
audioMasterGetOutputSpeakerArrangement  +
Deprecated:
deprecated in VST 2.4
+
audioMasterGetVendorString  +[ptr]: char buffer for vendor string, limited to kVstMaxVendorStrLen +

+

See also:
AudioEffectX::getHostVendorString
+
audioMasterGetProductString  +[ptr]: char buffer for vendor string, limited to kVstMaxProductStrLen +

+

See also:
AudioEffectX::getHostProductString
+
audioMasterGetVendorVersion  +[return value]: vendor-specific version +

+

See also:
AudioEffectX::getHostVendorVersion
+
audioMasterVendorSpecific  +no definition, vendor specific handling +

+

See also:
AudioEffectX::hostVendorSpecific
+
audioMasterSetIcon  +
Deprecated:
deprecated in VST 2.4
+
audioMasterCanDo  +[ptr]: "can do" string [return value]: 1 for supported
audioMasterGetLanguage  +[return value]: language code +

+

See also:
VstHostLanguage
+
audioMasterOpenWindow  +
Deprecated:
deprecated in VST 2.4
+
audioMasterCloseWindow  +
Deprecated:
deprecated in VST 2.4
+
audioMasterGetDirectory  +[return value]: FSSpec on MAC, else char* +

+

See also:
AudioEffectX::getDirectory
+
audioMasterUpdateDisplay  +no arguments
audioMasterBeginEdit  +[index]: parameter index +

+

See also:
AudioEffectX::beginEdit
+
audioMasterEndEdit  +[index]: parameter index +

+

See also:
AudioEffectX::endEdit
+
audioMasterOpenFileSelector  +[ptr]: VstFileSelect* [return value]: 1 if supported +

+

See also:
AudioEffectX::openFileSelector
+
audioMasterCloseFileSelector  +[ptr]: VstFileSelect* +

+

See also:
AudioEffectX::closeFileSelector
+
audioMasterEditFile  +
Deprecated:
deprecated in VST 2.4
+
audioMasterGetChunkFile  +
Deprecated:
deprecated in VST 2.4 [ptr]: char[2048] or sizeof (FSSpec) [return value]: 1 if supported
+
See also:
AudioEffectX::getChunkFile
+
audioMasterGetInputSpeakerArrangement  +
Deprecated:
deprecated in VST 2.4
+
+
+ +
+

+ +

+
+ + + + +
enum Vst2StringConstants
+
+
+ +

+String length limits (in characters excl. 0 byte).

Enumerator:
+ + + + + + +
kVstMaxNameLen  +used for MidiProgramName, MidiProgramCategory, MidiKeyName, VstSpeakerProperties, VstPinProperties
kVstMaxLabelLen  +used for VstParameterProperties->label, VstPinProperties->label
kVstMaxShortLabelLen  +used for VstParameterProperties->shortLabel, VstPinProperties->shortLabel
kVstMaxCategLabelLen  +used for VstParameterProperties->label
kVstMaxFileNameLen  +used for VstAudioFile->name
+
+ +
+

+ +

+
+ + + + +
enum VstAudioFileFlags
+
+
+ +

+Flags used in VstAudioFile.

Enumerator:
+ + + + + + + + + + + +
kVstOfflineReadOnly  +set by Host (in call offlineNotify)
kVstOfflineNoRateConversion  +set by Host (in call offlineNotify)
kVstOfflineNoChannelChange  +set by Host (in call offlineNotify)
kVstOfflineCanProcessSelection  +set by plug-in (in call offlineStart)
kVstOfflineNoCrossfade  +set by plug-in (in call offlineStart)
kVstOfflineWantRead  +set by plug-in (in call offlineStart)
kVstOfflineWantWrite  +set by plug-in (in call offlineStart)
kVstOfflineWantWriteMarker  +set by plug-in (in call offlineStart)
kVstOfflineWantMoveCursor  +set by plug-in (in call offlineStart)
kVstOfflineWantSelect  +set by plug-in (in call offlineStart)
+
+ +
+

+ +

+
+ + + + +
enum VstAutomationStates
+
+
+ +

+Automation States returned by audioMasterGetAutomationState.

Enumerator:
+ + + + + + +
kVstAutomationUnsupported  +not supported by Host
kVstAutomationOff  +off
kVstAutomationRead  +read
kVstAutomationWrite  +write
kVstAutomationReadWrite  +read and write
+
+ +
+

+ +

+
+ + + + +
enum VstEventTypes
+
+
+ +

+VstEvent Types used by VstEvent.

Enumerator:
+ + + + + + + +
kVstMidiType  +MIDI event. +

+

See also:
VstMidiEvent
+
kVstAudioType  +
Deprecated:
unused event type
+
kVstVideoType  +
Deprecated:
unused event type
+
kVstParameterType  +
Deprecated:
unused event type
+
kVstTriggerType  +
Deprecated:
unused event type
+
kVstSysExType  +MIDI system exclusive. +

+

See also:
VstMidiSysexEvent
+
+
+ +
+

+ +

+
+ + + + +
enum VstFileSelectCommand
+
+
+ +

+Command constants used in VstFileSelect structure.

Enumerator:
+ + + + + +
kVstFileLoad  +for loading a file
kVstFileSave  +for saving a file
kVstMultipleFilesLoad  +for loading multiple files
kVstDirectorySelect  +for selecting a directory/folder
+
+ +
+

+ +

+
+ + + + +
enum VstFileSelectType
+
+
+ +

+Types used in VstFileSelect structure.

Enumerator:
+ + +
kVstFileType  +regular file selector
+
+ +
+

+ +

+
+ + + + +
enum VstHostLanguage
+
+
+ +

+Language code returned by audioMasterGetLanguage.

Enumerator:
+ + + + + + + +
kVstLangEnglish  +English.
kVstLangGerman  +German.
kVstLangFrench  +French.
kVstLangItalian  +Italian.
kVstLangSpanish  +Spanish.
kVstLangJapanese  +Japanese.
+
+ +
+

+ +

+
+ + + + +
enum VstMidiEventFlags
+
+
+ +

+Flags used in VstMidiEvent.

Enumerator:
+ + +
kVstMidiEventIsRealtime  +means that this event is played life (not in playback from a sequencer track).
+ This allows the Plug-In to handle these flagged events with higher priority, especially when the Plug-In has a big latency (AEffect::initialDelay)
+
+ +
+

+ +

+
+ + + + +
enum VstMidiProgramNameFlags
+
+
+ +

+Flags used in MidiProgramName.

Enumerator:
+ + +
kMidiIsOmni  +default is multi. for omni mode, channel 0 is used for inquiries and program changes
+
+ +
+

+ +

+
+ + + + +
enum VstModifierKey
+
+
+ +

+Modifier flags used in VstKeyCode.

Enumerator:
+ + + + + +
MODIFIER_SHIFT  +Shift.
MODIFIER_ALTERNATE  +Alt.
MODIFIER_COMMAND  +Control on Mac.
MODIFIER_CONTROL  +Ctrl on PC, Apple on Mac.
+
+ +
+

+ +

+
+ + + + +
enum VstOfflineOption
+
+
+ +

+Option passed to offlineRead/offlineWrite.

Enumerator:
+ + + + + + + + +
kVstOfflineAudio  +reading/writing audio samples
kVstOfflinePeaks  +reading graphic representation
kVstOfflineParameter  +reading/writing parameters
kVstOfflineMarker  +reading/writing marker
kVstOfflineCursor  +reading/moving edit cursor
kVstOfflineSelection  +reading/changing selection
kVstOfflineQueryFiles  +to request the Host to call asynchronously offlineNotify
+
+ +
+

+ +

+
+ + + + +
enum VstOfflineTaskFlags
+
+
+ +

+Flags used in VstOfflineTask.

Enumerator:
+ + + + + + + + + + +
kVstOfflineUnvalidParameter  +set by Host
kVstOfflineNewFile  +set by Host
kVstOfflinePlugError  +set by plug-in
kVstOfflineInterleavedAudio  +set by plug-in
kVstOfflineTempOutputFile  +set by plug-in
kVstOfflineFloatOutputFile  +set by plug-in
kVstOfflineRandomWrite  +set by plug-in
kVstOfflineStretch  +set by plug-in
kVstOfflineNoThread  +set by plug-in
+
+ +
+

+ +

+
+ + + + +
enum VstPanLawType
+
+
+ +

+PanLaw Type.

Enumerator:
+ + + +
kLinearPanLaw  +L = pan * M; R = (1 - pan) * M;.
kEqualPowerPanLaw  +L = pow (pan, 0.5) * M; R = pow ((1 - pan), 0.5) * M;.
+
+ +
+

+ +

+
+ + + + +
enum VstParameterFlags
+
+
+ +

+Flags used in VstParameterProperties.

Enumerator:
+ + + + + + + + +
kVstParameterIsSwitch  +parameter is a switch (on/off)
kVstParameterUsesIntegerMinMax  +minInteger, maxInteger valid
kVstParameterUsesFloatStep  +stepFloat, smallStepFloat, largeStepFloat valid
kVstParameterUsesIntStep  +stepInteger, largeStepInteger valid
kVstParameterSupportsDisplayIndex  +displayIndex valid
kVstParameterSupportsDisplayCategory  +category, etc. valid
kVstParameterCanRamp  +set if parameter value can ramp up/down
+
+ +
+

+ +

+
+ + + + +
enum VstPinPropertiesFlags
+
+
+ +

+Flags used in VstPinProperties.

Enumerator:
+ + + + +
kVstPinIsActive  +pin is active, ignored by Host
kVstPinIsStereo  +pin is first of a stereo pair
kVstPinUseSpeaker  +VstPinProperties::arrangementType is valid and can be used to get the wanted arrangement
+
+ +
+

+ +

+
+ + + + +
enum VstPlugCategory
+
+
+ +

+Plug-in Categories.

Enumerator:
+ + + + + + + + + + + + + + +
kPlugCategUnknown  +Unknown, category not implemented.
kPlugCategEffect  +Simple Effect.
kPlugCategSynth  +VST Instrument (Synths, samplers,...).
kPlugCategAnalysis  +Scope, Tuner, ...
kPlugCategMastering  +Dynamics, ...
kPlugCategSpacializer  +Panners, ...
kPlugCategRoomFx  +Delays and Reverbs.
kPlugSurroundFx  +Dedicated surround processor.
kPlugCategRestoration  +Denoiser, ...
kPlugCategOfflineProcess  +Offline Process.
kPlugCategShell  +Plug-in is container of other plug-ins. +

+

See also:
effShellGetNextPlugin
+
kPlugCategGenerator  +ToneGenerator, ...
kPlugCategMaxCount  +Marker to count the categories.
+
+ +
+

+ +

+
+ + + + +
enum VstProcessLevels
+
+
+ +

+Process Levels returned by audioMasterGetCurrentProcessLevel.

Enumerator:
+ + + + + + +
kVstProcessLevelUnknown  +not supported by Host
kVstProcessLevelUser  +1: currently in user thread (GUI)
kVstProcessLevelRealtime  +2: currently in audio thread (where process is called)
kVstProcessLevelPrefetch  +3: currently in 'sequencer' thread (MIDI, timer etc)
kVstProcessLevelOffline  +4: currently offline processing and thus in user thread
+
+ +
+

+ +

+
+ + + + +
enum VstProcessPrecision
+
+
+ +

+Symbolic precision constants used for effSetProcessPrecision.

Enumerator:
+ + + +
kVstProcessPrecision32  +single precision float (32bits)
kVstProcessPrecision64  +double precision (64bits)
+
+ +
+

+ +

+
+ + + + +
enum VstSmpteFrameRate
+
+
+ +

+SMPTE Frame Rates.

Enumerator:
+ + + + + + + + + + + + + +
kVstSmpte24fps  +24 fps
kVstSmpte25fps  +25 fps
kVstSmpte2997fps  +29.97 fps
kVstSmpte30fps  +30 fps
kVstSmpte2997dfps  +29.97 drop
kVstSmpte30dfps  +30 drop
kVstSmpteFilm16mm  +Film 16mm.
kVstSmpteFilm35mm  +Film 35mm.
kVstSmpte239fps  +HDTV: 23.976 fps.
kVstSmpte249fps  +HDTV: 24.976 fps.
kVstSmpte599fps  +HDTV: 59.94 fps.
kVstSmpte60fps  +HDTV: 60 fps.
+
+ +
+

+ +

+
+ + + + +
enum VstSpeakerArrangementType
+
+
+ +

+Speaker Arrangement Types

Enumerator:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
kSpeakerArrUserDefined  +user defined
kSpeakerArrEmpty  +empty arrangement
kSpeakerArrMono  +M.
kSpeakerArrStereo  +L R.
kSpeakerArrStereoSurround  +Ls Rs.
kSpeakerArrStereoCenter  +Lc Rc.
kSpeakerArrStereoSide  +Sl Sr.
kSpeakerArrStereoCLfe  +C Lfe.
kSpeakerArr30Cine  +L R C.
kSpeakerArr30Music  +L R S.
kSpeakerArr31Cine  +L R C Lfe.
kSpeakerArr31Music  +L R Lfe S.
kSpeakerArr40Cine  +L R C S (LCRS).
kSpeakerArr40Music  +L R Ls Rs (Quadro).
kSpeakerArr41Cine  +L R C Lfe S (LCRS+Lfe).
kSpeakerArr41Music  +L R Lfe Ls Rs (Quadro+Lfe).
kSpeakerArr50  +L R C Ls Rs.
kSpeakerArr51  +L R C Lfe Ls Rs.
kSpeakerArr60Cine  +L R C Ls Rs Cs.
kSpeakerArr60Music  +L R Ls Rs Sl Sr.
kSpeakerArr61Cine  +L R C Lfe Ls Rs Cs.
kSpeakerArr61Music  +L R Lfe Ls Rs Sl Sr.
kSpeakerArr70Cine  +L R C Ls Rs Lc Rc.
kSpeakerArr70Music  +L R C Ls Rs Sl Sr.
kSpeakerArr71Cine  +L R C Lfe Ls Rs Lc Rc.
kSpeakerArr71Music  +L R C Lfe Ls Rs Sl Sr.
kSpeakerArr80Cine  +L R C Ls Rs Lc Rc Cs.
kSpeakerArr80Music  +L R C Ls Rs Cs Sl Sr.
kSpeakerArr81Cine  +L R C Lfe Ls Rs Lc Rc Cs.
kSpeakerArr81Music  +L R C Lfe Ls Rs Cs Sl Sr.
kSpeakerArr102  +L R C Lfe Ls Rs Tfl Tfc Tfr Trl Trr Lfe2.
kNumSpeakerArr  +
+
+ +
+

+ +

+
+ + + + +
enum VstSpeakerType
+
+
+ +

+Speaker Types.

Enumerator:
+ + + + + + + + + + + + + + + + + + + + + + + +
kSpeakerUndefined  +Undefined.
kSpeakerM  +Mono (M).
kSpeakerL  +Left (L).
kSpeakerR  +Right (R).
kSpeakerC  +Center (C).
kSpeakerLfe  +Subbass (Lfe).
kSpeakerLs  +Left Surround (Ls).
kSpeakerRs  +Right Surround (Rs).
kSpeakerLc  +Left of Center (Lc).
kSpeakerRc  +Right of Center (Rc).
kSpeakerS  +Surround (S).
kSpeakerCs  +Center of Surround (Cs) = Surround (S).
kSpeakerSl  +Side Left (Sl).
kSpeakerSr  +Side Right (Sr).
kSpeakerTm  +Top Middle (Tm).
kSpeakerTfl  +Top Front Left (Tfl).
kSpeakerTfc  +Top Front Center (Tfc).
kSpeakerTfr  +Top Front Right (Tfr).
kSpeakerTrl  +Top Rear Left (Trl).
kSpeakerTrc  +Top Rear Center (Trc).
kSpeakerTrr  +Top Rear Right (Trr).
kSpeakerLfe2  +Subbass 2 (Lfe2).
+
+ +
+

+ +

+
+ + + + +
enum VstTimeInfoFlags
+
+
+ +

+Flags used in VstTimeInfo.

Enumerator:
+ + + + + + + + + + + + + + + +
kVstTransportChanged  +indicates that play, cycle or record state has changed
kVstTransportPlaying  +set if Host sequencer is currently playing
kVstTransportCycleActive  +set if Host sequencer is in cycle mode
kVstTransportRecording  +set if Host sequencer is in record mode
kVstAutomationWriting  +set if automation write mode active (record parameter changes)
kVstAutomationReading  +set if automation read mode active (play parameter changes)
kVstNanosValid  +VstTimeInfo::nanoSeconds valid.
kVstPpqPosValid  +VstTimeInfo::ppqPos valid.
kVstTempoValid  +VstTimeInfo::tempo valid.
kVstBarsValid  +VstTimeInfo::barStartPos valid.
kVstCyclePosValid  +VstTimeInfo::cycleStartPos and VstTimeInfo::cycleEndPos valid.
kVstTimeSigValid  +VstTimeInfo::timeSigNumerator and VstTimeInfo::timeSigDenominator valid.
kVstSmpteValid  +VstTimeInfo::smpteOffset and VstTimeInfo::smpteFrameRate valid.
kVstClockValid  +VstTimeInfo::samplesToNextClock valid.
+
+ +
+

+ +

+
+ + + + +
enum VstUserSpeakerType
+
+
+ +

+User-defined speaker types, to be extended in the negative range. Will be handled as their corresponding speaker types with abs values: e.g abs(kSpeakerU1) == kSpeakerL, abs(kSpeakerU2) == kSpeakerR)

Enumerator:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
kSpeakerU32  +
kSpeakerU31  +
kSpeakerU30  +
kSpeakerU29  +
kSpeakerU28  +
kSpeakerU27  +
kSpeakerU26  +
kSpeakerU25  +
kSpeakerU24  +
kSpeakerU23  +
kSpeakerU22  +
kSpeakerU21  +
kSpeakerU20  +== kSpeakerLfe2
kSpeakerU19  +== kSpeakerTrr
kSpeakerU18  +== kSpeakerTrc
kSpeakerU17  +== kSpeakerTrl
kSpeakerU16  +== kSpeakerTfr
kSpeakerU15  +== kSpeakerTfc
kSpeakerU14  +== kSpeakerTfl
kSpeakerU13  +== kSpeakerTm
kSpeakerU12  +== kSpeakerSr
kSpeakerU11  +== kSpeakerSl
kSpeakerU10  +== kSpeakerCs
kSpeakerU9  +== kSpeakerS
kSpeakerU8  +== kSpeakerRc
kSpeakerU7  +== kSpeakerLc
kSpeakerU6  +== kSpeakerRs
kSpeakerU5  +== kSpeakerLs
kSpeakerU4  +== kSpeakerLfe
kSpeakerU3  +== kSpeakerC
kSpeakerU2  +== kSpeakerR
kSpeakerU1  +== kSpeakerL
+
+ +
+

+ +

+
+ + + + +
enum VstVirtualKey
+
+
+ +

+Platform-independent definition of Virtual Keys (used in VstKeyCode).

Enumerator:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VKEY_BACK  +
VKEY_TAB  +
VKEY_CLEAR  +
VKEY_RETURN  +
VKEY_PAUSE  +
VKEY_ESCAPE  +
VKEY_SPACE  +
VKEY_NEXT  +
VKEY_END  +
VKEY_HOME  +
VKEY_LEFT  +
VKEY_UP  +
VKEY_RIGHT  +
VKEY_DOWN  +
VKEY_PAGEUP  +
VKEY_PAGEDOWN  +
VKEY_SELECT  +
VKEY_PRINT  +
VKEY_ENTER  +
VKEY_SNAPSHOT  +
VKEY_INSERT  +
VKEY_DELETE  +
VKEY_HELP  +
VKEY_NUMPAD0  +
VKEY_NUMPAD1  +
VKEY_NUMPAD2  +
VKEY_NUMPAD3  +
VKEY_NUMPAD4  +
VKEY_NUMPAD5  +
VKEY_NUMPAD6  +
VKEY_NUMPAD7  +
VKEY_NUMPAD8  +
VKEY_NUMPAD9  +
VKEY_MULTIPLY  +
VKEY_ADD  +
VKEY_SEPARATOR  +
VKEY_SUBTRACT  +
VKEY_DECIMAL  +
VKEY_DIVIDE  +
VKEY_F1  +
VKEY_F2  +
VKEY_F3  +
VKEY_F4  +
VKEY_F5  +
VKEY_F6  +
VKEY_F7  +
VKEY_F8  +
VKEY_F9  +
VKEY_F10  +
VKEY_F11  +
VKEY_F12  +
VKEY_NUMLOCK  +
VKEY_SCROLL  +
VKEY_SHIFT  +
VKEY_CONTROL  +
VKEY_ALT  +
VKEY_EQUALS  +
+
+ +
+

+ + + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/aeffeditor_8h.html b/doc/html/aeffeditor_8h.html new file mode 100644 index 0000000..c15f63a --- /dev/null +++ b/doc/html/aeffeditor_8h.html @@ -0,0 +1,49 @@ + + +VST SDK 2.4: aeffeditor.h File Reference + + + + +
+
+
+
+ +

aeffeditor.h File Reference

#include "audioeffectx.h"
+ + + + + +

Classes

class  AEffEditor
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/annotated.html b/doc/html/annotated.html new file mode 100644 index 0000000..d800eaa --- /dev/null +++ b/doc/html/annotated.html @@ -0,0 +1,71 @@ + + +VST SDK 2.4: Class List + + + + +
+
+
+
+

VST SDK 2.4 Class List

Here are the classes, structs, unions and interfaces with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AEffect
AEffEditor
AudioEffect
AudioEffectX
ERect
fxBank
fxProgram
MidiKeyName
MidiProgramCategory
MidiProgramName
VstAudioFile
VstAudioFileMarker
VstEvent
VstEvents
VstFileSelect
VstFileType
VstKeyCode
VstMidiEvent
VstMidiSysexEvent
VstOfflineTask
VstParameterProperties
VstPatchChunkInfo
VstPinProperties
VstSpeakerArrangement
VstSpeakerProperties
VstTimeInfo
VstVariableIo
VstWindow
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/audioeffect_8cpp.html b/doc/html/audioeffect_8cpp.html new file mode 100644 index 0000000..c7f5af9 --- /dev/null +++ b/doc/html/audioeffect_8cpp.html @@ -0,0 +1,50 @@ + + +VST SDK 2.4: audioeffect.cpp File Reference + + + + +
+
+
+
+ +

audioeffect.cpp File Reference

#include "audioeffect.h"
+#include "aeffeditor.h"
+#include <stddef.h>
+#include <stdio.h>
+#include <math.h>
+ + +
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/audioeffect_8h.html b/doc/html/audioeffect_8h.html new file mode 100644 index 0000000..96ddbbb --- /dev/null +++ b/doc/html/audioeffect_8h.html @@ -0,0 +1,49 @@ + + +VST SDK 2.4: audioeffect.h File Reference + + + + +
+
+
+
+ +

audioeffect.h File Reference

#include "pluginterfaces/vst2.x/aeffect.h"
+ + + + + +

Classes

class  AudioEffect
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/audioeffectx_8cpp.html b/doc/html/audioeffectx_8cpp.html new file mode 100644 index 0000000..ae6ce3c --- /dev/null +++ b/doc/html/audioeffectx_8cpp.html @@ -0,0 +1,119 @@ + + +VST SDK 2.4: audioeffectx.cpp File Reference + + + + +
+
+
+
+ +

audioeffectx.cpp File Reference

#include "audioeffectx.h"
+#include "aeffeditor.h"
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Namespaces

namespace  HostCanDos
namespace  PlugCanDos

Variables

const char * HostCanDos::canDoSendVstEvents = "sendVstEvents"
 Host supports send of Vst events to plug-in.
const char * HostCanDos::canDoSendVstMidiEvent = "sendVstMidiEvent"
 Host supports send of MIDI events to plug-in.
const char * HostCanDos::canDoSendVstTimeInfo = "sendVstTimeInfo"
 Host supports send of VstTimeInfo to plug-in.
const char * HostCanDos::canDoReceiveVstEvents = "receiveVstEvents"
 Host can receive Vst events from plug-in.
const char * HostCanDos::canDoReceiveVstMidiEvent = "receiveVstMidiEvent"
 Host can receive MIDI events from plug-in.
const char * HostCanDos::canDoReportConnectionChanges = "reportConnectionChanges"
 Host will indicates the plug-in when something change in plug-in´s routing/connections with suspend/resume/setSpeakerArrangement.
const char * HostCanDos::canDoAcceptIOChanges = "acceptIOChanges"
 Host supports ioChanged ().
const char * HostCanDos::canDoSizeWindow = "sizeWindow"
 used by VSTGUI
const char * HostCanDos::canDoOffline = "offline"
 Host supports offline feature.
const char * HostCanDos::canDoOpenFileSelector = "openFileSelector"
 Host supports function openFileSelector ().
const char * HostCanDos::canDoCloseFileSelector = "closeFileSelector"
 Host supports function closeFileSelector ().
const char * HostCanDos::canDoStartStopProcess = "startStopProcess"
 Host supports functions startProcess () and stopProcess ().
const char * HostCanDos::canDoShellCategory = "shellCategory"
 'shell' handling via uniqueID. If supported by the Host and the Plug-in has the category kPlugCategShell
const char * HostCanDos::canDoSendVstMidiEventFlagIsRealtime = "sendVstMidiEventFlagIsRealtime"
 Host supports flags for VstMidiEvent.
const char * PlugCanDos::canDoSendVstEvents = "sendVstEvents"
 plug-in will send Vst events to Host
const char * PlugCanDos::canDoSendVstMidiEvent = "sendVstMidiEvent"
 plug-in will send MIDI events to Host
const char * PlugCanDos::canDoReceiveVstEvents = "receiveVstEvents"
 plug-in can receive MIDI events from Host
const char * PlugCanDos::canDoReceiveVstMidiEvent = "receiveVstMidiEvent"
 plug-in can receive MIDI events from Host
const char * PlugCanDos::canDoReceiveVstTimeInfo = "receiveVstTimeInfo"
 plug-in can receive Time info from Host
const char * PlugCanDos::canDoOffline = "offline"
 plug-in supports offline functions (offlineNotify, offlinePrepare, offlineRun)
const char * PlugCanDos::canDoMidiProgramNames = "midiProgramNames"
 plug-in supports function getMidiProgramName ()
const char * PlugCanDos::canDoBypass = "bypass"
 plug-in supports function setBypass ()
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/audioeffectx_8h.html b/doc/html/audioeffectx_8h.html new file mode 100644 index 0000000..d6ae7e5 --- /dev/null +++ b/doc/html/audioeffectx_8h.html @@ -0,0 +1,50 @@ + + +VST SDK 2.4: audioeffectx.h File Reference + + + + +
+
+
+
+ +

audioeffectx.h File Reference

#include "audioeffect.h"
+#include "pluginterfaces/vst2.x/aeffectx.h"
+ + + + + +

Classes

class  AudioEffectX
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/class_a_eff_editor-members.html b/doc/html/class_a_eff_editor-members.html new file mode 100644 index 0000000..436b459 --- /dev/null +++ b/doc/html/class_a_eff_editor-members.html @@ -0,0 +1,56 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

AEffEditor Member List

This is the complete list of members for AEffEditor, including all inherited members.

+ + + + + + + + + + + + + + +
AEffEditor(AudioEffect *effect=0)AEffEditor [inline]
close()AEffEditor [inline, virtual]
effectAEffEditor [protected]
getEffect()AEffEditor [inline, virtual]
getRect(ERect **rect)AEffEditor [inline, virtual]
idle()AEffEditor [inline, virtual]
isOpen()AEffEditor [inline, virtual]
onKeyDown(VstKeyCode &keyCode)AEffEditor [inline, virtual]
onKeyUp(VstKeyCode &keyCode)AEffEditor [inline, virtual]
onWheel(float distance)AEffEditor [inline, virtual]
open(void *ptr)AEffEditor [inline, virtual]
setKnobMode(VstInt32 val)AEffEditor [inline, virtual]
systemWindowAEffEditor [protected]
~AEffEditor()AEffEditor [inline, virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/class_a_eff_editor.html b/doc/html/class_a_eff_editor.html new file mode 100644 index 0000000..af504a9 --- /dev/null +++ b/doc/html/class_a_eff_editor.html @@ -0,0 +1,390 @@ + + +VST SDK 2.4: AEffEditor Class Reference + + + + +
+
+
+
+

AEffEditor Class Reference

#include <aeffeditor.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 AEffEditor (AudioEffect *effect=0)
virtual ~AEffEditor ()
virtual AudioEffectgetEffect ()
 Returns associated effect instance.
virtual bool getRect (ERect **rect)
 Query editor size as ERect.
virtual bool open (void *ptr)
 Open editor, pointer to parent windows is platform-dependent (HWND on Windows, WindowRef on Mac).
virtual void close ()
 Close editor (detach from parent window).
virtual bool isOpen ()
 Returns true if editor is currently open.
virtual void idle ()
 Idle call supplied by Host application.
virtual bool onKeyDown (VstKeyCode &keyCode)
 Receive key down event. Return true only if key was really used!
virtual bool onKeyUp (VstKeyCode &keyCode)
 Receive key up event. Return true only if key was really used!
virtual bool onWheel (float distance)
 Handle mouse wheel event, distance is positive or negative to indicate wheel direction.
virtual bool setKnobMode (VstInt32 val)
 Set knob mode (if supported by Host). See CKnobMode in VSTGUI.

Protected Attributes

AudioEffecteffect
 associated effect instance
void * systemWindow
 platform-dependent parent window (HWND or WindowRef)
+


Detailed Description

+VST Effect Editor class. +

+


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + +
AEffEditor::AEffEditor (AudioEffect effect = 0  )  [inline]
+
+
+ +

+

Parameters:
+ + +
effect  +Editor class constructor. Requires pointer to associated effect instance.
+
+
+

+ +

+
+ + + + + + + + +
virtual AEffEditor::~AEffEditor (  )  [inline, virtual]
+
+
+ +

+ +

+

+


Member Function Documentation

+ +
+
+ + + + + + + + +
virtual void AEffEditor::close (  )  [inline, virtual]
+
+
+ +

+Close editor (detach from parent window). +

+ +

+

+ +

+
+ + + + + + + + +
virtual AudioEffect* AEffEditor::getEffect (  )  [inline, virtual]
+
+
+ +

+Returns associated effect instance. +

+ +

+

+ +

+
+ + + + + + + + + +
virtual bool AEffEditor::getRect (ERect **  rect  )  [inline, virtual]
+
+
+ +

+Query editor size as ERect. +

+ +

+

+ +

+
+ + + + + + + + +
virtual void AEffEditor::idle (  )  [inline, virtual]
+
+
+ +

+Idle call supplied by Host application. +

+ +

+

+ +

+
+ + + + + + + + +
virtual bool AEffEditor::isOpen (  )  [inline, virtual]
+
+
+ +

+Returns true if editor is currently open. +

+ +

+

+ +

+
+ + + + + + + + + +
virtual bool AEffEditor::onKeyDown (VstKeyCode keyCode  )  [inline, virtual]
+
+
+ +

+Receive key down event. Return true only if key was really used! +

+ +

+

+ +

+
+ + + + + + + + + +
virtual bool AEffEditor::onKeyUp (VstKeyCode keyCode  )  [inline, virtual]
+
+
+ +

+Receive key up event. Return true only if key was really used! +

+ +

+

+ +

+
+ + + + + + + + + +
virtual bool AEffEditor::onWheel (float  distance  )  [inline, virtual]
+
+
+ +

+Handle mouse wheel event, distance is positive or negative to indicate wheel direction. +

+ +

+

+ +

+
+ + + + + + + + + +
virtual bool AEffEditor::open (void *  ptr  )  [inline, virtual]
+
+
+ +

+Open editor, pointer to parent windows is platform-dependent (HWND on Windows, WindowRef on Mac). +

+ +

+

+ +

+
+ + + + + + + + + +
virtual bool AEffEditor::setKnobMode (VstInt32  val  )  [inline, virtual]
+
+
+ +

+Set knob mode (if supported by Host). See CKnobMode in VSTGUI. +

+ +

+

+


Member Data Documentation

+ +
+
+ + + + +
AudioEffect* AEffEditor::effect [protected]
+
+
+ +

+associated effect instance +

+ +

+

+ +

+
+ + + + +
void* AEffEditor::systemWindow [protected]
+
+
+ +

+platform-dependent parent window (HWND or WindowRef) +

+ +

+

+


The documentation for this class was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/class_audio_effect-members.html b/doc/html/class_audio_effect-members.html new file mode 100644 index 0000000..e7abdf1 --- /dev/null +++ b/doc/html/class_audio_effect-members.html @@ -0,0 +1,93 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

AudioEffect Member List

This is the complete list of members for AudioEffect, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AudioEffect(audioMasterCallback audioMaster, VstInt32 numPrograms, VstInt32 numParams)AudioEffect
audioMasterAudioEffect [protected]
blockSizeAudioEffect [protected]
canDoubleReplacing(bool state=true)AudioEffect [virtual]
canProcessReplacing(bool state=true)AudioEffect [virtual]
cEffectAudioEffect [protected]
close()AudioEffect [inline, virtual]
curProgramAudioEffect [protected]
dB2string(float value, char *text, VstInt32 maxLen)AudioEffect [virtual]
dispatcher(VstInt32 opcode, VstInt32 index, VstIntPtr value, void *ptr, float opt)AudioEffect [virtual]
editorAudioEffect [protected]
float2string(float value, char *text, VstInt32 maxLen)AudioEffect [virtual]
getAeffect()AudioEffect [inline, virtual]
getBlockSize()AudioEffect [inline, virtual]
getChunk(void **data, bool isPreset=false)AudioEffect [inline, virtual]
getCurrentUniqueId()AudioEffect [virtual]
getEditor()AudioEffect [inline, virtual]
getMasterVersion()AudioEffect [virtual]
getParameter(VstInt32 index)AudioEffect [inline, virtual]
getParameterDisplay(VstInt32 index, char *text)AudioEffect [inline, virtual]
getParameterLabel(VstInt32 index, char *label)AudioEffect [inline, virtual]
getParameterName(VstInt32 index, char *text)AudioEffect [inline, virtual]
getProgram()AudioEffect [inline, virtual]
getProgramName(char *name)AudioEffect [inline, virtual]
getSampleRate()AudioEffect [inline, virtual]
Hz2string(float samples, char *text, VstInt32 maxLen)AudioEffect [virtual]
int2string(VstInt32 value, char *text, VstInt32 maxLen)AudioEffect [virtual]
masterIdle()AudioEffect [virtual]
ms2string(float samples, char *text, VstInt32 maxLen)AudioEffect [virtual]
numParamsAudioEffect [protected]
numProgramsAudioEffect [protected]
open()AudioEffect [inline, virtual]
processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)AudioEffect [inline, virtual]
processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames)=0AudioEffect [pure virtual]
programsAreChunks(bool state=true)AudioEffect [virtual]
resume()AudioEffect [inline, virtual]
sampleRateAudioEffect [protected]
setBlockSize(VstInt32 blockSize)AudioEffect [inline, virtual]
setChunk(void *data, VstInt32 byteSize, bool isPreset=false)AudioEffect [inline, virtual]
setEditor(AEffEditor *editor)AudioEffect
setInitialDelay(VstInt32 delay)AudioEffect [virtual]
setNumInputs(VstInt32 inputs)AudioEffect [inline, virtual]
setNumOutputs(VstInt32 outputs)AudioEffect [inline, virtual]
setParameter(VstInt32 index, float value)AudioEffect [inline, virtual]
setParameterAutomated(VstInt32 index, float value)AudioEffect [virtual]
setProgram(VstInt32 program)AudioEffect [inline, virtual]
setProgramName(char *name)AudioEffect [inline, virtual]
setSampleRate(float sampleRate)AudioEffect [inline, virtual]
setUniqueID(VstInt32 iD)AudioEffect [inline, virtual]
suspend()AudioEffect [inline, virtual]
~AudioEffect()AudioEffect [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/class_audio_effect.html b/doc/html/class_audio_effect.html new file mode 100644 index 0000000..59d2cd3 --- /dev/null +++ b/doc/html/class_audio_effect.html @@ -0,0 +1,1703 @@ + + +VST SDK 2.4: AudioEffect Class Reference + + + + +
+
+
+
+

AudioEffect Class Reference

#include <audioeffect.h> +

+

Inheritance diagram for AudioEffect: +

+ +AudioEffectX + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 AudioEffect (audioMasterCallback audioMaster, VstInt32 numPrograms, VstInt32 numParams)
 Create an AudioEffect object.
virtual ~AudioEffect ()
 Destroy an AudioEffect object.
virtual VstIntPtr dispatcher (VstInt32 opcode, VstInt32 index, VstIntPtr value, void *ptr, float opt)
 Opcodes dispatcher.
State Transitions
virtual void open ()
 Called when plug-in is initialized.
virtual void close ()
 Called when plug-in will be released.
virtual void suspend ()
 Called when plug-in is switched to off.
virtual void resume ()
 Called when plug-in is switched to on.
Processing
virtual void setSampleRate (float sampleRate)
 Called when the sample rate changes (always in a suspend state).
virtual void setBlockSize (VstInt32 blockSize)
 Called when the Maximun block size changes (always in a suspend state). Note that the sampleFrames in Process Calls could be smaller than this block size, but NOT bigger.
virtual void processReplacing (float **inputs, float **outputs, VstInt32 sampleFrames)=0
 Process 32 bit (single precision) floats (always in a resume state).
virtual void processDoubleReplacing (double **inputs, double **outputs, VstInt32 sampleFrames)
 Process 64 bit (double precision) floats (always in a resume state).
Parameters
virtual void setParameter (VstInt32 index, float value)
 Called when a parameter changed.
virtual float getParameter (VstInt32 index)
 Return the value of the parameter with index.
virtual void setParameterAutomated (VstInt32 index, float value)
 Called after a control has changed in the editor and when the associated parameter should be automated.
Programs and Persistence
virtual VstInt32 getProgram ()
 Return the index to the current program.
virtual void setProgram (VstInt32 program)
 Set the current program to program.
virtual void setProgramName (char *name)
 Stuff the name field of the current program with name. Limited to kVstMaxProgNameLen.
virtual void getProgramName (char *name)
 Stuff name with the name of the current program. Limited to kVstMaxProgNameLen.
virtual void getParameterLabel (VstInt32 index, char *label)
 Stuff label with the units in which parameter index is displayed (i.e. "sec", "dB", "type", etc...). Limited to kVstMaxParamStrLen.
virtual void getParameterDisplay (VstInt32 index, char *text)
 Stuff text with a string representation ("0.5", "-3", "PLATE", etc...) of the value of parameter index. Limited to kVstMaxParamStrLen.
virtual void getParameterName (VstInt32 index, char *text)
 Stuff text with the name ("Time", "Gain", "RoomType", etc...) of parameter index. Limited to kVstMaxParamStrLen.
virtual VstInt32 getChunk (void **data, bool isPreset=false)
 Host stores plug-in state. Returns the size in bytes of the chunk (plug-in allocates the data array).
virtual VstInt32 setChunk (void *data, VstInt32 byteSize, bool isPreset=false)
 Host restores plug-in state.
Internal Setup
virtual void setUniqueID (VstInt32 iD)
 Must be called to set the plug-ins unique ID!
virtual void setNumInputs (VstInt32 inputs)
 Set the number of inputs the plug-in will handle. For a plug-in which could change its IO configuration, this number is the maximun available inputs.
virtual void setNumOutputs (VstInt32 outputs)
 Set the number of outputs the plug-in will handle. For a plug-in which could change its IO configuration, this number is the maximun available ouputs.
virtual void canProcessReplacing (bool state=true)
 Tells that processReplacing() could be used. Mandatory in VST 2.4!
virtual void canDoubleReplacing (bool state=true)
 Tells that processDoubleReplacing() is implemented.
virtual void programsAreChunks (bool state=true)
 Program data is handled in formatless chunks (using getChunk-setChunks).
virtual void setInitialDelay (VstInt32 delay)
 Use to report the plug-in's latency (Group Delay).
Editor
void setEditor (AEffEditor *editor)
 Should be called if you want to define your own editor.
virtual AEffEditorgetEditor ()
 Returns the attached editor.
Inquiry
virtual AEffectgetAeffect ()
 Returns the AEffect structure.
virtual float getSampleRate ()
 Returns the current sample rate.
virtual VstInt32 getBlockSize ()
 Returns the current Maximum block size.
Host Communication
virtual VstInt32 getMasterVersion ()
 Returns the Host's version (for example 2400 for VST 2.4).
virtual VstInt32 getCurrentUniqueId ()
 Returns current unique identifier when loading shell plug-ins.
virtual void masterIdle ()
 Give idle time to Host application.
Tools (helpers)
virtual void dB2string (float value, char *text, VstInt32 maxLen)
 Stuffs text with an amplitude on the [0.0, 1.0] scale converted to its value in decibels.
virtual void Hz2string (float samples, char *text, VstInt32 maxLen)
 Stuffs text with the frequency in Hertz that has a period of samples.
virtual void ms2string (float samples, char *text, VstInt32 maxLen)
 Stuffs text with the duration in milliseconds of samples frames.
virtual void float2string (float value, char *text, VstInt32 maxLen)
 Stuffs text with a string representation on the floating point value.
virtual void int2string (VstInt32 value, char *text, VstInt32 maxLen)
 Stuffs text with a string representation on the integer value.

Protected Attributes

audioMasterCallback audioMaster
 Host callback.
AEffEditoreditor
 Pointer to the plug-in's editor.
float sampleRate
 Current sample rate.
VstInt32 blockSize
 Maximum block size.
VstInt32 numPrograms
 Number of programs.
VstInt32 numParams
 Number of parameters.
VstInt32 curProgram
 Current program.
AEffect cEffect
 AEffect object
+

Detailed Description

+VST Effect Base Class (VST 1.0). +

+


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
AudioEffect::AudioEffect (audioMasterCallback  audioMaster,
VstInt32  numPrograms,
VstInt32  numParams 
)
+
+
+ +

+Create an AudioEffect object. +

+The constructor of your class is passed a parameter of the type audioMasterCallback. The actual mechanism in which your class gets constructed is not important right now. Effectively your class is constructed by the hosting application, which passes an object of type audioMasterCallback that handles the interaction with the plug-in. You pass this on to the base class' constructor and then can forget about it.

+

Parameters:
+ + + + +
audioMaster Passed by the Host and handles interaction
numPrograms Pass the number of programs the plug-in provides
numParams Pass the number of parameters the plug-in provides
+
+
MyPlug::MyPlug (audioMasterCallback audioMaster)
+: AudioEffectX (audioMaster, 1, 1)    // 1 program, 1 parameter only
+{
+        setNumInputs (2); // stereo in
+        setNumOutputs (2); // stereo out
+        setUniqueID ('MyPl'); // you must change this for other plug-ins!
+        canProcessReplacing (); // supports replacing mode
+}
+

+

See also:
setNumInputs, setNumOutputs, setUniqueID, canProcessReplacing
+ +
+

+ +

+
+ + + + + + + + +
AudioEffect::~AudioEffect (  )  [virtual]
+
+
+ +

+Destroy an AudioEffect object. +

+ +

+

+


Member Function Documentation

+ +
+
+ + + + + + + + + +
void AudioEffect::canDoubleReplacing (bool  state = true  )  [virtual]
+
+
+ +

+Tells that processDoubleReplacing() is implemented. +

+

Parameters:
+ + +
state Set to true if supported
+
+
Note:
Needs to be called in the plug-in's constructor
+ +
+

+ +

+
+ + + + + + + + + +
void AudioEffect::canProcessReplacing (bool  state = true  )  [virtual]
+
+
+ +

+Tells that processReplacing() could be used. Mandatory in VST 2.4! +

+

Parameters:
+ + +
state Set to true if supported
+
+
Note:
Needs to be called in the plug-in's constructor
+ +
+

+ +

+
+ + + + + + + + +
virtual void AudioEffect::close (  )  [inline, virtual]
+
+
+ +

+Called when plug-in will be released. +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void AudioEffect::dB2string (float  value,
char *  text,
VstInt32  maxLen 
) [virtual]
+
+
+ +

+Stuffs text with an amplitude on the [0.0, 1.0] scale converted to its value in decibels. +

+

Parameters:
+ + + + +
value Value to convert
text String up to length char
maxLen Maximal length of the string
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VstIntPtr AudioEffect::dispatcher (VstInt32  opcode,
VstInt32  index,
VstIntPtr  value,
void *  ptr,
float  opt 
) [virtual]
+
+
+ +

+Opcodes dispatcher. +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void AudioEffect::float2string (float  value,
char *  text,
VstInt32  maxLen 
) [virtual]
+
+
+ +

+Stuffs text with a string representation on the floating point value. +

+

Parameters:
+ + + + +
value Value to convert
text String up to length char
maxLen Maximal length of the string
+
+ +
+

+ +

+
+ + + + + + + + +
virtual AEffect* AudioEffect::getAeffect (  )  [inline, virtual]
+
+
+ +

+Returns the AEffect structure. +

+ +

+

+ +

+
+ + + + + + + + +
virtual VstInt32 AudioEffect::getBlockSize (  )  [inline, virtual]
+
+
+ +

+Returns the current Maximum block size. +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
VstInt32 AudioEffect::getChunk (void **  data,
bool  isPreset = false 
) [inline, virtual]
+
+
+ +

+Host stores plug-in state. Returns the size in bytes of the chunk (plug-in allocates the data array). +

+

Parameters:
+ + + +
data should point to the newly allocated memory block containg state data. You can savely release it in next suspend/resume call.
isPreset true when saving a single program, false for all programs
+
+
Note:
If your plug-in is configured to use chunks (see AudioEffect::programsAreChunks), the Host will ask for a block of memory describing the current plug-in state for saving. To restore the state at a later stage, the same data is passed back to AudioEffect::setChunk. Alternatively, when not using chunk, the Host will simply save all parameter values.
+ +
+

+ +

+
+ + + + + + + + +
VstInt32 AudioEffect::getCurrentUniqueId (  )  [virtual]
+
+
+ +

+Returns current unique identifier when loading shell plug-ins. +

+

See also:
AudioEffectX::getNextShellPlugin
+ +
+

+ +

+
+ + + + + + + + +
virtual AEffEditor* AudioEffect::getEditor (  )  [inline, virtual]
+
+
+ +

+Returns the attached editor. +

+ +

+

+ +

+
+ + + + + + + + +
VstInt32 AudioEffect::getMasterVersion (  )  [virtual]
+
+
+ +

+Returns the Host's version (for example 2400 for VST 2.4). +

+Use to ask for the Host's version

Returns:
The Host's version
+ +
+

+ +

+
+ + + + + + + + + +
float AudioEffect::getParameter (VstInt32  index  )  [inline, virtual]
+
+
+ +

+Return the value of the parameter with index. +

+Return the value of parameter index

+

Parameters:
+ + +
index Index of the parameter
+
+
Returns:
A float value between 0.0 and 1.0 inclusive
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void AudioEffect::getParameterDisplay (VstInt32  index,
char *  text 
) [inline, virtual]
+
+
+ +

+Stuff text with a string representation ("0.5", "-3", "PLATE", etc...) of the value of parameter index. Limited to kVstMaxParamStrLen. +

+

Parameters:
+ + + +
index Index of the parameter
text A string up to 8 char
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void AudioEffect::getParameterLabel (VstInt32  index,
char *  label 
) [inline, virtual]
+
+
+ +

+Stuff label with the units in which parameter index is displayed (i.e. "sec", "dB", "type", etc...). Limited to kVstMaxParamStrLen. +

+

Parameters:
+ + + +
index Index of the parameter
label A string up to 8 char
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void AudioEffect::getParameterName (VstInt32  index,
char *  text 
) [inline, virtual]
+
+
+ +

+Stuff text with the name ("Time", "Gain", "RoomType", etc...) of parameter index. Limited to kVstMaxParamStrLen. +

+

Parameters:
+ + + +
index Index of the parameter
text A string up to 8 char
+
+ +
+

+ +

+
+ + + + + + + + +
VstInt32 AudioEffect::getProgram (  )  [inline, virtual]
+
+
+ +

+Return the index to the current program. +

+

Returns:
Index of the current program
+ +
+

+ +

+
+ + + + + + + + + +
void AudioEffect::getProgramName (char *  name  )  [inline, virtual]
+
+
+ +

+Stuff name with the name of the current program. Limited to kVstMaxProgNameLen. +

+The program name is displayed in the rack, and can be edited by the user.

+

Parameters:
+ + +
name A string up to 24 char
+
+
Warning:
Please be aware that the string lengths supported by the default VST interface are normally limited to 24 characters. If you copy too much data into the buffers provided, you will break the Host application.
+ +
+

+ +

+
+ + + + + + + + +
virtual float AudioEffect::getSampleRate (  )  [inline, virtual]
+
+
+ +

+Returns the current sample rate. +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void AudioEffect::Hz2string (float  samples,
char *  text,
VstInt32  maxLen 
) [virtual]
+
+
+ +

+Stuffs text with the frequency in Hertz that has a period of samples. +

+

Parameters:
+ + + + +
samples Number of samples
text String up to length char
maxLen Maximal length of the string
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void AudioEffect::int2string (VstInt32  value,
char *  text,
VstInt32  maxLen 
) [virtual]
+
+
+ +

+Stuffs text with a string representation on the integer value. +

+

Parameters:
+ + + + +
value Value to convert
text String up to length char
maxLen Maximal length of the string
+
+ +
+

+ +

+
+ + + + + + + + +
void AudioEffect::masterIdle (  )  [virtual]
+
+
+ +

+Give idle time to Host application. +

+Give idle time to Host application, e.g. if plug-in editor is doing mouse tracking in a modal loop. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void AudioEffect::ms2string (float  samples,
char *  text,
VstInt32  maxLen 
) [virtual]
+
+
+ +

+Stuffs text with the duration in milliseconds of samples frames. +

+

Parameters:
+ + + + +
samples Number of samples
text String up to length char
maxLen Maximal length of the string
+
+ +
+

+ +

+
+ + + + + + + + +
virtual void AudioEffect::open (  )  [inline, virtual]
+
+
+ +

+Called when plug-in is initialized. +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void AudioEffect::processDoubleReplacing (double **  inputs,
double **  outputs,
VstInt32  sampleFrames 
) [inline, virtual]
+
+
+ +

+Process 64 bit (double precision) floats (always in a resume state). +

+

See also:
processReplacing
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void AudioEffect::processReplacing (float **  inputs,
float **  outputs,
VstInt32  sampleFrames 
) [pure virtual]
+
+
+ +

+Process 32 bit (single precision) floats (always in a resume state). +

+This process method must be provided. It takes input data, applies its pocessing algorithm, and then puts the result to the output by overwriting the output buffer.

+

Parameters:
+ + + + +
inputs An array of pointers to the data
outputs An array of pointers to where the data can be written to
sampleFrames Number of sample frames to process
+
+
Warning:
Never call any Mac OS 9 functions (or other functions which call into the OS) inside your audio process function! This will crash the system when your plug-in is run in MP (multiprocessor) mode. If you must call into the OS, you must use MPRemoteCall () (see Apples' documentation), or explicitly use functions which are documented by Apple to be MP safe. On Mac OS X read the system header files to be sure that you only call thread safe functions.
+ +
+

+ +

+
+ + + + + + + + + +
void AudioEffect::programsAreChunks (bool  state = true  )  [virtual]
+
+
+ +

+Program data is handled in formatless chunks (using getChunk-setChunks). +

+

Parameters:
+ + +
state Set true if programs are chunks
+
+
Note:
Needs to be called in the plug-in's constructor
+ +
+

+ +

+
+ + + + + + + + +
virtual void AudioEffect::resume (  )  [inline, virtual]
+
+
+ +

+Called when plug-in is switched to on. +

+ +

+

+ +

+
+ + + + + + + + + +
void AudioEffect::setBlockSize (VstInt32  blockSize  )  [inline, virtual]
+
+
+ +

+Called when the Maximun block size changes (always in a suspend state). Note that the sampleFrames in Process Calls could be smaller than this block size, but NOT bigger. +

+This is called by the Host, and tells the plug-in that the maximum block size passed to processReplacing() will be blockSize.

+

Parameters:
+ + +
blockSize Maximum number of sample frames
+
+
Warning:
You must process exactly sampleFrames number of samples in inside processReplacing, not more!
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
VstInt32 AudioEffect::setChunk (void *  data,
VstInt32  byteSize,
bool  isPreset = false 
) [inline, virtual]
+
+
+ +

+Host restores plug-in state. +

+

Parameters:
+ + + + +
data pointer to state data (owned by Host)
byteSize size of state data
isPreset true when restoring a single program, false for all programs
+
+
See also:
getChunk
+ +
+

+ +

+
+ + + + + + + + + +
void AudioEffect::setEditor (AEffEditor editor  ) 
+
+
+ +

+Should be called if you want to define your own editor. +

+ +

+

+ +

+
+ + + + + + + + + +
void AudioEffect::setInitialDelay (VstInt32  delay  )  [virtual]
+
+
+ +

+Use to report the plug-in's latency (Group Delay). +

+Use to report the Plug-in's latency (Group Delay)

+

Parameters:
+ + +
delay Plug-ins delay in samples
+
+ +
+

+ +

+
+ + + + + + + + + +
void AudioEffect::setNumInputs (VstInt32  inputs  )  [inline, virtual]
+
+
+ +

+Set the number of inputs the plug-in will handle. For a plug-in which could change its IO configuration, this number is the maximun available inputs. +

+This number is fixed at construction time and can't change until the plug-in is destroyed.

+

Parameters:
+ + +
inputs The number of inputs
+
+
See also:
isInputConnected()
+
Note:
Needs to be called in the plug-in's constructor
+ +
+

+ +

+
+ + + + + + + + + +
void AudioEffect::setNumOutputs (VstInt32  outputs  )  [inline, virtual]
+
+
+ +

+Set the number of outputs the plug-in will handle. For a plug-in which could change its IO configuration, this number is the maximun available ouputs. +

+This number is fixed at construction time and can't change until the plug-in is destroyed.

+

Parameters:
+ + +
outputs The number of outputs
+
+
See also:
isOutputConnected()
+
Note:
Needs to be called in the plug-in's constructor
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void AudioEffect::setParameter (VstInt32  index,
float  value 
) [inline, virtual]
+
+
+ +

+Called when a parameter changed. +

+Parameters are the individual parameter settings the user can adjust. A VST Host can automate these parameters. Set parameter index to value.

+

Parameters:
+ + + +
index Index of the parameter to change
value A float value between 0.0 and 1.0 inclusive
+
+
Note:
Parameter values, like all VST parameters, are declared as floats with an inclusive range of 0.0 to 1.0. How data is presented to the user is merely in the user-interface handling. This is a convention, but still worth regarding. Maybe the VST-Host's automation system depends on this range.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
void AudioEffect::setParameterAutomated (VstInt32  index,
float  value 
) [virtual]
+
+
+ +

+Called after a control has changed in the editor and when the associated parameter should be automated. +

+

Parameters:
+ + + +
index parameter index
float parameter value
+
+
Note:
An important thing to notice is that if the user changes a parameter in your editor, which is out of the Host's control if you are not using the default string based interface, you should call setParameterAutomated (). This ensures that the Host is notified of the parameter change, which allows it to record these changes for automation.
+
See also:
setParameter
+ +
+

+ +

+
+ + + + + + + + + +
void AudioEffect::setProgram (VstInt32  program  )  [inline, virtual]
+
+
+ +

+Set the current program to program. +

+

Parameters:
+ + +
Program of the current program
+
+ +
+

+ +

+
+ + + + + + + + + +
void AudioEffect::setProgramName (char *  name  )  [inline, virtual]
+
+
+ +

+Stuff the name field of the current program with name. Limited to kVstMaxProgNameLen. +

+The program name is displayed in the rack, and can be edited by the user.

+

Parameters:
+ + +
name A string up to 24 char
+
+
Warning:
Please be aware that the string lengths supported by the default VST interface are normally limited to 24 characters. If you copy too much data into the buffers provided, you will break the Host application.
+ +
+

+ +

+
+ + + + + + + + + +
virtual void AudioEffect::setSampleRate (float  sampleRate  )  [inline, virtual]
+
+
+ +

+Called when the sample rate changes (always in a suspend state). +

+ +

+

+ +

+
+ + + + + + + + + +
void AudioEffect::setUniqueID (VstInt32  iD  )  [inline, virtual]
+
+
+ +

+Must be called to set the plug-ins unique ID! +

+Must call this! Set the plug-in's unique identifier. The Host uses this to identify the plug-in, for instance when it is loading effect programs and banks. On Steinberg Web Page you can find an UniqueID Database where you can record your UniqueID, it will check if the ID is already used by an another vendor. You can use CCONST('a','b','c','d') (defined in VST 2.0) to be platform independent to initialize an UniqueID.

+

Parameters:
+ + +
iD Plug-in's unique ID
+
+
Note:
Needs to be called in the plug-in's constructor
+ +
+

+ +

+
+ + + + + + + + +
virtual void AudioEffect::suspend (  )  [inline, virtual]
+
+
+ +

+Called when plug-in is switched to off. +

+ +

+

+


Member Data Documentation

+ +
+
+ + + + +
audioMasterCallback AudioEffect::audioMaster [protected]
+
+
+ +

+Host callback. +

+ +

+

+ +

+
+ + + + +
VstInt32 AudioEffect::blockSize [protected]
+
+
+ +

+Maximum block size. +

+ +

+

+ +

+
+ + + + +
AEffect AudioEffect::cEffect [protected]
+
+
+ +

+AEffect object +

+ +

+

+ +

+
+ + + + +
VstInt32 AudioEffect::curProgram [protected]
+
+
+ +

+Current program. +

+ +

+

+ +

+
+ + + + +
AEffEditor* AudioEffect::editor [protected]
+
+
+ +

+Pointer to the plug-in's editor. +

+ +

+

+ +

+
+ + + + +
VstInt32 AudioEffect::numParams [protected]
+
+
+ +

+Number of parameters. +

+ +

+

+ +

+
+ + + + +
VstInt32 AudioEffect::numPrograms [protected]
+
+
+ +

+Number of programs. +

+ +

+

+ +

+
+ + + + +
float AudioEffect::sampleRate [protected]
+
+
+ +

+Current sample rate. +

+ +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/class_audio_effect.png b/doc/html/class_audio_effect.png new file mode 100644 index 0000000..d2ed25a Binary files /dev/null and b/doc/html/class_audio_effect.png differ diff --git a/doc/html/class_audio_effect_x-members.html b/doc/html/class_audio_effect_x-members.html new file mode 100644 index 0000000..0fd1f01 --- /dev/null +++ b/doc/html/class_audio_effect_x-members.html @@ -0,0 +1,159 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

AudioEffectX Member List

This is the complete list of members for AudioEffectX, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
allocateArrangement(VstSpeakerArrangement **arrangement, VstInt32 nbChannels)AudioEffectX [virtual]
AudioEffect(audioMasterCallback audioMaster, VstInt32 numPrograms, VstInt32 numParams)AudioEffect
AudioEffectX(audioMasterCallback audioMaster, VstInt32 numPrograms, VstInt32 numParams)AudioEffectX
audioMasterAudioEffect [protected]
beginEdit(VstInt32 index)AudioEffectX [virtual]
beginLoadBank(VstPatchChunkInfo *ptr)AudioEffectX [inline, virtual]
beginLoadProgram(VstPatchChunkInfo *ptr)AudioEffectX [inline, virtual]
beginSetProgram()AudioEffectX [inline, virtual]
blockSizeAudioEffect [protected]
canDo(char *text)AudioEffectX [inline, virtual]
canDoubleReplacing(bool state=true)AudioEffect [virtual]
canHostDo(char *text)AudioEffectX [virtual]
canParameterBeAutomated(VstInt32 index)AudioEffectX [inline, virtual]
canProcessReplacing(bool state=true)AudioEffect [virtual]
cEffectAudioEffect [protected]
close()AudioEffect [inline, virtual]
closeFileSelector(VstFileSelect *ptr)AudioEffectX [virtual]
copySpeaker(VstSpeakerProperties *to, VstSpeakerProperties *from)AudioEffectX [virtual]
curProgramAudioEffect [protected]
dB2string(float value, char *text, VstInt32 maxLen)AudioEffect [virtual]
deallocateArrangement(VstSpeakerArrangement **arrangement)AudioEffectX [virtual]
dispatcher(VstInt32 opcode, VstInt32 index, VstIntPtr value, void *ptr, float opt)AudioEffect [virtual]
editorAudioEffect [protected]
endEdit(VstInt32 index)AudioEffectX [virtual]
endSetProgram()AudioEffectX [inline, virtual]
float2string(float value, char *text, VstInt32 maxLen)AudioEffect [virtual]
getAeffect()AudioEffect [inline, virtual]
getAutomationState()AudioEffectX [virtual]
getBlockSize()AudioEffect [inline, virtual]
getChunk(void **data, bool isPreset=false)AudioEffect [inline, virtual]
getCurrentMidiProgram(VstInt32 channel, MidiProgramName *currentProgram)AudioEffectX [inline, virtual]
getCurrentProcessLevel()AudioEffectX [virtual]
getCurrentUniqueId()AudioEffect [virtual]
getDirectory()AudioEffectX [virtual]
getEditor()AudioEffect [inline, virtual]
getEffectName(char *name)AudioEffectX [inline, virtual]
getGetTailSize()AudioEffectX [inline, virtual]
getHostLanguage()AudioEffectX [virtual]
getHostProductString(char *text)AudioEffectX [virtual]
getHostVendorString(char *text)AudioEffectX [virtual]
getHostVendorVersion()AudioEffectX [virtual]
getInputLatency()AudioEffectX [virtual]
getInputProperties(VstInt32 index, VstPinProperties *properties)AudioEffectX [inline, virtual]
getMasterVersion()AudioEffect [virtual]
getMidiKeyName(VstInt32 channel, MidiKeyName *keyName)AudioEffectX [inline, virtual]
getMidiProgramCategory(VstInt32 channel, MidiProgramCategory *category)AudioEffectX [inline, virtual]
getMidiProgramName(VstInt32 channel, MidiProgramName *midiProgramName)AudioEffectX [inline, virtual]
getNextShellPlugin(char *name)AudioEffectX [inline, virtual]
getNumMidiInputChannels()AudioEffectX [inline, virtual]
getNumMidiOutputChannels()AudioEffectX [inline, virtual]
getOutputLatency()AudioEffectX [virtual]
getOutputProperties(VstInt32 index, VstPinProperties *properties)AudioEffectX [inline, virtual]
getParameter(VstInt32 index)AudioEffect [inline, virtual]
getParameterDisplay(VstInt32 index, char *text)AudioEffect [inline, virtual]
getParameterLabel(VstInt32 index, char *label)AudioEffect [inline, virtual]
getParameterName(VstInt32 index, char *text)AudioEffect [inline, virtual]
getParameterProperties(VstInt32 index, VstParameterProperties *p)AudioEffectX [inline, virtual]
getPlugCategory()AudioEffectX [virtual]
getProductString(char *text)AudioEffectX [inline, virtual]
getProgram()AudioEffect [inline, virtual]
getProgramName(char *name)AudioEffect [inline, virtual]
getProgramNameIndexed(VstInt32 category, VstInt32 index, char *text)AudioEffectX [inline, virtual]
getSampleRate()AudioEffect [inline, virtual]
getSpeakerArrangement(VstSpeakerArrangement **pluginInput, VstSpeakerArrangement **pluginOutput)AudioEffectX [inline, virtual]
getTimeInfo(VstInt32 filter)AudioEffectX [virtual]
getVendorString(char *text)AudioEffectX [inline, virtual]
getVendorVersion()AudioEffectX [inline, virtual]
getVstVersion()AudioEffectX [inline, virtual]
hasMidiProgramsChanged(VstInt32 channel)AudioEffectX [inline, virtual]
hostVendorSpecific(VstInt32 lArg1, VstIntPtr lArg2, void *ptrArg, float floatArg)AudioEffectX [virtual]
Hz2string(float samples, char *text, VstInt32 maxLen)AudioEffect [virtual]
int2string(VstInt32 value, char *text, VstInt32 maxLen)AudioEffect [virtual]
ioChanged()AudioEffectX [virtual]
isSynth(bool state=true)AudioEffectX [virtual]
masterIdle()AudioEffect [virtual]
matchArrangement(VstSpeakerArrangement **to, VstSpeakerArrangement *from)AudioEffectX [virtual]
ms2string(float samples, char *text, VstInt32 maxLen)AudioEffect [virtual]
noTail(bool state=true)AudioEffectX [virtual]
numParamsAudioEffect [protected]
numProgramsAudioEffect [protected]
open()AudioEffect [inline, virtual]
openFileSelector(VstFileSelect *ptr)AudioEffectX [virtual]
processDoubleReplacing(double **inputs, double **outputs, VstInt32 sampleFrames)AudioEffect [inline, virtual]
processEvents(VstEvents *events)AudioEffectX [inline, virtual]
processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames)=0AudioEffect [pure virtual]
processVariableIo(VstVariableIo *varIo)AudioEffectX [inline, virtual]
programsAreChunks(bool state=true)AudioEffect [virtual]
resume()AudioEffect [inline, virtual]
sampleRateAudioEffect [protected]
sendVstEventsToHost(VstEvents *events)AudioEffectX
setBlockSize(VstInt32 blockSize)AudioEffect [inline, virtual]
setBypass(bool onOff)AudioEffectX [inline, virtual]
setChunk(void *data, VstInt32 byteSize, bool isPreset=false)AudioEffect [inline, virtual]
setEditor(AEffEditor *editor)AudioEffect
setInitialDelay(VstInt32 delay)AudioEffect [virtual]
setNumInputs(VstInt32 inputs)AudioEffect [inline, virtual]
setNumOutputs(VstInt32 outputs)AudioEffect [inline, virtual]
setPanLaw(VstInt32 type, float val)AudioEffectX [inline, virtual]
setParameter(VstInt32 index, float value)AudioEffect [inline, virtual]
setParameterAutomated(VstInt32 index, float value)AudioEffect [virtual]
setProcessPrecision(VstInt32 precision)AudioEffectX [inline, virtual]
setProgram(VstInt32 program)AudioEffect [inline, virtual]
setProgramName(char *name)AudioEffect [inline, virtual]
setSampleRate(float sampleRate)AudioEffect [inline, virtual]
setSpeakerArrangement(VstSpeakerArrangement *pluginInput, VstSpeakerArrangement *pluginOutput)AudioEffectX [inline, virtual]
setTotalSampleToProcess(VstInt32 value)AudioEffectX [inline, virtual]
setUniqueID(VstInt32 iD)AudioEffect [inline, virtual]
sizeWindow(VstInt32 width, VstInt32 height)AudioEffectX [virtual]
startProcess()AudioEffectX [inline, virtual]
stopProcess()AudioEffectX [inline, virtual]
string2parameter(VstInt32 index, char *text)AudioEffectX [inline, virtual]
suspend()AudioEffect [inline, virtual]
updateBlockSize()AudioEffectX [virtual]
updateDisplay()AudioEffectX [virtual]
updateSampleRate()AudioEffectX [virtual]
vendorSpecific(VstInt32 lArg, VstIntPtr lArg2, void *ptrArg, float floatArg)AudioEffectX [inline, virtual]
~AudioEffect()AudioEffect [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/class_audio_effect_x.html b/doc/html/class_audio_effect_x.html new file mode 100644 index 0000000..efaadc5 --- /dev/null +++ b/doc/html/class_audio_effect_x.html @@ -0,0 +1,2406 @@ + + +VST SDK 2.4: AudioEffectX Class Reference + + + + +
+
+
+
+

AudioEffectX Class Reference

#include <audioeffectx.h> +

+

Inheritance diagram for AudioEffectX: +

+ +AudioEffect + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 AudioEffectX (audioMasterCallback audioMaster, VstInt32 numPrograms, VstInt32 numParams)
 Create an AudioEffectX object.
Parameters
virtual bool canParameterBeAutomated (VstInt32 index)
 Indicates if a parameter can be automated.
virtual bool string2parameter (VstInt32 index, char *text)
 Convert a string representation to a parameter value.
virtual bool getParameterProperties (VstInt32 index, VstParameterProperties *p)
 Return parameter properties.
virtual bool beginEdit (VstInt32 index)
 To be called before setParameterAutomated (on Mouse Down). This will be used by the Host for specific Automation Recording.
virtual bool endEdit (VstInt32 index)
 To be called after setParameterAutomated (on Mouse Up).
Programs and Persistence
virtual bool getProgramNameIndexed (VstInt32 category, VstInt32 index, char *text)
 Fill text with name of program index (category deprecated in VST 2.4).
virtual bool beginSetProgram ()
 Called before a program is loaded.
virtual bool endSetProgram ()
 Called after a program was loaded.
virtual VstInt32 beginLoadBank (VstPatchChunkInfo *ptr)
 Called before a Bank is loaded.
virtual VstInt32 beginLoadProgram (VstPatchChunkInfo *ptr)
 Called before a Program is loaded. (called before beginSetProgram).
Connections and Configuration
virtual bool ioChanged ()
 Tell Host numInputs and/or numOutputs and/or initialDelay (and/or numParameters: to be avoid) have changed.
virtual double updateSampleRate ()
 Returns sample rate from Host (may issue setSampleRate()).
virtual VstInt32 updateBlockSize ()
 Returns block size from Host (may issue getBlockSize()).
virtual VstInt32 getInputLatency ()
 Returns the Audio (maybe ASIO) input latency values.
virtual VstInt32 getOutputLatency ()
 Returns the Audio (maybe ASIO) output latency values.
virtual bool getInputProperties (VstInt32 index, VstPinProperties *properties)
 Return the properties of output index.
virtual bool getOutputProperties (VstInt32 index, VstPinProperties *properties)
 Return the properties of input index.
virtual bool setSpeakerArrangement (VstSpeakerArrangement *pluginInput, VstSpeakerArrangement *pluginOutput)
 Set the plug-in's speaker arrangements.
virtual bool getSpeakerArrangement (VstSpeakerArrangement **pluginInput, VstSpeakerArrangement **pluginOutput)
 Return the plug-in's speaker arrangements.
virtual bool setBypass (bool onOff)
 For 'soft-bypass' (this could be automated (in Audio Thread) that why you could NOT call iochanged (if needed) in this function, do it in fxidle).
virtual bool setPanLaw (VstInt32 type, float val)
 Set the Panning Law used by the Host.
virtual bool setProcessPrecision (VstInt32 precision)
 Set floating-point precision used for processing (32 or 64 bit).
virtual VstInt32 getNumMidiInputChannels ()
 Returns number of MIDI input channels used [0, 16].
virtual VstInt32 getNumMidiOutputChannels ()
 Returns number of MIDI output channels used [0, 16].
Realtime
virtual VstTimeInfogetTimeInfo (VstInt32 filter)
 Get time information from Host.
virtual VstInt32 getCurrentProcessLevel ()
 Returns the Host's process level.
virtual VstInt32 getAutomationState ()
 Returns the Host's automation state.
virtual VstInt32 processEvents (VstEvents *events)
 Called when new MIDI events come in.
bool sendVstEventsToHost (VstEvents *events)
 Send MIDI events back to Host application.
virtual VstInt32 startProcess ()
 Called one time before the start of process call. This indicates that the process call will be interrupted (due to Host reconfiguration or bypass state when the plug-in doesn't support softBypass).
virtual VstInt32 stopProcess ()
 Called after the stop of process call.
Variable I/O (Offline)
virtual bool processVariableIo (VstVariableIo *varIo)
 Used for variable I/O processing (offline processing like timestreching).
virtual VstInt32 setTotalSampleToProcess (VstInt32 value)
 Called in offline mode before process() or processVariableIo ().
Host Properties
virtual bool getHostVendorString (char *text)
 Fills text with a string identifying the vendor.
virtual bool getHostProductString (char *text)
 Fills text with a string with product name.
virtual VstInt32 getHostVendorVersion ()
 Returns vendor-specific version (for example 3200 for Nuendo 3.2).
virtual VstIntPtr hostVendorSpecific (VstInt32 lArg1, VstIntPtr lArg2, void *ptrArg, float floatArg)
 No specific definition.
virtual VstInt32 canHostDo (char *text)
 Reports what the Host is able to do (hostCanDos in audioeffectx.cpp).
virtual VstInt32 getHostLanguage ()
 Returns the Host's language (VstHostLanguage).
Plug-in Properties
virtual void isSynth (bool state=true)
 Set if plug-in is a synth.
virtual void noTail (bool state=true)
 Plug-in won't produce output signals while there is no input.
virtual VstInt32 getGetTailSize ()
 Returns tail size; 0 is default (return 1 for 'no tail'), used in offline processing too.
virtual void * getDirectory ()
 Returns the plug-in's directory.
virtual bool getEffectName (char *name)
 Fill text with a string identifying the effect.
virtual bool getVendorString (char *text)
 Fill text with a string identifying the vendor.
virtual bool getProductString (char *text)
 Fill text with a string identifying the product name.
virtual VstInt32 getVendorVersion ()
 Return vendor-specific version.
virtual VstIntPtr vendorSpecific (VstInt32 lArg, VstIntPtr lArg2, void *ptrArg, float floatArg)
 No definition, vendor specific handling.
virtual VstInt32 canDo (char *text)
 Reports what the plug-in is able to do (plugCanDos in audioeffectx.cpp).
virtual VstInt32 getVstVersion ()
 Returns the current VST Version (kVstVersion).
virtual VstPlugCategory getPlugCategory ()
 Specify a category that fits the plug (VstPlugCategory).
MIDI Channel Programs
virtual VstInt32 getMidiProgramName (VstInt32 channel, MidiProgramName *midiProgramName)
 Fill midiProgramName with information for 'thisProgramIndex'.
virtual VstInt32 getCurrentMidiProgram (VstInt32 channel, MidiProgramName *currentProgram)
 Fill currentProgram with information for the current MIDI program.
virtual VstInt32 getMidiProgramCategory (VstInt32 channel, MidiProgramCategory *category)
 Fill category with information for 'thisCategoryIndex'.
virtual bool hasMidiProgramsChanged (VstInt32 channel)
 Return true if the MidiProgramNames, MidiKeyNames or MidiControllerNames had changed on this MIDI channel.
virtual bool getMidiKeyName (VstInt32 channel, MidiKeyName *keyName)
 Fill keyName with information for 'thisProgramIndex' and 'thisKeyNumber'.
Others
virtual bool updateDisplay ()
 Something has changed in plug-in, request an update display like program (MIDI too) and parameters list in Host.
virtual bool sizeWindow (VstInt32 width, VstInt32 height)
 Requests to resize the editor window.
virtual bool openFileSelector (VstFileSelect *ptr)
 Open a Host File selector (see aeffectx.h for VstFileSelect definition).
virtual bool closeFileSelector (VstFileSelect *ptr)
 Close the Host File selector which was opened by openFileSelector.
virtual VstInt32 getNextShellPlugin (char *name)
 This opcode is only called, if the plug-in is of type kPlugCategShell, in order to extract all included sub-plugin´s names.
Tools
virtual bool allocateArrangement (VstSpeakerArrangement **arrangement, VstInt32 nbChannels)
 Allocate memory for a VstSpeakerArrangement.
virtual bool deallocateArrangement (VstSpeakerArrangement **arrangement)
 Delete/free memory for an allocated speaker arrangement.
virtual bool copySpeaker (VstSpeakerProperties *to, VstSpeakerProperties *from)
 Copy properties from to to.
virtual bool matchArrangement (VstSpeakerArrangement **to, VstSpeakerArrangement *from)
 "to" is deleted, then created and initialized with the same values as "from" ones ("from" must exist).
+

Detailed Description

+Extended VST Effect Class (VST 2.x). +

+


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
AudioEffectX::AudioEffectX (audioMasterCallback  audioMaster,
VstInt32  numPrograms,
VstInt32  numParams 
)
+
+
+ +

+Create an AudioEffectX object. +

+

See also:
AudioEffect()
+ +
+

+


Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool AudioEffectX::allocateArrangement (VstSpeakerArrangement **  arrangement,
VstInt32  nbChannels 
) [virtual]
+
+
+ +

+Allocate memory for a VstSpeakerArrangement. +

+

Parameters:
+ + + +
arrangement Pointer to a VstSpeakerArrangement structure
nbChannels Number of Channels
+
+
Returns:
Returns true on success
+
See also:
deallocateArrangement(), copySpeaker(), matchArrangement()
+ +
+

+ +

+
+ + + + + + + + + +
bool AudioEffectX::beginEdit (VstInt32  index  )  [virtual]
+
+
+ +

+To be called before setParameterAutomated (on Mouse Down). This will be used by the Host for specific Automation Recording. +

+It tells the Host that if it needs to, it has to record automation data for this control.

+

Parameters:
+ + +
index Index of the parameter
+
+
Returns:
Returns true on success
+
See also:
endEdit()
+ +
+

+ +

+
+ + + + + + + + + +
VstInt32 AudioEffectX::beginLoadBank (VstPatchChunkInfo ptr  )  [inline, virtual]
+
+
+ +

+Called before a Bank is loaded. +

+

Parameters:
+ + +
ptr 
+
+
Returns:
    +
  • -1: if the Bank cannot be loaded,
  • 1: if it can be loaded
  • 0: else (for compatibility)
+
+
See also:
beginLoadProgram()
+ +
+

+ +

+
+ + + + + + + + + +
VstInt32 AudioEffectX::beginLoadProgram (VstPatchChunkInfo ptr  )  [inline, virtual]
+
+
+ +

+Called before a Program is loaded. (called before beginSetProgram). +

+

Parameters:
+ + +
ptr 
+
+
Returns:
    +
  • -1: if the Program cannot be loaded,
  • 1: it can be loaded else,
  • 0: else (for compatibility)
+
+
See also:
beginLoadBank()
+ +
+

+ +

+
+ + + + + + + + +
bool AudioEffectX::beginSetProgram (  )  [inline, virtual]
+
+
+ +

+Called before a program is loaded. +

+

Returns:
    +
  • true: the plug-in took the notification into account
  • false: it did not...
+
+
See also:
endSetProgram()
+ +
+

+ +

+
+ + + + + + + + + +
VstInt32 AudioEffectX::canDo (char *  text  )  [inline, virtual]
+
+
+ +

+Reports what the plug-in is able to do (plugCanDos in audioeffectx.cpp). +

+Report what the plug-in is able to do. In general you can but don't have to report whatever you support or not support via canDo. Some application functionality may require some specific reply, but in that case you will probably know. Best is to report whatever you know for sure. A Host application cannot make assumptions about the presence of the new 2.x features of a plug-in. Ignoring this inquiry methods and trying to access a 2.x feature from a 1.0 plug, or vice versa, will mean the plug-in or Host application will break. It is not the end-users job to pick and choose which plug-ins can be supported by which Host.

+

Parameters:
+ + +
text A string from plugCanDos
+
+
Returns:
    +
  • 0: don't know (default)
  • 1: yes
  • -1: no
+
+
Note:
This should be supported.
+ +
+

+ +

+
+ + + + + + + + + +
VstInt32 AudioEffectX::canHostDo (char *  text  )  [virtual]
+
+
+ +

+Reports what the Host is able to do (hostCanDos in audioeffectx.cpp). +

+Asks Host if it implements the feature text. A plug-in cannot assume a 2.x feature is available from the Host. Use this method to ascertain the environment in which the plug-in finds itself. Ignoring this inquiry methods and trying to access a 2.x feature in a 1.0 Host will mean your plug-in or Host application will break. It is not the end-users job to pick and choose which plug-ins can be supported by which Host.

+

Parameters:
+ + +
text A string from hostCanDos
+
+
Returns:
    +
  • 0 : don't know (default)
  • 1 : yes
  • -1: no
+
+ +
+

+ +

+
+ + + + + + + + + +
bool AudioEffectX::canParameterBeAutomated (VstInt32  index  )  [inline, virtual]
+
+
+ +

+Indicates if a parameter can be automated. +

+Obviously only useful when the application supports this.

+

Parameters:
+ + +
index Index of the parameter
+
+
Returns:
if supported
+ +
+

+ +

+
+ + + + + + + + + +
bool AudioEffectX::closeFileSelector (VstFileSelect ptr  )  [virtual]
+
+
+ +

+Close the Host File selector which was opened by openFileSelector. +

+

Parameters:
+ + +
ptr 
+
+
Returns:
Returns true on success
+
See also:
openFileSelector()
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool AudioEffectX::copySpeaker (VstSpeakerProperties to,
VstSpeakerProperties from 
) [virtual]
+
+
+ +

+Copy properties from to to. +

+Feed the to speaker properties with the same values than from 's ones. It is assumed here that to exists yet, ie this function won't allocate memory for the speaker (this will prevent from having a difference between an Arrangement's number of channels and its actual speakers...)

+

Parameters:
+ + + +
to 
from 
+
+
Returns:
Returns true on success
+
See also:
allocateArrangement(), deallocateArrangement(), matchArrangement()
+ +
+

+ +

+
+ + + + + + + + + +
bool AudioEffectX::deallocateArrangement (VstSpeakerArrangement **  arrangement  )  [virtual]
+
+
+ +

+Delete/free memory for an allocated speaker arrangement. +

+

Parameters:
+ + +
arrangement Pointer to a VstSpeakerArrangement structure
+
+
Returns:
Returns true on success
+
See also:
allocateArrangement(), copySpeaker(), matchArrangement()
+ +
+

+ +

+
+ + + + + + + + + +
bool AudioEffectX::endEdit (VstInt32  index  )  [virtual]
+
+
+ +

+To be called after setParameterAutomated (on Mouse Up). +

+It notifies the Host that this control is no longer moved by the mouse.

+

Parameters:
+ + +
index Index of the parameter
+
+
Returns:
Returns true on success
+
See also:
beginEdit()
+ +
+

+ +

+
+ + + + + + + + +
bool AudioEffectX::endSetProgram (  )  [inline, virtual]
+
+
+ +

+Called after a program was loaded. +

+

Returns:
    +
  • true: the plug-in took the notification into account
  • false: it did not...
+
+
See also:
beginSetProgram()
+ +
+

+ +

+
+ + + + + + + + +
VstInt32 AudioEffectX::getAutomationState (  )  [virtual]
+
+
+ +

+Returns the Host's automation state. +

+

Returns:
VstAutomationStates in aeffectx.h
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
VstInt32 AudioEffectX::getCurrentMidiProgram (VstInt32  channel,
MidiProgramName currentProgram 
) [inline, virtual]
+
+
+ +

+Fill currentProgram with information for the current MIDI program. +

+

Parameters:
+ + + +
channel 
currentProgram 
+
+
Returns:
    +
  • programIndex of the current program
  • -1 if not supported
+
+ +
+

+ +

+
+ + + + + + + + +
VstInt32 AudioEffectX::getCurrentProcessLevel (  )  [virtual]
+
+
+ +

+Returns the Host's process level. +

+A plug-in is like a black box processing some audio coming in on some inputs (if any) and going out of some outputs (if any). This may be used to do offline or real-time processing, and sometimes it may be desirable to know the current context.

+

Returns:
VstProcessLevels in aeffectx.h
+ +
+

+ +

+
+ + + + + + + + +
void * AudioEffectX::getDirectory (  )  [virtual]
+
+
+ +

+Returns the plug-in's directory. +

+

Returns:
FSSpec on MAC, else char*
+ +
+

+ +

+
+ + + + + + + + + +
bool AudioEffectX::getEffectName (char *  name  )  [inline, virtual]
+
+
+ +

+Fill text with a string identifying the effect. +

+

Parameters:
+ + +
name A string up to 32 chars
+
+
Returns:
true on success
+ +
+

+ +

+
+ + + + + + + + +
virtual VstInt32 AudioEffectX::getGetTailSize (  )  [inline, virtual]
+
+
+ +

+Returns tail size; 0 is default (return 1 for 'no tail'), used in offline processing too. +

+ +

+

+ +

+
+ + + + + + + + +
VstInt32 AudioEffectX::getHostLanguage (  )  [virtual]
+
+
+ +

+Returns the Host's language (VstHostLanguage). +

+

Returns:
VstHostLanguage in aeffectx.h
+ +
+

+ +

+
+ + + + + + + + + +
bool AudioEffectX::getHostProductString (char *  text  )  [virtual]
+
+
+ +

+Fills text with a string with product name. +

+

Parameters:
+ + +
text String of maximum 64 char
+
+
Returns:
true if supported
+ +
+

+ +

+
+ + + + + + + + + +
bool AudioEffectX::getHostVendorString (char *  text  )  [virtual]
+
+
+ +

+Fills text with a string identifying the vendor. +

+

Parameters:
+ + +
text String of maximum 64 char
+
+
Returns:
true if supported
+ +
+

+ +

+
+ + + + + + + + +
VstInt32 AudioEffectX::getHostVendorVersion (  )  [virtual]
+
+
+ +

+Returns vendor-specific version (for example 3200 for Nuendo 3.2). +

+

Returns:
Host vendor version
+ +
+

+ +

+
+ + + + + + + + +
VstInt32 AudioEffectX::getInputLatency (  )  [virtual]
+
+
+ +

+Returns the Audio (maybe ASIO) input latency values. +

+

Returns:
ASIO input latency
+
See also:
getOutputLatency()
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool AudioEffectX::getInputProperties (VstInt32  index,
VstPinProperties properties 
) [inline, virtual]
+
+
+ +

+Return the properties of output index. +

+

Parameters:
+ + + +
index The index to the input, starting with 0
properties A pointer to a VstPinProperties structure
+
+
Returns:
true on success
+
See also:
getOutputProperties()
+
Note:
Example
+	bool MyPlug::getInputProperties (VstInt32 index, VstPinProperties* properties)
+	{
+		bool returnCode = false;
+		if (index < kNumInputs)
+		{
+			sprintf (properties->label, "My %1d In", index + 1);
+			properties->flags = kVstPinIsStereo | kVstPinIsActive;
+			returnCode = true;
+		}
+		return returnCode;
+	}
+	
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool AudioEffectX::getMidiKeyName (VstInt32  channel,
MidiKeyName keyName 
) [inline, virtual]
+
+
+ +

+Fill keyName with information for 'thisProgramIndex' and 'thisKeyNumber'. +

+

Parameters:
+ + + +
channel 
keyName If keyName is "" the standard name of the key will be displayed
+
+
Returns:
Return false if no MidiKeyNames defined for 'thisProgramIndex'
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
VstInt32 AudioEffectX::getMidiProgramCategory (VstInt32  channel,
MidiProgramCategory category 
) [inline, virtual]
+
+
+ +

+Fill category with information for 'thisCategoryIndex'. +

+

Parameters:
+ + + +
channel 
category 
+
+
Returns:
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
VstInt32 AudioEffectX::getMidiProgramName (VstInt32  channel,
MidiProgramName midiProgramName 
) [inline, virtual]
+
+
+ +

+Fill midiProgramName with information for 'thisProgramIndex'. +

+Ask plug-in if MidiPrograms are used and if so, query for names, numbers (ProgramChange-Number + BankSelect-Number), categories and keynames of each MIDI Program, on each MIDI-channel. If this function is called, your plug-in has to read MidiProgramName::thisProgramIndex, fill out the other fields with the information assigned to a certain MIDI Program and return the number of available MIDI Programs on that MIDI Channel.

+

Note:
plug-in canDo "midiProgramNames". No effect, if 0 is returned.
+
Warning:
don't mix concepts: the MIDI Programs are totally independent from all other programs present in VST. The main difference is, that there are upto 16 simultaneous active MIDI Programs (one per channel), while there can be only one active "VST"-Program. (You should see the "VST"-Program as the one single main global program, which contains the entire current state of the plug-in.) This function can be called in any sequence.
+
Parameters:
+ + + +
channel MidiChannel: 0-15
midiProgramName Points to MidiProgramName struct
+
+
Returns:
Number of available MIDI Programs on that channel
    +
  • number of used programIndexes
  • 0 if no MidiProgramNames supported
+
+
Note:
Example : plug-in has 3 MidiPrograms on MidiChannel 0.
+	Host calls getMidiProgramName with idx = 0 and MidiProgramName::thisProgramIndex = 0.
+	Plug fills out:
+	MidiProgramName::name[64] = "Program A"
+	MidiProgramName::midiProgram = 0
+	MidiProgramName::midiBankMsb = -1
+	MidiProgramName::midiBankLsb = -1
+	MidiProgramName::parentCategoryIndex = -1
+	MidiProgramName::flags = 0 (if plug isn't "Omni").
+	Plug returns 3.
+	Host calls getMidiProgramName with idx = 0 and MidiProgramName::thisProgramIndex = 1.
+	Plug fills out:
+	MidiProgramName::name[64] = "Program B"
+	MidiProgramName::midiProgram = 1
+	MidiProgramName::midiBankMsb = -1
+	MidiProgramName::midiBankLsb = -1
+	MidiProgramName::parentCategoryIndex = -1
+	MidiProgramName::flags = 0 (if plug isn't "Omni").
+	Plug returns 3.
+	Host calls getMidiProgramName with idx = 0 and MidiProgramName::thisProgramIndex = 2.
+	Plug fills out:
+	MidiProgramName::name[64] = "Program C"
+	MidiProgramName::midiProgram = 2
+	MidiProgramName::midiBankMsb = -1
+	MidiProgramName::midiBankLsb = -1
+	MidiProgramName::parentCategoryIndex = -1
+	MidiProgramName::flags = 0 (if plug isn't "Omni").
+	Plug returns 3.
+	
+ +
+

+ +

+
+ + + + + + + + + +
VstInt32 AudioEffectX::getNextShellPlugin (char *  name  )  [inline, virtual]
+
+
+ +

+This opcode is only called, if the plug-in is of type kPlugCategShell, in order to extract all included sub-plugin´s names. +

+

Parameters:
+ + +
name Points to a char buffer of size 64, which is to be filled with the name of the plug-in including the terminating zero
+
+
Returns:
Return the next plug-in's uniqueID
+
Note:
Example of Implementation
+	//---From the Host side : if found plugin is a Shell category-----------
+	if (effect->getCategory () == kPlugCategShell)
+	{ 
+		// scan shell for subplugins
+		char tempName[64] = {0}; 
+		VstInt32 plugUniqueID = 0;
+		while ((plugUniqueID = effect->dispatchEffect (effShellGetNextPlugin, 0, 0, tempName)) != 0)
+		{ 
+			// subplug needs a name 
+			if (tempName[0] != 0)
+			{
+				...do what you want with this tempName and plugUniqueID
+			}
+		}
+	}
+	//---From the Host side : Intanciate a subplugin of a shell plugin---
+	// retreive the uniqueID of this subplugin the host wants to load
+	// set it to the host currentID
+	currentID = subplugInfo->uniqueID;
+	// call the its shell plugin (main function)
+	main ();
+	// the shell plugin will ask for the currentUniqueID
+	// and should return the chosen subplugin
+	...
+	//---From the plugin-Shell Side: for enumeration of subplugins---------
+	category = kPlugCategShell;
+	->can ask the host if "shellCategory" is supported
+	// at start (instanciation) reset the index for the getNextShellPlugin call.
+	myPluginShell::index = 0;
+	// implementation of getNextShellPlugin (char* name);
+	VstInt32 myPluginShell::getNextShellPlugin (char* name)
+	{
+		strcpy (name, MyNameTable[index]);
+		return MyUniqueIDTable[index++];
+	}
+	....
+	//---From the plugin-Shell Side: when instanciation-----
+	VstInt32 uniqueID = host->getCurrentUniqueID ();
+	if (uniqueID == 0) // the host instanciates the shell
+	{}
+	else // host try to instanciate one of my subplugin...identified by the uniqueID
+	{}
+
+ +
+

+ +

+
+ + + + + + + + +
VstInt32 AudioEffectX::getNumMidiInputChannels (  )  [inline, virtual]
+
+
+ +

+Returns number of MIDI input channels used [0, 16]. +

+Called by the host application to determine how many MIDI input channels are actually used by a plugin e.g. to hide unused channels from the user. For compatibility with VST 2.3 and below, the default return value 0 means 'not implemented' - in this case the host assumes 16 MIDI channels to be present (or none at all).

+

Returns:
Number of MIDI input channels: 1-15, otherwise: 16 or no MIDI channels at all (0)
+
Note:
The VST 2.x protocol is limited to a maximum of 16 MIDI channels as defined by the MIDI Standard. This might change in future revisions of the API.
+
See also:
getNumMidiOutputChannels()
+ PlugCanDos::canDoReceiveVstMidiEvent
+ +
+

+ +

+
+ + + + + + + + +
VstInt32 AudioEffectX::getNumMidiOutputChannels (  )  [inline, virtual]
+
+
+ +

+Returns number of MIDI output channels used [0, 16]. +

+Called by the host application to determine how many MIDI output channels are actually used by a plugin e.g. to hide unused channels from the user. For compatibility with VST 2.3 and below, the default return value 0 means 'not implemented' - in this case the host assumes 16 MIDI channels to be present (or none at all).

+

Returns:
Number of MIDI output channels: 1-15, otherwise: 16 or no MIDI channels at all (0)
+
Note:
The VST 2.x protocol is limited to a maximum of 16 MIDI channels as defined by the MIDI Standard. This might change in future revisions of the API.
+
See also:
getNumMidiInputChannels()
+ PlugCanDos::canDoSendVstMidiEvent
+ +
+

+ +

+
+ + + + + + + + +
VstInt32 AudioEffectX::getOutputLatency (  )  [virtual]
+
+
+ +

+Returns the Audio (maybe ASIO) output latency values. +

+While inputLatency is probably not of concern, outputLatency may be used in conjunction with getTimeInfo(). samplePos of VstTimeInfo is ahead of the 'visual' sequencer play time by the output latency, such that when outputLatency samples have passed by, our processing result becomes audible.

+

Returns:
ASIO output latency
+
See also:
getInputLatency()
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool AudioEffectX::getOutputProperties (VstInt32  index,
VstPinProperties properties 
) [inline, virtual]
+
+
+ +

+Return the properties of input index. +

+

Parameters:
+ + + +
index The index to the output, starting with 0
properties A pointer to a VstPinProperties structure
+
+
Returns:
true on success
+
See also:
getInputProperties()
+
Note:
Example 1
+	bool MyPlug::getOutputProperties (VstInt32 index, VstPinProperties* properties)
+	{
+		bool returnCode = false;
+		if (index < kNumOutputs)
+		{
+			sprintf (properties->label, "My %1d Out", index + 1);
+			properties->flags = kVstPinIsStereo | kVstPinIsActive;
+			returnCode = true;
+		}
+		return (returnCode);
+	}
+	

+Example 2 : plug-in with 1 mono, 1 stereo and one 5.1 outputs (kNumOutputs = 9):

+	bool MyPlug::getOutputProperties (VstInt32 index, VstPinProperties* properties)
+	{
+		bool returnCode = false;
+		if (index >= 0 && index < kNumOutputs)
+		{
+			properties->flags = kVstPinIsActive;
+			if (index == 0) // mono
+			{
+				strcpy (properties->label, "Mono Out");
+				properties->arrangementType = kSpeakerArrMono;
+			}
+			else if (index == 1) // stereo (1 -> 2)
+			{
+				strcpy (properties->label, "Stereo Out");
+				properties->flags |= kVstPinIsStereo;
+				properties->arrangementType = kSpeakerArrStereo;
+			}
+			else if (index >= 3) // 5.1 (3 -> 8)
+			{
+				strcpy (properties->label, "5.1 Out");
+				properties->flags |= kVstPinUseSpeaker;
+				properties->arrangementType = kSpeakerArr51;
+for old VST Host < 2.3, make 5.1 to stereo/mono/mono/stereo (L R C Lfe Ls Rs)
+				if (index == 3 || index == 7)
+					properties->flags |= kVstPinIsStereo;
+				if (index == 5)
+					strcpy (properties->label, "Center");	
+				else if (index == 6)
+					strcpy (properties->label, "Lfe");	
+				else if (index == 7) // (7 -> 8)
+					strcpy (properties->label, "Stereo Back");
+			}
+			returnCode = true;
+		}
+		return returnCode;
+	}
+	
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool AudioEffectX::getParameterProperties (VstInt32  index,
VstParameterProperties p 
) [inline, virtual]
+
+
+ +

+Return parameter properties. +

+

Parameters:
+ + + +
index Index of the parameter
p Pointer to VstParameterProperties
+
+
Returns:
Return true on success
+ +
+

+ +

+
+ + + + + + + + +
VstPlugCategory AudioEffectX::getPlugCategory (  )  [virtual]
+
+
+ +

+Specify a category that fits the plug (VstPlugCategory). +

+

Returns:
Plug-in's category defined in VstPlugCategory
+ +
+

+ +

+
+ + + + + + + + + +
bool AudioEffectX::getProductString (char *  text  )  [inline, virtual]
+
+
+ +

+Fill text with a string identifying the product name. +

+

Parameters:
+ + +
text A string up to 64 chars
+
+
Returns:
true on success
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool AudioEffectX::getProgramNameIndexed (VstInt32  category,
VstInt32  index,
char *  text 
) [inline, virtual]
+
+
+ +

+Fill text with name of program index (category deprecated in VST 2.4). +

+Allows a Host application to list the plug-in's programs (presets).

+

Parameters:
+ + + + +
category unused in VST 2.4
index Index of the program in a given category, starting with 0.
text A string up to 24 chars.
+
+
Returns:
true on success
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool AudioEffectX::getSpeakerArrangement (VstSpeakerArrangement **  pluginInput,
VstSpeakerArrangement **  pluginOutput 
) [inline, virtual]
+
+
+ +

+Return the plug-in's speaker arrangements. +

+

Parameters:
+ + + +
pluginInput A pointer to the input's VstSpeakerArrangement structure.
pluginOutput A pointer to the output's VstSpeakerArrangement structure.
+
+
Returns:
true on success
+
Note:
setSpeakerArrangement() and getSpeakerArrangement() are always called in suspended state. (like setSampleRate() or setBlockSize()).
+
Here an example code to show how the host uses getSpeakerArrangement()
+	VstSpeakerArrangement *plugInputVstArr = 0;
+	VstSpeakerArrangement *plugOutputVstArr = 0;
+	if (getFormatVersion () >= 2300 && getSpeakerArrangement (&plugInputVstArr, &plugOutputVstArr))
+		....
+	
+
See also:
setSpeakerArrangement()
+ +
+

+ +

+
+ + + + + + + + + +
VstTimeInfo * AudioEffectX::getTimeInfo (VstInt32  filter  )  [virtual]
+
+
+ +

+Get time information from Host. +

+A plug-in will request time info by calling the function getTimeInfo() which returns a VstTimeInfo pointer (or NULL if not implemented by the Host). The mask parameter is composed of the same flags which will be found in the flags field of VstTimeInfo when returned, that is, if you need information about tempo. The parameter passed to getTimeInfo() should have the kVstTempoValid flag set. This request and delivery system is important, as a request like this may cause significant calculations at the application's end, which may take a lot of our precious time. This obviously means you should only set those flags that are required to get the information you need. Also please be aware that requesting information does not necessarily mean that that information is provided in return. Check the flags field in the VstTimeInfo structure to see if your request was actually met.

+

Parameters:
+ + +
filter A mask indicating which fields are requested, as some items may require extensive conversions. See the flags in VstTimeInfo
+
+
Returns:
A pointer to a VstTimeInfo structure or NULL if not implemented by the Host
+ +
+

+ +

+
+ + + + + + + + + +
bool AudioEffectX::getVendorString (char *  text  )  [inline, virtual]
+
+
+ +

+Fill text with a string identifying the vendor. +

+

Parameters:
+ + +
text A string up to 64 chars
+
+
Returns:
true on success
+ +
+

+ +

+
+ + + + + + + + +
VstInt32 AudioEffectX::getVendorVersion (  )  [inline, virtual]
+
+
+ +

+Return vendor-specific version. +

+

Returns:
The version of the plug-in
+
Note:
This should be upported
+ +
+

+ +

+
+ + + + + + + + +
VstInt32 AudioEffectX::getVstVersion (  )  [inline, virtual]
+
+
+ +

+Returns the current VST Version (kVstVersion). +

+

Returns:
    +
  • 2xxx : the last VST 2.x plug-in version (by default)
  • 0 : older versions
+
+ +
+

+ +

+
+ + + + + + + + + +
bool AudioEffectX::hasMidiProgramsChanged (VstInt32  channel  )  [inline, virtual]
+
+
+ +

+Return true if the MidiProgramNames, MidiKeyNames or MidiControllerNames had changed on this MIDI channel. +

+Ask plug-in for the currently active program on a certain MIDI Channel. Just like getMidiProgramName(), but MidiProgramName::thisProgramIndex has to be filled out with the currently active MIDI Program-index, which also has to be returned.

+

Parameters:
+ + +
channel 
+
+
Returns:
    +
  • true: if the MidiProgramNames, MidiKeyNames or MidiControllerNames had changed on this channel
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VstIntPtr AudioEffectX::hostVendorSpecific (VstInt32  lArg1,
VstIntPtr  lArg2,
void *  ptrArg,
float  floatArg 
) [virtual]
+
+
+ +

+No specific definition. +

+ +

+

+ +

+
+ + + + + + + + +
bool AudioEffectX::ioChanged (  )  [virtual]
+
+
+ +

+Tell Host numInputs and/or numOutputs and/or initialDelay (and/or numParameters: to be avoid) have changed. +

+The Host could call a suspend() (if the plug-in was enabled (in resume() state)) and then ask for getSpeakerArrangement() and/or check the numInputs and numOutputs and initialDelay and then call a resume().

+

Returns:
true on success
+
See also:
setSpeakerArrangement(), getSpeakerArrangement()
+ +
+

+ +

+
+ + + + + + + + + +
void AudioEffectX::isSynth (bool  state = true  )  [virtual]
+
+
+ +

+Set if plug-in is a synth. +

+Tells the Host that the plug-in is an instrument, i.e. that it will call wantEvents().

+

Parameters:
+ + +
state 
    +
  • true: is an instrument (default)
  • false: is a simple audio effect
+
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool AudioEffectX::matchArrangement (VstSpeakerArrangement **  to,
VstSpeakerArrangement from 
) [virtual]
+
+
+ +

+"to" is deleted, then created and initialized with the same values as "from" ones ("from" must exist). +

+to is deleted, then created and initialized with the same values as from (must exist!). It's notably useful when setSpeakerArrangement() is called by the Host.

+

Parameters:
+ + + +
to 
from 
+
+
Returns:
Returns true on success
+
See also:
allocateArrangement(), deallocateArrangement(), copySpeaker()
+ +
+

+ +

+
+ + + + + + + + + +
void AudioEffectX::noTail (bool  state = true  )  [virtual]
+
+
+ +

+Plug-in won't produce output signals while there is no input. +

+Enables Host to omit processReplacing() when no data is present on any input. +

+

+ +

+
+ + + + + + + + + +
bool AudioEffectX::openFileSelector (VstFileSelect ptr  )  [virtual]
+
+
+ +

+Open a Host File selector (see aeffectx.h for VstFileSelect definition). +

+

Parameters:
+ + +
ptr 
+
+
Returns:
Returns true on success
+
See also:
closeFileSelector()
+ +
+

+ +

+
+ + + + + + + + + +
VstInt32 AudioEffectX::processEvents (VstEvents events  )  [inline, virtual]
+
+
+ +

+Called when new MIDI events come in. +

+

Returns:
return value is ignored
+
Remarks:
Events are always related to the current audio block. For each process cycle, processEvents() is called once before a processReplacing() call (if new events are available).
+
See also:
VstEvents, VstMidiEvent
+ +
+

+ +

+
+ + + + + + + + + +
bool AudioEffectX::processVariableIo (VstVariableIo varIo  )  [inline, virtual]
+
+
+ +

+Used for variable I/O processing (offline processing like timestreching). +

+If called with varIo NULL, returning true indicates that this call is supported by the plug-in. Host will use processReplacing otherwise. The Host should call setTotalSampleToProcess before starting the processIO to inform the plug-in about how many samples will be processed in total. The Host should provide an output buffer at least 5 times bigger than input buffer.

+

Parameters:
+ + +
varIo 
+
+
Returns:
on success
+ +
+

+ +

+
+ + + + + + + + + +
bool AudioEffectX::sendVstEventsToHost (VstEvents events  ) 
+
+
+ +

+Send MIDI events back to Host application. +

+Can be called inside processReplacing.

+

Parameters:
+ + +
events Fill with VST events
+
+
Returns:
Returns true on success
+ +
+

+ +

+
+ + + + + + + + + +
bool AudioEffectX::setBypass (bool  onOff  )  [inline, virtual]
+
+
+ +

+For 'soft-bypass' (this could be automated (in Audio Thread) that why you could NOT call iochanged (if needed) in this function, do it in fxidle). +

+process still called (if Supported) although the plug-in was bypassed. Some plugs need to stay 'alive' even when bypassed. An example is a surround decoder which has more inputs than outputs and must maintain some reasonable signal distribution even when being bypassed. A CanDo 'bypass' allows to ask the plug-in if it supports soft bypass or not.

+

Note:
This bypass feature could be automated by the Host (this means avoid to much CPU requirement in this call)

+If the plug-in supports SoftBypass and it has a latency (initialDelay), in Bypassed state the plug-in has to used the same latency value.

+
Parameters:
+ + +
onOff 
+
+
Returns:
    +
  • true: supports SoftBypass, process will be called, the plug-in should compensate its latency, and copy inputs to outputs
  • false: doesn't support SoftBypass, process will not be called, the Host should bypass the process call
+
+
See also:
processReplacing()
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool AudioEffectX::setPanLaw (VstInt32  type,
float  val 
) [inline, virtual]
+
+
+ +

+Set the Panning Law used by the Host. +

+

See also:
VstPanLawType.
+ +
+

+ +

+
+ + + + + + + + + +
bool AudioEffectX::setProcessPrecision (VstInt32  precision  )  [inline, virtual]
+
+
+ +

+Set floating-point precision used for processing (32 or 64 bit). +

+Is called in suspended state, similar to setBlockSize. Default (if not called) is single precision float.

+

Parameters:
+ + +
precision kVstProcessPrecision32 or kVstProcessPrecision64
+
+
Returns:
Returns true on success
+
See also:
VstProcessPrecision
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool AudioEffectX::setSpeakerArrangement (VstSpeakerArrangement pluginInput,
VstSpeakerArrangement pluginOutput 
) [inline, virtual]
+
+
+ +

+Set the plug-in's speaker arrangements. +

+Set the plug-in's speaker arrangements. If a (VST >= 2.3) plug-in returns true, it means that it accepts this IO arrangement. The Host doesn't need to ask for getSpeakerArrangement(). If the plug-in returns false it means that it doesn't accept this arrangement, the Host should then ask for getSpeakerArrangement() and then can (optional) recall setSpeakerArrangement().

+

Parameters:
+ + + +
pluginInput A pointer to the input's VstSpeakerArrangement structure.
pluginOutput A pointer to the output's VstSpeakerArrangement structure.
+
+
Returns:
true on success
+
Note:
setSpeakerArrangement() and getSpeakerArrangement() are always called in suspended state. (like setSampleRate() or setBlockSize()).
+
See also:
getSpeakerArrangement()
+ +
+

+ +

+
+ + + + + + + + + +
VstInt32 AudioEffectX::setTotalSampleToProcess (VstInt32  value  )  [inline, virtual]
+
+
+ +

+Called in offline mode before process() or processVariableIo (). +

+It indicates how many samples will be processed in total.

+

Parameters:
+ + +
value Number of samples to process
+
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool AudioEffectX::sizeWindow (VstInt32  width,
VstInt32  height 
) [virtual]
+
+
+ +

+Requests to resize the editor window. +

+

Parameters:
+ + + +
width The window's width in pixel
height The window's height in pixel
+
+
Returns:
true on success
+ +
+

+ +

+
+ + + + + + + + +
virtual VstInt32 AudioEffectX::startProcess (  )  [inline, virtual]
+
+
+ +

+Called one time before the start of process call. This indicates that the process call will be interrupted (due to Host reconfiguration or bypass state when the plug-in doesn't support softBypass). +

+ +

+

+ +

+
+ + + + + + + + +
virtual VstInt32 AudioEffectX::stopProcess (  )  [inline, virtual]
+
+
+ +

+Called after the stop of process call. +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
bool AudioEffectX::string2parameter (VstInt32  index,
char *  text 
) [inline, virtual]
+
+
+ +

+Convert a string representation to a parameter value. +

+Especially useful for plug-ins without user interface. The application can then implement a text edit field for the user to set a parameter by entering text.

+

Parameters:
+ + + +
index Index of the parameter
text A textual description of the parameter's value. A NULL pointer is used to check the capability (return true).
+
+
Returns:
true on success
+
Note:
Implies setParameter (). text==0 is to be expected to check the capability (returns true)
+ +
+

+ +

+
+ + + + + + + + +
VstInt32 AudioEffectX::updateBlockSize (  )  [virtual]
+
+
+ +

+Returns block size from Host (may issue getBlockSize()). +

+

Returns:
The Host's block size
+
Note:
Will cause application to call AudioEffect's setSampleRate() to be called (when implemented).
+ +
+

+ +

+
+ + + + + + + + +
bool AudioEffectX::updateDisplay (  )  [virtual]
+
+
+ +

+Something has changed in plug-in, request an update display like program (MIDI too) and parameters list in Host. +

+

Returns:
true if supported
+ +
+

+ +

+
+ + + + + + + + +
double AudioEffectX::updateSampleRate (  )  [virtual]
+
+
+ +

+Returns sample rate from Host (may issue setSampleRate()). +

+

Returns:
The Host's sample rate
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual VstIntPtr AudioEffectX::vendorSpecific (VstInt32  lArg,
VstIntPtr  lArg2,
void *  ptrArg,
float  floatArg 
) [inline, virtual]
+
+
+ +

+No definition, vendor specific handling. +

+ +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/class_audio_effect_x.png b/doc/html/class_audio_effect_x.png new file mode 100644 index 0000000..f41299c Binary files /dev/null and b/doc/html/class_audio_effect_x.png differ diff --git a/doc/html/deprecated.html b/doc/html/deprecated.html new file mode 100644 index 0000000..9f80a33 --- /dev/null +++ b/doc/html/deprecated.html @@ -0,0 +1,289 @@ + + +VST SDK 2.4: Deprecated List + + + + +
+
+

Deprecated List

+
Member AEffect::ioRatio
+
unused member
+
+

+

+
Member AEffect::offQualities
+
unused member
+
+

+

+
Member AEffect::process
+
Accumulating process mode is deprecated in VST 2.4! Use AEffect::processReplacing instead!
+
+

+

+
Member AEffect::realQualities
+
unused member
+
+

+

+
Class VstWindow
+
Structure used for openWindow and closeWindow (deprecated in VST 2.4).
+
+

+

+
Member effGetVu
+
deprecated in VST 2.4
+
+

+

+
Member effEditDraw
+
deprecated in VST 2.4
+
+

+

+
Member effEditMouse
+
deprecated in VST 2.4
+
+

+

+
Member effEditKey
+
deprecated in VST 2.4
+
+

+

+
Member effEditTop
+
deprecated in VST 2.4
+
+

+

+
Member effEditSleep
+
deprecated in VST 2.4
+
+

+

+
Member effIdentify
+
deprecated in VST 2.4
+
+

+

+
Member audioMasterPinConnected
+
deprecated in VST 2.4 r2
+
+

+

+
Member effFlagsHasClip
+
deprecated in VST 2.4
+
+

+

+
Member effFlagsHasVu
+
deprecated in VST 2.4
+
+

+

+
Member effFlagsCanMono
+
deprecated in VST 2.4
+
+

+

+
Member effFlagsExtIsAsync
+
deprecated in VST 2.4
+
+

+

+
Member effFlagsExtHasBuffer
+
deprecated in VST 2.4
+
+

+

+
Member effGetNumProgramCategories
+
deprecated in VST 2.4
+
+

+

+
Member effCopyProgram
+
deprecated in VST 2.4
+
+

+

+
Member effConnectInput
+
deprecated in VST 2.4
+
+

+

+
Member effConnectOutput
+
deprecated in VST 2.4
+
+

+

+
Member effGetCurrentPosition
+
deprecated in VST 2.4
+
+

+

+
Member effGetDestinationBuffer
+
deprecated in VST 2.4
+
+

+

+
Member effSetBlockSizeAndSampleRate
+
deprecated in VST 2.4
+
+

+

+
Member effGetErrorText
+
deprecated in VST 2.4
+
+

+

+
Member effIdle
+
deprecated in VST 2.4
+
+

+

+
Member effGetIcon
+
deprecated in VST 2.4
+
+

+

+
Member effSetViewPosition
+
deprecated in VST 2.4
+
+

+

+
Member effKeysRequired
+
deprecated in VST 2.4
+
+

+

+
Member audioMasterWantMidi
+
deprecated in VST 2.4
+
+

+

+
Member audioMasterSetTime
+
deprecated in VST 2.4
+
+

+

+
Member audioMasterTempoAt
+
deprecated in VST 2.4
+
+

+

+
Member audioMasterGetNumAutomatableParameters
+
deprecated in VST 2.4
+
+

+

+
Member audioMasterGetParameterQuantization
+
deprecated in VST 2.4
+
+

+

+
Member audioMasterNeedIdle
+
deprecated in VST 2.4
+
+

+

+
Member audioMasterGetPreviousPlug
+
deprecated in VST 2.4
+
+

+

+
Member audioMasterGetNextPlug
+
deprecated in VST 2.4
+
+

+

+
Member audioMasterWillReplaceOrAccumulate
+
deprecated in VST 2.4
+
+

+

+
Member audioMasterSetOutputSampleRate
+
deprecated in VST 2.4
+
+

+

+
Member audioMasterGetOutputSpeakerArrangement
+
deprecated in VST 2.4
+
+

+

+
Member audioMasterSetIcon
+
deprecated in VST 2.4
+
+

+

+
Member audioMasterOpenWindow
+
deprecated in VST 2.4
+
+

+

+
Member audioMasterCloseWindow
+
deprecated in VST 2.4
+
+

+

+
Member audioMasterEditFile
+
deprecated in VST 2.4
+
+

+

+
Member audioMasterGetChunkFile
+
deprecated in VST 2.4 [ptr]: char[2048] or sizeof (FSSpec) [return value]: 1 if supported
+
+

+

+
Member audioMasterGetInputSpeakerArrangement
+
deprecated in VST 2.4
+
+

+

+
Member kVstAudioType
+
unused event type
+
+

+

+
Member kVstVideoType
+
unused event type
+
+

+

+
Member kVstParameterType
+
unused event type
+
+

+

+
Member kVstTriggerType
+
unused event type
+
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/dir_2d3252dd12c84c66c1d25b26bb45a1f5.html b/doc/html/dir_2d3252dd12c84c66c1d25b26bb45a1f5.html new file mode 100644 index 0000000..e30b73c --- /dev/null +++ b/doc/html/dir_2d3252dd12c84c66c1d25b26bb45a1f5.html @@ -0,0 +1,55 @@ + + +VST SDK 2.4: G:/newbase/public.sdk/source/vst2.x/ Directory Reference + + + + +
+
+ +

vst2.x Directory Reference

+ + + + + + + + + + + + + + + + +

Files

file  aeffeditor.h
file  audioeffect.cpp
file  audioeffect.h
file  audioeffectx.cpp
file  audioeffectx.h
file  doc.h
file  vstplugmain.cpp
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/dir_77c628dfee72e555f82d5ef53b733f38.html b/doc/html/dir_77c628dfee72e555f82d5ef53b733f38.html new file mode 100644 index 0000000..bc53b37 --- /dev/null +++ b/doc/html/dir_77c628dfee72e555f82d5ef53b733f38.html @@ -0,0 +1,47 @@ + + +VST SDK 2.4: G:/newbase/pluginterfaces/vst2.x/ Directory Reference + + + + +
+
+ +

vst2.x Directory Reference

+ + + + + + + + +

Files

file  aeffect.h
file  aeffectx.h
file  vstfxstore.h
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/dir_f81105d3b854bea570aaf3bae5cb64c1.html b/doc/html/dir_f81105d3b854bea570aaf3bae5cb64c1.html new file mode 100644 index 0000000..fbcfcce --- /dev/null +++ b/doc/html/dir_f81105d3b854bea570aaf3bae5cb64c1.html @@ -0,0 +1,43 @@ + + +VST SDK 2.4: G:/newbase/public.sdk/source/ Directory Reference + + + + +
+
+ +

source Directory Reference

+ + + + +

Directories

directory  vst2.x
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/dir_fa0454ab79b4262333bf837ea3d765e9.html b/doc/html/dir_fa0454ab79b4262333bf837ea3d765e9.html new file mode 100644 index 0000000..4d08986 --- /dev/null +++ b/doc/html/dir_fa0454ab79b4262333bf837ea3d765e9.html @@ -0,0 +1,43 @@ + + +VST SDK 2.4: G:/newbase/pluginterfaces/ Directory Reference + + + + +
+
+ +

pluginterfaces Directory Reference

+ + + + +

Directories

directory  vst2.x
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/dirs.html b/doc/html/dirs.html new file mode 100644 index 0000000..e1949ba --- /dev/null +++ b/doc/html/dirs.html @@ -0,0 +1,45 @@ + + +VST SDK 2.4: Directory Hierarchy + + + + +
+
+

VST SDK 2.4 Directories

This directory hierarchy is sorted roughly, but not completely, alphabetically: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/doc_8h.html b/doc/html/doc_8h.html new file mode 100644 index 0000000..6950ba5 --- /dev/null +++ b/doc/html/doc_8h.html @@ -0,0 +1,45 @@ + + +VST SDK 2.4: doc.h File Reference + + + + +
+
+
+
+ +

doc.h File Reference

+ +
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/doxygen.css b/doc/html/doxygen.css new file mode 100644 index 0000000..5d58369 --- /dev/null +++ b/doc/html/doxygen.css @@ -0,0 +1,358 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: Geneva, Arial, Helvetica, sans-serif; +} +BODY,TD { + font-size: 90%; +} +H1 { + text-align: center; + font-size: 160%; +} +H2 { + font-size: 120%; +} +H3 { + font-size: 100%; +} +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navtab { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +TD.navtab { + font-size: 70%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +.fragment { + font-family: monospace, fixed; + font-size: 95%; +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } + +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey { + background-color: #e8eef2; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #e8eef2; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +SPAN.keyword { color: #008000 } +SPAN.keywordtype { color: #604020 } +SPAN.keywordflow { color: #e08000 } +SPAN.comment { color: #800000 } +SPAN.preprocessor { color: #806020 } +SPAN.stringliteral { color: #002080 } +SPAN.charliteral { color: #008080 } +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 80%; +} +.search { color: #003399; + font-weight: bold; +} +FORM.search { + margin-bottom: 0px; + margin-top: 0px; +} +INPUT.search { font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +TD.tiny { font-size: 75%; +} +a { + color: #1A41A8; +} +a:visited { + color: #2A3798; +} +.dirtab { padding: 4px; + border-collapse: collapse; + border: 1px solid #84b0c7; +} +TH.dirtab { background: #e8eef2; + font-weight: bold; +} +HR { height: 1px; + border: none; + border-top: 1px solid black; +} + +/* Style for detailed member documentation */ +.memtemplate { + font-size: 80%; + color: #606060; + font-weight: normal; +} +.memnav { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +.memitem { + padding: 4px; + background-color: #eef3f5; + border-width: 1px; + border-style: solid; + border-color: #dedeee; + -moz-border-radius: 8px 8px 8px 8px; +} +.memname { + white-space: nowrap; + font-weight: bold; +} +.memdoc{ + padding-left: 10px; +} +.memproto { + background-color: #d5e1e8; + width: 100%; + border-width: 1px; + border-style: solid; + border-color: #84b0c7; + font-weight: bold; + -moz-border-radius: 8px 8px 8px 8px; +} +.paramkey { + text-align: right; +} +.paramtype { + white-space: nowrap; +} +.paramname { + color: #602020; + font-style: italic; +} +/* End Styling for detailed member documentation */ + +/* for the tree view */ +.ftvtree { + font-family: sans-serif; + margin:0.5em; +} +.directory { font-size: 9pt; font-weight: bold; } +.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; } +.directory > h3 { margin-top: 0; } +.directory p { margin: 0px; white-space: nowrap; } +.directory div { display: none; margin: 0px; } +.directory img { vertical-align: -30%; } + diff --git a/doc/html/doxygen.png b/doc/html/doxygen.png new file mode 100644 index 0000000..f0a274b Binary files /dev/null and b/doc/html/doxygen.png differ diff --git a/doc/html/files.html b/doc/html/files.html new file mode 100644 index 0000000..585c63e --- /dev/null +++ b/doc/html/files.html @@ -0,0 +1,52 @@ + + +VST SDK 2.4: File Index + + + + +
+
+
+
+

VST SDK 2.4 File List

Here is a list of all files with brief descriptions: + + + + + + + + + + +
aeffect.h
aeffectx.h
aeffeditor.h
audioeffect.cpp
audioeffect.h
audioeffectx.cpp
audioeffectx.h
doc.h
vstfxstore.h
vstplugmain.cpp
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/ftv2blank.png b/doc/html/ftv2blank.png new file mode 100644 index 0000000..493c3c0 Binary files /dev/null and b/doc/html/ftv2blank.png differ diff --git a/doc/html/ftv2doc.png b/doc/html/ftv2doc.png new file mode 100644 index 0000000..f72999f Binary files /dev/null and b/doc/html/ftv2doc.png differ diff --git a/doc/html/ftv2folderclosed.png b/doc/html/ftv2folderclosed.png new file mode 100644 index 0000000..d6d0634 Binary files /dev/null and b/doc/html/ftv2folderclosed.png differ diff --git a/doc/html/ftv2folderopen.png b/doc/html/ftv2folderopen.png new file mode 100644 index 0000000..bbe2c91 Binary files /dev/null and b/doc/html/ftv2folderopen.png differ diff --git a/doc/html/ftv2lastnode.png b/doc/html/ftv2lastnode.png new file mode 100644 index 0000000..e7b9ba9 Binary files /dev/null and b/doc/html/ftv2lastnode.png differ diff --git a/doc/html/ftv2link.png b/doc/html/ftv2link.png new file mode 100644 index 0000000..14f3fed Binary files /dev/null and b/doc/html/ftv2link.png differ diff --git a/doc/html/ftv2mlastnode.png b/doc/html/ftv2mlastnode.png new file mode 100644 index 0000000..09ceb6a Binary files /dev/null and b/doc/html/ftv2mlastnode.png differ diff --git a/doc/html/ftv2mnode.png b/doc/html/ftv2mnode.png new file mode 100644 index 0000000..3254c05 Binary files /dev/null and b/doc/html/ftv2mnode.png differ diff --git a/doc/html/ftv2node.png b/doc/html/ftv2node.png new file mode 100644 index 0000000..c9f06a5 Binary files /dev/null and b/doc/html/ftv2node.png differ diff --git a/doc/html/ftv2plastnode.png b/doc/html/ftv2plastnode.png new file mode 100644 index 0000000..0b07e00 Binary files /dev/null and b/doc/html/ftv2plastnode.png differ diff --git a/doc/html/ftv2pnode.png b/doc/html/ftv2pnode.png new file mode 100644 index 0000000..2001b79 Binary files /dev/null and b/doc/html/ftv2pnode.png differ diff --git a/doc/html/ftv2vertline.png b/doc/html/ftv2vertline.png new file mode 100644 index 0000000..b330f3a Binary files /dev/null and b/doc/html/ftv2vertline.png differ diff --git a/doc/html/functions.html b/doc/html/functions.html new file mode 100644 index 0000000..bd92637 --- /dev/null +++ b/doc/html/functions.html @@ -0,0 +1,89 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- a -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/functions_0x62.html b/doc/html/functions_0x62.html new file mode 100644 index 0000000..5817ac0 --- /dev/null +++ b/doc/html/functions_0x62.html @@ -0,0 +1,90 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- b -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/functions_0x63.html b/doc/html/functions_0x63.html new file mode 100644 index 0000000..96870f5 --- /dev/null +++ b/doc/html/functions_0x63.html @@ -0,0 +1,102 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- c -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/functions_0x64.html b/doc/html/functions_0x64.html new file mode 100644 index 0000000..728cfec --- /dev/null +++ b/doc/html/functions_0x64.html @@ -0,0 +1,93 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- d -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/functions_0x65.html b/doc/html/functions_0x65.html new file mode 100644 index 0000000..aec308a --- /dev/null +++ b/doc/html/functions_0x65.html @@ -0,0 +1,90 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- e -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/functions_0x66.html b/doc/html/functions_0x66.html new file mode 100644 index 0000000..611a867 --- /dev/null +++ b/doc/html/functions_0x66.html @@ -0,0 +1,90 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- f -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/functions_0x67.html b/doc/html/functions_0x67.html new file mode 100644 index 0000000..9e6c4eb --- /dev/null +++ b/doc/html/functions_0x67.html @@ -0,0 +1,126 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- g -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/functions_0x68.html b/doc/html/functions_0x68.html new file mode 100644 index 0000000..f3a4ac5 --- /dev/null +++ b/doc/html/functions_0x68.html @@ -0,0 +1,87 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- h -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/functions_0x69.html b/doc/html/functions_0x69.html new file mode 100644 index 0000000..89f3dc7 --- /dev/null +++ b/doc/html/functions_0x69.html @@ -0,0 +1,94 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- i -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/functions_0x6b.html b/doc/html/functions_0x6b.html new file mode 100644 index 0000000..345a796 --- /dev/null +++ b/doc/html/functions_0x6b.html @@ -0,0 +1,83 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- k -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/functions_0x6c.html b/doc/html/functions_0x6c.html new file mode 100644 index 0000000..f760370 --- /dev/null +++ b/doc/html/functions_0x6c.html @@ -0,0 +1,86 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- l -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/functions_0x6d.html b/doc/html/functions_0x6d.html new file mode 100644 index 0000000..fdf69c6 --- /dev/null +++ b/doc/html/functions_0x6d.html @@ -0,0 +1,98 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- m -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/functions_0x6e.html b/doc/html/functions_0x6e.html new file mode 100644 index 0000000..5728af8 --- /dev/null +++ b/doc/html/functions_0x6e.html @@ -0,0 +1,108 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- n -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/functions_0x6f.html b/doc/html/functions_0x6f.html new file mode 100644 index 0000000..8362c51 --- /dev/null +++ b/doc/html/functions_0x6f.html @@ -0,0 +1,92 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- o -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/functions_0x70.html b/doc/html/functions_0x70.html new file mode 100644 index 0000000..fe59f1e --- /dev/null +++ b/doc/html/functions_0x70.html @@ -0,0 +1,103 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- p -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/functions_0x72.html b/doc/html/functions_0x72.html new file mode 100644 index 0000000..ad25904 --- /dev/null +++ b/doc/html/functions_0x72.html @@ -0,0 +1,96 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- r -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/functions_0x73.html b/doc/html/functions_0x73.html new file mode 100644 index 0000000..c6bb990 --- /dev/null +++ b/doc/html/functions_0x73.html @@ -0,0 +1,128 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- s -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/functions_0x74.html b/doc/html/functions_0x74.html new file mode 100644 index 0000000..6f89612 --- /dev/null +++ b/doc/html/functions_0x74.html @@ -0,0 +1,94 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- t -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/functions_0x75.html b/doc/html/functions_0x75.html new file mode 100644 index 0000000..8aa0448 --- /dev/null +++ b/doc/html/functions_0x75.html @@ -0,0 +1,90 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- u -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/functions_0x76.html b/doc/html/functions_0x76.html new file mode 100644 index 0000000..4720c89 --- /dev/null +++ b/doc/html/functions_0x76.html @@ -0,0 +1,87 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- v -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/functions_0x77.html b/doc/html/functions_0x77.html new file mode 100644 index 0000000..c300923 --- /dev/null +++ b/doc/html/functions_0x77.html @@ -0,0 +1,86 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- w -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/functions_0x78.html b/doc/html/functions_0x78.html new file mode 100644 index 0000000..148b861 --- /dev/null +++ b/doc/html/functions_0x78.html @@ -0,0 +1,83 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- x -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/functions_0x79.html b/doc/html/functions_0x79.html new file mode 100644 index 0000000..a266539 --- /dev/null +++ b/doc/html/functions_0x79.html @@ -0,0 +1,83 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- y -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/functions_0x7e.html b/doc/html/functions_0x7e.html new file mode 100644 index 0000000..3b0e373 --- /dev/null +++ b/doc/html/functions_0x7e.html @@ -0,0 +1,84 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- ~ -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/functions_func.html b/doc/html/functions_func.html new file mode 100644 index 0000000..ba4925a --- /dev/null +++ b/doc/html/functions_func.html @@ -0,0 +1,230 @@ + + +VST SDK 2.4: Class Members - Functions + + + + +
+
+
+
+
+ +
+
+ +
+ +

+  +

+

- a -

+

- b -

+

- c -

+

- d -

+

- e -

+

- f -

+

- g -

+

- h -

+

- i -

+

- m -

+

- n -

+

- o -

+

- p -

+

- r -

+

- s -

+

- u -

+

- v -

+

- ~ -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html new file mode 100644 index 0000000..c3cf1ec --- /dev/null +++ b/doc/html/functions_vars.html @@ -0,0 +1,304 @@ + + +VST SDK 2.4: Class Members - Variables + + + + +
+
+
+
+
+ +
+
+ +
+ +

+  +

+

- a -

+

- b -

+

- c -

+

- d -

+

- e -

+

- f -

+

- g -

+

- h -

+

- i -

+

- k -

+

- l -

+

- m -

+

- n -

+

- o -

+

- p -

+

- r -

+

- s -

+

- t -

+

- u -

+

- v -

+

- w -

+

- x -

+

- y -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/globals.html b/doc/html/globals.html new file mode 100644 index 0000000..6c1830f --- /dev/null +++ b/doc/html/globals.html @@ -0,0 +1,124 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- a -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/globals_0x62.html b/doc/html/globals_0x62.html new file mode 100644 index 0000000..d7b91e1 --- /dev/null +++ b/doc/html/globals_0x62.html @@ -0,0 +1,72 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- b -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/globals_0x63.html b/doc/html/globals_0x63.html new file mode 100644 index 0000000..9362244 --- /dev/null +++ b/doc/html/globals_0x63.html @@ -0,0 +1,93 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- c -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/globals_0x64.html b/doc/html/globals_0x64.html new file mode 100644 index 0000000..25819b8 --- /dev/null +++ b/doc/html/globals_0x64.html @@ -0,0 +1,72 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- d -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/globals_0x65.html b/doc/html/globals_0x65.html new file mode 100644 index 0000000..b9bc3d5 --- /dev/null +++ b/doc/html/globals_0x65.html @@ -0,0 +1,163 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- e -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/globals_0x66.html b/doc/html/globals_0x66.html new file mode 100644 index 0000000..56b06ff --- /dev/null +++ b/doc/html/globals_0x66.html @@ -0,0 +1,73 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- f -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/globals_0x6b.html b/doc/html/globals_0x6b.html new file mode 100644 index 0000000..f33b191 --- /dev/null +++ b/doc/html/globals_0x6b.html @@ -0,0 +1,277 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- k -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/globals_0x6d.html b/doc/html/globals_0x6d.html new file mode 100644 index 0000000..acfd479 --- /dev/null +++ b/doc/html/globals_0x6d.html @@ -0,0 +1,75 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- m -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/globals_0x74.html b/doc/html/globals_0x74.html new file mode 100644 index 0000000..f559301 --- /dev/null +++ b/doc/html/globals_0x74.html @@ -0,0 +1,72 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- t -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/globals_0x76.html b/doc/html/globals_0x76.html new file mode 100644 index 0000000..2436627 --- /dev/null +++ b/doc/html/globals_0x76.html @@ -0,0 +1,168 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- v -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/globals_defs.html b/doc/html/globals_defs.html new file mode 100644 index 0000000..375f677 --- /dev/null +++ b/doc/html/globals_defs.html @@ -0,0 +1,71 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+  +

+

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/globals_enum.html b/doc/html/globals_enum.html new file mode 100644 index 0000000..3cd88da --- /dev/null +++ b/doc/html/globals_enum.html @@ -0,0 +1,85 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+  +

+

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/globals_eval.html b/doc/html/globals_eval.html new file mode 100644 index 0000000..7589938 --- /dev/null +++ b/doc/html/globals_eval.html @@ -0,0 +1,115 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+  +

+

- a -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/globals_eval_0x65.html b/doc/html/globals_eval_0x65.html new file mode 100644 index 0000000..0c17fe6 --- /dev/null +++ b/doc/html/globals_eval_0x65.html @@ -0,0 +1,158 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+  +

+

- e -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/globals_eval_0x6b.html b/doc/html/globals_eval_0x6b.html new file mode 100644 index 0000000..d02720c --- /dev/null +++ b/doc/html/globals_eval_0x6b.html @@ -0,0 +1,270 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+  +

+

- k -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/globals_eval_0x6d.html b/doc/html/globals_eval_0x6d.html new file mode 100644 index 0000000..018a37e --- /dev/null +++ b/doc/html/globals_eval_0x6d.html @@ -0,0 +1,70 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+  +

+

- m -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/globals_eval_0x76.html b/doc/html/globals_eval_0x76.html new file mode 100644 index 0000000..9059350 --- /dev/null +++ b/doc/html/globals_eval_0x76.html @@ -0,0 +1,123 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+
+ +
+ +

+  +

+

- v -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/globals_func.html b/doc/html/globals_func.html new file mode 100644 index 0000000..21d0cfb --- /dev/null +++ b/doc/html/globals_func.html @@ -0,0 +1,61 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+  +

+

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/globals_type.html b/doc/html/globals_type.html new file mode 100644 index 0000000..fce8df5 --- /dev/null +++ b/doc/html/globals_type.html @@ -0,0 +1,59 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+  +

+

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/globals_vars.html b/doc/html/globals_vars.html new file mode 100644 index 0000000..90685ca --- /dev/null +++ b/doc/html/globals_vars.html @@ -0,0 +1,72 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+  +

+

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/hierarchy.html b/doc/html/hierarchy.html new file mode 100644 index 0000000..1fdabd2 --- /dev/null +++ b/doc/html/hierarchy.html @@ -0,0 +1,73 @@ + + +VST SDK 2.4: Hierarchical Index + + + + +
+
+
+
+

VST SDK 2.4 Class Hierarchy

This inheritance list is sorted roughly, but not completely, alphabetically: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/history.html b/doc/html/history.html new file mode 100644 index 0000000..59d25ae --- /dev/null +++ b/doc/html/history.html @@ -0,0 +1,62 @@ + + +VST SDK 2.4: Revision History + + + + +
+
+

Revision History

+Revision 2 (2006/11/15)

+ +

+Revision 1 (2006/03/08)

+ +

+Revision 0 (2006/01/19)

+ + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/index.html b/doc/html/index.html new file mode 100644 index 0000000..a0d916c --- /dev/null +++ b/doc/html/index.html @@ -0,0 +1,8 @@ + + +VST SDK 2.4 + + + + + diff --git a/doc/html/intro.html b/doc/html/intro.html new file mode 100644 index 0000000..38a1d04 --- /dev/null +++ b/doc/html/intro.html @@ -0,0 +1,65 @@ + + +VST SDK 2.4: Introduction + + + + +
+
+

Introduction

+What is a VST Plug-In?

+Essentially, a VST Plug-in is a pure audio processing component, and not an audio application: It is a component that is utilized within a host application. This host application provides the audio streams that are processed by the plug-in's code.

+Generally speaking, a VST plug-in it can take a stream of audio data, apply a process to the audio, and return the result to the host application. A VST Plug-In performs its process normally using the processor of the computer; It does not necessarily need dedicated digital signal processors. The audio stream is broken down into a series of blocks. The host supplies the blocks in sequence. The host and its current environment control the block-size. The VST Plug-In maintains the status of all its own parameters relating to the running process: The host does not maintain any information about what the plug-in did with the last block of data it processed.

+From the host application’s point of view, a VST Plug-In is a black box with an arbitrary number of inputs, outputs (MIDI or Audio), and associated parameters. The host needs no implicit knowledge of the plug-in's process to be able to use it. The plug-in process can use whatever parameters it wishes, internally to the process, but depending on the capabilities of the host, it can allow the changes to user parameters to be automated by the host.

+The source code of a VST Plug-In is platform independent, but the delivery system depends on the platform architecture:

+

+To learn more about VST you can subscribe to the VST Developer Mailing List - check the 3rd Party Developer Support section at www.steinberg.net.

+


+

+Audio Processing

+Audio processing in the plug is accomplished by one of 3 methods, namely process (), processReplacing () and processDoubleReplacing (). While process () takes input data, applies its processing algorithm, and then adds the result to the output (accumulating), processReplacing () and processDoubleReplacing (), overwrite the output buffer.

+

Note:
The accumulating process mode is deprecated in VST 2.4. Please implement processReplacing (mandatory!) and processDoubleReplacing (optional).
+Audio data processed by VST Plug-Ins is 32 bit (single precision) and optionally 64 bit (double precision) floating-point data. The default used range is from -1.0 to +1.0 inclusive [-1.0, +1.0] (where 1.0 corresponds to 0dB, 0.5 to -6dB and 0.0 to -oodB). Note that an effect could generate values above this range.

+All parameters - the user parameters, acting directly or indirectly on that data, as automated by the host, are 32 bit floating-point data. They must always range from 0.0 to 1.0 inclusive [0.0, +1.0], regardless of their internal or external representation.

+

See also:
Threading issues
+
+

+Plug-In Implementation

+If you want to develop a VST Plug-In, you may prefer to go straight to the code examples now. These are very simple examples in which you will learn most of the important basic concepts just by reading a few lines of code. As a Plug-In developer you actually need to know very little about hosting a Plug-In. You should concentrate on the AudioEffect (VST 1.0) and AudioEffectX (VST 2.x extensions) base classes.
Note:
Never edit any of the SDK source files. Never ever. The host application relies on them being used as they are provided. Anything can be added or changed by overriding in your private classes derived from AudioEffectX.
+
+

+User Interfaces

+All user-interface issues are entirely separated from the audio processing issues. At its simplest there is an option where you can avoid providing a user interface at all. In this case the host requests character strings from the Plug-In representing each of the parameters. The host can use the separate ASCII strings for the value, the label, and the units of the parameters to construct its own user interface. This is how the simple code-examples, AGain & ADelay, work. This is also often a good way to develop a VST Plug-In, it offers a very short development cycle to start to test the algorithm. The proper interface can come later.

+The next user interface level is provided when the Plug-In defines its own editor. This allows practically any user interface to be defined. A negative aspect is that then you can quickly land up in platform specifics when dealing with the nuts an bolts of the interface issues, even though the audio process, the concepts and methodology remain platform independent.

+The final option is to use a portable framework for creating sophisticated user interfaces. This framework takes the form of the VSTGUI Library files that are available for almost all supported VST platforms. The VSTGUI Library classes and their usage is described in separate documentation.

See also:
VSTGUI on SourceForge
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/license.html b/doc/html/license.html new file mode 100644 index 0000000..6453020 --- /dev/null +++ b/doc/html/license.html @@ -0,0 +1,99 @@ + + +VST SDK 2.4: Licensing Issues + + + + +
+
+

Licensing Issues

The Steinberg VST Plug-In Software Development Kit can be used freely subject to certain licensing conditions by anyone interested in developing Plug-Ins, or to extend an application so that it’s capable of hosting VST Plug-Ins. When you chose to receive the VST Plug-In SDK you declared yourself to be in agreement with the Licensing conditions.

+These notes don’t replace the licensing agreement in any way, but quickly explain what you can and cannot do with the Steinberg VST Plug-In Software Development Kit.

+The License:

+ +

+This SDK:

+ +

+Steinberg:

+ +

+You cannot:

+ +

+You should not:

+ +

+You have to:

+ +

+You can:

+ +

Please read the Licensing Agreement!

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/maceditor.html b/doc/html/maceditor.html new file mode 100644 index 0000000..8762b88 --- /dev/null +++ b/doc/html/maceditor.html @@ -0,0 +1,76 @@ + + +VST SDK 2.4: Macintosh Editor as HIViewRef + + + + +
+
+

Macintosh Editor as HIViewRef

+Introduction

+In the beginning of VST the Plug-In's GUI was attached at the left-top corner without a mechanism for the host to move it. This and the evolution of the macintosh platform makes it necessary to change this old behaviour. The modern way on Mac OS X to do UI design with C/C++ is to use HIViews and window compositing.
+ The VST SDK 2.4 requires the Plug-In to attach one HIView to the window and that this HIView can be moved around and that it can be embedded into other subviews.
+ Hosts which implement VST 2.4 need to provide a window to the Plug-In which is composited if the Plug-In itself uses 2.4. If the Plug-In uses an earlier VST SDK it should provide a non composited window.

+


+

+Adding an HIView on effEditOpen

+As before the ptr in effEditOpen is a WindowRef. You need to add one HIView to the content view of this window.

+

HIViewRef contentView;
+if (HIViewFindByID (HIViewGetRoot ((WindowRef)ptr), kHIViewWindowContentID, &contentView) == noErr)
+        HIViewAddSubview (contentView, myPluginView);
+

+


+

+Closing on effEditClose

+When effEditClose is called you should remove your HIView from the window.

+

HIViewRemoveFromSuperview (myPluginView);
+

+Don't do anything with the window. It is not your window.

+


+

+Resizing the Plug-In

+If you want to resize your view, just do it, but don't resize the host window.

+

HIRect pluginBounds;
+HIViewGetFrame (myPluginView, &pluginBounds);
+pluginBounds.size.width = newWidth;
+pluginBounds.size.height = newHeight;
+HIViewSetFrame (myPluginView, &pluginBounds);
+

+The host needs to listen to bounds changes on the Plug-In view and resize its window accordingly.

+


+

+No more effEditDraw, effEditIdle, effEditMouse, effEditTop, effEditSleep

+You need to use Carbon Events now, which you register on the HIView, not on the window if possible. But don't remove these opcodes from your editor yet, if you want your Plug-In to work in 2.3 hosts.

+


+

+VST 2.4 Plug-Ins and VST 2.3 Hosts

+Now there is a conflict situation that some VST 2.3 hosts may not work with HIViews and window compositing. You should map the mac specific effEdit* opcodes internaly to the same functions you call if you receive one of the appropriate Carbon Events (VSTGUI does this automatically). You also need to define VST_FORCE_DEPRECATED=0 as a preprocessor definition to get the effEdit* opcodes.

+With revision 1 of SDK 2.4 the default value for VST_FORCE_DEPRECATED is zero, if you build for ppc machines.

+

See also:
Apple HIView Programming Guide
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/main.html b/doc/html/main.html new file mode 100644 index 0000000..a3a0279 --- /dev/null +++ b/doc/html/main.html @@ -0,0 +1,50 @@ + + +VST SDK 2.4: Main Page + + + + +
+
+

VST SDK 2.4 Documentation

+

+

+vstpluglogo.jpg +
+

+

Welcome to VST SDK 2.4 Rev.2!

+

+Introduction
+ What's new in VST 2.4
+

+Licensing Issues
+ Acknowledgements
+

+Revision History
+ + + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/namespace_host_can_dos.html b/doc/html/namespace_host_can_dos.html new file mode 100644 index 0000000..9970ae3 --- /dev/null +++ b/doc/html/namespace_host_can_dos.html @@ -0,0 +1,330 @@ + + +VST SDK 2.4: HostCanDos Namespace Reference + + + + +
+
+
+
+

HostCanDos Namespace Reference

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Variables

const char * canDoSendVstEvents = "sendVstEvents"
 Host supports send of Vst events to plug-in.
const char * canDoSendVstMidiEvent = "sendVstMidiEvent"
 Host supports send of MIDI events to plug-in.
const char * canDoSendVstTimeInfo = "sendVstTimeInfo"
 Host supports send of VstTimeInfo to plug-in.
const char * canDoReceiveVstEvents = "receiveVstEvents"
 Host can receive Vst events from plug-in.
const char * canDoReceiveVstMidiEvent = "receiveVstMidiEvent"
 Host can receive MIDI events from plug-in.
const char * canDoReportConnectionChanges = "reportConnectionChanges"
 Host will indicates the plug-in when something change in plug-in´s routing/connections with suspend/resume/setSpeakerArrangement.
const char * canDoAcceptIOChanges = "acceptIOChanges"
 Host supports ioChanged ().
const char * canDoSizeWindow = "sizeWindow"
 used by VSTGUI
const char * canDoOffline = "offline"
 Host supports offline feature.
const char * canDoOpenFileSelector = "openFileSelector"
 Host supports function openFileSelector ().
const char * canDoCloseFileSelector = "closeFileSelector"
 Host supports function closeFileSelector ().
const char * canDoStartStopProcess = "startStopProcess"
 Host supports functions startProcess () and stopProcess ().
const char * canDoShellCategory = "shellCategory"
 'shell' handling via uniqueID. If supported by the Host and the Plug-in has the category kPlugCategShell
const char * canDoSendVstMidiEventFlagIsRealtime = "sendVstMidiEventFlagIsRealtime"
 Host supports flags for VstMidiEvent.
+


Detailed Description

+hostCanDos strings Plug-in -> Host +

+


Variable Documentation

+ +
+
+ + + + +
const char* HostCanDos::canDoSendVstEvents = "sendVstEvents"
+
+
+ +

+Host supports send of Vst events to plug-in. +

+ +

+

+ +

+
+ + + + +
const char* HostCanDos::canDoSendVstMidiEvent = "sendVstMidiEvent"
+
+
+ +

+Host supports send of MIDI events to plug-in. +

+ +

+

+ +

+
+ + + + +
const char* HostCanDos::canDoSendVstTimeInfo = "sendVstTimeInfo"
+
+
+ +

+Host supports send of VstTimeInfo to plug-in. +

+ +

+

+ +

+
+ + + + +
const char* HostCanDos::canDoReceiveVstEvents = "receiveVstEvents"
+
+
+ +

+Host can receive Vst events from plug-in. +

+ +

+

+ +

+
+ + + + +
const char* HostCanDos::canDoReceiveVstMidiEvent = "receiveVstMidiEvent"
+
+
+ +

+Host can receive MIDI events from plug-in. +

+ +

+

+ +

+
+ + + + +
const char* HostCanDos::canDoReportConnectionChanges = "reportConnectionChanges"
+
+
+ +

+Host will indicates the plug-in when something change in plug-in´s routing/connections with suspend/resume/setSpeakerArrangement. +

+ +

+

+ +

+
+ + + + +
const char* HostCanDos::canDoAcceptIOChanges = "acceptIOChanges"
+
+
+ +

+Host supports ioChanged (). +

+ +

+

+ +

+
+ + + + +
const char* HostCanDos::canDoSizeWindow = "sizeWindow"
+
+
+ +

+used by VSTGUI +

+ +

+

+ +

+
+ + + + +
const char* HostCanDos::canDoOffline = "offline"
+
+
+ +

+Host supports offline feature. +

+ +

+

+ +

+
+ + + + +
const char* HostCanDos::canDoOpenFileSelector = "openFileSelector"
+
+
+ +

+Host supports function openFileSelector (). +

+ +

+

+ +

+
+ + + + +
const char* HostCanDos::canDoCloseFileSelector = "closeFileSelector"
+
+
+ +

+Host supports function closeFileSelector (). +

+ +

+

+ +

+
+ + + + +
const char* HostCanDos::canDoStartStopProcess = "startStopProcess"
+
+
+ +

+Host supports functions startProcess () and stopProcess (). +

+ +

+

+ +

+
+ + + + +
const char* HostCanDos::canDoShellCategory = "shellCategory"
+
+
+ +

+'shell' handling via uniqueID. If supported by the Host and the Plug-in has the category kPlugCategShell +

+ +

+

+ +

+
+ + + + +
const char* HostCanDos::canDoSendVstMidiEventFlagIsRealtime = "sendVstMidiEventFlagIsRealtime"
+
+
+ +

+Host supports flags for VstMidiEvent. +

+ +

+

+ + + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/namespace_plug_can_dos.html b/doc/html/namespace_plug_can_dos.html new file mode 100644 index 0000000..38159ec --- /dev/null +++ b/doc/html/namespace_plug_can_dos.html @@ -0,0 +1,210 @@ + + +VST SDK 2.4: PlugCanDos Namespace Reference + + + + +
+
+
+
+

PlugCanDos Namespace Reference

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

Variables

const char * canDoSendVstEvents = "sendVstEvents"
 plug-in will send Vst events to Host
const char * canDoSendVstMidiEvent = "sendVstMidiEvent"
 plug-in will send MIDI events to Host
const char * canDoReceiveVstEvents = "receiveVstEvents"
 plug-in can receive MIDI events from Host
const char * canDoReceiveVstMidiEvent = "receiveVstMidiEvent"
 plug-in can receive MIDI events from Host
const char * canDoReceiveVstTimeInfo = "receiveVstTimeInfo"
 plug-in can receive Time info from Host
const char * canDoOffline = "offline"
 plug-in supports offline functions (offlineNotify, offlinePrepare, offlineRun)
const char * canDoMidiProgramNames = "midiProgramNames"
 plug-in supports function getMidiProgramName ()
const char * canDoBypass = "bypass"
 plug-in supports function setBypass ()
+


Detailed Description

+plugCanDos strings Host -> Plug-in +

+


Variable Documentation

+ +
+
+ + + + +
const char* PlugCanDos::canDoSendVstEvents = "sendVstEvents"
+
+
+ +

+plug-in will send Vst events to Host +

+ +

+

+ +

+
+ + + + +
const char* PlugCanDos::canDoSendVstMidiEvent = "sendVstMidiEvent"
+
+
+ +

+plug-in will send MIDI events to Host +

+ +

+

+ +

+
+ + + + +
const char* PlugCanDos::canDoReceiveVstEvents = "receiveVstEvents"
+
+
+ +

+plug-in can receive MIDI events from Host +

+ +

+

+ +

+
+ + + + +
const char* PlugCanDos::canDoReceiveVstMidiEvent = "receiveVstMidiEvent"
+
+
+ +

+plug-in can receive MIDI events from Host +

+ +

+

+ +

+
+ + + + +
const char* PlugCanDos::canDoReceiveVstTimeInfo = "receiveVstTimeInfo"
+
+
+ +

+plug-in can receive Time info from Host +

+ +

+

+ +

+
+ + + + +
const char* PlugCanDos::canDoOffline = "offline"
+
+
+ +

+plug-in supports offline functions (offlineNotify, offlinePrepare, offlineRun) +

+ +

+

+ +

+
+ + + + +
const char* PlugCanDos::canDoMidiProgramNames = "midiProgramNames"
+
+
+ +

+plug-in supports function getMidiProgramName () +

+ +

+

+ +

+
+ + + + +
const char* PlugCanDos::canDoBypass = "bypass"
+
+
+ +

+plug-in supports function setBypass () +

+ +

+

+ + + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/namespacemembers.html b/doc/html/namespacemembers.html new file mode 100644 index 0000000..ae91519 --- /dev/null +++ b/doc/html/namespacemembers.html @@ -0,0 +1,67 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+Here is a list of all namespace members with links to the namespace documentation for each member: +

+

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/namespacemembers_vars.html b/doc/html/namespacemembers_vars.html new file mode 100644 index 0000000..e890ca6 --- /dev/null +++ b/doc/html/namespacemembers_vars.html @@ -0,0 +1,67 @@ + + +VST SDK 2.4: Class Members + + + + +
+
+
+
+
+ +
+  +

+

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/namespaces.html b/doc/html/namespaces.html new file mode 100644 index 0000000..9530cde --- /dev/null +++ b/doc/html/namespaces.html @@ -0,0 +1,44 @@ + + +VST SDK 2.4: Namespace Index + + + + +
+
+
+
+

VST SDK 2.4 Namespace List

Here is a list of all namespaces with brief descriptions: + + +
HostCanDos
PlugCanDos
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/others.html b/doc/html/others.html new file mode 100644 index 0000000..3ca286e --- /dev/null +++ b/doc/html/others.html @@ -0,0 +1,53 @@ + + +VST SDK 2.4: Others + + + + +
+
+

Others

+VST Monitor Plug-In

+The VSTMonitor Plug-In provided with this SDK is dedicated to "monitor" the communications between a VST Plug-In and the host which instanciates it: it keeps track of all the calls made by the host to the Plug-In's dispatcher, and of all the calls made by the Plug-In to the host's audiomaster. This is useful to record the sequence of calls done by any host to a VST Plug-In while loading it. Besides VSTMonitor has a "trigger" function which lets the user trigger (via a pop-up menu) any call to the host's audiomaster, to see how the host reacts (and notably to see if the function is implemented by the host...).

+You will find this plug-in in the VSTPlug-ins folder dedicated to each platform. You only need to put it directly in your own VST plug-ins folder in order to make it work.

+Calls made by the host to the plug-in are shown in grey, calls from the plug-in to the host are displayed in red. Internal (to the plug-in) calls are shown in blue.

+All the GUI buttons don't correspond to "real" parameters declared to the host, in order to prevent from disturbing the monitoring. Nevertheless, 3 "real" parameters and 2 programs are declared "publically" (although they are not used internally) to let you see how they are handled by the host.

+

Note:
Many hosts, while loading, open each Vst plug-in, for example to check their IO configuration. This is "hidden" to the user (as the plug-in is always closed as soon as the information needed has been recorded by the host), but VstMonitor can record even those calls, and display them the next time it is opened "normally" in the sequencer. That's why while the host is loading, an alert window may be automatically opened (on Windows platform), asking if the user want to keep track of "what has happened" (and although he has not explicitly opened the plug-in). On Mac, things recorded are kept by default (use Reset -see below- to delete them).
+VstMonitor's buttons:

+

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/pages.html b/doc/html/pages.html new file mode 100644 index 0000000..22e0b32 --- /dev/null +++ b/doc/html/pages.html @@ -0,0 +1,59 @@ + + +VST SDK 2.4: Page Index + + + + +
+
+

VST SDK 2.4 Related Pages

Here is a list of all related documentation pages: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/sequences.html b/doc/html/sequences.html new file mode 100644 index 0000000..8070c00 --- /dev/null +++ b/doc/html/sequences.html @@ -0,0 +1,99 @@ + + +VST SDK 2.4: VST Calling Sequences + + + + +
+
+

VST Calling Sequences

+Introduction

+The diagrams below illustrate the most important calling sequences taking place between VST host application and plug-in. This is of interest to plug-in developers as well as to host developers.

+


+

+Threading issues

+In general, processEvents(), startProcess(), stopProcess(), process(), processReplacing() and processDoubleReplacing() are called from a time-critical high priority thread (except for offline processing).
+ To satisfy realtime constraints for low latency audio processing, memory allocations and lock-based syncronisation should be avoided.
+ The same applies to setParameter() and setProgram() when playing automation from host. Any others functions are called from UI thread in general.
+ The host takes care that processing and setup functions are isolated from each other. setSampleRate(), setBlockSize(), setProcessPrecision(), etc. calls occur only in suspended state, i.e. before resume() is called.

+


+

+Sequence Diagrams

+ +

+ + + + + + + +
+Initialisation.gif +

Figure 3: A plug-in is initialized

+
+Termination.gif +

Figure 4: A plug-in is terminated

+
+TurnOn.gif +

Figure 1: A plug-in is turned on

+
+TurnOff.gif +

Figure 2: A plug-in is turned off

+
+Sampleratechange.gif +

Figure 6: The sample rate changed

+
+Blocksizechange.gif +

Figure 9: The block size changed

+
+ + + + + + + + + +
+SpeakerarrangementnegotiationforVSTfx.gif +

Figure 5: The speaker arrangements negotiation between the host and the plug-in

+
+IOchange.gif +

Figure 7: The number of IOs changed caused e.g. by user interaction

+
+ControlChanged.gif +

Figure 8: A control changed within the userinterface of the plug-in

+
+Offlineprocessing.gif +

Figure 10: A plug-in processes offline

+
+ + + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_a_effect-members.html b/doc/html/struct_a_effect-members.html new file mode 100644 index 0000000..f163d92 --- /dev/null +++ b/doc/html/struct_a_effect-members.html @@ -0,0 +1,65 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

AEffect Member List

This is the complete list of members for AEffect, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
dispatcherAEffect
flagsAEffect
futureAEffect
getParameterAEffect
initialDelayAEffect
ioRatioAEffect
magicAEffect
numInputsAEffect
numOutputsAEffect
numParamsAEffect
numProgramsAEffect
objectAEffect
offQualitiesAEffect
processAEffect
processDoubleReplacingAEffect
processReplacingAEffect
realQualitiesAEffect
resvd1AEffect
resvd2AEffect
setParameterAEffect
uniqueIDAEffect
userAEffect
versionAEffect
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_a_effect.html b/doc/html/struct_a_effect.html new file mode 100644 index 0000000..556d9cb --- /dev/null +++ b/doc/html/struct_a_effect.html @@ -0,0 +1,493 @@ + + +VST SDK 2.4: AEffect Struct Reference + + + + +
+
+
+
+

AEffect Struct Reference

#include <aeffect.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Attributes

VstInt32 magic
 must be kEffectMagic ('VstP')
AEffectDispatcherProc dispatcher
AEffectProcessProc process
AEffectSetParameterProc setParameter
AEffectGetParameterProc getParameter
VstInt32 numPrograms
 number of programs
VstInt32 numParams
 all programs are assumed to have numParams parameters
VstInt32 numInputs
 number of audio inputs
VstInt32 numOutputs
 number of audio outputs
VstInt32 flags
VstIntPtr resvd1
 reserved for Host, must be 0
VstIntPtr resvd2
 reserved for Host, must be 0
VstInt32 initialDelay
 for algorithms which need input in the first place (Group delay or latency in Samples). This value should be initialized in a resume state.
VstInt32 realQualities
VstInt32 offQualities
float ioRatio
void * object
 AudioEffect class pointer
void * user
 user-defined pointer
VstInt32 uniqueID
 registered unique identifier (register it at Steinberg 3rd party support Web). This is used to identify a plug-in during save+load of preset and project.
VstInt32 version
 plug-in version (example 1100 for version 1.1.0.0)
AEffectProcessProc processReplacing
AEffectProcessDoubleProc processDoubleReplacing
char future [56]
 reserved for future use (please zero)
+


Detailed Description

+Basic VST Effect "C" Interface. +

+


Member Data Documentation

+ +
+
+ + + + +
AEffectDispatcherProc AEffect::dispatcher
+
+
+ +

+Host to Plug-in dispatcher

See also:
AudioEffect::dispatcher
+ +
+

+ +

+ +
+ +

+

See also:
VstAEffectFlags
+ +
+

+ +

+
+ + + + +
char AEffect::future[56]
+
+
+ +

+reserved for future use (please zero) +

+ +

+

+ +

+
+ + + + +
AEffectGetParameterProc AEffect::getParameter
+
+
+ +

+Returns current value of automatable parameter

See also:
AudioEffect::getParameter
+ +
+

+ +

+ +
+ +

+for algorithms which need input in the first place (Group delay or latency in Samples). This value should be initialized in a resume state. +

+ +

+

+ +

+
+ + + + +
float AEffect::ioRatio
+
+
+ +

+

Deprecated:
unused member
+ +
+

+ +

+ +
+ +

+must be kEffectMagic ('VstP') +

+ +

+

+ +

+ +
+ +

+number of audio inputs +

+ +

+

+ +

+ +
+ +

+number of audio outputs +

+ +

+

+ +

+ +
+ +

+all programs are assumed to have numParams parameters +

+ +

+

+ +

+ +
+ +

+number of programs +

+ +

+

+ +

+
+ + + + +
void* AEffect::object
+
+
+ +

+AudioEffect class pointer +

+ +

+

+ +

+ +
+ +

+

Deprecated:
unused member
+ +
+

+ +

+
+ + + + +
AEffectProcessProc AEffect::process
+
+
+ +

+

Deprecated:
Accumulating process mode is deprecated in VST 2.4! Use AEffect::processReplacing instead!
+ +
+

+ +

+
+ + + + +
AEffectProcessDoubleProc AEffect::processDoubleReplacing
+
+
+ +

+Process double-precision audio samples in replacing mode

See also:
AudioEffect::processDoubleReplacing
+ +
+

+ +

+
+ + + + +
AEffectProcessProc AEffect::processReplacing
+
+
+ +

+Process audio samples in replacing mode

See also:
AudioEffect::processReplacing
+ +
+

+ +

+ +
+ +

+

Deprecated:
unused member
+ +
+

+ +

+ +
+ +

+reserved for Host, must be 0 +

+ +

+

+ +

+ +
+ +

+reserved for Host, must be 0 +

+ +

+

+ +

+
+ + + + +
AEffectSetParameterProc AEffect::setParameter
+
+
+ +

+Set new value of automatable parameter

See also:
AudioEffect::setParameter
+ +
+

+ +

+ +
+ +

+registered unique identifier (register it at Steinberg 3rd party support Web). This is used to identify a plug-in during save+load of preset and project. +

+ +

+

+ +

+
+ + + + +
void* AEffect::user
+
+
+ +

+user-defined pointer +

+ +

+

+ +

+ +
+ +

+plug-in version (example 1100 for version 1.1.0.0) +

+ +

+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_e_rect-members.html b/doc/html/struct_e_rect-members.html new file mode 100644 index 0000000..3c1a60a --- /dev/null +++ b/doc/html/struct_e_rect-members.html @@ -0,0 +1,46 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

ERect Member List

This is the complete list of members for ERect, including all inherited members.

+ + + + +
bottomERect
leftERect
rightERect
topERect
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_e_rect.html b/doc/html/struct_e_rect.html new file mode 100644 index 0000000..0f20fad --- /dev/null +++ b/doc/html/struct_e_rect.html @@ -0,0 +1,133 @@ + + +VST SDK 2.4: ERect Struct Reference + + + + +
+
+
+
+

ERect Struct Reference

#include <aeffect.h> +

+List of all members. + + + + + + + + + + + + + + +

Public Attributes

VstInt16 top
 top coordinate
VstInt16 left
 left coordinate
VstInt16 bottom
 bottom coordinate
VstInt16 right
 right coordinate
+


Detailed Description

+Structure used for effEditGetRect. +

+


Member Data Documentation

+ +
+
+ + + + +
VstInt16 ERect::bottom
+
+
+ +

+bottom coordinate +

+ +

+

+ +

+
+ + + + +
VstInt16 ERect::left
+
+
+ +

+left coordinate +

+ +

+

+ +

+
+ + + + +
VstInt16 ERect::right
+
+
+ +

+right coordinate +

+ +

+

+ +

+
+ + + + +
VstInt16 ERect::top
+
+
+ +

+top coordinate +

+ +

+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_midi_key_name-members.html b/doc/html/struct_midi_key_name-members.html new file mode 100644 index 0000000..3a5e0f2 --- /dev/null +++ b/doc/html/struct_midi_key_name-members.html @@ -0,0 +1,47 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

MidiKeyName Member List

This is the complete list of members for MidiKeyName, including all inherited members.

+ + + + + +
flagsMidiKeyName
keyNameMidiKeyName
reservedMidiKeyName
thisKeyNumberMidiKeyName
thisProgramIndexMidiKeyName
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_midi_key_name.html b/doc/html/struct_midi_key_name.html new file mode 100644 index 0000000..6545618 --- /dev/null +++ b/doc/html/struct_midi_key_name.html @@ -0,0 +1,153 @@ + + +VST SDK 2.4: MidiKeyName Struct Reference + + + + +
+
+
+
+

MidiKeyName Struct Reference

#include <aeffectx.h> +

+List of all members. + + + + + + + + + + + + + + + + + +

Public Attributes

VstInt32 thisProgramIndex
 0 or greater: fill struct for this program index.
VstInt32 thisKeyNumber
 0 - 127. fill struct for this key number.
char keyName [kVstMaxNameLen]
 key name, empty means regular key names
VstInt32 reserved
 zero
VstInt32 flags
 reserved, none defined yet, zero.
+


Detailed Description

+MIDI Key Description. +

+


Member Data Documentation

+ +
+ +
+ +

+reserved, none defined yet, zero. +

+ +

+

+ +

+
+ + + + +
char MidiKeyName::keyName[kVstMaxNameLen]
+
+
+ +

+key name, empty means regular key names +

+ +

+

+ +

+ +
+ +

+zero +

+ +

+

+ +

+ +
+ +

+0 - 127. fill struct for this key number. +

+ +

+

+ +

+ +
+ +

+0 or greater: fill struct for this program index. +

+ +

+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_midi_program_category-members.html b/doc/html/struct_midi_program_category-members.html new file mode 100644 index 0000000..a0d0118 --- /dev/null +++ b/doc/html/struct_midi_program_category-members.html @@ -0,0 +1,46 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

MidiProgramCategory Member List

This is the complete list of members for MidiProgramCategory, including all inherited members.

+ + + + +
flagsMidiProgramCategory
nameMidiProgramCategory
parentCategoryIndexMidiProgramCategory
thisCategoryIndexMidiProgramCategory
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_midi_program_category.html b/doc/html/struct_midi_program_category.html new file mode 100644 index 0000000..7b98c21 --- /dev/null +++ b/doc/html/struct_midi_program_category.html @@ -0,0 +1,133 @@ + + +VST SDK 2.4: MidiProgramCategory Struct Reference + + + + +
+
+
+
+

MidiProgramCategory Struct Reference

#include <aeffectx.h> +

+List of all members. + + + + + + + + + + + + + + +

Public Attributes

VstInt32 thisCategoryIndex
 0 or greater: fill struct for this category index.
char name [kVstMaxNameLen]
 name
VstInt32 parentCategoryIndex
 -1:no parent category
VstInt32 flags
 reserved, none defined yet, zero.
+


Detailed Description

+MIDI Program Category. +

+


Member Data Documentation

+ +
+ +
+ +

+reserved, none defined yet, zero. +

+ +

+

+ +

+
+ + + + +
char MidiProgramCategory::name[kVstMaxNameLen]
+
+
+ +

+name +

+ +

+

+ +

+ +
+ +

+-1:no parent category +

+ +

+

+ +

+ +
+ +

+0 or greater: fill struct for this category index. +

+ +

+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_midi_program_name-members.html b/doc/html/struct_midi_program_name-members.html new file mode 100644 index 0000000..2919e97 --- /dev/null +++ b/doc/html/struct_midi_program_name-members.html @@ -0,0 +1,50 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

MidiProgramName Member List

This is the complete list of members for MidiProgramName, including all inherited members.

+ + + + + + + + +
flagsMidiProgramName
midiBankLsbMidiProgramName
midiBankMsbMidiProgramName
midiProgramMidiProgramName
nameMidiProgramName
parentCategoryIndexMidiProgramName
reservedMidiProgramName
thisProgramIndexMidiProgramName
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_midi_program_name.html b/doc/html/struct_midi_program_name.html new file mode 100644 index 0000000..7af6b20 --- /dev/null +++ b/doc/html/struct_midi_program_name.html @@ -0,0 +1,214 @@ + + +VST SDK 2.4: MidiProgramName Struct Reference + + + + +
+
+
+
+

MidiProgramName Struct Reference

#include <aeffectx.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Attributes

VstInt32 thisProgramIndex
 0 or greater: fill struct for this program index
char name [kVstMaxNameLen]
 program name
char midiProgram
 -1:off, 0-127
char midiBankMsb
 -1:off, 0-127
char midiBankLsb
 -1:off, 0-127
char reserved
 zero
VstInt32 parentCategoryIndex
 -1:no parent category
VstInt32 flags
 omni etc.
+


Detailed Description

+MIDI Program Description. +

+


Member Data Documentation

+ +
+ +
+ +

+omni etc. +

+

See also:
VstMidiProgramNameFlags
+ +
+

+ +

+ +
+ +

+-1:off, 0-127 +

+ +

+

+ +

+ +
+ +

+-1:off, 0-127 +

+ +

+

+ +

+ +
+ +

+-1:off, 0-127 +

+ +

+

+ +

+
+ + + + +
char MidiProgramName::name[kVstMaxNameLen]
+
+
+ +

+program name +

+ +

+

+ +

+ +
+ +

+-1:no parent category +

+ +

+

+ +

+
+ + + + +
char MidiProgramName::reserved
+
+
+ +

+zero +

+ +

+

+ +

+ +
+ +

+0 or greater: fill struct for this program index +

+ +

+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_audio_file-members.html b/doc/html/struct_vst_audio_file-members.html new file mode 100644 index 0000000..4a018c8 --- /dev/null +++ b/doc/html/struct_vst_audio_file-members.html @@ -0,0 +1,64 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

VstAudioFile Member List

This is the complete list of members for VstAudioFile, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
editCursorPositionVstAudioFile
flagsVstAudioFile
formatVstAudioFile
futureVstAudioFile
hostOwnedVstAudioFile
nameVstAudioFile
numChannelsVstAudioFile
numFramesVstAudioFile
numMarkersVstAudioFile
plugOwnedVstAudioFile
sampleRateVstAudioFile
selectedChannelsMaskVstAudioFile
selectionSizeVstAudioFile
selectionStartVstAudioFile
smpteFrameRateVstAudioFile
tempoVstAudioFile
ticksPerBlackNoteVstAudioFile
timeRulerOffsetVstAudioFile
timeRulerUnitVstAudioFile
timeSigDenominatorVstAudioFile
timeSigNumeratorVstAudioFile
uniqueIdVstAudioFile
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_audio_file.html b/doc/html/struct_vst_audio_file.html new file mode 100644 index 0000000..2d999c3 --- /dev/null +++ b/doc/html/struct_vst_audio_file.html @@ -0,0 +1,493 @@ + + +VST SDK 2.4: VstAudioFile Struct Reference + + + + +
+
+
+
+

VstAudioFile Struct Reference

#include <aeffectx.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Attributes

VstInt32 flags
 see enum VstAudioFileFlags
void * hostOwned
 any data private to Host
void * plugOwned
 any data private to plug-in
char name [kVstMaxFileNameLen]
 file title
VstInt32 uniqueId
 uniquely identify a file during a session
double sampleRate
 file sample rate
VstInt32 numChannels
 number of channels (1 for mono, 2 for stereo...)
double numFrames
 number of frames in the audio file
VstInt32 format
 Reserved for future use.
double editCursorPosition
 -1 if no such cursor
double selectionStart
 frame index of first selected frame, or -1
double selectionSize
 number of frames in selection, or 0
VstInt32 selectedChannelsMask
 1 bit per channel
VstInt32 numMarkers
 number of markers in the file
VstInt32 timeRulerUnit
 see doc for possible values
double timeRulerOffset
 offset in time ruler (positive or negative)
double tempo
 as BPM (Beats Per Minute)
VstInt32 timeSigNumerator
 time signature numerator
VstInt32 timeSigDenominator
 time signature denominator
VstInt32 ticksPerBlackNote
 resolution
VstInt32 smpteFrameRate
 SMPTE rate (set as in VstTimeInfo).
char future [64]
 Reserved for future use.
+


Detailed Description

+Structure passed to offlineNotify and offlineStart +

+


Member Data Documentation

+ +
+ +
+ +

+-1 if no such cursor +

+ +

+

+ +

+ +
+ +

+see enum VstAudioFileFlags +

+ +

+

+ +

+ +
+ +

+Reserved for future use. +

+ +

+

+ +

+
+ + + + +
char VstAudioFile::future[64]
+
+
+ +

+Reserved for future use. +

+ +

+

+ +

+
+ + + + +
void* VstAudioFile::hostOwned
+
+
+ +

+any data private to Host +

+ +

+

+ +

+
+ + + + +
char VstAudioFile::name[kVstMaxFileNameLen]
+
+
+ +

+file title +

+ +

+

+ +

+ +
+ +

+number of channels (1 for mono, 2 for stereo...) +

+ +

+

+ +

+
+ + + + +
double VstAudioFile::numFrames
+
+
+ +

+number of frames in the audio file +

+ +

+

+ +

+ +
+ +

+number of markers in the file +

+ +

+

+ +

+
+ + + + +
void* VstAudioFile::plugOwned
+
+
+ +

+any data private to plug-in +

+ +

+

+ +

+
+ + + + +
double VstAudioFile::sampleRate
+
+
+ +

+file sample rate +

+ +

+

+ +

+ +
+ +

+1 bit per channel +

+ +

+

+ +

+
+ + + + +
double VstAudioFile::selectionSize
+
+
+ +

+number of frames in selection, or 0 +

+ +

+

+ +

+
+ + + + +
double VstAudioFile::selectionStart
+
+
+ +

+frame index of first selected frame, or -1 +

+ +

+

+ +

+ +
+ +

+SMPTE rate (set as in VstTimeInfo). +

+ +

+

+ +

+
+ + + + +
double VstAudioFile::tempo
+
+
+ +

+as BPM (Beats Per Minute) +

+ +

+

+ +

+ +
+ +

+resolution +

+ +

+

+ +

+
+ + + + +
double VstAudioFile::timeRulerOffset
+
+
+ +

+offset in time ruler (positive or negative) +

+ +

+

+ +

+ +
+ +

+see doc for possible values +

+ +

+

+ +

+ +
+ +

+time signature denominator +

+ +

+

+ +

+ +
+ +

+time signature numerator +

+ +

+

+ +

+ +
+ +

+uniquely identify a file during a session +

+ +

+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_audio_file_marker-members.html b/doc/html/struct_vst_audio_file_marker-members.html new file mode 100644 index 0000000..1597947 --- /dev/null +++ b/doc/html/struct_vst_audio_file_marker-members.html @@ -0,0 +1,47 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

VstAudioFileMarker Member List

This is the complete list of members for VstAudioFileMarker, including all inherited members.

+ + + + + +
idVstAudioFileMarker
nameVstAudioFileMarker
positionVstAudioFileMarker
reservedVstAudioFileMarker
typeVstAudioFileMarker
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_audio_file_marker.html b/doc/html/struct_vst_audio_file_marker.html new file mode 100644 index 0000000..5341c57 --- /dev/null +++ b/doc/html/struct_vst_audio_file_marker.html @@ -0,0 +1,153 @@ + + +VST SDK 2.4: VstAudioFileMarker Struct Reference + + + + +
+
+
+
+

VstAudioFileMarker Struct Reference

#include <aeffectx.h> +

+List of all members. + + + + + + + + + + + + + + + + + +

Public Attributes

double position
 marker position
char name [32]
 marker name
VstInt32 type
 marker type
VstInt32 id
 marker identifier
VstInt32 reserved
 reserved for future use
+


Detailed Description

+Audio file marker. +

+


Member Data Documentation

+ +
+ +
+ +

+marker identifier +

+ +

+

+ +

+
+ + + + +
char VstAudioFileMarker::name[32]
+
+
+ +

+marker name +

+ +

+

+ +

+
+ + + + +
double VstAudioFileMarker::position
+
+
+ +

+marker position +

+ +

+

+ +

+ +
+ +

+reserved for future use +

+ +

+

+ +

+ +
+ +

+marker type +

+ +

+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_event-members.html b/doc/html/struct_vst_event-members.html new file mode 100644 index 0000000..0121b7c --- /dev/null +++ b/doc/html/struct_vst_event-members.html @@ -0,0 +1,47 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

VstEvent Member List

This is the complete list of members for VstEvent, including all inherited members.

+ + + + + +
byteSizeVstEvent
dataVstEvent
deltaFramesVstEvent
flagsVstEvent
typeVstEvent
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_event.html b/doc/html/struct_vst_event.html new file mode 100644 index 0000000..1bc5ac4 --- /dev/null +++ b/doc/html/struct_vst_event.html @@ -0,0 +1,151 @@ + + +VST SDK 2.4: VstEvent Struct Reference + + + + +
+
+
+
+

VstEvent Struct Reference

#include <aeffectx.h> +

+List of all members. + + + + + + + + + + + + + + + + +

Public Attributes

VstInt32 type
VstInt32 byteSize
 size of this event, excl. type and byteSize
VstInt32 deltaFrames
 sample frames related to the current block start sample position
VstInt32 flags
 generic flags, none defined yet
char data [16]
 data size may vary, depending on event type
+


Detailed Description

+A generic timestamped event. +

+


Member Data Documentation

+ +
+ +
+ +

+size of this event, excl. type and byteSize +

+ +

+

+ +

+
+ + + + +
char VstEvent::data[16]
+
+
+ +

+data size may vary, depending on event type +

+ +

+

+ +

+ +
+ +

+sample frames related to the current block start sample position +

+ +

+

+ +

+ +
+ +

+generic flags, none defined yet +

+ +

+

+ +

+ +
+ +

+

See also:
VstEventTypes
+ +
+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_events-members.html b/doc/html/struct_vst_events-members.html new file mode 100644 index 0000000..31e92d6 --- /dev/null +++ b/doc/html/struct_vst_events-members.html @@ -0,0 +1,45 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

VstEvents Member List

This is the complete list of members for VstEvents, including all inherited members.

+ + + +
eventsVstEvents
numEventsVstEvents
reservedVstEvents
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_events.html b/doc/html/struct_vst_events.html new file mode 100644 index 0000000..228ec61 --- /dev/null +++ b/doc/html/struct_vst_events.html @@ -0,0 +1,113 @@ + + +VST SDK 2.4: VstEvents Struct Reference + + + + +
+
+
+
+

VstEvents Struct Reference

#include <aeffectx.h> +

+List of all members. + + + + + + + + + + + +

Public Attributes

VstInt32 numEvents
 number of Events in array
VstIntPtr reserved
 zero (Reserved for future use)
VstEventevents [2]
 event pointer array, variable size
+


Detailed Description

+A block of events for the current processed audio block. +

+


Member Data Documentation

+ +
+
+ + + + +
VstEvent* VstEvents::events[2]
+
+
+ +

+event pointer array, variable size +

+ +

+

+ +

+ +
+ +

+number of Events in array +

+ +

+

+ +

+ +
+ +

+zero (Reserved for future use) +

+ +

+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_file_select-members.html b/doc/html/struct_vst_file_select-members.html new file mode 100644 index 0000000..4a2f4d6 --- /dev/null +++ b/doc/html/struct_vst_file_select-members.html @@ -0,0 +1,55 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

VstFileSelect Member List

This is the complete list of members for VstFileSelect, including all inherited members.

+ + + + + + + + + + + + + +
commandVstFileSelect
fileTypesVstFileSelect
futureVstFileSelect
initialPathVstFileSelect
macCreatorVstFileSelect
nbFileTypesVstFileSelect
nbReturnPathVstFileSelect
reservedVstFileSelect
returnMultiplePathsVstFileSelect
returnPathVstFileSelect
sizeReturnPathVstFileSelect
titleVstFileSelect
typeVstFileSelect
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_file_select.html b/doc/html/struct_vst_file_select.html new file mode 100644 index 0000000..0cbe341 --- /dev/null +++ b/doc/html/struct_vst_file_select.html @@ -0,0 +1,310 @@ + + +VST SDK 2.4: VstFileSelect Struct Reference + + + + +
+
+
+
+

VstFileSelect Struct Reference

#include <aeffectx.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Attributes

VstInt32 command
VstInt32 type
VstInt32 macCreator
 optional: 0 = no creator
VstInt32 nbFileTypes
 number of fileTypes
VstFileTypefileTypes
 list of fileTypes
char title [1024]
 text to display in file selector's title
char * initialPath
 initial path
char * returnPath
 use with kVstFileLoad and kVstDirectorySelect. null: Host allocates memory, plug-in must call closeOpenFileSelector!
VstInt32 sizeReturnPath
 size of allocated memory for return paths
char ** returnMultiplePaths
 use with kVstMultipleFilesLoad. Host allocates memory, plug-in must call closeOpenFileSelector!
VstInt32 nbReturnPath
 number of selected paths
VstIntPtr reserved
 reserved for Host application
char future [116]
 reserved for future use
+


Detailed Description

+File Selector Description used in audioMasterOpenFileSelector. +

+


Member Data Documentation

+ +
+ +
+ +

+

See also:
VstFileSelectCommand
+ +
+

+ +

+ +
+ +

+list of fileTypes +

+

See also:
VstFileType
+ +
+

+ +

+
+ + + + +
char VstFileSelect::future[116]
+
+
+ +

+reserved for future use +

+ +

+

+ +

+
+ + + + +
char* VstFileSelect::initialPath
+
+
+ +

+initial path +

+ +

+

+ +

+ +
+ +

+optional: 0 = no creator +

+ +

+

+ +

+ +
+ +

+number of fileTypes +

+ +

+

+ +

+ +
+ +

+number of selected paths +

+ +

+

+ +

+ +
+ +

+reserved for Host application +

+ +

+

+ +

+ +
+ +

+use with kVstMultipleFilesLoad. Host allocates memory, plug-in must call closeOpenFileSelector! +

+ +

+

+ +

+
+ + + + +
char* VstFileSelect::returnPath
+
+
+ +

+use with kVstFileLoad and kVstDirectorySelect. null: Host allocates memory, plug-in must call closeOpenFileSelector! +

+ +

+

+ +

+ +
+ +

+size of allocated memory for return paths +

+ +

+

+ +

+
+ + + + +
char VstFileSelect::title[1024]
+
+
+ +

+text to display in file selector's title +

+ +

+

+ +

+ +
+ +

+

See also:
VstFileSelectType
+ +
+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_file_type-members.html b/doc/html/struct_vst_file_type-members.html new file mode 100644 index 0000000..b0b0fe4 --- /dev/null +++ b/doc/html/struct_vst_file_type-members.html @@ -0,0 +1,49 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

VstFileType Member List

This is the complete list of members for VstFileType, including all inherited members.

+ + + + + + + +
dosTypeVstFileType
macTypeVstFileType
mimeType1VstFileType
mimeType2VstFileType
nameVstFileType
unixTypeVstFileType
VstFileType(const char *_name=0, const char *_macType=0, const char *_dosType=0, const char *_unixType=0, const char *_mimeType1=0, const char *_mimeType2=0)VstFileType [inline]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_file_type.html b/doc/html/struct_vst_file_type.html new file mode 100644 index 0000000..73588ca --- /dev/null +++ b/doc/html/struct_vst_file_type.html @@ -0,0 +1,230 @@ + + +VST SDK 2.4: VstFileType Struct Reference + + + + +
+
+
+
+

VstFileType Struct Reference

#include <aeffectx.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 VstFileType (const char *_name=0, const char *_macType=0, const char *_dosType=0, const char *_unixType=0, const char *_mimeType1=0, const char *_mimeType2=0)

Public Attributes

char name [128]
 display name
char macType [8]
 MacOS type.
char dosType [8]
 Windows file extension.
char unixType [8]
 Unix file extension.
char mimeType1 [128]
 MIME type.
char mimeType2 [128]
 additional MIME type
+


Detailed Description

+File filter used in VstFileSelect. +

+


Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VstFileType::VstFileType (const char *  _name = 0,
const char *  _macType = 0,
const char *  _dosType = 0,
const char *  _unixType = 0,
const char *  _mimeType1 = 0,
const char *  _mimeType2 = 0 
) [inline]
+
+
+ +

+ +

+

+


Member Data Documentation

+ +
+
+ + + + +
char VstFileType::dosType[8]
+
+
+ +

+Windows file extension. +

+ +

+

+ +

+
+ + + + +
char VstFileType::macType[8]
+
+
+ +

+MacOS type. +

+ +

+

+ +

+
+ + + + +
char VstFileType::mimeType1[128]
+
+
+ +

+MIME type. +

+ +

+

+ +

+
+ + + + +
char VstFileType::mimeType2[128]
+
+
+ +

+additional MIME type +

+ +

+

+ +

+
+ + + + +
char VstFileType::name[128]
+
+
+ +

+display name +

+ +

+

+ +

+
+ + + + +
char VstFileType::unixType[8]
+
+
+ +

+Unix file extension. +

+ +

+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_key_code-members.html b/doc/html/struct_vst_key_code-members.html new file mode 100644 index 0000000..f9908d6 --- /dev/null +++ b/doc/html/struct_vst_key_code-members.html @@ -0,0 +1,45 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

VstKeyCode Member List

This is the complete list of members for VstKeyCode, including all inherited members.

+ + + +
characterVstKeyCode
modifierVstKeyCode
virtVstKeyCode
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_key_code.html b/doc/html/struct_vst_key_code.html new file mode 100644 index 0000000..31e9e6d --- /dev/null +++ b/doc/html/struct_vst_key_code.html @@ -0,0 +1,109 @@ + + +VST SDK 2.4: VstKeyCode Struct Reference + + + + +
+
+
+
+

VstKeyCode Struct Reference

#include <aeffectx.h> +

+List of all members. + + + + + + + + + +

Public Attributes

VstInt32 character
 ASCII character.
unsigned char virt
unsigned char modifier
+


Detailed Description

+Structure used for keyUp/keyDown. +

+


Member Data Documentation

+ +
+ +
+ +

+ASCII character. +

+ +

+

+ +

+
+ + + + +
unsigned char VstKeyCode::modifier
+
+
+ +

+

See also:
VstModifierKey
+ +
+

+ +

+
+ + + + +
unsigned char VstKeyCode::virt
+
+
+ +

+

See also:
VstVirtualKey
+ +
+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_midi_event-members.html b/doc/html/struct_vst_midi_event-members.html new file mode 100644 index 0000000..63983a0 --- /dev/null +++ b/doc/html/struct_vst_midi_event-members.html @@ -0,0 +1,53 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

VstMidiEvent Member List

This is the complete list of members for VstMidiEvent, including all inherited members.

+ + + + + + + + + + + +
byteSizeVstMidiEvent
deltaFramesVstMidiEvent
detuneVstMidiEvent
flagsVstMidiEvent
midiDataVstMidiEvent
noteLengthVstMidiEvent
noteOffsetVstMidiEvent
noteOffVelocityVstMidiEvent
reserved1VstMidiEvent
reserved2VstMidiEvent
typeVstMidiEvent
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_midi_event.html b/doc/html/struct_vst_midi_event.html new file mode 100644 index 0000000..46d8cbe --- /dev/null +++ b/doc/html/struct_vst_midi_event.html @@ -0,0 +1,271 @@ + + +VST SDK 2.4: VstMidiEvent Struct Reference + + + + +
+
+
+
+

VstMidiEvent Struct Reference

#include <aeffectx.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Attributes

VstInt32 type
 kVstMidiType
VstInt32 byteSize
 sizeof (VstMidiEvent)
VstInt32 deltaFrames
 sample frames related to the current block start sample position
VstInt32 flags
VstInt32 noteLength
 (in sample frames) of entire note, if available, else 0
VstInt32 noteOffset
 offset (in sample frames) into note from note start if available, else 0
char midiData [4]
 1 to 3 MIDI bytes; midiData[3] is reserved (zero)
char detune
 -64 to +63 cents; for scales other than 'well-tempered' ('microtuning')
char noteOffVelocity
 Note Off Velocity [0, 127].
char reserved1
 zero (Reserved for future use)
char reserved2
 zero (Reserved for future use)
+


Detailed Description

+MIDI Event (to be casted from VstEvent). +

+


Member Data Documentation

+ +
+ +
+ +

+sizeof (VstMidiEvent) +

+ +

+

+ +

+ +
+ +

+sample frames related to the current block start sample position +

+ +

+

+ +

+
+ + + + +
char VstMidiEvent::detune
+
+
+ +

+-64 to +63 cents; for scales other than 'well-tempered' ('microtuning') +

+ +

+

+ +

+ +
+ +

+

See also:
VstMidiEventFlags
+ +
+

+ +

+
+ + + + +
char VstMidiEvent::midiData[4]
+
+
+ +

+1 to 3 MIDI bytes; midiData[3] is reserved (zero) +

+ +

+

+ +

+ +
+ +

+(in sample frames) of entire note, if available, else 0 +

+ +

+

+ +

+ +
+ +

+offset (in sample frames) into note from note start if available, else 0 +

+ +

+

+ +

+ +
+ +

+Note Off Velocity [0, 127]. +

+ +

+

+ +

+
+ + + + +
char VstMidiEvent::reserved1
+
+
+ +

+zero (Reserved for future use) +

+ +

+

+ +

+
+ + + + +
char VstMidiEvent::reserved2
+
+
+ +

+zero (Reserved for future use) +

+ +

+

+ +

+ +
+ +

+kVstMidiType +

+ +

+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_midi_sysex_event-members.html b/doc/html/struct_vst_midi_sysex_event-members.html new file mode 100644 index 0000000..a0545d3 --- /dev/null +++ b/doc/html/struct_vst_midi_sysex_event-members.html @@ -0,0 +1,50 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

VstMidiSysexEvent Member List

This is the complete list of members for VstMidiSysexEvent, including all inherited members.

+ + + + + + + + +
byteSizeVstMidiSysexEvent
deltaFramesVstMidiSysexEvent
dumpBytesVstMidiSysexEvent
flagsVstMidiSysexEvent
resvd1VstMidiSysexEvent
resvd2VstMidiSysexEvent
sysexDumpVstMidiSysexEvent
typeVstMidiSysexEvent
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_midi_sysex_event.html b/doc/html/struct_vst_midi_sysex_event.html new file mode 100644 index 0000000..821e523 --- /dev/null +++ b/doc/html/struct_vst_midi_sysex_event.html @@ -0,0 +1,213 @@ + + +VST SDK 2.4: VstMidiSysexEvent Struct Reference + + + + +
+
+
+
+

VstMidiSysexEvent Struct Reference

#include <aeffectx.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Attributes

VstInt32 type
 kVstSysexType
VstInt32 byteSize
 sizeof (VstMidiSysexEvent)
VstInt32 deltaFrames
 sample frames related to the current block start sample position
VstInt32 flags
 none defined yet (should be zero)
VstInt32 dumpBytes
 byte size of sysexDump
VstIntPtr resvd1
 zero (Reserved for future use)
char * sysexDump
 sysex dump
VstIntPtr resvd2
 zero (Reserved for future use)
+


Detailed Description

+MIDI Sysex Event (to be casted from VstEvent). +

+


Member Data Documentation

+ +
+ +
+ +

+sizeof (VstMidiSysexEvent) +

+ +

+

+ +

+ +
+ +

+sample frames related to the current block start sample position +

+ +

+

+ +

+ +
+ +

+byte size of sysexDump +

+ +

+

+ +

+ +
+ +

+none defined yet (should be zero) +

+ +

+

+ +

+ +
+ +

+zero (Reserved for future use) +

+ +

+

+ +

+ +
+ +

+zero (Reserved for future use) +

+ +

+

+ +

+
+ + + + +
char* VstMidiSysexEvent::sysexDump
+
+
+ +

+sysex dump +

+ +

+

+ +

+ +
+ +

+kVstSysexType +

+ +

+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_offline_task-members.html b/doc/html/struct_vst_offline_task-members.html new file mode 100644 index 0000000..bd0b8cc --- /dev/null +++ b/doc/html/struct_vst_offline_task-members.html @@ -0,0 +1,73 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

VstOfflineTask Member List

This is the complete list of members for VstOfflineTask, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
destinationFormatVstOfflineTask
destinationSampleRateVstOfflineTask
extraBufferVstOfflineTask
flagsVstOfflineTask
futureVstOfflineTask
hostOwnedVstOfflineTask
indexVstOfflineTask
inputBufferVstOfflineTask
maxFramesToWriteVstOfflineTask
numDestinationChannelsVstOfflineTask
numFramesInSourceFileVstOfflineTask
numFramesToProcessVstOfflineTask
numSourceChannelsVstOfflineTask
outputBufferVstOfflineTask
outputTextVstOfflineTask
plugOwnedVstOfflineTask
positionToProcessFromVstOfflineTask
processNameVstOfflineTask
progressVstOfflineTask
progressModeVstOfflineTask
progressTextVstOfflineTask
readCountVstOfflineTask
readPositionVstOfflineTask
returnValueVstOfflineTask
sizeInputBufferVstOfflineTask
sizeOutputBufferVstOfflineTask
sourceFormatVstOfflineTask
sourceSampleRateVstOfflineTask
valueVstOfflineTask
writeCountVstOfflineTask
writePositionVstOfflineTask
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_offline_task.html b/doc/html/struct_vst_offline_task.html new file mode 100644 index 0000000..0ca4fa7 --- /dev/null +++ b/doc/html/struct_vst_offline_task.html @@ -0,0 +1,673 @@ + + +VST SDK 2.4: VstOfflineTask Struct Reference + + + + +
+
+
+
+

VstOfflineTask Struct Reference

#include <aeffectx.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Attributes

char processName [96]
 set by plug-in
double readPosition
 set by plug-in/Host
double writePosition
 set by plug-in/Host
VstInt32 readCount
 set by plug-in/Host
VstInt32 writeCount
 set by plug-in
VstInt32 sizeInputBuffer
 set by Host
VstInt32 sizeOutputBuffer
 set by Host
void * inputBuffer
 set by Host
void * outputBuffer
 set by Host
double positionToProcessFrom
 set by Host
double numFramesToProcess
 set by Host
double maxFramesToWrite
 set by plug-in
void * extraBuffer
 set by plug-in
VstInt32 value
 set by Host or plug-in
VstInt32 index
 set by Host or plug-in
double numFramesInSourceFile
 set by Host
double sourceSampleRate
 set by Host or plug-in
double destinationSampleRate
 set by Host or plug-in
VstInt32 numSourceChannels
 set by Host or plug-in
VstInt32 numDestinationChannels
 set by Host or plug-in
VstInt32 sourceFormat
 set by Host
VstInt32 destinationFormat
 set by plug-in
char outputText [512]
 set by plug-in or Host
double progress
 set by plug-in
VstInt32 progressMode
 Reserved for future use.
char progressText [100]
 set by plug-in
VstInt32 flags
 set by Host and plug-in; see enum VstOfflineTaskFlags
VstInt32 returnValue
 Reserved for future use.
void * hostOwned
 set by Host
void * plugOwned
 set by plug-in
char future [1024]
 Reserved for future use.
+


Detailed Description

+Offline Task Description. +

+


Member Data Documentation

+ +
+ +
+ +

+set by plug-in +

+ +

+

+ +

+ +
+ +

+set by Host or plug-in +

+ +

+

+ +

+
+ + + + +
void* VstOfflineTask::extraBuffer
+
+
+ +

+set by plug-in +

+ +

+

+ +

+ +
+ +

+set by Host and plug-in; see enum VstOfflineTaskFlags +

+ +

+

+ +

+
+ + + + +
char VstOfflineTask::future[1024]
+
+
+ +

+Reserved for future use. +

+ +

+

+ +

+
+ + + + +
void* VstOfflineTask::hostOwned
+
+
+ +

+set by Host +

+ +

+

+ +

+ +
+ +

+set by Host or plug-in +

+ +

+

+ +

+
+ + + + +
void* VstOfflineTask::inputBuffer
+
+
+ +

+set by Host +

+ +

+

+ +

+ +
+ +

+set by plug-in +

+ +

+

+ +

+ +
+ +

+set by Host or plug-in +

+ +

+

+ +

+ +
+ +

+set by Host +

+ +

+

+ +

+ +
+ +

+set by Host +

+ +

+

+ +

+ +
+ +

+set by Host or plug-in +

+ +

+

+ +

+
+ + + + +
void* VstOfflineTask::outputBuffer
+
+
+ +

+set by Host +

+ +

+

+ +

+
+ + + + +
char VstOfflineTask::outputText[512]
+
+
+ +

+set by plug-in or Host +

+ +

+

+ +

+
+ + + + +
void* VstOfflineTask::plugOwned
+
+
+ +

+set by plug-in +

+ +

+

+ +

+ +
+ +

+set by Host +

+ +

+

+ +

+
+ + + + +
char VstOfflineTask::processName[96]
+
+
+ +

+set by plug-in +

+ +

+

+ +

+
+ + + + +
double VstOfflineTask::progress
+
+
+ +

+set by plug-in +

+ +

+

+ +

+ +
+ +

+Reserved for future use. +

+ +

+

+ +

+
+ + + + +
char VstOfflineTask::progressText[100]
+
+
+ +

+set by plug-in +

+ +

+

+ +

+ +
+ +

+set by plug-in/Host +

+ +

+

+ +

+
+ + + + +
double VstOfflineTask::readPosition
+
+
+ +

+set by plug-in/Host +

+ +

+

+ +

+ +
+ +

+Reserved for future use. +

+ +

+

+ +

+ +
+ +

+set by Host +

+ +

+

+ +

+ +
+ +

+set by Host +

+ +

+

+ +

+ +
+ +

+set by Host +

+ +

+

+ +

+ +
+ +

+set by Host or plug-in +

+ +

+

+ +

+ +
+ +

+set by Host or plug-in +

+ +

+

+ +

+ +
+ +

+set by plug-in +

+ +

+

+ +

+
+ + + + +
double VstOfflineTask::writePosition
+
+
+ +

+set by plug-in/Host +

+ +

+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_parameter_properties-members.html b/doc/html/struct_vst_parameter_properties-members.html new file mode 100644 index 0000000..409cc04 --- /dev/null +++ b/doc/html/struct_vst_parameter_properties-members.html @@ -0,0 +1,58 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

VstParameterProperties Member List

This is the complete list of members for VstParameterProperties, including all inherited members.

+ + + + + + + + + + + + + + + + +
categoryVstParameterProperties
categoryLabelVstParameterProperties
displayIndexVstParameterProperties
flagsVstParameterProperties
futureVstParameterProperties
labelVstParameterProperties
largeStepFloatVstParameterProperties
largeStepIntegerVstParameterProperties
maxIntegerVstParameterProperties
minIntegerVstParameterProperties
numParametersInCategoryVstParameterProperties
reservedVstParameterProperties
shortLabelVstParameterProperties
smallStepFloatVstParameterProperties
stepFloatVstParameterProperties
stepIntegerVstParameterProperties
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_parameter_properties.html b/doc/html/struct_vst_parameter_properties.html new file mode 100644 index 0000000..8ab3412 --- /dev/null +++ b/doc/html/struct_vst_parameter_properties.html @@ -0,0 +1,371 @@ + + +VST SDK 2.4: VstParameterProperties Struct Reference + + + + +
+
+
+
+

VstParameterProperties Struct Reference

#include <aeffectx.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Attributes

float stepFloat
 float step
float smallStepFloat
 small float step
float largeStepFloat
 large float step
char label [kVstMaxLabelLen]
 parameter label
VstInt32 flags
VstInt32 minInteger
 integer minimum
VstInt32 maxInteger
 integer maximum
VstInt32 stepInteger
 integer step
VstInt32 largeStepInteger
 large integer step
char shortLabel [kVstMaxShortLabelLen]
 short label, recommended: 6 + delimiter
VstInt16 displayIndex
 index where this parameter should be displayed (starting with 0)
VstInt16 category
 0: no category, else group index + 1
VstInt16 numParametersInCategory
 number of parameters in category
VstInt16 reserved
 zero
char categoryLabel [kVstMaxCategLabelLen]
 category label, e.g. "Osc 1"
char future [16]
 reserved for future use
+


Detailed Description

+Parameter Properties used in effGetParameterProperties. +

+


Member Data Documentation

+ +
+ +
+ +

+0: no category, else group index + 1 +

+ +

+

+ +

+
+ + + + +
char VstParameterProperties::categoryLabel[kVstMaxCategLabelLen]
+
+
+ +

+category label, e.g. "Osc 1" +

+ +

+

+ +

+ +
+ +

+index where this parameter should be displayed (starting with 0) +

+ +

+

+ +

+ +
+ +

+

See also:
VstParameterFlags
+ +
+

+ +

+
+ + + + +
char VstParameterProperties::future[16]
+
+
+ +

+reserved for future use +

+ +

+

+ +

+
+ + + + +
char VstParameterProperties::label[kVstMaxLabelLen]
+
+
+ +

+parameter label +

+ +

+

+ +

+ +
+ +

+large float step +

+ +

+

+ +

+ +
+ +

+large integer step +

+ +

+

+ +

+ +
+ +

+integer maximum +

+ +

+

+ +

+ +
+ +

+integer minimum +

+ +

+

+ +

+ +
+ +

+number of parameters in category +

+ +

+

+ +

+ +
+ +

+zero +

+ +

+

+ +

+
+ + + + +
char VstParameterProperties::shortLabel[kVstMaxShortLabelLen]
+
+
+ +

+short label, recommended: 6 + delimiter +

+ +

+

+ +

+ +
+ +

+small float step +

+ +

+

+ +

+ +
+ +

+float step +

+ +

+

+ +

+ +
+ +

+integer step +

+ +

+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_patch_chunk_info-members.html b/doc/html/struct_vst_patch_chunk_info-members.html new file mode 100644 index 0000000..f8c07b0 --- /dev/null +++ b/doc/html/struct_vst_patch_chunk_info-members.html @@ -0,0 +1,47 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

VstPatchChunkInfo Member List

This is the complete list of members for VstPatchChunkInfo, including all inherited members.

+ + + + + +
futureVstPatchChunkInfo
numElementsVstPatchChunkInfo
pluginUniqueIDVstPatchChunkInfo
pluginVersionVstPatchChunkInfo
versionVstPatchChunkInfo
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_patch_chunk_info.html b/doc/html/struct_vst_patch_chunk_info.html new file mode 100644 index 0000000..1bbe908 --- /dev/null +++ b/doc/html/struct_vst_patch_chunk_info.html @@ -0,0 +1,153 @@ + + +VST SDK 2.4: VstPatchChunkInfo Struct Reference + + + + +
+
+
+
+

VstPatchChunkInfo Struct Reference

#include <aeffectx.h> +

+List of all members. + + + + + + + + + + + + + + + + + +

Public Attributes

VstInt32 version
 Format Version (should be 1).
VstInt32 pluginUniqueID
 UniqueID of the plug-in.
VstInt32 pluginVersion
 Plug-in Version.
VstInt32 numElements
 Number of Programs (Bank) or Parameters (Program).
char future [48]
 Reserved for future use.
+


Detailed Description

+Structure used for effBeginLoadBank/effBeginLoadProgram. +

+


Member Data Documentation

+ +
+
+ + + + +
char VstPatchChunkInfo::future[48]
+
+
+ +

+Reserved for future use. +

+ +

+

+ +

+ +
+ +

+Number of Programs (Bank) or Parameters (Program). +

+ +

+

+ +

+ +
+ +

+UniqueID of the plug-in. +

+ +

+

+ +

+ +
+ +

+Plug-in Version. +

+ +

+

+ +

+ +
+ +

+Format Version (should be 1). +

+ +

+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_pin_properties-members.html b/doc/html/struct_vst_pin_properties-members.html new file mode 100644 index 0000000..9214fbc --- /dev/null +++ b/doc/html/struct_vst_pin_properties-members.html @@ -0,0 +1,47 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

VstPinProperties Member List

This is the complete list of members for VstPinProperties, including all inherited members.

+ + + + + +
arrangementTypeVstPinProperties
flagsVstPinProperties
futureVstPinProperties
labelVstPinProperties
shortLabelVstPinProperties
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_pin_properties.html b/doc/html/struct_vst_pin_properties.html new file mode 100644 index 0000000..9b7c0d3 --- /dev/null +++ b/doc/html/struct_vst_pin_properties.html @@ -0,0 +1,149 @@ + + +VST SDK 2.4: VstPinProperties Struct Reference + + + + +
+
+
+
+

VstPinProperties Struct Reference

#include <aeffectx.h> +

+List of all members. + + + + + + + + + + + + + + + +

Public Attributes

char label [kVstMaxLabelLen]
 pin name
VstInt32 flags
VstInt32 arrangementType
char shortLabel [kVstMaxShortLabelLen]
 short name (recommended: 6 + delimiter)
char future [48]
 reserved for future use
+


Detailed Description

+Pin Properties used in effGetInputProperties and effGetOutputProperties. +

+


Member Data Documentation

+ +
+ +
+ +

+

See also:
VstSpeakerArrangementType
+ +
+

+ +

+ +
+ +

+

See also:
VstPinPropertiesFlags
+ +
+

+ +

+
+ + + + +
char VstPinProperties::future[48]
+
+
+ +

+reserved for future use +

+ +

+

+ +

+
+ + + + +
char VstPinProperties::label[kVstMaxLabelLen]
+
+
+ +

+pin name +

+ +

+

+ +

+
+ + + + +
char VstPinProperties::shortLabel[kVstMaxShortLabelLen]
+
+
+ +

+short name (recommended: 6 + delimiter) +

+ +

+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_speaker_arrangement-members.html b/doc/html/struct_vst_speaker_arrangement-members.html new file mode 100644 index 0000000..5fd06b6 --- /dev/null +++ b/doc/html/struct_vst_speaker_arrangement-members.html @@ -0,0 +1,45 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

VstSpeakerArrangement Member List

This is the complete list of members for VstSpeakerArrangement, including all inherited members.

+ + + +
numChannelsVstSpeakerArrangement
speakersVstSpeakerArrangement
typeVstSpeakerArrangement
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_speaker_arrangement.html b/doc/html/struct_vst_speaker_arrangement.html new file mode 100644 index 0000000..1f58926 --- /dev/null +++ b/doc/html/struct_vst_speaker_arrangement.html @@ -0,0 +1,114 @@ + + +VST SDK 2.4: VstSpeakerArrangement Struct Reference + + + + +
+
+
+
+

VstSpeakerArrangement Struct Reference

#include <aeffectx.h> +

+List of all members. + + + + + + + + + + + +

Public Attributes

VstInt32 type
 e.g. kSpeakerArr51 for 5.1
VstInt32 numChannels
 number of channels in this speaker arrangement
VstSpeakerProperties speakers [8]
 variable sized speaker array
+


Detailed Description

+Speaker Arrangement. +

+


Member Data Documentation

+ +
+ +
+ +

+number of channels in this speaker arrangement +

+ +

+

+ +

+ +
+ +

+variable sized speaker array +

+ +

+

+ +

+ +
+ +

+e.g. kSpeakerArr51 for 5.1 +

+

See also:
VstSpeakerArrangementType
+ +
+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_speaker_properties-members.html b/doc/html/struct_vst_speaker_properties-members.html new file mode 100644 index 0000000..ebe549f --- /dev/null +++ b/doc/html/struct_vst_speaker_properties-members.html @@ -0,0 +1,49 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

VstSpeakerProperties Member List

This is the complete list of members for VstSpeakerProperties, including all inherited members.

+ + + + + + + +
azimuthVstSpeakerProperties
elevationVstSpeakerProperties
futureVstSpeakerProperties
nameVstSpeakerProperties
radiusVstSpeakerProperties
reservedVstSpeakerProperties
typeVstSpeakerProperties
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_speaker_properties.html b/doc/html/struct_vst_speaker_properties.html new file mode 100644 index 0000000..53303cb --- /dev/null +++ b/doc/html/struct_vst_speaker_properties.html @@ -0,0 +1,191 @@ + + +VST SDK 2.4: VstSpeakerProperties Struct Reference + + + + +
+
+
+
+

VstSpeakerProperties Struct Reference

#include <aeffectx.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + +

Public Attributes

float azimuth
 unit: rad, range: -PI...PI, exception: 10.f for LFE channel
float elevation
 unit: rad, range: -PI/2...PI/2, exception: 10.f for LFE channel
float radius
 unit: meter, exception: 0.f for LFE channel
float reserved
 zero (reserved for future use)
char name [kVstMaxNameLen]
 for new setups, new names should be given (L/R/C... won't do)
VstInt32 type
char future [28]
 reserved for future use
+


Detailed Description

+Speaker Properties. The origin for azimuth is right (as by math conventions dealing with radians). The elevation origin is also right, visualizing a rotation of a circle across the -pi/pi axis of the horizontal circle. Thus, an elevation of -pi/2 corresponds to bottom, and a speaker standing on the left, and 'beaming' upwards would have an azimuth of -pi, and an elevation of pi/2. For user interface representation, grads are more likely to be used, and the origins will obviously 'shift' accordingly. +

+


Member Data Documentation

+ +
+ +
+ +

+unit: rad, range: -PI...PI, exception: 10.f for LFE channel +

+ +

+

+ +

+ +
+ +

+unit: rad, range: -PI/2...PI/2, exception: 10.f for LFE channel +

+ +

+

+ +

+
+ + + + +
char VstSpeakerProperties::future[28]
+
+
+ +

+reserved for future use +

+ +

+

+ +

+
+ + + + +
char VstSpeakerProperties::name[kVstMaxNameLen]
+
+
+ +

+for new setups, new names should be given (L/R/C... won't do) +

+ +

+

+ +

+
+ + + + +
float VstSpeakerProperties::radius
+
+
+ +

+unit: meter, exception: 0.f for LFE channel +

+ +

+

+ +

+ +
+ +

+zero (reserved for future use) +

+ +

+

+ +

+ +
+ +

+

See also:
VstSpeakerType
+ +
+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_time_info-members.html b/doc/html/struct_vst_time_info-members.html new file mode 100644 index 0000000..8d914f8 --- /dev/null +++ b/doc/html/struct_vst_time_info-members.html @@ -0,0 +1,56 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

VstTimeInfo Member List

This is the complete list of members for VstTimeInfo, including all inherited members.

+ + + + + + + + + + + + + + +
barStartPosVstTimeInfo
cycleEndPosVstTimeInfo
cycleStartPosVstTimeInfo
flagsVstTimeInfo
nanoSecondsVstTimeInfo
ppqPosVstTimeInfo
samplePosVstTimeInfo
sampleRateVstTimeInfo
samplesToNextClockVstTimeInfo
smpteFrameRateVstTimeInfo
smpteOffsetVstTimeInfo
tempoVstTimeInfo
timeSigDenominatorVstTimeInfo
timeSigNumeratorVstTimeInfo
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_time_info.html b/doc/html/struct_vst_time_info.html new file mode 100644 index 0000000..31c2dda --- /dev/null +++ b/doc/html/struct_vst_time_info.html @@ -0,0 +1,334 @@ + + +VST SDK 2.4: VstTimeInfo Struct Reference + + + + +
+
+
+
+

VstTimeInfo Struct Reference

#include <aeffectx.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Attributes

double samplePos
 current Position in audio samples (always valid)
double sampleRate
 current Sample Rate in Herz (always valid)
double nanoSeconds
 System Time in nanoseconds (10^-9 second).
double ppqPos
 Musical Position, in Quarter Note (1.0 equals 1 Quarter Note).
double tempo
 current Tempo in BPM (Beats Per Minute)
double barStartPos
 last Bar Start Position, in Quarter Note
double cycleStartPos
 Cycle Start (left locator), in Quarter Note.
double cycleEndPos
 Cycle End (right locator), in Quarter Note.
VstInt32 timeSigNumerator
 Time Signature Numerator (e.g. 3 for 3/4).
VstInt32 timeSigDenominator
 Time Signature Denominator (e.g. 4 for 3/4).
VstInt32 smpteOffset
 SMPTE offset (in SMPTE subframes (bits; 1/80 of a frame)). The current SMPTE position can be calculated using samplePos, sampleRate, and smpteFrameRate.
VstInt32 smpteFrameRate
VstInt32 samplesToNextClock
 MIDI Clock Resolution (24 Per Quarter Note), can be negative (nearest clock).
VstInt32 flags
+


Detailed Description

+VstTimeInfo requested via audioMasterGetTime.
See also:
AudioEffectX::getTimeInfo
+
Note:
VstTimeInfo::samplePos :Current Position. It must always be valid, and should not cost a lot to ask for. The sample position is ahead of the time displayed to the user. In sequencer stop mode, its value does not change. A 32 bit integer is too small for sample positions, and it's a double to make it easier to convert between ppq and samples.

+VstTimeInfo::ppqPos : At tempo 120, 1 quarter makes 1/2 second, so 2.0 ppq translates to 48000 samples at 48kHz sample rate. .25 ppq is one sixteenth note then. if you need something like 480ppq, you simply multiply ppq by that scaler.

+VstTimeInfo::barStartPos : Say we're at bars/beats readout 3.3.3. That's 2 bars + 2 q + 2 sixteenth, makes 2 * 4 + 2 + .25 = 10.25 ppq. at tempo 120, that's 10.25 * .5 = 5.125 seconds, times 48000 = 246000 samples (if my calculator servers me well :-).

+VstTimeInfo::samplesToNextClock : MIDI Clock Resolution (24 per Quarter Note), can be negative the distance to the next midi clock (24 ppq, pulses per quarter) in samples. unless samplePos falls precicely on a midi clock, this will either be negative such that the previous MIDI clock is addressed, or positive when referencing the following (future) MIDI clock.

+ +

+


Member Data Documentation

+ +
+
+ + + + +
double VstTimeInfo::barStartPos
+
+
+ +

+last Bar Start Position, in Quarter Note +

+ +

+

+ +

+
+ + + + +
double VstTimeInfo::cycleEndPos
+
+
+ +

+Cycle End (right locator), in Quarter Note. +

+ +

+

+ +

+
+ + + + +
double VstTimeInfo::cycleStartPos
+
+
+ +

+Cycle Start (left locator), in Quarter Note. +

+ +

+

+ +

+ +
+ +

+

See also:
VstTimeInfoFlags
+ +
+

+ +

+
+ + + + +
double VstTimeInfo::nanoSeconds
+
+
+ +

+System Time in nanoseconds (10^-9 second). +

+ +

+

+ +

+
+ + + + +
double VstTimeInfo::ppqPos
+
+
+ +

+Musical Position, in Quarter Note (1.0 equals 1 Quarter Note). +

+ +

+

+ +

+
+ + + + +
double VstTimeInfo::samplePos
+
+
+ +

+current Position in audio samples (always valid) +

+ +

+

+ +

+
+ + + + +
double VstTimeInfo::sampleRate
+
+
+ +

+current Sample Rate in Herz (always valid) +

+ +

+

+ +

+ +
+ +

+MIDI Clock Resolution (24 Per Quarter Note), can be negative (nearest clock). +

+ +

+

+ +

+ +
+ +

+

See also:
VstSmpteFrameRate
+ +
+

+ +

+ +
+ +

+SMPTE offset (in SMPTE subframes (bits; 1/80 of a frame)). The current SMPTE position can be calculated using samplePos, sampleRate, and smpteFrameRate. +

+ +

+

+ +

+
+ + + + +
double VstTimeInfo::tempo
+
+
+ +

+current Tempo in BPM (Beats Per Minute) +

+ +

+

+ +

+ +
+ +

+Time Signature Denominator (e.g. 4 for 3/4). +

+ +

+

+ +

+ +
+ +

+Time Signature Numerator (e.g. 3 for 3/4). +

+ +

+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_variable_io-members.html b/doc/html/struct_vst_variable_io-members.html new file mode 100644 index 0000000..c2db033 --- /dev/null +++ b/doc/html/struct_vst_variable_io-members.html @@ -0,0 +1,48 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

VstVariableIo Member List

This is the complete list of members for VstVariableIo, including all inherited members.

+ + + + + + +
inputsVstVariableIo
numSamplesInputVstVariableIo
numSamplesInputProcessedVstVariableIo
numSamplesOutputVstVariableIo
numSamplesOutputProcessedVstVariableIo
outputsVstVariableIo
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_variable_io.html b/doc/html/struct_vst_variable_io.html new file mode 100644 index 0000000..4d1b2db --- /dev/null +++ b/doc/html/struct_vst_variable_io.html @@ -0,0 +1,173 @@ + + +VST SDK 2.4: VstVariableIo Struct Reference + + + + +
+
+
+
+

VstVariableIo Struct Reference

#include <aeffectx.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + + +

Public Attributes

float ** inputs
 input audio buffers
float ** outputs
 output audio buffers
VstInt32 numSamplesInput
 number of incoming samples
VstInt32 numSamplesOutput
 number of outgoing samples
VstInt32numSamplesInputProcessed
 number of samples actually processed of input
VstInt32numSamplesOutputProcessed
 number of samples actually processed of output
+


Detailed Description

+Variable IO for Offline Processing. +

+


Member Data Documentation

+ +
+
+ + + + +
float** VstVariableIo::inputs
+
+
+ +

+input audio buffers +

+ +

+

+ +

+ +
+ +

+number of incoming samples +

+ +

+

+ +

+ +
+ +

+number of samples actually processed of input +

+ +

+

+ +

+ +
+ +

+number of outgoing samples +

+ +

+

+ +

+ +
+ +

+number of samples actually processed of output +

+ +

+

+ +

+
+ + + + +
float** VstVariableIo::outputs
+
+
+ +

+output audio buffers +

+ +

+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_window-members.html b/doc/html/struct_vst_window-members.html new file mode 100644 index 0000000..af9063f --- /dev/null +++ b/doc/html/struct_vst_window-members.html @@ -0,0 +1,52 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

VstWindow Member List

This is the complete list of members for VstWindow, including all inherited members.

+ + + + + + + + + + +
futureVstWindow
heightVstWindow
parentVstWindow
styleVstWindow
titleVstWindow
userHandleVstWindow
widthVstWindow
winHandleVstWindow
xPosVstWindow
yPosVstWindow
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/struct_vst_window.html b/doc/html/struct_vst_window.html new file mode 100644 index 0000000..cd79c5d --- /dev/null +++ b/doc/html/struct_vst_window.html @@ -0,0 +1,224 @@ + + +VST SDK 2.4: VstWindow Struct Reference + + + + +
+
+
+
+

VstWindow Struct Reference

#include <aeffectx.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + +

Public Attributes

char title [128]
VstInt16 xPos
VstInt16 yPos
VstInt16 width
VstInt16 height
VstInt32 style
void * parent
void * userHandle
void * winHandle
char future [104]
+


Detailed Description

+
Deprecated:
Structure used for openWindow and closeWindow (deprecated in VST 2.4).
+ +

+


Member Data Documentation

+ +
+
+ + + + +
char VstWindow::future[104]
+
+
+ +

+ +

+

+ +

+ +
+ +

+ +

+

+ +

+
+ + + + +
void* VstWindow::parent
+
+
+ +

+ +

+

+ +

+ +
+ +

+ +

+

+ +

+
+ + + + +
char VstWindow::title[128]
+
+
+ +

+ +

+

+ +

+
+ + + + +
void* VstWindow::userHandle
+
+
+ +

+ +

+

+ +

+ +
+ +

+ +

+

+ +

+
+ + + + +
void* VstWindow::winHandle
+
+
+ +

+ +

+

+ +

+ +
+ +

+ +

+

+ +

+ +
+ +

+ +

+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/structfx_bank-members.html b/doc/html/structfx_bank-members.html new file mode 100644 index 0000000..2b7749d --- /dev/null +++ b/doc/html/structfx_bank-members.html @@ -0,0 +1,56 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

fxBank Member List

This is the complete list of members for fxBank, including all inherited members.

+ + + + + + + + + + + + + + +
byteSizefxBank
chunkfxBank
chunkMagicfxBank
contentfxBank
currentProgramfxBank
datafxBank
futurefxBank
fxIDfxBank
fxMagicfxBank
fxVersionfxBank
numProgramsfxBank
programsfxBank
sizefxBank
versionfxBank
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/structfx_bank.html b/doc/html/structfx_bank.html new file mode 100644 index 0000000..7cffb4d --- /dev/null +++ b/doc/html/structfx_bank.html @@ -0,0 +1,337 @@ + + +VST SDK 2.4: fxBank Struct Reference + + + + +
+
+
+
+

fxBank Struct Reference

#include <vstfxstore.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Attributes

VstInt32 chunkMagic
 'CcnK'
VstInt32 byteSize
 size of this chunk, excl. magic + byteSize
VstInt32 fxMagic
 'FxBk' (regular) or 'FBCh' (opaque chunk)
VstInt32 version
 format version (1 or 2)
VstInt32 fxID
 fx unique ID
VstInt32 fxVersion
 fx version
VstInt32 numPrograms
 number of programs
VstInt32 currentProgram
 version 2: current program number
char future [124]
 reserved, should be zero
union {
   fxProgram   programs [1]
 variable number of programs
   struct {
      VstInt32   size
 size of bank data
      char   chunk [1]
 variable sized array with opaque bank data
   }   data
 bank chunk data
content
 bank content depending on fxMagic
+


Detailed Description

+Bank (fxb) structure. +

+


Member Data Documentation

+ +
+ +
+ +

+size of this chunk, excl. magic + byteSize +

+ +

+

+ +

+
+ + + + +
char fxBank::chunk[1]
+
+
+ +

+variable sized array with opaque bank data +

+ +

+

+ +

+ +
+ +

+'CcnK' +

+ +

+

+ +

+
+ + + + +
union { ... } fxBank::content
+
+
+ +

+bank content depending on fxMagic +

+ +

+

+ +

+ +
+ +

+version 2: current program number +

+ +

+

+ +

+
+ + + + +
struct { ... } fxBank::data
+
+
+ +

+bank chunk data +

+ +

+

+ +

+
+ + + + +
char fxBank::future[124]
+
+
+ +

+reserved, should be zero +

+ +

+

+ +

+
+ + + + +
VstInt32 fxBank::fxID
+
+
+ +

+fx unique ID +

+ +

+

+ +

+ +
+ +

+'FxBk' (regular) or 'FBCh' (opaque chunk) +

+ +

+

+ +

+ +
+ +

+fx version +

+ +

+

+ +

+ +
+ +

+number of programs +

+ +

+

+ +

+
+ + + + +
fxProgram fxBank::programs[1]
+
+
+ +

+variable number of programs +

+ +

+

+ +

+
+ + + + +
VstInt32 fxBank::size
+
+
+ +

+size of bank data +

+ +

+

+ +

+ +
+ +

+format version (1 or 2) +

+ +

+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/structfx_program-members.html b/doc/html/structfx_program-members.html new file mode 100644 index 0000000..0681af2 --- /dev/null +++ b/doc/html/structfx_program-members.html @@ -0,0 +1,55 @@ + + +VST SDK 2.4: Member List + + + + +
+
+
+
+

fxProgram Member List

This is the complete list of members for fxProgram, including all inherited members.

+ + + + + + + + + + + + + +
byteSizefxProgram
chunkfxProgram
chunkMagicfxProgram
contentfxProgram
datafxProgram
fxIDfxProgram
fxMagicfxProgram
fxVersionfxProgram
numParamsfxProgram
paramsfxProgram
prgNamefxProgram
sizefxProgram
versionfxProgram
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/structfx_program.html b/doc/html/structfx_program.html new file mode 100644 index 0000000..97a81bb --- /dev/null +++ b/doc/html/structfx_program.html @@ -0,0 +1,317 @@ + + +VST SDK 2.4: fxProgram Struct Reference + + + + +
+
+
+
+

fxProgram Struct Reference

#include <vstfxstore.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Attributes

VstInt32 chunkMagic
 'CcnK'
VstInt32 byteSize
 size of this chunk, excl. magic + byteSize
VstInt32 fxMagic
 'FxCk' (regular) or 'FPCh' (opaque chunk)
VstInt32 version
 format version (currently 1)
VstInt32 fxID
 fx unique ID
VstInt32 fxVersion
 fx version
VstInt32 numParams
 number of parameters
char prgName [28]
 program name (null-terminated ASCII string)
union {
   float   params [1]
 variable sized array with parameter values
   struct {
      VstInt32   size
 size of program data
      char   chunk [1]
 variable sized array with opaque program data
   }   data
 program chunk data
content
 program content depending on fxMagic
+


Detailed Description

+Program (fxp) structure. +

+


Member Data Documentation

+ +
+ +
+ +

+size of this chunk, excl. magic + byteSize +

+ +

+

+ +

+
+ + + + +
char fxProgram::chunk[1]
+
+
+ +

+variable sized array with opaque program data +

+ +

+

+ +

+ +
+ +

+'CcnK' +

+ +

+

+ +

+
+ + + + +
union { ... } fxProgram::content
+
+
+ +

+program content depending on fxMagic +

+ +

+

+ +

+
+ + + + +
struct { ... } fxProgram::data
+
+
+ +

+program chunk data +

+ +

+

+ +

+ +
+ +

+fx unique ID +

+ +

+

+ +

+ +
+ +

+'FxCk' (regular) or 'FPCh' (opaque chunk) +

+ +

+

+ +

+ +
+ +

+fx version +

+ +

+

+ +

+ +
+ +

+number of parameters +

+ +

+

+ +

+
+ + + + +
float fxProgram::params[1]
+
+
+ +

+variable sized array with parameter values +

+ +

+

+ +

+
+ + + + +
char fxProgram::prgName[28]
+
+
+ +

+program name (null-terminated ASCII string) +

+ +

+

+ +

+ +
+ +

+size of program data +

+ +

+

+ +

+ +
+ +

+format version (currently 1) +

+ +

+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/tab_b.gif b/doc/html/tab_b.gif new file mode 100644 index 0000000..0d62348 Binary files /dev/null and b/doc/html/tab_b.gif differ diff --git a/doc/html/tab_l.gif b/doc/html/tab_l.gif new file mode 100644 index 0000000..9b1e633 Binary files /dev/null and b/doc/html/tab_l.gif differ diff --git a/doc/html/tab_r.gif b/doc/html/tab_r.gif new file mode 100644 index 0000000..ce9dd9f Binary files /dev/null and b/doc/html/tab_r.gif differ diff --git a/doc/html/tabs.css b/doc/html/tabs.css new file mode 100644 index 0000000..a61552a --- /dev/null +++ b/doc/html/tabs.css @@ -0,0 +1,102 @@ +/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ + +DIV.tabs +{ + float : left; + width : 100%; + background : url("tab_b.gif") repeat-x bottom; + margin-bottom : 4px; +} + +DIV.tabs UL +{ + margin : 0px; + padding-left : 10px; + list-style : none; +} + +DIV.tabs LI, DIV.tabs FORM +{ + display : inline; + margin : 0px; + padding : 0px; +} + +DIV.tabs FORM +{ + float : right; +} + +DIV.tabs A +{ + float : left; + background : url("tab_r.gif") no-repeat right top; + border-bottom : 1px solid #84B0C7; + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + +DIV.tabs A:hover +{ + background-position: 100% -150px; +} + +DIV.tabs A:link, DIV.tabs A:visited, +DIV.tabs A:active, DIV.tabs A:hover +{ + color: #1A419D; +} + +DIV.tabs SPAN +{ + float : left; + display : block; + background : url("tab_l.gif") no-repeat left top; + padding : 5px 9px; + white-space : nowrap; +} + +DIV.tabs INPUT +{ + float : right; + display : inline; + font-size : 1em; +} + +DIV.tabs TD +{ + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + + + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +DIV.tabs SPAN {float : none;} +/* End IE5-Mac hack */ + +DIV.tabs A:hover SPAN +{ + background-position: 0% -150px; +} + +DIV.tabs LI#current A +{ + background-position: 100% -150px; + border-width : 0px; +} + +DIV.tabs LI#current SPAN +{ + background-position: 0% -150px; + padding-bottom : 6px; +} + +DIV.nav +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; +} diff --git a/doc/html/thanks.html b/doc/html/thanks.html new file mode 100644 index 0000000..ec626cf --- /dev/null +++ b/doc/html/thanks.html @@ -0,0 +1,40 @@ + + +VST SDK 2.4: Acknowledgements + + + + +
+
+

Acknowledgements

The VSTGUI interfaces & libraries were created by Yvan Grabit and Michael Schmidt (additional development Matthias Juwan, Arne Scheffler). The time they have invested has really made the huge inroads into cross-platform code compatibility.

+Thanks too, to Philippe Goutier who provided the VST Offline Interface.

+Not forgetting Dave Nicholson, Julien Junod, Pierre Jean Camillieri, Janne Roeper, Rene Hansen who did some additional typing.

+There were many more people involved in the creation of this interface, not all of whom can be mentioned here. We extend our thanks not just to the Steinberg Staff and Associates that contributed but also to the many other developers from other parties have helped with their input - mainly all the nice people on the VST Plug-In DEVELOPER MAILING LIST

+Thanks to all of you for having made this possible.

+Charlie Steinberg 2006 + + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/tree.html b/doc/html/tree.html new file mode 100644 index 0000000..fa6397b --- /dev/null +++ b/doc/html/tree.html @@ -0,0 +1,180 @@ + + + + + + + TreeView + + + + +
+

VST SDK 2.4

+
+

o*Main Page

+

o+Class List

+ +

o+Class Hierarchy

+ +

o*Class Members

+

o+Namespace List

+ +

o*Namespace Members

+

o+File List

+ +

o+Directories

+
+

|o+pluginterfaces

+
+

||\*vst2.x

+
+

|\+source

+
+

| \*vst2.x

+
+
+

o*File Members

+

\+Related Pages

+ +
+
+ + diff --git a/doc/html/vstfxstore_8h.html b/doc/html/vstfxstore_8h.html new file mode 100644 index 0000000..b15db02 --- /dev/null +++ b/doc/html/vstfxstore_8h.html @@ -0,0 +1,138 @@ + + +VST SDK 2.4: vstfxstore.h File Reference + + + + +
+
+
+
+ +

vstfxstore.h File Reference

#include "aeffect.h"
+ + + + + + + + + + + + + + + + + + +

Classes

struct  fxProgram
struct  fxBank

Defines

#define cMagic   'CcnK'
#define fMagic   'FxCk'
#define bankMagic   'FxBk'
#define chunkPresetMagic   'FPCh'
#define chunkBankMagic   'FBCh'
+

Define Documentation

+ +
+
+ + + + +
#define bankMagic   'FxBk'
+
+
+ +

+Regular Bank (fxb) identifier. +

+

+ +

+
+ + + + +
#define chunkBankMagic   'FBCh'
+
+
+ +

+Bank (fxb) identifier for opaque chunk data. +

+

+ +

+
+ + + + +
#define chunkPresetMagic   'FPCh'
+
+
+ +

+Program (fxp) identifier for opaque chunk data. +

+

+ +

+
+ + + + +
#define cMagic   'CcnK'
+
+
+ +

+Root chunk identifier for Programs (fxp) and Banks (fxb). +

+

+ +

+
+ + + + +
#define fMagic   'FxCk'
+
+
+ +

+Regular Program (fxp) identifier. +

+

+ + + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/vstoffline.html b/doc/html/vstoffline.html new file mode 100644 index 0000000..58fd3b0 --- /dev/null +++ b/doc/html/vstoffline.html @@ -0,0 +1,1391 @@ + + +VST SDK 2.4: VST Offline Processing + + + + +
+
+

VST Offline Processing

Introduction

+

The VST offline interface is a powerful API that allows a Plug-In to freely read + audio files open in the host, to transform them or to generate new audio files. + The main features are:

+ +

 

+

Declaring an offline Plug-In

+

The host knows if a given Plug-In supports the offline interface through the + canDo function, as follows: +

+ +

Overview of the interface

+

Three structures are dedicated to the offline interface:

+ +

 There are also three enums: +

+ +

Three host opcodes are defined:

+ +

with the corresponding functions in AudioEffectX:

+ +

Three Plug-In opcodes are defined:

+ +

with the corresponding functions in AudioEffectX:

+ +

An offline process results from a nested sequence of calls, as follows:

+
    +
  1. + The host calls offlineNotify, passing an array of + VstAudioFile structures that describe all files that can be read and written. + There is also a "start" argument that indicates to the Plug-In whether the + process should begin or not. The "start" argument is true e.g. after the user + presses the "Process" button (which should be under the host control). The + "start" argument is false if the call results from any change in the file + environment of the host. + +
  2. + In its implementation of offlineNotify, the Plug-In + states which file(s) it wants to read and write, by setting flags in the + VstAudioFile structures. Then the Plug-In calls the function offlineStart. The + last argument of offlineStart allows the Plug-In to create one or more new + files.  + +
  3. + In its implementation of offlineStart, the host + initializes an array of VstOfflineTask structures, one for each file to read + or/and write. Then the host calls: offlinePrepare. + +
  4. + In its implementation of offlinePrepare, the Plug-In + continues the initialization of the VstOfflineTask structures (eg. set the + sample rate and number of channels in new files). + +
  5. + If offlinePrepare returns true, the host finalizes + the preparation of the VstOfflineTask structures (eg. allocate i/o audio + buffers), then calls offlineRun. + +
  6. + In its implementation of offlineRun, the Plug-In can call the host functions + offlineRead and offlineWrite at will, until its audio processing is completed. + The approach is therefore opposite to the realtime interface: the Plug-In here + instructs the host about which files to read and write, in which order, at + which rate. A small diagram can illustrate the nested sequence of calls. + Functions in red are called by the host and implemented by the Plug-In. + Functions in blue are called by the Plug-In and implemented by the host. +
  7. +
+
+

offlineNotify

+

 { +

+
+

offlineStart +

+

{

+
+

offlinePrepare

+

offlineRun

+

 { +

+
+

. ..

+

offlineRead

+

offlineWrite

+

 . .. +

+
+

}

+
+

}

+
+

} +

+
+

 

+

Details of the interface

+

struct VstAudioFile

+

This structure describes an audio file already open in the host. This + description is systemindependent: no file path is specified. A Plug-In does not + query the host about available files; instead, it gets informed about the + available files when the host calls the function offlineNotify. +
+ Note: there is an option, however, to force the host to send a notification + (see kVstOfflineQueryFiles). +
+ The host sets all the members of this structure, unless notified otherwise.
+

+
+

VstInt32 flags

+

See enum VstAudioFileFlags. Both host and Plug-In can set flags.

+

void* hostOwned

+

Any data private to host.

+

void* plugOwned

+

Any data private to Plug-In. This value is (optionally) set by the Plug-In in + its implementation of offlineNotify. This value is then copied by the host into + the VstOfflineTask structure (plugOwned member), when offlineStart is called + (this allows the Plug-In, if necessary, to make a link between the + offlineNotify call and the offlinePrepare/offlineRun calls).

+

char name[100] +

+

Name of the file (no path, just name without any file extension). This can be + used by the Plug-In to display in its user interface the list of all files + available for processing. This is useful if the Plug-In requires the user to + select more than one file to perform its job (eg. mixer, file comparer, + etc...).

+

VstInt32 uniqueId

+

This value identifies a file instance in the host, during a session. Not two + file instances must ever get the same ID during a session. If a file gets + closed and is reopen later, it must be attributed an ID that was never + attributed so far during the session. From the host side, this can be easily + implemented with a simple global counter. This ID can be a useful reference for + a Plug-In, if its user interface maintains a list of files that the user can + select.

+

double sampleRate

+

sample rate of the file

+

VstInt32 numChannels

+

number of channels: 1 for mono, 2 for stereo, etc...

+

double numFrames

+

number of frames in the audio file 

+

VstInt32 format

+

reserved for future. Currently 0.

+

double editCursorPosition

+

frame index of the edit cursor, or -1 if no such cursor exists. This member + represents the "edit-cursor" position, if any, but never the "playback-cursor" + position.

+

double selectionStart

+

frame index of first selected frame, or -1 if there is no selection

+

double selectionSize

+

number of frames in selection. Zero if no selection.

+

VstInt32 selectedChannelsMask

+

Bit mask describing which channels are selected. One bit per channel. Eg. value + 3 means that both channels of a stereo file are selected. +

+

VstInt32 numMarkers

+

number of markers in the file. The Plug-In can use offlineRead to get details + about the markers. +

+

VstInt32 timeRulerUnit

+

If the Plug-In needs to display time values, it might be nice to match the unit + system selected by the user for the file in the host. This is the reason why + this member, and the following ones, are provided. Possible values: 0: + undefined 1: samples units 2: hours/minutes/seconds/milliseconds 3: smpte 4: + measures and beats +

+

double timeRulerOffset

+

frame offset of the time ruler for the window that displays the audio file. + Usually 0 but could be negative or positive. +

+

double tempo

+

-1 if not used by the file's time ruler, else BPM units. +

+

VstInt32 timeSigNumerator

+

-1 if not used by the file's time ruler, else number of beats per measure +

+

VstInt32 timeSigDenominator

+

-1 if not used by the file's time ruler, else number of beats per whole note +

+

VstInt32 ticksPerBlackNote

+

 -1 if not used by the file's time ruler, else sequencer resolution +

+

VstInt32 smpteFrameRate

+

 -1 if not used by the file's time ruler, else refers to VstTimeInfo for + the meaning.
+

+
+


+

+

enum VstAudioFileFlags

+

This refers to the possible flags for the member flag of the structure + VstAudioFile:

+

The host sets its flags before calling offlineNotify. The Plug-In sets its flags + in its implementation of offlineNotify, before calling offlineStart. +

+
+

+

+
+

kVstOfflineReadOnly +

+
+

Set by host. Means that the file can't be modified, it can only be read. If the + Plug-In tries to write it later, the host should return false from + offlineWrite. +

+
+

kVstOfflineNoRateConversion +

+
+

Set by host. Means that the file can't have its sample rate modified.

+
+

kVstOfflineNoChannelChange +

+
+

Set by host. Means that the number of channels can't be changed (eg. the host + might not allow an in-place mono to stereo conversion). +

+
+

kVstOfflineCanProcessSelection +

+

Set by the Plug-In if its process can be applied to a limited part of a file. If + no selection exists, the entire file range is used. The host checks this flag + and, accordingly, initializes the members positionToProcessFrom and + numFramesToProcess in the structure VstOfflineTask. Setting this flag is a + common case, but a counter example is e.g. a sample rate converter (the sample + rate is global to a file and can't be applied to a limited part of a file).

+
+

kVstOfflineNoCrossfade +

+

Consider the case of a Plug-In transforming only a part of a file. To avoid a + click at the edges (between the processed part and the non-processed part) the + host might perform a short crossfade with the old samples, according to user + preferences. However, a Plug-In might want to reject this option for some + reasons (eg. the Plug-In performs a local glitch restoration and wants to + perform the crossfade itself). In that case, the Plug-In should set this flag + to instruct the host not to perform any crossfade. +

+

kVstOfflineWantRead +

+

If the Plug-In wants to read the file, it should set this flag. E.g. a + signal-generator Plug-In would never set that flag. If this flag is not set and + the Plug-In tries to read the file later, the host should return false from + offlineRead.

+

kVstOfflineWantWrite

+

If the Plug-In wants to overwrite part or the entire file, it should set this + flag. E.g. an analyzer plugin would never set that flag. Note: as an + alternative, the Plug-In can choose to create a new file, rather than + overwriting the source file (see offlineStart). If this flag is not set and the + Plug-In tries to write the file later, the host should return false from + offlineWrite.

+

kVstOfflineWantWriteMarker +

+

If the Plug-In wants to modify or create markers in the file, it should set this + flag. If this flag is not set and the Plug-In tries to move or create a marker + later, the host should return false from offlineWrite. +

+

kVstOfflineWantMoveCursor

+

If the Plug-In wants to move the edit-cursor of the file, it should set this + flag. If this flag is not set and the Plug-In tries to move the edit-cursor + later, the host should return false from offlineWrite.

+

kVstOfflineWantSelect +

+

If the Plug-In wants to select samples in the file, it should set this flag. If + this flag is not set and the Plug-In tries to select samples later, the host + should return false from offlineWrite.
+

+
+


+

+
+

struct VstOfflineTask

+

This structure is used in offlinePrepare, offlineRun, offlineRead and + offlineWrite functions. Its main purpose is to be a parameter-holder to + instruct the host to read/write an existing file, or to write a new file. + However, it can also be used as a parameter-holder for other purposes, as we + shall see later (see VstOfflineOption). Thus, certain members of this structure + have a different meaning according to the option selected when calling + offlineRead and offlineWrite. For the sake of simplicity, we now mainly cover + the common case of reading/writing audio samples. +
+ An important principle to understand from the beginning, is that each file + which is read or/and written is associated with a single VstOfflineTask + structure.
+
+

+
+

char processName[96] +

+

Set by Plug-In in offlinePrepare. The host to label the process can + use this name. E.g. the host might display that name in a menu entry called + "Undo ....". +
+ If the process uses multiple VstOfflineTask structures, only the first one + needs to have this field set (or all other VstOfflineTask structures should + have the same label). +
+ This field might be erased later during the process, therefore the host should + make a copy of it. +
+

+

double readPosition +

+

Position, as frames, of the read "head" in the audio file. Set both by + Plug-In and host: +
+ This value should be set by the Plug-In, before calling offlineRead, to + instruct the host. +
+ On the other hand, the host updates the value to reflect the read position + after the call to offlineRead. +
+

+

double writePosition +

+

Position, as frames, of the write "head" in the audio file. Set both + by Plug-In and host: +
+ This value should be set by the Plug-In, before calling offlineWrite, to + instruct the host. +
+ On the other hand, the host updates the value to reflect the write position + after the call to offlineWrite. +
+

+

VstInt32 readCount

+

Number of audio frames to read. +
+ Set by Plug-In, before calling offlineRead. +
+ When returning from offlineRead, readCount contains the number of actually read + frames. If the Plug-In tries to read beyond the end of the file (not considered + as an error), the float buffers are completed with blank frames by the host. In + that case, the number of blank frames is returned in the member value. In other + words, the sum (readCount + value) after the call is equal to the value of + readCount before the call. +
+

+

VstInt32 writeCount +

+

Number of audio frames to write. +
+ Set by Plug-In, before calling offlineWrite. +
+ Never set by the host. If the host can't write the samples because of a + disk-full situation, the host should return false from offlineWrite. +
+

+

VstInt32 sizeInputBuffer +

+

Size, as frames, of the audio input buffer. +
+ Set by host before calling offlineRun. +
+ This value remains unchanged during the whole process. A Plug-In can't read + more than this number of samples in a single call to offlineRead. +
+

+

VstInt32 sizeOutputBuffer +

+

Size, as frames, of the audio output buffer. +
+ Set by host before calling offlineRun. +
+ This value remains unchanged during the whole process. A Plug-In can't write + more than this number of samples in a single call to offlineWrite. +
+

+

void* inputBuffer +

+

void* outputBuffer +

+

Both set by host, before calling offlineRun. The actual type of the + pointer depends on the channel mode: if the Plug-In has set the flag + kVstOfflineInterleavedAudio, then the type is float* (array of interleaved + samples). In the other case, the type is float** (array of array of samples). + The latter is the standard case. +
+

+

double positionToProcessFrom +

+

double numFramesToProcess +

+

Set by host, according to the flags set in enum VstAudioFileFlags. This defines + the frame range that the Plug-In should read for its process. +
+ If required for its algorithm, the Plug-In is allowed to read before and after + this range (if the range is a subset of the file), but only that range of + samples should be transformed. +
+

+

double maxFramesToWrite +

+

Set by Plug-In in offlinePrepare. This value could be used by the host for + optimization purposes (to select a proper write algorithm), and also to check + if the disk space is sufficient before starting the process.
+ If the Plug-In writes no audio, this value should be 0. +
+ If the number of written samples is the same as the number of read samples, + this value should be equal to numFramesToProcess. +
+ If the Plug-Ins does not know exactly the number of frames, this value should + be an approximate value, large enough for sure, but as small as possible (if + the Plug-In later tries to write more frames than this number, an error would + be issued by the host). +
+ If the Plug-Ins does not know at all, this value should be -1 (this is the + default value of this member). +
+

+

void* extraBuffer +

+

This is set by the Plug-In. This is a buffer which is used to read/write other + data than audio. Meaning depends on the offlineRead/offlineWrite option (see + VstOfflineOption). +
+

+

VstInt32 value +

+

Set by Plug-In or host. Meaning depends on the offlineRead/offlineWrite option + (see VstOfflineOption). +
+

+

VstInt32 index +

+

Set by Plug-In or host. Meaning depends on the offlineRead/offlineWrite option + (see VstOfflineOption). +
+ This value is also optionally set by the Plug-In during offlinePrepare, as + follows: +
+ If the Plug-In generates a new file out of an existing file, then it should + initialize this value with the index of the VstOfflineTask structure + corresponding to the source file. This is not mandatory, but this info could be + of interest for the host. Be default, index is -1 when offlinePrepare is + called. +
+

+

double numFramesInSourceFile +

+

Number of frames in source file. This is set by the host in offlineStart. +
+ This value is only set for existing source files. +
+ If the VstOfflineTask structure refers to a file created by the host on behalf + of the Plug-In, this value is 0. +
+

+

double sourceSampleRate +

+

Sample rate of the source file. Set by host. +
+ If the VstOfflineTask structure refers to a file created by the host on behalf + of the Plug-In, this value is 0. In that case, the Plug-In must initialize this + value when offlinePrepare is called (in that case, same value as + destinationSampleRate). +
+

+

double destinationSampleRate +

+

Sample rate of the destination file. Set by Plug-In in offlinePrepare (but + previously initialized by host as sourceSampleRate). +
+ If the VstOfflineTask structure refers to a file created by the host on behalf + of the Plug-In, this value is 0. In that case, the Plug-In must initialize this + value when offlinePrepare is called (in that case, same value as + sourceSampleRate). +

+

VstInt32 numSourceChannels +

+

Number of channels in the source file. Set by host. +
+ Note: if the mode kVstOfflineCanProcessSelection is active, and if only one + channel of a stereo file is selected, then numSourceChannels should be set to + 1. In that case, the file appears as a mono file from the Plug-In point of + view. +
+ If the VstOfflineTask structure refers to a file created by the host on behalf + of the Plug-In, this value is 0. In that case, the Plug-In must initialize this + value when offlinePrepare is called (in that case, same value as + numDestinationChannels). +
+

+

VstInt32 numDestinationChannels +

+

Number of channels in the destination file. Set by Plug-In in offlinePrepare + (but previously initialized by host as numSourceChannels). This value is + required for the host to allocate the proper outputBuffer. If the + VstOfflineTask structure refers to a file created by the host on behalf of the + Plug-In, this value is 0. In that case, the Plug-In must initialize this value + when offlinePrepare is called (in that case, same value as numSourceChannels). +
+

+

VstInt32 sourceFormat +

+

Reserved for future. +
+ Set by host. +
+

+

VstInt32 destinationFormat +

+

Reserved for future. +
+ Set by Plug-In. +
+

+

char outputText [512] +

+

There are three uses for this member: +
+ If the Plug-In has instructed the host to create a new file (see offlineStart), + then the Plug-In can optionally provide its name in this member, with a fully + qualified path (this file name must be selected by the user from the Plug-In + user interface). In that case, the file is saved by the host in the default + audio file format for the platform (this could also be a host specific option). + This name has to be initialized when offlinePrepare is called. +
+ Note: the host, if a demo version, might reject this option! +
+ If outputText is empty (common case), then the host creates the file in a + folder dedicated to temporary files. Later, it's up to the user to save the + file from the host. +
+ Before returning from a function with false, the Plug-In can set the flag + kVstOfflinePlugError and then (over)write the outputText member. In that case, + the host should display the message to the user. If the host sets the flag + kVstOfflineUnvalidParameter, then the host might as well fill up the outputText + member, to give a hint to the Plug-In, for pure debugging purposes. +
+

+

double progress +

+

Set by Plug-In to inform the host about the current progress of the whole + operation. The value must be in the range 0 to 1. If the value is not in this + range (e.g. -1), the host must ignore it. +
+ The Plug-In should, if possible, update this value each time before calling + offlineRead and offlineWrite (this would give the host enough occasions to + update a progress indicator to give feedback to the user). 

+

 If the process has to perform several "passes", the progress value is + allowed to go from 0 to 1 several times. However, ideally, a single 0 to 1 pass + is better for the user's feedback. +
+ The progress value is meant to be global: if there are several VstOfflineTask + involved, the progress value should be "independent" from each task (yet, this + global progress should be set in each VstOfflineTask structure passed to + VstOfflineTask and offlineWrite calls). +
+

+

VstInt32 progressMode +

+

Reserved for the future. +
+

+

char progressText[100] +

+

Set by Plug-In, to describe what's going on. Can be updated any time. Optional. +
+

+

VstInt32 flags +

+

Set by host and Plug-In. See enum VstOfflineTaskFlags. +
+

+

VstInt32 returnValue +

+

Reserved for the future. +
+

+

void* hostOwned

+ Any data private to host void* plugOwned Any data private to Plug-In. This + value is firstly initialized by the host, in offlineStart, with the value of + the member plugOwned from the structure VstAudioFile (if the VstOfflineTask + corresponds to an existing file).
+
+


+

+

enum VstOfflineTaskFlags
+

+
+

kVstOfflineUnvalidParameter +

+

Sets by host if the Plug-In passes an unvalid parameter. In that case, the host + might fill up the member outputText, to give a hint to the Plug-In, for + debugging purposes. +
+

+

kVstOfflineNewFile +

+

Set by the host to indicate that this VstOfflineTask represents a task that + creates/reads/writes a new file. +
+

+

kVstOfflinePlugError +

+

If an error happens in the Plug-In itself (not an error notified by the host), + then the Plug-In could optionally set this flag before returning false from its + function to indicate to the host that the member outputText (now) contains a + description of the error. The host is then in charge of displaying the message + to the user. The Plug-In should never try to display itself an error message + from the offlineRun function, since offlineRun could happen in a background + task. +

+

kVstOfflineInterleavedAudio +

+

The Plug-In should set this flag if it wants to get data in interleaved format. + By default, this is not the case. +
+

+

kVstOfflineTempOutputFile +

+

The Plug-In should set this flag in offlinePrepare, if the file to create must + be a temporary one. In that case, the file is deleted at the end of the process + (else, the file is usually open by the host at the end of the process). +
+ This flag can obviously be set only for a new file, not for an existing file. +
+

+

kVstOfflineFloatOutputFile +

+

If the Plug-In needs creating a file made of float samples, this flag should be + set. Else, the default file format is dependant on the host (could be 16 bit, + 24 bit, float...). This can be useful if the Plug-In needs to store temporary + results to disk, without fear of clipping.
+

+

+ kVstOfflineRandomWrite +

+

If the Plug-In needs to write randomly (not sequentially) a file, it should set + this flag. This flag should also be set if the file is to be written + sequentially more than once. This is a hint for the host to select a proper + writing procedure. If this flag is not set, the host could return false from + offlineWrite, if the Plug-In attempts a non-sequential writing. +
+

+

kVstOfflineStretch +

+

If the Plug-In time-stretches part or all of a file (eg. resampling), it should + set this flag. This instructs the host to move and stretch the relative file + markers, if any, to match the change. This also is of great importance in mode + "process-selection" (see kVstOfflineCanProcessSelection), as it instructs the + host to replace only the selection, whatever the number of written samples. + Let's take an example: if there are 10000 selected input samples (from 0 to + 9999) and 20000 samples are output by the Plug-In, then: 1) if the flag + kVstOfflineStretch is set: the host simply replaces the samples 0-9999 with the + new 20000 samples, and also moves/stretches the file markers as required. Note + that this requires the host to "push" the samples above position 20000 (to + insert the 10000 new samples). 2) if the flag kVstOfflineStretch is not set: + the host replaces the samples 0-19999 with the new 20000 samples (eg. echo + Plug-In that reads samples beyond the end of the selection, to merge the tail + of the echo). +
+

+

kVstOfflineNoThread +

+

The host might either create a background thread to run the process, or run it + inside the main application thread. The Plug-In does not decide about this. + However, it can happen that a process is so short that creating a thread would + be a waste of time. In that case, the Plug-In can set this flag as a hint to + the host. 

+
+

struct VstAudioFileMarker +

+
+

double position +

+

Position of the marker +
+

+

char name[32] +

+

Name of the marker +
+

+

VstInt32 type +

+

The host might not support all types. We currently define: +
+ 0: undefined +
+ 1: generic marker +
+ 2: temporary marker (not saved with the file) +
+ 3: loop start marker +
+ 4: loop end marker +
+ 5: section start (whatever "section" might mean for the host)
+ 6: section end +
+

+

VstInt32 id +

+

This value is set by the host to identify a marker in a file. It can be any + value but 0, which is reserved to indicate a new marker (see option + kVstOfflineMarker). Not two markers can ever get the same ID for a given file. +
+

+
+

enum VstOfflineOption +

+

The functions offlineRead and offlineWrite have an argument (VstOfflineOption) + that allows to read/write different types of data. Let's see what these options + are: +
+

+

kVstOfflineAudio +

+

Use this option to read/write audio samples. See also description of + VstOfflineTask. +
+ Reading can happen randomly. This means that any time during the process, a + Plug-In is allowed to jump at any frame position and read from that point. +
+ Random reading can occur either in a read-only file or in a file currently + being written. +
+ If a Plug-In tries to read beyond the end of the file (not to be considered as + an error by the host), the buffers are completed with blank samples by the + host. See comments about readCount on that subject. +
+ Writing can happen randomly. This means that a file can be (over)written any + number of times and in any order. See kVstOfflineRandomWrite. +
+ If writing is to happen at a position beyond the end of the file, the host must + extend the file as required and fill the gap with zeroes. +
+ Delayed overwriting. When a Plug-In tries to overwrite part of an existing + source file, the host should in fact write the samples in a separate file. When + the process is finished, it's up to the host to actually replace the source + samples. This feature is required to let to the Plug-In have the possibility to + read the original samples at any time during a process.
+ One important consequence of the above feature is that any writing, whatever + the situation, always occur in a new - possibly temporary - file. This is why + all write positions that a Plug-In ever specifies, should always relate to the + origin Zero. +
+ E.g. if a Plug-In wants to overwrite samples [10000-19999], it should specify + write position in the range [0-9999]. It's up to the host to do the rest, + later, to achieve the desired effect. +
+ A Plug-In can never "overwrite" before the position given by the member + positionToProcessFrom; it is only possible to overwrite a continuous block + starting from positionToProcessFrom. If the Plug-In starts overwriting after + positionToProcessFrom, the gap if filled up with blank samples. +
+ To ease the undo/redo handling of the host (usually based on audio blocks), + there is a rule to obey when "overwriting" a source file: +
+ Only one continuous segment of a source file can be overwritten during a single + task. E.g. it is not allowed to overwrite samples 0 to 10000 then samples 50000 + to 60000, hoping that intermediary samples are preserved. If a Plug-In does so, + the result is undefined. However, if a Plug-In really needs to do so, it must + simply transfer itself the intermediary samples. 

+

kVstOfflinePeaks +

+

The Plug-In UI might need to display part or all of a file. Reading a whole file + (for display purposes) is a time consuming operation; this is why most hosts + maintain a "peak file" that stores a "summary" of the audio file. With the + kVstOfflinePeaks option, a Plug-In can benefit from this host + functionality. This option is only to be used with offlineRead, not + offlineWrite. The required parameters of VstOfflineTask are the following ones: +
+

+ + An element of the array could be represented as follows: +
+ struct { int16 y1; int16 y2; } +
+ There are two ways to interpret the data written by the host into the buffer: +
+ If the member index is set to 0 by the host, then the sound view is much + "compressed". In that case, a peak at a given position is represented by a + vertical line below and above the horizontal axis of the display. The value y1 + represents the positive coordinate, above the axis, and the y2 coordinate, the + negative value below the axis. +
+ y1 is always in the range 0 to 32767. It has to be scaled by the Plug-In, + according to its display's height. +
+ y2 is always in the range -32767 to 0. It has to be scaled by the Plug-In, + according to its display's height. If the member index is set to 1 by the host, + then the sound view is less "compressed" and should be displayed as a + continuous curve.
+ In this case, y1 is always in the range -32767 to 32767. It has to be scaled by + the Plug-In, according to its display's height. +
+ y2 is always 0 and should be ignored. +
+ Note: since the buffer that is used with this option is the buffer normally + used for audio samples, the pixel data is interleaved or not, according to the + mode kVstOfflineInterleavedAudio, as selected for that VstOfflineTask + structure. +
+ It is only possible to call this function on a source file, not on a file being + written during a process. If the host does not implement this function, + offlineRead returns false. The Plug-In could then read itself the audio + (kVstOfflineAudio option) to display the wave.
+
+

kVstOfflineParameter +

+ If the host supports this option, the Plug-In can read and write parameters + along the audio-file. A "parameter" is a float value or byte array. Each + parameter is attributed an index (e.g. if there are 3 float values and 2 + arrays, the indexes go from 0 to 4). +
+ Examples of use: parameter automation; storage of meta-information (e.g. pitch) + usable by the same plugin, later during the same process, or in another process + by another Plug-In, etc. +
+ The host is free to implement the underlying parameter storage, as it likes. + However, it is easy to understand that parameters should be stored in a sorted + vector, each one attached to a frame index. +
+ The parameters are usually maintained in RAM by the host, therefore the Plug-In + should not over-use this feature and for instance write one parameter per + sample! +
+ The host might choose to save the parameters into a project-file, or to embed + them into the audio file header, or not to save them at all (ie. all parameters + get erased when the audio file closes). +
+
+
Writing parameters with offlineWrite: +
+ processName: name of the parameter family. +
+
+ If a Plug-In X writes parameters to a file, then a Plug-In Y can retrieve the + parameters only if it provides the right family name. +
+ The name must be made unique enough, to prevent any clash. +
+ This member only needs to be set for the first parameter to record during the + process. +
+ If this first parameter belongs to a new family, the host destroys all + previously stored parameters. +
+ +
+ value
: version of the parameter family. +
+
+ Freely under the control of the Plug-In. This member only needs to be set for + the first parameter to record during the process. +
+ +
+ index
: index of parameter to write. +
+ +
+ writeCount
: 0 if writing a float parameter, else byte size of the + parameter array. +
+ +
+ extraBuffer
: buffer allocated by the Plug-In to pass the parameter. +
+
+ For writing a float, this pointer is actually a float* pointer, else this is a + pointer to the array. +
+ If this pointer is NULL, then the parameter at that position, if any, is + deleted. If this pointer is NULL and the writePosition is negative, all + parameters are erased. +
+ +
+ writePosition
: position where to write the parameter. +
+
+ Since parameters are not stored "inside" the audio samples, it does not matter + if the write position is temporarily beyond the end of the audio file.
+ For the sake of simplicity (when reading back later), it is not possible to + write more than one parameter at a given position. If this happens, the old + parameter gets erased. If this parameter is negative and extraBuffer is NULL, + all parameters get erased. +
+
+
Reading parameters with offlineRead: +
+ At the beginning, the Plug-In is usually ignorant about what parameters are + stored, and where. The first call to offlineRead is therefore a special one, as + follows: +
+ The Plug-In initializes the member extraBuffer to 0 and the member readPosition + to the position it wants to get informed about (usually, 0). When returning + from offlineRead, the host has initialized the following parameters: +
+ +
+ processName
: name of the parameter family, or nothing if no recorded + parameter. +
+
+ If the name of this parameter family is not supported by the Plug-In, the + Plug-In should not try to read the parameters. +
+ +
+ value
: version of the recorded parameter family. Might be useful for + the Plug-In. +
+ +
+ readPosition
: the frame index at which the next parameter is found + (this value was unchanged by the host if there was already a parameter there). +
+ +
+ readCount
: if the parameter is an array, this is its size (as bytes), + else the value is 0. +
+ +
+ index
: the index of the parameter, or -1 if no parameter was found. +
+
+ In order to retrieve the parameters one by one, the Plug-In can then use + offlineRead in the following way: +
+ +
+

kVstOfflineMarker +

+ With this option, the Plug-In can create one or more markers in the file, or + move existing ones. +
+ To know which markers currently exist in a given file, the Plug-In can use + offlineRead, with the following parameters: +
+ + To write new markers: +
+ + To move existing markers: +
+ + To copy markers from one file to another: +
+ If the Plug-In creates a new file out of a source file, it might be convenient + to copy the source file markers into the new file. In this case, the Plug-In + can call the offlineWrite function with the following parameters: +
+ +


+

+

kVstOfflineCursor +

+ By calling offlineRead with this option, the Plug-In retrieves the file's + edit-cursor position: +
+ + To move the edit cursor to a certain location, the Plug-In should initialize + the following members: +
+ +
+

kVstOfflineSelection +

+ By calling offlineRead with this option, the Plug-In retrieves the current + sample selection in the file: +
+ + To set a selection in the file, the Plug-In should initialize the above + members. +
+ If the host does not support the selection of individual channels, it should + ignore index and select all channels. +
+ If the host does not support sample selections, offlineWrite should return + false. +

kVstOfflineQueryFiles +

+

If the Plug-In desires to get notified about which files are available in the + host, it should call offlineRead with this option. +
+ The first parameter of offlineRead (VstOfflineTask*) should be NULL. On + receiving this call, the host should call, immedialty or later, offlineNotify, + with the start parameter set to false. In other words, the + kVstOfflineQueryFiles option is a way to force the host to call offlineNotify, + in order to get informed about open files (normally, the host only calls + offlineNotify if a change happens in the set of open files). It is important to + insist on the fact that the host is free to call kVstOfflineQueryFiles + asynchronously, ie. not immediatly when kVstOfflineQueryFiles is called. +
+ Normally, this option is only used if the Plug-In needs to be notified about + the file information, in order to update its user interface. 

+

Functions +

+
bool offlineNotify(VstAudioFile* ptr, VstInt32 numAudioFiles, bool start)
+

The host calls this Plug-In function in two cases: +
+

+ +

+ The purpose of this notification is to give the Plug-In a chance to update its + user interface according to the host environment. +
+ For example: +
+ The Plug-In might display the list of all files available for processing; this + list needs to be updated if a new file is open or closed in the host.
+ The Plug-In might display some information about the file with the focus: this + needs to change if a new file gains the focus. +
+ Etc... +
+ Tip: since the VstAudioFile structure contains + parameters that are likely to often change, such as cursor position or sample + selection, the offlineNotify function might be called often. Therefore, a good + design for a Plug-In that needs to update its user interface would be to cache + the VstAudioFile settings, so as to actually update its user interface only + when really required (eg. if the Plug-In does not care about the editcursor + position in a file. It should not update its user-interface only if the + edit-cursor position happens to move in a file). +
+
+ The host as aparameter passes an array of VstAudioFile structures. +
+ The number of elements in this array is given by the parameter numAudioFiles. +
+ numAudioFiles is 0 if there is no open file in the host, and in that case, the + parameter "ptr" is NULL. +
+ The first element of the array always represents the file with the focus. +
+ If the "start" argument is true, the Plug-In should start the process by + calling offlineStart. Else, the Plug-In might, or might not, starts a read-only + process, to update its user-interface. See offlineStart. +

+

Whatever the state of the start argument, the Plug-In should return false from + the function if it can't process the file(s) open in the host. E.g. if the + Plug-In only works with stereo files, and the file with the focus is mono, the + Plug-In should return false from this function. This allows the host, for + instance, to disable the process button of the user interface. +
+ Important: the Plug-In should not initialize anything internally at this + stage. All internal initialization and cleanup required for the process should + happen inside offlineRun, and only there. 

+
bool offlinePrepare(VstOfflineTask* offline, VstInt32 count)
+

The host calls this function so that the Plug-In complements the + VstOfflineTask structure(s). If everything is fine, the function should + return true. Important: the Plug-In should not initialize anything + internally at this stage. All internal initialization and cleanup required for + the process should happen inside offlineRun, and only + there.
+
+

+
bool offlineRun(VstOfflineTask* offline, VstInt32 count)
+

This function is called by the host once the VstOfflineTask structure(s) is(are) + ready. Within this function, the Plug-In does its audio processing and calls + offlineRead and offlineWrite at will. If + any error is detected during this procedure, the function should return false. +
+ Important: all internal initialization and cleanup required for the + process should happen inside offlineRun, and only + there. E.g. if the Plug-In should allocate some memory, this should be done + inside this function (as well as the deallocation).
+
+

+
bool offlineStart(VstAudioFile* ptr, VstInt32 numAudioFiles, VstInt32 numNewAudioFiles)
+

When the function offlineNotify is called, the + Plug-In might decide to start a process. For this purpose, the Plug-In has to + decide which file(s) to process, and also if some new file(s) should be + created. +
+ By setting the member flag of each VstAudioFile structure, + the Plug-In instructs the host about which file(s) should be processed. In many + cases, only the first VstAudioFile element (the focused file) is concerned. +
+ The parameter numAudioFiles is simply the one passed from offlineNotify. +
+ The parameter numNewAudioFiles is the number of files that the Plug-In want to + create. +
+ E.g. if the Plug-In selects one file from the VstAudioFile array and sets the + value of numNewAudioFiles to 1, the host will create two VstOfflineTask + structures. By convention, all VstOfflineTask structures corresponding to new + files are placed by the host at the end of the array passed to offlineRun (ie, + the front of the array corresponds to already existing files). +
+ It is not allowed for a Plug-In to call offlineStart if the Plug-In is not + itself called with offlineNotify. This is to ensure a synchronous protocol with + the host. If the Plug-In would call offlineStart asynchronously, maybe the + VstAudioFile structures would not be valid anymore at that time, resulting in + an undefined behaviour.
+
+

+
bool offlineRead(VstOfflineTask* offline, VstOfflineOption option, bool readSource = true)
+

This function is called by the Plug-In to read data. See enum VstOfflineOption + to see what kind of data can be read, apart audio samples.

+

About the parameter readSource:

+

As already seen, a single VstOfflineTask structure can be used both to read an + existing file, and to overwrite it. Moreover, the offline specification states + that it is possible, at any time, to read both the original samples and the new + ones (the "overwritten" samples). This is the reason for the readSource + parameter: set it to true to read the original samples and to false to read the + recently written samples.
+
+

+
bool offlineWrite(VstOfflineTask* offline, VstOfflineOption option)
+

This function is called by the Plug-In to write data. +
+ See enum VstOfflineOption to see what kind of + data can be written, apart audio samples. +
+
+
+

+ + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/vstparamstruct.html b/doc/html/vstparamstruct.html new file mode 100644 index 0000000..eb0630a --- /dev/null +++ b/doc/html/vstparamstruct.html @@ -0,0 +1,566 @@ + + +VST SDK 2.4: VST Parameters Structure + + + + +
+
+

VST Parameters Structure

Introduction

+ +

+In general, VST Plug-Ins present a flat, unsorted list of parameters to the host application, and finally to the user. +The VST Parameters Structure XML definition provides an easy way to structure parameters of existing VST Plug-Ins hierarchically, without having to recompile the Plug-In binary. +

+ +

+Windows:
+
+The host application searches for a .vstxml file next to the Plug-In DLL (e.g. if your Plug-In is in '...\Vstplugins\MyEffect.dll' the corresponding XML file must be named '...\Vstplugins\MyEffect.vstxml'). +Alternatively, the Parameter Structure XML can be embedded in the DLL as a resource (resource type VSTXML, resource identifier 1). +Please note that an external .vstxml file always overrides the embedded resource! +

+ +

+Mac OS X:
+
+The .vstxml file is in the Resources Folder of the bundle and its name is constructed from the CFBundleName. +

+ +

Example:

+ + + + + +
+
+<VSTPluginProperties>
+	<VSTParametersStructure>
+		<!-- Value Types: -->
+		<ValueType name="SwitchOnOff">
+			<Entry name="Off" value="[0, 0.5["/>
+			<Entry name="On"  value="[0.5, 1]"/>
+		</ValueType>
+	
+		<!-- Templates: -->
+		<Template name="Channel">
+			<Param name="Bypass" shortName="Byp." type="SwitchOnOff" id="offset+1"/>
+			...
+		</Template>
+	
+		<!-- Global: -->
+		<Param name="Volume" shortName="Vol." label="dB" id="0"/>
+	
+		<Group name="Channel 1" template="Channel" values="offset=10"/>
+		<Group name="Channel 2" template="Channel" values="offset=20"/>
+		...
+	</VSTParametersStructure>
+</VSTPluginProperties>
+
+ +

+The following tags are used to describe a parameter structure: +

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VSTPluginPropertiesoptional root tag
VSTParametersStructureparameters structure tag
Paramdescribes a single parameter with name, label, id etc.
Groupencloses a group of parameters, can be nested
Templatedefines a parameter group, can be "instanciated" multiple times
ValueTypedefinition of an internal value type, contains a list of Entry tags
Entrydescribes a single state of a ValueType
+

+ +

Advanced topics:

+ + + + +
+ +

XML Definitions Reference

+ + +

Param

+ + + + + +
+
+ <Param id="..." name="..." + label="..." shortName="..." type="..." numberOfStates="..." defaultValue="..."/> +
+
+ +

+Describes a Plug-In parameter. +

+ +

Attributes:

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ id + + corresponds to zero-based index in flat parameter list.
+ can either be an integer constant (e.g. "100") or an expression which evaluates + to an integer (e.g. "offset + 1"). + See Relative Parameter Addressing for details. +
+ name + + parameter name visible to the user (e.g. "Volume"). +
+ label + + parameter label visible in generic editor or on remote control (e.g. "dB") +
+ shortName + + short parameter name, displayed on remote controls.
+ can be a list of several names of different lengths, separated by colons + (e.g. "OSC Frequ., OSCFrq., Frq"). The host application selects best fitting string + for current remote displays. +
+ type + + user defined (see ValueType) + or predefined value type. Default type is a linear fader between 0.0 and 1.0
+
+ Predefined types:
+ - switch : parameter toggles between 0 and 1 +
+ numberOfStates + + defines how many states this parameter can have:
+
+ + state N = [N / numberOfStates, (N + 1) / numberOfStates[
+ state N = (long)(value * numberOfStates) +
+
+ defaultValue + + default value normalized between [0.0, 1.0] +
+

+ +

Remarks:

+ +

+Most VST Plug-Ins already provide parameter attributes like name, label, etc. and support string conversion. +The XML description always overwrites Plug-In -provided attributes! +Everything not described in XML is taken from the Plug-In at runtime. +

+ +
+ + +

Group

+ + + + + +
+
+ <Group name="..." template="..." values="..."/> +
+
+ +

+Groups are used to create hierarchical parameter structures. A <Group> either contains <Param> tags directly, +or is defined by a Template. +

+ +

Attributes:

+ +

+ + + + + + + + + + + + + +
+ name + + group name visible to the user (e.g. "Channel 1", "LFO Section",...) +
+ template + + Name of template defining this group (optional). +
+ values + + List of arguments passed to the template + (see Relative Parameter Addressing for details).
+
+ Each arguments consists of a name and an integer value (e.g. "offset=100"). + Multiple arguments are separated by semicolons, whitespaces are ignored + (e.g. "offset1=100; offset2=100"). +
+

+ +
+ + +

Template

+ + + + + +
+
+ <Template name="..."/> +
+
+ +

+Assume a Plug-In with 16 channels, each consisting of an identical set of parameters. You only have to +describe a channel once as a template and create 16 "instances" using the <Group> tag. +If each channel contains let's say 20 parameters, which appear continuously in the flat parameter list, +they can be addressed using an offset value instead of absolute indices +(see Relative Parameter Addressing for details). +

+ +

Attributes:

+ +

+ + + + + +
+ name + + internal template name, referred to by groups. +
+

+ +
+ + +

ValueType

+ + + + + +
+
+ <ValueType name="..." label="..."/> +
+
+ +

+Defines an internal value type by a list of <Entry> tags. +

+ +

Attributes:

+ +

+ + + + + + + + + +
+ name + + internal value type name, referred to by parameters. +
+ label + + value label (e.g. "dB") +
+

+ +

Remarks:

+ +

+The label attribute is used as parameter label if the label field of a <Param> +tag using this value type is empty. +

+ +
+ + +

Entry

+ + + + + +
+
+ <Entry name="..." value="..."/> +
+
+ +

+Each entry in a <ValueType> list provides a string representation for +a certain parameter state. A simple example would be a toggle parameter with two +states named "On" and "Off". The string "Off" should be displayed if the normalized parameter value is between +0.0 and 0.5 (exclusively), and "On" if it is >= 0.5 and <= 1.0. +

+ +

Attributes:

+ +

+ + + + + + + + + +
+ name + + name of parameter state, displayed to the user (e.g. "On", "Off", "Sine", "Square",...) +
+ value + + optional: describes the parameter range this state corresponds to, + using the mathematical range definition [a, b].
+
+ Exclusive range:
+     e.g. "[0.0,0.5[" -> if value >= 0.0 and < 0.5
+
+ Inclusive range:
+     e.g. "[0.5,1.0]" -> if value >= 0.5 and <= 1.0 +
+

+ +

Remarks:

+ +

+The value range is optional. If not specified, the limits of a state are calculated based on the total number of entries +in the value type:
+
+a = index / total
+b = (index + 1) / total;
+

+ +
+ + +

Relative Parameter Addressing

+ +

+Relative parameter addressing is used to describe parameter IDs inside templates. +Instead of assigning a parameter index directly, an expression - mostly consisting of a "base address" variable and +a constant offset value - can be used. The variable is passed to the template each time it is "instanciated" as a +group. +

+ +

Example:

+ +

+ + + + + +
+
Parameter list:
+ +
+...
+
+11: Volume CH1
+...
+
+21: Volume CH2
+...
+
+31: Volume CH3
+...
+		
+
+
XML code:

+ + + + + +
+
+<Template name="Channel">
+	<Param name="Volume" id="offset+1"/>
+</Template>
+
+<Group name="CH 1" template="Channel" values="offset=10"/>
+<Group name="CH 2" template="Channel" values="offset=20"/>
+<Group name="CH 3" template="Channel" values="offset=30"/>
+
+
+ + +
+

+ +
+ + +

Example

+ + + + + +
+
+<!-- =========================================================== -->
+<!-- XML definition of VST parameters for Dynamics Plug-In====== -->
+<!-- Draft 0.1================================================== -->
+<!-- Date: 14.11.2005=========================================== -->
+<!-- =========================================================== -->
+
+<VSTPluginProperties>
+	
+	<VSTParametersStructure>
+		<!--  Create Global Params================================== -->
+		<Param name="Routing" shortName="Rout"                id="13"/>
+
+		<!--  Create AutoGate Group================================= --> 
+		<Group name="AutoGate">
+			<Param name="On"                 type="switch"       id="0"/>
+			<Param name="Thresh"   shortName="ThrHo" label="dB"  id="3"/>
+			<Param name="Attack"   shortName="Att"   label="ms"  id="4"/>
+			<Param name="Hold"                       label="ms"  id="5"/>
+			<Param name="Release"  shortName="Rel"   label="ms"  id="6"/>
+			<Param name="Auto"                                   id="7"/>
+			<Param name="Mode"                                   id="9"/>
+			<Param name="Calib"                                  id="10"/>
+			<Param name="LowFreq"  shortName="LoFrq" label="Hz"  id="11"/>
+			<Param name="HighFreq" shortName="HiFrq" label="Hz"  id="12"/>
+		</Group>
+
+		<!--  Create Compressor Group======================================= --> 
+		<Group name="Compressor">
+			<Param name="On"           type="switch"           id="1"/>
+			<Param name="Thresh"  shortName="ThrHo" label="dB" id="14"/>
+			<Param name="Ratio"                                id="15"/>
+			<Param name="Attack"  shortName="Att"  label="ms"  id="16"/>
+			<Param name="Release" shortName="Rel"  label="ms"  id="17"/>
+			<Param name="MakeUp"  shortName="MkUp" label="dB"  id="18"/>
+			<Param name="Auto"                                 id="19"/>
+			<Param name="RMS"                                  id="20"/>
+		</Group>
+
+		<!--  Create Limiter Group======================================= --> 
+		<Group name="Limiter">
+			<Param name="On"                type="switch"       id="2"/>
+			<Param name="Thresh"  shortName="ThrHo"  label="dB" id="21"/>
+			<Param name="Release" shortName="Rel"    label="ms" id="22"/>
+			<Param name="Auto"                                  id="23"/>
+		</Group>
+
+	</VSTParametersStructure>
+</VSTPluginProperties>
+
+
+
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/vstpluglogo.jpg b/doc/html/vstpluglogo.jpg new file mode 100644 index 0000000..b4a2464 Binary files /dev/null and b/doc/html/vstpluglogo.jpg differ diff --git a/doc/html/vstplugmain_8cpp.html b/doc/html/vstplugmain_8cpp.html new file mode 100644 index 0000000..36fbf3f --- /dev/null +++ b/doc/html/vstplugmain_8cpp.html @@ -0,0 +1,111 @@ + + +VST SDK 2.4: vstplugmain.cpp File Reference + + + + +
+
+
+
+ +

vstplugmain.cpp File Reference

#include "audioeffect.h"
+ + + + + + + + + + +

Defines

#define VST_EXPORT

Functions

AudioEffectcreateEffectInstance (audioMasterCallback audioMaster)
VST_EXPORT AEffectVSTPluginMain (audioMasterCallback audioMaster)
+

Define Documentation

+ +
+
+ + + + +
#define VST_EXPORT
+
+
+ +

+ +

+

+


Function Documentation

+ +
+
+ + + + + + + + + +
AudioEffect* createEffectInstance (audioMasterCallback  audioMaster  ) 
+
+
+ +

+Must be implemented externally. +

+

+ +

+
+ + + + + + + + + +
VST_EXPORT AEffect* VSTPluginMain (audioMasterCallback  audioMaster  ) 
+
+
+ +

+Prototype of the export function main +

+

+ + + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/html/whatsnew.html b/doc/html/whatsnew.html new file mode 100644 index 0000000..2f15cad --- /dev/null +++ b/doc/html/whatsnew.html @@ -0,0 +1,88 @@ + + +VST SDK 2.4: What's new in VST 2.4 + + + + +
+
+

What's new in VST 2.4

+64 Bit Platform Compatibility

+With VST SDK 2.4 you can compile native VST Plug-Ins for 64 Bit Platforms (e.g. Windows XP x64 Edition). The formerly used 'long' data type has been replaced by VstInt32 and VstIntPtr: +
+

+Double Precision Processing

+A new process function has been added to support 64 bit (double precision) floating-point audio samples. Please note that this function is optional, whereas the processReplacing function for 32 bit (single precision) floating-point samples is mandatory!
See also:
AudioEffect::canDoubleReplacing
+ AudioEffect::processDoubleReplacing
+ AudioEffectX::setProcessPrecision
+
+

+MIDI Events

+New enum VstMidiEventFlags for VstMidiEvent::flags with value kVstMidiEventIsRealtime which indicates that an event is played live, not from a sequencer track. This allows the Plug-In to handle these flagged events with higher priority, especially when the Plug-In has a high latency (AEffect::initialDelay).
+
+ Two new methods (getNumMidiInputChannels and getNumMidiOutputChannels) allow the Plug-In to inform the host how many MIDI channels are actually used for input and/or output. In this case the host doesnt need to display all 16 MIDI channels to the user, if the Plug-In uses less than 16.
See also:
AudioEffectX::getNumMidiInputChannels
+ AudioEffectX::getNumMidiOutputChannels
+
+

+VST Parameters Structure

+The VST Parameters Structure XML definition provides an easy way to structure parameters of existing VST Plug-Ins hierarchically, without having to recompile the Plug-In binary. The VST SDK package contains a tool to test, extract and embed VSTXML resources.

+

See also:
VST Parameters Structure
+
+

+Macintosh Editor Changes

+All Plug-Ins built with this SDK must support composited windows on OSX.

+

See also:
Macintosh Editor as HIViewRef
+
+

+Deprecated Features

+The VST Protocol is a historically grown technology. In Version 2.4 the API has undergone a general cleanup. Some rarely (or not at all) used features and inconsistent or redundant parts of the protocol have been declared as deprecated. Deprecated opcodes and data structures are still available in the SDK headers, but their names are modified if the VST_FORCE_DEPRECATED compile switch is active (1 by default) - this might cause errors when compiling existing code.

+What does it mean? Exisiting (already released) Hosts and Plug-Ins of course remain uninfluenced. If you create a new Plug with VST SDK 2.4 it should work in any existing host as well. However, there are some details that might cause compatibility problems:

+

+To support VST Plug-Ins <= 2.4 in new Host Applications, you'll have to implement workarounds. In the long run, deprecated features shouldn't be used anymore. Future versions of VST SDK will not contain them at all.

+

See also:
Deprecated List
+
+

+Other Changes

+You might have already noticed some more minor changes in VST SDK 2.4: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/doc/sdk.menu.html b/doc/sdk.menu.html new file mode 100644 index 0000000..2815754 --- /dev/null +++ b/doc/sdk.menu.html @@ -0,0 +1,38 @@ + + + + Steinberg VST SDK 2.4 :: Menu + + + + + + + + + + + + + + + + + +
+ SDK Overview + +   + + VST SDK Documentation + +   + + VSTGUI Documentation +
+ + + + \ No newline at end of file diff --git a/doc/sdk.overview.html b/doc/sdk.overview.html new file mode 100644 index 0000000..e8a6721 --- /dev/null +++ b/doc/sdk.overview.html @@ -0,0 +1,301 @@ + + + + Steinberg VST SDK 2.4 :: Overview + + + + + + + + + + + + +
+ + + Steinberg VST SDK 2.4 Overview +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ artwork + +   + + VST Logo Artwork +
+ bin + +   + + SDK Binaries +
+        win + +   + + Tools for Windows platform +
+        mac + +   + + Tools for MacOS X platform +
+ doc + +   + + VST SDK Documentation and Licensing Agreement +
+ pluginterfaces + +   + + Interface Files +
+        vst2.x + +   + + VST 2.x Interfaces +
+ public.sdk + +   + + SDK Source Files +
+        samples + +   + +   +
+              vst2.x + +   + + VST 2.x Plug-in and Host samples +
+                 win + +   + + Windows platform samples (Win32 and x64, requires Visual C++ 2005) +
+                 win.vc2003 + +   + + Legacy Windows platform samples (Win32 only, requires Visual C++ 2003) +
+                 win.vc6 + +   + + Legacy Windows platform samples (Win32 only, requires Visual C++ 6.0) +
+                 mac + +   + + MacOS X platform samples (PPC and MacIntel architecture, requires XCode 2.2) +
+        source + +   + +   +
+              vst2.x + +   + + VST 2.x Base Classes +
+ vstgui.sf + +   + + VSTGUI Library +
+        drawtest + +   + +   +
+                 win + +   + + Visual C++ 2005 project file (Win32 and x64) +
+                 win.vc6 + +   + + Visual C++ 6.0 project file (Win32 only) +
+                 mac + +   + + XCode 2.2 project file (PPC and MacIntel) +
+        vstgui + +   + + VSTGUI source code (stable 3.0 branch from Sourceforge.net) +
+                 Documentation + +   + + VSTGUI Documentation +
+ +
+ +
+ +
+
+
+Copyright ©2006 Steinberg Media Technologies GmbH. +All Rights Reserved. +
+
+ + + + + \ No newline at end of file diff --git a/doc/sdkdoc.css b/doc/sdkdoc.css new file mode 100644 index 0000000..4d616a9 --- /dev/null +++ b/doc/sdkdoc.css @@ -0,0 +1,130 @@ +*------------------------------------------------------------------------ + Created: Maik Oppermann, 1.3.2000 + Modified: Matthias Juwan, 07/2002 +/*------------------------------------------------------------------------*/ + +body +{ + background: white; color:black; + font-family:Tahoma; font-size:8pt; font-weight:normal; +} + +p { margin-left:8pt; } + +div, p /* netscape ignores body font settings */ +{ + font-family:Tahoma; font-size:8pt; font-weight:normal; +} + +td { font-size:8pt; font-family:Tahoma; font-weight:normal; } +th { font-size:8pt; font-family:Tahoma; text-weight:bold; text-align:left; color:black; background:lightgrey; } + +a:link { color:darkblue; font-weight:normal; } +a:visited { color:darkblue; font-weight:normal; } +a:active { color:blue; font-weight:normal; } + +.subgroup +{ + margin-top:5pt; margin-bottom: 5pt; + margin-left:5pt; +} + +/*------------------------------------------------------------------------*/ +/* "framework" header box */ +/*------------------------------------------------------------------------*/ + +.framehead +{ + margin-left:0pt; /* for netscape */ + padding:2px; + background: darkblue; color:white; + border-color: darkblue; border-style:solid; border-width:0.1px; + font-family:Arial,"sans-serif"; font-size:12pt; font-weight:bold; font-style:italic; +} + +/* even links are white in the header */ + +.framehead a:link { color:white; text-decoration:none; } +.framehead a:visited { color:white; text-decoration:none; } +.framehead a:active { color:white; text-decoration:none; } + + +/*------------------------------------------------------------------------*/ +h1 +{ + font-size:16.5pt; font-weight:bold; +} + +h2 +{ + margin-top:5pt; margin-bottom: 10pt; + margin-left:5pt; + font-size:12.5pt; font-weight:bold; +} + +h3 /* class name heading */ +{ + margin-top:5pt; margin-bottom: 10pt; + margin-left:5pt; + color: darkblue; + font-size:12.5pt; font-weight:bold; +} + +h4 /* heading with colored background (Inheritance, Description, ...) */ +{ + margin-top:5pt; margin-bottom: 10pt; + margin-left:5pt; + border-color:lightblue; border-style:solid; border-width:0px; + /*background: lightsteelblue; color:black;*/ + font-size:10pt; font-weight:bold; +} + +.include /* include file name */ +{ + background:lightgrey; + color:black; + border-color:black; border-style:solid; border-width:1px; + padding:4pt; + margin-left:10pt; + margin-right:10pt; + white-space:pre; +} + +/*------------------------------------------------------------------------*/ +/* a span tag inside a method can be used to format method names */ +/*------------------------------------------------------------------------*/ +div.methods span +{ + /*font-style:italic;*/ + color: darkblue; +} + +/*------------------------------------------------------------------------*/ +/* box for c++ (or other) source code */ +/*------------------------------------------------------------------------*/ +.cpp +{ + background:lightyellow; + color:black; + border-color:black; border-style:solid; border-width:1px; + padding:4pt; + margin-left:10pt; + margin-right:10pt; + font-family:"Courier New",monospace; font-size:8pt; + white-space:pre; +} + + +/*------------------------------------------------------------------------*/ +/* menu frame */ +/*------------------------------------------------------------------------*/ + +body.menu +{ + background: white; color:black; + font-family:Arial,"sans-serif"; font-size:11pt; font-weight:normal; +} + +.menu a:link { font-weight:normal; } +.menu a:visited { font-weight:normal; } +.menu a:active { font-weight:normal; } diff --git a/index.html b/index.html new file mode 100644 index 0000000..b11a1c0 --- /dev/null +++ b/index.html @@ -0,0 +1,14 @@ + + + + Welcome to Steinberg VST SDK 2.4! + + + + + + + + + + \ No newline at end of file diff --git a/pluginterfaces/vst2.x/aeffect.h b/pluginterfaces/vst2.x/aeffect.h new file mode 100644 index 0000000..5f4f075 --- /dev/null +++ b/pluginterfaces/vst2.x/aeffect.h @@ -0,0 +1,351 @@ +//------------------------------------------------------------------------------------------------------- +// VST Plug-Ins SDK +// Version 2.4 $Date: 2006/06/20 17:22:55 $ +// +// Category : VST 2.x Interfaces +// Filename : aeffect.h +// Created by : Steinberg Media Technologies +// Description : Definition of AEffect structure +// +// © 2006, Steinberg Media Technologies, All Rights Reserved +//------------------------------------------------------------------------------------------------------- + +#ifndef __aeffect__ +#define __aeffect__ + +// gcc based compiler, or CodeWarrior on Mac OS X +#if ((defined(__GNUC__) && (defined(__APPLE_CPP__) || defined(__APPLE_CC__))) || (defined (__MWERKS__) && defined (__MACH__))) + #ifndef TARGET_API_MAC_CARBON + #define TARGET_API_MAC_CARBON 1 + #endif + #if __ppc__ + #ifndef VST_FORCE_DEPRECATED + #define VST_FORCE_DEPRECATED 0 + #endif + #endif +#endif + +#if TARGET_API_MAC_CARBON + #ifdef __LP64__ + #pragma options align=power + #else + #pragma options align=mac68k + #endif + #define VSTCALLBACK +#elif defined __BORLANDC__ + #pragma -a8 +#elif defined(__GNUC__) + #pragma pack(push,8) + #define VSTCALLBACK __cdecl +#elif defined(WIN32) || defined(__FLAT__) || defined CBUILDER + #pragma pack(push) + #pragma pack(8) + #define VSTCALLBACK __cdecl +#else + #define VSTCALLBACK +#endif +//------------------------------------------------------------------------------------------------------- + +#include // for strncpy + +//------------------------------------------------------------------------------------------------------- +// VST Version +//------------------------------------------------------------------------------------------------------- + +/** Define SDK Version (you can generate different versions (from 2.0 to 2.4) of this SDK by setting the unwanted extensions to 0). */ +#define VST_2_1_EXTENSIONS 1 ///< Version 2.1 extensions (08-06-2000) +#define VST_2_2_EXTENSIONS 1 ///< Version 2.2 extensions (08-06-2001) +#define VST_2_3_EXTENSIONS 1 ///< Version 2.3 extensions (20-05-2003) +#ifndef VST_2_4_EXTENSIONS +#define VST_2_4_EXTENSIONS 1 ///< Version 2.4 extensions (01-01-2006) +#endif + +/** Current VST Version */ +#if VST_2_4_EXTENSIONS + #define kVstVersion 2400 +#elif VST_2_3_EXTENSIONS + #define kVstVersion 2300 +#elif VST_2_2_EXTENSIONS + #define kVstVersion 2200 +#elif VST_2_1_EXTENSIONS + #define kVstVersion 2100 +#else + #define kVstVersion 2 +#endif + +/** Disable for Hosts to serve Plug-ins below VST 2.4 */ +#ifndef VST_FORCE_DEPRECATED +#define VST_FORCE_DEPRECATED VST_2_4_EXTENSIONS +#endif + +/** Declares identifier as deprecated. */ +#if VST_FORCE_DEPRECATED +#define DECLARE_VST_DEPRECATED(identifier) __##identifier##Deprecated +#else +#define DECLARE_VST_DEPRECATED(identifier) identifier +#endif + +/** Define for 64 Bit Platform. */ +#ifndef VST_64BIT_PLATFORM +#define VST_64BIT_PLATFORM _WIN64 || __LP64__ +#endif + +//------------------------------------------------------------------------------------------------------- +// Integral Types +//------------------------------------------------------------------------------------------------------- + +#ifdef WIN32 +typedef short VstInt16; ///< 16 bit integer type +typedef int VstInt32; ///< 32 bit integer type +typedef __int64 VstInt64; ///< 64 bit integer type +#else +#include +typedef int16_t VstInt16; ///< 16 bit integer type +typedef int32_t VstInt32; ///< 32 bit integer type +typedef int64_t VstInt64; ///< 64 bit integer type +#endif + +//------------------------------------------------------------------------------------------------------- +// Generic Types +//------------------------------------------------------------------------------------------------------- + +#if VST_64BIT_PLATFORM +typedef VstInt64 VstIntPtr; ///< platform-dependent integer type, same size as pointer +#else +typedef VstInt32 VstIntPtr; ///< platform-dependent integer type, same size as pointer +#endif + +//------------------------------------------------------------------------------------------------------- +// Misc. Definition +//------------------------------------------------------------------------------------------------------- +#undef CCONST +struct AEffect; + +/// @cond ignore +typedef VstIntPtr (VSTCALLBACK *audioMasterCallback) (AEffect* effect, VstInt32 opcode, VstInt32 index, VstIntPtr value, void* ptr, float opt); +typedef VstIntPtr (VSTCALLBACK *AEffectDispatcherProc) (AEffect* effect, VstInt32 opcode, VstInt32 index, VstIntPtr value, void* ptr, float opt); +typedef void (VSTCALLBACK *AEffectProcessProc) (AEffect* effect, float** inputs, float** outputs, VstInt32 sampleFrames); +typedef void (VSTCALLBACK *AEffectProcessDoubleProc) (AEffect* effect, double** inputs, double** outputs, VstInt32 sampleFrames); +typedef void (VSTCALLBACK *AEffectSetParameterProc) (AEffect* effect, VstInt32 index, float parameter); +typedef float (VSTCALLBACK *AEffectGetParameterProc) (AEffect* effect, VstInt32 index); +/// @endcond + +/** Four Character Constant (for AEffect->uniqueID) */ +#define CCONST(a, b, c, d) \ + ((((VstInt32)a) << 24) | (((VstInt32)b) << 16) | (((VstInt32)c) << 8) | (((VstInt32)d) << 0)) + +/** AEffect magic number */ +#define kEffectMagic CCONST ('V', 's', 't', 'P') + +//------------------------------------------------------------------------------------------------------- +/** Basic VST Effect "C" Interface. */ +//------------------------------------------------------------------------------------------------------- +struct AEffect +{ +//------------------------------------------------------------------------------------------------------- + VstInt32 magic; ///< must be #kEffectMagic ('VstP') + + /** Host to Plug-in dispatcher @see AudioEffect::dispatcher */ + AEffectDispatcherProc dispatcher; + + /** \deprecated Accumulating process mode is deprecated in VST 2.4! Use AEffect::processReplacing instead! */ + AEffectProcessProc DECLARE_VST_DEPRECATED (process); + + /** Set new value of automatable parameter @see AudioEffect::setParameter */ + AEffectSetParameterProc setParameter; + + /** Returns current value of automatable parameter @see AudioEffect::getParameter*/ + AEffectGetParameterProc getParameter; + + VstInt32 numPrograms; ///< number of programs + VstInt32 numParams; ///< all programs are assumed to have numParams parameters + VstInt32 numInputs; ///< number of audio inputs + VstInt32 numOutputs; ///< number of audio outputs + + VstInt32 flags; ///< @see VstAEffectFlags + + VstIntPtr resvd1; ///< reserved for Host, must be 0 + VstIntPtr resvd2; ///< reserved for Host, must be 0 + + VstInt32 initialDelay; ///< for algorithms which need input in the first place (Group delay or latency in Samples). This value should be initialized in a resume state. + + VstInt32 DECLARE_VST_DEPRECATED (realQualities); ///< \deprecated unused member + VstInt32 DECLARE_VST_DEPRECATED (offQualities); ///< \deprecated unused member + float DECLARE_VST_DEPRECATED (ioRatio); ///< \deprecated unused member + + void* object; ///< #AudioEffect class pointer + void* user; ///< user-defined pointer + + VstInt32 uniqueID; ///< registered unique identifier (register it at Steinberg 3rd party support Web). This is used to identify a plug-in during save+load of preset and project. + VstInt32 version; ///< plug-in version (example 1100 for version 1.1.0.0) + + /** Process audio samples in replacing mode @see AudioEffect::processReplacing */ + AEffectProcessProc processReplacing; + +#if VST_2_4_EXTENSIONS + /** Process double-precision audio samples in replacing mode @see AudioEffect::processDoubleReplacing */ + AEffectProcessDoubleProc processDoubleReplacing; + + char future[56]; ///< reserved for future use (please zero) +#else + char future[60]; ///< reserved for future use (please zero) +#endif +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** AEffect flags */ +//------------------------------------------------------------------------------------------------------- +enum VstAEffectFlags +{ +//------------------------------------------------------------------------------------------------------- + effFlagsHasEditor = 1 << 0, ///< set if the plug-in provides a custom editor + effFlagsCanReplacing = 1 << 4, ///< supports replacing process mode (which should the default mode in VST 2.4) + effFlagsProgramChunks = 1 << 5, ///< program data is handled in formatless chunks + effFlagsIsSynth = 1 << 8, ///< plug-in is a synth (VSTi), Host may assign mixer channels for its outputs + effFlagsNoSoundInStop = 1 << 9, ///< plug-in does not produce sound when input is all silence + +#if VST_2_4_EXTENSIONS + effFlagsCanDoubleReplacing = 1 << 12, ///< plug-in supports double precision processing +#endif + + DECLARE_VST_DEPRECATED (effFlagsHasClip) = 1 << 1, ///< \deprecated deprecated in VST 2.4 + DECLARE_VST_DEPRECATED (effFlagsHasVu) = 1 << 2, ///< \deprecated deprecated in VST 2.4 + DECLARE_VST_DEPRECATED (effFlagsCanMono) = 1 << 3, ///< \deprecated deprecated in VST 2.4 + DECLARE_VST_DEPRECATED (effFlagsExtIsAsync) = 1 << 10, ///< \deprecated deprecated in VST 2.4 + DECLARE_VST_DEPRECATED (effFlagsExtHasBuffer) = 1 << 11 ///< \deprecated deprecated in VST 2.4 +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Basic dispatcher Opcodes (Host to Plug-in) */ +//------------------------------------------------------------------------------------------------------- +enum AEffectOpcodes +{ + effOpen = 0, ///< no arguments @see AudioEffect::open + effClose, ///< no arguments @see AudioEffect::close + + effSetProgram, ///< [value]: new program number @see AudioEffect::setProgram + effGetProgram, ///< [return value]: current program number @see AudioEffect::getProgram + effSetProgramName, ///< [ptr]: char* with new program name, limited to #kVstMaxProgNameLen @see AudioEffect::setProgramName + effGetProgramName, ///< [ptr]: char buffer for current program name, limited to #kVstMaxProgNameLen @see AudioEffect::getProgramName + + effGetParamLabel, ///< [ptr]: char buffer for parameter label, limited to #kVstMaxParamStrLen @see AudioEffect::getParameterLabel + effGetParamDisplay, ///< [ptr]: char buffer for parameter display, limited to #kVstMaxParamStrLen @see AudioEffect::getParameterDisplay + effGetParamName, ///< [ptr]: char buffer for parameter name, limited to #kVstMaxParamStrLen @see AudioEffect::getParameterName + + DECLARE_VST_DEPRECATED (effGetVu), ///< \deprecated deprecated in VST 2.4 + + effSetSampleRate, ///< [opt]: new sample rate for audio processing @see AudioEffect::setSampleRate + effSetBlockSize, ///< [value]: new maximum block size for audio processing @see AudioEffect::setBlockSize + effMainsChanged, ///< [value]: 0 means "turn off", 1 means "turn on" @see AudioEffect::suspend @see AudioEffect::resume + + effEditGetRect, ///< [ptr]: #ERect** receiving pointer to editor size @see ERect @see AEffEditor::getRect + effEditOpen, ///< [ptr]: system dependent Window pointer, e.g. HWND on Windows @see AEffEditor::open + effEditClose, ///< no arguments @see AEffEditor::close + + DECLARE_VST_DEPRECATED (effEditDraw), ///< \deprecated deprecated in VST 2.4 + DECLARE_VST_DEPRECATED (effEditMouse), ///< \deprecated deprecated in VST 2.4 + DECLARE_VST_DEPRECATED (effEditKey), ///< \deprecated deprecated in VST 2.4 + + effEditIdle, ///< no arguments @see AEffEditor::idle + + DECLARE_VST_DEPRECATED (effEditTop), ///< \deprecated deprecated in VST 2.4 + DECLARE_VST_DEPRECATED (effEditSleep), ///< \deprecated deprecated in VST 2.4 + DECLARE_VST_DEPRECATED (effIdentify), ///< \deprecated deprecated in VST 2.4 + + effGetChunk, ///< [ptr]: void** for chunk data address [index]: 0 for bank, 1 for program @see AudioEffect::getChunk + effSetChunk, ///< [ptr]: chunk data [value]: byte size [index]: 0 for bank, 1 for program @see AudioEffect::setChunk + + effNumOpcodes +}; + +//------------------------------------------------------------------------------------------------------- +/** Basic dispatcher Opcodes (Plug-in to Host) */ +//------------------------------------------------------------------------------------------------------- +enum AudioMasterOpcodes +{ +//------------------------------------------------------------------------------------------------------- + audioMasterAutomate = 0, ///< [index]: parameter index [opt]: parameter value @see AudioEffect::setParameterAutomated + audioMasterVersion, ///< [return value]: Host VST version (for example 2400 for VST 2.4) @see AudioEffect::getMasterVersion + audioMasterCurrentId, ///< [return value]: current unique identifier on shell plug-in @see AudioEffect::getCurrentUniqueId + audioMasterIdle, ///< no arguments @see AudioEffect::masterIdle + DECLARE_VST_DEPRECATED (audioMasterPinConnected) ///< \deprecated deprecated in VST 2.4 r2 +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** String length limits (in characters excl. 0 byte) */ +//------------------------------------------------------------------------------------------------------- +enum VstStringConstants +{ +//------------------------------------------------------------------------------------------------------- + kVstMaxProgNameLen = 24, ///< used for #effGetProgramName, #effSetProgramName, #effGetProgramNameIndexed + kVstMaxParamStrLen = 8, ///< used for #effGetParamLabel, #effGetParamDisplay, #effGetParamName + kVstMaxVendorStrLen = 64, ///< used for #effGetVendorString, #audioMasterGetVendorString + kVstMaxProductStrLen = 64, ///< used for #effGetProductString, #audioMasterGetProductString + kVstMaxEffectNameLen = 32 ///< used for #effGetEffectName +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** String copy taking care of null terminator. */ +//------------------------------------------------------------------------------------------------------- +inline char* vst_strncpy (char* dst, const char* src, size_t maxLen) +{ + char* result = strncpy (dst, src, maxLen); + dst[maxLen] = 0; + return result; +} + +//------------------------------------------------------------------------------------------------------- +/** String concatenation taking care of null terminator. */ +//------------------------------------------------------------------------------------------------------- +inline char* vst_strncat (char* dst, const char* src, size_t maxLen) +{ + char* result = strncat (dst, src, maxLen); + dst[maxLen] = 0; + return result; +} + +//------------------------------------------------------------------------------------------------------- +/** Cast #VstIntPtr to pointer. */ +//------------------------------------------------------------------------------------------------------- +template inline T* FromVstPtr (VstIntPtr& arg) +{ + T** address = (T**)&arg; + return *address; +} + +//------------------------------------------------------------------------------------------------------- +/** Cast pointer to #VstIntPtr. */ +//------------------------------------------------------------------------------------------------------- +template inline VstIntPtr ToVstPtr (T* ptr) +{ + VstIntPtr* address = (VstIntPtr*)&ptr; + return *address; +} + +//------------------------------------------------------------------------------------------------------- +/** Structure used for #effEditGetRect. */ +//------------------------------------------------------------------------------------------------------- +struct ERect +{ +//------------------------------------------------------------------------------------------------------- + VstInt16 top; ///< top coordinate + VstInt16 left; ///< left coordinate + VstInt16 bottom; ///< bottom coordinate + VstInt16 right; ///< right coordinate +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +#if TARGET_API_MAC_CARBON + #pragma options align=reset +#elif defined(WIN32) || defined(__FLAT__) || defined(__GNUC__) + #pragma pack(pop) +#elif defined __BORLANDC__ + #pragma -a- +#endif + +#endif // __aeffect__ diff --git a/pluginterfaces/vst2.x/aeffectx.h b/pluginterfaces/vst2.x/aeffectx.h new file mode 100644 index 0000000..8983b1d --- /dev/null +++ b/pluginterfaces/vst2.x/aeffectx.h @@ -0,0 +1,1143 @@ +//------------------------------------------------------------------------------------------------------- +// VST Plug-Ins SDK +// Version 2.4 $Date: 2006/06/20 12:43:42 $ +// +// Category : VST 2.x Interfaces +// Filename : aeffectx.h +// Created by : Steinberg Media Technologies +// Description : Definition of auxiliary structures, extensions from VST 1.0 to VST 2.4 +// +// © 2006, Steinberg Media Technologies, All Rights Reserved +//------------------------------------------------------------------------------------------------------- + +#ifndef __aeffectx__ +#define __aeffectx__ + +#ifndef __aeffect__ +#include "aeffect.h" +#endif + +//------------------------------------------------------------------------------------------------------- +#if TARGET_API_MAC_CARBON + #ifdef __LP64__ + #pragma options align=power + #else + #pragma options align=mac68k + #endif +#elif defined __BORLANDC__ + #pragma -a8 +#elif defined(__GNUC__) + #pragma pack(push,8) +#elif defined(WIN32) || defined(__FLAT__) + #pragma pack(push) + #pragma pack(8) +#endif +//------------------------------------------------------------------------------------------------------- + +//------------------------------------------------------------------------------------------------------- +/** String length limits (in characters excl. 0 byte). */ +//------------------------------------------------------------------------------------------------------- +enum Vst2StringConstants +{ +//------------------------------------------------------------------------------------------------------- + kVstMaxNameLen = 64, ///< used for #MidiProgramName, #MidiProgramCategory, #MidiKeyName, #VstSpeakerProperties, #VstPinProperties + kVstMaxLabelLen = 64, ///< used for #VstParameterProperties->label, #VstPinProperties->label + kVstMaxShortLabelLen = 8, ///< used for #VstParameterProperties->shortLabel, #VstPinProperties->shortLabel + kVstMaxCategLabelLen = 24, ///< used for #VstParameterProperties->label + kVstMaxFileNameLen = 100 ///< used for #VstAudioFile->name +//------------------------------------------------------------------------------------------------------- +}; +//------------------------------------------------------------------------------------------------------- +// VstEvent +//------------------------------------------------------------------------------------------------------- +//------------------------------------------------------------------------------------------------------- +/** A generic timestamped event. */ +//------------------------------------------------------------------------------------------------------- +struct VstEvent +{ +//------------------------------------------------------------------------------------------------------- + VstInt32 type; ///< @see VstEventTypes + VstInt32 byteSize; ///< size of this event, excl. type and byteSize + VstInt32 deltaFrames; ///< sample frames related to the current block start sample position + VstInt32 flags; ///< generic flags, none defined yet + + char data[16]; ///< data size may vary, depending on event type +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** VstEvent Types used by #VstEvent. */ +//------------------------------------------------------------------------------------------------------- +enum VstEventTypes +{ +//------------------------------------------------------------------------------------------------------- + kVstMidiType = 1, ///< MIDI event @see VstMidiEvent + DECLARE_VST_DEPRECATED (kVstAudioType), ///< \deprecated unused event type + DECLARE_VST_DEPRECATED (kVstVideoType), ///< \deprecated unused event type + DECLARE_VST_DEPRECATED (kVstParameterType), ///< \deprecated unused event type + DECLARE_VST_DEPRECATED (kVstTriggerType), ///< \deprecated unused event type + kVstSysExType ///< MIDI system exclusive @see VstMidiSysexEvent +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** A block of events for the current processed audio block. */ +//------------------------------------------------------------------------------------------------------- +struct VstEvents +{ +//------------------------------------------------------------------------------------------------------- + VstInt32 numEvents; ///< number of Events in array + VstIntPtr reserved; ///< zero (Reserved for future use) + VstEvent* events[2]; ///< event pointer array, variable size +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** MIDI Event (to be casted from VstEvent). */ +//------------------------------------------------------------------------------------------------------- +struct VstMidiEvent +{ +//------------------------------------------------------------------------------------------------------- + VstInt32 type; ///< #kVstMidiType + VstInt32 byteSize; ///< sizeof (VstMidiEvent) + VstInt32 deltaFrames; ///< sample frames related to the current block start sample position + VstInt32 flags; ///< @see VstMidiEventFlags + VstInt32 noteLength; ///< (in sample frames) of entire note, if available, else 0 + VstInt32 noteOffset; ///< offset (in sample frames) into note from note start if available, else 0 + char midiData[4]; ///< 1 to 3 MIDI bytes; midiData[3] is reserved (zero) + char detune; ///< -64 to +63 cents; for scales other than 'well-tempered' ('microtuning') + char noteOffVelocity; ///< Note Off Velocity [0, 127] + char reserved1; ///< zero (Reserved for future use) + char reserved2; ///< zero (Reserved for future use) +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Flags used in #VstMidiEvent. */ +//------------------------------------------------------------------------------------------------------- +enum VstMidiEventFlags +{ +//------------------------------------------------------------------------------------------------------- + kVstMidiEventIsRealtime = 1 << 0 ///< means that this event is played life (not in playback from a sequencer track).\n This allows the Plug-In to handle these flagged events with higher priority, especially when the Plug-In has a big latency (AEffect::initialDelay) +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** MIDI Sysex Event (to be casted from #VstEvent). */ +//------------------------------------------------------------------------------------------------------- +struct VstMidiSysexEvent +{ +//------------------------------------------------------------------------------------------------------- + VstInt32 type; ///< #kVstSysexType + VstInt32 byteSize; ///< sizeof (VstMidiSysexEvent) + VstInt32 deltaFrames; ///< sample frames related to the current block start sample position + VstInt32 flags; ///< none defined yet (should be zero) + VstInt32 dumpBytes; ///< byte size of sysexDump + VstIntPtr resvd1; ///< zero (Reserved for future use) + char* sysexDump; ///< sysex dump + VstIntPtr resvd2; ///< zero (Reserved for future use) +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +// VstTimeInfo +//------------------------------------------------------------------------------------------------------- +//------------------------------------------------------------------------------------------------------- +/** VstTimeInfo requested via #audioMasterGetTime. @see AudioEffectX::getTimeInfo + +\note VstTimeInfo::samplePos :Current Position. It must always be valid, and should not cost a lot to ask for. The sample position is ahead of the time displayed to the user. In sequencer stop mode, its value does not change. A 32 bit integer is too small for sample positions, and it's a double to make it easier to convert between ppq and samples. +\note VstTimeInfo::ppqPos : At tempo 120, 1 quarter makes 1/2 second, so 2.0 ppq translates to 48000 samples at 48kHz sample rate. +.25 ppq is one sixteenth note then. if you need something like 480ppq, you simply multiply ppq by that scaler. +\note VstTimeInfo::barStartPos : Say we're at bars/beats readout 3.3.3. That's 2 bars + 2 q + 2 sixteenth, makes 2 * 4 + 2 + .25 = 10.25 ppq. at tempo 120, that's 10.25 * .5 = 5.125 seconds, times 48000 = 246000 samples (if my calculator servers me well :-). +\note VstTimeInfo::samplesToNextClock : MIDI Clock Resolution (24 per Quarter Note), can be negative the distance to the next midi clock (24 ppq, pulses per quarter) in samples. unless samplePos falls precicely on a midi clock, this will either be negative such that the previous MIDI clock is addressed, or positive when referencing the following (future) MIDI clock. +*/ +//------------------------------------------------------------------------------------------------------- +struct VstTimeInfo +{ +//------------------------------------------------------------------------------------------------------- + double samplePos; ///< current Position in audio samples (always valid) + double sampleRate; ///< current Sample Rate in Herz (always valid) + double nanoSeconds; ///< System Time in nanoseconds (10^-9 second) + double ppqPos; ///< Musical Position, in Quarter Note (1.0 equals 1 Quarter Note) + double tempo; ///< current Tempo in BPM (Beats Per Minute) + double barStartPos; ///< last Bar Start Position, in Quarter Note + double cycleStartPos; ///< Cycle Start (left locator), in Quarter Note + double cycleEndPos; ///< Cycle End (right locator), in Quarter Note + VstInt32 timeSigNumerator; ///< Time Signature Numerator (e.g. 3 for 3/4) + VstInt32 timeSigDenominator; ///< Time Signature Denominator (e.g. 4 for 3/4) + VstInt32 smpteOffset; ///< SMPTE offset (in SMPTE subframes (bits; 1/80 of a frame)). The current SMPTE position can be calculated using #samplePos, #sampleRate, and #smpteFrameRate. + VstInt32 smpteFrameRate; ///< @see VstSmpteFrameRate + VstInt32 samplesToNextClock; ///< MIDI Clock Resolution (24 Per Quarter Note), can be negative (nearest clock) + VstInt32 flags; ///< @see VstTimeInfoFlags +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Flags used in #VstTimeInfo. */ +//------------------------------------------------------------------------------------------------------- +enum VstTimeInfoFlags +{ +//------------------------------------------------------------------------------------------------------- + kVstTransportChanged = 1, ///< indicates that play, cycle or record state has changed + kVstTransportPlaying = 1 << 1, ///< set if Host sequencer is currently playing + kVstTransportCycleActive = 1 << 2, ///< set if Host sequencer is in cycle mode + kVstTransportRecording = 1 << 3, ///< set if Host sequencer is in record mode + kVstAutomationWriting = 1 << 6, ///< set if automation write mode active (record parameter changes) + kVstAutomationReading = 1 << 7, ///< set if automation read mode active (play parameter changes) + kVstNanosValid = 1 << 8, ///< VstTimeInfo::nanoSeconds valid + kVstPpqPosValid = 1 << 9, ///< VstTimeInfo::ppqPos valid + kVstTempoValid = 1 << 10, ///< VstTimeInfo::tempo valid + kVstBarsValid = 1 << 11, ///< VstTimeInfo::barStartPos valid + kVstCyclePosValid = 1 << 12, ///< VstTimeInfo::cycleStartPos and VstTimeInfo::cycleEndPos valid + kVstTimeSigValid = 1 << 13, ///< VstTimeInfo::timeSigNumerator and VstTimeInfo::timeSigDenominator valid + kVstSmpteValid = 1 << 14, ///< VstTimeInfo::smpteOffset and VstTimeInfo::smpteFrameRate valid + kVstClockValid = 1 << 15 ///< VstTimeInfo::samplesToNextClock valid +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** SMPTE Frame Rates. */ +//------------------------------------------------------------------------------------------------------- +enum VstSmpteFrameRate +{ +//------------------------------------------------------------------------------------------------------- + kVstSmpte24fps = 0, ///< 24 fps + kVstSmpte25fps = 1, ///< 25 fps + kVstSmpte2997fps = 2, ///< 29.97 fps + kVstSmpte30fps = 3, ///< 30 fps + kVstSmpte2997dfps = 4, ///< 29.97 drop + kVstSmpte30dfps = 5, ///< 30 drop + + kVstSmpteFilm16mm = 6, ///< Film 16mm + kVstSmpteFilm35mm = 7, ///< Film 35mm + kVstSmpte239fps = 10, ///< HDTV: 23.976 fps + kVstSmpte249fps = 11, ///< HDTV: 24.976 fps + kVstSmpte599fps = 12, ///< HDTV: 59.94 fps + kVstSmpte60fps = 13 ///< HDTV: 60 fps +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Variable IO for Offline Processing. */ +//------------------------------------------------------------------------------------------------------- +struct VstVariableIo +{ +//------------------------------------------------------------------------------------------------------- + float** inputs; ///< input audio buffers + float** outputs; ///< output audio buffers + VstInt32 numSamplesInput; ///< number of incoming samples + VstInt32 numSamplesOutput; ///< number of outgoing samples + VstInt32* numSamplesInputProcessed; ///< number of samples actually processed of input + VstInt32* numSamplesOutputProcessed; ///< number of samples actually processed of output +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Language code returned by audioMasterGetLanguage. */ +//------------------------------------------------------------------------------------------------------- +enum VstHostLanguage +{ +//------------------------------------------------------------------------------------------------------- + kVstLangEnglish = 1, ///< English + kVstLangGerman, ///< German + kVstLangFrench, ///< French + kVstLangItalian, ///< Italian + kVstLangSpanish, ///< Spanish + kVstLangJapanese ///< Japanese +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** VST 2.x dispatcher Opcodes (Plug-in to Host). Extension of #AudioMasterOpcodes */ +//------------------------------------------------------------------------------------------------------- +enum AudioMasterOpcodesX +{ +//------------------------------------------------------------------------------------------------------- + DECLARE_VST_DEPRECATED (audioMasterWantMidi) = DECLARE_VST_DEPRECATED (audioMasterPinConnected) + 2, ///< \deprecated deprecated in VST 2.4 + + audioMasterGetTime, ///< [return value]: #VstTimeInfo* or null if not supported [value]: request mask @see VstTimeInfoFlags @see AudioEffectX::getTimeInfo + audioMasterProcessEvents, ///< [ptr]: pointer to #VstEvents @see VstEvents @see AudioEffectX::sendVstEventsToHost + + DECLARE_VST_DEPRECATED (audioMasterSetTime), ///< \deprecated deprecated in VST 2.4 + DECLARE_VST_DEPRECATED (audioMasterTempoAt), ///< \deprecated deprecated in VST 2.4 + DECLARE_VST_DEPRECATED (audioMasterGetNumAutomatableParameters), ///< \deprecated deprecated in VST 2.4 + DECLARE_VST_DEPRECATED (audioMasterGetParameterQuantization), ///< \deprecated deprecated in VST 2.4 + + audioMasterIOChanged, ///< [return value]: 1 if supported @see AudioEffectX::ioChanged + + DECLARE_VST_DEPRECATED (audioMasterNeedIdle), ///< \deprecated deprecated in VST 2.4 + + audioMasterSizeWindow, ///< [index]: new width [value]: new height [return value]: 1 if supported @see AudioEffectX::sizeWindow + audioMasterGetSampleRate, ///< [return value]: current sample rate @see AudioEffectX::updateSampleRate + audioMasterGetBlockSize, ///< [return value]: current block size @see AudioEffectX::updateBlockSize + audioMasterGetInputLatency, ///< [return value]: input latency in audio samples @see AudioEffectX::getInputLatency + audioMasterGetOutputLatency, ///< [return value]: output latency in audio samples @see AudioEffectX::getOutputLatency + + DECLARE_VST_DEPRECATED (audioMasterGetPreviousPlug), ///< \deprecated deprecated in VST 2.4 + DECLARE_VST_DEPRECATED (audioMasterGetNextPlug), ///< \deprecated deprecated in VST 2.4 + DECLARE_VST_DEPRECATED (audioMasterWillReplaceOrAccumulate), ///< \deprecated deprecated in VST 2.4 + + audioMasterGetCurrentProcessLevel, ///< [return value]: current process level @see VstProcessLevels + audioMasterGetAutomationState, ///< [return value]: current automation state @see VstAutomationStates + + audioMasterOfflineStart, ///< [index]: numNewAudioFiles [value]: numAudioFiles [ptr]: #VstAudioFile* @see AudioEffectX::offlineStart + audioMasterOfflineRead, ///< [index]: bool readSource [value]: #VstOfflineOption* @see VstOfflineOption [ptr]: #VstOfflineTask* @see VstOfflineTask @see AudioEffectX::offlineRead + audioMasterOfflineWrite, ///< @see audioMasterOfflineRead @see AudioEffectX::offlineRead + audioMasterOfflineGetCurrentPass, ///< @see AudioEffectX::offlineGetCurrentPass + audioMasterOfflineGetCurrentMetaPass, ///< @see AudioEffectX::offlineGetCurrentMetaPass + + DECLARE_VST_DEPRECATED (audioMasterSetOutputSampleRate), ///< \deprecated deprecated in VST 2.4 + DECLARE_VST_DEPRECATED (audioMasterGetOutputSpeakerArrangement), ///< \deprecated deprecated in VST 2.4 + + audioMasterGetVendorString, ///< [ptr]: char buffer for vendor string, limited to #kVstMaxVendorStrLen @see AudioEffectX::getHostVendorString + audioMasterGetProductString, ///< [ptr]: char buffer for vendor string, limited to #kVstMaxProductStrLen @see AudioEffectX::getHostProductString + audioMasterGetVendorVersion, ///< [return value]: vendor-specific version @see AudioEffectX::getHostVendorVersion + audioMasterVendorSpecific, ///< no definition, vendor specific handling @see AudioEffectX::hostVendorSpecific + + DECLARE_VST_DEPRECATED (audioMasterSetIcon), ///< \deprecated deprecated in VST 2.4 + + audioMasterCanDo, ///< [ptr]: "can do" string [return value]: 1 for supported + audioMasterGetLanguage, ///< [return value]: language code @see VstHostLanguage + + DECLARE_VST_DEPRECATED (audioMasterOpenWindow), ///< \deprecated deprecated in VST 2.4 + DECLARE_VST_DEPRECATED (audioMasterCloseWindow), ///< \deprecated deprecated in VST 2.4 + + audioMasterGetDirectory, ///< [return value]: FSSpec on MAC, else char* @see AudioEffectX::getDirectory + audioMasterUpdateDisplay, ///< no arguments + audioMasterBeginEdit, ///< [index]: parameter index @see AudioEffectX::beginEdit + audioMasterEndEdit, ///< [index]: parameter index @see AudioEffectX::endEdit + audioMasterOpenFileSelector, ///< [ptr]: VstFileSelect* [return value]: 1 if supported @see AudioEffectX::openFileSelector + audioMasterCloseFileSelector, ///< [ptr]: VstFileSelect* @see AudioEffectX::closeFileSelector + + DECLARE_VST_DEPRECATED (audioMasterEditFile), ///< \deprecated deprecated in VST 2.4 + + DECLARE_VST_DEPRECATED (audioMasterGetChunkFile), ///< \deprecated deprecated in VST 2.4 [ptr]: char[2048] or sizeof (FSSpec) [return value]: 1 if supported @see AudioEffectX::getChunkFile + + DECLARE_VST_DEPRECATED (audioMasterGetInputSpeakerArrangement) ///< \deprecated deprecated in VST 2.4 +}; + +//------------------------------------------------------------------------------------------------------- +/** VST 2.x dispatcher Opcodes (Host to Plug-in). Extension of #AEffectOpcodes */ +//------------------------------------------------------------------------------------------------------- +enum AEffectXOpcodes +{ +//------------------------------------------------------------------------------------------------------- + effProcessEvents = effSetChunk + 1 ///< [ptr]: #VstEvents* @see AudioEffectX::processEvents + + , effCanBeAutomated ///< [index]: parameter index [return value]: 1=true, 0=false @see AudioEffectX::canParameterBeAutomated + , effString2Parameter ///< [index]: parameter index [ptr]: parameter string [return value]: true for success @see AudioEffectX::string2parameter + + , DECLARE_VST_DEPRECATED (effGetNumProgramCategories) ///< \deprecated deprecated in VST 2.4 + + , effGetProgramNameIndexed ///< [index]: program index [ptr]: buffer for program name, limited to #kVstMaxProgNameLen [return value]: true for success @see AudioEffectX::getProgramNameIndexed + + , DECLARE_VST_DEPRECATED (effCopyProgram) ///< \deprecated deprecated in VST 2.4 + , DECLARE_VST_DEPRECATED (effConnectInput) ///< \deprecated deprecated in VST 2.4 + , DECLARE_VST_DEPRECATED (effConnectOutput) ///< \deprecated deprecated in VST 2.4 + + , effGetInputProperties ///< [index]: input index [ptr]: #VstPinProperties* [return value]: 1 if supported @see AudioEffectX::getInputProperties + , effGetOutputProperties ///< [index]: output index [ptr]: #VstPinProperties* [return value]: 1 if supported @see AudioEffectX::getOutputProperties + , effGetPlugCategory ///< [return value]: category @see VstPlugCategory @see AudioEffectX::getPlugCategory + + , DECLARE_VST_DEPRECATED (effGetCurrentPosition) ///< \deprecated deprecated in VST 2.4 + , DECLARE_VST_DEPRECATED (effGetDestinationBuffer) ///< \deprecated deprecated in VST 2.4 + + , effOfflineNotify ///< [ptr]: #VstAudioFile array [value]: count [index]: start flag @see AudioEffectX::offlineNotify + , effOfflinePrepare ///< [ptr]: #VstOfflineTask array [value]: count @see AudioEffectX::offlinePrepare + , effOfflineRun ///< [ptr]: #VstOfflineTask array [value]: count @see AudioEffectX::offlineRun + + , effProcessVarIo ///< [ptr]: #VstVariableIo* @see AudioEffectX::processVariableIo + , effSetSpeakerArrangement ///< [value]: input #VstSpeakerArrangement* [ptr]: output #VstSpeakerArrangement* @see AudioEffectX::setSpeakerArrangement + + , DECLARE_VST_DEPRECATED (effSetBlockSizeAndSampleRate) ///< \deprecated deprecated in VST 2.4 + + , effSetBypass ///< [value]: 1 = bypass, 0 = no bypass @see AudioEffectX::setBypass + , effGetEffectName ///< [ptr]: buffer for effect name, limited to #kVstMaxEffectNameLen @see AudioEffectX::getEffectName + + , DECLARE_VST_DEPRECATED (effGetErrorText) ///< \deprecated deprecated in VST 2.4 + + , effGetVendorString ///< [ptr]: buffer for effect vendor string, limited to #kVstMaxVendorStrLen @see AudioEffectX::getVendorString + , effGetProductString ///< [ptr]: buffer for effect vendor string, limited to #kVstMaxProductStrLen @see AudioEffectX::getProductString + , effGetVendorVersion ///< [return value]: vendor-specific version @see AudioEffectX::getVendorVersion + , effVendorSpecific ///< no definition, vendor specific handling @see AudioEffectX::vendorSpecific + , effCanDo ///< [ptr]: "can do" string [return value]: 0: "don't know" -1: "no" 1: "yes" @see AudioEffectX::canDo + , effGetTailSize ///< [return value]: tail size (for example the reverb time of a reverb plug-in); 0 is default (return 1 for 'no tail') + + , DECLARE_VST_DEPRECATED (effIdle) ///< \deprecated deprecated in VST 2.4 + , DECLARE_VST_DEPRECATED (effGetIcon) ///< \deprecated deprecated in VST 2.4 + , DECLARE_VST_DEPRECATED (effSetViewPosition) ///< \deprecated deprecated in VST 2.4 + + , effGetParameterProperties ///< [index]: parameter index [ptr]: #VstParameterProperties* [return value]: 1 if supported @see AudioEffectX::getParameterProperties + + , DECLARE_VST_DEPRECATED (effKeysRequired) ///< \deprecated deprecated in VST 2.4 + + , effGetVstVersion ///< [return value]: VST version @see AudioEffectX::getVstVersion + +#if VST_2_1_EXTENSIONS + , effEditKeyDown ///< [index]: ASCII character [value]: virtual key [opt]: modifiers [return value]: 1 if key used @see AEffEditor::onKeyDown + , effEditKeyUp ///< [index]: ASCII character [value]: virtual key [opt]: modifiers [return value]: 1 if key used @see AEffEditor::onKeyUp + , effSetEditKnobMode ///< [value]: knob mode 0: circular, 1: circular relativ, 2: linear (CKnobMode in VSTGUI) @see AEffEditor::setKnobMode + + , effGetMidiProgramName ///< [index]: MIDI channel [ptr]: #MidiProgramName* [return value]: number of used programs, 0 if unsupported @see AudioEffectX::getMidiProgramName + , effGetCurrentMidiProgram ///< [index]: MIDI channel [ptr]: #MidiProgramName* [return value]: index of current program @see AudioEffectX::getCurrentMidiProgram + , effGetMidiProgramCategory ///< [index]: MIDI channel [ptr]: #MidiProgramCategory* [return value]: number of used categories, 0 if unsupported @see AudioEffectX::getMidiProgramCategory + , effHasMidiProgramsChanged ///< [index]: MIDI channel [return value]: 1 if the #MidiProgramName(s) or #MidiKeyName(s) have changed @see AudioEffectX::hasMidiProgramsChanged + , effGetMidiKeyName ///< [index]: MIDI channel [ptr]: #MidiKeyName* [return value]: true if supported, false otherwise @see AudioEffectX::getMidiKeyName + + , effBeginSetProgram ///< no arguments @see AudioEffectX::beginSetProgram + , effEndSetProgram ///< no arguments @see AudioEffectX::endSetProgram +#endif // VST_2_1_EXTENSIONS + +#if VST_2_3_EXTENSIONS + , effGetSpeakerArrangement ///< [value]: input #VstSpeakerArrangement* [ptr]: output #VstSpeakerArrangement* @see AudioEffectX::getSpeakerArrangement + , effShellGetNextPlugin ///< [ptr]: buffer for plug-in name, limited to #kVstMaxProductStrLen [return value]: next plugin's uniqueID @see AudioEffectX::getNextShellPlugin + + , effStartProcess ///< no arguments @see AudioEffectX::startProcess + , effStopProcess ///< no arguments @see AudioEffectX::stopProcess + , effSetTotalSampleToProcess ///< [value]: number of samples to process, offline only! @see AudioEffectX::setTotalSampleToProcess + , effSetPanLaw ///< [value]: pan law [opt]: gain @see VstPanLawType @see AudioEffectX::setPanLaw + + , effBeginLoadBank ///< [ptr]: #VstPatchChunkInfo* [return value]: -1: bank can't be loaded, 1: bank can be loaded, 0: unsupported @see AudioEffectX::beginLoadBank + , effBeginLoadProgram ///< [ptr]: #VstPatchChunkInfo* [return value]: -1: prog can't be loaded, 1: prog can be loaded, 0: unsupported @see AudioEffectX::beginLoadProgram +#endif // VST_2_3_EXTENSIONS + +#if VST_2_4_EXTENSIONS + , effSetProcessPrecision ///< [value]: @see VstProcessPrecision @see AudioEffectX::setProcessPrecision + , effGetNumMidiInputChannels ///< [return value]: number of used MIDI input channels (1-15) @see AudioEffectX::getNumMidiInputChannels + , effGetNumMidiOutputChannels ///< [return value]: number of used MIDI output channels (1-15) @see AudioEffectX::getNumMidiOutputChannels +#endif // VST_2_4_EXTENSIONS +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Symbolic precision constants used for effSetProcessPrecision. */ +//------------------------------------------------------------------------------------------------------- +enum VstProcessPrecision +{ + kVstProcessPrecision32 = 0, ///< single precision float (32bits) + kVstProcessPrecision64 ///< double precision (64bits) +}; + +//------------------------------------------------------------------------------------------------------- +/** Parameter Properties used in #effGetParameterProperties. */ +//------------------------------------------------------------------------------------------------------- +struct VstParameterProperties +{ +//------------------------------------------------------------------------------------------------------- + float stepFloat; ///< float step + float smallStepFloat; ///< small float step + float largeStepFloat; ///< large float step + char label[kVstMaxLabelLen];///< parameter label + VstInt32 flags; ///< @see VstParameterFlags + VstInt32 minInteger; ///< integer minimum + VstInt32 maxInteger; ///< integer maximum + VstInt32 stepInteger; ///< integer step + VstInt32 largeStepInteger; ///< large integer step + char shortLabel[kVstMaxShortLabelLen]; ///< short label, recommended: 6 + delimiter + + // The following are for remote controller display purposes. + // Note that the kVstParameterSupportsDisplayIndex flag must be set. + // Host can scan all parameters, and find out in what order + // to display them: + + VstInt16 displayIndex; ///< index where this parameter should be displayed (starting with 0) + + // Host can also possibly display the parameter group (category), such as... + // --------------------------- + // Osc 1 + // Wave Detune Octave Mod + // --------------------------- + // ...if the plug-in supports it (flag #kVstParameterSupportsDisplayCategory) + + VstInt16 category; ///< 0: no category, else group index + 1 + VstInt16 numParametersInCategory; ///< number of parameters in category + VstInt16 reserved; ///< zero + char categoryLabel[kVstMaxCategLabelLen]; ///< category label, e.g. "Osc 1" + + char future[16]; ///< reserved for future use +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Flags used in #VstParameterProperties. */ +//------------------------------------------------------------------------------------------------------- +enum VstParameterFlags +{ +//------------------------------------------------------------------------------------------------------- + kVstParameterIsSwitch = 1 << 0, ///< parameter is a switch (on/off) + kVstParameterUsesIntegerMinMax = 1 << 1, ///< minInteger, maxInteger valid + kVstParameterUsesFloatStep = 1 << 2, ///< stepFloat, smallStepFloat, largeStepFloat valid + kVstParameterUsesIntStep = 1 << 3, ///< stepInteger, largeStepInteger valid + kVstParameterSupportsDisplayIndex = 1 << 4, ///< displayIndex valid + kVstParameterSupportsDisplayCategory = 1 << 5, ///< category, etc. valid + kVstParameterCanRamp = 1 << 6 ///< set if parameter value can ramp up/down +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Pin Properties used in #effGetInputProperties and #effGetOutputProperties. */ +//------------------------------------------------------------------------------------------------------- +struct VstPinProperties +{ +//------------------------------------------------------------------------------------------------------- + char label[kVstMaxLabelLen]; ///< pin name + VstInt32 flags; ///< @see VstPinPropertiesFlags + VstInt32 arrangementType; ///< @see VstSpeakerArrangementType + char shortLabel[kVstMaxShortLabelLen]; ///< short name (recommended: 6 + delimiter) + + char future[48]; ///< reserved for future use +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Flags used in #VstPinProperties. */ +//------------------------------------------------------------------------------------------------------- +enum VstPinPropertiesFlags +{ +//------------------------------------------------------------------------------------------------------- + kVstPinIsActive = 1 << 0, ///< pin is active, ignored by Host + kVstPinIsStereo = 1 << 1, ///< pin is first of a stereo pair + kVstPinUseSpeaker = 1 << 2 ///< #VstPinProperties::arrangementType is valid and can be used to get the wanted arrangement +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Plug-in Categories. */ +//------------------------------------------------------------------------------------------------------- +enum VstPlugCategory +{ +//------------------------------------------------------------------------------------------------------- + kPlugCategUnknown = 0, ///< Unknown, category not implemented + kPlugCategEffect, ///< Simple Effect + kPlugCategSynth, ///< VST Instrument (Synths, samplers,...) + kPlugCategAnalysis, ///< Scope, Tuner, ... + kPlugCategMastering, ///< Dynamics, ... + kPlugCategSpacializer, ///< Panners, ... + kPlugCategRoomFx, ///< Delays and Reverbs + kPlugSurroundFx, ///< Dedicated surround processor + kPlugCategRestoration, ///< Denoiser, ... + kPlugCategOfflineProcess, ///< Offline Process + kPlugCategShell, ///< Plug-in is container of other plug-ins @see effShellGetNextPlugin + kPlugCategGenerator, ///< ToneGenerator, ... + + kPlugCategMaxCount ///< Marker to count the categories +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +// MIDI Programs +//------------------------------------------------------------------------------------------------------- +//------------------------------------------------------------------------------------------------------- +/** MIDI Program Description. */ +//------------------------------------------------------------------------------------------------------- +struct MidiProgramName +{ +//------------------------------------------------------------------------------------------------------- + VstInt32 thisProgramIndex; ///< 0 or greater: fill struct for this program index + char name[kVstMaxNameLen]; ///< program name + char midiProgram; ///< -1:off, 0-127 + char midiBankMsb; ///< -1:off, 0-127 + char midiBankLsb; ///< -1:off, 0-127 + char reserved; ///< zero + VstInt32 parentCategoryIndex; ///< -1:no parent category + VstInt32 flags; ///< omni etc. @see VstMidiProgramNameFlags +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Flags used in MidiProgramName. */ +//------------------------------------------------------------------------------------------------------- +enum VstMidiProgramNameFlags +{ +//------------------------------------------------------------------------------------------------------- + kMidiIsOmni = 1 ///< default is multi. for omni mode, channel 0 is used for inquiries and program changes +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** MIDI Program Category. */ +//------------------------------------------------------------------------------------------------------- +struct MidiProgramCategory +{ +//------------------------------------------------------------------------------------------------------- + VstInt32 thisCategoryIndex; ///< 0 or greater: fill struct for this category index. + char name[kVstMaxNameLen]; ///< name + VstInt32 parentCategoryIndex; ///< -1:no parent category + VstInt32 flags; ///< reserved, none defined yet, zero. +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** MIDI Key Description. */ +//------------------------------------------------------------------------------------------------------- +struct MidiKeyName +{ +//------------------------------------------------------------------------------------------------------- + VstInt32 thisProgramIndex; ///< 0 or greater: fill struct for this program index. + VstInt32 thisKeyNumber; ///< 0 - 127. fill struct for this key number. + char keyName[kVstMaxNameLen]; ///< key name, empty means regular key names + VstInt32 reserved; ///< zero + VstInt32 flags; ///< reserved, none defined yet, zero. +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +// Surround Setup +//------------------------------------------------------------------------------------------------------- +//------------------------------------------------------------------------------------------------------- +/** Speaker Properties. + The origin for azimuth is right (as by math conventions dealing with radians). + The elevation origin is also right, visualizing a rotation of a circle across the + -pi/pi axis of the horizontal circle. Thus, an elevation of -pi/2 corresponds + to bottom, and a speaker standing on the left, and 'beaming' upwards would have + an azimuth of -pi, and an elevation of pi/2. + For user interface representation, grads are more likely to be used, and the + origins will obviously 'shift' accordingly. */ +//------------------------------------------------------------------------------------------------------- +struct VstSpeakerProperties +{ +//------------------------------------------------------------------------------------------------------- + float azimuth; ///< unit: rad, range: -PI...PI, exception: 10.f for LFE channel + float elevation; ///< unit: rad, range: -PI/2...PI/2, exception: 10.f for LFE channel + float radius; ///< unit: meter, exception: 0.f for LFE channel + float reserved; ///< zero (reserved for future use) + char name[kVstMaxNameLen]; ///< for new setups, new names should be given (L/R/C... won't do) + VstInt32 type; ///< @see VstSpeakerType + + char future[28]; ///< reserved for future use +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Speaker Arrangement. */ +//------------------------------------------------------------------------------------------------------- +struct VstSpeakerArrangement +{ +//------------------------------------------------------------------------------------------------------- + VstInt32 type; ///< e.g. #kSpeakerArr51 for 5.1 @see VstSpeakerArrangementType + VstInt32 numChannels; ///< number of channels in this speaker arrangement + VstSpeakerProperties speakers[8]; ///< variable sized speaker array +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Speaker Types. */ +//------------------------------------------------------------------------------------------------------- +enum VstSpeakerType +{ +//------------------------------------------------------------------------------------------------------- + kSpeakerUndefined = 0x7fffffff, ///< Undefined + kSpeakerM = 0, ///< Mono (M) + kSpeakerL, ///< Left (L) + kSpeakerR, ///< Right (R) + kSpeakerC, ///< Center (C) + kSpeakerLfe, ///< Subbass (Lfe) + kSpeakerLs, ///< Left Surround (Ls) + kSpeakerRs, ///< Right Surround (Rs) + kSpeakerLc, ///< Left of Center (Lc) + kSpeakerRc, ///< Right of Center (Rc) + kSpeakerS, ///< Surround (S) + kSpeakerCs = kSpeakerS, ///< Center of Surround (Cs) = Surround (S) + kSpeakerSl, ///< Side Left (Sl) + kSpeakerSr, ///< Side Right (Sr) + kSpeakerTm, ///< Top Middle (Tm) + kSpeakerTfl, ///< Top Front Left (Tfl) + kSpeakerTfc, ///< Top Front Center (Tfc) + kSpeakerTfr, ///< Top Front Right (Tfr) + kSpeakerTrl, ///< Top Rear Left (Trl) + kSpeakerTrc, ///< Top Rear Center (Trc) + kSpeakerTrr, ///< Top Rear Right (Trr) + kSpeakerLfe2 ///< Subbass 2 (Lfe2) +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** User-defined speaker types, to be extended in the negative range. + Will be handled as their corresponding speaker types with abs values: + e.g abs(#kSpeakerU1) == #kSpeakerL, abs(#kSpeakerU2) == #kSpeakerR) */ +//------------------------------------------------------------------------------------------------------- +enum VstUserSpeakerType +{ +//------------------------------------------------------------------------------------------------------- + kSpeakerU32 = -32, + kSpeakerU31, + kSpeakerU30, + kSpeakerU29, + kSpeakerU28, + kSpeakerU27, + kSpeakerU26, + kSpeakerU25, + kSpeakerU24, + kSpeakerU23, + kSpeakerU22, + kSpeakerU21, + kSpeakerU20, ///< == #kSpeakerLfe2 + kSpeakerU19, ///< == #kSpeakerTrr + kSpeakerU18, ///< == #kSpeakerTrc + kSpeakerU17, ///< == #kSpeakerTrl + kSpeakerU16, ///< == #kSpeakerTfr + kSpeakerU15, ///< == #kSpeakerTfc + kSpeakerU14, ///< == #kSpeakerTfl + kSpeakerU13, ///< == #kSpeakerTm + kSpeakerU12, ///< == #kSpeakerSr + kSpeakerU11, ///< == #kSpeakerSl + kSpeakerU10, ///< == #kSpeakerCs + kSpeakerU9, ///< == #kSpeakerS + kSpeakerU8, ///< == #kSpeakerRc + kSpeakerU7, ///< == #kSpeakerLc + kSpeakerU6, ///< == #kSpeakerRs + kSpeakerU5, ///< == #kSpeakerLs + kSpeakerU4, ///< == #kSpeakerLfe + kSpeakerU3, ///< == #kSpeakerC + kSpeakerU2, ///< == #kSpeakerR + kSpeakerU1 ///< == #kSpeakerL +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Speaker Arrangement Types*/ +//------------------------------------------------------------------------------------------------------- +enum VstSpeakerArrangementType +{ +//------------------------------------------------------------------------------------------------------- + kSpeakerArrUserDefined = -2,///< user defined + kSpeakerArrEmpty = -1, ///< empty arrangement + kSpeakerArrMono = 0, ///< M + kSpeakerArrStereo, ///< L R + kSpeakerArrStereoSurround, ///< Ls Rs + kSpeakerArrStereoCenter, ///< Lc Rc + kSpeakerArrStereoSide, ///< Sl Sr + kSpeakerArrStereoCLfe, ///< C Lfe + kSpeakerArr30Cine, ///< L R C + kSpeakerArr30Music, ///< L R S + kSpeakerArr31Cine, ///< L R C Lfe + kSpeakerArr31Music, ///< L R Lfe S + kSpeakerArr40Cine, ///< L R C S (LCRS) + kSpeakerArr40Music, ///< L R Ls Rs (Quadro) + kSpeakerArr41Cine, ///< L R C Lfe S (LCRS+Lfe) + kSpeakerArr41Music, ///< L R Lfe Ls Rs (Quadro+Lfe) + kSpeakerArr50, ///< L R C Ls Rs + kSpeakerArr51, ///< L R C Lfe Ls Rs + kSpeakerArr60Cine, ///< L R C Ls Rs Cs + kSpeakerArr60Music, ///< L R Ls Rs Sl Sr + kSpeakerArr61Cine, ///< L R C Lfe Ls Rs Cs + kSpeakerArr61Music, ///< L R Lfe Ls Rs Sl Sr + kSpeakerArr70Cine, ///< L R C Ls Rs Lc Rc + kSpeakerArr70Music, ///< L R C Ls Rs Sl Sr + kSpeakerArr71Cine, ///< L R C Lfe Ls Rs Lc Rc + kSpeakerArr71Music, ///< L R C Lfe Ls Rs Sl Sr + kSpeakerArr80Cine, ///< L R C Ls Rs Lc Rc Cs + kSpeakerArr80Music, ///< L R C Ls Rs Cs Sl Sr + kSpeakerArr81Cine, ///< L R C Lfe Ls Rs Lc Rc Cs + kSpeakerArr81Music, ///< L R C Lfe Ls Rs Cs Sl Sr + kSpeakerArr102, ///< L R C Lfe Ls Rs Tfl Tfc Tfr Trl Trr Lfe2 + kNumSpeakerArr +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +// Offline Processing +//------------------------------------------------------------------------------------------------------- +//------------------------------------------------------------------------------------------------------- +/** Offline Task Description. */ +//------------------------------------------------------------------------------------------------------- +struct VstOfflineTask +{ +//------------------------------------------------------------------------------------------------------- + char processName[96]; ///< set by plug-in + + // audio access + double readPosition; ///< set by plug-in/Host + double writePosition; ///< set by plug-in/Host + VstInt32 readCount; ///< set by plug-in/Host + VstInt32 writeCount; ///< set by plug-in + VstInt32 sizeInputBuffer; ///< set by Host + VstInt32 sizeOutputBuffer; ///< set by Host + void* inputBuffer; ///< set by Host + void* outputBuffer; ///< set by Host + double positionToProcessFrom; ///< set by Host + double numFramesToProcess; ///< set by Host + double maxFramesToWrite; ///< set by plug-in + + // other data access + void* extraBuffer; ///< set by plug-in + VstInt32 value; ///< set by Host or plug-in + VstInt32 index; ///< set by Host or plug-in + + // file attributes + double numFramesInSourceFile; ///< set by Host + double sourceSampleRate; ///< set by Host or plug-in + double destinationSampleRate; ///< set by Host or plug-in + VstInt32 numSourceChannels; ///< set by Host or plug-in + VstInt32 numDestinationChannels;///< set by Host or plug-in + VstInt32 sourceFormat; ///< set by Host + VstInt32 destinationFormat; ///< set by plug-in + char outputText[512]; ///< set by plug-in or Host + + // progress notification + double progress; ///< set by plug-in + VstInt32 progressMode; ///< Reserved for future use + char progressText[100]; ///< set by plug-in + + VstInt32 flags; ///< set by Host and plug-in; see enum #VstOfflineTaskFlags + VstInt32 returnValue; ///< Reserved for future use + void* hostOwned; ///< set by Host + void* plugOwned; ///< set by plug-in + + char future[1024]; ///< Reserved for future use +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Flags used in #VstOfflineTask. */ +//------------------------------------------------------------------------------------------------------- +enum VstOfflineTaskFlags +{ +//------------------------------------------------------------------------------------------------------- + kVstOfflineUnvalidParameter = 1 << 0, ///< set by Host + kVstOfflineNewFile = 1 << 1, ///< set by Host + + kVstOfflinePlugError = 1 << 10, ///< set by plug-in + kVstOfflineInterleavedAudio = 1 << 11, ///< set by plug-in + kVstOfflineTempOutputFile = 1 << 12, ///< set by plug-in + kVstOfflineFloatOutputFile = 1 << 13, ///< set by plug-in + kVstOfflineRandomWrite = 1 << 14, ///< set by plug-in + kVstOfflineStretch = 1 << 15, ///< set by plug-in + kVstOfflineNoThread = 1 << 16 ///< set by plug-in +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Option passed to #offlineRead/#offlineWrite. */ +//------------------------------------------------------------------------------------------------------- +enum VstOfflineOption +{ +//------------------------------------------------------------------------------------------------------- + kVstOfflineAudio, ///< reading/writing audio samples + kVstOfflinePeaks, ///< reading graphic representation + kVstOfflineParameter, ///< reading/writing parameters + kVstOfflineMarker, ///< reading/writing marker + kVstOfflineCursor, ///< reading/moving edit cursor + kVstOfflineSelection, ///< reading/changing selection + kVstOfflineQueryFiles ///< to request the Host to call asynchronously #offlineNotify +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Structure passed to #offlineNotify and #offlineStart */ +//------------------------------------------------------------------------------------------------------- +struct VstAudioFile +{ +//------------------------------------------------------------------------------------------------------- + VstInt32 flags; ///< see enum #VstAudioFileFlags + void* hostOwned; ///< any data private to Host + void* plugOwned; ///< any data private to plug-in + char name[kVstMaxFileNameLen]; ///< file title + VstInt32 uniqueId; ///< uniquely identify a file during a session + double sampleRate; ///< file sample rate + VstInt32 numChannels; ///< number of channels (1 for mono, 2 for stereo...) + double numFrames; ///< number of frames in the audio file + VstInt32 format; ///< Reserved for future use + double editCursorPosition; ///< -1 if no such cursor + double selectionStart; ///< frame index of first selected frame, or -1 + double selectionSize; ///< number of frames in selection, or 0 + VstInt32 selectedChannelsMask; ///< 1 bit per channel + VstInt32 numMarkers; ///< number of markers in the file + VstInt32 timeRulerUnit; ///< see doc for possible values + double timeRulerOffset; ///< offset in time ruler (positive or negative) + double tempo; ///< as BPM (Beats Per Minute) + VstInt32 timeSigNumerator; ///< time signature numerator + VstInt32 timeSigDenominator; ///< time signature denominator + VstInt32 ticksPerBlackNote; ///< resolution + VstInt32 smpteFrameRate; ///< SMPTE rate (set as in #VstTimeInfo) + + char future[64]; ///< Reserved for future use +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Flags used in #VstAudioFile. */ +//------------------------------------------------------------------------------------------------------- +enum VstAudioFileFlags +{ +//------------------------------------------------------------------------------------------------------- + kVstOfflineReadOnly = 1 << 0, ///< set by Host (in call #offlineNotify) + kVstOfflineNoRateConversion = 1 << 1, ///< set by Host (in call #offlineNotify) + kVstOfflineNoChannelChange = 1 << 2, ///< set by Host (in call #offlineNotify) + + kVstOfflineCanProcessSelection = 1 << 10, ///< set by plug-in (in call #offlineStart) + kVstOfflineNoCrossfade = 1 << 11, ///< set by plug-in (in call #offlineStart) + kVstOfflineWantRead = 1 << 12, ///< set by plug-in (in call #offlineStart) + kVstOfflineWantWrite = 1 << 13, ///< set by plug-in (in call #offlineStart) + kVstOfflineWantWriteMarker = 1 << 14, ///< set by plug-in (in call #offlineStart) + kVstOfflineWantMoveCursor = 1 << 15, ///< set by plug-in (in call #offlineStart) + kVstOfflineWantSelect = 1 << 16 ///< set by plug-in (in call #offlineStart) +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Audio file marker. */ +//------------------------------------------------------------------------------------------------------- +struct VstAudioFileMarker +{ +//------------------------------------------------------------------------------------------------------- + double position; ///< marker position + char name[32]; ///< marker name + VstInt32 type; ///< marker type + VstInt32 id; ///< marker identifier + VstInt32 reserved; ///< reserved for future use +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +// Others +//------------------------------------------------------------------------------------------------------- + +//------------------------------------------------------------------------------------------------------- +/** \deprecated Structure used for #openWindow and #closeWindow (deprecated in VST 2.4). */ +//------------------------------------------------------------------------------------------------------- +struct DECLARE_VST_DEPRECATED (VstWindow) +{ +//------------------------------------------------------------------------------------------------------- + char title[128]; + VstInt16 xPos; + VstInt16 yPos; + VstInt16 width; + VstInt16 height; + VstInt32 style; + void* parent; + void* userHandle; + void* winHandle; + + char future[104]; +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Structure used for keyUp/keyDown. */ +//------------------------------------------------------------------------------------------------------- +struct VstKeyCode +{ +//------------------------------------------------------------------------------------------------------- + VstInt32 character; ///< ASCII character + unsigned char virt; ///< @see VstVirtualKey + unsigned char modifier; ///< @see VstModifierKey +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Platform-independent definition of Virtual Keys (used in #VstKeyCode). */ +//------------------------------------------------------------------------------------------------------- +enum VstVirtualKey +{ +//------------------------------------------------------------------------------------------------------- + VKEY_BACK = 1, + VKEY_TAB, + VKEY_CLEAR, + VKEY_RETURN, + VKEY_PAUSE, + VKEY_ESCAPE, + VKEY_SPACE, + VKEY_NEXT, + VKEY_END, + VKEY_HOME, + VKEY_LEFT, + VKEY_UP, + VKEY_RIGHT, + VKEY_DOWN, + VKEY_PAGEUP, + VKEY_PAGEDOWN, + VKEY_SELECT, + VKEY_PRINT, + VKEY_ENTER, + VKEY_SNAPSHOT, + VKEY_INSERT, + VKEY_DELETE, + VKEY_HELP, + VKEY_NUMPAD0, + VKEY_NUMPAD1, + VKEY_NUMPAD2, + VKEY_NUMPAD3, + VKEY_NUMPAD4, + VKEY_NUMPAD5, + VKEY_NUMPAD6, + VKEY_NUMPAD7, + VKEY_NUMPAD8, + VKEY_NUMPAD9, + VKEY_MULTIPLY, + VKEY_ADD, + VKEY_SEPARATOR, + VKEY_SUBTRACT, + VKEY_DECIMAL, + VKEY_DIVIDE, + VKEY_F1, + VKEY_F2, + VKEY_F3, + VKEY_F4, + VKEY_F5, + VKEY_F6, + VKEY_F7, + VKEY_F8, + VKEY_F9, + VKEY_F10, + VKEY_F11, + VKEY_F12, + VKEY_NUMLOCK, + VKEY_SCROLL, + VKEY_SHIFT, + VKEY_CONTROL, + VKEY_ALT, + VKEY_EQUALS +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Modifier flags used in #VstKeyCode. */ +//------------------------------------------------------------------------------------------------------- +enum VstModifierKey +{ +//------------------------------------------------------------------------------------------------------- + MODIFIER_SHIFT = 1<<0, ///< Shift + MODIFIER_ALTERNATE = 1<<1, ///< Alt + MODIFIER_COMMAND = 1<<2, ///< Control on Mac + MODIFIER_CONTROL = 1<<3 ///< Ctrl on PC, Apple on Mac +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** File filter used in #VstFileSelect. */ +//------------------------------------------------------------------------------------------------------- +struct VstFileType +{ +//------------------------------------------------------------------------------------------------------- + char name[128]; ///< display name + char macType[8]; ///< MacOS type + char dosType[8]; ///< Windows file extension + char unixType[8]; ///< Unix file extension + char mimeType1[128]; ///< MIME type + char mimeType2[128]; ///< additional MIME type + + VstFileType (const char* _name = 0, const char* _macType = 0, const char* _dosType = 0, + const char* _unixType = 0, const char* _mimeType1 = 0, const char* _mimeType2 = 0) + { + vst_strncpy (name, _name ? _name : "", 127); + vst_strncpy (macType, _macType ? _macType : "", 7); + vst_strncpy (dosType, _dosType ? _dosType : "", 7); + vst_strncpy (unixType, _unixType ? _unixType : "", 7); + vst_strncpy (mimeType1, _mimeType1 ? _mimeType1 : "", 127); + vst_strncpy (mimeType2, _mimeType2 ? _mimeType2 : "", 127); + } +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** File Selector Description used in #audioMasterOpenFileSelector. */ +//------------------------------------------------------------------------------------------------------- +struct VstFileSelect +{ +//------------------------------------------------------------------------------------------------------- + VstInt32 command; ///< @see VstFileSelectCommand + VstInt32 type; ///< @see VstFileSelectType + VstInt32 macCreator; ///< optional: 0 = no creator + VstInt32 nbFileTypes; ///< number of fileTypes + VstFileType* fileTypes; ///< list of fileTypes @see VstFileType + char title[1024]; ///< text to display in file selector's title + char* initialPath; ///< initial path + char* returnPath; ///< use with #kVstFileLoad and #kVstDirectorySelect. null: Host allocates memory, plug-in must call #closeOpenFileSelector! + VstInt32 sizeReturnPath; ///< size of allocated memory for return paths + char** returnMultiplePaths; ///< use with kVstMultipleFilesLoad. Host allocates memory, plug-in must call #closeOpenFileSelector! + VstInt32 nbReturnPath; ///< number of selected paths + VstIntPtr reserved; ///< reserved for Host application + + char future[116]; ///< reserved for future use +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Command constants used in #VstFileSelect structure. */ +//------------------------------------------------------------------------------------------------------- +enum VstFileSelectCommand +{ +//------------------------------------------------------------------------------------------------------- + kVstFileLoad = 0, ///< for loading a file + kVstFileSave, ///< for saving a file + kVstMultipleFilesLoad, ///< for loading multiple files + kVstDirectorySelect ///< for selecting a directory/folder +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Types used in #VstFileSelect structure. */ +//------------------------------------------------------------------------------------------------------- +enum VstFileSelectType +{ +//------------------------------------------------------------------------------------------------------- + kVstFileType = 0 ///< regular file selector +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Structure used for #effBeginLoadBank/#effBeginLoadProgram. */ +//------------------------------------------------------------------------------------------------------- +struct VstPatchChunkInfo +{ +//------------------------------------------------------------------------------------------------------- + VstInt32 version; ///< Format Version (should be 1) + VstInt32 pluginUniqueID; ///< UniqueID of the plug-in + VstInt32 pluginVersion; ///< Plug-in Version + VstInt32 numElements; ///< Number of Programs (Bank) or Parameters (Program) + + char future[48]; ///< Reserved for future use +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** PanLaw Type. */ +//------------------------------------------------------------------------------------------------------- +enum VstPanLawType +{ +//------------------------------------------------------------------------------------------------------- + kLinearPanLaw = 0, ///< L = pan * M; R = (1 - pan) * M; + kEqualPowerPanLaw ///< L = pow (pan, 0.5) * M; R = pow ((1 - pan), 0.5) * M; +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Process Levels returned by #audioMasterGetCurrentProcessLevel. */ +//------------------------------------------------------------------------------------------------------- +enum VstProcessLevels +{ +//------------------------------------------------------------------------------------------------------- + kVstProcessLevelUnknown = 0, ///< not supported by Host + kVstProcessLevelUser, ///< 1: currently in user thread (GUI) + kVstProcessLevelRealtime, ///< 2: currently in audio thread (where process is called) + kVstProcessLevelPrefetch, ///< 3: currently in 'sequencer' thread (MIDI, timer etc) + kVstProcessLevelOffline ///< 4: currently offline processing and thus in user thread +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Automation States returned by #audioMasterGetAutomationState. */ +//------------------------------------------------------------------------------------------------------- +enum VstAutomationStates +{ +//------------------------------------------------------------------------------------------------------- + kVstAutomationUnsupported = 0, ///< not supported by Host + kVstAutomationOff, ///< off + kVstAutomationRead, ///< read + kVstAutomationWrite, ///< write + kVstAutomationReadWrite ///< read and write +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +#if TARGET_API_MAC_CARBON + #pragma options align=reset +#elif defined(WIN32) || defined(__FLAT__) || defined(__GNUC__) + #pragma pack(pop) +#elif defined __BORLANDC__ + #pragma -a- +#endif +//------------------------------------------------------------------------------------------------------- + +#endif //__aeffectx__ diff --git a/pluginterfaces/vst2.x/vstfxstore.h b/pluginterfaces/vst2.x/vstfxstore.h new file mode 100644 index 0000000..c642777 --- /dev/null +++ b/pluginterfaces/vst2.x/vstfxstore.h @@ -0,0 +1,106 @@ +//------------------------------------------------------------------------------------------------------- +// VST Plug-Ins SDK +// Version 2.4 $Date: 2006/02/09 11:05:51 $ +// +// Category : VST 2.x Interfaces +// Filename : vstfxstore.h +// Created by : Steinberg Media Technologies +// Description : Definition of Program (fxp) and Bank (fxb) structures +// +// © 2006, Steinberg Media Technologies, All Rights Reserved +//------------------------------------------------------------------------------------------------------- + +#ifndef __vstfxstore__ +#define __vstfxstore__ + +#ifndef __aeffect__ +#include "aeffect.h" +#endif + +//------------------------------------------------------------------------------------------------------- +/** Root chunk identifier for Programs (fxp) and Banks (fxb). */ +#define cMagic 'CcnK' + +/** Regular Program (fxp) identifier. */ +#define fMagic 'FxCk' + +/** Regular Bank (fxb) identifier. */ +#define bankMagic 'FxBk' + +/** Program (fxp) identifier for opaque chunk data. */ +#define chunkPresetMagic 'FPCh' + +/** Bank (fxb) identifier for opaque chunk data. */ +#define chunkBankMagic 'FBCh' + +/* + Note: The C data structures below are for illustration only. You can not read/write them directly. + The byte order on disk of fxp and fxb files is Big Endian. You have to swap integer + and floating-point values on Little Endian platforms (Windows, MacIntel)! +*/ + +//------------------------------------------------------------------------------------------------------- +/** Program (fxp) structure. */ +//------------------------------------------------------------------------------------------------------- +struct fxProgram +{ +//------------------------------------------------------------------------------------------------------- + VstInt32 chunkMagic; ///< 'CcnK' + VstInt32 byteSize; ///< size of this chunk, excl. magic + byteSize + + VstInt32 fxMagic; ///< 'FxCk' (regular) or 'FPCh' (opaque chunk) + VstInt32 version; ///< format version (currently 1) + VstInt32 fxID; ///< fx unique ID + VstInt32 fxVersion; ///< fx version + + VstInt32 numParams; ///< number of parameters + char prgName[28]; ///< program name (null-terminated ASCII string) + + union + { + float params[1]; ///< variable sized array with parameter values + struct + { + VstInt32 size; ///< size of program data + char chunk[1]; ///< variable sized array with opaque program data + } data; ///< program chunk data + } content; ///< program content depending on fxMagic +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +/** Bank (fxb) structure. */ +//------------------------------------------------------------------------------------------------------- +struct fxBank +{ +//------------------------------------------------------------------------------------------------------- + VstInt32 chunkMagic; ///< 'CcnK' + VstInt32 byteSize; ///< size of this chunk, excl. magic + byteSize + + VstInt32 fxMagic; ///< 'FxBk' (regular) or 'FBCh' (opaque chunk) + VstInt32 version; ///< format version (1 or 2) + VstInt32 fxID; ///< fx unique ID + VstInt32 fxVersion; ///< fx version + + VstInt32 numPrograms; ///< number of programs + +#if VST_2_4_EXTENSIONS + VstInt32 currentProgram; ///< version 2: current program number + char future[124]; ///< reserved, should be zero +#else + char future[128]; ///< reserved, should be zero +#endif + + union + { + fxProgram programs[1]; ///< variable number of programs + struct + { + VstInt32 size; ///< size of bank data + char chunk[1]; ///< variable sized array with opaque bank data + } data; ///< bank chunk data + } content; ///< bank content depending on fxMagic +//------------------------------------------------------------------------------------------------------- +}; + +#endif // __vstfxstore__ diff --git a/public.sdk/samples/vst2.x/adelay/adelay.cpp b/public.sdk/samples/vst2.x/adelay/adelay.cpp new file mode 100644 index 0000000..3e16bad --- /dev/null +++ b/public.sdk/samples/vst2.x/adelay/adelay.cpp @@ -0,0 +1,216 @@ +//------------------------------------------------------------------------------------------------------- +// VST Plug-Ins SDK +// Version 2.4 $Date: 2006/11/13 09:08:27 $ +// +// Category : VST 2.x SDK Samples +// Filename : adelay.cpp +// Created by : Steinberg Media Technologies +// Description : Simple Delay plugin (Mono->Stereo) +// +// © 2006, Steinberg Media Technologies, All Rights Reserved +//------------------------------------------------------------------------------------------------------- + +#include +#include + +#ifndef __adelay__ +#include "adelay.h" +#endif + +//----------------------------------------------------------------------------- +ADelayProgram::ADelayProgram () +{ + // default Program Values + fDelay = 0.5; + fFeedBack = 0.5; + fOut = 0.75; + + strcpy (name, "Init"); +} + +//----------------------------------------------------------------------------- +ADelay::ADelay (audioMasterCallback audioMaster) + : AudioEffectX (audioMaster, kNumPrograms, kNumParams) +{ + // init + size = 44100; + cursor = 0; + delay = 0; + buffer = new float[size]; + + programs = new ADelayProgram[numPrograms]; + fDelay = fFeedBack = fOut = 0; + + if (programs) + setProgram (0); + + setNumInputs (1); // mono input + setNumOutputs (2); // stereo output + + setUniqueID ('ADly'); // this should be unique, use the Steinberg web page for plugin Id registration + + resume (); // flush buffer +} + +//------------------------------------------------------------------------ +ADelay::~ADelay () +{ + if (buffer) + delete[] buffer; + if (programs) + delete[] programs; +} + +//------------------------------------------------------------------------ +void ADelay::setProgram (VstInt32 program) +{ + ADelayProgram* ap = &programs[program]; + + curProgram = program; + setParameter (kDelay, ap->fDelay); + setParameter (kFeedBack, ap->fFeedBack); + setParameter (kOut, ap->fOut); +} + +//------------------------------------------------------------------------ +void ADelay::setDelay (float fdelay) +{ + fDelay = fdelay; + programs[curProgram].fDelay = fdelay; + cursor = 0; + delay = (long)(fdelay * (float)(size - 1)); +} + +//------------------------------------------------------------------------ +void ADelay::setProgramName (char *name) +{ + strcpy (programs[curProgram].name, name); +} + +//------------------------------------------------------------------------ +void ADelay::getProgramName (char *name) +{ + if (!strcmp (programs[curProgram].name, "Init")) + sprintf (name, "%s %d", programs[curProgram].name, curProgram + 1); + else + strcpy (name, programs[curProgram].name); +} + +//----------------------------------------------------------------------------------------- +bool ADelay::getProgramNameIndexed (VstInt32 category, VstInt32 index, char* text) +{ + if (index < kNumPrograms) + { + strcpy (text, programs[index].name); + return true; + } + return false; +} + +//------------------------------------------------------------------------ +void ADelay::resume () +{ + memset (buffer, 0, size * sizeof (float)); + AudioEffectX::resume (); +} + +//------------------------------------------------------------------------ +void ADelay::setParameter (VstInt32 index, float value) +{ + ADelayProgram* ap = &programs[curProgram]; + + switch (index) + { + case kDelay : setDelay (value); break; + case kFeedBack : fFeedBack = ap->fFeedBack = value; break; + case kOut : fOut = ap->fOut = value; break; + } +} + +//------------------------------------------------------------------------ +float ADelay::getParameter (VstInt32 index) +{ + float v = 0; + + switch (index) + { + case kDelay : v = fDelay; break; + case kFeedBack : v = fFeedBack; break; + case kOut : v = fOut; break; + } + return v; +} + +//------------------------------------------------------------------------ +void ADelay::getParameterName (VstInt32 index, char *label) +{ + switch (index) + { + case kDelay : strcpy (label, "Delay"); break; + case kFeedBack : strcpy (label, "FeedBack"); break; + case kOut : strcpy (label, "Volume"); break; + } +} + +//------------------------------------------------------------------------ +void ADelay::getParameterDisplay (VstInt32 index, char *text) +{ + switch (index) + { + case kDelay : int2string (delay, text, kVstMaxParamStrLen); break; + case kFeedBack : float2string (fFeedBack, text, kVstMaxParamStrLen); break; + case kOut : dB2string (fOut, text, kVstMaxParamStrLen); break; + } +} + +//------------------------------------------------------------------------ +void ADelay::getParameterLabel (VstInt32 index, char *label) +{ + switch (index) + { + case kDelay : strcpy (label, "samples"); break; + case kFeedBack : strcpy (label, "amount"); break; + case kOut : strcpy (label, "dB"); break; + } +} + +//------------------------------------------------------------------------ +bool ADelay::getEffectName (char* name) +{ + strcpy (name, "Delay"); + return true; +} + +//------------------------------------------------------------------------ +bool ADelay::getProductString (char* text) +{ + strcpy (text, "Delay"); + return true; +} + +//------------------------------------------------------------------------ +bool ADelay::getVendorString (char* text) +{ + strcpy (text, "Steinberg Media Technologies"); + return true; +} + +//--------------------------------------------------------------------------- +void ADelay::processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames) +{ + float* in = inputs[0]; + float* out1 = outputs[0]; + float* out2 = outputs[1]; + + while (--sampleFrames >= 0) + { + float x = *in++; + float y = buffer[cursor]; + buffer[cursor++] = x + y * fFeedBack; + if (cursor >= delay) + cursor = 0; + *out1++ = y; + if (out2) + *out2++ = y; + } +} diff --git a/public.sdk/samples/vst2.x/adelay/adelay.h b/public.sdk/samples/vst2.x/adelay/adelay.h new file mode 100644 index 0000000..1b21c96 --- /dev/null +++ b/public.sdk/samples/vst2.x/adelay/adelay.h @@ -0,0 +1,93 @@ +//------------------------------------------------------------------------------------------------------- +// VST Plug-Ins SDK +// Version 2.4 $Date: 2006/11/13 09:08:27 $ +// +// Category : VST 2.x SDK Samples +// Filename : adelay.h +// Created by : Steinberg Media Technologies +// Description : Simple Delay plugin (Mono->Stereo) +// +// © 2006, Steinberg Media Technologies, All Rights Reserved +//------------------------------------------------------------------------------------------------------- + +#ifndef __adelay__ +#define __adelay__ + +#include "public.sdk/source/vst2.x/audioeffectx.h" + +enum +{ + // Global + kNumPrograms = 16, + + // Parameters Tags + kDelay = 0, + kFeedBack, + kOut, + + kNumParams +}; + +class ADelay; + +//------------------------------------------------------------------------ +class ADelayProgram +{ +friend class ADelay; +public: + ADelayProgram (); + ~ADelayProgram () {} + +private: + float fDelay; + float fFeedBack; + float fOut; + char name[24]; +}; + +//------------------------------------------------------------------------ +class ADelay : public AudioEffectX +{ +public: + ADelay (audioMasterCallback audioMaster); + ~ADelay (); + + //---from AudioEffect----------------------- + virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames); + + virtual void setProgram (VstInt32 program); + virtual void setProgramName (char* name); + virtual void getProgramName (char* name); + virtual bool getProgramNameIndexed (VstInt32 category, VstInt32 index, char* text); + + virtual void setParameter (VstInt32 index, float value); + virtual float getParameter (VstInt32 index); + virtual void getParameterLabel (VstInt32 index, char* label); + virtual void getParameterDisplay (VstInt32 index, char* text); + virtual void getParameterName (VstInt32 index, char* text); + + virtual void resume (); + + virtual bool getEffectName (char* name); + virtual bool getVendorString (char* text); + virtual bool getProductString (char* text); + virtual VstInt32 getVendorVersion () { return 1000; } + + virtual VstPlugCategory getPlugCategory () { return kPlugCategEffect; } + +protected: + void setDelay (float delay); + + ADelayProgram* programs; + + float* buffer; + float fDelay; + float fFeedBack; + float fOut; + + long delay; + long size; + long cursor; +}; + +#endif diff --git a/public.sdk/samples/vst2.x/adelay/adelaymain.cpp b/public.sdk/samples/vst2.x/adelay/adelaymain.cpp new file mode 100644 index 0000000..ea9895e --- /dev/null +++ b/public.sdk/samples/vst2.x/adelay/adelaymain.cpp @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------------------------------- +// VST Plug-Ins SDK +// Version 2.4 $Date: 2006/11/13 09:08:27 $ +// +// Category : VST 2.x SDK Samples +// Filename : adelaymain.cpp +// Created by : Steinberg Media Technologies +// Description : Simple Delay plugin (Mono->Stereo) +// +// © 2006, Steinberg Media Technologies, All Rights Reserved +//------------------------------------------------------------------------------------------------------- + +#ifndef __adelay__ +#include "adelay.h" +#endif + +//------------------------------------------------------------------------------------------------------- +AudioEffect* createEffectInstance (audioMasterCallback audioMaster) +{ + return new ADelay (audioMaster); +} + diff --git a/public.sdk/samples/vst2.x/adelay/editor/resources/bmp00128.bmp b/public.sdk/samples/vst2.x/adelay/editor/resources/bmp00128.bmp new file mode 100644 index 0000000..1e3b523 Binary files /dev/null and b/public.sdk/samples/vst2.x/adelay/editor/resources/bmp00128.bmp differ diff --git a/public.sdk/samples/vst2.x/adelay/editor/resources/bmp00129.bmp b/public.sdk/samples/vst2.x/adelay/editor/resources/bmp00129.bmp new file mode 100644 index 0000000..275e4aa Binary files /dev/null and b/public.sdk/samples/vst2.x/adelay/editor/resources/bmp00129.bmp differ diff --git a/public.sdk/samples/vst2.x/adelay/editor/resources/bmp00130.bmp b/public.sdk/samples/vst2.x/adelay/editor/resources/bmp00130.bmp new file mode 100644 index 0000000..e272640 Binary files /dev/null and b/public.sdk/samples/vst2.x/adelay/editor/resources/bmp00130.bmp differ diff --git a/public.sdk/samples/vst2.x/adelay/editor/resources/surrounddelay.rc b/public.sdk/samples/vst2.x/adelay/editor/resources/surrounddelay.rc new file mode 100644 index 0000000..52ef47d --- /dev/null +++ b/public.sdk/samples/vst2.x/adelay/editor/resources/surrounddelay.rc @@ -0,0 +1,10 @@ +#define APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// +// Bitmap +// + +128 BITMAP DISCARDABLE "bmp00128.bmp" +129 BITMAP DISCARDABLE "bmp00129.bmp" +130 BITMAP DISCARDABLE "bmp00130.bmp" diff --git a/public.sdk/samples/vst2.x/adelay/editor/sdeditor.cpp b/public.sdk/samples/vst2.x/adelay/editor/sdeditor.cpp new file mode 100644 index 0000000..ac5ebfc --- /dev/null +++ b/public.sdk/samples/vst2.x/adelay/editor/sdeditor.cpp @@ -0,0 +1,235 @@ +//------------------------------------------------------------------------------------------------------- +// VST Plug-Ins SDK +// Version 2.4 $Date: 2006/11/13 09:08:28 $ +// +// Category : VST 2.x SDK Samples +// Filename : sdeditor.cpp +// Created by : Steinberg Media Technologies +// Description : Simple Surround Delay plugin with Editor using VSTGUI +// +// © 2006, Steinberg Media Technologies, All Rights Reserved +//------------------------------------------------------------------------------------------------------- + +#ifndef __sdeditor__ +#include "sdeditor.h" +#endif + +#ifndef __adelay__ +#include "../adelay.h" +#endif + +#include + +//----------------------------------------------------------------------------- +// resource id's +enum { + // bitmaps + kBackgroundId = 128, + kFaderBodyId, + kFaderHandleId, + + // positions + kFaderX = 18, + kFaderY = 10, + + kFaderInc = 18, + + kDisplayX = 10, + kDisplayY = 184, + kDisplayXWidth = 30, + kDisplayHeight = 14 +}; + +//----------------------------------------------------------------------------- +// prototype string convert float -> percent +void percentStringConvert (float value, char* string); +void percentStringConvert (float value, char* string) +{ + sprintf (string, "%d%%", (int)(100 * value + 0.5f)); +} + + +//----------------------------------------------------------------------------- +// SDEditor class implementation +//----------------------------------------------------------------------------- +SDEditor::SDEditor (AudioEffect *effect) + : AEffGUIEditor (effect) +{ + delayFader = 0; + feedbackFader = 0; + volumeFader = 0; + delayDisplay = 0; + feedbackDisplay = 0; + volumeDisplay = 0; + + // load the background bitmap + // we don't need to load all bitmaps, this could be done when open is called + hBackground = new CBitmap (kBackgroundId); + + // init the size of the plugin + rect.left = 0; + rect.top = 0; + rect.right = (short)hBackground->getWidth (); + rect.bottom = (short)hBackground->getHeight (); +} + +//----------------------------------------------------------------------------- +SDEditor::~SDEditor () +{ + // free the background bitmap + if (hBackground) + hBackground->forget (); + hBackground = 0; +} + +//----------------------------------------------------------------------------- +bool SDEditor::open (void *ptr) +{ + // !!! always call this !!! + AEffGUIEditor::open (ptr); + + //--load some bitmaps + CBitmap* hFaderBody = new CBitmap (kFaderBodyId); + CBitmap* hFaderHandle = new CBitmap (kFaderHandleId); + + //--init background frame----------------------------------------------- + // We use a local CFrame object so that calls to setParameter won't call into objects which may not exist yet. + // If all GUI objects are created we assign our class member to this one. See bottom of this method. + CRect size (0, 0, hBackground->getWidth (), hBackground->getHeight ()); + CFrame* lFrame = new CFrame (size, ptr, this); + lFrame->setBackground (hBackground); + + //--init the faders------------------------------------------------ + int minPos = kFaderY; + int maxPos = kFaderY + hFaderBody->getHeight () - hFaderHandle->getHeight () - 1; + CPoint point (0, 0); + CPoint offset (1, 0); + + // Delay + size (kFaderX, kFaderY, + kFaderX + hFaderBody->getWidth (), kFaderY + hFaderBody->getHeight ()); + delayFader = new CVerticalSlider (size, this, kDelay, minPos, maxPos, hFaderHandle, hFaderBody, point); + delayFader->setOffsetHandle (offset); + delayFader->setValue (effect->getParameter (kDelay)); + lFrame->addView (delayFader); + + // FeedBack + size.offset (kFaderInc + hFaderBody->getWidth (), 0); + feedbackFader = new CVerticalSlider (size, this, kFeedBack, minPos, maxPos, hFaderHandle, hFaderBody, point); + feedbackFader->setOffsetHandle (offset); + feedbackFader->setValue (effect->getParameter (kFeedBack)); + lFrame->addView (feedbackFader); + + // Volume + size.offset (kFaderInc + hFaderBody->getWidth (), 0); + volumeFader = new CVerticalSlider (size, this, kOut, minPos, maxPos, hFaderHandle, hFaderBody, point); + volumeFader->setOffsetHandle (offset); + volumeFader->setValue (effect->getParameter (kOut)); + volumeFader->setDefaultValue (0.75f); + lFrame->addView (volumeFader); + + //--init the display------------------------------------------------ + // Delay + size (kDisplayX, kDisplayY, + kDisplayX + kDisplayXWidth, kDisplayY + kDisplayHeight); + delayDisplay = new CParamDisplay (size, 0, kCenterText); + delayDisplay->setFont (kNormalFontSmall); + delayDisplay->setFontColor (kWhiteCColor); + delayDisplay->setBackColor (kBlackCColor); + delayDisplay->setFrameColor (kBlueCColor); + delayDisplay->setValue (effect->getParameter (kDelay)); + lFrame->addView (delayDisplay); + + // FeedBack + size.offset (kFaderInc + hFaderBody->getWidth (), 0); + feedbackDisplay = new CParamDisplay (size, 0, kCenterText); + feedbackDisplay->setFont (kNormalFontSmall); + feedbackDisplay->setFontColor (kWhiteCColor); + feedbackDisplay->setBackColor (kBlackCColor); + feedbackDisplay->setFrameColor (kBlueCColor); + feedbackDisplay->setValue (effect->getParameter (kFeedBack)); + feedbackDisplay->setStringConvert (percentStringConvert); + lFrame->addView (feedbackDisplay); + + // Volume + size.offset (kFaderInc + hFaderBody->getWidth (), 0); + volumeDisplay = new CParamDisplay (size, 0, kCenterText); + volumeDisplay->setFont (kNormalFontSmall); + volumeDisplay->setFontColor (kWhiteCColor); + volumeDisplay->setBackColor (kBlackCColor); + volumeDisplay->setFrameColor (kBlueCColor); + volumeDisplay->setValue (effect->getParameter (kOut)); + volumeDisplay->setStringConvert (percentStringConvert); + lFrame->addView (volumeDisplay); + + + // Note : in the constructor of a CBitmap, the number of references is set to 1. + // Then, each time the bitmap is used (for hinstance in a vertical slider), this + // number is incremented. + // As a consequence, everything happens as if the constructor by itself was adding + // a reference. That's why we need til here a call to forget (). + // You mustn't call delete here directly, because the bitmap is used by some CControls... + // These "rules" apply to the other VSTGUI objects too. + hFaderBody->forget (); + hFaderHandle->forget (); + + frame = lFrame; + return true; +} + +//----------------------------------------------------------------------------- +void SDEditor::close () +{ + delete frame; + frame = 0; +} + +//----------------------------------------------------------------------------- +void SDEditor::setParameter (VstInt32 index, float value) +{ + if (frame == 0) + return; + + // called from ADelayEdit + switch (index) + { + case kDelay: + if (delayFader) + delayFader->setValue (effect->getParameter (index)); + if (delayDisplay) + delayDisplay->setValue (effect->getParameter (index)); + break; + + case kFeedBack: + if (feedbackFader) + feedbackFader->setValue (effect->getParameter (index)); + if (feedbackDisplay) + feedbackDisplay->setValue (effect->getParameter (index)); + break; + + case kOut: + if (volumeFader) + volumeFader->setValue (effect->getParameter (index)); + if (volumeDisplay) + volumeDisplay->setValue (effect->getParameter (index)); + break; + } +} + +//----------------------------------------------------------------------------- +void SDEditor::valueChanged (CDrawContext* context, CControl* control) +{ + long tag = control->getTag (); + switch (tag) + { + case kDelay: + case kFeedBack: + case kOut: + effect->setParameterAutomated (tag, control->getValue ()); + control->setDirty (); + break; + } +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- diff --git a/public.sdk/samples/vst2.x/adelay/editor/sdeditor.h b/public.sdk/samples/vst2.x/adelay/editor/sdeditor.h new file mode 100644 index 0000000..abe427a --- /dev/null +++ b/public.sdk/samples/vst2.x/adelay/editor/sdeditor.h @@ -0,0 +1,51 @@ +//------------------------------------------------------------------------------------------------------- +// VST Plug-Ins SDK +// Version 2.4 $Date: 2006/11/13 09:08:28 $ +// +// Category : VST 2.x SDK Samples +// Filename : sdeditor.h +// Created by : Steinberg Media Technologies +// Description : Simple Surround Delay plugin with Editor using VSTGUI +// +// © 2006, Steinberg Media Technologies, All Rights Reserved +//------------------------------------------------------------------------------------------------------- + +#ifndef __sdeditor__ +#define __sdeditor__ + + +// include VSTGUI +#ifndef __vstgui__ +#include "vstgui.sf/vstgui/vstgui.h" +#endif + + +//----------------------------------------------------------------------------- +class SDEditor : public AEffGUIEditor, public CControlListener +{ +public: + SDEditor (AudioEffect* effect); + virtual ~SDEditor (); + +public: + virtual bool open (void* ptr); + virtual void close (); + + virtual void setParameter (VstInt32 index, float value); + virtual void valueChanged (CDrawContext* context, CControl* control); + +private: + // Controls + CVerticalSlider* delayFader; + CVerticalSlider* feedbackFader; + CVerticalSlider* volumeFader; + + CParamDisplay* delayDisplay; + CParamDisplay* feedbackDisplay; + CParamDisplay* volumeDisplay; + + // Bitmap + CBitmap* hBackground; +}; + +#endif diff --git a/public.sdk/samples/vst2.x/adelay/surrounddelay.cpp b/public.sdk/samples/vst2.x/adelay/surrounddelay.cpp new file mode 100644 index 0000000..d8c5a99 --- /dev/null +++ b/public.sdk/samples/vst2.x/adelay/surrounddelay.cpp @@ -0,0 +1,172 @@ +//------------------------------------------------------------------------------------------------------- +// VST Plug-Ins SDK +// Version 2.4 $Date: 2006/11/13 09:08:27 $ +// +// Category : VST 2.x SDK Samples +// Filename : surrounddelay.cpp +// Created by : Steinberg Media Technologies +// Description : Simple Surround Delay plugin with Editor using VSTGUI +// +// © 2006, Steinberg Media Technologies, All Rights Reserved +//------------------------------------------------------------------------------------------------------- + +#ifndef __surrounddelay__ +#include "surrounddelay.h" +#endif + +#ifndef __sdeditor__ +#include "editor/sdeditor.h" +#endif + +#include +#include + +//------------------------------------------------------------------------------------------------------- +AudioEffect* createEffectInstance (audioMasterCallback audioMaster) +{ + return new SurroundDelay (audioMaster); +} + +//----------------------------------------------------------------------------- +SurroundDelay::SurroundDelay (audioMasterCallback audioMaster) +: ADelay (audioMaster) +, plugInput (0) +, plugOutput (0) +{ + + // The first buffer is allocated in ADelay's constructor + for (int i = 1; i < MAX_CHANNELS; i++) + { + sBuffers[i] = new float[size]; + } + + setNumInputs (MAX_CHANNELS); + setNumOutputs (MAX_CHANNELS); + + // We initialize the arrangements to default values. + // Nevertheless, the host should modify them via + // appropriate calls to setSpeakerArrangement. + allocateArrangement (&plugInput, MAX_CHANNELS); + plugInput->type = kSpeakerArr51; + + allocateArrangement (&plugOutput, MAX_CHANNELS); + plugOutput->type = kSpeakerArr51; + + setUniqueID ('SDlE'); // this should be unique, use the Steinberg web page for plugin Id registration + + // create the editor + editor = new SDEditor (this); + + resume (); +} + +//----------------------------------------------------------------------------- +SurroundDelay::~SurroundDelay () +{ + sBuffers[0] = 0; + // We let ~ADelay delete "buffer"... + for (int i = 1; i < MAX_CHANNELS; i++) + { + if (sBuffers[i]) + { + delete[] sBuffers[i]; + } + sBuffers[i] = 0; + } + + deallocateArrangement (&plugInput); + deallocateArrangement (&plugOutput); +} + +//------------------------------------------------------------------------ +void SurroundDelay::resume () +{ + memset (buffer, 0, size * sizeof (float)); + sBuffers[0] = buffer; + + for (int i = 1; i < MAX_CHANNELS; i++) + { + memset (sBuffers[i], 0, size * sizeof (float)); + } +} + +//------------------------------------------------------------------------ +bool SurroundDelay::getSpeakerArrangement (VstSpeakerArrangement** pluginInput, VstSpeakerArrangement** pluginOutput) +{ + *pluginInput = plugInput; + *pluginOutput = plugOutput; + return true; +} + +//------------------------------------------------------------------------ +bool SurroundDelay::setSpeakerArrangement (VstSpeakerArrangement* pluginInput, + VstSpeakerArrangement* pluginOutput) +{ + if (!pluginOutput || !pluginInput) + return false; + + bool result = true; + + // This plug-in can act on any speaker arrangement, + // provided that there are the same number of inputs/outputs. + if (pluginInput->numChannels > MAX_CHANNELS) + { + // This plug-in can't have so many channels. So we answer + // false, and we set the input arrangement with the maximum + // number of channels possible + result = false; + allocateArrangement (&plugInput, MAX_CHANNELS); + plugInput->type = kSpeakerArr51; + } + else + { + matchArrangement (&plugInput, pluginInput); + } + + if (pluginOutput->numChannels != plugInput->numChannels) + { + // This plug-in only deals with symetric IO configurations... + result = false; + matchArrangement (&plugOutput, plugInput); + } + else + { + matchArrangement (&plugOutput, pluginOutput); + } + + return result; +} + +//------------------------------------------------------------------------ +void SurroundDelay::processReplacing (float** inputs, float** outputs, VstInt32 sampleframes) +{ + float* inputs2[1]; + float* outputs2[2]; + + outputs2[1] = NULL; + + long cursorTemp = cursor; + + for (int i = 0; i < plugInput->numChannels; i++) + { + cursor = cursorTemp; + + buffer = sBuffers[i]; + + inputs2[0] = inputs[i]; + outputs2[0] = outputs[i]; + + ADelay::processReplacing (inputs2, outputs2, sampleframes); + } + + buffer = sBuffers[0]; +} + +//----------------------------------------------------------------------------- +void SurroundDelay::setParameter (VstInt32 index, float value) +{ + ADelay::setParameter (index, value); + + if (editor) + ((AEffGUIEditor*)editor)->setParameter (index, value); +} diff --git a/public.sdk/samples/vst2.x/adelay/surrounddelay.h b/public.sdk/samples/vst2.x/adelay/surrounddelay.h new file mode 100644 index 0000000..f8412b9 --- /dev/null +++ b/public.sdk/samples/vst2.x/adelay/surrounddelay.h @@ -0,0 +1,54 @@ +//------------------------------------------------------------------------------------------------------- +// VST Plug-Ins SDK +// Version 2.4 $Date: 2006/11/13 09:08:27 $ +// +// Category : VST 2.x SDK Samples +// Filename : surrounddelay.h +// Created by : Steinberg Media Technologies +// Description : Simple Surround Delay plugin with Editor using VSTGUI +// +// © 2006, Steinberg Media Technologies, All Rights Reserved +//------------------------------------------------------------------------------------------------------- + +#ifndef __surrounddelay__ +#define __surrounddelay__ + +#ifndef __adelay__ +#include "adelay.h" +#endif + +#define MAX_CHANNELS 6 // maximun number of channel + +//------------------------------------------------------------------------ +// SurroundDelay declaration +//------------------------------------------------------------------------ +class SurroundDelay : public ADelay +{ +public: + SurroundDelay (audioMasterCallback audioMaster); + ~SurroundDelay (); + + virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleframes); + + void setParameter (VstInt32 index, float value); + + // functions VST version 2 + virtual bool getVendorString (char* text) { if (text) strcpy (text, "Steinberg"); return true; } + virtual bool getProductString (char* text) { if (text) strcpy (text, "SDelay"); return true; } + virtual VstInt32 getVendorVersion () { return 1000; } + + virtual VstPlugCategory getPlugCategory () { return kPlugSurroundFx; } + + virtual bool getSpeakerArrangement (VstSpeakerArrangement** pluginInput, VstSpeakerArrangement** pluginOutput); + virtual bool setSpeakerArrangement (VstSpeakerArrangement* pluginInput, VstSpeakerArrangement* pluginOutput); + + virtual void resume (); + +private: + VstSpeakerArrangement* plugInput; + VstSpeakerArrangement* plugOutput; + + float* sBuffers[MAX_CHANNELS]; +}; + +#endif diff --git a/public.sdk/samples/vst2.x/adelay/win/adelay.vcproj b/public.sdk/samples/vst2.x/adelay/win/adelay.vcproj new file mode 100644 index 0000000..3391506 --- /dev/null +++ b/public.sdk/samples/vst2.x/adelay/win/adelay.vcproj @@ -0,0 +1,400 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public.sdk/samples/vst2.x/adelay/win/surrounddelay.vcproj b/public.sdk/samples/vst2.x/adelay/win/surrounddelay.vcproj new file mode 100644 index 0000000..194bc12 --- /dev/null +++ b/public.sdk/samples/vst2.x/adelay/win/surrounddelay.vcproj @@ -0,0 +1,444 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public.sdk/samples/vst2.x/again/source/again.cpp b/public.sdk/samples/vst2.x/again/source/again.cpp new file mode 100644 index 0000000..9d0af10 --- /dev/null +++ b/public.sdk/samples/vst2.x/again/source/again.cpp @@ -0,0 +1,139 @@ +//------------------------------------------------------------------------------------------------------- +// VST Plug-Ins SDK +// Version 2.4 $Date: 2006/11/13 09:08:27 $ +// +// Category : VST 2.x SDK Samples +// Filename : again.cpp +// Created by : Steinberg Media Technologies +// Description : Stereo plugin which applies Gain [-oo, 0dB] +// +// © 2006, Steinberg Media Technologies, All Rights Reserved +//------------------------------------------------------------------------------------------------------- + +#include "again.h" + +//------------------------------------------------------------------------------------------------------- +AudioEffect* createEffectInstance (audioMasterCallback audioMaster) +{ + return new AGain (audioMaster); +} + +//------------------------------------------------------------------------------------------------------- +AGain::AGain (audioMasterCallback audioMaster) +: AudioEffectX (audioMaster, 1, 1) // 1 program, 1 parameter only +{ + setNumInputs (2); // stereo in + setNumOutputs (2); // stereo out + setUniqueID ('Gain'); // identify + canProcessReplacing (); // supports replacing output + canDoubleReplacing (); // supports double precision processing + + fGain = 1.f; // default to 0 dB + vst_strncpy (programName, "Default", kVstMaxProgNameLen); // default program name +} + +//------------------------------------------------------------------------------------------------------- +AGain::~AGain () +{ + // nothing to do here +} + +//------------------------------------------------------------------------------------------------------- +void AGain::setProgramName (char* name) +{ + vst_strncpy (programName, name, kVstMaxProgNameLen); +} + +//----------------------------------------------------------------------------------------- +void AGain::getProgramName (char* name) +{ + vst_strncpy (name, programName, kVstMaxProgNameLen); +} + +//----------------------------------------------------------------------------------------- +void AGain::setParameter (VstInt32 index, float value) +{ + fGain = value; +} + +//----------------------------------------------------------------------------------------- +float AGain::getParameter (VstInt32 index) +{ + return fGain; +} + +//----------------------------------------------------------------------------------------- +void AGain::getParameterName (VstInt32 index, char* label) +{ + vst_strncpy (label, "Gain", kVstMaxParamStrLen); +} + +//----------------------------------------------------------------------------------------- +void AGain::getParameterDisplay (VstInt32 index, char* text) +{ + dB2string (fGain, text, kVstMaxParamStrLen); +} + +//----------------------------------------------------------------------------------------- +void AGain::getParameterLabel (VstInt32 index, char* label) +{ + vst_strncpy (label, "dB", kVstMaxParamStrLen); +} + +//------------------------------------------------------------------------ +bool AGain::getEffectName (char* name) +{ + vst_strncpy (name, "Gain", kVstMaxEffectNameLen); + return true; +} + +//------------------------------------------------------------------------ +bool AGain::getProductString (char* text) +{ + vst_strncpy (text, "Gain", kVstMaxProductStrLen); + return true; +} + +//------------------------------------------------------------------------ +bool AGain::getVendorString (char* text) +{ + vst_strncpy (text, "Steinberg Media Technologies", kVstMaxVendorStrLen); + return true; +} + +//----------------------------------------------------------------------------------------- +VstInt32 AGain::getVendorVersion () +{ + return 1000; +} + +//----------------------------------------------------------------------------------------- +void AGain::processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames) +{ + float* in1 = inputs[0]; + float* in2 = inputs[1]; + float* out1 = outputs[0]; + float* out2 = outputs[1]; + + while (--sampleFrames >= 0) + { + (*out1++) = (*in1++) * fGain; + (*out2++) = (*in2++) * fGain; + } +} + +//----------------------------------------------------------------------------------------- +void AGain::processDoubleReplacing (double** inputs, double** outputs, VstInt32 sampleFrames) +{ + double* in1 = inputs[0]; + double* in2 = inputs[1]; + double* out1 = outputs[0]; + double* out2 = outputs[1]; + double dGain = fGain; + + while (--sampleFrames >= 0) + { + (*out1++) = (*in1++) * dGain; + (*out2++) = (*in2++) * dGain; + } +} diff --git a/public.sdk/samples/vst2.x/again/source/again.h b/public.sdk/samples/vst2.x/again/source/again.h new file mode 100644 index 0000000..f241dfa --- /dev/null +++ b/public.sdk/samples/vst2.x/again/source/again.h @@ -0,0 +1,50 @@ +//------------------------------------------------------------------------------------------------------- +// VST Plug-Ins SDK +// Version 2.4 $Date: 2006/11/13 09:08:27 $ +// +// Category : VST 2.x SDK Samples +// Filename : again.h +// Created by : Steinberg Media Technologies +// Description : Stereo plugin which applies Gain [-oo, 0dB] +// +// © 2006, Steinberg Media Technologies, All Rights Reserved +//------------------------------------------------------------------------------------------------------- + +#ifndef __again__ +#define __again__ + +#include "public.sdk/source/vst2.x/audioeffectx.h" + +//------------------------------------------------------------------------------------------------------- +class AGain : public AudioEffectX +{ +public: + AGain (audioMasterCallback audioMaster); + ~AGain (); + + // Processing + virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames); + virtual void processDoubleReplacing (double** inputs, double** outputs, VstInt32 sampleFrames); + + // Program + virtual void setProgramName (char* name); + virtual void getProgramName (char* name); + + // Parameters + virtual void setParameter (VstInt32 index, float value); + virtual float getParameter (VstInt32 index); + virtual void getParameterLabel (VstInt32 index, char* label); + virtual void getParameterDisplay (VstInt32 index, char* text); + virtual void getParameterName (VstInt32 index, char* text); + + virtual bool getEffectName (char* name); + virtual bool getVendorString (char* text); + virtual bool getProductString (char* text); + virtual VstInt32 getVendorVersion (); + +protected: + float fGain; + char programName[kVstMaxProgNameLen + 1]; +}; + +#endif diff --git a/public.sdk/samples/vst2.x/again/win/again.vcproj b/public.sdk/samples/vst2.x/again/win/again.vcproj new file mode 100644 index 0000000..5140d09 --- /dev/null +++ b/public.sdk/samples/vst2.x/again/win/again.vcproj @@ -0,0 +1,396 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public.sdk/samples/vst2.x/mac/minihost-Info.plist b/public.sdk/samples/vst2.x/mac/minihost-Info.plist new file mode 100644 index 0000000..92ddf0f --- /dev/null +++ b/public.sdk/samples/vst2.x/mac/minihost-Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + com.yourcompany.minihost + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + APPL + CFBundleSignature + ???? + CFBundleVersion + 1.0 + + diff --git a/public.sdk/samples/vst2.x/mac/vst 2.4 examples.xcodeproj/project.pbxproj b/public.sdk/samples/vst2.x/mac/vst 2.4 examples.xcodeproj/project.pbxproj new file mode 100644 index 0000000..7c7ac54 --- /dev/null +++ b/public.sdk/samples/vst2.x/mac/vst 2.4 examples.xcodeproj/project.pbxproj @@ -0,0 +1,924 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXAggregateTarget section */ + F4476C1A093DDA87008998C4 /* all */ = { + isa = PBXAggregateTarget; + buildConfigurationList = F4476C2A093DDACE008998C4 /* Build configuration list for PBXAggregateTarget "all" */; + buildPhases = ( + ); + buildSettings = { + PRODUCT_NAME = all; + }; + dependencies = ( + F4EF42E90945AD2C001938AB /* PBXTargetDependency */, + F4476C1C093DDA8D008998C4 /* PBXTargetDependency */, + F4476C1E093DDA96008998C4 /* PBXTargetDependency */, + F4476C20093DDA98008998C4 /* PBXTargetDependency */, + F4476C22093DDA99008998C4 /* PBXTargetDependency */, + ); + name = all; + productName = all; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + F447696D093DAE42008998C4 /* audioeffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FF51C50929F9C100DDED7A /* audioeffect.cpp */; }; + F447696E093DAE42008998C4 /* audioeffectx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FF51C70929F9C100DDED7A /* audioeffectx.cpp */; }; + F447696F093DAE42008998C4 /* vstplugmain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FF51C90929F9C100DDED7A /* vstplugmain.cpp */; }; + F4476991093DAEA1008998C4 /* adelay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F447698F093DAEA1008998C4 /* adelay.cpp */; }; + F4476A08093DCAF9008998C4 /* audioeffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FF51C50929F9C100DDED7A /* audioeffect.cpp */; }; + F4476A09093DCAF9008998C4 /* audioeffectx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FF51C70929F9C100DDED7A /* audioeffectx.cpp */; }; + F4476A0A093DCAF9008998C4 /* vstplugmain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FF51C90929F9C100DDED7A /* vstplugmain.cpp */; }; + F4476A0B093DCAF9008998C4 /* adelay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F447698F093DAEA1008998C4 /* adelay.cpp */; }; + F4476A18093DCB4D008998C4 /* surrounddelay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4476A16093DCB4D008998C4 /* surrounddelay.cpp */; }; + F4476A76093DCD05008998C4 /* adelaymain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4476A75093DCD05008998C4 /* adelaymain.cpp */; }; + F4476A9E093DCF68008998C4 /* sdeditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4476A9C093DCF68008998C4 /* sdeditor.cpp */; }; + F4476AAF093DD4FB008998C4 /* aeffguieditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4476AAC093DD4FB008998C4 /* aeffguieditor.cpp */; }; + F4476AB0093DD4FB008998C4 /* vstcontrols.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4476AAD093DD4FB008998C4 /* vstcontrols.cpp */; }; + F4476AB1093DD4FB008998C4 /* vstgui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4476AAE093DD4FB008998C4 /* vstgui.cpp */; }; + F4476B73093DD662008998C4 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08EA7FFBFE8413EDC02AAC07 /* Carbon.framework */; }; + F4476B79093DD675008998C4 /* QuickTime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F4476B78093DD675008998C4 /* QuickTime.framework */; }; + F4476B8E093DD81B008998C4 /* bmp00128.bmp in Resources */ = {isa = PBXBuildFile; fileRef = F4476B8B093DD81B008998C4 /* bmp00128.bmp */; }; + F4476B8F093DD81B008998C4 /* bmp00129.bmp in Resources */ = {isa = PBXBuildFile; fileRef = F4476B8C093DD81B008998C4 /* bmp00129.bmp */; }; + F4476B90093DD81B008998C4 /* bmp00130.bmp in Resources */ = {isa = PBXBuildFile; fileRef = F4476B8D093DD81B008998C4 /* bmp00130.bmp */; }; + F4EF438E0945D9CD001938AB /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08EA7FFBFE8413EDC02AAC07 /* Carbon.framework */; }; + F4FF51C10929F9A600DDED7A /* again.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FF51BF0929F9A600DDED7A /* again.cpp */; }; + F4FF51CA0929F9C100DDED7A /* audioeffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FF51C50929F9C100DDED7A /* audioeffect.cpp */; }; + F4FF51CB0929F9C100DDED7A /* audioeffectx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FF51C70929F9C100DDED7A /* audioeffectx.cpp */; }; + F4FF51CC0929F9C100DDED7A /* vstplugmain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FF51C90929F9C100DDED7A /* vstplugmain.cpp */; }; + F4FF52270929FC2D00DDED7A /* vstxsynth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FF521A0929FBDC00DDED7A /* vstxsynth.cpp */; }; + F4FF52280929FC2E00DDED7A /* vstxsynthproc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FF521C0929FBDC00DDED7A /* vstxsynthproc.cpp */; }; + F4FF52290929FC3000DDED7A /* audioeffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FF51C50929F9C100DDED7A /* audioeffect.cpp */; }; + F4FF522A0929FC3000DDED7A /* audioeffectx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FF51C70929F9C100DDED7A /* audioeffectx.cpp */; }; + F4FF522B0929FC3100DDED7A /* vstplugmain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FF51C90929F9C100DDED7A /* vstplugmain.cpp */; }; + F4FF52FC092A314700DDED7A /* minihost.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FF52FA092A314700DDED7A /* minihost.cpp */; }; + F4FF533D092A371400DDED7A /* minieditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FF52F9092A314700DDED7A /* minieditor.cpp */; }; +/* End PBXBuildFile section */ + +/* Begin PBXBuildStyle section */ + 4F9091AC011F3BD104CA0E50 /* Debug */ = { + isa = PBXBuildStyle; + buildSettings = { + }; + name = Debug; + }; + 4F9091AD011F3BD104CA0E50 /* Release */ = { + isa = PBXBuildStyle; + buildSettings = { + }; + name = Release; + }; +/* End PBXBuildStyle section */ + +/* Begin PBXContainerItemProxy section */ + F4476C1B093DDA8D008998C4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 089C1669FE841209C02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8D01CCC60486CAD60068D4B7; + remoteInfo = again; + }; + F4476C1D093DDA96008998C4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 089C1669FE841209C02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F4FF52210929FBF500DDED7A; + remoteInfo = vstxsynth; + }; + F4476C1F093DDA98008998C4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 089C1669FE841209C02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F4476969093DAE42008998C4; + remoteInfo = adelay; + }; + F4476C21093DDA99008998C4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 089C1669FE841209C02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F4476A05093DCAF9008998C4; + remoteInfo = surrounddelay; + }; + F4EF42E80945AD2C001938AB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 089C1669FE841209C02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F4FF52F2092A312800DDED7A; + remoteInfo = minihost; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 08EA7FFBFE8413EDC02AAC07 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; }; + 8D01CCD20486CAD60068D4B7 /* again.vst */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = again.vst; sourceTree = BUILT_PRODUCTS_DIR; }; + F4476974093DAE42008998C4 /* adelay.vst */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = adelay.vst; sourceTree = BUILT_PRODUCTS_DIR; }; + F447698F093DAEA1008998C4 /* adelay.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = adelay.cpp; path = ../adelay/adelay.cpp; sourceTree = SOURCE_ROOT; }; + F4476990093DAEA1008998C4 /* adelay.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = adelay.h; path = ../adelay/adelay.h; sourceTree = SOURCE_ROOT; }; + F4476A10093DCAF9008998C4 /* surrounddelay.vst */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = surrounddelay.vst; sourceTree = BUILT_PRODUCTS_DIR; }; + F4476A16093DCB4D008998C4 /* surrounddelay.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = surrounddelay.cpp; path = ../adelay/surrounddelay.cpp; sourceTree = SOURCE_ROOT; }; + F4476A17093DCB4D008998C4 /* surrounddelay.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = surrounddelay.h; path = ../adelay/surrounddelay.h; sourceTree = SOURCE_ROOT; }; + F4476A75093DCD05008998C4 /* adelaymain.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = adelaymain.cpp; path = ../adelay/adelaymain.cpp; sourceTree = SOURCE_ROOT; }; + F4476A9C093DCF68008998C4 /* sdeditor.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = sdeditor.cpp; path = ../adelay/editor/sdeditor.cpp; sourceTree = SOURCE_ROOT; }; + F4476A9D093DCF68008998C4 /* sdeditor.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sdeditor.h; path = ../adelay/editor/sdeditor.h; sourceTree = SOURCE_ROOT; }; + F4476AAC093DD4FB008998C4 /* aeffguieditor.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = aeffguieditor.cpp; path = ../../../../vstgui.sf/vstgui/aeffguieditor.cpp; sourceTree = SOURCE_ROOT; }; + F4476AAD093DD4FB008998C4 /* vstcontrols.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = vstcontrols.cpp; path = ../../../../vstgui.sf/vstgui/vstcontrols.cpp; sourceTree = SOURCE_ROOT; }; + F4476AAE093DD4FB008998C4 /* vstgui.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = vstgui.cpp; path = ../../../../vstgui.sf/vstgui/vstgui.cpp; sourceTree = SOURCE_ROOT; }; + F4476B78093DD675008998C4 /* QuickTime.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickTime.framework; path = /System/Library/Frameworks/QuickTime.framework; sourceTree = ""; }; + F4476B8B093DD81B008998C4 /* bmp00128.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = bmp00128.bmp; path = ../adelay/editor/resources/bmp00128.bmp; sourceTree = SOURCE_ROOT; }; + F4476B8C093DD81B008998C4 /* bmp00129.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = bmp00129.bmp; path = ../adelay/editor/resources/bmp00129.bmp; sourceTree = SOURCE_ROOT; }; + F4476B8D093DD81B008998C4 /* bmp00130.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = bmp00130.bmp; path = ../adelay/editor/resources/bmp00130.bmp; sourceTree = SOURCE_ROOT; }; + F4FF51BF0929F9A600DDED7A /* again.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = again.cpp; path = ../again/source/again.cpp; sourceTree = SOURCE_ROOT; }; + F4FF51C00929F9A600DDED7A /* again.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = again.h; path = ../again/source/again.h; sourceTree = SOURCE_ROOT; }; + F4FF51C40929F9C100DDED7A /* aeffeditor.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = aeffeditor.h; path = ../../../source/vst2.x/aeffeditor.h; sourceTree = SOURCE_ROOT; }; + F4FF51C50929F9C100DDED7A /* audioeffect.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = audioeffect.cpp; path = ../../../source/vst2.x/audioeffect.cpp; sourceTree = SOURCE_ROOT; }; + F4FF51C60929F9C100DDED7A /* audioeffect.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = audioeffect.h; path = ../../../source/vst2.x/audioeffect.h; sourceTree = SOURCE_ROOT; }; + F4FF51C70929F9C100DDED7A /* audioeffectx.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = audioeffectx.cpp; path = ../../../source/vst2.x/audioeffectx.cpp; sourceTree = SOURCE_ROOT; }; + F4FF51C80929F9C100DDED7A /* audioeffectx.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = audioeffectx.h; path = ../../../source/vst2.x/audioeffectx.h; sourceTree = SOURCE_ROOT; }; + F4FF51C90929F9C100DDED7A /* vstplugmain.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = vstplugmain.cpp; path = ../../../source/vst2.x/vstplugmain.cpp; sourceTree = SOURCE_ROOT; }; + F4FF51CE0929F9D900DDED7A /* aeffect.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = aeffect.h; path = ../../../../pluginterfaces/vst2.x/aeffect.h; sourceTree = SOURCE_ROOT; }; + F4FF51CF0929F9D900DDED7A /* aeffectx.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = aeffectx.h; path = ../../../../pluginterfaces/vst2.x/aeffectx.h; sourceTree = SOURCE_ROOT; }; + F4FF51D00929F9D900DDED7A /* vstfxstore.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = vstfxstore.h; path = ../../../../pluginterfaces/vst2.x/vstfxstore.h; sourceTree = SOURCE_ROOT; }; + F4FF51E50929FB0400DDED7A /* vst2.4Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xml; path = vst2.4Info.plist; sourceTree = ""; }; + F4FF52190929FBDC00DDED7A /* gmnames.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = gmnames.h; path = ../vstxsynth/source/gmnames.h; sourceTree = SOURCE_ROOT; }; + F4FF521A0929FBDC00DDED7A /* vstxsynth.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = vstxsynth.cpp; path = ../vstxsynth/source/vstxsynth.cpp; sourceTree = SOURCE_ROOT; }; + F4FF521B0929FBDC00DDED7A /* vstxsynth.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = vstxsynth.h; path = ../vstxsynth/source/vstxsynth.h; sourceTree = SOURCE_ROOT; }; + F4FF521C0929FBDC00DDED7A /* vstxsynthproc.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = vstxsynthproc.cpp; path = ../vstxsynth/source/vstxsynthproc.cpp; sourceTree = SOURCE_ROOT; }; + F4FF52220929FBF500DDED7A /* vstxsynth.vst */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = vstxsynth.vst; sourceTree = BUILT_PRODUCTS_DIR; }; + F4FF52F3092A312800DDED7A /* minihost.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = minihost.app; sourceTree = BUILT_PRODUCTS_DIR; }; + F4FF52F5092A312800DDED7A /* minihost-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "minihost-Info.plist"; sourceTree = ""; }; + F4FF52F9092A314700DDED7A /* minieditor.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = minieditor.cpp; path = ../minihost/source/minieditor.cpp; sourceTree = SOURCE_ROOT; }; + F4FF52FA092A314700DDED7A /* minihost.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = minihost.cpp; path = ../minihost/source/minihost.cpp; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8D01CCCD0486CAD60068D4B7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F4476970093DAE42008998C4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F4476A0C093DCAF9008998C4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F4476B73093DD662008998C4 /* Carbon.framework in Frameworks */, + F4476B79093DD675008998C4 /* QuickTime.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F4FF52200929FBF500DDED7A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F4FF52F1092A312800DDED7A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F4EF438E0945D9CD001938AB /* Carbon.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 089C166AFE841209C02AAC07 /* vst 2.4 examples */ = { + isa = PBXGroup; + children = ( + 08FB77ADFE841716C02AAC07 /* Source */, + 089C167CFE841241C02AAC07 /* Resources */, + 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */, + 19C28FB4FE9D528D11CA2CBB /* Products */, + F4FF52F5092A312800DDED7A /* minihost-Info.plist */, + ); + name = "vst 2.4 examples"; + sourceTree = ""; + }; + 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + F4476B78093DD675008998C4 /* QuickTime.framework */, + 08EA7FFBFE8413EDC02AAC07 /* Carbon.framework */, + ); + name = "External Frameworks and Libraries"; + sourceTree = ""; + }; + 089C167CFE841241C02AAC07 /* Resources */ = { + isa = PBXGroup; + children = ( + F4FF51E50929FB0400DDED7A /* vst2.4Info.plist */, + F4476B8B093DD81B008998C4 /* bmp00128.bmp */, + F4476B8C093DD81B008998C4 /* bmp00129.bmp */, + F4476B8D093DD81B008998C4 /* bmp00130.bmp */, + ); + name = Resources; + sourceTree = ""; + }; + 08FB77ADFE841716C02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + F4476968093DAE36008998C4 /* adelay */, + F4FF51C30929F9AA00DDED7A /* again */, + F4FF52FD092A314900DDED7A /* minihost */, + F4476A12093DCB1D008998C4 /* surrounddelay */, + F4FF51CD0929F9C400DDED7A /* vst sdk 2.4 */, + F4476AA3093DCFB0008998C4 /* vstgui */, + F4FF521D0929FBDF00DDED7A /* vstxsynth */, + ); + name = Source; + sourceTree = ""; + }; + 19C28FB4FE9D528D11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8D01CCD20486CAD60068D4B7 /* again.vst */, + F4FF52220929FBF500DDED7A /* vstxsynth.vst */, + F4FF52F3092A312800DDED7A /* minihost.app */, + F4476974093DAE42008998C4 /* adelay.vst */, + F4476A10093DCAF9008998C4 /* surrounddelay.vst */, + ); + name = Products; + sourceTree = ""; + }; + F4476968093DAE36008998C4 /* adelay */ = { + isa = PBXGroup; + children = ( + F447698F093DAEA1008998C4 /* adelay.cpp */, + F4476990093DAEA1008998C4 /* adelay.h */, + F4476A75093DCD05008998C4 /* adelaymain.cpp */, + ); + name = adelay; + sourceTree = ""; + }; + F4476A12093DCB1D008998C4 /* surrounddelay */ = { + isa = PBXGroup; + children = ( + F4476B87093DD7C0008998C4 /* editor */, + F4476A16093DCB4D008998C4 /* surrounddelay.cpp */, + F4476A17093DCB4D008998C4 /* surrounddelay.h */, + ); + name = surrounddelay; + sourceTree = ""; + }; + F4476AA3093DCFB0008998C4 /* vstgui */ = { + isa = PBXGroup; + children = ( + F4476AAC093DD4FB008998C4 /* aeffguieditor.cpp */, + F4476AAD093DD4FB008998C4 /* vstcontrols.cpp */, + F4476AAE093DD4FB008998C4 /* vstgui.cpp */, + ); + name = vstgui; + sourceTree = ""; + }; + F4476B87093DD7C0008998C4 /* editor */ = { + isa = PBXGroup; + children = ( + F4476A9C093DCF68008998C4 /* sdeditor.cpp */, + F4476A9D093DCF68008998C4 /* sdeditor.h */, + ); + name = editor; + sourceTree = ""; + }; + F4FF51C30929F9AA00DDED7A /* again */ = { + isa = PBXGroup; + children = ( + F4FF51BF0929F9A600DDED7A /* again.cpp */, + F4FF51C00929F9A600DDED7A /* again.h */, + ); + name = again; + sourceTree = ""; + }; + F4FF51CD0929F9C400DDED7A /* vst sdk 2.4 */ = { + isa = PBXGroup; + children = ( + F4FF51CE0929F9D900DDED7A /* aeffect.h */, + F4FF51CF0929F9D900DDED7A /* aeffectx.h */, + F4FF51C40929F9C100DDED7A /* aeffeditor.h */, + F4FF51C50929F9C100DDED7A /* audioeffect.cpp */, + F4FF51C60929F9C100DDED7A /* audioeffect.h */, + F4FF51C70929F9C100DDED7A /* audioeffectx.cpp */, + F4FF51C80929F9C100DDED7A /* audioeffectx.h */, + F4FF51D00929F9D900DDED7A /* vstfxstore.h */, + F4FF51C90929F9C100DDED7A /* vstplugmain.cpp */, + ); + name = "vst sdk 2.4"; + sourceTree = ""; + }; + F4FF521D0929FBDF00DDED7A /* vstxsynth */ = { + isa = PBXGroup; + children = ( + F4FF52190929FBDC00DDED7A /* gmnames.h */, + F4FF521A0929FBDC00DDED7A /* vstxsynth.cpp */, + F4FF521B0929FBDC00DDED7A /* vstxsynth.h */, + F4FF521C0929FBDC00DDED7A /* vstxsynthproc.cpp */, + ); + name = vstxsynth; + sourceTree = ""; + }; + F4FF52FD092A314900DDED7A /* minihost */ = { + isa = PBXGroup; + children = ( + F4FF52F9092A314700DDED7A /* minieditor.cpp */, + F4FF52FA092A314700DDED7A /* minihost.cpp */, + ); + name = minihost; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8D01CCC60486CAD60068D4B7 /* again */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4FADC23308B4156C00ABE55E /* Build configuration list for PBXNativeTarget "again" */; + buildPhases = ( + 8D01CCC90486CAD60068D4B7 /* Resources */, + 8D01CCCB0486CAD60068D4B7 /* Sources */, + 8D01CCCD0486CAD60068D4B7 /* Frameworks */, + ); + buildRules = ( + ); + buildSettings = { + }; + dependencies = ( + ); + name = again; + productInstallPath = "$(HOME)/Library/Bundles"; + productName = "vst 2.4 examples"; + productReference = 8D01CCD20486CAD60068D4B7 /* again.vst */; + productType = "com.apple.product-type.bundle"; + }; + F4476969093DAE42008998C4 /* adelay */ = { + isa = PBXNativeTarget; + buildConfigurationList = F4476971093DAE42008998C4 /* Build configuration list for PBXNativeTarget "adelay" */; + buildPhases = ( + F447696A093DAE42008998C4 /* Resources */, + F447696B093DAE42008998C4 /* Sources */, + F4476970093DAE42008998C4 /* Frameworks */, + ); + buildRules = ( + ); + buildSettings = { + }; + dependencies = ( + ); + name = adelay; + productInstallPath = "$(HOME)/Library/Bundles"; + productName = "vst 2.4 examples"; + productReference = F4476974093DAE42008998C4 /* adelay.vst */; + productType = "com.apple.product-type.bundle"; + }; + F4476A05093DCAF9008998C4 /* surrounddelay */ = { + isa = PBXNativeTarget; + buildConfigurationList = F4476A0D093DCAF9008998C4 /* Build configuration list for PBXNativeTarget "surrounddelay" */; + buildPhases = ( + F4476A06093DCAF9008998C4 /* Resources */, + F4476A07093DCAF9008998C4 /* Sources */, + F4476A0C093DCAF9008998C4 /* Frameworks */, + ); + buildRules = ( + ); + buildSettings = { + }; + dependencies = ( + ); + name = surrounddelay; + productInstallPath = "$(HOME)/Library/Bundles"; + productName = "vst 2.4 examples"; + productReference = F4476A10093DCAF9008998C4 /* surrounddelay.vst */; + productType = "com.apple.product-type.bundle"; + }; + F4FF52210929FBF500DDED7A /* vstxsynth */ = { + isa = PBXNativeTarget; + buildConfigurationList = F4FF52240929FBF500DDED7A /* Build configuration list for PBXNativeTarget "vstxsynth" */; + buildPhases = ( + F4FF521E0929FBF500DDED7A /* Resources */, + F4FF521F0929FBF500DDED7A /* Sources */, + F4FF52200929FBF500DDED7A /* Frameworks */, + ); + buildRules = ( + ); + buildSettings = { + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; + INFOPLIST_FILE = "vstxsynth-Info.plist"; + INSTALL_PATH = "$(HOME)/Library/Bundles"; + OTHER_LDFLAGS = ( + "-framework", + Carbon, + ); + PREBINDING = NO; + PRODUCT_NAME = vstxsynth; + WRAPPER_EXTENSION = bundle; + ZERO_LINK = YES; + }; + dependencies = ( + ); + name = vstxsynth; + productName = vstxsynth; + productReference = F4FF52220929FBF500DDED7A /* vstxsynth.vst */; + productSettingsXML = " + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + vstxsynth + CFBundleIdentifier + com.yourcompany.vstxsynth + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BNDL + CFBundleSignature + ???? + CFBundleVersion + 1.0 + CSResourcesFileMapped + yes + + +"; + productType = "com.apple.product-type.bundle"; + }; + F4FF52F2092A312800DDED7A /* minihost */ = { + isa = PBXNativeTarget; + buildConfigurationList = F4FF52F6092A312900DDED7A /* Build configuration list for PBXNativeTarget "minihost" */; + buildPhases = ( + F4FF52EF092A312800DDED7A /* Resources */, + F4FF52F0092A312800DDED7A /* Sources */, + F4FF52F1092A312800DDED7A /* Frameworks */, + ); + buildRules = ( + ); + buildSettings = { + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; + INFOPLIST_FILE = "minihost-Info.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + OTHER_LDFLAGS = ( + "-framework", + Carbon, + ); + PREBINDING = NO; + PRODUCT_NAME = minihost; + WRAPPER_EXTENSION = app; + ZERO_LINK = YES; + }; + dependencies = ( + ); + name = minihost; + productName = minihost; + productReference = F4FF52F3092A312800DDED7A /* minihost.app */; + productSettingsXML = " + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + com.yourcompany.minihost + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + APPL + CFBundleSignature + ???? + CFBundleVersion + 1.0 + + +"; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 089C1669FE841209C02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 4FADC23708B4156C00ABE55E /* Build configuration list for PBXProject "vst 2.4 examples" */; + buildSettings = { + }; + buildStyles = ( + 4F9091AC011F3BD104CA0E50 /* Debug */, + 4F9091AD011F3BD104CA0E50 /* Release */, + ); + hasScannedForEncodings = 1; + mainGroup = 089C166AFE841209C02AAC07 /* vst 2.4 examples */; + projectDirPath = ""; + targets = ( + F4476C1A093DDA87008998C4 /* all */, + 8D01CCC60486CAD60068D4B7 /* again */, + F4476969093DAE42008998C4 /* adelay */, + F4FF52210929FBF500DDED7A /* vstxsynth */, + F4476A05093DCAF9008998C4 /* surrounddelay */, + F4FF52F2092A312800DDED7A /* minihost */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D01CCC90486CAD60068D4B7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F447696A093DAE42008998C4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F4476A06093DCAF9008998C4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F4476B8E093DD81B008998C4 /* bmp00128.bmp in Resources */, + F4476B8F093DD81B008998C4 /* bmp00129.bmp in Resources */, + F4476B90093DD81B008998C4 /* bmp00130.bmp in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F4FF521E0929FBF500DDED7A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F4FF52EF092A312800DDED7A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D01CCCB0486CAD60068D4B7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F4FF51C10929F9A600DDED7A /* again.cpp in Sources */, + F4FF51CA0929F9C100DDED7A /* audioeffect.cpp in Sources */, + F4FF51CB0929F9C100DDED7A /* audioeffectx.cpp in Sources */, + F4FF51CC0929F9C100DDED7A /* vstplugmain.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F447696B093DAE42008998C4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F447696D093DAE42008998C4 /* audioeffect.cpp in Sources */, + F447696E093DAE42008998C4 /* audioeffectx.cpp in Sources */, + F447696F093DAE42008998C4 /* vstplugmain.cpp in Sources */, + F4476991093DAEA1008998C4 /* adelay.cpp in Sources */, + F4476A76093DCD05008998C4 /* adelaymain.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F4476A07093DCAF9008998C4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F4476A08093DCAF9008998C4 /* audioeffect.cpp in Sources */, + F4476A09093DCAF9008998C4 /* audioeffectx.cpp in Sources */, + F4476A0A093DCAF9008998C4 /* vstplugmain.cpp in Sources */, + F4476A0B093DCAF9008998C4 /* adelay.cpp in Sources */, + F4476A18093DCB4D008998C4 /* surrounddelay.cpp in Sources */, + F4476A9E093DCF68008998C4 /* sdeditor.cpp in Sources */, + F4476AAF093DD4FB008998C4 /* aeffguieditor.cpp in Sources */, + F4476AB0093DD4FB008998C4 /* vstcontrols.cpp in Sources */, + F4476AB1093DD4FB008998C4 /* vstgui.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F4FF521F0929FBF500DDED7A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F4FF52270929FC2D00DDED7A /* vstxsynth.cpp in Sources */, + F4FF52280929FC2E00DDED7A /* vstxsynthproc.cpp in Sources */, + F4FF52290929FC3000DDED7A /* audioeffect.cpp in Sources */, + F4FF522A0929FC3000DDED7A /* audioeffectx.cpp in Sources */, + F4FF522B0929FC3100DDED7A /* vstplugmain.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F4FF52F0092A312800DDED7A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F4FF52FC092A314700DDED7A /* minihost.cpp in Sources */, + F4FF533D092A371400DDED7A /* minieditor.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + F4476C1C093DDA8D008998C4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 8D01CCC60486CAD60068D4B7 /* again */; + targetProxy = F4476C1B093DDA8D008998C4 /* PBXContainerItemProxy */; + }; + F4476C1E093DDA96008998C4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = F4FF52210929FBF500DDED7A /* vstxsynth */; + targetProxy = F4476C1D093DDA96008998C4 /* PBXContainerItemProxy */; + }; + F4476C20093DDA98008998C4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = F4476969093DAE42008998C4 /* adelay */; + targetProxy = F4476C1F093DDA98008998C4 /* PBXContainerItemProxy */; + }; + F4476C22093DDA99008998C4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = F4476A05093DCAF9008998C4 /* surrounddelay */; + targetProxy = F4476C21093DDA99008998C4 /* PBXContainerItemProxy */; + }; + F4EF42E90945AD2C001938AB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = F4FF52F2092A312800DDED7A /* minihost */; + targetProxy = F4EF42E80945AD2C001938AB /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 4FADC23408B4156C00ABE55E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH)"; + PRODUCT_NAME = again; + }; + name = Debug; + }; + 4FADC23508B4156C00ABE55E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = ( + ppc, + i386, + ); + PRODUCT_NAME = again; + }; + name = Release; + }; + 4FADC23808B4156C00ABE55E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_ALTIVEC_EXTENSIONS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + GENERATE_PKGINFO_FILE = YES; + HEADER_SEARCH_PATHS = ( + "$(HEADER_SEARCH_PATHS)", + "$(SRCROOT)/../../../../", + ); + INFOPLIST_FILE = vst2.4Info.plist; + INFOPLIST_PREPROCESS = YES; + PREBINDING = NO; + SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + WRAPPER_EXTENSION = vst; + }; + name = Debug; + }; + 4FADC23908B4156C00ABE55E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEPLOYMENT_POSTPROCESSING = YES; + GCC_ALTIVEC_EXTENSIONS = YES; + GCC_AUTO_VECTORIZATION = YES; + GCC_ENABLE_SSE3_EXTENSIONS = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_INLINES_ARE_PRIVATE_EXTERN = YES; + GCC_MODEL_TUNING = G5; + GCC_SYMBOLS_PRIVATE_EXTERN = YES; + GCC_UNROLL_LOOPS = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + GENERATE_PKGINFO_FILE = YES; + HEADER_SEARCH_PATHS = ( + "$(HEADER_SEARCH_PATHS)", + "$(SRCROOT)/../../../../", + ); + INFOPLIST_FILE = vst2.4Info.plist; + INFOPLIST_PREPROCESS = YES; + PREBINDING = NO; + SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + WRAPPER_EXTENSION = vst; + }; + name = Release; + }; + F4476972093DAE42008998C4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = vst2.4Info.plist; + PRODUCT_NAME = adelay; + }; + name = Debug; + }; + F4476973093DAE42008998C4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = ( + ppc, + i386, + ); + PRODUCT_NAME = adelay; + }; + name = Release; + }; + F4476A0E093DCAF9008998C4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = vst2.4Info.plist; + PRODUCT_NAME = surrounddelay; + }; + name = Debug; + }; + F4476A0F093DCAF9008998C4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = surrounddelay; + }; + name = Release; + }; + F4476C2B093DDACE008998C4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + PRODUCT_NAME = all; + }; + name = Debug; + }; + F4476C2C093DDACE008998C4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + PRODUCT_NAME = all; + ZERO_LINK = NO; + }; + name = Release; + }; + F4FF52250929FBF500DDED7A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = vstxsynth; + }; + name = Debug; + }; + F4FF52260929FBF500DDED7A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = ( + ppc, + i386, + ); + PRODUCT_NAME = vstxsynth; + }; + name = Release; + }; + F4FF52F7092A312900DDED7A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = NO; + INFOPLIST_FILE = "minihost-Info.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + PREBINDING = NO; + PRODUCT_NAME = minihost; + WRAPPER_EXTENSION = app; + ZERO_LINK = YES; + }; + name = Debug; + }; + F4FF52F8092A312900DDED7A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = ( + ppc, + i386, + ); + COPY_PHASE_STRIP = YES; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + GCC_PRECOMPILE_PREFIX_HEADER = NO; + INFOPLIST_FILE = "minihost-Info.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + PREBINDING = NO; + PRODUCT_NAME = minihost; + WRAPPER_EXTENSION = app; + ZERO_LINK = NO; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 4FADC23308B4156C00ABE55E /* Build configuration list for PBXNativeTarget "again" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4FADC23408B4156C00ABE55E /* Debug */, + 4FADC23508B4156C00ABE55E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4FADC23708B4156C00ABE55E /* Build configuration list for PBXProject "vst 2.4 examples" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4FADC23808B4156C00ABE55E /* Debug */, + 4FADC23908B4156C00ABE55E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F4476971093DAE42008998C4 /* Build configuration list for PBXNativeTarget "adelay" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F4476972093DAE42008998C4 /* Debug */, + F4476973093DAE42008998C4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F4476A0D093DCAF9008998C4 /* Build configuration list for PBXNativeTarget "surrounddelay" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F4476A0E093DCAF9008998C4 /* Debug */, + F4476A0F093DCAF9008998C4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F4476C2A093DDACE008998C4 /* Build configuration list for PBXAggregateTarget "all" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F4476C2B093DDACE008998C4 /* Debug */, + F4476C2C093DDACE008998C4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F4FF52240929FBF500DDED7A /* Build configuration list for PBXNativeTarget "vstxsynth" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F4FF52250929FBF500DDED7A /* Debug */, + F4FF52260929FBF500DDED7A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F4FF52F6092A312900DDED7A /* Build configuration list for PBXNativeTarget "minihost" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F4FF52F7092A312900DDED7A /* Debug */, + F4FF52F8092A312900DDED7A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 089C1669FE841209C02AAC07 /* Project object */; +} diff --git a/public.sdk/samples/vst2.x/mac/vst2.4Info.plist b/public.sdk/samples/vst2.x/mac/vst2.4Info.plist new file mode 100644 index 0000000..35c22fa --- /dev/null +++ b/public.sdk/samples/vst2.x/mac/vst2.4Info.plist @@ -0,0 +1,28 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + $(PRODUCT_NAME) + CFBundleName + $(PRODUCT_NAME) + CFBundleIconFile + + CFBundleIdentifier + de.steinberg.vst2.4.example.$(PRODUCT_NAME) + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BNDL + CFBundleSignature + ???? + CFBundleVersion + 1.0 + CFBundleShortVersionString + 1.0 + CSResourcesFileMapped + + + diff --git a/public.sdk/samples/vst2.x/minihost/source/minieditor.cpp b/public.sdk/samples/vst2.x/minihost/source/minieditor.cpp new file mode 100644 index 0000000..80277b1 --- /dev/null +++ b/public.sdk/samples/vst2.x/minihost/source/minieditor.cpp @@ -0,0 +1,203 @@ +//------------------------------------------------------------------------------------------------------- +// VST Plug-Ins SDK +// Version 2.4 $Date: 2006/11/13 09:08:28 $ +// +// Category : VST 2.x SDK Samples +// Filename : minieditor.cpp +// Created by : Steinberg +// Description : VST Mini Host Editor +// +// © 2006, Steinberg Media Technologies, All Rights Reserved +//------------------------------------------------------------------------------------------------------- + +#include "pluginterfaces/vst2.x/aeffectx.h" + +#if _WIN32 +#include +#elif TARGET_API_MAC_CARBON +#include +static pascal OSStatus windowHandler (EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void* inUserData); +static pascal void idleTimerProc (EventLoopTimerRef inTimer, void* inUserData); +#endif + +#include + +#if _WIN32 +//------------------------------------------------------------------------------------------------------- +struct MyDLGTEMPLATE: DLGTEMPLATE +{ + WORD ext[3]; + MyDLGTEMPLATE () + { + memset (this, 0, sizeof (*this)); + }; +}; + +static INT_PTR CALLBACK EditorProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); +static AEffect* theEffect = 0; +#endif + +//------------------------------------------------------------------------------------------------------- +bool checkEffectEditor (AEffect* effect) +{ + if ((effect->flags & effFlagsHasEditor) == 0) + { + printf ("This plug does not have an editor!\n"); + return false; + } + +#if _WIN32 + theEffect = effect; + + MyDLGTEMPLATE t; + t.style = WS_POPUPWINDOW|WS_DLGFRAME|DS_MODALFRAME|DS_CENTER; + t.cx = 100; + t.cy = 100; + DialogBoxIndirectParam (GetModuleHandle (0), &t, 0, (DLGPROC)EditorProc, (LPARAM)effect); + + theEffect = 0; +#elif TARGET_API_MAC_CARBON + WindowRef window; + Rect mRect = {0, 0, 300, 300}; + OSStatus err = CreateNewWindow (kDocumentWindowClass, kWindowCloseBoxAttribute | kWindowCompositingAttribute | kWindowAsyncDragAttribute | kWindowStandardHandlerAttribute, &mRect, &window); + if (err != noErr) + { + printf ("HOST> Could not create mac window !\n"); + return false; + } + static EventTypeSpec eventTypes[] = { + { kEventClassWindow, kEventWindowClose } + }; + InstallWindowEventHandler (window, windowHandler, GetEventTypeCount (eventTypes), eventTypes, window, NULL); + + printf ("HOST> Open editor...\n"); + effect->dispatcher (effect, effEditOpen, 0, 0, window, 0); + ERect* eRect = 0; + printf ("HOST> Get editor rect..\n"); + effect->dispatcher (effect, effEditGetRect, 0, 0, &eRect, 0); + if (eRect) + { + int width = eRect->right - eRect->left; + int height = eRect->bottom - eRect->top; + Rect bounds; + GetWindowBounds (window, kWindowContentRgn, &bounds); + bounds.right = bounds.left + width; + bounds.bottom = bounds.top + height; + SetWindowBounds (window, kWindowContentRgn, &bounds); + } + RepositionWindow (window, NULL, kWindowCenterOnMainScreen); + ShowWindow (window); + + EventLoopTimerRef idleEventLoopTimer; + InstallEventLoopTimer (GetCurrentEventLoop (), kEventDurationSecond / 25., kEventDurationSecond / 25., idleTimerProc, effect, &idleEventLoopTimer); + + RunAppModalLoopForWindow (window); + RemoveEventLoopTimer (idleEventLoopTimer); + + printf ("HOST> Close editor..\n"); + effect->dispatcher (effect, effEditClose, 0, 0, 0, 0); + ReleaseWindow (window); +#endif + return true; +} + +#if _WIN32 +//------------------------------------------------------------------------------------------------------- +INT_PTR CALLBACK EditorProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + AEffect* effect = theEffect; + + switch(msg) + { + //----------------------- + case WM_INITDIALOG : + { + SetWindowText (hwnd, "VST Editor"); + SetTimer (hwnd, 1, 20, 0); + + if (effect) + { + printf ("HOST> Open editor...\n"); + effect->dispatcher (effect, effEditOpen, 0, 0, hwnd, 0); + + printf ("HOST> Get editor rect..\n"); + ERect* eRect = 0; + effect->dispatcher (effect, effEditGetRect, 0, 0, &eRect, 0); + if (eRect) + { + int width = eRect->right - eRect->left; + int height = eRect->bottom - eRect->top; + if (width < 100) + width = 100; + if (height < 100) + height = 100; + + RECT wRect; + SetRect (&wRect, 0, 0, width, height); + AdjustWindowRectEx (&wRect, GetWindowLong (hwnd, GWL_STYLE), FALSE, GetWindowLong (hwnd, GWL_EXSTYLE)); + width = wRect.right - wRect.left; + height = wRect.bottom - wRect.top; + + SetWindowPos (hwnd, HWND_TOP, 0, 0, width, height, SWP_NOMOVE); + } + } + } break; + + //----------------------- + case WM_TIMER : + if (effect) + effect->dispatcher (effect, effEditIdle, 0, 0, 0, 0); + break; + + //----------------------- + case WM_CLOSE : + { + KillTimer (hwnd, 1); + + printf ("HOST> Close editor..\n"); + if (effect) + effect->dispatcher (effect, effEditClose, 0, 0, 0, 0); + + EndDialog (hwnd, IDOK); + } break; + } + + return 0; +} + +#elif TARGET_API_MAC_CARBON +//------------------------------------------------------------------------------------------------------- +pascal void idleTimerProc (EventLoopTimerRef inTimer, void *inUserData) +{ + AEffect* effect = (AEffect*)inUserData; + effect->dispatcher (effect, effEditIdle, 0, 0, 0, 0); +} + +//------------------------------------------------------------------------------------------------------- +pascal OSStatus windowHandler (EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void *inUserData) +{ + OSStatus result = eventNotHandledErr; + WindowRef window = (WindowRef) inUserData; + UInt32 eventClass = GetEventClass (inEvent); + UInt32 eventKind = GetEventKind (inEvent); + + switch (eventClass) + { + case kEventClassWindow: + { + switch (eventKind) + { + case kEventWindowClose: + { + QuitAppModalLoopForWindow (window); + break; + } + } + break; + } + } + + return result; +} + +#endif diff --git a/public.sdk/samples/vst2.x/minihost/source/minihost.cpp b/public.sdk/samples/vst2.x/minihost/source/minihost.cpp new file mode 100644 index 0000000..686ee50 --- /dev/null +++ b/public.sdk/samples/vst2.x/minihost/source/minihost.cpp @@ -0,0 +1,333 @@ +//------------------------------------------------------------------------------------------------------- +// VST Plug-Ins SDK +// Version 2.4 $Date: 2006/11/13 09:08:28 $ +// +// Category : VST 2.x SDK Samples +// Filename : minihost.cpp +// Created by : Steinberg +// Description : VST Mini Host +// +// © 2006, Steinberg Media Technologies, All Rights Reserved +//------------------------------------------------------------------------------------------------------- + +#include "pluginterfaces/vst2.x/aeffectx.h" + +#if _WIN32 +#include +#elif TARGET_API_MAC_CARBON +#include +#endif + +#include + +//------------------------------------------------------------------------------------------------------- +static const VstInt32 kBlockSize = 512; +static const float kSampleRate = 48000.f; +static const VstInt32 kNumProcessCycles = 5; + +//------------------------------------------------------------------------------------------------------- +typedef AEffect* (*PluginEntryProc) (audioMasterCallback audioMaster); +static VstIntPtr VSTCALLBACK HostCallback (AEffect* effect, VstInt32 opcode, VstInt32 index, VstIntPtr value, void* ptr, float opt); + +//------------------------------------------------------------------------------------------------------- +// PluginLoader +//------------------------------------------------------------------------------------------------------- +struct PluginLoader +{ +//------------------------------------------------------------------------------------------------------- + void* module; + + PluginLoader () + : module (0) + {} + + ~PluginLoader () + { + if (module) + { + #if _WIN32 + FreeLibrary ((HMODULE)module); + #elif TARGET_API_MAC_CARBON + CFBundleUnloadExecutable ((CFBundleRef)module); + CFRelease ((CFBundleRef)module); + #endif + } + } + + bool loadLibrary (const char* fileName) + { + #if _WIN32 + module = LoadLibrary (fileName); + #elif TARGET_API_MAC_CARBON + CFStringRef fileNameString = CFStringCreateWithCString (NULL, fileName, kCFStringEncodingUTF8); + if (fileNameString == 0) + return false; + CFURLRef url = CFURLCreateWithFileSystemPath (NULL, fileNameString, kCFURLPOSIXPathStyle, false); + CFRelease (fileNameString); + if (url == 0) + return false; + module = CFBundleCreate (NULL, url); + CFRelease (url); + if (module && CFBundleLoadExecutable ((CFBundleRef)module) == false) + return false; + #endif + return module != 0; + } + + PluginEntryProc getMainEntry () + { + PluginEntryProc mainProc = 0; + #if _WIN32 + mainProc = (PluginEntryProc)GetProcAddress ((HMODULE)module, "VSTPluginMain"); + if (!mainProc) + mainProc = (PluginEntryProc)GetProcAddress ((HMODULE)module, "main"); + #elif TARGET_API_MAC_CARBON + mainProc = (PluginEntryProc)CFBundleGetFunctionPointerForName ((CFBundleRef)module, CFSTR("VSTPluginMain")); + if (!mainProc) + mainProc = (PluginEntryProc)CFBundleGetFunctionPointerForName ((CFBundleRef)module, CFSTR("main_macho")); + #endif + return mainProc; + } +//------------------------------------------------------------------------------------------------------- +}; + +//------------------------------------------------------------------------------------------------------- +static bool checkPlatform () +{ +#if VST_64BIT_PLATFORM + printf ("*** This is a 64 Bit Build! ***\n"); +#else + printf ("*** This is a 32 Bit Build! ***\n"); +#endif + + int sizeOfVstIntPtr = sizeof (VstIntPtr); + int sizeOfVstInt32 = sizeof (VstInt32); + int sizeOfPointer = sizeof (void*); + int sizeOfAEffect = sizeof (AEffect); + + printf ("VstIntPtr = %d Bytes, VstInt32 = %d Bytes, Pointer = %d Bytes, AEffect = %d Bytes\n\n", + sizeOfVstIntPtr, sizeOfVstInt32, sizeOfPointer, sizeOfAEffect); + + return sizeOfVstIntPtr == sizeOfPointer; +} + +//------------------------------------------------------------------------------------------------------- +static void checkEffectProperties (AEffect* effect); +static void checkEffectProcessing (AEffect* effect); +extern bool checkEffectEditor (AEffect* effect); // minieditor.cpp + +//------------------------------------------------------------------------------------------------------- +int main (int argc, char* argv[]) +{ + if (!checkPlatform ()) + { + printf ("Platform verification failed! Please check your Compiler Settings!\n"); + return -1; + } + + const char* fileName = "again.dll"; + //const char* fileName = "adelay.dll"; + //const char* fileName = "surrounddelay.dll"; + //const char* fileName = "vstxsynth.dll"; + //const char* fileName = "drawtest.dll"; + + if (argc > 1) + fileName = argv[1]; + + printf ("HOST> Load library...\n"); + PluginLoader loader; + if (!loader.loadLibrary (fileName)) + { + printf ("Failed to load VST Plugin library!\n"); + return -1; + } + + PluginEntryProc mainEntry = loader.getMainEntry (); + if (!mainEntry) + { + printf ("VST Plugin main entry not found!\n"); + return -1; + } + + printf ("HOST> Create effect...\n"); + AEffect* effect = mainEntry (HostCallback); + if (!effect) + { + printf ("Failed to create effect instance!\n"); + return -1; + } + + printf ("HOST> Init sequence...\n"); + effect->dispatcher (effect, effOpen, 0, 0, 0, 0); + effect->dispatcher (effect, effSetSampleRate, 0, 0, 0, kSampleRate); + effect->dispatcher (effect, effSetBlockSize, 0, kBlockSize, 0, 0); + + checkEffectProperties (effect); + checkEffectProcessing (effect); + checkEffectEditor (effect); + + printf ("HOST> Close effect...\n"); + effect->dispatcher (effect, effClose, 0, 0, 0, 0); + return 0; +} + +//------------------------------------------------------------------------------------------------------- +void checkEffectProperties (AEffect* effect) +{ + printf ("HOST> Gathering properties...\n"); + + char effectName[256] = {0}; + char vendorString[256] = {0}; + char productString[256] = {0}; + + effect->dispatcher (effect, effGetEffectName, 0, 0, effectName, 0); + effect->dispatcher (effect, effGetVendorString, 0, 0, vendorString, 0); + effect->dispatcher (effect, effGetProductString, 0, 0, productString, 0); + + printf ("Name = %s\nVendor = %s\nProduct = %s\n\n", effectName, vendorString, productString); + + printf ("numPrograms = %d\nnumParams = %d\nnumInputs = %d\nnumOutputs = %d\n\n", + effect->numPrograms, effect->numParams, effect->numInputs, effect->numOutputs); + + // Iterate programs... + for (VstInt32 progIndex = 0; progIndex < effect->numPrograms; progIndex++) + { + char progName[256] = {0}; + if (!effect->dispatcher (effect, effGetProgramNameIndexed, progIndex, 0, progName, 0)) + { + effect->dispatcher (effect, effSetProgram, 0, progIndex, 0, 0); // Note: old program not restored here! + effect->dispatcher (effect, effGetProgramName, 0, 0, progName, 0); + } + printf ("Program %03d: %s\n", progIndex, progName); + } + + printf ("\n"); + + // Iterate parameters... + for (VstInt32 paramIndex = 0; paramIndex < effect->numParams; paramIndex++) + { + char paramName[256] = {0}; + char paramLabel[256] = {0}; + char paramDisplay[256] = {0}; + + effect->dispatcher (effect, effGetParamName, paramIndex, 0, paramName, 0); + effect->dispatcher (effect, effGetParamLabel, paramIndex, 0, paramLabel, 0); + effect->dispatcher (effect, effGetParamDisplay, paramIndex, 0, paramDisplay, 0); + float value = effect->getParameter (effect, paramIndex); + + printf ("Param %03d: %s [%s %s] (normalized = %f)\n", paramIndex, paramName, paramDisplay, paramLabel, value); + } + + printf ("\n"); + + // Can-do nonsense... + static const char* canDos[] = + { + "receiveVstEvents", + "receiveVstMidiEvent", + "midiProgramNames" + }; + + for (VstInt32 canDoIndex = 0; canDoIndex < sizeof (canDos) / sizeof (canDos[0]); canDoIndex++) + { + printf ("Can do %s... ", canDos[canDoIndex]); + VstInt32 result = (VstInt32)effect->dispatcher (effect, effCanDo, 0, 0, (void*)canDos[canDoIndex], 0); + switch (result) + { + case 0 : printf ("don't know"); break; + case 1 : printf ("yes"); break; + case -1 : printf ("definitely not!"); break; + default : printf ("?????"); + } + printf ("\n"); + } + + printf ("\n"); +} + +//------------------------------------------------------------------------------------------------------- +void checkEffectProcessing (AEffect* effect) +{ + float** inputs = 0; + float** outputs = 0; + VstInt32 numInputs = effect->numInputs; + VstInt32 numOutputs = effect->numOutputs; + + if (numInputs > 0) + { + inputs = new float*[numInputs]; + for (VstInt32 i = 0; i < numInputs; i++) + { + inputs[i] = new float[kBlockSize]; + memset (inputs[i], 0, kBlockSize * sizeof (float)); + } + } + + if (numOutputs > 0) + { + outputs = new float*[numOutputs]; + for (VstInt32 i = 0; i < numOutputs; i++) + { + outputs[i] = new float[kBlockSize]; + memset (outputs[i], 0, kBlockSize * sizeof (float)); + } + } + + printf ("HOST> Resume effect...\n"); + effect->dispatcher (effect, effMainsChanged, 0, 1, 0, 0); + + for (VstInt32 processCount = 0; processCount < kNumProcessCycles; processCount++) + { + printf ("HOST> Process Replacing...\n"); + effect->processReplacing (effect, inputs, outputs, kBlockSize); + } + + printf ("HOST> Suspend effect...\n"); + effect->dispatcher (effect, effMainsChanged, 0, 0, 0, 0); + + if (numInputs > 0) + { + for (VstInt32 i = 0; i < numInputs; i++) + delete [] inputs[i]; + delete [] inputs; + } + + if (numOutputs > 0) + { + for (VstInt32 i = 0; i < numOutputs; i++) + delete [] outputs[i]; + delete [] outputs; + } +} + +//------------------------------------------------------------------------------------------------------- +VstIntPtr VSTCALLBACK HostCallback (AEffect* effect, VstInt32 opcode, VstInt32 index, VstIntPtr value, void* ptr, float opt) +{ + VstIntPtr result = 0; + + // Filter idle calls... + bool filtered = false; + if (opcode == audioMasterIdle) + { + static bool wasIdle = false; + if (wasIdle) + filtered = true; + else + { + printf ("(Future idle calls will not be displayed!)\n"); + wasIdle = true; + } + } + + if (!filtered) + printf ("PLUG> HostCallback (opcode %d)\n index = %d, value = %p, ptr = %p, opt = %f\n", opcode, index, FromVstPtr (value), ptr, opt); + + switch (opcode) + { + case audioMasterVersion : + result = kVstVersion; + break; + } + + return result; +} diff --git a/public.sdk/samples/vst2.x/minihost/win/minihost.vcproj b/public.sdk/samples/vst2.x/minihost/win/minihost.vcproj new file mode 100644 index 0000000..26dd759 --- /dev/null +++ b/public.sdk/samples/vst2.x/minihost/win/minihost.vcproj @@ -0,0 +1,364 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public.sdk/samples/vst2.x/vstxsynth/resource/vstxsynth.rc b/public.sdk/samples/vst2.x/vstxsynth/resource/vstxsynth.rc new file mode 100644 index 0000000..eb0135c --- /dev/null +++ b/public.sdk/samples/vst2.x/vstxsynth/resource/vstxsynth.rc @@ -0,0 +1,3 @@ +#define APSTUDIO_READONLY_SYMBOLS + +1 VSTXML "vstxsynth.vstxml" \ No newline at end of file diff --git a/public.sdk/samples/vst2.x/vstxsynth/resource/vstxsynth.vstxml b/public.sdk/samples/vst2.x/vstxsynth/resource/vstxsynth.vstxml new file mode 100644 index 0000000..f56fe24 --- /dev/null +++ b/public.sdk/samples/vst2.x/vstxsynth/resource/vstxsynth.vstxml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public.sdk/samples/vst2.x/vstxsynth/source/gmnames.h b/public.sdk/samples/vst2.x/vstxsynth/source/gmnames.h new file mode 100644 index 0000000..78821fc --- /dev/null +++ b/public.sdk/samples/vst2.x/vstxsynth/source/gmnames.h @@ -0,0 +1,222 @@ +//------------------------------------------------------------------------------------------------------- +// VST Plug-Ins SDK +// Version 2.4 $Date: 2006/11/13 09:08:27 $ +// +// Category : VST 2.x SDK Samples +// Filename : gmnames.h +// Created by : Steinberg Media Technologies +// Description : Example VstXSynth +// +// © 2006, Steinberg Media Technologies, All Rights Reserved +//------------------------------------------------------------------------------------------------------- + +#ifndef __gmnames__ +#define __gmnames__ + +static const long kNumGmCategories = 17; + +static const char* GmCategories[kNumGmCategories] = +{ + "Piano", + "Percussion", + "Organ", + "Guitar", + "Bass", + "Strings", + "Ensemble", + "Brass", + "Reed", + "Pipe", + "Synth Lead", + "SynthPad", + "Synth Effects", + "Ethnic", + "Percussive", + "Effects", + "DrumSets" +}; + +static short GmCategoriesFirstIndices [kNumGmCategories + 1] = +{ + 0, 7, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128 +}; + +static const char* GmNames [128] = +{ + // Piano + "Acoustic Grand Piano", + "Bright Acoustic Piano", + "Electric Grand Piano", + "Honky-tonk Piano", + "Electric Piano 1", + "Electric Piano 2", + "Harpsichord", + + // Percussion + "Clavi", // 7 + "Celesta", + "Glockenspiel", + "Music Box", + "Vibraphone", + "Marimba", + "Xylophone", + "Tubular Bells", + "Dulcimer", + + // Organ + "Drawbar Organ", // 16 + "Percussive Organ", + "Rock Organ", + "Church Organ", + "Reed Organ", + "Accordion", + "Harmonica", + "Tango Accordion", + + // Gitar + "Acoustic Guitar (nylon)", // 24 + "Acoustic Guitar (steel)", + "Electric Guitar (jazz)", + "Electric Guitar (clean)", + "Electric Guitar (muted)", + "Overdriven Guitar", + "Distortion Guitar", + "Guitar harmonics", + + // Bass + "Acoustic Bass", // 32 + "Electric Bass (finger)", + "Electric Bass (pick)", + "Fretless Bass", + "Slap Bass 1", + "Slap Bass 2", + "Synth Bass 1", + "Synth Bass 2", + + // strings + "Violin", // 40 + "Viola", + "Cello", + "Contrabass", + "Tremolo Strings", + "Pizzicato Strings", + "Orchestral Harp", + "Timpani", + + // Ensemble + "String Ensemble 1", // 48 + "String Ensemble 2", + "SynthStrings 1", + "SynthStrings 2", + "Choir Aahs", + "Voice Oohs", + "Synth Voice", + "Orchestra Hit", + + // Brass + "Trumpet", // 56 + "Trombone", + "Tuba", + "Muted Trumpet", + "French Horn", + "Brass Section", + "SynthBrass 1", + "SynthBrass 2", + + // Reed + "Soprano Sax", // 64 + "Alto Sax", + "Tenor Sax", + "Baritone Sax", + "Oboe", + "English Horn", + "Bassoon", + "Clarinet", + + // Pipe + "Piccolo", // 72 + "Flute", + "Recorder", + "Pan Flute", + "Blown Bottle", + "Shakuhachi", + "Whistle", + "Ocarina", + + // Synth Lead + "Lead 1 (square)", // 80 + "Lead 2 (sawtooth)", + "Lead 3 (calliope)", + "Lead 4 (chiff)", + "Lead 5 (charang)", + "Lead 6 (voice)", + "Lead 7 (fifths)", + "Lead 8 (bass + lead)", + + // Synth Pad + "Pad 1 (new age)", // 88 + "Pad 2 (warm)", + "Pad 3 (polysynth)", + "Pad 4 (choir)", + "Pad 5 (bowed)", + "Pad 6 (metallic)", + "Pad 7 (halo)", + "Pad 8 (sweep)", + + // Synth Fx + "FX 1 (rain)", // 96 + "FX 2 (soundtrack)", + "FX 3 (crystal)", + "FX 4 (atmosphere)", + "FX 5 (brightness)", + "FX 6 (goblins)", + "FX 7 (echoes)", + "FX 8 (sci-fi)", + + // Ethnic + "Sitar", // 104 + "Banjo", + "Shamisen", + "Koto", + "Kalimba", + "Bag pipe", + "Fiddle", + "Shanai", + + // Percussive + "Tinkle Bell", // 112 + "Agogo", + "Steel Drums", + "Woodblock", + "Taiko Drum", + "Melodic Tom", + "Synth Drum", + "Reverse Cymbal", + + // Effects + "Guitar Fret Noise", // 120 + "Breath Noise", + "Seashore", + "Bird Tweet", + "Telephone Ring", + "Helicopter", + "Applause", + "Gunshot" +}; + +static const char* GmDrumSets[11] = +{ + "Standard", + "Room", + "Power", + "Electronic", + "Analog", + "Jazz", + "Brush", + "Orchestra", + "Clavinova", + "RX", + "C/M" +}; + +#endif diff --git a/public.sdk/samples/vst2.x/vstxsynth/source/vstxsynth.cpp b/public.sdk/samples/vst2.x/vstxsynth/source/vstxsynth.cpp new file mode 100644 index 0000000..f23cd02 --- /dev/null +++ b/public.sdk/samples/vst2.x/vstxsynth/source/vstxsynth.cpp @@ -0,0 +1,392 @@ +//------------------------------------------------------------------------------------------------------- +// VST Plug-Ins SDK +// Version 2.4 $Date: 2006/11/13 09:08:27 $ +// +// Category : VST 2.x SDK Samples +// Filename : vstxsynth.cpp +// Created by : Steinberg Media Technologies +// Description : Example VstXSynth +// +// A simple 2 oscillators test 'synth', +// Each oscillator has waveform, frequency, and volume +// +// *very* basic monophonic 'synth' example. you should not attempt to use this +// example 'algorithm' to start a serious virtual instrument; it is intended to demonstrate +// how VstEvents ('MIDI') are handled, but not how a virtual analog synth works. +// there are numerous much better examples on the web which show how to deal with +// bandlimited waveforms etc. +// +// © 2006, Steinberg Media Technologies, All Rights Reserved +//------------------------------------------------------------------------------------------------------- + +#include "vstxsynth.h" +#include "gmnames.h" + +//------------------------------------------------------------------------------------------------------- +AudioEffect* createEffectInstance (audioMasterCallback audioMaster) +{ + return new VstXSynth (audioMaster); +} + +//----------------------------------------------------------------------------------------- +// VstXSynthProgram +//----------------------------------------------------------------------------------------- +VstXSynthProgram::VstXSynthProgram () +{ + // Default Program Values + fWaveform1 = 0.f; // saw + fFreq1 =.0f; + fVolume1 = .33f; + + fWaveform2 = 1.f; // pulse + fFreq2 = .05f; // slightly higher + fVolume2 = .33f; + + fVolume = .9f; + vst_strncpy (name, "Basic", kVstMaxProgNameLen); +} + +//----------------------------------------------------------------------------------------- +// VstXSynth +//----------------------------------------------------------------------------------------- +VstXSynth::VstXSynth (audioMasterCallback audioMaster) +: AudioEffectX (audioMaster, kNumPrograms, kNumParams) +{ + // initialize programs + programs = new VstXSynthProgram[kNumPrograms]; + for (VstInt32 i = 0; i < 16; i++) + channelPrograms[i] = i; + + if (programs) + setProgram (0); + + if (audioMaster) + { + setNumInputs (0); // no inputs + setNumOutputs (kNumOutputs); // 2 outputs, 1 for each oscillator + canProcessReplacing (); + isSynth (); + setUniqueID ('VxS2'); // <<= kNumPrograms) + return; + + VstXSynthProgram *ap = &programs[program]; + curProgram = program; + + fWaveform1 = ap->fWaveform1; + fFreq1 = ap->fFreq1; + fVolume1 = ap->fVolume1; + + fWaveform2 = ap->fWaveform2; + fFreq2 = ap->fFreq2; + fVolume2 = ap->fVolume2; + + fVolume = ap->fVolume; +} + +//----------------------------------------------------------------------------------------- +void VstXSynth::setProgramName (char* name) +{ + vst_strncpy (programs[curProgram].name, name, kVstMaxProgNameLen); +} + +//----------------------------------------------------------------------------------------- +void VstXSynth::getProgramName (char* name) +{ + vst_strncpy (name, programs[curProgram].name, kVstMaxProgNameLen); +} + +//----------------------------------------------------------------------------------------- +void VstXSynth::getParameterLabel (VstInt32 index, char* label) +{ + switch (index) + { + case kWaveform1: + case kWaveform2: + vst_strncpy (label, "Shape", kVstMaxParamStrLen); + break; + + case kFreq1: + case kFreq2: + vst_strncpy (label, "Hz", kVstMaxParamStrLen); + break; + + case kVolume1: + case kVolume2: + case kVolume: + vst_strncpy (label, "dB", kVstMaxParamStrLen); + break; + } +} + +//----------------------------------------------------------------------------------------- +void VstXSynth::getParameterDisplay (VstInt32 index, char* text) +{ + text[0] = 0; + switch (index) + { + case kWaveform1: + if (fWaveform1 < .5) + vst_strncpy (text, "Sawtooth", kVstMaxParamStrLen); + else + vst_strncpy (text, "Pulse", kVstMaxParamStrLen); + break; + + case kFreq1: float2string (fFreq1, text, kVstMaxParamStrLen); break; + case kVolume1: dB2string (fVolume1, text, kVstMaxParamStrLen); break; + + case kWaveform2: + if (fWaveform2 < .5) + vst_strncpy (text, "Sawtooth", kVstMaxParamStrLen); + else + vst_strncpy (text, "Pulse", kVstMaxParamStrLen); + break; + + case kFreq2: float2string (fFreq2, text, kVstMaxParamStrLen); break; + case kVolume2: dB2string (fVolume2, text, kVstMaxParamStrLen); break; + case kVolume: dB2string (fVolume, text, kVstMaxParamStrLen); break; + } +} + +//----------------------------------------------------------------------------------------- +void VstXSynth::getParameterName (VstInt32 index, char* label) +{ + switch (index) + { + case kWaveform1: vst_strncpy (label, "Wave 1", kVstMaxParamStrLen); break; + case kFreq1: vst_strncpy (label, "Freq 1", kVstMaxParamStrLen); break; + case kVolume1: vst_strncpy (label, "Levl 1", kVstMaxParamStrLen); break; + case kWaveform2: vst_strncpy (label, "Wave 2", kVstMaxParamStrLen); break; + case kFreq2: vst_strncpy (label, "Freq 2", kVstMaxParamStrLen); break; + case kVolume2: vst_strncpy (label, "Levl 2", kVstMaxParamStrLen); break; + case kVolume: vst_strncpy (label, "Volume", kVstMaxParamStrLen); break; + } +} + +//----------------------------------------------------------------------------------------- +void VstXSynth::setParameter (VstInt32 index, float value) +{ + VstXSynthProgram *ap = &programs[curProgram]; + switch (index) + { + case kWaveform1: fWaveform1 = ap->fWaveform1 = value; break; + case kFreq1: fFreq1 = ap->fFreq1 = value; break; + case kVolume1: fVolume1 = ap->fVolume1 = value; break; + case kWaveform2: fWaveform2 = ap->fWaveform2 = value; break; + case kFreq2: fFreq2 = ap->fFreq2 = value; break; + case kVolume2: fVolume2 = ap->fVolume2 = value; break; + case kVolume: fVolume = ap->fVolume = value; break; + } +} + +//----------------------------------------------------------------------------------------- +float VstXSynth::getParameter (VstInt32 index) +{ + float value = 0; + switch (index) + { + case kWaveform1: value = fWaveform1; break; + case kFreq1: value = fFreq1; break; + case kVolume1: value = fVolume1; break; + case kWaveform2: value = fWaveform2; break; + case kFreq2: value = fFreq2; break; + case kVolume2: value = fVolume2; break; + case kVolume: value = fVolume; break; + } + return value; +} + +//----------------------------------------------------------------------------------------- +bool VstXSynth::getOutputProperties (VstInt32 index, VstPinProperties* properties) +{ + if (index < kNumOutputs) + { + vst_strncpy (properties->label, "Vstx ", 63); + char temp[11] = {0}; + int2string (index + 1, temp, 10); + vst_strncat (properties->label, temp, 63); + + properties->flags = kVstPinIsActive; + if (index < 2) + properties->flags |= kVstPinIsStereo; // make channel 1+2 stereo + return true; + } + return false; +} + +//----------------------------------------------------------------------------------------- +bool VstXSynth::getProgramNameIndexed (VstInt32 category, VstInt32 index, char* text) +{ + if (index < kNumPrograms) + { + vst_strncpy (text, programs[index].name, kVstMaxProgNameLen); + return true; + } + return false; +} + +//----------------------------------------------------------------------------------------- +bool VstXSynth::getEffectName (char* name) +{ + vst_strncpy (name, "VstXSynth", kVstMaxEffectNameLen); + return true; +} + +//----------------------------------------------------------------------------------------- +bool VstXSynth::getVendorString (char* text) +{ + vst_strncpy (text, "Steinberg Media Technologies", kVstMaxVendorStrLen); + return true; +} + +//----------------------------------------------------------------------------------------- +bool VstXSynth::getProductString (char* text) +{ + vst_strncpy (text, "Vst Test Synth", kVstMaxProductStrLen); + return true; +} + +//----------------------------------------------------------------------------------------- +VstInt32 VstXSynth::getVendorVersion () +{ + return 1000; +} + +//----------------------------------------------------------------------------------------- +VstInt32 VstXSynth::canDo (char* text) +{ + if (!strcmp (text, "receiveVstEvents")) + return 1; + if (!strcmp (text, "receiveVstMidiEvent")) + return 1; + if (!strcmp (text, "midiProgramNames")) + return 1; + return -1; // explicitly can't do; 0 => don't know +} + +//----------------------------------------------------------------------------------------- +VstInt32 VstXSynth::getNumMidiInputChannels () +{ + return 1; // we are monophonic +} + +//----------------------------------------------------------------------------------------- +VstInt32 VstXSynth::getNumMidiOutputChannels () +{ + return 0; // no MIDI output back to Host app +} + +// midi program names: +// as an example, GM names are used here. in fact, VstXSynth doesn't even support +// multi-timbral operation so it's really just for demonstration. +// a 'real' instrument would have a number of voices which use the +// programs[channelProgram[channel]] parameters when it receives +// a note on message. + +//------------------------------------------------------------------------ +VstInt32 VstXSynth::getMidiProgramName (VstInt32 channel, MidiProgramName* mpn) +{ + VstInt32 prg = mpn->thisProgramIndex; + if (prg < 0 || prg >= 128) + return 0; + fillProgram (channel, prg, mpn); + if (channel == 9) + return 1; + return 128L; +} + +//------------------------------------------------------------------------ +VstInt32 VstXSynth::getCurrentMidiProgram (VstInt32 channel, MidiProgramName* mpn) +{ + if (channel < 0 || channel >= 16 || !mpn) + return -1; + VstInt32 prg = channelPrograms[channel]; + mpn->thisProgramIndex = prg; + fillProgram (channel, prg, mpn); + return prg; +} + +//------------------------------------------------------------------------ +void VstXSynth::fillProgram (VstInt32 channel, VstInt32 prg, MidiProgramName* mpn) +{ + mpn->midiBankMsb = + mpn->midiBankLsb = -1; + mpn->reserved = 0; + mpn->flags = 0; + + if (channel == 9) // drums + { + vst_strncpy (mpn->name, "Standard", 63); + mpn->midiProgram = 0; + mpn->parentCategoryIndex = 0; + } + else + { + vst_strncpy (mpn->name, GmNames[prg], 63); + mpn->midiProgram = (char)prg; + mpn->parentCategoryIndex = -1; // for now + + for (VstInt32 i = 0; i < kNumGmCategories; i++) + { + if (prg >= GmCategoriesFirstIndices[i] && prg < GmCategoriesFirstIndices[i + 1]) + { + mpn->parentCategoryIndex = i; + break; + } + } + } +} + +//------------------------------------------------------------------------ +VstInt32 VstXSynth::getMidiProgramCategory (VstInt32 channel, MidiProgramCategory* cat) +{ + cat->parentCategoryIndex = -1; // -1:no parent category + cat->flags = 0; // reserved, none defined yet, zero. + VstInt32 category = cat->thisCategoryIndex; + if (channel == 9) + { + vst_strncpy (cat->name, "Drums", 63); + return 1; + } + if (category >= 0 && category < kNumGmCategories) + vst_strncpy (cat->name, GmCategories[category], 63); + else + cat->name[0] = 0; + return kNumGmCategories; +} + +//------------------------------------------------------------------------ +bool VstXSynth::hasMidiProgramsChanged (VstInt32 channel) +{ + return false; // updateDisplay () +} + +//------------------------------------------------------------------------ +bool VstXSynth::getMidiKeyName (VstInt32 channel, MidiKeyName* key) + // struct will be filled with information for 'thisProgramIndex' and 'thisKeyNumber' + // if keyName is "" the standard name of the key will be displayed. + // if false is returned, no MidiKeyNames defined for 'thisProgramIndex'. +{ + // key->thisProgramIndex; // >= 0. fill struct for this program index. + // key->thisKeyNumber; // 0 - 127. fill struct for this key number. + key->keyName[0] = 0; + key->reserved = 0; // zero + key->flags = 0; // reserved, none defined yet, zero. + return false; +} diff --git a/public.sdk/samples/vst2.x/vstxsynth/source/vstxsynth.h b/public.sdk/samples/vst2.x/vstxsynth/source/vstxsynth.h new file mode 100644 index 0000000..6212cac --- /dev/null +++ b/public.sdk/samples/vst2.x/vstxsynth/source/vstxsynth.h @@ -0,0 +1,139 @@ +//------------------------------------------------------------------------------------------------------- +// VST Plug-Ins SDK +// Version 2.4 $Date: 2006/11/13 09:08:27 $ +// +// Category : VST 2.x SDK Samples +// Filename : vstxsynth.h +// Created by : Steinberg Media Technologies +// Description : Example VstXSynth +// +// A simple 2 oscillators test 'synth', +// Each oscillator has waveform, frequency, and volume +// +// *very* basic monophonic 'synth' example. you should not attempt to use this +// example 'algorithm' to start a serious virtual instrument; it is intended to demonstrate +// how VstEvents ('MIDI') are handled, but not how a virtual analog synth works. +// there are numerous much better examples on the web which show how to deal with +// bandlimited waveforms etc. +// +// © 2006, Steinberg Media Technologies, All Rights Reserved +//------------------------------------------------------------------------------------------------------- + +#ifndef __vstxsynth__ +#define __vstxsynth__ + +#include "public.sdk/source/vst2.x/audioeffectx.h" + +//------------------------------------------------------------------------------------------ +enum +{ + // Global + kNumPrograms = 128, + kNumOutputs = 2, + + // Parameters Tags + kWaveform1 = 0, + kFreq1, + kVolume1, + + kWaveform2, + kFreq2, + kVolume2, + + kVolume, + + kNumParams +}; + +//------------------------------------------------------------------------------------------ +// VstXSynthProgram +//------------------------------------------------------------------------------------------ +class VstXSynthProgram +{ +friend class VstXSynth; +public: + VstXSynthProgram (); + ~VstXSynthProgram () {} + +private: + float fWaveform1; + float fFreq1; + float fVolume1; + + float fWaveform2; + float fFreq2; + float fVolume2; + + float fVolume; + char name[kVstMaxProgNameLen+1]; +}; + +//------------------------------------------------------------------------------------------ +// VstXSynth +//------------------------------------------------------------------------------------------ +class VstXSynth : public AudioEffectX +{ +public: + VstXSynth (audioMasterCallback audioMaster); + ~VstXSynth (); + + virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames); + virtual VstInt32 processEvents (VstEvents* events); + + virtual void setProgram (VstInt32 program); + virtual void setProgramName (char* name); + virtual void getProgramName (char* name); + virtual bool getProgramNameIndexed (VstInt32 category, VstInt32 index, char* text); + + virtual void setParameter (VstInt32 index, float value); + virtual float getParameter (VstInt32 index); + virtual void getParameterLabel (VstInt32 index, char* label); + virtual void getParameterDisplay (VstInt32 index, char* text); + virtual void getParameterName (VstInt32 index, char* text); + + virtual void setSampleRate (float sampleRate); + virtual void setBlockSize (VstInt32 blockSize); + + virtual bool getOutputProperties (VstInt32 index, VstPinProperties* properties); + + virtual bool getEffectName (char* name); + virtual bool getVendorString (char* text); + virtual bool getProductString (char* text); + virtual VstInt32 getVendorVersion (); + virtual VstInt32 canDo (char* text); + + virtual VstInt32 getNumMidiInputChannels (); + virtual VstInt32 getNumMidiOutputChannels (); + + virtual VstInt32 getMidiProgramName (VstInt32 channel, MidiProgramName* midiProgramName); + virtual VstInt32 getCurrentMidiProgram (VstInt32 channel, MidiProgramName* currentProgram); + virtual VstInt32 getMidiProgramCategory (VstInt32 channel, MidiProgramCategory* category); + virtual bool hasMidiProgramsChanged (VstInt32 channel); + virtual bool getMidiKeyName (VstInt32 channel, MidiKeyName* keyName); + +private: + float fWaveform1; + float fFreq1; + float fVolume1; + float fWaveform2; + float fFreq2; + float fVolume2; + float fVolume; + float fPhase1, fPhase2; + float fScaler; + + VstXSynthProgram* programs; + VstInt32 channelPrograms[16]; + + VstInt32 currentNote; + VstInt32 currentVelocity; + VstInt32 currentDelta; + bool noteIsOn; + + void initProcess (); + void noteOn (VstInt32 note, VstInt32 velocity, VstInt32 delta); + void noteOff (); + void fillProgram (VstInt32 channel, VstInt32 prg, MidiProgramName* mpn); +}; + +#endif diff --git a/public.sdk/samples/vst2.x/vstxsynth/source/vstxsynthproc.cpp b/public.sdk/samples/vst2.x/vstxsynth/source/vstxsynthproc.cpp new file mode 100644 index 0000000..61debac --- /dev/null +++ b/public.sdk/samples/vst2.x/vstxsynth/source/vstxsynthproc.cpp @@ -0,0 +1,178 @@ +//------------------------------------------------------------------------------------------------------- +// VST Plug-Ins SDK +// Version 2.4 $Date: 2006/11/13 09:08:27 $ +// +// Category : VST 2.x SDK Samples +// Filename : vstxsynthproc.cpp +// Created by : Steinberg Media Technologies +// Description : Example VstXSynth +// +// A simple 2 oscillators test 'synth', +// Each oscillator has waveform, frequency, and volume +// +// *very* basic monophonic 'synth' example. you should not attempt to use this +// example 'algorithm' to start a serious virtual instrument; it is intended to demonstrate +// how VstEvents ('MIDI') are handled, but not how a virtual analog synth works. +// there are numerous much better examples on the web which show how to deal with +// bandlimited waveforms etc. +// +// © 2006, Steinberg Media Technologies, All Rights Reserved +//------------------------------------------------------------------------------------------------------- + +#include "vstxsynth.h" + +enum +{ + kNumFrequencies = 128, // 128 midi notes + kWaveSize = 4096 // samples (must be power of 2 here) +}; + +const double midiScaler = (1. / 127.); +static float sawtooth[kWaveSize]; +static float pulse[kWaveSize]; +static float freqtab[kNumFrequencies]; + +//----------------------------------------------------------------------------------------- +// VstXSynth +//----------------------------------------------------------------------------------------- +void VstXSynth::setSampleRate (float sampleRate) +{ + AudioEffectX::setSampleRate (sampleRate); + fScaler = (float)((double)kWaveSize / (double)sampleRate); +} + +//----------------------------------------------------------------------------------------- +void VstXSynth::setBlockSize (VstInt32 blockSize) +{ + AudioEffectX::setBlockSize (blockSize); + // you may need to have to do something here... +} + +//----------------------------------------------------------------------------------------- +void VstXSynth::initProcess () +{ + fPhase1 = fPhase2 = 0.f; + fScaler = (float)((double)kWaveSize / 44100.); // we don't know the sample rate yet + noteIsOn = false; + currentDelta = currentNote = currentDelta = 0; + VstInt32 i; + + // make waveforms + VstInt32 wh = kWaveSize / 4; // 1:3 pulse + for (i = 0; i < kWaveSize; i++) + { + sawtooth[i] = (float)(-1. + (2. * ((double)i / (double)kWaveSize))); + pulse[i] = (i < wh) ? -1.f : 1.f; + } + + // make frequency (Hz) table + double k = 1.059463094359; // 12th root of 2 + double a = 6.875; // a + a *= k; // b + a *= k; // bb + a *= k; // c, frequency of midi note 0 + for (i = 0; i < kNumFrequencies; i++) // 128 midi notes + { + freqtab[i] = (float)a; + a *= k; + } +} + +//----------------------------------------------------------------------------------------- +void VstXSynth::processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames) +{ + float* out1 = outputs[0]; + float* out2 = outputs[1]; + + if (noteIsOn) + { + float baseFreq = freqtab[currentNote & 0x7f] * fScaler; + float freq1 = baseFreq + fFreq1; // not really linear... + float freq2 = baseFreq + fFreq2; + float* wave1 = (fWaveform1 < .5) ? sawtooth : pulse; + float* wave2 = (fWaveform2 < .5) ? sawtooth : pulse; + float wsf = (float)kWaveSize; + float vol = (float)(fVolume * (double)currentVelocity * midiScaler); + VstInt32 mask = kWaveSize - 1; + + if (currentDelta > 0) + { + if (currentDelta >= sampleFrames) // future + { + currentDelta -= sampleFrames; + return; + } + memset (out1, 0, currentDelta * sizeof (float)); + memset (out2, 0, currentDelta * sizeof (float)); + out1 += currentDelta; + out2 += currentDelta; + sampleFrames -= currentDelta; + currentDelta = 0; + } + + // loop + while (--sampleFrames >= 0) + { + // this is all very raw, there is no means of interpolation, + // and we will certainly get aliasing due to non-bandlimited + // waveforms. don't use this for serious projects... + (*out1++) = wave1[(VstInt32)fPhase1 & mask] * fVolume1 * vol; + (*out2++) = wave2[(VstInt32)fPhase2 & mask] * fVolume2 * vol; + fPhase1 += freq1; + fPhase2 += freq2; + } + } + else + { + memset (out1, 0, sampleFrames * sizeof (float)); + memset (out2, 0, sampleFrames * sizeof (float)); + } +} + +//----------------------------------------------------------------------------------------- +VstInt32 VstXSynth::processEvents (VstEvents* ev) +{ + for (VstInt32 i = 0; i < ev->numEvents; i++) + { + if ((ev->events[i])->type != kVstMidiType) + continue; + + VstMidiEvent* event = (VstMidiEvent*)ev->events[i]; + char* midiData = event->midiData; + VstInt32 status = midiData[0] & 0xf0; // ignoring channel + if (status == 0x90 || status == 0x80) // we only look at notes + { + VstInt32 note = midiData[1] & 0x7f; + VstInt32 velocity = midiData[2] & 0x7f; + if (status == 0x80) + velocity = 0; // note off by velocity 0 + if (!velocity && (note == currentNote)) + noteOff (); + else + noteOn (note, velocity, event->deltaFrames); + } + else if (status == 0xb0) + { + if (midiData[1] == 0x7e || midiData[1] == 0x7b) // all notes off + noteOff (); + } + event++; + } + return 1; +} + +//----------------------------------------------------------------------------------------- +void VstXSynth::noteOn (VstInt32 note, VstInt32 velocity, VstInt32 delta) +{ + currentNote = note; + currentVelocity = velocity; + currentDelta = delta; + noteIsOn = true; + fPhase1 = fPhase2 = 0; +} + +//----------------------------------------------------------------------------------------- +void VstXSynth::noteOff () +{ + noteIsOn = false; +} diff --git a/public.sdk/samples/vst2.x/vstxsynth/win/vstxsynth.vcproj b/public.sdk/samples/vst2.x/vstxsynth/win/vstxsynth.vcproj new file mode 100644 index 0000000..28d5914 --- /dev/null +++ b/public.sdk/samples/vst2.x/vstxsynth/win/vstxsynth.vcproj @@ -0,0 +1,448 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public.sdk/samples/vst2.x/win.vc2003/adelay.vcproj b/public.sdk/samples/vst2.x/win.vc2003/adelay.vcproj new file mode 100644 index 0000000..182711b --- /dev/null +++ b/public.sdk/samples/vst2.x/win.vc2003/adelay.vcproj @@ -0,0 +1,286 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public.sdk/samples/vst2.x/win.vc2003/again.vcproj b/public.sdk/samples/vst2.x/win.vc2003/again.vcproj new file mode 100644 index 0000000..77124fe --- /dev/null +++ b/public.sdk/samples/vst2.x/win.vc2003/again.vcproj @@ -0,0 +1,266 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public.sdk/samples/vst2.x/win.vc2003/minihost.vcproj b/public.sdk/samples/vst2.x/win.vc2003/minihost.vcproj new file mode 100644 index 0000000..307aac3 --- /dev/null +++ b/public.sdk/samples/vst2.x/win.vc2003/minihost.vcproj @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public.sdk/samples/vst2.x/win.vc2003/samples.sln b/public.sdk/samples/vst2.x/win.vc2003/samples.sln new file mode 100644 index 0000000..68ad864 --- /dev/null +++ b/public.sdk/samples/vst2.x/win.vc2003/samples.sln @@ -0,0 +1,61 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adelay", "adelay.vcproj", "{B29DB48D-720A-4767-8C16-111145BC5FF8}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "again", "again.vcproj", "{F56DEE1F-D04F-4ACB-AC35-49590B6FF6A6}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "drawtest", "..\..\..\..\VSTGUI.SF\DRAWTEST\WIN.VC6\drawtest.vcproj", "{BCECCBAD-47F4-44C9-B1CB-587DBE359E2F}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minihost", "minihost.vcproj", "{05BC96C4-6C51-4D7E-A4B4-E93563AE17F2}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "surrounddelay", "surrounddelay.vcproj", "{2933DE90-4D9B-46CF-B8FA-038EDD14A73C}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vstxsynth", "vstxsynth.vcproj", "{25D10587-A9A3-4A99-81A9-9C07B76F685F}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {B29DB48D-720A-4767-8C16-111145BC5FF8}.Debug.ActiveCfg = Debug|Win32 + {B29DB48D-720A-4767-8C16-111145BC5FF8}.Debug.Build.0 = Debug|Win32 + {B29DB48D-720A-4767-8C16-111145BC5FF8}.Release.ActiveCfg = Release|Win32 + {B29DB48D-720A-4767-8C16-111145BC5FF8}.Release.Build.0 = Release|Win32 + {F56DEE1F-D04F-4ACB-AC35-49590B6FF6A6}.Debug.ActiveCfg = Debug|Win32 + {F56DEE1F-D04F-4ACB-AC35-49590B6FF6A6}.Debug.Build.0 = Debug|Win32 + {F56DEE1F-D04F-4ACB-AC35-49590B6FF6A6}.Release.ActiveCfg = Release|Win32 + {F56DEE1F-D04F-4ACB-AC35-49590B6FF6A6}.Release.Build.0 = Release|Win32 + {BCECCBAD-47F4-44C9-B1CB-587DBE359E2F}.Debug.ActiveCfg = Debug|Win32 + {BCECCBAD-47F4-44C9-B1CB-587DBE359E2F}.Debug.Build.0 = Debug|Win32 + {BCECCBAD-47F4-44C9-B1CB-587DBE359E2F}.Release.ActiveCfg = Release|Win32 + {BCECCBAD-47F4-44C9-B1CB-587DBE359E2F}.Release.Build.0 = Release|Win32 + {05BC96C4-6C51-4D7E-A4B4-E93563AE17F2}.Debug.ActiveCfg = Debug|Win32 + {05BC96C4-6C51-4D7E-A4B4-E93563AE17F2}.Debug.Build.0 = Debug|Win32 + {05BC96C4-6C51-4D7E-A4B4-E93563AE17F2}.Release.ActiveCfg = Release|Win32 + {05BC96C4-6C51-4D7E-A4B4-E93563AE17F2}.Release.Build.0 = Release|Win32 + {2933DE90-4D9B-46CF-B8FA-038EDD14A73C}.Debug.ActiveCfg = Debug|Win32 + {2933DE90-4D9B-46CF-B8FA-038EDD14A73C}.Debug.Build.0 = Debug|Win32 + {2933DE90-4D9B-46CF-B8FA-038EDD14A73C}.Release.ActiveCfg = Release|Win32 + {2933DE90-4D9B-46CF-B8FA-038EDD14A73C}.Release.Build.0 = Release|Win32 + {25D10587-A9A3-4A99-81A9-9C07B76F685F}.Debug.ActiveCfg = Debug|Win32 + {25D10587-A9A3-4A99-81A9-9C07B76F685F}.Debug.Build.0 = Debug|Win32 + {25D10587-A9A3-4A99-81A9-9C07B76F685F}.Release.ActiveCfg = Release|Win32 + {25D10587-A9A3-4A99-81A9-9C07B76F685F}.Release.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/public.sdk/samples/vst2.x/win.vc2003/surrounddelay.vcproj b/public.sdk/samples/vst2.x/win.vc2003/surrounddelay.vcproj new file mode 100644 index 0000000..53f21aa --- /dev/null +++ b/public.sdk/samples/vst2.x/win.vc2003/surrounddelay.vcproj @@ -0,0 +1,412 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public.sdk/samples/vst2.x/win.vc2003/vstxsynth.vcproj b/public.sdk/samples/vst2.x/win.vc2003/vstxsynth.vcproj new file mode 100644 index 0000000..df11232 --- /dev/null +++ b/public.sdk/samples/vst2.x/win.vc2003/vstxsynth.vcproj @@ -0,0 +1,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public.sdk/samples/vst2.x/win.vc6/adelay.dsp b/public.sdk/samples/vst2.x/win.vc6/adelay.dsp new file mode 100644 index 0000000..95507b9 --- /dev/null +++ b/public.sdk/samples/vst2.x/win.vc6/adelay.dsp @@ -0,0 +1,155 @@ +# Microsoft Developer Studio Project File - Name="adelay" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=adelay - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "adelay.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "adelay.mak" CFG="adelay - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "adelay - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "adelay - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "adelay - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release/adelay" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ADELAY_EXPORTS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../../.." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ADELAY_EXPORTS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x407 /d "NDEBUG" +# ADD RSC /l 0x407 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 + +!ELSEIF "$(CFG)" == "adelay - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "adelay___Win32_Debug" +# PROP BASE Intermediate_Dir "adelay___Win32_Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug/adelay" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ADELAY_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../.." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ADELAY_EXPORTS" /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x407 /d "_DEBUG" +# ADD RSC /l 0x407 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "adelay - Win32 Release" +# Name "adelay - Win32 Debug" +# Begin Group "Interfaces" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\..\pluginterfaces\vst2.x\aeffect.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\pluginterfaces\vst2.x\aeffectx.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\pluginterfaces\vst2.x\vstfxstore.h +# End Source File +# End Group +# Begin Group "Source Files" + +# PROP Default_Filter "" +# Begin Group "vst2.x" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\source\vst2.x\aeffeditor.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\vst2.x\audioeffect.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\vst2.x\audioeffect.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\vst2.x\audioeffectx.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\vst2.x\audioeffectx.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\vst2.x\vstplugmain.cpp +# End Source File +# End Group +# Begin Source File + +SOURCE=..\adelay\adelay.cpp +# End Source File +# Begin Source File + +SOURCE=..\adelay\adelay.h +# End Source File +# Begin Source File + +SOURCE=..\adelay\adelaymain.cpp +# End Source File +# End Group +# Begin Source File + +SOURCE=..\win\vstplug.def +# End Source File +# End Target +# End Project diff --git a/public.sdk/samples/vst2.x/win.vc6/again.dsp b/public.sdk/samples/vst2.x/win.vc6/again.dsp new file mode 100644 index 0000000..cbd1cf5 --- /dev/null +++ b/public.sdk/samples/vst2.x/win.vc6/again.dsp @@ -0,0 +1,151 @@ +# Microsoft Developer Studio Project File - Name="again" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=again - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "again.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "again.mak" CFG="again - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "again - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "again - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "again - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release/again" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "AGAIN_EXPORTS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../../.." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "AGAIN_EXPORTS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x407 /d "NDEBUG" +# ADD RSC /l 0x407 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 + +!ELSEIF "$(CFG)" == "again - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug/again" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "AGAIN_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../.." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "AGAIN_EXPORTS" /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x407 /d "_DEBUG" +# ADD RSC /l 0x407 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "again - Win32 Release" +# Name "again - Win32 Debug" +# Begin Group "Interfaces" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\..\pluginterfaces\vst2.x\aeffect.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\pluginterfaces\vst2.x\aeffectx.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\pluginterfaces\vst2.x\vstfxstore.h +# End Source File +# End Group +# Begin Group "Source Files" + +# PROP Default_Filter "" +# Begin Group "vst2.x" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\source\vst2.x\aeffeditor.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\vst2.x\audioeffect.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\vst2.x\audioeffect.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\vst2.x\audioeffectx.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\vst2.x\audioeffectx.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\vst2.x\vstplugmain.cpp +# End Source File +# End Group +# Begin Source File + +SOURCE=..\again\source\again.cpp +# End Source File +# Begin Source File + +SOURCE=..\again\source\again.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\win\vstplug.def +# End Source File +# End Target +# End Project diff --git a/public.sdk/samples/vst2.x/win.vc6/minihost.dsp b/public.sdk/samples/vst2.x/win.vc6/minihost.dsp new file mode 100644 index 0000000..826795d --- /dev/null +++ b/public.sdk/samples/vst2.x/win.vc6/minihost.dsp @@ -0,0 +1,114 @@ +# Microsoft Developer Studio Project File - Name="minihost" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=minihost - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "minihost.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "minihost.mak" CFG="minihost - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "minihost - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "minihost - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "minihost - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release/minihost" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "../../../.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x407 /d "NDEBUG" +# ADD RSC /l 0x407 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "minihost - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "minihost___Win32_Debug" +# PROP BASE Intermediate_Dir "minihost___Win32_Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug/minihost" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c +# ADD BASE RSC /l 0x407 /d "_DEBUG" +# ADD RSC /l 0x407 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "minihost - Win32 Release" +# Name "minihost - Win32 Debug" +# Begin Group "Interfaces" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\..\pluginterfaces\vst2.x\aeffect.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\pluginterfaces\vst2.x\aeffectx.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\pluginterfaces\vst2.x\vstfxstore.h +# End Source File +# End Group +# Begin Group "Source Files" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\minihost\source\minieditor.cpp +# End Source File +# Begin Source File + +SOURCE=..\minihost\source\minihost.cpp +# End Source File +# End Group +# End Target +# End Project diff --git a/public.sdk/samples/vst2.x/win.vc6/samples.dsw b/public.sdk/samples/vst2.x/win.vc6/samples.dsw new file mode 100644 index 0000000..0d076af --- /dev/null +++ b/public.sdk/samples/vst2.x/win.vc6/samples.dsw @@ -0,0 +1,89 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "adelay"=.\adelay.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "again"=.\again.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "drawtest"=..\..\..\..\VSTGUI.SF\DRAWTEST\WIN.VC6\drawtest.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "minihost"=.\minihost.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "surrounddelay"=.\surrounddelay.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "vstxsynth"=.\vstxsynth.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/public.sdk/samples/vst2.x/win.vc6/surrounddelay.dsp b/public.sdk/samples/vst2.x/win.vc6/surrounddelay.dsp new file mode 100644 index 0000000..bfbd7e8 --- /dev/null +++ b/public.sdk/samples/vst2.x/win.vc6/surrounddelay.dsp @@ -0,0 +1,199 @@ +# Microsoft Developer Studio Project File - Name="surrounddelay" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=surrounddelay - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "surrounddelay.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "surrounddelay.mak" CFG="surrounddelay - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "surrounddelay - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "surrounddelay - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "surrounddelay - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release/surrounddelay" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SURROUNDDELAY_EXPORTS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../../.." /I "..\..\..\vstgui" /I "..\..\..\..\public.sdk\source\vst2.x" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SURROUNDDELAY_EXPORTS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x407 /d "NDEBUG" +# ADD RSC /l 0x407 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 + +!ELSEIF "$(CFG)" == "surrounddelay - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "surrounddelay___Win32_Debug" +# PROP BASE Intermediate_Dir "surrounddelay___Win32_Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug/surrounddelay" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SURROUNDDELAY_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../.." /I "..\..\..\vstgui" /I "..\..\..\..\public.sdk\source\vst2.x" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SURROUNDDELAY_EXPORTS" /FR /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x407 /d "_DEBUG" +# ADD RSC /l 0x407 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "surrounddelay - Win32 Release" +# Name "surrounddelay - Win32 Debug" +# Begin Group "Interfaces" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\..\pluginterfaces\vst2.x\aeffect.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\pluginterfaces\vst2.x\aeffectx.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\pluginterfaces\vst2.x\vstfxstore.h +# End Source File +# End Group +# Begin Group "Source Files" + +# PROP Default_Filter "" +# Begin Group "vst2.x" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\source\vst2.x\aeffeditor.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\vst2.x\audioeffect.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\vst2.x\audioeffect.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\vst2.x\audioeffectx.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\vst2.x\audioeffectx.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\vst2.x\vstplugmain.cpp +# End Source File +# End Group +# Begin Group "vstgui" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\..\vstgui.sf\vstgui\aeffguieditor.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\vstgui.sf\vstgui\aeffguieditor.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\vstgui.sf\vstgui\vstcontrols.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\vstgui.sf\vstgui\vstcontrols.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\vstgui.sf\vstgui\vstgui.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\vstgui.sf\vstgui\vstgui.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\adelay\adelay.cpp +# End Source File +# Begin Source File + +SOURCE=..\adelay\adelay.h +# End Source File +# Begin Source File + +SOURCE=..\adelay\editor\sdeditor.cpp +# End Source File +# Begin Source File + +SOURCE=..\adelay\editor\sdeditor.h +# End Source File +# Begin Source File + +SOURCE=..\adelay\surrounddelay.cpp +# End Source File +# Begin Source File + +SOURCE=..\adelay\surrounddelay.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\adelay\editor\resources\surrounddelay.rc +# End Source File +# Begin Source File + +SOURCE=..\win\vstplug.def +# End Source File +# End Target +# End Project diff --git a/public.sdk/samples/vst2.x/win.vc6/vstxsynth.dsp b/public.sdk/samples/vst2.x/win.vc6/vstxsynth.dsp new file mode 100644 index 0000000..bc4c380 --- /dev/null +++ b/public.sdk/samples/vst2.x/win.vc6/vstxsynth.dsp @@ -0,0 +1,167 @@ +# Microsoft Developer Studio Project File - Name="vstxsynth" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=vstxsynth - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "vstxsynth.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "vstxsynth.mak" CFG="vstxsynth - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "vstxsynth - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "vstxsynth - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "vstxsynth - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release/vstxynth" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VSTXSYNTH_EXPORTS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../../.." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VSTXSYNTH_EXPORTS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x407 /d "NDEBUG" +# ADD RSC /l 0x407 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 + +!ELSEIF "$(CFG)" == "vstxsynth - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "vstxsynth___Win32_Debug" +# PROP BASE Intermediate_Dir "vstxsynth___Win32_Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug/vstxsynth" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VSTXSYNTH_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../.." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "VSTXSYNTH_EXPORTS" /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x407 /d "_DEBUG" +# ADD RSC /l 0x407 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "vstxsynth - Win32 Release" +# Name "vstxsynth - Win32 Debug" +# Begin Group "Interfaces" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\..\pluginterfaces\vst2.x\aeffect.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\pluginterfaces\vst2.x\aeffectx.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\pluginterfaces\vst2.x\vstfxstore.h +# End Source File +# End Group +# Begin Group "Source Files" + +# PROP Default_Filter "" +# Begin Group "vst2.x" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\source\vst2.x\aeffeditor.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\vst2.x\audioeffect.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\vst2.x\audioeffect.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\vst2.x\audioeffectx.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\vst2.x\audioeffectx.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\vst2.x\vstplugmain.cpp +# End Source File +# End Group +# Begin Source File + +SOURCE=..\vstxsynth\source\gmnames.h +# End Source File +# Begin Source File + +SOURCE=..\vstxsynth\source\vstxsynth.cpp +# End Source File +# Begin Source File + +SOURCE=..\vstxsynth\source\vstxsynth.h +# End Source File +# Begin Source File + +SOURCE=..\vstxsynth\source\vstxsynthproc.cpp +# End Source File +# End Group +# Begin Source File + +SOURCE=..\win\vstplug.def +# End Source File +# Begin Source File + +SOURCE=..\vstxsynth\resource\vstxsynth.rc +# End Source File +# Begin Source File + +SOURCE=..\vstxsynth\resource\vstxsynth.vstxml +# End Source File +# End Target +# End Project diff --git a/public.sdk/samples/vst2.x/win/samples.sln b/public.sdk/samples/vst2.x/win/samples.sln new file mode 100644 index 0000000..45b49b6 --- /dev/null +++ b/public.sdk/samples/vst2.x/win/samples.sln @@ -0,0 +1,76 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "again", "..\again\win\again.vcproj", "{59248302-52E0-4CC0-9BBE-E475BA4A9B41}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minihost", "..\minihost\win\minihost.vcproj", "{D36A7267-C114-4C52-8299-18BD15D0D690}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vstxsynth", "..\vstxsynth\win\vstxsynth.vcproj", "{863D9E7E-5322-49C8-89BA-A761DC0EE438}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "drawtest", "..\..\..\..\vstgui.sf\drawtest\win\drawtest.vcproj", "{462BDB40-3821-4576-B239-EC322C244E31}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adelay", "..\adelay\win\adelay.vcproj", "{6503B2E8-BC8D-4D80-809C-D43694296419}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "surrounddelay", "..\adelay\win\surrounddelay.vcproj", "{29898D14-EB2A-41D4-A530-728821929A0D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {59248302-52E0-4CC0-9BBE-E475BA4A9B41}.Debug|Win32.ActiveCfg = Debug|Win32 + {59248302-52E0-4CC0-9BBE-E475BA4A9B41}.Debug|Win32.Build.0 = Debug|Win32 + {59248302-52E0-4CC0-9BBE-E475BA4A9B41}.Debug|x64.ActiveCfg = Debug|x64 + {59248302-52E0-4CC0-9BBE-E475BA4A9B41}.Debug|x64.Build.0 = Debug|x64 + {59248302-52E0-4CC0-9BBE-E475BA4A9B41}.Release|Win32.ActiveCfg = Release|Win32 + {59248302-52E0-4CC0-9BBE-E475BA4A9B41}.Release|Win32.Build.0 = Release|Win32 + {59248302-52E0-4CC0-9BBE-E475BA4A9B41}.Release|x64.ActiveCfg = Release|x64 + {59248302-52E0-4CC0-9BBE-E475BA4A9B41}.Release|x64.Build.0 = Release|x64 + {D36A7267-C114-4C52-8299-18BD15D0D690}.Debug|Win32.ActiveCfg = Debug|Win32 + {D36A7267-C114-4C52-8299-18BD15D0D690}.Debug|Win32.Build.0 = Debug|Win32 + {D36A7267-C114-4C52-8299-18BD15D0D690}.Debug|x64.ActiveCfg = Debug|x64 + {D36A7267-C114-4C52-8299-18BD15D0D690}.Debug|x64.Build.0 = Debug|x64 + {D36A7267-C114-4C52-8299-18BD15D0D690}.Release|Win32.ActiveCfg = Release|Win32 + {D36A7267-C114-4C52-8299-18BD15D0D690}.Release|Win32.Build.0 = Release|Win32 + {D36A7267-C114-4C52-8299-18BD15D0D690}.Release|x64.ActiveCfg = Release|x64 + {D36A7267-C114-4C52-8299-18BD15D0D690}.Release|x64.Build.0 = Release|x64 + {863D9E7E-5322-49C8-89BA-A761DC0EE438}.Debug|Win32.ActiveCfg = Debug|Win32 + {863D9E7E-5322-49C8-89BA-A761DC0EE438}.Debug|Win32.Build.0 = Debug|Win32 + {863D9E7E-5322-49C8-89BA-A761DC0EE438}.Debug|x64.ActiveCfg = Debug|x64 + {863D9E7E-5322-49C8-89BA-A761DC0EE438}.Debug|x64.Build.0 = Debug|x64 + {863D9E7E-5322-49C8-89BA-A761DC0EE438}.Release|Win32.ActiveCfg = Release|Win32 + {863D9E7E-5322-49C8-89BA-A761DC0EE438}.Release|Win32.Build.0 = Release|Win32 + {863D9E7E-5322-49C8-89BA-A761DC0EE438}.Release|x64.ActiveCfg = Release|x64 + {863D9E7E-5322-49C8-89BA-A761DC0EE438}.Release|x64.Build.0 = Release|x64 + {462BDB40-3821-4576-B239-EC322C244E31}.Debug|Win32.ActiveCfg = Debug|Win32 + {462BDB40-3821-4576-B239-EC322C244E31}.Debug|Win32.Build.0 = Debug|Win32 + {462BDB40-3821-4576-B239-EC322C244E31}.Debug|x64.ActiveCfg = Debug|x64 + {462BDB40-3821-4576-B239-EC322C244E31}.Debug|x64.Build.0 = Debug|x64 + {462BDB40-3821-4576-B239-EC322C244E31}.Release|Win32.ActiveCfg = Release|Win32 + {462BDB40-3821-4576-B239-EC322C244E31}.Release|Win32.Build.0 = Release|Win32 + {462BDB40-3821-4576-B239-EC322C244E31}.Release|x64.ActiveCfg = Release|x64 + {462BDB40-3821-4576-B239-EC322C244E31}.Release|x64.Build.0 = Release|x64 + {6503B2E8-BC8D-4D80-809C-D43694296419}.Debug|Win32.ActiveCfg = Debug|Win32 + {6503B2E8-BC8D-4D80-809C-D43694296419}.Debug|Win32.Build.0 = Debug|Win32 + {6503B2E8-BC8D-4D80-809C-D43694296419}.Debug|x64.ActiveCfg = Debug|x64 + {6503B2E8-BC8D-4D80-809C-D43694296419}.Debug|x64.Build.0 = Debug|x64 + {6503B2E8-BC8D-4D80-809C-D43694296419}.Release|Win32.ActiveCfg = Release|Win32 + {6503B2E8-BC8D-4D80-809C-D43694296419}.Release|Win32.Build.0 = Release|Win32 + {6503B2E8-BC8D-4D80-809C-D43694296419}.Release|x64.ActiveCfg = Release|x64 + {6503B2E8-BC8D-4D80-809C-D43694296419}.Release|x64.Build.0 = Release|x64 + {29898D14-EB2A-41D4-A530-728821929A0D}.Debug|Win32.ActiveCfg = Debug|Win32 + {29898D14-EB2A-41D4-A530-728821929A0D}.Debug|Win32.Build.0 = Debug|Win32 + {29898D14-EB2A-41D4-A530-728821929A0D}.Debug|x64.ActiveCfg = Debug|x64 + {29898D14-EB2A-41D4-A530-728821929A0D}.Debug|x64.Build.0 = Debug|x64 + {29898D14-EB2A-41D4-A530-728821929A0D}.Release|Win32.ActiveCfg = Release|Win32 + {29898D14-EB2A-41D4-A530-728821929A0D}.Release|Win32.Build.0 = Release|Win32 + {29898D14-EB2A-41D4-A530-728821929A0D}.Release|x64.ActiveCfg = Release|x64 + {29898D14-EB2A-41D4-A530-728821929A0D}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/public.sdk/samples/vst2.x/win/vstplug.def b/public.sdk/samples/vst2.x/win/vstplug.def new file mode 100644 index 0000000..081bdbd --- /dev/null +++ b/public.sdk/samples/vst2.x/win/vstplug.def @@ -0,0 +1,3 @@ +EXPORTS + VSTPluginMain + main=VSTPluginMain \ No newline at end of file diff --git a/public.sdk/source/vst2.x/aeffeditor.h b/public.sdk/source/vst2.x/aeffeditor.h new file mode 100644 index 0000000..d23630a --- /dev/null +++ b/public.sdk/source/vst2.x/aeffeditor.h @@ -0,0 +1,61 @@ +//------------------------------------------------------------------------------------------------------- +// VST Plug-Ins SDK +// Version 2.4 $Date: 2006/01/12 09:05:31 $ +// +// Category : VST 2.x Classes +// Filename : aeffeditor.h +// Created by : Steinberg Media Technologies +// Description : Editor Class for VST Plug-Ins +// +// © 2006, Steinberg Media Technologies, All Rights Reserved +//------------------------------------------------------------------------------------------------------- + +#ifndef __aeffeditor__ +#define __aeffeditor__ + +#include "audioeffectx.h" + +//------------------------------------------------------------------------------------------------------- +/** VST Effect Editor class. */ +//------------------------------------------------------------------------------------------------------- +class AEffEditor +{ +public: +//------------------------------------------------------------------------------------------------------- + AEffEditor (AudioEffect* effect = 0) ///< Editor class constructor. Requires pointer to associated effect instance. + : effect (effect) + , systemWindow (0) + {} + + virtual ~AEffEditor () ///< Editor class destructor. + {} + + virtual AudioEffect* getEffect () { return effect; } ///< Returns associated effect instance + virtual bool getRect (ERect** rect) { *rect = 0; return false; } ///< Query editor size as #ERect + virtual bool open (void* ptr) { systemWindow = ptr; return 0; } ///< Open editor, pointer to parent windows is platform-dependent (HWND on Windows, WindowRef on Mac). + virtual void close () { systemWindow = 0; } ///< Close editor (detach from parent window) + virtual bool isOpen () { return systemWindow != 0; } ///< Returns true if editor is currently open + virtual void idle () {} ///< Idle call supplied by Host application + +#if TARGET_API_MAC_CARBON + virtual void DECLARE_VST_DEPRECATED (draw) (ERect* rect) {} + virtual VstInt32 DECLARE_VST_DEPRECATED (mouse) (VstInt32 x, VstInt32 y) { return 0; } + virtual VstInt32 DECLARE_VST_DEPRECATED (key) (VstInt32 keyCode) { return 0; } + virtual void DECLARE_VST_DEPRECATED (top) () {} + virtual void DECLARE_VST_DEPRECATED (sleep) () {} +#endif + +#if VST_2_1_EXTENSIONS + virtual bool onKeyDown (VstKeyCode& keyCode) { return false; } ///< Receive key down event. Return true only if key was really used! + virtual bool onKeyUp (VstKeyCode& keyCode) { return false; } ///< Receive key up event. Return true only if key was really used! + virtual bool onWheel (float distance) { return false; } ///< Handle mouse wheel event, distance is positive or negative to indicate wheel direction. + virtual bool setKnobMode (VstInt32 val) { return false; } ///< Set knob mode (if supported by Host). See CKnobMode in VSTGUI. +#endif + +//------------------------------------------------------------------------------------------------------- +protected: + AudioEffect* effect; ///< associated effect instance + void* systemWindow; ///< platform-dependent parent window (HWND or WindowRef) +}; + +#endif // __aeffeditor__ diff --git a/public.sdk/source/vst2.x/audioeffect.cpp b/public.sdk/source/vst2.x/audioeffect.cpp new file mode 100644 index 0000000..916ad7f --- /dev/null +++ b/public.sdk/source/vst2.x/audioeffect.cpp @@ -0,0 +1,703 @@ +//------------------------------------------------------------------------------------------------------- +// VST Plug-Ins SDK +// Version 2.4 $Date: 2006/06/07 08:22:01 $ +// +// Category : VST 2.x Classes +// Filename : audioeffect.cpp +// Created by : Steinberg Media Technologies +// Description : Class AudioEffect (VST 1.0) +// +// © 2006, Steinberg Media Technologies, All Rights Reserved +//------------------------------------------------------------------------------------------------------- + +#include "audioeffect.h" +#include "aeffeditor.h" + +#include +#include +#include + +//------------------------------------------------------------------------------------------------------- +VstIntPtr AudioEffect::dispatchEffectClass (AEffect* e, VstInt32 opCode, VstInt32 index, VstIntPtr value, void* ptr, float opt) +{ + AudioEffect* ae = (AudioEffect*)(e->object); + + if (opCode == effClose) + { + ae->dispatcher (opCode, index, value, ptr, opt); + delete ae; + return 1; + } + + return ae->dispatcher (opCode, index, value, ptr, opt); +} + +//------------------------------------------------------------------------------------------------------- +float AudioEffect::getParameterClass (AEffect* e, VstInt32 index) +{ + AudioEffect* ae = (AudioEffect*)(e->object); + return ae->getParameter (index); +} + +//------------------------------------------------------------------------------------------------------- +void AudioEffect::setParameterClass (AEffect* e, VstInt32 index, float value) +{ + AudioEffect* ae = (AudioEffect*)(e->object); + ae->setParameter (index, value); +} + +//------------------------------------------------------------------------------------------------------- +void AudioEffect::DECLARE_VST_DEPRECATED (processClass) (AEffect* e, float** inputs, float** outputs, VstInt32 sampleFrames) +{ + AudioEffect* ae = (AudioEffect*)(e->object); + ae->DECLARE_VST_DEPRECATED (process) (inputs, outputs, sampleFrames); +} + +//------------------------------------------------------------------------------------------------------- +void AudioEffect::processClassReplacing (AEffect* e, float** inputs, float** outputs, VstInt32 sampleFrames) +{ + AudioEffect* ae = (AudioEffect*)(e->object); + ae->processReplacing (inputs, outputs, sampleFrames); +} + +//------------------------------------------------------------------------------------------------------- +#if VST_2_4_EXTENSIONS +void AudioEffect::processClassDoubleReplacing (AEffect* e, double** inputs, double** outputs, VstInt32 sampleFrames) +{ + AudioEffect* ae = (AudioEffect*)(e->object); + ae->processDoubleReplacing (inputs, outputs, sampleFrames); +} +#endif + +//------------------------------------------------------------------------------------------------------- +// Class AudioEffect Implementation +//------------------------------------------------------------------------------------------------------- +/*! + The constructor of your class is passed a parameter of the type \e audioMasterCallback. The actual + mechanism in which your class gets constructed is not important right now. Effectively your class is + constructed by the hosting application, which passes an object of type \e audioMasterCallback that + handles the interaction with the plug-in. You pass this on to the base class' constructor and then + can forget about it. + + \param audioMaster Passed by the Host and handles interaction + \param numPrograms Pass the number of programs the plug-in provides + \param numParams Pass the number of parameters the plug-in provides + +\code +MyPlug::MyPlug (audioMasterCallback audioMaster) +: AudioEffectX (audioMaster, 1, 1) // 1 program, 1 parameter only +{ + setNumInputs (2); // stereo in + setNumOutputs (2); // stereo out + setUniqueID ('MyPl'); // you must change this for other plug-ins! + canProcessReplacing (); // supports replacing mode +} +\endcode + + \sa setNumInputs, setNumOutputs, setUniqueID, canProcessReplacing +*/ +AudioEffect::AudioEffect (audioMasterCallback audioMaster, VstInt32 numPrograms, VstInt32 numParams) +: audioMaster (audioMaster) +, editor (0) +, sampleRate (44100.f) +, blockSize (1024) +, numPrograms (numPrograms) +, numParams (numParams) +, curProgram (0) +{ + memset (&cEffect, 0, sizeof (cEffect)); + + cEffect.magic = kEffectMagic; + cEffect.dispatcher = dispatchEffectClass; + cEffect.DECLARE_VST_DEPRECATED (process) = DECLARE_VST_DEPRECATED (processClass); + cEffect.setParameter = setParameterClass; + cEffect.getParameter = getParameterClass; + cEffect.numPrograms = numPrograms; + cEffect.numParams = numParams; + cEffect.numInputs = 1; // mono input + cEffect.numOutputs = 2; // stereo output + cEffect.DECLARE_VST_DEPRECATED (ioRatio) = 1.f; + cEffect.object = this; + cEffect.uniqueID = CCONST ('N', 'o', 'E', 'f'); + cEffect.version = 1; + cEffect.processReplacing = processClassReplacing; + +#if VST_2_4_EXTENSIONS + canProcessReplacing (); // mandatory in VST 2.4! + cEffect.processDoubleReplacing = processClassDoubleReplacing; +#endif +} + +//------------------------------------------------------------------------------------------------------- +AudioEffect::~AudioEffect () +{ + if (editor) + delete editor; +} + +//------------------------------------------------------------------------------------------------------- +void AudioEffect::setEditor (AEffEditor* editor) +{ + this->editor = editor; + if (editor) + cEffect.flags |= effFlagsHasEditor; + else + cEffect.flags &= ~effFlagsHasEditor; +} + +//------------------------------------------------------------------------------------------------------- +VstIntPtr AudioEffect::dispatcher (VstInt32 opcode, VstInt32 index, VstIntPtr value, void* ptr, float opt) +{ + VstIntPtr v = 0; + + switch (opcode) + { + case effOpen: open (); break; + case effClose: close (); break; + case effSetProgram: if (value < numPrograms) setProgram ((VstInt32)value); break; + case effGetProgram: v = getProgram (); break; + case effSetProgramName: setProgramName ((char*)ptr); break; + case effGetProgramName: getProgramName ((char*)ptr); break; + case effGetParamLabel: getParameterLabel (index, (char*)ptr); break; + case effGetParamDisplay: getParameterDisplay (index, (char*)ptr); break; + case effGetParamName: getParameterName (index, (char*)ptr); break; + + case effSetSampleRate: setSampleRate (opt); break; + case effSetBlockSize: setBlockSize ((VstInt32)value); break; + case effMainsChanged: if (!value) suspend (); else resume (); break; + #if !VST_FORCE_DEPRECATED + case effGetVu: v = (VstIntPtr)(getVu () * 32767.); break; + #endif + + //---Editor------------ + case effEditGetRect: if (editor) v = editor->getRect ((ERect**)ptr) ? 1 : 0; break; + case effEditOpen: if (editor) v = editor->open (ptr) ? 1 : 0; break; + case effEditClose: if (editor) editor->close (); break; + case effEditIdle: if (editor) editor->idle (); break; + + #if (TARGET_API_MAC_CARBON && !VST_FORCE_DEPRECATED) + case effEditDraw: if (editor) editor->draw ((ERect*)ptr); break; + case effEditMouse: if (editor) v = editor->mouse (index, value); break; + case effEditKey: if (editor) v = editor->key (value); break; + case effEditTop: if (editor) editor->top (); break; + case effEditSleep: if (editor) editor->sleep (); break; + #endif + + case DECLARE_VST_DEPRECATED (effIdentify): v = CCONST ('N', 'v', 'E', 'f'); break; + + //---Persistence------- + case effGetChunk: v = getChunk ((void**)ptr, index ? true : false); break; + case effSetChunk: v = setChunk (ptr, (VstInt32)value, index ? true : false); break; + } + return v; +} + +//------------------------------------------------------------------------------------------------------- +/*! + Use to ask for the Host's version + \return The Host's version +*/ +VstInt32 AudioEffect::getMasterVersion () +{ + VstInt32 version = 1; + if (audioMaster) + { + version = (VstInt32)audioMaster (&cEffect, audioMasterVersion, 0, 0, 0, 0); + if (!version) // old + version = 1; + } + return version; +} + +//------------------------------------------------------------------------------------------------------- +/*! + \sa AudioEffectX::getNextShellPlugin +*/ +VstInt32 AudioEffect::getCurrentUniqueId () +{ + VstInt32 id = 0; + if (audioMaster) + id = (VstInt32)audioMaster (&cEffect, audioMasterCurrentId, 0, 0, 0, 0); + return id; +} + +//------------------------------------------------------------------------------------------------------- +/*! + Give idle time to Host application, e.g. if plug-in editor is doing mouse tracking in a modal loop. +*/ +void AudioEffect::masterIdle () +{ + if (audioMaster) + audioMaster (&cEffect, audioMasterIdle, 0, 0, 0, 0); +} + +//------------------------------------------------------------------------------------------------------- +bool AudioEffect::DECLARE_VST_DEPRECATED (isInputConnected) (VstInt32 input) +{ + VstInt32 ret = 0; + if (audioMaster) + ret = (VstInt32)audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterPinConnected), input, 0, 0, 0); + return ret ? false : true; // return value is 0 for true +} + +//------------------------------------------------------------------------------------------------------- +bool AudioEffect::DECLARE_VST_DEPRECATED (isOutputConnected) (VstInt32 output) +{ + VstInt32 ret = 0; + if (audioMaster) + ret = (VstInt32)audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterPinConnected), output, 1, 0, 0); + return ret ? false : true; // return value is 0 for true +} + +//------------------------------------------------------------------------------------------------------- +/*! + \param index parameter index + \param float parameter value + + \note An important thing to notice is that if the user changes a parameter in your editor, which is + out of the Host's control if you are not using the default string based interface, you should + call setParameterAutomated (). This ensures that the Host is notified of the parameter change, which + allows it to record these changes for automation. + + \sa setParameter +*/ +void AudioEffect::setParameterAutomated (VstInt32 index, float value) +{ + setParameter (index, value); + if (audioMaster) + audioMaster (&cEffect, audioMasterAutomate, index, 0, 0, value); // value is in opt +} + +//------------------------------------------------------------------------------------------------------- +// Flags +//------------------------------------------------------------------------------------------------------- +void AudioEffect::DECLARE_VST_DEPRECATED (hasVu) (bool state) +{ + if (state) + cEffect.flags |= DECLARE_VST_DEPRECATED (effFlagsHasVu); + else + cEffect.flags &= ~DECLARE_VST_DEPRECATED (effFlagsHasVu); +} + +//------------------------------------------------------------------------------------------------------- +void AudioEffect::DECLARE_VST_DEPRECATED (hasClip) (bool state) +{ + if (state) + cEffect.flags |= DECLARE_VST_DEPRECATED (effFlagsHasClip); + else + cEffect.flags &= ~DECLARE_VST_DEPRECATED (effFlagsHasClip); +} + +//------------------------------------------------------------------------------------------------------- +void AudioEffect::DECLARE_VST_DEPRECATED (canMono) (bool state) +{ + if (state) + cEffect.flags |= DECLARE_VST_DEPRECATED (effFlagsCanMono); + else + cEffect.flags &= ~DECLARE_VST_DEPRECATED (effFlagsCanMono); +} + +//------------------------------------------------------------------------------------------------------- +/*! + \param state Set to \e true if supported + + \note Needs to be called in the plug-in's constructor +*/ +void AudioEffect::canProcessReplacing (bool state) +{ + if (state) + cEffect.flags |= effFlagsCanReplacing; + else + cEffect.flags &= ~effFlagsCanReplacing; +} + +//----------------------------------------------------------------------------------------------------------------- +/*! + \param state Set to \e true if supported + + \note Needs to be called in the plug-in's constructor +*/ +#if VST_2_4_EXTENSIONS +void AudioEffect::canDoubleReplacing (bool state) +{ + if (state) + cEffect.flags |= effFlagsCanDoubleReplacing; + else + cEffect.flags &= ~effFlagsCanDoubleReplacing; +} +#endif + +//------------------------------------------------------------------------------------------------------- +/*! + \param state Set \e true if programs are chunks + + \note Needs to be called in the plug-in's constructor +*/ +void AudioEffect::programsAreChunks (bool state) +{ + if (state) + cEffect.flags |= effFlagsProgramChunks; + else + cEffect.flags &= ~effFlagsProgramChunks; +} + +//------------------------------------------------------------------------------------------------------- +void AudioEffect::DECLARE_VST_DEPRECATED (setRealtimeQualities) (VstInt32 qualities) +{ + cEffect.DECLARE_VST_DEPRECATED (realQualities) = qualities; +} + +//------------------------------------------------------------------------------------------------------- +void AudioEffect::DECLARE_VST_DEPRECATED (setOfflineQualities) (VstInt32 qualities) +{ + cEffect.DECLARE_VST_DEPRECATED (offQualities) = qualities; +} + +//------------------------------------------------------------------------------------------------------- +/*! + Use to report the Plug-in's latency (Group Delay) + + \param delay Plug-ins delay in samples +*/ +void AudioEffect::setInitialDelay (VstInt32 delay) +{ + cEffect.initialDelay = delay; +} + +//------------------------------------------------------------------------------------------------------- +// Strings Conversion +//------------------------------------------------------------------------------------------------------- +/*! + \param value Value to convert + \param text String up to length char + \param maxLen Maximal length of the string +*/ +void AudioEffect::dB2string (float value, char* text, VstInt32 maxLen) +{ + if (value <= 0) + vst_strncpy (text, "-oo", maxLen); + else + float2string ((float)(20. * log10 (value)), text, maxLen); +} + +//------------------------------------------------------------------------------------------------------- +/*! + \param samples Number of samples + \param text String up to length char + \param maxLen Maximal length of the string +*/ +void AudioEffect::Hz2string (float samples, char* text, VstInt32 maxLen) +{ + float sampleRate = getSampleRate (); + if (!samples) + float2string (0, text, maxLen); + else + float2string (sampleRate / samples, text, maxLen); +} + +//------------------------------------------------------------------------------------------------------- +/*! + \param samples Number of samples + \param text String up to length char + \param maxLen Maximal length of the string +*/ +void AudioEffect::ms2string (float samples, char* text, VstInt32 maxLen) +{ + float2string ((float)(samples * 1000. / getSampleRate ()), text, maxLen); +} + +//------------------------------------------------------------------------------------------------------- +/*! + \param value Value to convert + \param text String up to length char + \param maxLen Maximal length of the string +*/ +void AudioEffect::float2string (float value, char* text, VstInt32 maxLen) +{ + VstInt32 c = 0, neg = 0; + char string[32]; + char* s; + double v, integ, i10, mantissa, m10, ten = 10.; + + v = (double)value; + if (v < 0) + { + neg = 1; + value = -value; + v = -v; + c++; + if (v > 9999999.) + { + vst_strncpy (string, "Huge!", 31); + return; + } + } + else if (v > 99999999.) + { + vst_strncpy (string, "Huge!", 31); + return; + } + + s = string + 31; + *s-- = 0; + *s-- = '.'; + c++; + + integ = floor (v); + i10 = fmod (integ, ten); + *s-- = (char)((VstInt32)i10 + '0'); + integ /= ten; + c++; + while (integ >= 1. && c < 8) + { + i10 = fmod (integ, ten); + *s-- = (char)((VstInt32)i10 + '0'); + integ /= ten; + c++; + } + if (neg) + *s-- = '-'; + vst_strncpy (text, s + 1, maxLen); + if (c >= 8) + return; + + s = string + 31; + *s-- = 0; + mantissa = fmod (v, 1.); + mantissa *= pow (ten, (double)(8 - c)); + while (c < 8) + { + if (mantissa <= 0) + *s-- = '0'; + else + { + m10 = fmod (mantissa, ten); + *s-- = (char)((VstInt32)m10 + '0'); + mantissa /= 10.; + } + c++; + } + vst_strncat (text, s + 1, maxLen); +} + +//------------------------------------------------------------------------------------------------------- +/*! + \param value Value to convert + \param text String up to length char + \param maxLen Maximal length of the string +*/ +void AudioEffect::int2string (VstInt32 value, char* text, VstInt32 maxLen) +{ + if (value >= 100000000) + { + vst_strncpy (text, "Huge!", maxLen); + return; + } + + if (value < 0) + { + vst_strncpy (text, "-", maxLen); + value = -value; + } + else + vst_strncpy (text, "", maxLen); + + bool state = false; + for (VstInt32 div = 100000000; div >= 1; div /= 10) + { + VstInt32 digit = value / div; + value -= digit * div; + if (state || digit > 0) + { + char temp[2] = {'0' + (char)digit, '\0'}; + vst_strncat (text, temp, maxLen); + state = true; + } + } +} +//------------------------------------------------------------------------------------------------------- +//------------------------------------------------------------------------------------------------------- +/*! + \fn void AudioEffect::processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames) + + This process method must be provided. It takes input data, applies its pocessing algorithm, and then puts the + result to the output by overwriting the output buffer. + + \param inputs An array of pointers to the data + \param outputs An array of pointers to where the data can be written to + \param sampleFrames Number of sample frames to process + + \warning Never call any Mac OS 9 functions (or other functions which call into the OS) inside your + audio process function! This will crash the system when your plug-in is run in MP (multiprocessor) mode. + If you must call into the OS, you must use MPRemoteCall () (see Apples' documentation), or + explicitly use functions which are documented by Apple to be MP safe. On Mac OS X read the system + header files to be sure that you only call thread safe functions. + +*/ + +//------------------------------------------------------------------------------------------------------- +/*! + \fn void AudioEffect::setBlockSize (VstInt32 blockSize) + + This is called by the Host, and tells the plug-in that the maximum block size passed to + processReplacing() will be \e blockSize. + + \param blockSize Maximum number of sample frames + + \warning You must process exactly \e sampleFrames number of samples in inside processReplacing, not more! +*/ + +//------------------------------------------------------------------------------------------------------- +/*! + \fn void AudioEffect::setParameter (VstInt32 index, float value) + + Parameters are the individual parameter settings the user can adjust. A VST Host can automate these + parameters. Set parameter \e index to \e value. + + \param index Index of the parameter to change + \param value A float value between 0.0 and 1.0 inclusive + + \note Parameter values, like all VST parameters, are declared as floats with an inclusive range of + 0.0 to 1.0. How data is presented to the user is merely in the user-interface handling. This is a + convention, but still worth regarding. Maybe the VST-Host's automation system depends on this range. +*/ + +//------------------------------------------------------------------------------------------------------- +/*! + \fn float AudioEffect::getParameter (VstInt32 index) + + Return the \e value of parameter \e index + + \param index Index of the parameter + \return A float value between 0.0 and 1.0 inclusive +*/ + +//------------------------------------------------------------------------------------------------------- +/*! + \fn void AudioEffect::getParameterLabel (VstInt32 index, char* label) + + \param index Index of the parameter + \param label A string up to 8 char +*/ + +//------------------------------------------------------------------------------------------------------- +/*! + \fn void AudioEffect::getParameterDisplay (VstInt32 index, char* text) + + \param index Index of the parameter + \param text A string up to 8 char +*/ + +//------------------------------------------------------------------------------------------------------- +/*! + \fn VstInt32 AudioEffect::getProgram () + + \return Index of the current program +*/ + +//------------------------------------------------------------------------------------------------------- +/*! + \fn void AudioEffect::setProgram (VstInt32 program) + + \param Program of the current program +*/ + +//------------------------------------------------------------------------------------------------------- +/*! + \fn void AudioEffect::getParameterName (VstInt32 index, char* text) + + \param index Index of the parameter + \param text A string up to 8 char +*/ + +//------------------------------------------------------------------------------------------------------- +/*! + \fn void AudioEffect::setProgramName (char* name) + + The program name is displayed in the rack, and can be edited by the user. + + \param name A string up to 24 char + + \warning Please be aware that the string lengths supported by the default VST interface are normally + limited to 24 characters. If you copy too much data into the buffers provided, you will break the + Host application. +*/ + +//------------------------------------------------------------------------------------------------------- +/*! + \fn void AudioEffect::getProgramName (char* name) + + The program name is displayed in the rack, and can be edited by the user. + + \param name A string up to 24 char + + \warning Please be aware that the string lengths supported by the default VST interface are normally + limited to 24 characters. If you copy too much data into the buffers provided, you will break the + Host application. +*/ + +//------------------------------------------------------------------------------------------------------- +/*! + \fn VstInt32 AudioEffect::getChunk (void** data, bool isPreset) + + \param data should point to the newly allocated memory block containg state data. You can savely release it in next suspend/resume call. + \param isPreset true when saving a single program, false for all programs + + \note + If your plug-in is configured to use chunks (see AudioEffect::programsAreChunks), the Host + will ask for a block of memory describing the current plug-in state for saving. + To restore the state at a later stage, the same data is passed back to AudioEffect::setChunk. + Alternatively, when not using chunk, the Host will simply save all parameter values. +*/ + +//------------------------------------------------------------------------------------------------------- +/*! + \fn VstInt32 AudioEffect::setChunk (void* data, VstInt32 byteSize, bool isPreset) + + \param data pointer to state data (owned by Host) + \param byteSize size of state data + \param isPreset true when restoring a single program, false for all programs + + \sa getChunk +*/ + +//------------------------------------------------------------------------------------------------------- +/*! + \fn void AudioEffect::setNumInputs (VstInt32 inputs) + + This number is fixed at construction time and can't change until the plug-in is destroyed. + + \param inputs The number of inputs + + \sa isInputConnected() + + \note Needs to be called in the plug-in's constructor +*/ + +//------------------------------------------------------------------------------------------------------- +/*! + \fn void AudioEffect::setNumOutputs (VstInt32 outputs) + + This number is fixed at construction time and can't change until the plug-in is destroyed. + + \param outputs The number of outputs + + \sa isOutputConnected() + + \note Needs to be called in the plug-in's constructor +*/ + +//------------------------------------------------------------------------------------------------------- +/*! + \fn void AudioEffect::setUniqueID (VstInt32 iD) + + Must call this! Set the plug-in's unique identifier. The Host uses this to identify the plug-in, for + instance when it is loading effect programs and banks. On Steinberg Web Page you can find an UniqueID + Database where you can record your UniqueID, it will check if the ID is already used by an another + vendor. You can use CCONST('a','b','c','d') (defined in VST 2.0) to be platform independent to + initialize an UniqueID. + + \param iD Plug-in's unique ID + + \note Needs to be called in the plug-in's constructor +*/ diff --git a/public.sdk/source/vst2.x/audioeffect.h b/public.sdk/source/vst2.x/audioeffect.h new file mode 100644 index 0000000..7809347 --- /dev/null +++ b/public.sdk/source/vst2.x/audioeffect.h @@ -0,0 +1,177 @@ +//------------------------------------------------------------------------------------------------------- +// VST Plug-Ins SDK +// Version 2.4 $Date: 2006/06/06 16:01:34 $ +// +// Category : VST 2.x Classes +// Filename : audioeffect.h +// Created by : Steinberg Media Technologies +// Description : Class AudioEffect (VST 1.0) +// +// © 2006, Steinberg Media Technologies, All Rights Reserved +//------------------------------------------------------------------------------------------------------- + +#ifndef __audioeffect__ +#define __audioeffect__ + +#include "pluginterfaces/vst2.x/aeffect.h" // "c" interface + +class AEffEditor; + +//------------------------------------------------------------------------------------------------------- +/** VST Effect Base Class (VST 1.0). */ +//------------------------------------------------------------------------------------------------------- +class AudioEffect +{ +public: +//------------------------------------------------------------------------------------------------------- + AudioEffect (audioMasterCallback audioMaster, VstInt32 numPrograms, VstInt32 numParams); ///< Create an \e AudioEffect object + virtual ~AudioEffect (); ///< Destroy an \e AudioEffect object + + virtual VstIntPtr dispatcher (VstInt32 opcode, VstInt32 index, VstIntPtr value, void* ptr, float opt); ///< Opcodes dispatcher + +//------------------------------------------------------------------------------------------------------- +/// \name State Transitions +//------------------------------------------------------------------------------------------------------- +//@{ + virtual void open () {} ///< Called when plug-in is initialized + virtual void close () {} ///< Called when plug-in will be released + virtual void suspend () {} ///< Called when plug-in is switched to off + virtual void resume () {} ///< Called when plug-in is switched to on +//@} + +//------------------------------------------------------------------------------------------------------- +/// \name Processing +//------------------------------------------------------------------------------------------------------- +//@{ + virtual void setSampleRate (float sampleRate) { this->sampleRate = sampleRate; } ///< Called when the sample rate changes (always in a suspend state) + virtual void setBlockSize (VstInt32 blockSize) { this->blockSize = blockSize; } ///< Called when the Maximun block size changes (always in a suspend state). Note that the sampleFrames in Process Calls could be smaller than this block size, but NOT bigger. + + virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames) = 0; ///< Process 32 bit (single precision) floats (always in a resume state) + +#if VST_2_4_EXTENSIONS + virtual void processDoubleReplacing (double** inputs, double** outputs, VstInt32 sampleFrames) {} ///< Process 64 bit (double precision) floats (always in a resume state) \sa processReplacing +#endif // VST_2_4_EXTENSIONS +//@} + +//------------------------------------------------------------------------------------------------------- +/// \name Parameters +//------------------------------------------------------------------------------------------------------- +//@{ + virtual void setParameter (VstInt32 index, float value) {} ///< Called when a parameter changed + virtual float getParameter (VstInt32 index) { return 0; } ///< Return the value of the parameter with \e index + virtual void setParameterAutomated (VstInt32 index, float value);///< Called after a control has changed in the editor and when the associated parameter should be automated +//@} + +//------------------------------------------------------------------------------------------------------- +/// \name Programs and Persistence +//------------------------------------------------------------------------------------------------------- +//@{ + virtual VstInt32 getProgram () { return curProgram; } ///< Return the index to the current program + virtual void setProgram (VstInt32 program) { curProgram = program; } ///< Set the current program to \e program + + virtual void setProgramName (char* name) {} ///< Stuff the name field of the current program with \e name. Limited to #kVstMaxProgNameLen. + virtual void getProgramName (char* name) { *name = 0; } ///< Stuff \e name with the name of the current program. Limited to #kVstMaxProgNameLen. + + virtual void getParameterLabel (VstInt32 index, char* label) { *label = 0; } ///< Stuff \e label with the units in which parameter \e index is displayed (i.e. "sec", "dB", "type", etc...). Limited to #kVstMaxParamStrLen. + virtual void getParameterDisplay (VstInt32 index, char* text) { *text = 0; } ///< Stuff \e text with a string representation ("0.5", "-3", "PLATE", etc...) of the value of parameter \e index. Limited to #kVstMaxParamStrLen. + virtual void getParameterName (VstInt32 index, char* text) { *text = 0; } ///< Stuff \e text with the name ("Time", "Gain", "RoomType", etc...) of parameter \e index. Limited to #kVstMaxParamStrLen. + + virtual VstInt32 getChunk (void** data, bool isPreset = false) { return 0; } ///< Host stores plug-in state. Returns the size in bytes of the chunk (plug-in allocates the data array) + virtual VstInt32 setChunk (void* data, VstInt32 byteSize, bool isPreset = false) { return 0; } ///< Host restores plug-in state +//@} + +//------------------------------------------------------------------------------------------------------- +/// \name Internal Setup +//------------------------------------------------------------------------------------------------------- +//@{ + virtual void setUniqueID (VstInt32 iD) { cEffect.uniqueID = iD; } ///< Must be called to set the plug-ins unique ID! + virtual void setNumInputs (VstInt32 inputs) { cEffect.numInputs = inputs; } ///< Set the number of inputs the plug-in will handle. For a plug-in which could change its IO configuration, this number is the maximun available inputs. + virtual void setNumOutputs (VstInt32 outputs) { cEffect.numOutputs = outputs; } ///< Set the number of outputs the plug-in will handle. For a plug-in which could change its IO configuration, this number is the maximun available ouputs. + + virtual void canProcessReplacing (bool state = true); ///< Tells that processReplacing() could be used. Mandatory in VST 2.4! + +#if VST_2_4_EXTENSIONS + virtual void canDoubleReplacing (bool state = true); ///< Tells that processDoubleReplacing() is implemented. +#endif // VST_2_4_EXTENSIONS + + virtual void programsAreChunks (bool state = true); ///< Program data is handled in formatless chunks (using getChunk-setChunks) + virtual void setInitialDelay (VstInt32 delay); ///< Use to report the plug-in's latency (Group Delay) +//@} + +//------------------------------------------------------------------------------------------------------- +/// \name Editor +//------------------------------------------------------------------------------------------------------- +//@{ + void setEditor (AEffEditor* editor); ///< Should be called if you want to define your own editor + virtual AEffEditor* getEditor () { return editor; } ///< Returns the attached editor +//@} + +//------------------------------------------------------------------------------------------------------- +/// \name Inquiry +//------------------------------------------------------------------------------------------------------- +//@{ + virtual AEffect* getAeffect () { return &cEffect; } ///< Returns the #AEffect structure + virtual float getSampleRate () { return sampleRate; } ///< Returns the current sample rate + virtual VstInt32 getBlockSize () { return blockSize; } ///< Returns the current Maximum block size +//@} + +//------------------------------------------------------------------------------------------------------- +/// \name Host Communication +//------------------------------------------------------------------------------------------------------- +//@{ + virtual VstInt32 getMasterVersion (); ///< Returns the Host's version (for example 2400 for VST 2.4) + virtual VstInt32 getCurrentUniqueId (); ///< Returns current unique identifier when loading shell plug-ins + virtual void masterIdle (); ///< Give idle time to Host application +//@} + +//------------------------------------------------------------------------------------------------------- +/// \name Tools (helpers) +//------------------------------------------------------------------------------------------------------- +//@{ + virtual void dB2string (float value, char* text, VstInt32 maxLen); ///< Stuffs \e text with an amplitude on the [0.0, 1.0] scale converted to its value in decibels. + virtual void Hz2string (float samples, char* text, VstInt32 maxLen); ///< Stuffs \e text with the frequency in Hertz that has a period of \e samples. + virtual void ms2string (float samples, char* text, VstInt32 maxLen); ///< Stuffs \e text with the duration in milliseconds of \e samples frames. + virtual void float2string (float value, char* text, VstInt32 maxLen); ///< Stuffs \e text with a string representation on the floating point \e value. + virtual void int2string (VstInt32 value, char* text, VstInt32 maxLen); ///< Stuffs \e text with a string representation on the integer \e value. +//@} + +//------------------------------------------------------------------------------------------------------- +// Deprecated methods +//------------------------------------------------------------------------------------------------------- +/// @cond ignore + virtual void DECLARE_VST_DEPRECATED (process) (float** inputs, float** outputs, VstInt32 sampleFrames) {} + virtual float DECLARE_VST_DEPRECATED (getVu) () { return 0; } + virtual void DECLARE_VST_DEPRECATED (hasVu) (bool state = true); + virtual void DECLARE_VST_DEPRECATED (hasClip) (bool state = true); + virtual void DECLARE_VST_DEPRECATED (canMono) (bool state = true); + virtual void DECLARE_VST_DEPRECATED (setRealtimeQualities) (VstInt32 qualities); + virtual void DECLARE_VST_DEPRECATED (setOfflineQualities) (VstInt32 qualities); + virtual bool DECLARE_VST_DEPRECATED (isInputConnected) (VstInt32 input); + virtual bool DECLARE_VST_DEPRECATED (isOutputConnected) (VstInt32 output); +/// @endcond + +//------------------------------------------------------------------------------------------------------- +protected: + audioMasterCallback audioMaster; ///< Host callback + AEffEditor* editor; ///< Pointer to the plug-in's editor + float sampleRate; ///< Current sample rate + VstInt32 blockSize; ///< Maximum block size + VstInt32 numPrograms; ///< Number of programs + VstInt32 numParams; ///< Number of parameters + VstInt32 curProgram; ///< Current program + AEffect cEffect; ///< #AEffect object + +/// @cond ignore + static VstIntPtr dispatchEffectClass (AEffect* e, VstInt32 opcode, VstInt32 index, VstIntPtr value, void* ptr, float opt); + static float getParameterClass (AEffect* e, VstInt32 index); + static void setParameterClass (AEffect* e, VstInt32 index, float value); + static void DECLARE_VST_DEPRECATED (processClass) (AEffect* e, float** inputs, float** outputs, VstInt32 sampleFrames); + static void processClassReplacing (AEffect* e, float** inputs, float** outputs, VstInt32 sampleFrames); + +#if VST_2_4_EXTENSIONS + static void processClassDoubleReplacing (AEffect* e, double** inputs, double** outputs, VstInt32 sampleFrames); +#endif // VST_2_4_EXTENSIONS +/// @endcond +}; + +#endif // __audioeffect__ diff --git a/public.sdk/source/vst2.x/audioeffectx.cpp b/public.sdk/source/vst2.x/audioeffectx.cpp new file mode 100644 index 0000000..1f98919 --- /dev/null +++ b/public.sdk/source/vst2.x/audioeffectx.cpp @@ -0,0 +1,1546 @@ +//------------------------------------------------------------------------------------------------------- +// VST Plug-Ins SDK +// Version 2.4 $Date: 2006/10/05 14:23:59 $ +// +// Category : VST 2.x Classes +// Filename : audioeffectx.cpp +// Created by : Steinberg Media Technologies +// Description : Class AudioEffectX extends AudioEffect with new features. You should derive +// your plug-in from AudioEffectX. +// +// © 2006, Steinberg Media Technologies, All Rights Reserved +//------------------------------------------------------------------------------------------------------- + +#include "audioeffectx.h" +#include "aeffeditor.h" + +//------------------------------------------------------------------------------------------------------- +/*! hostCanDos strings Plug-in -> Host */ +namespace HostCanDos +{ + const char* canDoSendVstEvents = "sendVstEvents"; ///< Host supports send of Vst events to plug-in + const char* canDoSendVstMidiEvent = "sendVstMidiEvent"; ///< Host supports send of MIDI events to plug-in + const char* canDoSendVstTimeInfo = "sendVstTimeInfo"; ///< Host supports send of VstTimeInfo to plug-in + const char* canDoReceiveVstEvents = "receiveVstEvents"; ///< Host can receive Vst events from plug-in + const char* canDoReceiveVstMidiEvent = "receiveVstMidiEvent"; ///< Host can receive MIDI events from plug-in + const char* canDoReportConnectionChanges = "reportConnectionChanges"; ///< Host will indicates the plug-in when something change in plug-in´s routing/connections with #suspend/#resume/#setSpeakerArrangement + const char* canDoAcceptIOChanges = "acceptIOChanges"; ///< Host supports #ioChanged () + const char* canDoSizeWindow = "sizeWindow"; ///< used by VSTGUI + const char* canDoOffline = "offline"; ///< Host supports offline feature + const char* canDoOpenFileSelector = "openFileSelector"; ///< Host supports function #openFileSelector () + const char* canDoCloseFileSelector = "closeFileSelector"; ///< Host supports function #closeFileSelector () + const char* canDoStartStopProcess = "startStopProcess"; ///< Host supports functions #startProcess () and #stopProcess () + const char* canDoShellCategory = "shellCategory"; ///< 'shell' handling via uniqueID. If supported by the Host and the Plug-in has the category #kPlugCategShell + const char* canDoSendVstMidiEventFlagIsRealtime = "sendVstMidiEventFlagIsRealtime"; ///< Host supports flags for #VstMidiEvent +} + +//------------------------------------------------------------------------------------------------------- +/*! plugCanDos strings Host -> Plug-in */ +namespace PlugCanDos +{ + const char* canDoSendVstEvents = "sendVstEvents"; ///< plug-in will send Vst events to Host + const char* canDoSendVstMidiEvent = "sendVstMidiEvent"; ///< plug-in will send MIDI events to Host + const char* canDoReceiveVstEvents = "receiveVstEvents"; ///< plug-in can receive MIDI events from Host + const char* canDoReceiveVstMidiEvent = "receiveVstMidiEvent"; ///< plug-in can receive MIDI events from Host + const char* canDoReceiveVstTimeInfo = "receiveVstTimeInfo"; ///< plug-in can receive Time info from Host + const char* canDoOffline = "offline"; ///< plug-in supports offline functions (#offlineNotify, #offlinePrepare, #offlineRun) + const char* canDoMidiProgramNames = "midiProgramNames"; ///< plug-in supports function #getMidiProgramName () + const char* canDoBypass = "bypass"; ///< plug-in supports function #setBypass () +} + +//----------------------------------------------------------------------------------------------------------------- +// Class AudioEffectX Implementation +//----------------------------------------------------------------------------------------------------------------- +/*! + \sa AudioEffect() +*/ +AudioEffectX::AudioEffectX (audioMasterCallback audioMaster, VstInt32 numPrograms, VstInt32 numParams) +: AudioEffect (audioMaster, numPrograms, numParams) +{} + +//----------------------------------------------------------------------------------------------------------------- +VstIntPtr AudioEffectX::dispatcher (VstInt32 opcode, VstInt32 index, VstIntPtr value, void* ptr, float opt) +{ + VstIntPtr v = 0; + switch (opcode) + { + //---VstEvents---------------------- + case effProcessEvents: + v = processEvents ((VstEvents*)ptr); + break; + + //---Parameters and Programs---------------------- + case effCanBeAutomated: + v = canParameterBeAutomated (index) ? 1 : 0; + break; + case effString2Parameter: + v = string2parameter (index, (char*)ptr) ? 1 : 0; + break; + + case effGetProgramNameIndexed: + v = getProgramNameIndexed ((VstInt32)value, index, (char*)ptr) ? 1 : 0; + break; + #if !VST_FORCE_DEPRECATED + case effGetNumProgramCategories: + v = getNumCategories (); + break; + case effCopyProgram: + v = copyProgram (index) ? 1 : 0; + break; + + //---Connections, Configuration---------------------- + case effConnectInput: + inputConnected (index, value ? true : false); + v = 1; + break; + case effConnectOutput: + outputConnected (index, value ? true : false); + v = 1; + break; + #endif // !VST_FORCE_DEPRECATED + + case effGetInputProperties: + v = getInputProperties (index, (VstPinProperties*)ptr) ? 1 : 0; + break; + case effGetOutputProperties: + v = getOutputProperties (index, (VstPinProperties*)ptr) ? 1 : 0; + break; + case effGetPlugCategory: + v = (VstIntPtr)getPlugCategory (); + break; + + #if !VST_FORCE_DEPRECATED + //---Realtime---------------------- + case effGetCurrentPosition: + v = reportCurrentPosition (); + break; + + case effGetDestinationBuffer: + v = ToVstPtr (reportDestinationBuffer ()); + break; + #endif // !VST_FORCE_DEPRECATED + + //---Offline---------------------- + case effOfflineNotify: + v = offlineNotify ((VstAudioFile*)ptr, (VstInt32)value, index != 0); + break; + case effOfflinePrepare: + v = offlinePrepare ((VstOfflineTask*)ptr, (VstInt32)value); + break; + case effOfflineRun: + v = offlineRun ((VstOfflineTask*)ptr, (VstInt32)value); + break; + + //---Others---------------------- + case effSetSpeakerArrangement: + v = setSpeakerArrangement (FromVstPtr (value), (VstSpeakerArrangement*)ptr) ? 1 : 0; + break; + case effProcessVarIo: + v = processVariableIo ((VstVariableIo*)ptr) ? 1 : 0; + break; + #if !VST_FORCE_DEPRECATED + case effSetBlockSizeAndSampleRate: + setBlockSizeAndSampleRate ((VstInt32)value, opt); + v = 1; + break; + #endif // !VST_FORCE_DEPRECATED + case effSetBypass: + v = setBypass (value ? true : false) ? 1 : 0; + break; + case effGetEffectName: + v = getEffectName ((char*)ptr) ? 1 : 0; + break; + case effGetVendorString: + v = getVendorString ((char*)ptr) ? 1 : 0; + break; + case effGetProductString: + v = getProductString ((char*)ptr) ? 1 : 0; + break; + case effGetVendorVersion: + v = getVendorVersion (); + break; + case effVendorSpecific: + v = vendorSpecific (index, value, ptr, opt); + break; + case effCanDo: + v = canDo ((char*)ptr); + break; + + case effGetTailSize: + v = getGetTailSize (); + break; + + #if !VST_FORCE_DEPRECATED + case effGetErrorText: + v = getErrorText ((char*)ptr) ? 1 : 0; + break; + + case effGetIcon: + v = ToVstPtr (getIcon ()); + break; + + case effSetViewPosition: + v = setViewPosition (index, (VstInt32)value) ? 1 : 0; + break; + + case effIdle: + v = fxIdle (); + break; + + case effKeysRequired: + v = (keysRequired () ? 0 : 1); // reversed to keep v1 compatibility + break; + #endif // !VST_FORCE_DEPRECATED + + case effGetParameterProperties: + v = getParameterProperties (index, (VstParameterProperties*)ptr) ? 1 : 0; + break; + + case effGetVstVersion: + v = getVstVersion (); + break; + + //---Others---------------------- + #if VST_2_1_EXTENSIONS + case effEditKeyDown: + if (editor) + { + VstKeyCode keyCode = {index, (unsigned char)value, (unsigned char)opt}; + v = editor->onKeyDown (keyCode) ? 1 : 0; + } + break; + + case effEditKeyUp: + if (editor) + { + VstKeyCode keyCode = {index, (unsigned char)value, (unsigned char)opt}; + v = editor->onKeyUp (keyCode) ? 1 : 0; + } + break; + + case effSetEditKnobMode: + if (editor) + v = editor->setKnobMode ((VstInt32)value) ? 1 : 0; + break; + + case effGetMidiProgramName: + v = getMidiProgramName (index, (MidiProgramName*)ptr); + break; + case effGetCurrentMidiProgram: + v = getCurrentMidiProgram (index, (MidiProgramName*)ptr); + break; + case effGetMidiProgramCategory: + v = getMidiProgramCategory (index, (MidiProgramCategory*)ptr); + break; + case effHasMidiProgramsChanged: + v = hasMidiProgramsChanged (index) ? 1 : 0; + break; + case effGetMidiKeyName: + v = getMidiKeyName (index, (MidiKeyName*)ptr) ? 1 : 0; + break; + case effBeginSetProgram: + v = beginSetProgram () ? 1 : 0; + break; + case effEndSetProgram: + v = endSetProgram () ? 1 : 0; + break; + #endif // VST_2_1_EXTENSIONS + + #if VST_2_3_EXTENSIONS + case effGetSpeakerArrangement: + v = getSpeakerArrangement (FromVstPtr (value), (VstSpeakerArrangement**)ptr) ? 1 : 0; + break; + + case effSetTotalSampleToProcess: + v = setTotalSampleToProcess ((VstInt32)value); + break; + + case effShellGetNextPlugin: + v = getNextShellPlugin ((char*)ptr); + break; + + case effStartProcess: + v = startProcess (); + break; + case effStopProcess: + v = stopProcess (); + break; + + case effSetPanLaw: + v = setPanLaw ((VstInt32)value, opt) ? 1 : 0; + break; + + case effBeginLoadBank: + v = beginLoadBank ((VstPatchChunkInfo*)ptr); + break; + case effBeginLoadProgram: + v = beginLoadProgram ((VstPatchChunkInfo*)ptr); + break; + #endif // VST_2_3_EXTENSIONS + + #if VST_2_4_EXTENSIONS + case effSetProcessPrecision : + v = setProcessPrecision ((VstInt32)value) ? 1 : 0; + break; + + case effGetNumMidiInputChannels : + v = getNumMidiInputChannels (); + break; + + case effGetNumMidiOutputChannels : + v = getNumMidiOutputChannels (); + break; + #endif // VST_2_4_EXTENSIONS + + //---Version 1.0 or unknown----------------- + default: + v = AudioEffect::dispatcher (opcode, index, value, ptr, opt); + } + return v; +} + +//----------------------------------------------------------------------------------------------------------------- +/*! if this effect is a synth or can receive midi events, we call the deprecated wantEvents() as some host rely on it. +*/ +void AudioEffectX::resume () +{ + if (cEffect.flags & effFlagsIsSynth || canDo ("receiveVstMidiEvent") == 1) + DECLARE_VST_DEPRECATED (wantEvents) (); +} + +//----------------------------------------------------------------------------------------------------------------- +void AudioEffectX::DECLARE_VST_DEPRECATED (wantEvents) (VstInt32 filter) +{ + if (audioMaster) + audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterWantMidi), 0, filter, 0, 0); +} + +//----------------------------------------------------------------------------------------------------------------- +/*! + A plug-in will request time info by calling the function getTimeInfo() which returns a \e #VstTimeInfo + pointer (or NULL if not implemented by the Host). The mask parameter is composed of the same flags which + will be found in the flags field of \e #VstTimeInfo when returned, that is, if you need information about tempo. + The parameter passed to getTimeInfo() should have the \e #kVstTempoValid flag set. This request and delivery + system is important, as a request like this may cause significant calculations at the application's end, which + may take a lot of our precious time. This obviously means you should only set those flags that are required to + get the information you need. Also please be aware that requesting information does not necessarily mean that + that information is provided in return. Check the \e flags field in the \e #VstTimeInfo structure to see if your + request was actually met. + + \param filter A mask indicating which fields are requested, as some items may require extensive conversions. + See the \e flags in #VstTimeInfo + \return A pointer to a #VstTimeInfo structure or NULL if not implemented by the Host +*/ +VstTimeInfo* AudioEffectX::getTimeInfo (VstInt32 filter) +{ + if (audioMaster) + { + VstIntPtr ret = audioMaster (&cEffect, audioMasterGetTime, 0, filter, 0, 0); + return FromVstPtr (ret); + } + return 0; +} + +//----------------------------------------------------------------------------------------------------------------- +VstInt32 AudioEffectX::DECLARE_VST_DEPRECATED (tempoAt) (VstInt32 pos) +{ + if (audioMaster) + return (VstInt32)audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterTempoAt), 0, pos, 0, 0); + return 0; +} + +//----------------------------------------------------------------------------------------------------------------- +bool AudioEffectX::sendVstEventsToHost (VstEvents* events) +/*! + Can be called inside processReplacing. + + \param events Fill with VST events + \return Returns \e true on success +*/ +{ + if (audioMaster) + return audioMaster (&cEffect, audioMasterProcessEvents, 0, 0, events, 0) == 1; + return 0; +} + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn VstInt32 AudioEffectX::processEvents (VstEvents* events) + + \return return value is ignored + + \remarks Events are always related to the current audio block. For each process cycle, processEvents() is called + once before a processReplacing() call (if new events are available). + + \sa VstEvents, VstMidiEvent +*/ + +//----------------------------------------------------------------------------------------------------------------- +// Parameters Functions +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn bool AudioEffectX::canParameterBeAutomated (VstInt32 index) + + Obviously only useful when the application supports this. + + \param index Index of the parameter + \return \true if supported +*/ + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn bool AudioEffectX::string2parameter (VstInt32 index, char* text) + + Especially useful for plug-ins without user interface. The application can then implement a text edit field for + the user to set a parameter by entering text. + + \param index Index of the parameter + \param text A textual description of the parameter's value. A NULL pointer is used to check the capability + (return true). + \return \e true on success + + \note Implies setParameter (). text==0 is to be expected to check the capability (returns true) +*/ + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn bool AudioEffectX::getProgramNameIndexed (VstInt32 category, VstInt32 index, char* text) + + Allows a Host application to list the plug-in's programs (presets). + + \param category unused in VST 2.4 + \param index Index of the program in a given category, starting with 0. + \param text A string up to 24 chars. + \return \e true on success +*/ +//----------------------------------------------------------------------------------------------------------------- +VstInt32 AudioEffectX::DECLARE_VST_DEPRECATED (getNumAutomatableParameters) () +{ + if (audioMaster) + return (VstInt32)audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterGetNumAutomatableParameters), 0, 0, 0, 0); + return 0; +} + +//----------------------------------------------------------------------------------------------------------------- +VstInt32 AudioEffectX::DECLARE_VST_DEPRECATED (getParameterQuantization) () +{ + if (audioMaster) + return (VstInt32)audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterGetParameterQuantization), 0, 0, 0, 0); + return 0; +} + +//----------------------------------------------------------------------------------------------------------------- +// Configuration/Settings Functions +//----------------------------------------------------------------------------------------------------------------- + +//----------------------------------------------------------------------------------------------------------------- +/*! + The Host could call a suspend() (if the plug-in was enabled (in resume() state)) and then ask for + getSpeakerArrangement() and/or check the \e numInputs and \e numOutputs and \e initialDelay and then call a + resume(). + + \return \e true on success + + \sa setSpeakerArrangement(), getSpeakerArrangement() +*/ +bool AudioEffectX::ioChanged () +{ + if (audioMaster) + return (audioMaster (&cEffect, audioMasterIOChanged, 0, 0, 0, 0) != 0); + return false; +} + +//----------------------------------------------------------------------------------------------------------------- +bool AudioEffectX::DECLARE_VST_DEPRECATED (needIdle) () +{ + if (audioMaster) + return (audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterNeedIdle), 0, 0, 0, 0) != 0); + return false; +} + +//----------------------------------------------------------------------------------------------------------------- +/*! + \param width The window's width in pixel + \param height The window's height in pixel + \return \e true on success +*/ +bool AudioEffectX::sizeWindow (VstInt32 width, VstInt32 height) +{ + if (audioMaster) + return (audioMaster (&cEffect, audioMasterSizeWindow, width, height, 0, 0) != 0); + return false; +} + +//----------------------------------------------------------------------------------------------------------------- +double AudioEffectX::updateSampleRate () +/*! + \return The Host's sample rate +*/ +{ + if (audioMaster) + { + VstIntPtr res = audioMaster (&cEffect, audioMasterGetSampleRate, 0, 0, 0, 0); + if (res > 0) + sampleRate = (float)res; + } + return sampleRate; +} + +//----------------------------------------------------------------------------------------------------------------- +VstInt32 AudioEffectX::updateBlockSize () +/*! + \return The Host's block size + + \note Will cause application to call AudioEffect's setSampleRate() to be called (when implemented). +*/ +{ + if (audioMaster) + { + VstInt32 res = (VstInt32)audioMaster (&cEffect, audioMasterGetBlockSize, 0, 0, 0, 0); + if (res > 0) + blockSize = res; + } + return blockSize; +} + +//----------------------------------------------------------------------------------------------------------------- +/*! + \return ASIO input latency + \sa getOutputLatency() +*/ +VstInt32 AudioEffectX::getInputLatency () +{ + if (audioMaster) + return (VstInt32)audioMaster (&cEffect, audioMasterGetInputLatency, 0, 0, 0, 0); + return 0; +} + +//----------------------------------------------------------------------------------------------------------------- +/*! + While inputLatency is probably not of concern, outputLatency may be used in conjunction with getTimeInfo(). + \e samplePos of VstTimeInfo is ahead of the 'visual' sequencer play time by the output latency, such that + when outputLatency samples have passed by, our processing result becomes audible. + + \return ASIO output latency + \sa getInputLatency() +*/ +VstInt32 AudioEffectX::getOutputLatency () +{ + if (audioMaster) + return (VstInt32)audioMaster (&cEffect, audioMasterGetOutputLatency, 0, 0, 0, 0); + return 0; +} + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn bool AudioEffectX::getInputProperties (VstInt32 index, VstPinProperties* properties) + + \param index The index to the input, starting with 0 + \param properties A pointer to a VstPinProperties structure + \return \e true on success + \sa getOutputProperties() + \note Example +
+	bool MyPlug::getInputProperties (VstInt32 index, VstPinProperties* properties)
+	{
+		bool returnCode = false;
+		if (index < kNumInputs)
+		{
+			sprintf (properties->label, "My %1d In", index + 1);
+			properties->flags = kVstPinIsStereo | kVstPinIsActive;
+			returnCode = true;
+		}
+		return returnCode;
+	}
+	
+*/ + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn bool AudioEffectX::getOutputProperties (VstInt32 index, VstPinProperties* properties) + + \param index The index to the output, starting with 0 + \param properties A pointer to a VstPinProperties structure + \return \e true on success + \sa getInputProperties() + \note Example 1 +
+	bool MyPlug::getOutputProperties (VstInt32 index, VstPinProperties* properties)
+	{
+		bool returnCode = false;
+		if (index < kNumOutputs)
+		{
+			sprintf (properties->label, "My %1d Out", index + 1);
+			properties->flags = kVstPinIsStereo | kVstPinIsActive;
+			returnCode = true;
+		}
+		return (returnCode);
+	}
+	
+ + \note Example 2 : plug-in with 1 mono, 1 stereo and one 5.1 outputs (kNumOutputs = 9): +
+	bool MyPlug::getOutputProperties (VstInt32 index, VstPinProperties* properties)
+	{
+		bool returnCode = false;
+		if (index >= 0 && index < kNumOutputs)
+		{
+			properties->flags = kVstPinIsActive;
+			if (index == 0) // mono
+			{
+				strcpy (properties->label, "Mono Out");
+				properties->arrangementType = kSpeakerArrMono;
+			}
+			else if (index == 1) // stereo (1 -> 2)
+			{
+				strcpy (properties->label, "Stereo Out");
+				properties->flags |= kVstPinIsStereo;
+				properties->arrangementType = kSpeakerArrStereo;
+			}
+			else if (index >= 3) // 5.1 (3 -> 8)
+			{
+				strcpy (properties->label, "5.1 Out");
+				properties->flags |= kVstPinUseSpeaker;
+				properties->arrangementType = kSpeakerArr51;
+				// for old VST Host < 2.3, make 5.1 to stereo/mono/mono/stereo (L R C Lfe Ls Rs)
+				if (index == 3 || index == 7)
+					properties->flags |= kVstPinIsStereo;
+				if (index == 5)
+					strcpy (properties->label, "Center");	
+				else if (index == 6)
+					strcpy (properties->label, "Lfe");	
+				else if (index == 7) // (7 -> 8)
+					strcpy (properties->label, "Stereo Back");
+			}
+			returnCode = true;
+		}
+		return returnCode;
+	}
+	
+*/ + +//----------------------------------------------------------------------------------------------------------------- +AEffect* AudioEffectX::DECLARE_VST_DEPRECATED (getPreviousPlug) (VstInt32 input) +{ + if (audioMaster) + { + VstIntPtr ret = audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterGetPreviousPlug), 0, 0, 0, 0); + return FromVstPtr (ret); + } + return 0; +} + +//----------------------------------------------------------------------------------------------------------------- +AEffect* AudioEffectX::DECLARE_VST_DEPRECATED (getNextPlug) (VstInt32 output) +{ + if (audioMaster) + { + VstIntPtr ret = audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterGetNextPlug), 0, 0, 0, 0); + return FromVstPtr (ret); + } + return 0; +} + +//----------------------------------------------------------------------------------------------------------------- +/*! + \return Plug-in's category defined in VstPlugCategory +*/ +VstPlugCategory AudioEffectX::getPlugCategory () +{ + if (cEffect.flags & effFlagsIsSynth) + return kPlugCategSynth; + return kPlugCategUnknown; +} + +//----------------------------------------------------------------------------------------------------------------- +VstInt32 AudioEffectX::DECLARE_VST_DEPRECATED (willProcessReplacing) () +{ + if (audioMaster) + return (VstInt32)audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterWillReplaceOrAccumulate), 0, 0, 0, 0); + return 0; +} + +//----------------------------------------------------------------------------------------------------------------- +/*! + A plug-in is like a black box processing some audio coming in on some inputs (if any) and going out of some + outputs (if any). This may be used to do offline or real-time processing, and sometimes it may be desirable to + know the current context. + + \return #VstProcessLevels in aeffectx.h + +*/ +VstInt32 AudioEffectX::getCurrentProcessLevel () +{ + if (audioMaster) + return (VstInt32)audioMaster (&cEffect, audioMasterGetCurrentProcessLevel, 0, 0, 0, 0); + return 0; +} + +//----------------------------------------------------------------------------------------------------------------- +/*! + \return #VstAutomationStates in aeffectx.h +*/ +VstInt32 AudioEffectX::getAutomationState () +{ + if (audioMaster) + return (VstInt32)audioMaster (&cEffect, audioMasterGetAutomationState, 0, 0, 0, 0); + return 0; +} + +//----------------------------------------------------------------------------------------------------------------- +void AudioEffectX::DECLARE_VST_DEPRECATED (wantAsyncOperation) (bool state) +{ + if (state) + cEffect.flags |= DECLARE_VST_DEPRECATED (effFlagsExtIsAsync); + else + cEffect.flags &= ~DECLARE_VST_DEPRECATED (effFlagsExtIsAsync); +} + +//----------------------------------------------------------------------------------------------------------------- +void AudioEffectX::DECLARE_VST_DEPRECATED (hasExternalBuffer) (bool state) +{ + if (state) + cEffect.flags |= DECLARE_VST_DEPRECATED (effFlagsExtHasBuffer); + else + cEffect.flags &= ~DECLARE_VST_DEPRECATED (effFlagsExtHasBuffer); +} + +//----------------------------------------------------------------------------------------------------------------- +// Offline Functions +//----------------------------------------------------------------------------------------------------------------- + +//----------------------------------------------------------------------------------------------------------------- +//----------------------------------------------------------------------------------------------------------------- +bool AudioEffectX::offlineRead (VstOfflineTask* offline, VstOfflineOption option, bool readSource) +{ + if (audioMaster) + return (audioMaster (&cEffect, audioMasterOfflineRead, readSource, option, offline, 0) != 0); + return false; +} + +//----------------------------------------------------------------------------------------------------------------- +bool AudioEffectX::offlineWrite (VstOfflineTask* offline, VstOfflineOption option) +{ + if (audioMaster) + return (audioMaster (&cEffect, audioMasterOfflineWrite, 0, option, offline, 0) != 0); + return false; +} + +//----------------------------------------------------------------------------------------------------------------- +bool AudioEffectX::offlineStart (VstAudioFile* audioFiles, VstInt32 numAudioFiles, VstInt32 numNewAudioFiles) +{ + if (audioMaster) + return (audioMaster (&cEffect, audioMasterOfflineStart, numNewAudioFiles, numAudioFiles, audioFiles, 0) != 0); + return false; +} + +//----------------------------------------------------------------------------------------------------------------- +VstInt32 AudioEffectX::offlineGetCurrentPass () +{ + if (audioMaster) + return (audioMaster (&cEffect, audioMasterOfflineGetCurrentPass, 0, 0, 0, 0) != 0); + return false; +} + +//----------------------------------------------------------------------------------------------------------------- +VstInt32 AudioEffectX::offlineGetCurrentMetaPass () +{ + if (audioMaster) + return (audioMaster (&cEffect, audioMasterOfflineGetCurrentMetaPass, 0, 0, 0, 0) != 0); + return false; +} + +//----------------------------------------------------------------------------------------------------------------- +// Other +//----------------------------------------------------------------------------------------------------------------- + +//----------------------------------------------------------------------------------------------------------------- +void AudioEffectX::DECLARE_VST_DEPRECATED (setOutputSamplerate) (float sampleRate) +{ + if (audioMaster) + audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterSetOutputSampleRate), 0, 0, 0, sampleRate); +} + +//----------------------------------------------------------------------------------------------------------------- +VstSpeakerArrangement* AudioEffectX::DECLARE_VST_DEPRECATED (getInputSpeakerArrangement) () +{ + if (audioMaster) + { + VstIntPtr ret = audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterGetInputSpeakerArrangement), 0, 0, 0, 0); + return FromVstPtr (ret); + } + return 0; +} + +//----------------------------------------------------------------------------------------------------------------- +VstSpeakerArrangement* AudioEffectX::DECLARE_VST_DEPRECATED (getOutputSpeakerArrangement) () +{ + if (audioMaster) + { + VstIntPtr ret = audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterGetOutputSpeakerArrangement), 0, 0, 0, 0); + return FromVstPtr (ret); + } + return 0; +} + +//----------------------------------------------------------------------------------------------------------------- +/*! + \param text String of maximum 64 char + \return \e true if supported +*/ +bool AudioEffectX::getHostVendorString (char* text) +{ + if (audioMaster) + return (audioMaster (&cEffect, audioMasterGetVendorString, 0, 0, text, 0) != 0); + return false; +} + +//----------------------------------------------------------------------------------------------------------------- +/*! + \param text String of maximum 64 char + \return \e true if supported +*/ +bool AudioEffectX::getHostProductString (char* text) +{ + if (audioMaster) + return (audioMaster (&cEffect, audioMasterGetProductString, 0, 0, text, 0) != 0); + return false; +} + +//----------------------------------------------------------------------------------------------------------------- +/*! + \return Host vendor version +*/ +VstInt32 AudioEffectX::getHostVendorVersion () +{ + if (audioMaster) + return (VstInt32)audioMaster (&cEffect, audioMasterGetVendorVersion, 0, 0, 0, 0); + return 0; +} + +//----------------------------------------------------------------------------------------------------------------- +VstIntPtr AudioEffectX::hostVendorSpecific (VstInt32 lArg1, VstIntPtr lArg2, void* ptrArg, float floatArg) +{ + if (audioMaster) + return audioMaster (&cEffect, audioMasterVendorSpecific, lArg1, lArg2, ptrArg, floatArg); + return 0; +} + +//----------------------------------------------------------------------------------------------------------------- +/*! + Asks Host if it implements the feature text. A plug-in cannot assume a 2.x feature is available from the Host. + Use this method to ascertain the environment in which the plug-in finds itself. Ignoring this inquiry methods and + trying to access a 2.x feature in a 1.0 Host will mean your plug-in or Host application will break. It is not + the end-users job to pick and choose which plug-ins can be supported by which Host. + + \param text A string from #hostCanDos + \return + - 0 : don't know (default) + - 1 : yes + - -1: no +*/ +VstInt32 AudioEffectX::canHostDo (char* text) +{ + if (audioMaster) + return (audioMaster (&cEffect, audioMasterCanDo, 0, 0, text, 0) != 0); + return 0; +} + +//----------------------------------------------------------------------------------------------------------------- +/*! + Tells the Host that the plug-in is an instrument, i.e. that it will call wantEvents(). + + \param state + - true: is an instrument (default) + - false: is a simple audio effect +*/ +void AudioEffectX::isSynth (bool state) +{ + if (state) + cEffect.flags |= effFlagsIsSynth; + else + cEffect.flags &= ~effFlagsIsSynth; +} + +//----------------------------------------------------------------------------------------------------------------- +/*! + Enables Host to omit processReplacing() when no data is present on any input. +*/ +void AudioEffectX::noTail (bool state) +{ + if (state) + cEffect.flags |= effFlagsNoSoundInStop; + else + cEffect.flags &= ~effFlagsNoSoundInStop; +} + +//----------------------------------------------------------------------------------------------------------------- +/*! + \return #VstHostLanguage in aeffectx.h +*/ +VstInt32 AudioEffectX::getHostLanguage () +{ + if (audioMaster) + return (VstInt32)audioMaster (&cEffect, audioMasterGetLanguage, 0, 0, 0, 0); + return 0; +} + +//----------------------------------------------------------------------------------------------------------------- +void* AudioEffectX::DECLARE_VST_DEPRECATED (openWindow) (DECLARE_VST_DEPRECATED (VstWindow)* window) +{ + if (audioMaster) + { + VstIntPtr ret = audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterOpenWindow), 0, 0, window, 0); + return FromVstPtr (ret); + } + return 0; +} + +//----------------------------------------------------------------------------------------------------------------- +bool AudioEffectX::DECLARE_VST_DEPRECATED (closeWindow) (DECLARE_VST_DEPRECATED (VstWindow)* window) +{ + if (audioMaster) + return (audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterCloseWindow), 0, 0, window, 0) != 0); + return false; +} + +//----------------------------------------------------------------------------------------------------------------- +/*! + \return FSSpec on MAC, else char* +*/ +void* AudioEffectX::getDirectory () +{ + if (audioMaster) + { + VstIntPtr ret = (audioMaster (&cEffect, audioMasterGetDirectory, 0, 0, 0, 0)); + return FromVstPtr (ret); + } + return 0; +} + +//----------------------------------------------------------------------------------------------------------------- +/*! + \return \e true if supported +*/ +bool AudioEffectX::updateDisplay () +{ + if (audioMaster) + return (audioMaster (&cEffect, audioMasterUpdateDisplay, 0, 0, 0, 0)) ? true : false; + return 0; +} + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn bool AudioEffectX::processVariableIo (VstVariableIo* varIo) + + If called with \e varIo NULL, returning \e true indicates that this call is supported by the plug-in. + Host will use processReplacing otherwise. The Host should call setTotalSampleToProcess before starting the processIO + to inform the plug-in about how many samples will be processed in total. The Host should provide an output buffer at least 5 times bigger than input buffer. + + \param varIo + \return \true on success +*/ + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn bool AudioEffectX::setSpeakerArrangement (VstSpeakerArrangement* pluginInput, VstSpeakerArrangement* pluginOutput) + + Set the plug-in's speaker arrangements. If a (VST >= 2.3) plug-in returns \e true, it means that it accepts this IO + arrangement. The Host doesn't need to ask for getSpeakerArrangement(). If the plug-in returns \e false it means that it + doesn't accept this arrangement, the Host should then ask for getSpeakerArrangement() and then can (optional) + recall setSpeakerArrangement(). + + \param pluginInput A pointer to the input's #VstSpeakerArrangement structure. + \param pluginOutput A pointer to the output's #VstSpeakerArrangement structure. + \return \e true on success + + \note setSpeakerArrangement() and getSpeakerArrangement() are always called in suspended state. + (like setSampleRate() or setBlockSize()). + + \sa getSpeakerArrangement() +*/ + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn bool AudioEffectX::getSpeakerArrangement (VstSpeakerArrangement** pluginInput, VstSpeakerArrangement** pluginOutput) + + \param pluginInput A pointer to the input's #VstSpeakerArrangement structure. + \param pluginOutput A pointer to the output's #VstSpeakerArrangement structure. + \return \e true on success + + \note setSpeakerArrangement() and getSpeakerArrangement() are always called in suspended state. + (like setSampleRate() or setBlockSize()).\n +
Here an example code to show how the host uses getSpeakerArrangement()
+	VstSpeakerArrangement *plugInputVstArr = 0;
+	VstSpeakerArrangement *plugOutputVstArr = 0;
+	if (getFormatVersion () >= 2300 && #getSpeakerArrangement (&plugInputVstArr, &plugOutputVstArr))
+		....
+	
+ + \sa setSpeakerArrangement() +*/ +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn bool AudioEffectX::setBypass (bool onOff) + + process still called (if Supported) although the plug-in was bypassed. Some plugs need to stay 'alive' even + when bypassed. An example is a surround decoder which has more inputs than outputs and must maintain some + reasonable signal distribution even when being bypassed. A CanDo 'bypass' allows to ask the plug-in if it + supports soft bypass or not. + + \note This bypass feature could be automated by the Host (this means avoid to much CPU requirement in this call) + \note If the plug-in supports SoftBypass and it has a latency (initialDelay), in Bypassed state the plug-in has to used + the same latency value. + + \param onOff + \return + - true: supports SoftBypass, process will be called, the plug-in should compensate its latency, and copy inputs to outputs + - false: doesn't support SoftBypass, process will not be called, the Host should bypass the process call + + \sa processReplacing() +*/ + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn bool AudioEffectX::getEffectName (char* name) + + \param name A string up to 32 chars + \return \e true on success +*/ + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn bool AudioEffectX::getVendorString (char* text) + + \param text A string up to 64 chars + \return \e true on success +*/ + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn bool AudioEffectX::getProductString (char* text) + + \param text A string up to 64 chars + \return \e true on success +*/ + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn VstInt32 AudioEffectX::getVendorVersion () + + \return The version of the plug-in + + \note This should be upported +*/ + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn VstInt32 AudioEffectX::canDo (char* text) + + Report what the plug-in is able to do. In general you can but don't have to report whatever you support or not + support via canDo. Some application functionality may require some specific reply, but in that case you will + probably know. Best is to report whatever you know for sure. A Host application cannot make assumptions about + the presence of the new 2.x features of a plug-in. Ignoring this inquiry methods and trying to access a 2.x + feature from a 1.0 plug, or vice versa, will mean the plug-in or Host application will break. It is not the + end-users job to pick and choose which plug-ins can be supported by which Host. + + \param text A string from #plugCanDos + \return + - 0: don't know (default) + - 1: yes + - -1: no + + \note This should be supported. +*/ + +//---------------------------------------------------------------------------------------------------------------- +/*! + \fn VstInt32 AudioEffectX::canDo (char* text) + + \param text A string from #plugCanDos + \return + - 0: don't know (default). + - 1: yes. + - -1: no +*/ + +//---------------------------------------------------------------------------------------------------------------- +/*! + \fn bool AudioEffectX::getParameterProperties (VstInt32 index, VstParameterProperties* p) + + \param index Index of the parameter + \param p Pointer to #VstParameterProperties + \return Return \e true on success +*/ + +//---------------------------------------------------------------------------------------------------------------- +/*! + \fn VstInt32 AudioEffectX::getVstVersion () + \return + - 2xxx : the last VST 2.x plug-in version (by default) + - 0 : older versions + +*/ + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn VstInt32 AudioEffectX::getMidiProgramName (VstInt32 channel, MidiProgramName* midiProgramName) + Ask plug-in if MidiPrograms are used and if so, query for names, numbers + (ProgramChange-Number + BankSelect-Number), categories and keynames of each + MIDI Program, on each MIDI-channel. If this function is called, your plug-in has to read + MidiProgramName::thisProgramIndex, fill out the other fields with the information + assigned to a certain MIDI Program and return the number of available MIDI Programs on + that MIDI Channel. + + \note plug-in canDo "midiProgramNames". No effect, if 0 is returned. + + \warning don't mix concepts: the MIDI Programs are totally independent from all other + programs present in VST. The main difference is, that there are upto 16 simultaneous + active MIDI Programs (one per channel), while there can be only one active "VST"-Program. + (You should see the "VST"-Program as the one single main global program, which contains + the entire current state of the plug-in.) This function can be called in any sequence. + + \param channel MidiChannel: 0-15 + \param midiProgramName Points to \e #MidiProgramName struct + \return Number of available MIDI Programs on that \e channel + - number of used programIndexes + - 0 if no MidiProgramNames supported + + \note Example : plug-in has 3 MidiPrograms on MidiChannel 0. +
+	Host calls #getMidiProgramName with idx = 0 and MidiProgramName::thisProgramIndex = 0.
+	Plug fills out:
+	MidiProgramName::name[64] = "Program A"
+	MidiProgramName::midiProgram = 0
+	MidiProgramName::midiBankMsb = -1
+	MidiProgramName::midiBankLsb = -1
+	MidiProgramName::parentCategoryIndex = -1
+	MidiProgramName::flags = 0 (if plug isn't "Omni").
+	Plug returns 3.
+	Host calls #getMidiProgramName with idx = 0 and MidiProgramName::thisProgramIndex = 1.
+	Plug fills out:
+	MidiProgramName::name[64] = "Program B"
+	MidiProgramName::midiProgram = 1
+	MidiProgramName::midiBankMsb = -1
+	MidiProgramName::midiBankLsb = -1
+	MidiProgramName::parentCategoryIndex = -1
+	MidiProgramName::flags = 0 (if plug isn't "Omni").
+	Plug returns 3.
+	Host calls #getMidiProgramName with idx = 0 and MidiProgramName::thisProgramIndex = 2.
+	Plug fills out:
+	MidiProgramName::name[64] = "Program C"
+	MidiProgramName::midiProgram = 2
+	MidiProgramName::midiBankMsb = -1
+	MidiProgramName::midiBankLsb = -1
+	MidiProgramName::parentCategoryIndex = -1
+	MidiProgramName::flags = 0 (if plug isn't "Omni").
+	Plug returns 3.
+	
+*/ + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn VstInt32 AudioEffectX::getCurrentMidiProgram (VstInt32 channel, MidiProgramName* currentProgram) + + \param channel + \param currentProgram + \return + - programIndex of the current program + - -1 if not supported +*/ + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn VstInt32 AudioEffectX::getMidiProgramCategory (VstInt32 channel, MidiProgramCategory* category) + + \param channel + \param category + \return + - number of used categoryIndexes. + - 0 if no #MidiProgramCategory supported/used. +*/ + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn bool AudioEffectX::hasMidiProgramsChanged (VstInt32 channel) + + Ask plug-in for the currently active program on a certain MIDI Channel. Just like + getMidiProgramName(), but MidiProgramName::thisProgramIndex has to be filled out with + the currently active MIDI Program-index, which also has to be returned. + + \param channel + \return + - true: if the #MidiProgramNames, #MidiKeyNames or #MidiControllerNames had changed on + this channel +*/ + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn bool AudioEffectX::getMidiKeyName (VstInt32 channel, MidiKeyName* keyName) + + \param channel + \param keyName If keyName is "" the standard name of the key will be displayed + \return Return \e false if no #MidiKeyNames defined for 'thisProgramIndex' +*/ + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn bool AudioEffectX::beginSetProgram () + + \return + - true: the plug-in took the notification into account + - false: it did not... + + \sa endSetProgram() +*/ + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn bool AudioEffectX::endSetProgram () + + \return + - true: the plug-in took the notification into account + - false: it did not... + + \sa beginSetProgram() +*/ + +#if VST_2_1_EXTENSIONS +//----------------------------------------------------------------------------------------------------------------- +/*! + It tells the Host that if it needs to, it has to record automation data for this control. + + \param index Index of the parameter + \return Returns \e true on success + + \sa endEdit() +*/ +bool AudioEffectX::beginEdit (VstInt32 index) +{ + if (audioMaster) + return (audioMaster (&cEffect, audioMasterBeginEdit, index, 0, 0, 0)) ? true : false; + return 0; +} + +//----------------------------------------------------------------------------------------------------------------- +/*! + It notifies the Host that this control is no longer moved by the mouse. + + \param index Index of the parameter + \return Returns \e true on success + + \sa beginEdit() +*/ +bool AudioEffectX::endEdit (VstInt32 index) +{ + if (audioMaster) + return (audioMaster (&cEffect, audioMasterEndEdit, index, 0, 0, 0)) ? true : false; + return 0; +} + +//----------------------------------------------------------------------------------------------------------------- +/*! + \param ptr + \return Returns \e true on success + + \sa closeFileSelector() +*/ +bool AudioEffectX::openFileSelector (VstFileSelect* ptr) +{ + if (audioMaster && ptr) + return (audioMaster (&cEffect, audioMasterOpenFileSelector, 0, 0, ptr, 0)) ? true : false; + return 0; +} +#endif // VST_2_1_EXTENSIONS + +#if VST_2_2_EXTENSIONS +//----------------------------------------------------------------------------------------------------------------- +/*! + \param ptr + \return Returns \e true on success + + \sa openFileSelector() +*/ +bool AudioEffectX::closeFileSelector (VstFileSelect* ptr) +{ + if (audioMaster && ptr) + return (audioMaster (&cEffect, audioMasterCloseFileSelector, 0, 0, ptr, 0)) ? true : false; + return 0; +} + +//----------------------------------------------------------------------------------------------------------------- +/*! + It indicates how many samples will be processed. + + \param nativePath + \return Returns \e true on success + + \sa getChunk(), setChunk() +*/ +bool AudioEffectX::DECLARE_VST_DEPRECATED (getChunkFile) (void* nativePath) +{ + if (audioMaster && nativePath) + return (audioMaster (&cEffect, DECLARE_VST_DEPRECATED (audioMasterGetChunkFile), 0, 0, nativePath, 0)) ? true : false; + return 0; +} +#endif // VST_2_2_EXTENSIONS + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn VstInt32 AudioEffectX::setTotalSampleToProcess (VstInt32 value) + + It indicates how many samples will be processed in total. + + \param value Number of samples to process +*/ + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn VstInt32 AudioEffectX::getNextShellPlugin (char* name) { return 0; } + + \param name Points to a char buffer of size 64, which is to be filled with the name of the + plug-in including the terminating zero + \return Return the next plug-in's uniqueID + \note Example of Implementation +
+	//---From the Host side : if found plugin is a Shell category-----------
+	if (effect->getCategory () == kPlugCategShell)
+	{ 
+		// scan shell for subplugins
+		char tempName[64] = {0}; 
+		VstInt32 plugUniqueID = 0;
+		while ((plugUniqueID = effect->dispatchEffect (effShellGetNextPlugin, 0, 0, tempName)) != 0)
+		{ 
+			// subplug needs a name 
+			if (tempName[0] != 0)
+			{
+				...do what you want with this tempName and plugUniqueID
+			}
+		}
+	}
+	//---From the Host side : Intanciate a subplugin of a shell plugin---
+	// retreive the uniqueID of this subplugin the host wants to load
+	// set it to the host currentID
+	currentID = subplugInfo->uniqueID;
+	// call the its shell plugin (main function)
+	main ();
+	// the shell plugin will ask for the currentUniqueID
+	// and should return the chosen subplugin
+	...
+	//---From the plugin-Shell Side: for enumeration of subplugins---------
+	category = kPlugCategShell;
+	->can ask the host if "shellCategory" is supported
+	// at start (instanciation) reset the index for the getNextShellPlugin call.
+	myPluginShell::index = 0;
+	// implementation of getNextShellPlugin (char* name);
+	VstInt32 myPluginShell::getNextShellPlugin (char* name)
+	{
+		strcpy (name, MyNameTable[index]);
+		return MyUniqueIDTable[index++];
+	}
+	....
+	//---From the plugin-Shell Side: when instanciation-----
+	VstInt32 uniqueID = host->getCurrentUniqueID ();
+	if (uniqueID == 0) // the host instanciates the shell
+	{}
+	else // host try to instanciate one of my subplugin...identified by the uniqueID
+	{}
+
+*/ + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn bool AudioEffectX::setPanLaw (VstInt32 type, float val) + + \param type + \param val + + \return Returns \e true on success + + \note Gain: for Linear : [1.0 => 0dB PanLaw], [~0.58 => -4.5dB], [0.5 => -6.02dB] +*/ + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn VstInt32 AudioEffectX::beginLoadBank (VstPatchChunkInfo* ptr) + + \param ptr + \return + - -1: if the Bank cannot be loaded, + - 1: if it can be loaded + - 0: else (for compatibility) + + \sa beginLoadProgram() + +*/ + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn VstInt32 AudioEffectX::beginLoadProgram (VstPatchChunkInfo* ptr) + + \param ptr + \return + - -1: if the Program cannot be loaded, + - 1: it can be loaded else, + - 0: else (for compatibility) + + \sa beginLoadBank() +*/ + +//----------------------------------------------------------------------------------------------------------------- +// Speaker Arrangement Helpers +//----------------------------------------------------------------------------------------------------------------- + +#if VST_2_3_EXTENSIONS +//----------------------------------------------------------------------------------------------------------------- +/*! + \param arrangement Pointer to a \e #VstSpeakerArrangement structure + \param nbChannels Number of Channels + \return Returns \e true on success + + \sa deallocateArrangement(), copySpeaker(), matchArrangement() +*/ +bool AudioEffectX::allocateArrangement (VstSpeakerArrangement** arrangement, VstInt32 nbChannels) +{ + if (*arrangement) + { + char *ptr = (char*)(*arrangement); + delete [] ptr; + } + + VstInt32 size = 2 * sizeof (VstInt32) + nbChannels * sizeof (VstSpeakerProperties); + char* ptr = new char[size]; + if (!ptr) + return false; + + memset (ptr, 0, size); + *arrangement = (VstSpeakerArrangement*)ptr; + (*arrangement)->numChannels = nbChannels; + return true; +} + +//----------------------------------------------------------------------------------------------------------------- +/*! + \param arrangement Pointer to a \e #VstSpeakerArrangement structure + \return Returns \e true on success + + \sa allocateArrangement(), copySpeaker(), matchArrangement() +*/ +bool AudioEffectX::deallocateArrangement (VstSpeakerArrangement** arrangement) +{ + if (*arrangement) + { + char *ptr = (char*)(*arrangement); + delete [] ptr; + *arrangement = 0; + } + return true; +} + +//----------------------------------------------------------------------------------------------------------------- +/*! + Feed the \e to speaker properties with the same values than \e from 's ones. + It is assumed here that \e to exists yet, ie this function won't + allocate memory for the speaker (this will prevent from having + a difference between an Arrangement's number of channels and + its actual speakers...) + + \param to + \param from + \return Returns \e true on success + + \sa allocateArrangement(), deallocateArrangement(), matchArrangement() +*/ +bool AudioEffectX::copySpeaker (VstSpeakerProperties* to, VstSpeakerProperties* from) +{ + if ((from == NULL) || (to == NULL)) + return false; + + vst_strncpy (to->name, from->name, 63); + to->type = from->type; + to->azimuth = from->azimuth; + to->elevation = from->elevation; + to->radius = from->radius; + to->reserved = from->reserved; + memcpy (to->future, from->future, 28); + + return true; +} + +//----------------------------------------------------------------------------------------------------------------- +/*! + \e to is deleted, then created and initialized with the same values as \e from (must exist!). + It's notably useful when setSpeakerArrangement() is called by the Host. + + \param to + \param from + \return Returns \e true on success + + \sa allocateArrangement(), deallocateArrangement(), copySpeaker() +*/ + +bool AudioEffectX::matchArrangement (VstSpeakerArrangement** to, VstSpeakerArrangement* from) +{ + if (from == NULL) + return false; + + if ((!deallocateArrangement (to)) || (!allocateArrangement (to, from->numChannels))) + return false; + + (*to)->type = from->type; + for (VstInt32 i = 0; i < (*to)->numChannels; i++) + { + if (!copySpeaker (&((*to)->speakers[i]), &(from->speakers[i]))) + return false; + } + + return true; +} +#endif // VST_2_3_EXTENSIONS + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn bool AudioEffectX::setProcessPrecision (VstInt32 precision) + + Is called in suspended state, similar to #setBlockSize. Default (if not called) is single precision float. + + \param precision kVstProcessPrecision32 or kVstProcessPrecision64 + \return Returns \e true on success + \sa VstProcessPrecision +*/ + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn VstInt32 AudioEffectX::getNumMidiInputChannels () + + Called by the host application to determine how many MIDI input channels are actually used by a plugin + e.g. to hide unused channels from the user. + For compatibility with VST 2.3 and below, the default return value 0 means 'not implemented' - + in this case the host assumes 16 MIDI channels to be present (or none at all). + + \return Number of MIDI input channels: 1-15, otherwise: 16 or no MIDI channels at all (0) + + \note The VST 2.x protocol is limited to a maximum of 16 MIDI channels as defined by the MIDI Standard. This might change in future revisions of the API. + + \sa + getNumMidiOutputChannels() @n + PlugCanDos::canDoReceiveVstMidiEvent +*/ + +//----------------------------------------------------------------------------------------------------------------- +/*! + \fn VstInt32 AudioEffectX::getNumMidiOutputChannels () + + Called by the host application to determine how many MIDI output channels are actually used by a plugin + e.g. to hide unused channels from the user. + For compatibility with VST 2.3 and below, the default return value 0 means 'not implemented' - + in this case the host assumes 16 MIDI channels to be present (or none at all). + + \return Number of MIDI output channels: 1-15, otherwise: 16 or no MIDI channels at all (0) + + \note The VST 2.x protocol is limited to a maximum of 16 MIDI channels as defined by the MIDI Standard. This might change in future revisions of the API. + + \sa + getNumMidiInputChannels() @n + PlugCanDos::canDoSendVstMidiEvent +*/ diff --git a/public.sdk/source/vst2.x/audioeffectx.h b/public.sdk/source/vst2.x/audioeffectx.h new file mode 100644 index 0000000..1dd608f --- /dev/null +++ b/public.sdk/source/vst2.x/audioeffectx.h @@ -0,0 +1,252 @@ +//------------------------------------------------------------------------------------------------------- +// VST Plug-Ins SDK +// Version 2.4 $Date: 2006/06/20 12:42:46 $ +// +// Category : VST 2.x Classes +// Filename : audioeffectx.h +// Created by : Steinberg Media Technologies +// Description : Class AudioEffectX extends AudioEffect with new features. You should derive +// your plug-in from AudioEffectX. +// +// © 2006, Steinberg Media Technologies, All Rights Reserved +//------------------------------------------------------------------------------------------------------- + +#ifndef __audioeffectx__ +#define __audioeffectx__ + +#include "audioeffect.h" // Version 1.0 base class AudioEffect + +#include "pluginterfaces/vst2.x/aeffectx.h" // Version 2.x 'C' Extensions and Structures + +//------------------------------------------------------------------------------------------------------- +/** Extended VST Effect Class (VST 2.x). */ +//------------------------------------------------------------------------------------------------------- +class AudioEffectX : public AudioEffect +{ +public: + AudioEffectX (audioMasterCallback audioMaster, VstInt32 numPrograms, VstInt32 numParams); ///< Create an \e AudioEffectX object + +//------------------------------------------------------------------------------------------------------- +/// \name Parameters +//------------------------------------------------------------------------------------------------------- +//@{ + virtual bool canParameterBeAutomated (VstInt32 index) { return true; } ///< Indicates if a parameter can be automated + virtual bool string2parameter (VstInt32 index, char* text) { return false; } ///< Convert a string representation to a parameter value + virtual bool getParameterProperties (VstInt32 index, VstParameterProperties* p) { return false; } ///< Return parameter properties + +#if VST_2_1_EXTENSIONS + virtual bool beginEdit (VstInt32 index); ///< To be called before #setParameterAutomated (on Mouse Down). This will be used by the Host for specific Automation Recording. + virtual bool endEdit (VstInt32 index); ///< To be called after #setParameterAutomated (on Mouse Up) +#endif // VST_2_1_EXTENSIONS +//@} + +//------------------------------------------------------------------------------------------------------- +/// \name Programs and Persistence +//------------------------------------------------------------------------------------------------------- +//@{ + virtual bool getProgramNameIndexed (VstInt32 category, VstInt32 index, char* text) { return false; } ///< Fill \e text with name of program \e index (\e category deprecated in VST 2.4) + +#if VST_2_1_EXTENSIONS + virtual bool beginSetProgram () { return false; } ///< Called before a program is loaded + virtual bool endSetProgram () { return false; } ///< Called after a program was loaded +#endif // VST_2_1_EXTENSIONS + +#if VST_2_3_EXTENSIONS + virtual VstInt32 beginLoadBank (VstPatchChunkInfo* ptr) { return 0; } ///< Called before a Bank is loaded. + virtual VstInt32 beginLoadProgram (VstPatchChunkInfo* ptr) { return 0; } ///< Called before a Program is loaded. (called before #beginSetProgram). +#endif // VST_2_3_EXTENSIONS +//@} + +//------------------------------------------------------------------------------------------------------- +/// \name Connections and Configuration +//------------------------------------------------------------------------------------------------------- +//@{ + virtual bool ioChanged (); ///< Tell Host numInputs and/or numOutputs and/or initialDelay (and/or numParameters: to be avoid) have changed + + virtual double updateSampleRate (); ///< Returns sample rate from Host (may issue setSampleRate()) + virtual VstInt32 updateBlockSize (); ///< Returns block size from Host (may issue getBlockSize()) + virtual VstInt32 getInputLatency (); ///< Returns the Audio (maybe ASIO) input latency values + virtual VstInt32 getOutputLatency (); ///< Returns the Audio (maybe ASIO) output latency values + + virtual bool getInputProperties (VstInt32 index, VstPinProperties* properties) { return false; } ///< Return the \e properties of output \e index + virtual bool getOutputProperties (VstInt32 index, VstPinProperties* properties) { return false; }///< Return the \e properties of input \e index + + virtual bool setSpeakerArrangement (VstSpeakerArrangement* pluginInput, VstSpeakerArrangement* pluginOutput) { return false; } ///< Set the plug-in's speaker arrangements + virtual bool getSpeakerArrangement (VstSpeakerArrangement** pluginInput, VstSpeakerArrangement** pluginOutput) { *pluginInput = 0; *pluginOutput = 0; return false; } ///< Return the plug-in's speaker arrangements + virtual bool setBypass (bool onOff) { return false; } ///< For 'soft-bypass' (this could be automated (in Audio Thread) that why you could NOT call iochanged (if needed) in this function, do it in fxidle). + +#if VST_2_3_EXTENSIONS + virtual bool setPanLaw (VstInt32 type, float val) { return false; } ///< Set the Panning Law used by the Host @see VstPanLawType. +#endif // VST_2_3_EXTENSIONS + +#if VST_2_4_EXTENSIONS + virtual bool setProcessPrecision (VstInt32 precision) { return false; } ///< Set floating-point precision used for processing (32 or 64 bit) + + virtual VstInt32 getNumMidiInputChannels () { return 0; } ///< Returns number of MIDI input channels used [0, 16] + virtual VstInt32 getNumMidiOutputChannels () { return 0; } ///< Returns number of MIDI output channels used [0, 16] +#endif // VST_2_4_EXTENSIONS +//@} + +//------------------------------------------------------------------------------------------------------- +/// \name Realtime +//------------------------------------------------------------------------------------------------------- +//@{ + virtual VstTimeInfo* getTimeInfo (VstInt32 filter); ///< Get time information from Host + virtual VstInt32 getCurrentProcessLevel (); ///< Returns the Host's process level + virtual VstInt32 getAutomationState (); ///< Returns the Host's automation state + + virtual VstInt32 processEvents (VstEvents* events) { return 0; } ///< Called when new MIDI events come in + bool sendVstEventsToHost (VstEvents* events); ///< Send MIDI events back to Host application + +#if VST_2_3_EXTENSIONS + virtual VstInt32 startProcess () { return 0; } ///< Called one time before the start of process call. This indicates that the process call will be interrupted (due to Host reconfiguration or bypass state when the plug-in doesn't support softBypass) + virtual VstInt32 stopProcess () { return 0;} ///< Called after the stop of process call +#endif // VST_2_3_EXTENSIONS +//@} + +//------------------------------------------------------------------------------------------------------- +/// \name Variable I/O (Offline) +//------------------------------------------------------------------------------------------------------- +//@{ + virtual bool processVariableIo (VstVariableIo* varIo) { return false; } ///< Used for variable I/O processing (offline processing like timestreching) + +#if VST_2_3_EXTENSIONS + virtual VstInt32 setTotalSampleToProcess (VstInt32 value) { return value; } ///< Called in offline mode before process() or processVariableIo () +#endif // VST_2_3_EXTENSIONS + //@} + +//------------------------------------------------------------------------------------------------------- +/// \name Host Properties +//------------------------------------------------------------------------------------------------------- +//@{ + virtual bool getHostVendorString (char* text); ///< Fills \e text with a string identifying the vendor + virtual bool getHostProductString (char* text); ///< Fills \e text with a string with product name + virtual VstInt32 getHostVendorVersion (); ///< Returns vendor-specific version (for example 3200 for Nuendo 3.2) + virtual VstIntPtr hostVendorSpecific (VstInt32 lArg1, VstIntPtr lArg2, void* ptrArg, float floatArg); ///< No specific definition + virtual VstInt32 canHostDo (char* text); ///< Reports what the Host is able to do (#hostCanDos in audioeffectx.cpp) + virtual VstInt32 getHostLanguage (); ///< Returns the Host's language (#VstHostLanguage) +//@} + +//------------------------------------------------------------------------------------------------------- +/// \name Plug-in Properties +//------------------------------------------------------------------------------------------------------- +//@{ + virtual void isSynth (bool state = true); ///< Set if plug-in is a synth + virtual void noTail (bool state = true); ///< Plug-in won't produce output signals while there is no input + virtual VstInt32 getGetTailSize () { return 0; }///< Returns tail size; 0 is default (return 1 for 'no tail'), used in offline processing too + virtual void* getDirectory (); ///< Returns the plug-in's directory + virtual bool getEffectName (char* name) { return false; } ///< Fill \e text with a string identifying the effect + virtual bool getVendorString (char* text) { return false; } ///< Fill \e text with a string identifying the vendor + virtual bool getProductString (char* text) { return false; }///< Fill \e text with a string identifying the product name + virtual VstInt32 getVendorVersion () { return 0; } ///< Return vendor-specific version + virtual VstIntPtr vendorSpecific (VstInt32 lArg, VstIntPtr lArg2, void* ptrArg, float floatArg) { return 0; } ///< No definition, vendor specific handling + virtual VstInt32 canDo (char* text) { return 0; } ///< Reports what the plug-in is able to do (#plugCanDos in audioeffectx.cpp) + virtual VstInt32 getVstVersion () { return kVstVersion; } ///< Returns the current VST Version (#kVstVersion) + virtual VstPlugCategory getPlugCategory (); ///< Specify a category that fits the plug (#VstPlugCategory) +//@} + +//------------------------------------------------------------------------------------------------------- +/// \name MIDI Channel Programs +//------------------------------------------------------------------------------------------------------- +//@{ +#if VST_2_1_EXTENSIONS + virtual VstInt32 getMidiProgramName (VstInt32 channel, MidiProgramName* midiProgramName) { return 0; } ///< Fill \e midiProgramName with information for 'thisProgramIndex'. + virtual VstInt32 getCurrentMidiProgram (VstInt32 channel, MidiProgramName* currentProgram) { return -1; } ///< Fill \e currentProgram with information for the current MIDI program. + virtual VstInt32 getMidiProgramCategory (VstInt32 channel, MidiProgramCategory* category) { return 0; } ///< Fill \e category with information for 'thisCategoryIndex'. + virtual bool hasMidiProgramsChanged (VstInt32 channel) { return false; } ///< Return true if the #MidiProgramNames, #MidiKeyNames or #MidiControllerNames had changed on this MIDI channel. + virtual bool getMidiKeyName (VstInt32 channel, MidiKeyName* keyName) { return false; } ///< Fill \e keyName with information for 'thisProgramIndex' and 'thisKeyNumber' +#endif // VST_2_1_EXTENSIONS +//@} + +//------------------------------------------------------------------------------------------------------- +/// \name Others +//------------------------------------------------------------------------------------------------------- +//@{ + virtual bool updateDisplay (); ///< Something has changed in plug-in, request an update display like program (MIDI too) and parameters list in Host + virtual bool sizeWindow (VstInt32 width, VstInt32 height); ///< Requests to resize the editor window + +#if VST_2_1_EXTENSIONS + virtual bool openFileSelector (VstFileSelect* ptr); ///< Open a Host File selector (see aeffectx.h for #VstFileSelect definition) +#endif // VST_2_1_EXTENSIONS + +#if VST_2_2_EXTENSIONS + virtual bool closeFileSelector (VstFileSelect* ptr); ///< Close the Host File selector which was opened by #openFileSelector +#endif // VST_2_2_EXTENSIONS + +#if VST_2_3_EXTENSIONS + virtual VstInt32 getNextShellPlugin (char* name) { return 0; } ///< This opcode is only called, if the plug-in is of type #kPlugCategShell, in order to extract all included sub-plugin´s names. +#endif // VST_2_3_EXTENSIONS +//@} + +//------------------------------------------------------------------------------------------------------- +/// \name Tools +//------------------------------------------------------------------------------------------------------- +//@{ +#if VST_2_3_EXTENSIONS + virtual bool allocateArrangement (VstSpeakerArrangement** arrangement, VstInt32 nbChannels);///< Allocate memory for a #VstSpeakerArrangement + virtual bool deallocateArrangement (VstSpeakerArrangement** arrangement); ///< Delete/free memory for an allocated speaker arrangement + virtual bool copySpeaker (VstSpeakerProperties* to, VstSpeakerProperties* from); ///< Copy properties \e from to \e to + virtual bool matchArrangement (VstSpeakerArrangement** to, VstSpeakerArrangement* from); ///< "to" is deleted, then created and initialized with the same values as "from" ones ("from" must exist). +#endif // VST_2_3_EXTENSIONS +//@} + +//------------------------------------------------------------------------------------------------------- +// Offline +//------------------------------------------------------------------------------------------------------- +/// @cond ignore + virtual bool offlineRead (VstOfflineTask* offline, VstOfflineOption option, bool readSource = true); + virtual bool offlineWrite (VstOfflineTask* offline, VstOfflineOption option); + virtual bool offlineStart (VstAudioFile* ptr, VstInt32 numAudioFiles, VstInt32 numNewAudioFiles); + virtual VstInt32 offlineGetCurrentPass (); + virtual VstInt32 offlineGetCurrentMetaPass (); + virtual bool offlineNotify (VstAudioFile* ptr, VstInt32 numAudioFiles, bool start) { return false; } + virtual bool offlinePrepare (VstOfflineTask* offline, VstInt32 count) { return false; } + virtual bool offlineRun (VstOfflineTask* offline, VstInt32 count) { return false; } + virtual VstInt32 offlineGetNumPasses () { return 0; } + virtual VstInt32 offlineGetNumMetaPasses () { return 0; } + +//------------------------------------------------------------------------------------------------------- +// AudioEffect overrides +//------------------------------------------------------------------------------------------------------- + virtual VstIntPtr dispatcher (VstInt32 opcode, VstInt32 index, VstIntPtr value, void* ptr, float opt); + virtual void resume (); + +//------------------------------------------------------------------------------------------------------- +// Deprecated methods +//------------------------------------------------------------------------------------------------------- + virtual void DECLARE_VST_DEPRECATED (wantEvents) (VstInt32 filter = 1); + virtual VstInt32 DECLARE_VST_DEPRECATED (tempoAt) (VstInt32 pos); + virtual VstInt32 DECLARE_VST_DEPRECATED (getNumAutomatableParameters) (); + virtual VstInt32 DECLARE_VST_DEPRECATED (getParameterQuantization) (); + virtual VstInt32 DECLARE_VST_DEPRECATED (getNumCategories) () { return 1L; } + virtual bool DECLARE_VST_DEPRECATED (copyProgram) (VstInt32 destination) { return false; } + virtual bool DECLARE_VST_DEPRECATED (needIdle) (); + virtual AEffect* DECLARE_VST_DEPRECATED (getPreviousPlug) (VstInt32 input); + virtual AEffect* DECLARE_VST_DEPRECATED (getNextPlug) (VstInt32 output); + virtual void DECLARE_VST_DEPRECATED (inputConnected) (VstInt32 index, bool state) {} + virtual void DECLARE_VST_DEPRECATED (outputConnected) (VstInt32 index, bool state) {} + virtual VstInt32 DECLARE_VST_DEPRECATED (willProcessReplacing) (); + virtual void DECLARE_VST_DEPRECATED (wantAsyncOperation) (bool state = true); + virtual void DECLARE_VST_DEPRECATED (hasExternalBuffer) (bool state = true); + virtual VstInt32 DECLARE_VST_DEPRECATED (reportCurrentPosition) () { return 0; } + virtual float* DECLARE_VST_DEPRECATED (reportDestinationBuffer) () { return 0; } + virtual void DECLARE_VST_DEPRECATED (setOutputSamplerate) (float samplerate); + virtual VstSpeakerArrangement* DECLARE_VST_DEPRECATED (getInputSpeakerArrangement) (); + virtual VstSpeakerArrangement* DECLARE_VST_DEPRECATED (getOutputSpeakerArrangement) (); + virtual void* DECLARE_VST_DEPRECATED (openWindow) (DECLARE_VST_DEPRECATED (VstWindow)*); + virtual bool DECLARE_VST_DEPRECATED (closeWindow) (DECLARE_VST_DEPRECATED (VstWindow)*); + virtual void DECLARE_VST_DEPRECATED (setBlockSizeAndSampleRate) (VstInt32 _blockSize, float _sampleRate) { blockSize = _blockSize; sampleRate = _sampleRate; } + virtual bool DECLARE_VST_DEPRECATED (getErrorText) (char* text) { return false; } + virtual void* DECLARE_VST_DEPRECATED (getIcon) () { return 0; } + virtual bool DECLARE_VST_DEPRECATED (setViewPosition) (VstInt32 x, VstInt32 y) { return false; } + virtual VstInt32 DECLARE_VST_DEPRECATED (fxIdle) () { return 0; } + virtual bool DECLARE_VST_DEPRECATED (keysRequired) () { return false; } + +#if VST_2_2_EXTENSIONS + virtual bool DECLARE_VST_DEPRECATED (getChunkFile) (void* nativePath); ///< Returns in platform format the path of the current chunk (could be called in #setChunk ()) (FSSpec on MAC else char*) +#endif // VST_2_2_EXTENSIONS +/// @endcond +//------------------------------------------------------------------------------------------------------- +}; + +#endif //__audioeffectx__ diff --git a/public.sdk/source/vst2.x/vstplugmain.cpp b/public.sdk/source/vst2.x/vstplugmain.cpp new file mode 100644 index 0000000..78e7b34 --- /dev/null +++ b/public.sdk/source/vst2.x/vstplugmain.cpp @@ -0,0 +1,68 @@ +//------------------------------------------------------------------------------------------------------- +// VST Plug-Ins SDK +// Version 2.4 $Date: 2006/08/29 12:08:50 $ +// +// Category : VST 2.x Classes +// Filename : vstplugmain.cpp +// Created by : Steinberg Media Technologies +// Description : VST Plug-In Main Entry +// +// © 2006, Steinberg Media Technologies, All Rights Reserved +//------------------------------------------------------------------------------------------------------- + +#include "audioeffect.h" + +//------------------------------------------------------------------------ +/** Must be implemented externally. */ +extern AudioEffect* createEffectInstance (audioMasterCallback audioMaster); + +extern "C" { + +#if defined (__GNUC__) && ((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1))) + #define VST_EXPORT __attribute__ ((visibility ("default"))) +#else + #define VST_EXPORT +#endif + +//------------------------------------------------------------------------ +/** Prototype of the export function main */ +//------------------------------------------------------------------------ +VST_EXPORT AEffect* VSTPluginMain (audioMasterCallback audioMaster) +{ + // Get VST Version of the Host + if (!audioMaster (0, audioMasterVersion, 0, 0, 0, 0)) + return 0; // old version + + // Create the AudioEffect + AudioEffect* effect = createEffectInstance (audioMaster); + if (!effect) + return 0; + + // Return the VST AEffect structur + return effect->getAeffect (); +} + +// support for old hosts not looking for VSTPluginMain +#if (TARGET_API_MAC_CARBON && __ppc__) +VST_EXPORT AEffect* main_macho (audioMasterCallback audioMaster) { return VSTPluginMain (audioMaster); } +#elif WIN32 +VST_EXPORT AEffect* MAIN (audioMasterCallback audioMaster) { return VSTPluginMain (audioMaster); } +#elif BEOS +VST_EXPORT AEffect* main_plugin (audioMasterCallback audioMaster) { return VSTPluginMain (audioMaster); } +#endif + +} // extern "C" + +//------------------------------------------------------------------------ +#if WIN32 +#include +void* hInstance; + +extern "C" { +BOOL WINAPI DllMain (HINSTANCE hInst, DWORD dwReason, LPVOID lpvReserved) +{ + hInstance = hInst; + return 1; +} +} // extern "C" +#endif diff --git a/vstgui.sf/drawtest/mac/Info.plist b/vstgui.sf/drawtest/mac/Info.plist new file mode 100644 index 0000000..a5742bf --- /dev/null +++ b/vstgui.sf/drawtest/mac/Info.plist @@ -0,0 +1,28 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + drawtest + CFBundleIconFile + + CFBundleIdentifier + net.sourceforge.vstgui.drawtest + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + drawtest + CFBundlePackageType + BNDL + CFBundleSignature + ???? + CFBundleVersion + 1.0 + CSResourcesFileMapped + + VSTWindowCompositing + + + diff --git a/vstgui.sf/drawtest/mac/audiounit.exp b/vstgui.sf/drawtest/mac/audiounit.exp new file mode 100644 index 0000000..6c4658b --- /dev/null +++ b/vstgui.sf/drawtest/mac/audiounit.exp @@ -0,0 +1,2 @@ +_DrawTestAUEntry +_VSTGUIAUViewEntry \ No newline at end of file diff --git a/vstgui.sf/drawtest/mac/cw_vst_prefix.pch++ b/vstgui.sf/drawtest/mac/cw_vst_prefix.pch++ new file mode 100644 index 0000000..5b55590 --- /dev/null +++ b/vstgui.sf/drawtest/mac/cw_vst_prefix.pch++ @@ -0,0 +1,4 @@ +#include "vstplugsquartz.h" + +#include +#include "vstgui.h" diff --git a/vstgui.sf/drawtest/mac/drawtest.cw9prj b/vstgui.sf/drawtest/mac/drawtest.cw9prj new file mode 100644 index 0000000..9e4a1ef Binary files /dev/null and b/vstgui.sf/drawtest/mac/drawtest.cw9prj differ diff --git a/vstgui.sf/drawtest/mac/drawtest.plc b/vstgui.sf/drawtest/mac/drawtest.plc new file mode 100644 index 0000000..5240045 --- /dev/null +++ b/vstgui.sf/drawtest/mac/drawtest.plc @@ -0,0 +1,40 @@ +#define stringEffectName __OUTPUT_FILENAME__ +#define stringVersion "1.0.0.0" +#define stringCopyright "© Arne Scheffler 2004" + + +#ifndef stringEffectName +#error "You need to set stringEffectName" +#endif +#ifndef stringVersion +#error "You need to set stringVersion" +#endif +#ifndef stringCopyright +#error "You need to set stringCopyright" +#endif + +#define BUNDLE_NAME stringEffectName +#define BUNDLE_COPYRIGHT stringCopyright +#define BUNDLE_VERSION stringVersion +#define BUNDLE_IDENTIFIER "com.steinberg." BUNDLE_NAME +#define BUNDLE_ICON "commonIcon" + + +plist +{ + dictionary + { + key "CFBundleInfoDictionaryVersion" value string "6.0" + key "CFBundleDevelopmentRegion" value string "English" + key "CFBundleName" value string BUNDLE_NAME + key "CFBundleIdentifier" value string BUNDLE_IDENTIFIER + key "CFBundleGetInfoString" value string BUNDLE_NAME " " BUNDLE_VERSION ", " BUNDLE_COPYRIGHT + key "CFBundleShortVersionString" value string BUNDLE_VERSION + key "CFBundleExecutable" value string __OUTPUT_FILENAME__ + key "CFBundlePackageType" value string __OUTPUT_TYPE__ + key "CFBundleSignature" value string __OUTPUT_CREATOR__ + key "CFBundleBuildDate" value string __DATE__ + key "CFBundleIconFile" value string BUNDLE_ICON + key "VSTWindowCompositing" value boolean true + } +} diff --git a/vstgui.sf/drawtest/mac/drawtest.xcode/project.pbxproj b/vstgui.sf/drawtest/mac/drawtest.xcode/project.pbxproj new file mode 100644 index 0000000..1c30579 --- /dev/null +++ b/vstgui.sf/drawtest/mac/drawtest.xcode/project.pbxproj @@ -0,0 +1,2050 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 39; + objects = { + 089C1669FE841209C02AAC07 = { + buildSettings = { + }; + buildStyles = ( + 4F9091AC011F3BD104CA0E50, + 4F9091AD011F3BD104CA0E50, + ); + hasScannedForEncodings = 1; + isa = PBXProject; + mainGroup = 089C166AFE841209C02AAC07; + projectDirPath = ""; + targets = ( + 8D01CCC60486CAD60068D4B7, + F4C9F1D307B2320800010DAD, + ); + }; + 089C166AFE841209C02AAC07 = { + children = ( + 0C01265607AC430A009EC388, + 08FB77ADFE841716C02AAC07, + 089C167CFE841241C02AAC07, + 089C1671FE841209C02AAC07, + 19C28FB4FE9D528D11CA2CBB, + ); + isa = PBXGroup; + name = drawtest; + refType = 4; + sourceTree = ""; + }; + 089C1671FE841209C02AAC07 = { + children = ( + F40BD99607D3B28F00E1073A, + 0C1C289B07AC283C007128C4, + 0C1C289907AC2824007128C4, + 8B5C7F83076FB26000A15F61, + 8BA05B01072074F900365D66, + 8BA05AF9072074E100365D66, + 08EA7FFBFE8413EDC02AAC07, + ); + isa = PBXGroup; + name = "External Frameworks and Libraries"; + refType = 4; + sourceTree = ""; + }; + 089C167CFE841241C02AAC07 = { + children = ( + 0CF3554207B17126002BFE50, + 0CF3554307B17126002BFE50, + 0CF3554407B17126002BFE50, + 0CF3554507B17126002BFE50, + 0CF3554607B17126002BFE50, + 0CF3554707B17126002BFE50, + 0CF3554807B17126002BFE50, + 0CF3554907B17126002BFE50, + 0CF3554A07B17126002BFE50, + 0CF3554B07B17126002BFE50, + 0CF3554C07B17126002BFE50, + 0CF3554D07B17126002BFE50, + 0CF3554E07B17126002BFE50, + 0CF3554F07B17126002BFE50, + 0CF3555007B17126002BFE50, + 0CF3555107B17126002BFE50, + 0CF3555207B17126002BFE50, + 0CF3555307B17126002BFE50, + 0CF3555407B17126002BFE50, + 0C01262007AC3D21009EC388, + ); + isa = PBXGroup; + name = Resources; + refType = 4; + sourceTree = ""; + }; + 08EA7FFBFE8413EDC02AAC07 = { + isa = PBXFileReference; + lastKnownFileType = wrapper.framework; + name = Carbon.framework; + path = /System/Library/Frameworks/Carbon.framework; + refType = 0; + sourceTree = ""; + }; + 08FB77ADFE841716C02AAC07 = { + children = ( + F4C9F1E107B232B900010DAD, + 0C1C269E07AB5DE8007128C4, + 8BA05AEB0720742700365D66, + 8BA05A7D072073D200365D66, + 8BA05A56072072A900365D66, + ); + isa = PBXGroup; + name = Source; + refType = 4; + sourceTree = ""; + }; +//080 +//081 +//082 +//083 +//084 +//0C0 +//0C1 +//0C2 +//0C3 +//0C4 + 0C01252807AC359F009EC388 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + name = cscrollview.cpp; + path = ../../vstgui/cscrollview.cpp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0C01252A07AC359F009EC388 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + name = ctabview.cpp; + path = ../../vstgui/ctabview.cpp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0C01252C07AC359F009EC388 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + name = plugguieditor.cpp; + path = ../../vstgui/plugguieditor.cpp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0C01252E07AC359F009EC388 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + name = vstcontrols.cpp; + path = ../../vstgui/vstcontrols.cpp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0C01253007AC359F009EC388 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + name = vstgui.cpp; + path = ../../vstgui/vstgui.cpp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0C01253807AC359F009EC388 = { + fileRef = 0C01252807AC359F009EC388; + isa = PBXBuildFile; + settings = { + }; + }; + 0C01253A07AC359F009EC388 = { + fileRef = 0C01252A07AC359F009EC388; + isa = PBXBuildFile; + settings = { + }; + }; + 0C01253C07AC359F009EC388 = { + fileRef = 0C01252C07AC359F009EC388; + isa = PBXBuildFile; + settings = { + }; + }; + 0C01253E07AC359F009EC388 = { + fileRef = 0C01252E07AC359F009EC388; + isa = PBXBuildFile; + settings = { + }; + }; + 0C01254007AC359F009EC388 = { + fileRef = 0C01253007AC359F009EC388; + isa = PBXBuildFile; + settings = { + }; + }; + 0C01261907AC3CE1009EC388 = { + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + isa = PBXShellScriptBuildPhase; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "cp -p -r -f \"build/drawtest.component\" \"$HOME/Library/Audio/Plug-Ins/Components/\" \ntouch \"$HOME/Library/Audio/Plug-Ins/Components\"\n"; + }; + 0C01262007AC3D21009EC388 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.rez; + name = audiounit.r; + path = ../resources/audiounit.r; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0C01262107AC3D21009EC388 = { + fileRef = 0C01262007AC3D21009EC388; + isa = PBXBuildFile; + settings = { + }; + }; + 0C01265607AC430A009EC388 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = text.xml; + path = Info.plist; + refType = 4; + sourceTree = ""; + }; + 0C1C269E07AB5DE8007128C4 = { + children = ( + F4C9F20407B2335F00010DAD, + 0C01252807AC359F009EC388, + 0C01252A07AC359F009EC388, + 0C01252C07AC359F009EC388, + 0C01252E07AC359F009EC388, + 0C01253007AC359F009EC388, + ); + isa = PBXGroup; + name = VSTGUI; + refType = 4; + sourceTree = ""; + }; + 0C1C289907AC2824007128C4 = { + isa = PBXFileReference; + lastKnownFileType = wrapper.framework; + name = System.framework; + path = /System/Library/Frameworks/System.framework; + refType = 0; + sourceTree = ""; + }; + 0C1C289A07AC2824007128C4 = { + fileRef = 0C1C289907AC2824007128C4; + isa = PBXBuildFile; + settings = { + }; + }; + 0C1C289B07AC283C007128C4 = { + isa = PBXFileReference; + lastKnownFileType = wrapper.framework; + name = QuickTime.framework; + path = /System/Library/Frameworks/QuickTime.framework; + refType = 0; + sourceTree = ""; + }; + 0C1C289C07AC283C007128C4 = { + fileRef = 0C1C289B07AC283C007128C4; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF3554207B17126002BFE50 = { + isa = PBXFileReference; + lastKnownFileType = image.png; + name = bmp00001.png; + path = ../resources/bmp00001.png; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF3554307B17126002BFE50 = { + isa = PBXFileReference; + lastKnownFileType = image.png; + name = bmp00100.png; + path = ../resources/bmp00100.png; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF3554407B17126002BFE50 = { + isa = PBXFileReference; + lastKnownFileType = image.png; + name = bmp01000.png; + path = ../resources/bmp01000.png; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF3554507B17126002BFE50 = { + isa = PBXFileReference; + lastKnownFileType = image.bmp; + name = bmp10001.bmp; + path = ../resources/bmp10001.bmp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF3554607B17126002BFE50 = { + isa = PBXFileReference; + lastKnownFileType = image.bmp; + name = bmp10002.bmp; + path = ../resources/bmp10002.bmp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF3554707B17126002BFE50 = { + isa = PBXFileReference; + lastKnownFileType = image.bmp; + name = bmp10003.bmp; + path = ../resources/bmp10003.bmp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF3554807B17126002BFE50 = { + isa = PBXFileReference; + lastKnownFileType = image.bmp; + name = bmp10004.bmp; + path = ../resources/bmp10004.bmp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF3554907B17126002BFE50 = { + isa = PBXFileReference; + lastKnownFileType = image.bmp; + name = bmp10005.bmp; + path = ../resources/bmp10005.bmp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF3554A07B17126002BFE50 = { + isa = PBXFileReference; + lastKnownFileType = image.bmp; + name = bmp10006.bmp; + path = ../resources/bmp10006.bmp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF3554B07B17126002BFE50 = { + isa = PBXFileReference; + lastKnownFileType = image.bmp; + name = bmp10007.bmp; + path = ../resources/bmp10007.bmp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF3554C07B17126002BFE50 = { + isa = PBXFileReference; + lastKnownFileType = image.bmp; + name = bmp10008.bmp; + path = ../resources/bmp10008.bmp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF3554D07B17126002BFE50 = { + isa = PBXFileReference; + lastKnownFileType = image.bmp; + name = bmp10009.bmp; + path = ../resources/bmp10009.bmp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF3554E07B17126002BFE50 = { + isa = PBXFileReference; + lastKnownFileType = image.bmp; + name = bmp10010.bmp; + path = ../resources/bmp10010.bmp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF3554F07B17126002BFE50 = { + isa = PBXFileReference; + lastKnownFileType = image.bmp; + name = bmp10011.bmp; + path = ../resources/bmp10011.bmp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF3555007B17126002BFE50 = { + isa = PBXFileReference; + lastKnownFileType = image.bmp; + name = bmp10012.bmp; + path = ../resources/bmp10012.bmp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF3555107B17126002BFE50 = { + isa = PBXFileReference; + lastKnownFileType = image.bmp; + name = bmp10013.bmp; + path = ../resources/bmp10013.bmp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF3555207B17126002BFE50 = { + isa = PBXFileReference; + lastKnownFileType = image.bmp; + name = bmp10014.bmp; + path = ../resources/bmp10014.bmp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF3555307B17126002BFE50 = { + isa = PBXFileReference; + lastKnownFileType = image.bmp; + name = bmp10015.bmp; + path = ../resources/bmp10015.bmp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF3555407B17126002BFE50 = { + isa = PBXFileReference; + lastKnownFileType = image.bmp; + name = bmp10016.bmp; + path = ../resources/bmp10016.bmp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF3555507B17126002BFE50 = { + fileRef = 0CF3554207B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF3555607B17126002BFE50 = { + fileRef = 0CF3554307B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF3555707B17126002BFE50 = { + fileRef = 0CF3554407B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF3555807B17126002BFE50 = { + fileRef = 0CF3554507B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF3555907B17126002BFE50 = { + fileRef = 0CF3554607B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF3555A07B17126002BFE50 = { + fileRef = 0CF3554707B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF3555B07B17126002BFE50 = { + fileRef = 0CF3554807B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF3555C07B17126002BFE50 = { + fileRef = 0CF3554907B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF3555D07B17126002BFE50 = { + fileRef = 0CF3554A07B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF3555E07B17126002BFE50 = { + fileRef = 0CF3554B07B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF3555F07B17126002BFE50 = { + fileRef = 0CF3554C07B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF3556007B17126002BFE50 = { + fileRef = 0CF3554D07B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF3556107B17126002BFE50 = { + fileRef = 0CF3554E07B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF3556207B17126002BFE50 = { + fileRef = 0CF3554F07B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF3556307B17126002BFE50 = { + fileRef = 0CF3555007B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF3556407B17126002BFE50 = { + fileRef = 0CF3555107B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF3556507B17126002BFE50 = { + fileRef = 0CF3555207B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF3556607B17126002BFE50 = { + fileRef = 0CF3555307B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF3556707B17126002BFE50 = { + fileRef = 0CF3555407B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF355BE07B173A3002BFE50 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + name = pdrawtesteditor.cpp; + path = ../source/pdrawtesteditor.cpp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF355BF07B173A3002BFE50 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = pdrawtesteditor.h; + path = ../source/pdrawtesteditor.h; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF355C007B173A3002BFE50 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + name = pdrawtesteffect.cpp; + path = ../source/pdrawtesteffect.cpp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF355C107B173A3002BFE50 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = pdrawtesteffect.h; + path = ../source/pdrawtesteffect.h; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF355C207B173A3002BFE50 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + name = pdrawtestview.cpp; + path = ../source/pdrawtestview.cpp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF355C307B173A3002BFE50 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = pdrawtestview.h; + path = ../source/pdrawtestview.h; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF355C407B173A3002BFE50 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + name = pprimitivesviews.cpp; + path = ../source/pprimitivesviews.cpp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF355C507B173A3002BFE50 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = pprimitivesviews.h; + path = ../source/pprimitivesviews.h; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF355C607B173A3002BFE50 = { + fileRef = 0CF355BE07B173A3002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF355C707B173A3002BFE50 = { + fileRef = 0CF355BF07B173A3002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF355C807B173A3002BFE50 = { + fileRef = 0CF355C007B173A3002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF355C907B173A3002BFE50 = { + fileRef = 0CF355C107B173A3002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF355CA07B173A3002BFE50 = { + fileRef = 0CF355C207B173A3002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF355CB07B173A3002BFE50 = { + fileRef = 0CF355C307B173A3002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF355CC07B173A3002BFE50 = { + fileRef = 0CF355C407B173A3002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF355CD07B173A3002BFE50 = { + fileRef = 0CF355C507B173A3002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF355FB07B17600002BFE50 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + name = controlsgui.cpp; + path = ../source/controlsgui.cpp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF355FC07B17600002BFE50 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = controlsgui.h; + path = ../source/controlsgui.h; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + 0CF355FD07B17600002BFE50 = { + fileRef = 0CF355FB07B17600002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + 0CF355FE07B17600002BFE50 = { + fileRef = 0CF355FC07B17600002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; +//0C0 +//0C1 +//0C2 +//0C3 +//0C4 +//190 +//191 +//192 +//193 +//194 + 19C28FB4FE9D528D11CA2CBB = { + children = ( + 8D01CCD20486CAD60068D4B7, + F4C9F1D407B2320800010DAD, + ); + isa = PBXGroup; + name = Products; + refType = 4; + sourceTree = ""; + }; +//190 +//191 +//192 +//193 +//194 +//4F0 +//4F1 +//4F2 +//4F3 +//4F4 + 4F9091AC011F3BD104CA0E50 = { + buildSettings = { + COPY_PHASE_STRIP = NO; + DEBUGGING_SYMBOLS = YES; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + MACOSX_DEPLOYMENT_TARGET = 10.2; + OPTIMIZATION_CFLAGS = "-O0"; + ZERO_LINK = YES; + }; + isa = PBXBuildStyle; + name = Development; + }; + 4F9091AD011F3BD104CA0E50 = { + buildSettings = { + COPY_PHASE_STRIP = YES; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + ZERO_LINK = NO; + }; + isa = PBXBuildStyle; + name = Deployment; + }; +//4F0 +//4F1 +//4F2 +//4F3 +//4F4 +//8B0 +//8B1 +//8B2 +//8B3 +//8B4 + 8B5C7F83076FB26000A15F61 = { + isa = PBXFileReference; + lastKnownFileType = wrapper.framework; + name = CoreAudio.framework; + path = /System/Library/Frameworks/CoreAudio.framework; + refType = 0; + sourceTree = ""; + }; + 8BA05A56072072A900365D66 = { + children = ( + F4C9F47307B2379F00010DAD, + 0CF355FB07B17600002BFE50, + 0CF355FC07B17600002BFE50, + 0CF355BE07B173A3002BFE50, + 0CF355BF07B173A3002BFE50, + 0CF355C007B173A3002BFE50, + 0CF355C107B173A3002BFE50, + 0CF355C207B173A3002BFE50, + 0CF355C307B173A3002BFE50, + 0CF355C407B173A3002BFE50, + 0CF355C507B173A3002BFE50, + ); + isa = PBXGroup; + name = Source; + refType = 4; + sourceTree = ""; + }; + 8BA05A7D072073D200365D66 = { + children = ( + 8BA05A7E072073D200365D66, + 8BA05A8C072073D200365D66, + 8BA05A97072073D200365D66, + 8BA05A99072073D200365D66, + 8BA05AA6072073D200365D66, + ); + isa = PBXGroup; + name = AUPublic; + path = /Developer/Examples/CoreAudio/AudioUnits/AUPublic; + refType = 0; + sourceTree = ""; + }; + 8BA05A7E072073D200365D66 = { + children = ( + 8BA05A7F072073D200365D66, + 8BA05A80072073D200365D66, + 8BA05A81072073D200365D66, + 8BA05A82072073D200365D66, + 8BA05A83072073D200365D66, + 8BA05A84072073D200365D66, + 8BA05A85072073D200365D66, + 8BA05A86072073D200365D66, + 8BA05A87072073D200365D66, + 8BA05A88072073D200365D66, + 8BA05A89072073D200365D66, + 8BA05A8A072073D200365D66, + 8BA05A8B072073D200365D66, + ); + isa = PBXGroup; + path = AUBase; + refType = 4; + sourceTree = ""; + }; + 8BA05A7F072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + path = AUBase.cpp; + refType = 4; + sourceTree = ""; + }; + 8BA05A80072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = AUBase.h; + refType = 4; + sourceTree = ""; + }; + 8BA05A81072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + path = AUDispatch.cpp; + refType = 4; + sourceTree = ""; + }; + 8BA05A82072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = AUDispatch.h; + refType = 4; + sourceTree = ""; + }; + 8BA05A83072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + path = AUInputElement.cpp; + refType = 4; + sourceTree = ""; + }; + 8BA05A84072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = AUInputElement.h; + refType = 4; + sourceTree = ""; + }; + 8BA05A85072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + path = AUOutputElement.cpp; + refType = 4; + sourceTree = ""; + }; + 8BA05A86072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = AUOutputElement.h; + refType = 4; + sourceTree = ""; + }; + 8BA05A87072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.rez; + path = AUResources.r; + refType = 4; + sourceTree = ""; + }; + 8BA05A88072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + path = AUScopeElement.cpp; + refType = 4; + sourceTree = ""; + }; + 8BA05A89072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = AUScopeElement.h; + refType = 4; + sourceTree = ""; + }; + 8BA05A8A072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + path = ComponentBase.cpp; + refType = 4; + sourceTree = ""; + }; + 8BA05A8B072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = ComponentBase.h; + refType = 4; + sourceTree = ""; + }; + 8BA05A8C072073D200365D66 = { + children = ( + 8BA05A8D072073D200365D66, + 8BA05A8E072073D200365D66, + 8BA05A8F072073D200365D66, + 8BA05A90072073D200365D66, + 8BA05A91072073D200365D66, + 8BA05A92072073D200365D66, + 8BA05A93072073D200365D66, + 8BA05A94072073D200365D66, + 8BA05A95072073D200365D66, + ); + isa = PBXGroup; + path = AUCarbonViewBase; + refType = 4; + sourceTree = ""; + }; + 8BA05A8D072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + path = AUCarbonViewBase.cpp; + refType = 4; + sourceTree = ""; + }; + 8BA05A8E072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = AUCarbonViewBase.h; + refType = 4; + sourceTree = ""; + }; + 8BA05A8F072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + path = AUCarbonViewControl.cpp; + refType = 4; + sourceTree = ""; + }; + 8BA05A90072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = AUCarbonViewControl.h; + refType = 4; + sourceTree = ""; + }; + 8BA05A91072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + path = AUCarbonViewDispatch.cpp; + refType = 4; + sourceTree = ""; + }; + 8BA05A92072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + path = AUControlGroup.cpp; + refType = 4; + sourceTree = ""; + }; + 8BA05A93072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = AUControlGroup.h; + refType = 4; + sourceTree = ""; + }; + 8BA05A94072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + path = CarbonEventHandler.cpp; + refType = 4; + sourceTree = ""; + }; + 8BA05A95072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = CarbonEventHandler.h; + refType = 4; + sourceTree = ""; + }; + 8BA05A97072073D200365D66 = { + children = ( + 8BA05A98072073D200365D66, + ); + isa = PBXGroup; + path = AUViewBase; + refType = 4; + sourceTree = ""; + }; + 8BA05A98072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = AUViewLocalizedStringKeys.h; + refType = 4; + sourceTree = ""; + }; + 8BA05A99072073D200365D66 = { + children = ( + 8BA05A9A072073D200365D66, + 8BA05A9B072073D200365D66, + ); + isa = PBXGroup; + path = OtherBases; + refType = 4; + sourceTree = ""; + }; + 8BA05A9A072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + path = AUEffectBase.cpp; + refType = 4; + sourceTree = ""; + }; + 8BA05A9B072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = AUEffectBase.h; + refType = 4; + sourceTree = ""; + }; + 8BA05AA6072073D200365D66 = { + children = ( + 8BA05AA7072073D200365D66, + 8BA05AA8072073D200365D66, + 8BA05AA9072073D200365D66, + 8BA05AAA072073D200365D66, + 8BA05AAB072073D200365D66, + 8BA05AAC072073D200365D66, + 8BA05AAD072073D200365D66, + ); + isa = PBXGroup; + path = Utility; + refType = 4; + sourceTree = ""; + }; + 8BA05AA7072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + path = AUBuffer.cpp; + refType = 4; + sourceTree = ""; + }; + 8BA05AA8072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = AUBuffer.h; + refType = 4; + sourceTree = ""; + }; + 8BA05AA9072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + path = AUDebugDispatcher.cpp; + refType = 4; + sourceTree = ""; + }; + 8BA05AAA072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = AUDebugDispatcher.h; + refType = 4; + sourceTree = ""; + }; + 8BA05AAB072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = AUInputFormatConverter.h; + refType = 4; + sourceTree = ""; + }; + 8BA05AAC072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = AUSilentTimeout.h; + refType = 4; + sourceTree = ""; + }; + 8BA05AAD072073D200365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = AUTimestampGenerator.h; + refType = 4; + sourceTree = ""; + }; + 8BA05AAE072073D300365D66 = { + fileRef = 8BA05A7F072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AAF072073D300365D66 = { + fileRef = 8BA05A80072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AB0072073D300365D66 = { + fileRef = 8BA05A81072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AB1072073D300365D66 = { + fileRef = 8BA05A82072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AB2072073D300365D66 = { + fileRef = 8BA05A83072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AB3072073D300365D66 = { + fileRef = 8BA05A84072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AB4072073D300365D66 = { + fileRef = 8BA05A85072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AB5072073D300365D66 = { + fileRef = 8BA05A86072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AB7072073D300365D66 = { + fileRef = 8BA05A88072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AB8072073D300365D66 = { + fileRef = 8BA05A89072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AB9072073D300365D66 = { + fileRef = 8BA05A8A072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05ABA072073D300365D66 = { + fileRef = 8BA05A8B072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05ABB072073D300365D66 = { + fileRef = 8BA05A8D072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05ABC072073D300365D66 = { + fileRef = 8BA05A8E072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05ABD072073D300365D66 = { + fileRef = 8BA05A8F072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05ABE072073D300365D66 = { + fileRef = 8BA05A90072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05ABF072073D300365D66 = { + fileRef = 8BA05A91072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AC0072073D300365D66 = { + fileRef = 8BA05A92072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AC1072073D300365D66 = { + fileRef = 8BA05A93072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AC2072073D300365D66 = { + fileRef = 8BA05A94072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AC3072073D300365D66 = { + fileRef = 8BA05A95072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AC5072073D300365D66 = { + fileRef = 8BA05A98072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AC6072073D300365D66 = { + fileRef = 8BA05A9A072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AC7072073D300365D66 = { + fileRef = 8BA05A9B072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AD2072073D300365D66 = { + fileRef = 8BA05AA7072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AD3072073D300365D66 = { + fileRef = 8BA05AA8072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AD4072073D300365D66 = { + fileRef = 8BA05AA9072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AD5072073D300365D66 = { + fileRef = 8BA05AAA072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AD6072073D300365D66 = { + fileRef = 8BA05AAB072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AD7072073D300365D66 = { + fileRef = 8BA05AAC072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AD8072073D300365D66 = { + fileRef = 8BA05AAD072073D200365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05ADF0720742100365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + name = CAAudioChannelLayout.cpp; + path = /Developer/Examples/CoreAudio/PublicUtility/CAAudioChannelLayout.cpp; + refType = 0; + sourceTree = ""; + }; + 8BA05AE00720742100365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = CAAudioChannelLayout.h; + path = /Developer/Examples/CoreAudio/PublicUtility/CAAudioChannelLayout.h; + refType = 0; + sourceTree = ""; + }; + 8BA05AE10720742100365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + name = CAMutex.cpp; + path = /Developer/Examples/CoreAudio/PublicUtility/CAMutex.cpp; + refType = 0; + sourceTree = ""; + }; + 8BA05AE20720742100365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = CAMutex.h; + path = /Developer/Examples/CoreAudio/PublicUtility/CAMutex.h; + refType = 0; + sourceTree = ""; + }; + 8BA05AE30720742100365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + name = CAStreamBasicDescription.cpp; + path = /Developer/Examples/CoreAudio/PublicUtility/CAStreamBasicDescription.cpp; + refType = 0; + sourceTree = ""; + }; + 8BA05AE40720742100365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = CAStreamBasicDescription.h; + path = /Developer/Examples/CoreAudio/PublicUtility/CAStreamBasicDescription.h; + refType = 0; + sourceTree = ""; + }; + 8BA05AE50720742100365D66 = { + fileRef = 8BA05ADF0720742100365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AE60720742100365D66 = { + fileRef = 8BA05AE00720742100365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AE70720742100365D66 = { + fileRef = 8BA05AE10720742100365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AE80720742100365D66 = { + fileRef = 8BA05AE20720742100365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AE90720742100365D66 = { + fileRef = 8BA05AE30720742100365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AEA0720742100365D66 = { + fileRef = 8BA05AE40720742100365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05AEB0720742700365D66 = { + children = ( + 8BA05B050720754400365D66, + 8BA05B060720754400365D66, + 8BA05ADF0720742100365D66, + 8BA05AE00720742100365D66, + 8BA05AE10720742100365D66, + 8BA05AE20720742100365D66, + 8BA05AE30720742100365D66, + 8BA05AE40720742100365D66, + ); + isa = PBXGroup; + name = "Public Utility"; + refType = 4; + sourceTree = ""; + }; + 8BA05AF9072074E100365D66 = { + isa = PBXFileReference; + lastKnownFileType = wrapper.framework; + name = AudioToolbox.framework; + path = /System/Library/Frameworks/AudioToolbox.framework; + refType = 0; + sourceTree = ""; + }; + 8BA05AFC072074E100365D66 = { + fileRef = 8BA05AF9072074E100365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05B01072074F900365D66 = { + isa = PBXFileReference; + lastKnownFileType = wrapper.framework; + name = CoreServices.framework; + path = /System/Library/Frameworks/CoreServices.framework; + refType = 0; + sourceTree = ""; + }; + 8BA05B02072074F900365D66 = { + fileRef = 8BA05B01072074F900365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05B050720754400365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + name = CAAUParameter.cpp; + path = /Developer/Examples/CoreAudio/PublicUtility/CAAUParameter.cpp; + refType = 0; + sourceTree = ""; + }; + 8BA05B060720754400365D66 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = CAAUParameter.h; + path = /Developer/Examples/CoreAudio/PublicUtility/CAAUParameter.h; + refType = 0; + sourceTree = ""; + }; + 8BA05B070720754400365D66 = { + fileRef = 8BA05B050720754400365D66; + isa = PBXBuildFile; + settings = { + }; + }; + 8BA05B080720754400365D66 = { + fileRef = 8BA05B060720754400365D66; + isa = PBXBuildFile; + settings = { + }; + }; +//8B0 +//8B1 +//8B2 +//8B3 +//8B4 +//8D0 +//8D1 +//8D2 +//8D3 +//8D4 + 8D01CCC60486CAD60068D4B7 = { + buildPhases = ( + 8D01CCC70486CAD60068D4B7, + 8D01CCC90486CAD60068D4B7, + 8D01CCCB0486CAD60068D4B7, + 8D01CCCD0486CAD60068D4B7, + 8D01CCCF0486CAD60068D4B7, + 0C01261907AC3CE1009EC388, + ); + buildRules = ( + ); + buildSettings = { + DEPLOYMENT_LOCATION = NO; + EXPORTED_SYMBOLS_FILE = audiounit.exp; + FRAMEWORK_SEARCH_PATHS = /Volumes/DATA/subversion/svn/vstgui/drawtest/mac; + GCC_ENABLE_TRIGRAPHS = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "${SRCROOT}/xcode_au_prefix.h"; + GCC_PREPROCESSOR_DEFINITIONS = ""; + GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO; + GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; + GCC_WARN_UNKNOWN_PRAGMAS = NO; + GENERATE_PKGINFO_FILE = YES; + HEADER_SEARCH_PATHS = "${SRCROOT}/resources ${SRCROOT}/mac ${SRCROOT}/source ${SRCROOT}/../../vstgui"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/Components/"; + LIBRARY_SEARCH_PATHS = ""; + LIBRARY_STYLE = Bundle; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = "-bundle"; + OTHER_REZFLAGS = "-I /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers -I /Developer/Examples/CoreAudio/AudioUnits/AUPublic/AUBase"; + PRODUCT_NAME = drawtest; + REZ_SEARCH_PATHS = "/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers /Developer/Examples/CoreAudio/AudioUnits/AUPublic/AUBase"; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; + WRAPPER_EXTENSION = component; + }; + dependencies = ( + ); + isa = PBXNativeTarget; + name = AudioUnit; + productInstallPath = "$(HOME)/Library/Bundles"; + productName = drawtest; + productReference = 8D01CCD20486CAD60068D4B7; + productType = "com.apple.product-type.bundle"; + }; + 8D01CCC70486CAD60068D4B7 = { + buildActionMask = 2147483647; + files = ( + 8BA05AAF072073D300365D66, + 8BA05AB1072073D300365D66, + 8BA05AB3072073D300365D66, + 8BA05AB5072073D300365D66, + 8BA05AB8072073D300365D66, + 8BA05ABA072073D300365D66, + 8BA05ABC072073D300365D66, + 8BA05ABE072073D300365D66, + 8BA05AC1072073D300365D66, + 8BA05AC3072073D300365D66, + 8BA05AC5072073D300365D66, + 8BA05AC7072073D300365D66, + 8BA05AD3072073D300365D66, + 8BA05AD5072073D300365D66, + 8BA05AD6072073D300365D66, + 8BA05AD7072073D300365D66, + 8BA05AD8072073D300365D66, + 8BA05AE60720742100365D66, + 8BA05AE80720742100365D66, + 8BA05AEA0720742100365D66, + 8BA05B080720754400365D66, + 0CF355C707B173A3002BFE50, + 0CF355C907B173A3002BFE50, + 0CF355CB07B173A3002BFE50, + 0CF355CD07B173A3002BFE50, + 0CF355FE07B17600002BFE50, + ); + isa = PBXHeadersBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 8D01CCC90486CAD60068D4B7 = { + buildActionMask = 2147483647; + files = ( + 0CF3555507B17126002BFE50, + 0CF3555607B17126002BFE50, + 0CF3555707B17126002BFE50, + 0CF3555807B17126002BFE50, + 0CF3555907B17126002BFE50, + 0CF3555A07B17126002BFE50, + 0CF3555B07B17126002BFE50, + 0CF3555C07B17126002BFE50, + 0CF3555D07B17126002BFE50, + 0CF3555E07B17126002BFE50, + 0CF3555F07B17126002BFE50, + 0CF3556007B17126002BFE50, + 0CF3556107B17126002BFE50, + 0CF3556207B17126002BFE50, + 0CF3556307B17126002BFE50, + 0CF3556407B17126002BFE50, + 0CF3556507B17126002BFE50, + 0CF3556607B17126002BFE50, + 0CF3556707B17126002BFE50, + ); + isa = PBXResourcesBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 8D01CCCB0486CAD60068D4B7 = { + buildActionMask = 2147483647; + files = ( + 8BA05AAE072073D300365D66, + 8BA05AB0072073D300365D66, + 8BA05AB2072073D300365D66, + 8BA05AB4072073D300365D66, + 8BA05AB7072073D300365D66, + 8BA05AB9072073D300365D66, + 8BA05ABB072073D300365D66, + 8BA05ABD072073D300365D66, + 8BA05ABF072073D300365D66, + 8BA05AC0072073D300365D66, + 8BA05AC2072073D300365D66, + 8BA05AC6072073D300365D66, + 8BA05AD2072073D300365D66, + 8BA05AD4072073D300365D66, + 8BA05AE50720742100365D66, + 8BA05AE70720742100365D66, + 8BA05AE90720742100365D66, + 8BA05B070720754400365D66, + 0C01253807AC359F009EC388, + 0C01253A07AC359F009EC388, + 0C01253C07AC359F009EC388, + 0C01253E07AC359F009EC388, + 0C01254007AC359F009EC388, + 0CF355C607B173A3002BFE50, + 0CF355C807B173A3002BFE50, + 0CF355CA07B173A3002BFE50, + 0CF355CC07B173A3002BFE50, + 0CF355FD07B17600002BFE50, + ); + isa = PBXSourcesBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 8D01CCCD0486CAD60068D4B7 = { + buildActionMask = 2147483647; + files = ( + 8D01CCCE0486CAD60068D4B7, + 8BA05AFC072074E100365D66, + 8BA05B02072074F900365D66, + 0C1C289A07AC2824007128C4, + 0C1C289C07AC283C007128C4, + F40BD99707D3B28F00E1073A, + ); + isa = PBXFrameworksBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 8D01CCCE0486CAD60068D4B7 = { + fileRef = 08EA7FFBFE8413EDC02AAC07; + isa = PBXBuildFile; + settings = { + }; + }; + 8D01CCCF0486CAD60068D4B7 = { + buildActionMask = 2147483647; + files = ( + 0C01262107AC3D21009EC388, + ); + isa = PBXRezBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + 8D01CCD20486CAD60068D4B7 = { + explicitFileType = wrapper.cfbundle; + includeInIndex = 0; + isa = PBXFileReference; + path = drawtest.component; + refType = 3; + sourceTree = BUILT_PRODUCTS_DIR; + }; +//8D0 +//8D1 +//8D2 +//8D3 +//8D4 +//F40 +//F41 +//F42 +//F43 +//F44 + F40BD99607D3B28F00E1073A = { + isa = PBXFileReference; + lastKnownFileType = wrapper.framework; + name = AudioUnit.framework; + path = /Volumes/DATA/subversion/svn/vstgui/drawtest/mac/AudioUnit.framework; + refType = 0; + sourceTree = ""; + }; + F40BD99707D3B28F00E1073A = { + fileRef = F40BD99607D3B28F00E1073A; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F1D007B2320800010DAD = { + buildActionMask = 2147483647; + files = ( + F4C9F1EE07B2332100010DAD, + F4C9F1EF07B2332200010DAD, + F4C9F1F007B2332200010DAD, + F4C9F1F107B2332300010DAD, + F4C9F1F207B2332400010DAD, + F4C9F1F307B2332400010DAD, + F4C9F1F407B2332500010DAD, + F4C9F1F507B2332500010DAD, + F4C9F1F607B2332600010DAD, + F4C9F1F707B2332700010DAD, + F4C9F1F807B2332700010DAD, + F4C9F1F907B2332800010DAD, + F4C9F1FA07B2332900010DAD, + F4C9F1FB07B2332A00010DAD, + F4C9F1FC07B2332B00010DAD, + F4C9F1FD07B2332B00010DAD, + F4C9F1FE07B2332C00010DAD, + F4C9F1FF07B2332C00010DAD, + F4C9F20007B2332D00010DAD, + ); + isa = PBXResourcesBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + F4C9F1D107B2320800010DAD = { + buildActionMask = 2147483647; + files = ( + F4C9F1D607B232A100010DAD, + F4C9F1D807B232A300010DAD, + F4C9F1DC07B232A500010DAD, + F4C9F1DE07B232A600010DAD, + F4C9F1E607B232D600010DAD, + F4C9F1E707B232D600010DAD, + F4C9F20607B2335F00010DAD, + F4C9F46E07B2378600010DAD, + F4C9F46F07B2378800010DAD, + F4C9F47007B2378900010DAD, + F4C9F47107B2378B00010DAD, + F4C9F47207B2378D00010DAD, + F4C9F47407B2379F00010DAD, + ); + isa = PBXSourcesBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + F4C9F1D207B2320800010DAD = { + buildActionMask = 2147483647; + files = ( + F4C9F21C07B2339F00010DAD, + F4C9F21D07B233A100010DAD, + F4C9F21E07B233A100010DAD, + ); + isa = PBXFrameworksBuildPhase; + runOnlyForDeploymentPostprocessing = 0; + }; + F4C9F1D307B2320800010DAD = { + buildPhases = ( + F4C9F1D007B2320800010DAD, + F4C9F1D107B2320800010DAD, + F4C9F1D207B2320800010DAD, + ); + buildRules = ( + ); + buildSettings = { + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = xcode_vst_prefix.h; + GENERATE_PKGINFO_FILE = YES; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(USER_LIBRARY_DIR)/Audio/Plug-Ins/VST"; + LIBRARY_STYLE = BUNDLE; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = "-framework Carbon"; + OTHER_REZFLAGS = ""; + PRODUCT_NAME = drawtest; + SECTORDER_FLAGS = ""; + SKIP_INSTALL = NO; + WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; + WRAPPER_EXTENSION = vst; + }; + dependencies = ( + ); + isa = PBXNativeTarget; + name = VST; + productName = "drawtest VST"; + productReference = F4C9F1D407B2320800010DAD; + productSettingsXML = " + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + drawtest VST + CFBundleIdentifier + com.yourcompany.drawtest_VST + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + APPL + CFBundleSignature + ???? + CFBundleVersion + 1.0 + CSResourcesFileMapped + yes + + +"; + productType = "com.apple.product-type.bundle"; + }; + F4C9F1D407B2320800010DAD = { + explicitFileType = wrapper.cfbundle; + includeInIndex = 0; + isa = PBXFileReference; + path = drawtest.vst; + refType = 3; + sourceTree = BUILT_PRODUCTS_DIR; + }; + F4C9F1D607B232A100010DAD = { + fileRef = 0C01252807AC359F009EC388; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F1D807B232A300010DAD = { + fileRef = 0C01252A07AC359F009EC388; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F1DC07B232A500010DAD = { + fileRef = 0C01252E07AC359F009EC388; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F1DE07B232A600010DAD = { + fileRef = 0C01253007AC359F009EC388; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F1E107B232B900010DAD = { + children = ( + F4C9F1E307B232D600010DAD, + F4C9F1E407B232D600010DAD, + ); + isa = PBXGroup; + name = "VST SDK 2.3"; + refType = 4; + sourceTree = ""; + }; + F4C9F1E307B232D600010DAD = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + name = AudioEffect.cpp; + path = ../vstsdk2.3/AudioEffect.cpp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + F4C9F1E407B232D600010DAD = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + name = audioeffectx.cpp; + path = ../vstsdk2.3/audioeffectx.cpp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + F4C9F1E607B232D600010DAD = { + fileRef = F4C9F1E307B232D600010DAD; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F1E707B232D600010DAD = { + fileRef = F4C9F1E407B232D600010DAD; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F1EE07B2332100010DAD = { + fileRef = 0CF3554207B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F1EF07B2332200010DAD = { + fileRef = 0CF3554307B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F1F007B2332200010DAD = { + fileRef = 0CF3554407B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F1F107B2332300010DAD = { + fileRef = 0CF3554607B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F1F207B2332400010DAD = { + fileRef = 0CF3554507B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F1F307B2332400010DAD = { + fileRef = 0CF3554707B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F1F407B2332500010DAD = { + fileRef = 0CF3554807B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F1F507B2332500010DAD = { + fileRef = 0CF3554907B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F1F607B2332600010DAD = { + fileRef = 0CF3554A07B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F1F707B2332700010DAD = { + fileRef = 0CF3554B07B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F1F807B2332700010DAD = { + fileRef = 0CF3554C07B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F1F907B2332800010DAD = { + fileRef = 0CF3554D07B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F1FA07B2332900010DAD = { + fileRef = 0CF3554E07B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F1FB07B2332A00010DAD = { + fileRef = 0CF3554F07B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F1FC07B2332B00010DAD = { + fileRef = 0CF3555007B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F1FD07B2332B00010DAD = { + fileRef = 0CF3555107B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F1FE07B2332C00010DAD = { + fileRef = 0CF3555207B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F1FF07B2332C00010DAD = { + fileRef = 0CF3555407B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F20007B2332D00010DAD = { + fileRef = 0CF3555307B17126002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F20407B2335F00010DAD = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + name = aeffguieditor.cpp; + path = ../../vstgui/aeffguieditor.cpp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + F4C9F20607B2335F00010DAD = { + fileRef = F4C9F20407B2335F00010DAD; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F21C07B2339F00010DAD = { + fileRef = 08EA7FFBFE8413EDC02AAC07; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F21D07B233A100010DAD = { + fileRef = 0C1C289B07AC283C007128C4; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F21E07B233A100010DAD = { + fileRef = 0C1C289907AC2824007128C4; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F46E07B2378600010DAD = { + fileRef = 0CF355FB07B17600002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F46F07B2378800010DAD = { + fileRef = 0CF355BE07B173A3002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F47007B2378900010DAD = { + fileRef = 0CF355C007B173A3002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F47107B2378B00010DAD = { + fileRef = 0CF355C207B173A3002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F47207B2378D00010DAD = { + fileRef = 0CF355C407B173A3002BFE50; + isa = PBXBuildFile; + settings = { + }; + }; + F4C9F47307B2379F00010DAD = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = sourcecode.cpp.cpp; + name = pdrawtestmain.cpp; + path = ../source/pdrawtestmain.cpp; + refType = 2; + sourceTree = SOURCE_ROOT; + }; + F4C9F47407B2379F00010DAD = { + fileRef = F4C9F47307B2379F00010DAD; + isa = PBXBuildFile; + settings = { + }; + }; + }; + rootObject = 089C1669FE841209C02AAC07; +} diff --git a/vstgui.sf/drawtest/mac/drawtest.xcodeproj/project.pbxproj b/vstgui.sf/drawtest/mac/drawtest.xcodeproj/project.pbxproj new file mode 100644 index 0000000..bcb2a19 --- /dev/null +++ b/vstgui.sf/drawtest/mac/drawtest.xcodeproj/project.pbxproj @@ -0,0 +1,1142 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXBuildFile section */ + 0C01253807AC359F009EC388 /* cscrollview.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C01252807AC359F009EC388 /* cscrollview.cpp */; }; + 0C01253A07AC359F009EC388 /* ctabview.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C01252A07AC359F009EC388 /* ctabview.cpp */; }; + 0C01253C07AC359F009EC388 /* plugguieditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C01252C07AC359F009EC388 /* plugguieditor.cpp */; }; + 0C01253E07AC359F009EC388 /* vstcontrols.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C01252E07AC359F009EC388 /* vstcontrols.cpp */; }; + 0C01254007AC359F009EC388 /* vstgui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C01253007AC359F009EC388 /* vstgui.cpp */; }; + 0C01262107AC3D21009EC388 /* audiounit.r in Rez */ = {isa = PBXBuildFile; fileRef = 0C01262007AC3D21009EC388 /* audiounit.r */; }; + 0C1C289A07AC2824007128C4 /* System.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0C1C289907AC2824007128C4 /* System.framework */; }; + 0C1C289C07AC283C007128C4 /* QuickTime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0C1C289B07AC283C007128C4 /* QuickTime.framework */; }; + 0CF3555507B17126002BFE50 /* bmp00001.png in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554207B17126002BFE50 /* bmp00001.png */; }; + 0CF3555607B17126002BFE50 /* bmp00100.png in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554307B17126002BFE50 /* bmp00100.png */; }; + 0CF3555707B17126002BFE50 /* bmp01000.png in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554407B17126002BFE50 /* bmp01000.png */; }; + 0CF3555807B17126002BFE50 /* bmp10001.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554507B17126002BFE50 /* bmp10001.bmp */; }; + 0CF3555907B17126002BFE50 /* bmp10002.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554607B17126002BFE50 /* bmp10002.bmp */; }; + 0CF3555A07B17126002BFE50 /* bmp10003.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554707B17126002BFE50 /* bmp10003.bmp */; }; + 0CF3555B07B17126002BFE50 /* bmp10004.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554807B17126002BFE50 /* bmp10004.bmp */; }; + 0CF3555C07B17126002BFE50 /* bmp10005.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554907B17126002BFE50 /* bmp10005.bmp */; }; + 0CF3555D07B17126002BFE50 /* bmp10006.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554A07B17126002BFE50 /* bmp10006.bmp */; }; + 0CF3555E07B17126002BFE50 /* bmp10007.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554B07B17126002BFE50 /* bmp10007.bmp */; }; + 0CF3555F07B17126002BFE50 /* bmp10008.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554C07B17126002BFE50 /* bmp10008.bmp */; }; + 0CF3556007B17126002BFE50 /* bmp10009.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554D07B17126002BFE50 /* bmp10009.bmp */; }; + 0CF3556107B17126002BFE50 /* bmp10010.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554E07B17126002BFE50 /* bmp10010.bmp */; }; + 0CF3556207B17126002BFE50 /* bmp10011.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554F07B17126002BFE50 /* bmp10011.bmp */; }; + 0CF3556307B17126002BFE50 /* bmp10012.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3555007B17126002BFE50 /* bmp10012.bmp */; }; + 0CF3556407B17126002BFE50 /* bmp10013.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3555107B17126002BFE50 /* bmp10013.bmp */; }; + 0CF3556507B17126002BFE50 /* bmp10014.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3555207B17126002BFE50 /* bmp10014.bmp */; }; + 0CF3556607B17126002BFE50 /* bmp10015.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3555307B17126002BFE50 /* bmp10015.bmp */; }; + 0CF3556707B17126002BFE50 /* bmp10016.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3555407B17126002BFE50 /* bmp10016.bmp */; }; + 0CF355C607B173A3002BFE50 /* pdrawtesteditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CF355BE07B173A3002BFE50 /* pdrawtesteditor.cpp */; }; + 0CF355C707B173A3002BFE50 /* pdrawtesteditor.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CF355BF07B173A3002BFE50 /* pdrawtesteditor.h */; }; + 0CF355C807B173A3002BFE50 /* pdrawtesteffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CF355C007B173A3002BFE50 /* pdrawtesteffect.cpp */; }; + 0CF355C907B173A3002BFE50 /* pdrawtesteffect.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CF355C107B173A3002BFE50 /* pdrawtesteffect.h */; }; + 0CF355CA07B173A3002BFE50 /* pdrawtestview.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CF355C207B173A3002BFE50 /* pdrawtestview.cpp */; }; + 0CF355CB07B173A3002BFE50 /* pdrawtestview.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CF355C307B173A3002BFE50 /* pdrawtestview.h */; }; + 0CF355CC07B173A3002BFE50 /* pprimitivesviews.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CF355C407B173A3002BFE50 /* pprimitivesviews.cpp */; }; + 0CF355CD07B173A3002BFE50 /* pprimitivesviews.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CF355C507B173A3002BFE50 /* pprimitivesviews.h */; }; + 0CF355FD07B17600002BFE50 /* controlsgui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CF355FB07B17600002BFE50 /* controlsgui.cpp */; }; + 0CF355FE07B17600002BFE50 /* controlsgui.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CF355FC07B17600002BFE50 /* controlsgui.h */; }; + 8BA05AAE072073D300365D66 /* AUBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A7F072073D200365D66 /* AUBase.cpp */; }; + 8BA05AAF072073D300365D66 /* AUBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A80072073D200365D66 /* AUBase.h */; }; + 8BA05AB0072073D300365D66 /* AUDispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A81072073D200365D66 /* AUDispatch.cpp */; }; + 8BA05AB1072073D300365D66 /* AUDispatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A82072073D200365D66 /* AUDispatch.h */; }; + 8BA05AB2072073D300365D66 /* AUInputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A83072073D200365D66 /* AUInputElement.cpp */; }; + 8BA05AB3072073D300365D66 /* AUInputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A84072073D200365D66 /* AUInputElement.h */; }; + 8BA05AB4072073D300365D66 /* AUOutputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A85072073D200365D66 /* AUOutputElement.cpp */; }; + 8BA05AB5072073D300365D66 /* AUOutputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A86072073D200365D66 /* AUOutputElement.h */; }; + 8BA05AB7072073D300365D66 /* AUScopeElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A88072073D200365D66 /* AUScopeElement.cpp */; }; + 8BA05AB8072073D300365D66 /* AUScopeElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A89072073D200365D66 /* AUScopeElement.h */; }; + 8BA05AB9072073D300365D66 /* ComponentBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A8A072073D200365D66 /* ComponentBase.cpp */; }; + 8BA05ABA072073D300365D66 /* ComponentBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A8B072073D200365D66 /* ComponentBase.h */; }; + 8BA05ABB072073D300365D66 /* AUCarbonViewBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A8D072073D200365D66 /* AUCarbonViewBase.cpp */; }; + 8BA05ABC072073D300365D66 /* AUCarbonViewBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A8E072073D200365D66 /* AUCarbonViewBase.h */; }; + 8BA05ABD072073D300365D66 /* AUCarbonViewControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A8F072073D200365D66 /* AUCarbonViewControl.cpp */; }; + 8BA05ABE072073D300365D66 /* AUCarbonViewControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A90072073D200365D66 /* AUCarbonViewControl.h */; }; + 8BA05ABF072073D300365D66 /* AUCarbonViewDispatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A91072073D200365D66 /* AUCarbonViewDispatch.cpp */; }; + 8BA05AC0072073D300365D66 /* AUControlGroup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A92072073D200365D66 /* AUControlGroup.cpp */; }; + 8BA05AC1072073D300365D66 /* AUControlGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A93072073D200365D66 /* AUControlGroup.h */; }; + 8BA05AC2072073D300365D66 /* CarbonEventHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A94072073D200365D66 /* CarbonEventHandler.cpp */; }; + 8BA05AC3072073D300365D66 /* CarbonEventHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A95072073D200365D66 /* CarbonEventHandler.h */; }; + 8BA05AC5072073D300365D66 /* AUViewLocalizedStringKeys.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A98072073D200365D66 /* AUViewLocalizedStringKeys.h */; }; + 8BA05AC6072073D300365D66 /* AUEffectBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05A9A072073D200365D66 /* AUEffectBase.cpp */; }; + 8BA05AC7072073D300365D66 /* AUEffectBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05A9B072073D200365D66 /* AUEffectBase.h */; }; + 8BA05AD2072073D300365D66 /* AUBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05AA7072073D200365D66 /* AUBuffer.cpp */; }; + 8BA05AD3072073D300365D66 /* AUBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AA8072073D200365D66 /* AUBuffer.h */; }; + 8BA05AD4072073D300365D66 /* AUDebugDispatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05AA9072073D200365D66 /* AUDebugDispatcher.cpp */; }; + 8BA05AD5072073D300365D66 /* AUDebugDispatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AAA072073D200365D66 /* AUDebugDispatcher.h */; }; + 8BA05AD6072073D300365D66 /* AUInputFormatConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AAB072073D200365D66 /* AUInputFormatConverter.h */; }; + 8BA05AD7072073D300365D66 /* AUSilentTimeout.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AAC072073D200365D66 /* AUSilentTimeout.h */; }; + 8BA05AD8072073D300365D66 /* AUTimestampGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AAD072073D200365D66 /* AUTimestampGenerator.h */; }; + 8BA05AE50720742100365D66 /* CAAudioChannelLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05ADF0720742100365D66 /* CAAudioChannelLayout.cpp */; }; + 8BA05AE60720742100365D66 /* CAAudioChannelLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AE00720742100365D66 /* CAAudioChannelLayout.h */; }; + 8BA05AE70720742100365D66 /* CAMutex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05AE10720742100365D66 /* CAMutex.cpp */; }; + 8BA05AE80720742100365D66 /* CAMutex.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AE20720742100365D66 /* CAMutex.h */; }; + 8BA05AE90720742100365D66 /* CAStreamBasicDescription.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05AE30720742100365D66 /* CAStreamBasicDescription.cpp */; }; + 8BA05AEA0720742100365D66 /* CAStreamBasicDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05AE40720742100365D66 /* CAStreamBasicDescription.h */; }; + 8BA05AFC072074E100365D66 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BA05AF9072074E100365D66 /* AudioToolbox.framework */; }; + 8BA05B02072074F900365D66 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BA05B01072074F900365D66 /* CoreServices.framework */; }; + 8BA05B070720754400365D66 /* CAAUParameter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8BA05B050720754400365D66 /* CAAUParameter.cpp */; }; + 8BA05B080720754400365D66 /* CAAUParameter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BA05B060720754400365D66 /* CAAUParameter.h */; }; + 8D01CCCE0486CAD60068D4B7 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08EA7FFBFE8413EDC02AAC07 /* Carbon.framework */; }; + F4381433099A587F0042610E /* CAVectorUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4381431099A587F0042610E /* CAVectorUnit.cpp */; }; + F4381434099A587F0042610E /* CAVectorUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = F4381432099A587F0042610E /* CAVectorUnit.h */; }; + F485AC4B086C15E700298D72 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F485AC4A086C15E700298D72 /* AudioUnit.framework */; }; + F485AC51086C160100298D72 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B5C7F83076FB26000A15F61 /* CoreAudio.framework */; }; + F4C9F1D607B232A100010DAD /* cscrollview.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C01252807AC359F009EC388 /* cscrollview.cpp */; }; + F4C9F1D807B232A300010DAD /* ctabview.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C01252A07AC359F009EC388 /* ctabview.cpp */; }; + F4C9F1DC07B232A500010DAD /* vstcontrols.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C01252E07AC359F009EC388 /* vstcontrols.cpp */; }; + F4C9F1DE07B232A600010DAD /* vstgui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C01253007AC359F009EC388 /* vstgui.cpp */; }; + F4C9F1E707B232D600010DAD /* audioeffectx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4C9F1E407B232D600010DAD /* audioeffectx.cpp */; }; + F4C9F1EE07B2332100010DAD /* bmp00001.png in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554207B17126002BFE50 /* bmp00001.png */; }; + F4C9F1EF07B2332200010DAD /* bmp00100.png in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554307B17126002BFE50 /* bmp00100.png */; }; + F4C9F1F007B2332200010DAD /* bmp01000.png in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554407B17126002BFE50 /* bmp01000.png */; }; + F4C9F1F107B2332300010DAD /* bmp10002.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554607B17126002BFE50 /* bmp10002.bmp */; }; + F4C9F1F207B2332400010DAD /* bmp10001.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554507B17126002BFE50 /* bmp10001.bmp */; }; + F4C9F1F307B2332400010DAD /* bmp10003.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554707B17126002BFE50 /* bmp10003.bmp */; }; + F4C9F1F407B2332500010DAD /* bmp10004.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554807B17126002BFE50 /* bmp10004.bmp */; }; + F4C9F1F507B2332500010DAD /* bmp10005.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554907B17126002BFE50 /* bmp10005.bmp */; }; + F4C9F1F607B2332600010DAD /* bmp10006.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554A07B17126002BFE50 /* bmp10006.bmp */; }; + F4C9F1F707B2332700010DAD /* bmp10007.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554B07B17126002BFE50 /* bmp10007.bmp */; }; + F4C9F1F807B2332700010DAD /* bmp10008.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554C07B17126002BFE50 /* bmp10008.bmp */; }; + F4C9F1F907B2332800010DAD /* bmp10009.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554D07B17126002BFE50 /* bmp10009.bmp */; }; + F4C9F1FA07B2332900010DAD /* bmp10010.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554E07B17126002BFE50 /* bmp10010.bmp */; }; + F4C9F1FB07B2332A00010DAD /* bmp10011.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3554F07B17126002BFE50 /* bmp10011.bmp */; }; + F4C9F1FC07B2332B00010DAD /* bmp10012.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3555007B17126002BFE50 /* bmp10012.bmp */; }; + F4C9F1FD07B2332B00010DAD /* bmp10013.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3555107B17126002BFE50 /* bmp10013.bmp */; }; + F4C9F1FE07B2332C00010DAD /* bmp10014.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3555207B17126002BFE50 /* bmp10014.bmp */; }; + F4C9F1FF07B2332C00010DAD /* bmp10016.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3555407B17126002BFE50 /* bmp10016.bmp */; }; + F4C9F20007B2332D00010DAD /* bmp10015.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 0CF3555307B17126002BFE50 /* bmp10015.bmp */; }; + F4C9F20607B2335F00010DAD /* aeffguieditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4C9F20407B2335F00010DAD /* aeffguieditor.cpp */; }; + F4C9F21C07B2339F00010DAD /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08EA7FFBFE8413EDC02AAC07 /* Carbon.framework */; }; + F4C9F21D07B233A100010DAD /* QuickTime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0C1C289B07AC283C007128C4 /* QuickTime.framework */; }; + F4C9F21E07B233A100010DAD /* System.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0C1C289907AC2824007128C4 /* System.framework */; }; + F4C9F46E07B2378600010DAD /* controlsgui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CF355FB07B17600002BFE50 /* controlsgui.cpp */; }; + F4C9F46F07B2378800010DAD /* pdrawtesteditor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CF355BE07B173A3002BFE50 /* pdrawtesteditor.cpp */; }; + F4C9F47007B2378900010DAD /* pdrawtesteffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CF355C007B173A3002BFE50 /* pdrawtesteffect.cpp */; }; + F4C9F47107B2378B00010DAD /* pdrawtestview.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CF355C207B173A3002BFE50 /* pdrawtestview.cpp */; }; + F4C9F47207B2378D00010DAD /* pprimitivesviews.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CF355C407B173A3002BFE50 /* pprimitivesviews.cpp */; }; + F4C9F47407B2379F00010DAD /* pdrawtestmain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4C9F47307B2379F00010DAD /* pdrawtestmain.cpp */; }; + F4FD4C6F08865DB400F20B72 /* cfileselector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FD4C6E08865DB400F20B72 /* cfileselector.cpp */; }; + F4FD4C7008865DB400F20B72 /* cfileselector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FD4C6E08865DB400F20B72 /* cfileselector.cpp */; }; + F4FF52580929FD9700DDED7A /* audioeffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FF52570929FD9700DDED7A /* audioeffect.cpp */; }; +/* End PBXBuildFile section */ + +/* Begin PBXBuildStyle section */ + 4F9091AC011F3BD104CA0E50 /* Development */ = { + isa = PBXBuildStyle; + buildSettings = { + COPY_PHASE_STRIP = NO; + DEBUGGING_SYMBOLS = YES; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + MACOSX_DEPLOYMENT_TARGET = 10.2; + OPTIMIZATION_CFLAGS = "-O0"; + ZERO_LINK = YES; + }; + name = Development; + }; + 4F9091AD011F3BD104CA0E50 /* Deployment */ = { + isa = PBXBuildStyle; + buildSettings = { + COPY_PHASE_STRIP = YES; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + ZERO_LINK = NO; + }; + name = Deployment; + }; +/* End PBXBuildStyle section */ + +/* Begin PBXFileReference section */ + 08EA7FFBFE8413EDC02AAC07 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; }; + 0C01252807AC359F009EC388 /* cscrollview.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = cscrollview.cpp; path = ../../vstgui/cscrollview.cpp; sourceTree = SOURCE_ROOT; }; + 0C01252A07AC359F009EC388 /* ctabview.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ctabview.cpp; path = ../../vstgui/ctabview.cpp; sourceTree = SOURCE_ROOT; }; + 0C01252C07AC359F009EC388 /* plugguieditor.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = plugguieditor.cpp; path = ../../vstgui/plugguieditor.cpp; sourceTree = SOURCE_ROOT; }; + 0C01252E07AC359F009EC388 /* vstcontrols.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = vstcontrols.cpp; path = ../../vstgui/vstcontrols.cpp; sourceTree = SOURCE_ROOT; }; + 0C01253007AC359F009EC388 /* vstgui.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = vstgui.cpp; path = ../../vstgui/vstgui.cpp; sourceTree = SOURCE_ROOT; }; + 0C01262007AC3D21009EC388 /* audiounit.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; name = audiounit.r; path = ../resources/audiounit.r; sourceTree = SOURCE_ROOT; }; + 0C01265607AC430A009EC388 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xml; path = Info.plist; sourceTree = ""; }; + 0C1C289907AC2824007128C4 /* System.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = System.framework; path = /System/Library/Frameworks/System.framework; sourceTree = ""; }; + 0C1C289B07AC283C007128C4 /* QuickTime.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickTime.framework; path = /System/Library/Frameworks/QuickTime.framework; sourceTree = ""; }; + 0CF3554207B17126002BFE50 /* bmp00001.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = bmp00001.png; path = ../resources/bmp00001.png; sourceTree = SOURCE_ROOT; }; + 0CF3554307B17126002BFE50 /* bmp00100.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = bmp00100.png; path = ../resources/bmp00100.png; sourceTree = SOURCE_ROOT; }; + 0CF3554407B17126002BFE50 /* bmp01000.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = bmp01000.png; path = ../resources/bmp01000.png; sourceTree = SOURCE_ROOT; }; + 0CF3554507B17126002BFE50 /* bmp10001.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = bmp10001.bmp; path = ../resources/bmp10001.bmp; sourceTree = SOURCE_ROOT; }; + 0CF3554607B17126002BFE50 /* bmp10002.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = bmp10002.bmp; path = ../resources/bmp10002.bmp; sourceTree = SOURCE_ROOT; }; + 0CF3554707B17126002BFE50 /* bmp10003.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = bmp10003.bmp; path = ../resources/bmp10003.bmp; sourceTree = SOURCE_ROOT; }; + 0CF3554807B17126002BFE50 /* bmp10004.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = bmp10004.bmp; path = ../resources/bmp10004.bmp; sourceTree = SOURCE_ROOT; }; + 0CF3554907B17126002BFE50 /* bmp10005.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = bmp10005.bmp; path = ../resources/bmp10005.bmp; sourceTree = SOURCE_ROOT; }; + 0CF3554A07B17126002BFE50 /* bmp10006.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = bmp10006.bmp; path = ../resources/bmp10006.bmp; sourceTree = SOURCE_ROOT; }; + 0CF3554B07B17126002BFE50 /* bmp10007.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = bmp10007.bmp; path = ../resources/bmp10007.bmp; sourceTree = SOURCE_ROOT; }; + 0CF3554C07B17126002BFE50 /* bmp10008.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = bmp10008.bmp; path = ../resources/bmp10008.bmp; sourceTree = SOURCE_ROOT; }; + 0CF3554D07B17126002BFE50 /* bmp10009.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = bmp10009.bmp; path = ../resources/bmp10009.bmp; sourceTree = SOURCE_ROOT; }; + 0CF3554E07B17126002BFE50 /* bmp10010.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = bmp10010.bmp; path = ../resources/bmp10010.bmp; sourceTree = SOURCE_ROOT; }; + 0CF3554F07B17126002BFE50 /* bmp10011.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = bmp10011.bmp; path = ../resources/bmp10011.bmp; sourceTree = SOURCE_ROOT; }; + 0CF3555007B17126002BFE50 /* bmp10012.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = bmp10012.bmp; path = ../resources/bmp10012.bmp; sourceTree = SOURCE_ROOT; }; + 0CF3555107B17126002BFE50 /* bmp10013.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = bmp10013.bmp; path = ../resources/bmp10013.bmp; sourceTree = SOURCE_ROOT; }; + 0CF3555207B17126002BFE50 /* bmp10014.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = bmp10014.bmp; path = ../resources/bmp10014.bmp; sourceTree = SOURCE_ROOT; }; + 0CF3555307B17126002BFE50 /* bmp10015.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = bmp10015.bmp; path = ../resources/bmp10015.bmp; sourceTree = SOURCE_ROOT; }; + 0CF3555407B17126002BFE50 /* bmp10016.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = bmp10016.bmp; path = ../resources/bmp10016.bmp; sourceTree = SOURCE_ROOT; }; + 0CF355BE07B173A3002BFE50 /* pdrawtesteditor.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pdrawtesteditor.cpp; path = ../source/pdrawtesteditor.cpp; sourceTree = SOURCE_ROOT; }; + 0CF355BF07B173A3002BFE50 /* pdrawtesteditor.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pdrawtesteditor.h; path = ../source/pdrawtesteditor.h; sourceTree = SOURCE_ROOT; }; + 0CF355C007B173A3002BFE50 /* pdrawtesteffect.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pdrawtesteffect.cpp; path = ../source/pdrawtesteffect.cpp; sourceTree = SOURCE_ROOT; }; + 0CF355C107B173A3002BFE50 /* pdrawtesteffect.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pdrawtesteffect.h; path = ../source/pdrawtesteffect.h; sourceTree = SOURCE_ROOT; }; + 0CF355C207B173A3002BFE50 /* pdrawtestview.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pdrawtestview.cpp; path = ../source/pdrawtestview.cpp; sourceTree = SOURCE_ROOT; }; + 0CF355C307B173A3002BFE50 /* pdrawtestview.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pdrawtestview.h; path = ../source/pdrawtestview.h; sourceTree = SOURCE_ROOT; }; + 0CF355C407B173A3002BFE50 /* pprimitivesviews.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pprimitivesviews.cpp; path = ../source/pprimitivesviews.cpp; sourceTree = SOURCE_ROOT; }; + 0CF355C507B173A3002BFE50 /* pprimitivesviews.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pprimitivesviews.h; path = ../source/pprimitivesviews.h; sourceTree = SOURCE_ROOT; }; + 0CF355FB07B17600002BFE50 /* controlsgui.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = controlsgui.cpp; path = ../source/controlsgui.cpp; sourceTree = SOURCE_ROOT; }; + 0CF355FC07B17600002BFE50 /* controlsgui.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = controlsgui.h; path = ../source/controlsgui.h; sourceTree = SOURCE_ROOT; }; + 8B5C7F83076FB26000A15F61 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = ""; }; + 8BA05A7F072073D200365D66 /* AUBase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUBase.cpp; sourceTree = ""; }; + 8BA05A80072073D200365D66 /* AUBase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUBase.h; sourceTree = ""; }; + 8BA05A81072073D200365D66 /* AUDispatch.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUDispatch.cpp; sourceTree = ""; }; + 8BA05A82072073D200365D66 /* AUDispatch.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUDispatch.h; sourceTree = ""; }; + 8BA05A83072073D200365D66 /* AUInputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUInputElement.cpp; sourceTree = ""; }; + 8BA05A84072073D200365D66 /* AUInputElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUInputElement.h; sourceTree = ""; }; + 8BA05A85072073D200365D66 /* AUOutputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUOutputElement.cpp; sourceTree = ""; }; + 8BA05A86072073D200365D66 /* AUOutputElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUOutputElement.h; sourceTree = ""; }; + 8BA05A87072073D200365D66 /* AUResources.r */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.rez; path = AUResources.r; sourceTree = ""; }; + 8BA05A88072073D200365D66 /* AUScopeElement.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUScopeElement.cpp; sourceTree = ""; }; + 8BA05A89072073D200365D66 /* AUScopeElement.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUScopeElement.h; sourceTree = ""; }; + 8BA05A8A072073D200365D66 /* ComponentBase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ComponentBase.cpp; sourceTree = ""; }; + 8BA05A8B072073D200365D66 /* ComponentBase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ComponentBase.h; sourceTree = ""; }; + 8BA05A8D072073D200365D66 /* AUCarbonViewBase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUCarbonViewBase.cpp; sourceTree = ""; }; + 8BA05A8E072073D200365D66 /* AUCarbonViewBase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUCarbonViewBase.h; sourceTree = ""; }; + 8BA05A8F072073D200365D66 /* AUCarbonViewControl.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUCarbonViewControl.cpp; sourceTree = ""; }; + 8BA05A90072073D200365D66 /* AUCarbonViewControl.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUCarbonViewControl.h; sourceTree = ""; }; + 8BA05A91072073D200365D66 /* AUCarbonViewDispatch.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUCarbonViewDispatch.cpp; sourceTree = ""; }; + 8BA05A92072073D200365D66 /* AUControlGroup.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUControlGroup.cpp; sourceTree = ""; }; + 8BA05A93072073D200365D66 /* AUControlGroup.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUControlGroup.h; sourceTree = ""; }; + 8BA05A94072073D200365D66 /* CarbonEventHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = CarbonEventHandler.cpp; sourceTree = ""; }; + 8BA05A95072073D200365D66 /* CarbonEventHandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CarbonEventHandler.h; sourceTree = ""; }; + 8BA05A98072073D200365D66 /* AUViewLocalizedStringKeys.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUViewLocalizedStringKeys.h; sourceTree = ""; }; + 8BA05A9A072073D200365D66 /* AUEffectBase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUEffectBase.cpp; sourceTree = ""; }; + 8BA05A9B072073D200365D66 /* AUEffectBase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUEffectBase.h; sourceTree = ""; }; + 8BA05AA7072073D200365D66 /* AUBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUBuffer.cpp; sourceTree = ""; }; + 8BA05AA8072073D200365D66 /* AUBuffer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUBuffer.h; sourceTree = ""; }; + 8BA05AA9072073D200365D66 /* AUDebugDispatcher.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = AUDebugDispatcher.cpp; sourceTree = ""; }; + 8BA05AAA072073D200365D66 /* AUDebugDispatcher.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUDebugDispatcher.h; sourceTree = ""; }; + 8BA05AAB072073D200365D66 /* AUInputFormatConverter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUInputFormatConverter.h; sourceTree = ""; }; + 8BA05AAC072073D200365D66 /* AUSilentTimeout.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUSilentTimeout.h; sourceTree = ""; }; + 8BA05AAD072073D200365D66 /* AUTimestampGenerator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AUTimestampGenerator.h; sourceTree = ""; }; + 8BA05ADF0720742100365D66 /* CAAudioChannelLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = CAAudioChannelLayout.cpp; path = /Developer/Examples/CoreAudio/PublicUtility/CAAudioChannelLayout.cpp; sourceTree = ""; }; + 8BA05AE00720742100365D66 /* CAAudioChannelLayout.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = CAAudioChannelLayout.h; path = /Developer/Examples/CoreAudio/PublicUtility/CAAudioChannelLayout.h; sourceTree = ""; }; + 8BA05AE10720742100365D66 /* CAMutex.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = CAMutex.cpp; path = /Developer/Examples/CoreAudio/PublicUtility/CAMutex.cpp; sourceTree = ""; }; + 8BA05AE20720742100365D66 /* CAMutex.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = CAMutex.h; path = /Developer/Examples/CoreAudio/PublicUtility/CAMutex.h; sourceTree = ""; }; + 8BA05AE30720742100365D66 /* CAStreamBasicDescription.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = CAStreamBasicDescription.cpp; path = /Developer/Examples/CoreAudio/PublicUtility/CAStreamBasicDescription.cpp; sourceTree = ""; }; + 8BA05AE40720742100365D66 /* CAStreamBasicDescription.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = CAStreamBasicDescription.h; path = /Developer/Examples/CoreAudio/PublicUtility/CAStreamBasicDescription.h; sourceTree = ""; }; + 8BA05AF9072074E100365D66 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; sourceTree = ""; }; + 8BA05B01072074F900365D66 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = ""; }; + 8BA05B050720754400365D66 /* CAAUParameter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = CAAUParameter.cpp; path = /Developer/Examples/CoreAudio/PublicUtility/CAAUParameter.cpp; sourceTree = ""; }; + 8BA05B060720754400365D66 /* CAAUParameter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = CAAUParameter.h; path = /Developer/Examples/CoreAudio/PublicUtility/CAAUParameter.h; sourceTree = ""; }; + 8D01CCD20486CAD60068D4B7 /* drawtest.component */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = drawtest.component; sourceTree = BUILT_PRODUCTS_DIR; }; + F4381431099A587F0042610E /* CAVectorUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = CAVectorUnit.cpp; path = /Developer/Examples/CoreAudio/PublicUtility/CAVectorUnit.cpp; sourceTree = ""; }; + F4381432099A587F0042610E /* CAVectorUnit.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = CAVectorUnit.h; path = /Developer/Examples/CoreAudio/PublicUtility/CAVectorUnit.h; sourceTree = ""; }; + F485AC4A086C15E700298D72 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = /System/Library/Frameworks/AudioUnit.framework; sourceTree = ""; }; + F4C9F1D407B2320800010DAD /* drawtest.vst */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = drawtest.vst; sourceTree = BUILT_PRODUCTS_DIR; }; + F4C9F1E407B232D600010DAD /* audioeffectx.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = audioeffectx.cpp; path = ../../../public.sdk/source/vst2.x/audioeffectx.cpp; sourceTree = SOURCE_ROOT; }; + F4C9F20407B2335F00010DAD /* aeffguieditor.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = aeffguieditor.cpp; path = ../../vstgui/aeffguieditor.cpp; sourceTree = SOURCE_ROOT; }; + F4C9F47307B2379F00010DAD /* pdrawtestmain.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pdrawtestmain.cpp; path = ../source/pdrawtestmain.cpp; sourceTree = SOURCE_ROOT; }; + F4FD4C6E08865DB400F20B72 /* cfileselector.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = cfileselector.cpp; path = ../../vstgui/cfileselector.cpp; sourceTree = SOURCE_ROOT; }; + F4FF52570929FD9700DDED7A /* audioeffect.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = audioeffect.cpp; path = ../../../public.sdk/source/vst2.x/audioeffect.cpp; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8D01CCCD0486CAD60068D4B7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D01CCCE0486CAD60068D4B7 /* Carbon.framework in Frameworks */, + 8BA05AFC072074E100365D66 /* AudioToolbox.framework in Frameworks */, + 8BA05B02072074F900365D66 /* CoreServices.framework in Frameworks */, + 0C1C289A07AC2824007128C4 /* System.framework in Frameworks */, + 0C1C289C07AC283C007128C4 /* QuickTime.framework in Frameworks */, + F485AC4B086C15E700298D72 /* AudioUnit.framework in Frameworks */, + F485AC51086C160100298D72 /* CoreAudio.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F4C9F1D207B2320800010DAD /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F4C9F21C07B2339F00010DAD /* Carbon.framework in Frameworks */, + F4C9F21D07B233A100010DAD /* QuickTime.framework in Frameworks */, + F4C9F21E07B233A100010DAD /* System.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 089C166AFE841209C02AAC07 /* drawtest */ = { + isa = PBXGroup; + children = ( + 0C01265607AC430A009EC388 /* Info.plist */, + 08FB77ADFE841716C02AAC07 /* Source */, + 089C167CFE841241C02AAC07 /* Resources */, + 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */, + 19C28FB4FE9D528D11CA2CBB /* Products */, + ); + name = drawtest; + sourceTree = ""; + }; + 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + F485AC4A086C15E700298D72 /* AudioUnit.framework */, + 0C1C289B07AC283C007128C4 /* QuickTime.framework */, + 0C1C289907AC2824007128C4 /* System.framework */, + 8B5C7F83076FB26000A15F61 /* CoreAudio.framework */, + 8BA05B01072074F900365D66 /* CoreServices.framework */, + 8BA05AF9072074E100365D66 /* AudioToolbox.framework */, + 08EA7FFBFE8413EDC02AAC07 /* Carbon.framework */, + ); + name = "External Frameworks and Libraries"; + sourceTree = ""; + }; + 089C167CFE841241C02AAC07 /* Resources */ = { + isa = PBXGroup; + children = ( + 0CF3554207B17126002BFE50 /* bmp00001.png */, + 0CF3554307B17126002BFE50 /* bmp00100.png */, + 0CF3554407B17126002BFE50 /* bmp01000.png */, + 0CF3554507B17126002BFE50 /* bmp10001.bmp */, + 0CF3554607B17126002BFE50 /* bmp10002.bmp */, + 0CF3554707B17126002BFE50 /* bmp10003.bmp */, + 0CF3554807B17126002BFE50 /* bmp10004.bmp */, + 0CF3554907B17126002BFE50 /* bmp10005.bmp */, + 0CF3554A07B17126002BFE50 /* bmp10006.bmp */, + 0CF3554B07B17126002BFE50 /* bmp10007.bmp */, + 0CF3554C07B17126002BFE50 /* bmp10008.bmp */, + 0CF3554D07B17126002BFE50 /* bmp10009.bmp */, + 0CF3554E07B17126002BFE50 /* bmp10010.bmp */, + 0CF3554F07B17126002BFE50 /* bmp10011.bmp */, + 0CF3555007B17126002BFE50 /* bmp10012.bmp */, + 0CF3555107B17126002BFE50 /* bmp10013.bmp */, + 0CF3555207B17126002BFE50 /* bmp10014.bmp */, + 0CF3555307B17126002BFE50 /* bmp10015.bmp */, + 0CF3555407B17126002BFE50 /* bmp10016.bmp */, + 0C01262007AC3D21009EC388 /* audiounit.r */, + ); + name = Resources; + sourceTree = ""; + }; + 08FB77ADFE841716C02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + F4C9F1E107B232B900010DAD /* VST SDK 2.4 */, + 0C1C269E07AB5DE8007128C4 /* VSTGUI */, + 8BA05AEB0720742700365D66 /* Public Utility */, + 8BA05A7D072073D200365D66 /* AUPublic */, + 8BA05A56072072A900365D66 /* Source */, + ); + name = Source; + sourceTree = ""; + }; + 0C1C269E07AB5DE8007128C4 /* VSTGUI */ = { + isa = PBXGroup; + children = ( + F4C9F20407B2335F00010DAD /* aeffguieditor.cpp */, + F4FD4C6E08865DB400F20B72 /* cfileselector.cpp */, + 0C01252807AC359F009EC388 /* cscrollview.cpp */, + 0C01252A07AC359F009EC388 /* ctabview.cpp */, + 0C01252C07AC359F009EC388 /* plugguieditor.cpp */, + 0C01252E07AC359F009EC388 /* vstcontrols.cpp */, + 0C01253007AC359F009EC388 /* vstgui.cpp */, + ); + name = VSTGUI; + sourceTree = ""; + }; + 19C28FB4FE9D528D11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8D01CCD20486CAD60068D4B7 /* drawtest.component */, + F4C9F1D407B2320800010DAD /* drawtest.vst */, + ); + name = Products; + sourceTree = ""; + }; + 8BA05A56072072A900365D66 /* Source */ = { + isa = PBXGroup; + children = ( + F4C9F47307B2379F00010DAD /* pdrawtestmain.cpp */, + 0CF355FB07B17600002BFE50 /* controlsgui.cpp */, + 0CF355FC07B17600002BFE50 /* controlsgui.h */, + 0CF355BE07B173A3002BFE50 /* pdrawtesteditor.cpp */, + 0CF355BF07B173A3002BFE50 /* pdrawtesteditor.h */, + 0CF355C007B173A3002BFE50 /* pdrawtesteffect.cpp */, + 0CF355C107B173A3002BFE50 /* pdrawtesteffect.h */, + 0CF355C207B173A3002BFE50 /* pdrawtestview.cpp */, + 0CF355C307B173A3002BFE50 /* pdrawtestview.h */, + 0CF355C407B173A3002BFE50 /* pprimitivesviews.cpp */, + 0CF355C507B173A3002BFE50 /* pprimitivesviews.h */, + ); + name = Source; + sourceTree = ""; + }; + 8BA05A7D072073D200365D66 /* AUPublic */ = { + isa = PBXGroup; + children = ( + 8BA05A7E072073D200365D66 /* AUBase */, + 8BA05A8C072073D200365D66 /* AUCarbonViewBase */, + 8BA05A97072073D200365D66 /* AUViewBase */, + 8BA05A99072073D200365D66 /* OtherBases */, + 8BA05AA6072073D200365D66 /* Utility */, + ); + name = AUPublic; + path = /Developer/Examples/CoreAudio/AudioUnits/AUPublic; + sourceTree = ""; + }; + 8BA05A7E072073D200365D66 /* AUBase */ = { + isa = PBXGroup; + children = ( + 8BA05A7F072073D200365D66 /* AUBase.cpp */, + 8BA05A80072073D200365D66 /* AUBase.h */, + 8BA05A81072073D200365D66 /* AUDispatch.cpp */, + 8BA05A82072073D200365D66 /* AUDispatch.h */, + 8BA05A83072073D200365D66 /* AUInputElement.cpp */, + 8BA05A84072073D200365D66 /* AUInputElement.h */, + 8BA05A85072073D200365D66 /* AUOutputElement.cpp */, + 8BA05A86072073D200365D66 /* AUOutputElement.h */, + 8BA05A87072073D200365D66 /* AUResources.r */, + 8BA05A88072073D200365D66 /* AUScopeElement.cpp */, + 8BA05A89072073D200365D66 /* AUScopeElement.h */, + 8BA05A8A072073D200365D66 /* ComponentBase.cpp */, + 8BA05A8B072073D200365D66 /* ComponentBase.h */, + ); + path = AUBase; + sourceTree = ""; + }; + 8BA05A8C072073D200365D66 /* AUCarbonViewBase */ = { + isa = PBXGroup; + children = ( + 8BA05A8D072073D200365D66 /* AUCarbonViewBase.cpp */, + 8BA05A8E072073D200365D66 /* AUCarbonViewBase.h */, + 8BA05A8F072073D200365D66 /* AUCarbonViewControl.cpp */, + 8BA05A90072073D200365D66 /* AUCarbonViewControl.h */, + 8BA05A91072073D200365D66 /* AUCarbonViewDispatch.cpp */, + 8BA05A92072073D200365D66 /* AUControlGroup.cpp */, + 8BA05A93072073D200365D66 /* AUControlGroup.h */, + 8BA05A94072073D200365D66 /* CarbonEventHandler.cpp */, + 8BA05A95072073D200365D66 /* CarbonEventHandler.h */, + ); + path = AUCarbonViewBase; + sourceTree = ""; + }; + 8BA05A97072073D200365D66 /* AUViewBase */ = { + isa = PBXGroup; + children = ( + 8BA05A98072073D200365D66 /* AUViewLocalizedStringKeys.h */, + ); + path = AUViewBase; + sourceTree = ""; + }; + 8BA05A99072073D200365D66 /* OtherBases */ = { + isa = PBXGroup; + children = ( + 8BA05A9A072073D200365D66 /* AUEffectBase.cpp */, + 8BA05A9B072073D200365D66 /* AUEffectBase.h */, + ); + path = OtherBases; + sourceTree = ""; + }; + 8BA05AA6072073D200365D66 /* Utility */ = { + isa = PBXGroup; + children = ( + 8BA05AA7072073D200365D66 /* AUBuffer.cpp */, + 8BA05AA8072073D200365D66 /* AUBuffer.h */, + 8BA05AA9072073D200365D66 /* AUDebugDispatcher.cpp */, + 8BA05AAA072073D200365D66 /* AUDebugDispatcher.h */, + 8BA05AAB072073D200365D66 /* AUInputFormatConverter.h */, + 8BA05AAC072073D200365D66 /* AUSilentTimeout.h */, + 8BA05AAD072073D200365D66 /* AUTimestampGenerator.h */, + F4381431099A587F0042610E /* CAVectorUnit.cpp */, + F4381432099A587F0042610E /* CAVectorUnit.h */, + ); + path = Utility; + sourceTree = ""; + }; + 8BA05AEB0720742700365D66 /* Public Utility */ = { + isa = PBXGroup; + children = ( + 8BA05B050720754400365D66 /* CAAUParameter.cpp */, + 8BA05B060720754400365D66 /* CAAUParameter.h */, + 8BA05ADF0720742100365D66 /* CAAudioChannelLayout.cpp */, + 8BA05AE00720742100365D66 /* CAAudioChannelLayout.h */, + 8BA05AE10720742100365D66 /* CAMutex.cpp */, + 8BA05AE20720742100365D66 /* CAMutex.h */, + 8BA05AE30720742100365D66 /* CAStreamBasicDescription.cpp */, + 8BA05AE40720742100365D66 /* CAStreamBasicDescription.h */, + ); + name = "Public Utility"; + sourceTree = ""; + }; + F4C9F1E107B232B900010DAD /* VST SDK 2.4 */ = { + isa = PBXGroup; + children = ( + F4FF52570929FD9700DDED7A /* audioeffect.cpp */, + F4C9F1E407B232D600010DAD /* audioeffectx.cpp */, + ); + name = "VST SDK 2.4"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 8D01CCC70486CAD60068D4B7 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 8BA05AAF072073D300365D66 /* AUBase.h in Headers */, + 8BA05AB1072073D300365D66 /* AUDispatch.h in Headers */, + 8BA05AB3072073D300365D66 /* AUInputElement.h in Headers */, + 8BA05AB5072073D300365D66 /* AUOutputElement.h in Headers */, + 8BA05AB8072073D300365D66 /* AUScopeElement.h in Headers */, + 8BA05ABA072073D300365D66 /* ComponentBase.h in Headers */, + 8BA05ABC072073D300365D66 /* AUCarbonViewBase.h in Headers */, + 8BA05ABE072073D300365D66 /* AUCarbonViewControl.h in Headers */, + 8BA05AC1072073D300365D66 /* AUControlGroup.h in Headers */, + 8BA05AC3072073D300365D66 /* CarbonEventHandler.h in Headers */, + 8BA05AC5072073D300365D66 /* AUViewLocalizedStringKeys.h in Headers */, + 8BA05AC7072073D300365D66 /* AUEffectBase.h in Headers */, + 8BA05AD3072073D300365D66 /* AUBuffer.h in Headers */, + 8BA05AD5072073D300365D66 /* AUDebugDispatcher.h in Headers */, + 8BA05AD6072073D300365D66 /* AUInputFormatConverter.h in Headers */, + 8BA05AD7072073D300365D66 /* AUSilentTimeout.h in Headers */, + 8BA05AD8072073D300365D66 /* AUTimestampGenerator.h in Headers */, + 8BA05AE60720742100365D66 /* CAAudioChannelLayout.h in Headers */, + 8BA05AE80720742100365D66 /* CAMutex.h in Headers */, + 8BA05AEA0720742100365D66 /* CAStreamBasicDescription.h in Headers */, + 8BA05B080720754400365D66 /* CAAUParameter.h in Headers */, + 0CF355C707B173A3002BFE50 /* pdrawtesteditor.h in Headers */, + 0CF355C907B173A3002BFE50 /* pdrawtesteffect.h in Headers */, + 0CF355CB07B173A3002BFE50 /* pdrawtestview.h in Headers */, + 0CF355CD07B173A3002BFE50 /* pprimitivesviews.h in Headers */, + 0CF355FE07B17600002BFE50 /* controlsgui.h in Headers */, + F4381434099A587F0042610E /* CAVectorUnit.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 8D01CCC60486CAD60068D4B7 /* AudioUnit */ = { + isa = PBXNativeTarget; + buildConfigurationList = F485AB6F086C0BE900298D72 /* Build configuration list for PBXNativeTarget "AudioUnit" */; + buildPhases = ( + 8D01CCC70486CAD60068D4B7 /* Headers */, + 8D01CCC90486CAD60068D4B7 /* Resources */, + 8D01CCCB0486CAD60068D4B7 /* Sources */, + 8D01CCCD0486CAD60068D4B7 /* Frameworks */, + 8D01CCCF0486CAD60068D4B7 /* Rez */, + 0C01261907AC3CE1009EC388 /* ShellScript */, + ); + buildRules = ( + ); + buildSettings = { + DEPLOYMENT_LOCATION = NO; + EXPORTED_SYMBOLS_FILE = audiounit.exp; + FRAMEWORK_SEARCH_PATHS = /Volumes/DATA/subversion/svn/vstgui/drawtest/mac; + GCC_ENABLE_TRIGRAPHS = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "${SRCROOT}/xcode_au_prefix.h"; + GCC_PREPROCESSOR_DEFINITIONS = ""; + GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO; + GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; + GCC_WARN_UNKNOWN_PRAGMAS = NO; + GENERATE_PKGINFO_FILE = YES; + HEADER_SEARCH_PATHS = ( + "${SRCROOT}/resources", + "${SRCROOT}/mac", + "${SRCROOT}/source", + "${SRCROOT}/../../vstgui", + ); + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/Components/"; + LIBRARY_SEARCH_PATHS = ""; + LIBRARY_STYLE = Bundle; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = "-bundle"; + OTHER_REZFLAGS = "-I /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers -I /Developer/Examples/CoreAudio/AudioUnits/AUPublic/AUBase"; + PRODUCT_NAME = drawtest; + REZ_SEARCH_PATHS = ( + /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers, + /Developer/Examples/CoreAudio/AudioUnits/AUPublic/AUBase, + ); + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + WRAPPER_EXTENSION = component; + }; + dependencies = ( + ); + name = AudioUnit; + productInstallPath = "$(HOME)/Library/Bundles"; + productName = drawtest; + productReference = 8D01CCD20486CAD60068D4B7 /* drawtest.component */; + productType = "com.apple.product-type.bundle"; + }; + F4C9F1D307B2320800010DAD /* VST */ = { + isa = PBXNativeTarget; + buildConfigurationList = F485AB73086C0BE900298D72 /* Build configuration list for PBXNativeTarget "VST" */; + buildPhases = ( + F4C9F1D007B2320800010DAD /* Resources */, + F4C9F1D107B2320800010DAD /* Sources */, + F4C9F1D207B2320800010DAD /* Frameworks */, + ); + buildRules = ( + ); + buildSettings = { + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = xcode_vst_prefix.h; + GENERATE_PKGINFO_FILE = YES; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(USER_LIBRARY_DIR)/Audio/Plug-Ins/VST"; + LIBRARY_STYLE = BUNDLE; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ( + "-framework", + Carbon, + ); + OTHER_REZFLAGS = ""; + PRODUCT_NAME = drawtest; + SECTORDER_FLAGS = ""; + SKIP_INSTALL = NO; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + WRAPPER_EXTENSION = vst; + }; + dependencies = ( + ); + name = VST; + productName = "drawtest VST"; + productReference = F4C9F1D407B2320800010DAD /* drawtest.vst */; + productSettingsXML = " + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + drawtest VST + CFBundleIdentifier + com.yourcompany.drawtest_VST + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + APPL + CFBundleSignature + ???? + CFBundleVersion + 1.0 + CSResourcesFileMapped + yes + + +"; + productType = "com.apple.product-type.bundle"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 089C1669FE841209C02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = F485AB77086C0BE900298D72 /* Build configuration list for PBXProject "drawtest" */; + buildSettings = { + }; + buildStyles = ( + 4F9091AC011F3BD104CA0E50 /* Development */, + 4F9091AD011F3BD104CA0E50 /* Deployment */, + ); + hasScannedForEncodings = 1; + mainGroup = 089C166AFE841209C02AAC07 /* drawtest */; + projectDirPath = ""; + targets = ( + 8D01CCC60486CAD60068D4B7 /* AudioUnit */, + F4C9F1D307B2320800010DAD /* VST */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D01CCC90486CAD60068D4B7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0CF3555507B17126002BFE50 /* bmp00001.png in Resources */, + 0CF3555607B17126002BFE50 /* bmp00100.png in Resources */, + 0CF3555707B17126002BFE50 /* bmp01000.png in Resources */, + 0CF3555807B17126002BFE50 /* bmp10001.bmp in Resources */, + 0CF3555907B17126002BFE50 /* bmp10002.bmp in Resources */, + 0CF3555A07B17126002BFE50 /* bmp10003.bmp in Resources */, + 0CF3555B07B17126002BFE50 /* bmp10004.bmp in Resources */, + 0CF3555C07B17126002BFE50 /* bmp10005.bmp in Resources */, + 0CF3555D07B17126002BFE50 /* bmp10006.bmp in Resources */, + 0CF3555E07B17126002BFE50 /* bmp10007.bmp in Resources */, + 0CF3555F07B17126002BFE50 /* bmp10008.bmp in Resources */, + 0CF3556007B17126002BFE50 /* bmp10009.bmp in Resources */, + 0CF3556107B17126002BFE50 /* bmp10010.bmp in Resources */, + 0CF3556207B17126002BFE50 /* bmp10011.bmp in Resources */, + 0CF3556307B17126002BFE50 /* bmp10012.bmp in Resources */, + 0CF3556407B17126002BFE50 /* bmp10013.bmp in Resources */, + 0CF3556507B17126002BFE50 /* bmp10014.bmp in Resources */, + 0CF3556607B17126002BFE50 /* bmp10015.bmp in Resources */, + 0CF3556707B17126002BFE50 /* bmp10016.bmp in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F4C9F1D007B2320800010DAD /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F4C9F1EE07B2332100010DAD /* bmp00001.png in Resources */, + F4C9F1EF07B2332200010DAD /* bmp00100.png in Resources */, + F4C9F1F007B2332200010DAD /* bmp01000.png in Resources */, + F4C9F1F107B2332300010DAD /* bmp10002.bmp in Resources */, + F4C9F1F207B2332400010DAD /* bmp10001.bmp in Resources */, + F4C9F1F307B2332400010DAD /* bmp10003.bmp in Resources */, + F4C9F1F407B2332500010DAD /* bmp10004.bmp in Resources */, + F4C9F1F507B2332500010DAD /* bmp10005.bmp in Resources */, + F4C9F1F607B2332600010DAD /* bmp10006.bmp in Resources */, + F4C9F1F707B2332700010DAD /* bmp10007.bmp in Resources */, + F4C9F1F807B2332700010DAD /* bmp10008.bmp in Resources */, + F4C9F1F907B2332800010DAD /* bmp10009.bmp in Resources */, + F4C9F1FA07B2332900010DAD /* bmp10010.bmp in Resources */, + F4C9F1FB07B2332A00010DAD /* bmp10011.bmp in Resources */, + F4C9F1FC07B2332B00010DAD /* bmp10012.bmp in Resources */, + F4C9F1FD07B2332B00010DAD /* bmp10013.bmp in Resources */, + F4C9F1FE07B2332C00010DAD /* bmp10014.bmp in Resources */, + F4C9F1FF07B2332C00010DAD /* bmp10016.bmp in Resources */, + F4C9F20007B2332D00010DAD /* bmp10015.bmp in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXRezBuildPhase section */ + 8D01CCCF0486CAD60068D4B7 /* Rez */ = { + isa = PBXRezBuildPhase; + buildActionMask = 2147483647; + files = ( + 0C01262107AC3D21009EC388 /* audiounit.r in Rez */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXRezBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 0C01261907AC3CE1009EC388 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "cp -p -r -f \"build/$CONFIGURATION/drawtest.component\" \"$HOME/Library/Audio/Plug-Ins/Components/\" \ntouch \"$HOME/Library/Audio/Plug-Ins/Components/drawtest.component\"\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D01CCCB0486CAD60068D4B7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8BA05AAE072073D300365D66 /* AUBase.cpp in Sources */, + 8BA05AB0072073D300365D66 /* AUDispatch.cpp in Sources */, + 8BA05AB2072073D300365D66 /* AUInputElement.cpp in Sources */, + 8BA05AB4072073D300365D66 /* AUOutputElement.cpp in Sources */, + 8BA05AB7072073D300365D66 /* AUScopeElement.cpp in Sources */, + 8BA05AB9072073D300365D66 /* ComponentBase.cpp in Sources */, + 8BA05ABB072073D300365D66 /* AUCarbonViewBase.cpp in Sources */, + 8BA05ABD072073D300365D66 /* AUCarbonViewControl.cpp in Sources */, + 8BA05ABF072073D300365D66 /* AUCarbonViewDispatch.cpp in Sources */, + 8BA05AC0072073D300365D66 /* AUControlGroup.cpp in Sources */, + 8BA05AC2072073D300365D66 /* CarbonEventHandler.cpp in Sources */, + 8BA05AC6072073D300365D66 /* AUEffectBase.cpp in Sources */, + 8BA05AD2072073D300365D66 /* AUBuffer.cpp in Sources */, + 8BA05AD4072073D300365D66 /* AUDebugDispatcher.cpp in Sources */, + 8BA05AE50720742100365D66 /* CAAudioChannelLayout.cpp in Sources */, + 8BA05AE70720742100365D66 /* CAMutex.cpp in Sources */, + 8BA05AE90720742100365D66 /* CAStreamBasicDescription.cpp in Sources */, + 8BA05B070720754400365D66 /* CAAUParameter.cpp in Sources */, + 0C01253807AC359F009EC388 /* cscrollview.cpp in Sources */, + 0C01253A07AC359F009EC388 /* ctabview.cpp in Sources */, + 0C01253C07AC359F009EC388 /* plugguieditor.cpp in Sources */, + 0C01253E07AC359F009EC388 /* vstcontrols.cpp in Sources */, + 0C01254007AC359F009EC388 /* vstgui.cpp in Sources */, + 0CF355C607B173A3002BFE50 /* pdrawtesteditor.cpp in Sources */, + 0CF355C807B173A3002BFE50 /* pdrawtesteffect.cpp in Sources */, + 0CF355CA07B173A3002BFE50 /* pdrawtestview.cpp in Sources */, + 0CF355CC07B173A3002BFE50 /* pprimitivesviews.cpp in Sources */, + 0CF355FD07B17600002BFE50 /* controlsgui.cpp in Sources */, + F4FD4C7008865DB400F20B72 /* cfileselector.cpp in Sources */, + F4381433099A587F0042610E /* CAVectorUnit.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F4C9F1D107B2320800010DAD /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F4C9F1D607B232A100010DAD /* cscrollview.cpp in Sources */, + F4C9F1D807B232A300010DAD /* ctabview.cpp in Sources */, + F4C9F1DC07B232A500010DAD /* vstcontrols.cpp in Sources */, + F4C9F1DE07B232A600010DAD /* vstgui.cpp in Sources */, + F4C9F1E707B232D600010DAD /* audioeffectx.cpp in Sources */, + F4C9F20607B2335F00010DAD /* aeffguieditor.cpp in Sources */, + F4C9F46E07B2378600010DAD /* controlsgui.cpp in Sources */, + F4C9F46F07B2378800010DAD /* pdrawtesteditor.cpp in Sources */, + F4C9F47007B2378900010DAD /* pdrawtesteffect.cpp in Sources */, + F4C9F47107B2378B00010DAD /* pdrawtestview.cpp in Sources */, + F4C9F47207B2378D00010DAD /* pprimitivesviews.cpp in Sources */, + F4C9F47407B2379F00010DAD /* pdrawtestmain.cpp in Sources */, + F4FD4C6F08865DB400F20B72 /* cfileselector.cpp in Sources */, + F4FF52580929FD9700DDED7A /* audioeffect.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + F485AB70086C0BE900298D72 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + DEBUGGING_SYMBOLS = YES; + DEPLOYMENT_LOCATION = NO; + EXPORTED_SYMBOLS_FILE = audiounit.exp; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_TRIGRAPHS = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "${SRCROOT}/xcode_au_prefix.h"; + GCC_PREPROCESSOR_DEFINITIONS = ""; + GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO; + GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; + GCC_WARN_UNKNOWN_PRAGMAS = NO; + GENERATE_PKGINFO_FILE = YES; + HEADER_SEARCH_PATHS = ( + "${SRCROOT}/resources", + "${SRCROOT}/mac", + "${SRCROOT}/source", + "${SRCROOT}/../../vstgui", + ); + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/Components/"; + LIBRARY_SEARCH_PATHS = ""; + LIBRARY_STYLE = Bundle; + MACOSX_DEPLOYMENT_TARGET = 10.2; + OPTIMIZATION_CFLAGS = "-O0"; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = "-bundle"; + OTHER_REZFLAGS = "-I /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers -I /Developer/Examples/CoreAudio/AudioUnits/AUPublic/AUBase -D TARGET_REZ_MAC_PPC=1"; + PRODUCT_NAME = drawtest; + REZ_SEARCH_PATHS = ( + /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers, + /Developer/Examples/CoreAudio/AudioUnits/AUPublic/AUBase, + ); + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + WRAPPER_EXTENSION = component; + ZERO_LINK = NO; + }; + name = Development; + }; + F485AB71086C0BE900298D72 /* Deployment */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + DEAD_CODE_STRIPPING = YES; + DEPLOYMENT_LOCATION = NO; + DEPLOYMENT_POSTPROCESSING = YES; + EXPORTED_SYMBOLS_FILE = audiounit.exp; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_AUTO_VECTORIZATION = YES; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_ENABLE_TRIGRAPHS = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "${SRCROOT}/xcode_au_prefix.h"; + GCC_PREPROCESSOR_DEFINITIONS = ""; + GCC_UNROLL_LOOPS = YES; + GCC_USE_GCC3_PFE_SUPPORT = YES; + GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO; + GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; + GCC_WARN_UNKNOWN_PRAGMAS = NO; + GENERATE_PKGINFO_FILE = YES; + HEADER_SEARCH_PATHS = ( + "${SRCROOT}/resources", + "${SRCROOT}/mac", + "${SRCROOT}/source", + "${SRCROOT}/../../vstgui", + ); + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/Components/"; + LIBRARY_SEARCH_PATHS = ""; + LIBRARY_STYLE = Bundle; + MACOSX_DEPLOYMENT_TARGET = 10.2; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = "-bundle"; + OTHER_REZFLAGS = "-I /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers -I /Developer/Examples/CoreAudio/AudioUnits/AUPublic/AUBase -D TARGET_REZ_MAC_PPC=1"; + PRESERVE_DEAD_CODE_INITS_AND_TERMS = YES; + PRODUCT_NAME = drawtest; + REZ_SEARCH_PATHS = ( + /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers, + /Developer/Examples/CoreAudio/AudioUnits/AUPublic/AUBase, + ); + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + WRAPPER_EXTENSION = component; + ZERO_LINK = NO; + }; + name = Deployment; + }; + F485AB72086C0BE900298D72 /* Default */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEPLOYMENT_LOCATION = NO; + EXPORTED_SYMBOLS_FILE = audiounit.exp; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_ENABLE_TRIGRAPHS = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "${SRCROOT}/xcode_au_prefix.h"; + GCC_PREPROCESSOR_DEFINITIONS = ""; + GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO; + GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO; + GCC_WARN_UNKNOWN_PRAGMAS = NO; + GENERATE_PKGINFO_FILE = YES; + HEADER_SEARCH_PATHS = ( + "${SRCROOT}/resources", + "${SRCROOT}/mac", + "${SRCROOT}/source", + "${SRCROOT}/../../vstgui", + ); + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Library/Audio/Plug-Ins/Components/"; + LIBRARY_SEARCH_PATHS = ""; + LIBRARY_STYLE = Bundle; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = "-bundle"; + OTHER_REZFLAGS = "-I /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers -I /Developer/Examples/CoreAudio/AudioUnits/AUPublic/AUBase -D TARGET_REZ_MAC_PPC=1"; + PRODUCT_NAME = drawtest; + REZ_SEARCH_PATHS = ( + /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers, + /Developer/Examples/CoreAudio/AudioUnits/AUPublic/AUBase, + ); + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + WRAPPER_EXTENSION = component; + }; + name = Default; + }; + F485AB74086C0BE900298D72 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + DEBUGGING_SYMBOLS = YES; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = xcode_vst_prefix.h; + GENERATE_PKGINFO_FILE = YES; + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../..", + "$(SRCROOT)/../../../public.sdk/source/vst2.x", + ); + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(USER_LIBRARY_DIR)/Audio/Plug-Ins/VST"; + LIBRARY_STYLE = BUNDLE; + MACOSX_DEPLOYMENT_TARGET = 10.2; + OPTIMIZATION_CFLAGS = "-O0"; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ( + "-framework", + Carbon, + ); + OTHER_REZFLAGS = ""; + PRODUCT_NAME = drawtest; + SECTORDER_FLAGS = ""; + SKIP_INSTALL = NO; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + WRAPPER_EXTENSION = vst; + ZERO_LINK = NO; + }; + name = Development; + }; + F485AB75086C0BE900298D72 /* Deployment */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + DEAD_CODE_STRIPPING = YES; + DEPLOYMENT_POSTPROCESSING = YES; + GCC_AUTO_VECTORIZATION = YES; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = xcode_vst_prefix.h; + GCC_UNROLL_LOOPS = YES; + GCC_USE_GCC3_PFE_SUPPORT = YES; + GENERATE_PKGINFO_FILE = YES; + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../..", + "$(SRCROOT)/../../../public.sdk/source/vst2.x", + ); + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(USER_LIBRARY_DIR)/Audio/Plug-Ins/VST"; + LIBRARY_STYLE = BUNDLE; + MACOSX_DEPLOYMENT_TARGET = 10.2; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ( + "-framework", + Carbon, + ); + OTHER_REZFLAGS = ""; + PRESERVE_DEAD_CODE_INITS_AND_TERMS = YES; + PRODUCT_NAME = drawtest; + SECTORDER_FLAGS = ""; + SKIP_INSTALL = NO; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + WRAPPER_EXTENSION = vst; + ZERO_LINK = NO; + }; + name = Deployment; + }; + F485AB76086C0BE900298D72 /* Default */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = xcode_vst_prefix.h; + GENERATE_PKGINFO_FILE = YES; + HEADER_SEARCH_PATHS = ../vstsdk2.3; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(USER_LIBRARY_DIR)/Audio/Plug-Ins/VST"; + LIBRARY_STYLE = BUNDLE; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ( + "-framework", + Carbon, + ); + OTHER_REZFLAGS = ""; + PRODUCT_NAME = drawtest; + SECTORDER_FLAGS = ""; + SKIP_INSTALL = NO; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + WRAPPER_EXTENSION = vst; + }; + name = Default; + }; + F485AB78086C0BE900298D72 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + }; + name = Development; + }; + F485AB79086C0BE900298D72 /* Deployment */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = ( + ppc, + i386, + ); + SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + }; + name = Deployment; + }; + F485AB7A086C0BE900298D72 /* Default */ = { + isa = XCBuildConfiguration; + buildSettings = { + SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + }; + name = Default; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + F485AB6F086C0BE900298D72 /* Build configuration list for PBXNativeTarget "AudioUnit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F485AB70086C0BE900298D72 /* Development */, + F485AB71086C0BE900298D72 /* Deployment */, + F485AB72086C0BE900298D72 /* Default */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Default; + }; + F485AB73086C0BE900298D72 /* Build configuration list for PBXNativeTarget "VST" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F485AB74086C0BE900298D72 /* Development */, + F485AB75086C0BE900298D72 /* Deployment */, + F485AB76086C0BE900298D72 /* Default */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Default; + }; + F485AB77086C0BE900298D72 /* Build configuration list for PBXProject "drawtest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F485AB78086C0BE900298D72 /* Development */, + F485AB79086C0BE900298D72 /* Deployment */, + F485AB7A086C0BE900298D72 /* Default */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Default; + }; +/* End XCConfigurationList section */ + }; + rootObject = 089C1669FE841209C02AAC07 /* Project object */; +} diff --git a/vstgui.sf/drawtest/mac/xcode_au_prefix.h b/vstgui.sf/drawtest/mac/xcode_au_prefix.h new file mode 100644 index 0000000..4465d96 --- /dev/null +++ b/vstgui.sf/drawtest/mac/xcode_au_prefix.h @@ -0,0 +1,8 @@ +#define PLUGGUI 1 +#define AU 1 +#define PluginGUIEditor AEffGUIEditor +#include "vstplugsquartz.h" + +#include +#include +#include "vstgui.h" diff --git a/vstgui.sf/drawtest/mac/xcode_vst_prefix.h b/vstgui.sf/drawtest/mac/xcode_vst_prefix.h new file mode 100644 index 0000000..5b55590 --- /dev/null +++ b/vstgui.sf/drawtest/mac/xcode_vst_prefix.h @@ -0,0 +1,4 @@ +#include "vstplugsquartz.h" + +#include +#include "vstgui.h" diff --git a/vstgui.sf/drawtest/resources/audiounit.r b/vstgui.sf/drawtest/resources/audiounit.r new file mode 100644 index 0000000..b4d71ff --- /dev/null +++ b/vstgui.sf/drawtest/resources/audiounit.r @@ -0,0 +1,34 @@ +#define kComponentSubType 'vgdt' +#define kComponentManuf 'Xxxx' +#define kVersionNumber 0x00010000 + +#include +#include + +// ____________________________________________________________________________ +// component resources for Audio Unit +#define RES_ID 3000 +#define COMP_TYPE kAudioUnitType_Effect +#define COMP_SUBTYPE kComponentSubType +#define COMP_MANUF kComponentManuf +#define VERSION kVersionNumber +#define NAME "VSTGUI: DrawTest" +#define DESCRIPTION "DrawTest" +#define ENTRY_POINT "DrawTestAUEntry" + +#include "AUResources.r" + + +// ____________________________________________________________________________ +// component resources for Audio Unit Carbon View +#define RES_ID 9000 +#define COMP_TYPE kAudioUnitCarbonViewComponentType +#define COMP_SUBTYPE kComponentSubType +#define COMP_MANUF kComponentManuf +#define VERSION kVersionNumber +#define NAME "VSTGUI AUView" +#define DESCRIPTION "VSTGUI AUView" +#define ENTRY_POINT "VSTGUIAUViewEntry" + +#include "AUResources.r" + diff --git a/vstgui.sf/drawtest/resources/bmp00001.png b/vstgui.sf/drawtest/resources/bmp00001.png new file mode 100644 index 0000000..c8f5b08 Binary files /dev/null and b/vstgui.sf/drawtest/resources/bmp00001.png differ diff --git a/vstgui.sf/drawtest/resources/bmp00100.png b/vstgui.sf/drawtest/resources/bmp00100.png new file mode 100644 index 0000000..d097f30 Binary files /dev/null and b/vstgui.sf/drawtest/resources/bmp00100.png differ diff --git a/vstgui.sf/drawtest/resources/bmp01000.png b/vstgui.sf/drawtest/resources/bmp01000.png new file mode 100644 index 0000000..1e355ae Binary files /dev/null and b/vstgui.sf/drawtest/resources/bmp01000.png differ diff --git a/vstgui.sf/drawtest/resources/bmp10001.bmp b/vstgui.sf/drawtest/resources/bmp10001.bmp new file mode 100644 index 0000000..03f063e Binary files /dev/null and b/vstgui.sf/drawtest/resources/bmp10001.bmp differ diff --git a/vstgui.sf/drawtest/resources/bmp10002.bmp b/vstgui.sf/drawtest/resources/bmp10002.bmp new file mode 100644 index 0000000..e3a8aed Binary files /dev/null and b/vstgui.sf/drawtest/resources/bmp10002.bmp differ diff --git a/vstgui.sf/drawtest/resources/bmp10003.bmp b/vstgui.sf/drawtest/resources/bmp10003.bmp new file mode 100644 index 0000000..2954fc0 Binary files /dev/null and b/vstgui.sf/drawtest/resources/bmp10003.bmp differ diff --git a/vstgui.sf/drawtest/resources/bmp10004.bmp b/vstgui.sf/drawtest/resources/bmp10004.bmp new file mode 100644 index 0000000..e0c7fd5 Binary files /dev/null and b/vstgui.sf/drawtest/resources/bmp10004.bmp differ diff --git a/vstgui.sf/drawtest/resources/bmp10005.bmp b/vstgui.sf/drawtest/resources/bmp10005.bmp new file mode 100644 index 0000000..15cb22d Binary files /dev/null and b/vstgui.sf/drawtest/resources/bmp10005.bmp differ diff --git a/vstgui.sf/drawtest/resources/bmp10006.bmp b/vstgui.sf/drawtest/resources/bmp10006.bmp new file mode 100644 index 0000000..47117de Binary files /dev/null and b/vstgui.sf/drawtest/resources/bmp10006.bmp differ diff --git a/vstgui.sf/drawtest/resources/bmp10007.bmp b/vstgui.sf/drawtest/resources/bmp10007.bmp new file mode 100644 index 0000000..bfb1941 Binary files /dev/null and b/vstgui.sf/drawtest/resources/bmp10007.bmp differ diff --git a/vstgui.sf/drawtest/resources/bmp10008.bmp b/vstgui.sf/drawtest/resources/bmp10008.bmp new file mode 100644 index 0000000..e616a9c Binary files /dev/null and b/vstgui.sf/drawtest/resources/bmp10008.bmp differ diff --git a/vstgui.sf/drawtest/resources/bmp10009.bmp b/vstgui.sf/drawtest/resources/bmp10009.bmp new file mode 100644 index 0000000..4b2ab90 Binary files /dev/null and b/vstgui.sf/drawtest/resources/bmp10009.bmp differ diff --git a/vstgui.sf/drawtest/resources/bmp10010.bmp b/vstgui.sf/drawtest/resources/bmp10010.bmp new file mode 100644 index 0000000..a6810ea Binary files /dev/null and b/vstgui.sf/drawtest/resources/bmp10010.bmp differ diff --git a/vstgui.sf/drawtest/resources/bmp10011.bmp b/vstgui.sf/drawtest/resources/bmp10011.bmp new file mode 100644 index 0000000..6b020ab Binary files /dev/null and b/vstgui.sf/drawtest/resources/bmp10011.bmp differ diff --git a/vstgui.sf/drawtest/resources/bmp10012.bmp b/vstgui.sf/drawtest/resources/bmp10012.bmp new file mode 100644 index 0000000..0bc9517 Binary files /dev/null and b/vstgui.sf/drawtest/resources/bmp10012.bmp differ diff --git a/vstgui.sf/drawtest/resources/bmp10013.bmp b/vstgui.sf/drawtest/resources/bmp10013.bmp new file mode 100644 index 0000000..753233d Binary files /dev/null and b/vstgui.sf/drawtest/resources/bmp10013.bmp differ diff --git a/vstgui.sf/drawtest/resources/bmp10014.bmp b/vstgui.sf/drawtest/resources/bmp10014.bmp new file mode 100644 index 0000000..8110e98 Binary files /dev/null and b/vstgui.sf/drawtest/resources/bmp10014.bmp differ diff --git a/vstgui.sf/drawtest/resources/bmp10015.bmp b/vstgui.sf/drawtest/resources/bmp10015.bmp new file mode 100644 index 0000000..06b510d Binary files /dev/null and b/vstgui.sf/drawtest/resources/bmp10015.bmp differ diff --git a/vstgui.sf/drawtest/resources/bmp10016.bmp b/vstgui.sf/drawtest/resources/bmp10016.bmp new file mode 100644 index 0000000..6b251aa Binary files /dev/null and b/vstgui.sf/drawtest/resources/bmp10016.bmp differ diff --git a/vstgui.sf/drawtest/source/controlsgui.cpp b/vstgui.sf/drawtest/source/controlsgui.cpp new file mode 100644 index 0000000..0e5b76e --- /dev/null +++ b/vstgui.sf/drawtest/source/controlsgui.cpp @@ -0,0 +1,541 @@ +#ifndef __controlsgui__ +#include "controlsgui.h" +#endif + +#include "cfileselector.h" + +#include + +enum +{ + // bitmaps + kBackgroundBitmap = 10001, + + kSliderHBgBitmap, + kSliderVBgBitmap, + kSliderHandleBitmap, + + kSwitchHBitmap, + kSwitchVBitmap, + + kOnOffBitmap, + + kKnobHandleBitmap, + kKnobBgBitmap, + + kDigitBitmap, + kRockerBitmap, + + kVuOnBitmap, + kVuOffBitmap, + + kSplashBitmap, + + kMovieKnobBitmap, + + kMovieBitmap, + + // others + kBackgroundW = 420, + kBackgroundH = 210 +}; +//----------------------------------------------------------------------------- +// CLabel declaration +//----------------------------------------------------------------------------- +class CLabel : public CParamDisplay +{ +public: + CLabel (CRect &size, char *text); + + void draw (CDrawContext *pContext); + + void setLabel (char *text); + virtual bool onDrop (CDrawContext* context, CDragContainer* drag, const CPoint& where); + virtual void onDragEnter (CDrawContext* context, CDragContainer* drag, const CPoint& where); + virtual void onDragLeave (CDrawContext* context, CDragContainer* drag, const CPoint& where); + virtual void onDragMove (CDrawContext* context, CDragContainer* drag, const CPoint& where); + +protected: + char label[256]; + bool focus; +}; + +//----------------------------------------------------------------------------- +// CLabel implementation +//----------------------------------------------------------------------------- +CLabel::CLabel (CRect &size, char *text) +: CParamDisplay (size) +, focus (false) +{ + strcpy (label, ""); + setLabel (text); +} + +//------------------------------------------------------------------------ +void CLabel::setLabel (char *text) +{ + if (text) + strcpy (label, text); + setDirty (); +} + +bool CLabel::onDrop (CDrawContext* context, CDragContainer* drag, const CPoint& where) +{ + long size, type; + void* ptr = drag->first (size, type); + if (ptr) + { + setLabel ((char*)ptr); + } + return true; +} + +void CLabel::onDragEnter (CDrawContext* context, CDragContainer* drag, const CPoint& where) +{ + getFrame ()->setCursor (kCursorCopy); + focus = true; + setDirty (); +} + +void CLabel::onDragLeave (CDrawContext* context, CDragContainer* drag, const CPoint& where) +{ + getFrame ()->setCursor (kCursorNotAllowed); + focus = false; + setDirty (); +} + +void CLabel::onDragMove (CDrawContext* context, CDragContainer* drag, const CPoint& where) +{ +} + +//------------------------------------------------------------------------ +void CLabel::draw (CDrawContext *pContext) +{ + pContext->setFillColor (backColor); + pContext->fillRect (size); + pContext->setLineWidth (focus ? 2 : 1); + pContext->setFrameColor (fontColor); + pContext->drawRect (size); + + pContext->setFont (fontID); + pContext->setFontColor (fontColor); + pContext->drawString (label, size, false, kCenterText); + setDirty (false); +} + +enum +{ + kSliderHTag = 0, + kSliderVTag, + kKnobTag, + + kNumParams, + + kOnOffTag, + kKickTag, + kMovieButtonTag, + kAutoAnimationTag, + kOptionMenuTag, + + kRockerSwitchTag, + kSwitchHTag, + kSwitchVTag, + + kSplashTag, + kMovieBitmapTag, + kAnimKnobTag, + kDigitTag, + kTextEditTag, + + kAbout +}; + +ControlsGUI::ControlsGUI (const CRect &inSize, CFrame *frame, CBitmap *pBackground) +: CViewContainer (inSize, frame, pBackground) +{ + setMode (kOnlyDirtyUpdate); + + // get version + int version = (VSTGUI_VERSION_MAJOR << 16) + VSTGUI_VERSION_MINOR; + int verMaj = (version & 0xFF00) >> 16; + int verMin = (version & 0x00FF); + + // init the background bitmap + CBitmap *background = new CBitmap (kBackgroundBitmap); + + setBackground (background); + + background->forget (); + + CPoint point (0, 0); + + //--COnOffButton----------------------------------------------- + CBitmap *onOffButton = new CBitmap (kOnOffBitmap); + + CRect size (0, 0, onOffButton->getWidth (), onOffButton->getHeight () / 2); + size.offset (20, 20); + cOnOffButton = new COnOffButton (size, this, kOnOffTag, onOffButton); + addView (cOnOffButton); + + + //--CKickButton----------------------------------------------- + size.offset (70, 0); + point (0, 0); + cKickButton = new CKickButton (size, this, kKickTag, onOffButton->getHeight() / 2, onOffButton, point); + addView (cKickButton); + + + //--CKnob-------------------------------------- + CBitmap *knob = new CBitmap (kKnobHandleBitmap); + CBitmap *bgKnob = new CBitmap (kKnobBgBitmap); + + size (0, 0, bgKnob->getWidth (), bgKnob->getHeight ()); + size.offset (140 + 15, 15); + point (0, 0); + cKnob = new CKnob (size, this, kKnobTag, bgKnob, knob, point); + cKnob->setInsetValue (7); + addView (cKnob); + knob->forget (); + bgKnob->forget (); + + + //--CMovieButton-------------------------------------- + size (0, 0, onOffButton->getWidth (), onOffButton->getHeight () / 2); + size.offset (210 + 20, 20); + point (0, 0); + cMovieButton = new CMovieButton (size, this, kMovieButtonTag, onOffButton->getHeight () / 2, onOffButton, point); + addView (cMovieButton); + + onOffButton->forget (); + + + //--CAnimKnob-------------------------------------- + CBitmap *movieKnobBitmap = new CBitmap (kMovieKnobBitmap); + + size (0, 0, movieKnobBitmap->getWidth (), movieKnobBitmap->getHeight () / 7); + size.offset (280 + 15, 15); + point (0, 0); + cAnimKnob = new CAnimKnob (size, this, kAnimKnobTag, 7, movieKnobBitmap->getHeight () / 7, movieKnobBitmap, point); + addView (cAnimKnob); + + movieKnobBitmap->forget (); + + + //--COptionMenu-------------------------------------- + size (0, 0, 50, 14); + size.offset (350 + 10, 30); + + long style = k3DIn | kMultipleCheckStyle; + cOptionMenu = new COptionMenu (size, this, kOptionMenuTag, bgKnob, 0, style); + if (cOptionMenu) + { + cOptionMenu->setFont (kNormalFont); + cOptionMenu->setFontColor (kWhiteCColor); + cOptionMenu->setBackColor (kRedCColor); + cOptionMenu->setFrameColor (kWhiteCColor); + cOptionMenu->setHoriAlign (kLeftText); + int i; + for (i = 0; i < 3; i++) + { + char txt[256]; + sprintf (txt, "Entry %d", i); + cOptionMenu->addEntry (txt); + } + cOptionMenu->addEntry ("-"); + for (i = 3; i < 60; i++) + { + char txt[256]; + sprintf (txt, "Entry %d", i); + cOptionMenu->addEntry (txt); + } + + addView (cOptionMenu); + } + + + //--CRockerSwitch-------------------------------------- + CBitmap *rocker = new CBitmap (kRockerBitmap); + size (0, 0, rocker->getWidth (), rocker->getHeight () / 3); + size.offset (9, 70 + 29); + point (0, 0); + cRockerSwitch = new CRockerSwitch (size, this, kRockerSwitchTag, rocker->getHeight () / 3, rocker, point); + addView (cRockerSwitch); + rocker->forget (); + + + //--CHorizontalSwitch-------------------------------------- + CBitmap *switchHBitmap = new CBitmap (kSwitchHBitmap); + size (0, 0, switchHBitmap->getWidth (), switchHBitmap->getHeight () / 4); + size.offset (70 + 10, 70 + 30); + point (0, 0); + cHorizontalSwitch = new CHorizontalSwitch (size, this, kSwitchHTag, 4, switchHBitmap->getHeight () / 4, 4, switchHBitmap, point); + addView (cHorizontalSwitch); + switchHBitmap->forget (); + + + //--CVerticalSwitch-------------------------------------- + CBitmap *switchVBitmap = new CBitmap (kSwitchVBitmap); + + size (0, 0, switchVBitmap->getWidth (), switchVBitmap->getHeight () / 4); + size.offset (140 + 30, 70 + 5); + cVerticalSwitch = new CVerticalSwitch (size, this, kSwitchVTag, 4, switchVBitmap->getHeight () / 4, 4, switchVBitmap, point); + addView (cVerticalSwitch); + switchVBitmap->forget (); + + + //--CHorizontalSlider-------------------------------------- + CBitmap *sliderHBgBitmap = new CBitmap (kSliderHBgBitmap); + CBitmap *sliderHandleBitmap = new CBitmap (kSliderHandleBitmap); + + size (0, 0, sliderHBgBitmap->getWidth (), sliderHBgBitmap->getHeight ()); + size.offset (10, 30); + + point (0, 0); +#if 1 + cHorizontalSlider = new CHorizontalSlider (size, this, kSliderHTag, size.left + 2, size.left + sliderHBgBitmap->getWidth () - sliderHandleBitmap->getWidth () - 1, sliderHandleBitmap, sliderHBgBitmap, point, kLeft); + point (0, 2); + cHorizontalSlider->setOffsetHandle (point); +#else + CPoint handleOffset (2, 2); + cHorizontalSlider = new CHorizontalSlider (size, this, kSliderHTag, handleOffset, size.width () - 2 * handleOffset.h, sliderHandleBitmap, sliderHBgBitmap, point, kLeft); +#endif + cHorizontalSlider->setFreeClick (false); + size.offset (0, -30 + 10); + + style = k3DIn | kCheckStyle; + COptionMenu *cOptionMenu2 = new COptionMenu (size, this, kOptionMenuTag, bgKnob, 0, style); + if (cOptionMenu2) + { + cOptionMenu2->setFont (kNormalFont); + cOptionMenu2->setFontColor (kWhiteCColor); + cOptionMenu2->setBackColor (kRedCColor); + cOptionMenu2->setFrameColor (kWhiteCColor); + cOptionMenu2->setHoriAlign (kLeftText); + int i; + for (i = 0; i < 3; i++) + { + char txt[256]; + sprintf (txt, "Entry %d", i); + cOptionMenu2->addEntry (txt); + } + } + + // add this 2 control in a CViewContainer + size (0, 0, 70, 45); + size.offset (210, 70); + cViewContainer = new CViewContainer (size, frame, background); + cViewContainer->addView (cHorizontalSlider); + cViewContainer->addView (cOptionMenu2); + addView (cViewContainer); + + sliderHBgBitmap->forget (); + + + //--CVerticalSlider-------------------------------------- + CBitmap *sliderVBgBitmap = new CBitmap (kSliderVBgBitmap); + + size (0, 0, sliderVBgBitmap->getWidth (), sliderVBgBitmap->getHeight ()); + size.offset (280 + 30, 70 + 5); +#if 1 + point (0, 0); + cVerticalSlider = new CVerticalSlider (size, this, kSliderVTag, size.top + 2, size.top + sliderVBgBitmap->getHeight () - sliderHandleBitmap->getHeight () - 1, sliderHandleBitmap, sliderVBgBitmap, point, kBottom); + point (2, 0); + cVerticalSlider->setOffsetHandle (point); +#else + point (0, 0); + CPoint handleOffset (2, 2); + cVerticalSlider = new CVerticalSlider (size, this, kSliderVTag, handleOffset, + size.height () - 2 * handleOffset.v, sliderHandleBitmap, sliderVBgBitmap, point, kBottom); +#endif + cVerticalSlider->setFreeClick (false); + addView (cVerticalSlider); + + sliderVBgBitmap->forget (); + sliderHandleBitmap->forget (); + + + //--CTextEdit-------------------------------------- + size (0, 0, 50, 12); + size.offset (350 + 10, 70 + 30); + cTextEdit = new CTextEdit (size, this, kTextEditTag, 0, 0, k3DIn); + if (cTextEdit) + { + cTextEdit->setFont (kNormalFontVerySmall); + cTextEdit->setFontColor (kWhiteCColor); + cTextEdit->setBackColor (kBlackCColor); + cTextEdit->setFrameColor (kWhiteCColor); + cTextEdit->setHoriAlign (kCenterText); + addView (cTextEdit); + } + + //--CSplashScreen-------------------------------------- + CBitmap *splashBitmap = new CBitmap (kSplashBitmap); + + size (0, 0, 70, 70); + size.offset (0, 140); + point (0, 0); + CRect toDisplay (0, 0, splashBitmap->getWidth (), splashBitmap->getHeight ()); + toDisplay.offset (100, 50); + + cSplashScreen = new CSplashScreen (size, this, kAbout, splashBitmap, toDisplay, point); + addView (cSplashScreen); + splashBitmap->forget (); + + + //--CMovieBitmap-------------------------------------- + CBitmap *movieBitmap = new CBitmap (kMovieBitmap); + + size (0, 0, movieBitmap->getWidth (), movieBitmap->getHeight () / 10); + size.offset (70 + 15, 140 + 15); + point (0, 0); + cMovieBitmap = new CMovieBitmap (size, this, kMovieBitmapTag, 10, movieBitmap->getHeight () / 10, movieBitmap, point); + addView (cMovieBitmap); + + + //--CAutoAnimation-------------------------------------- + size (0, 0, movieBitmap->getWidth (), movieBitmap->getHeight () / 10); + size.offset (140 + 15, 140 + 15); + point (0, 0); + cAutoAnimation = new CAutoAnimation (size, this, kAutoAnimationTag, 10, movieBitmap->getHeight () / 10, movieBitmap, point); + addView (cAutoAnimation); + movieBitmap->forget (); + + + //--CSpecialDigit-------------------------------------- + CBitmap *specialDigitBitmap = new CBitmap (kDigitBitmap); + + size (0, 0, specialDigitBitmap->getWidth () * 7, specialDigitBitmap->getHeight () / 10); + size.offset (210 + 10, 140 + 30); + + cSpecialDigit = new CSpecialDigit (size, this, kDigitTag, 0, 7, 0, 0, specialDigitBitmap->getWidth (), specialDigitBitmap->getHeight () / 10 , specialDigitBitmap); + addView (cSpecialDigit); + specialDigitBitmap->forget (); + + + //--CParamDisplay-------------------------------------- + size (0, 0, 50, 15); + size.offset (280 + 10, 140 + 30); + cParamDisplay = new CParamDisplay (size); + if (cParamDisplay) + { + cParamDisplay->setFont (kNormalFontSmall); + cParamDisplay->setFontColor (kWhiteCColor); + cParamDisplay->setBackColor (kBlackCColor); + addView (cParamDisplay); + } + + + //--CVuMeter-------------------------------------- + CBitmap* vuOnBitmap = new CBitmap (kVuOnBitmap); + CBitmap* vuOffBitmap = new CBitmap (kVuOffBitmap); + + size (0, 0, vuOnBitmap->getWidth (), vuOnBitmap->getHeight ()); + size.offset (350 + 30, 140 + 5); + cVuMeter = new CVuMeter (size, vuOnBitmap, vuOffBitmap, 14); + cVuMeter->setDecreaseStepValue (0.1f); + addView (cVuMeter); + vuOnBitmap->forget (); + vuOffBitmap->forget (); + + //--My controls--------------------------------- + //--CLabel-------------------------------------- + size (0, 0, 349, 14); + size.offset (0, 140); + cLabel = new CLabel (size, "Type a Key or Drop a file..."); + if (cLabel) + { + cLabel->setFont (kNormalFontSmall); + cLabel->setFontColor (kWhiteCColor); + cLabel->setBackColor (kGreyCColor); + addView (cLabel); + } + + //--CLabel-------------------------------------- + size (0, 0, 65, 12); + size.offset (1, 40); + CLabel *cLabel2 = new CLabel (size, "FileSelector"); + if (cLabel2) + { + cLabel2->setFont (kNormalFontSmaller); + cLabel2->setFontColor (kWhiteCColor); + cLabel2->setBackColor (kGreyCColor); + addView (cLabel2); + } + + size (inSize.right, inSize.bottom, inSize.right + 100, inSize.bottom + 100); + CLabel* outsideLabel = new CLabel (size, "This label is outside its superview"); + addView (outsideLabel); + outsideLabel->setDirty (true); +} + +void ControlsGUI::valueChanged (CDrawContext *pContext, CControl *pControl) +{ + // this is only to provide the same behaviour as the original controlsgui editor class in the vst sdk 2.3 + // do not take this as an example on how to code !!! + + float value = pControl->getValue (); + switch (pControl->getTag ()) + { + case kSliderVTag: + case kSliderHTag: + case kKnobTag: + case kAnimKnobTag: + { + cHorizontalSlider->setValue (value); + cVerticalSlider->setValue (value); + cKnob->setValue (value); + cAnimKnob->setValue (value); + cSpecialDigit->setValue (1000000 * value); + cParamDisplay->setValue (value); + cVuMeter->setValue (value); + cMovieBitmap->setValue (value); + break; + } + + case kOnOffTag: + { + if (value > 0.5f) + { + VstFileType aiffType ("AIFF File", "AIFF", "aif", "aiff", "audio/aiff", "audio/x-aiff"); + VstFileType aifcType ("AIFC File", "AIFC", "aif", "aifc", "audio/x-aifc"); + VstFileType waveType ("Wave File", "WAVE", "wav", "wav", "audio/wav", "audio/x-wav"); + VstFileType sdIIType ("SoundDesigner II File", "Sd2f", "sd2", "sd2"); + VstFileType types[] = {aiffType, aifcType, waveType, sdIIType}; + + VstFileSelect vstFileSelect; + memset (&vstFileSelect, 0, sizeof (VstFileSelect)); + + vstFileSelect.command = kVstFileLoad; + vstFileSelect.type = kVstFileType; + strcpy (vstFileSelect.title, "Test for open file selector"); + vstFileSelect.nbFileTypes = 4; + vstFileSelect.fileTypes = (VstFileType*)&types; + vstFileSelect.returnPath = new char[1024]; + vstFileSelect.initialPath = 0; + vstFileSelect.future[0] = 1; // utf-8 path on macosx + CFileSelector selector (NULL); + if (selector.run (&vstFileSelect)) + { + if (cLabel) + cLabel->setLabel (vstFileSelect.returnPath); + } + else + { + if (cLabel) + cLabel->setLabel ("OpenFileSelector: canceled!!!!"); + } + delete []vstFileSelect.returnPath; + if (vstFileSelect.initialPath) + delete []vstFileSelect.initialPath; + } + break; + } + } +} + +void ControlsGUI::onIdle () +{ + // trigger animation + if(cAutoAnimation) + cAutoAnimation->nextPixmap (); +} \ No newline at end of file diff --git a/vstgui.sf/drawtest/source/controlsgui.h b/vstgui.sf/drawtest/source/controlsgui.h new file mode 100644 index 0000000..dae8bdc --- /dev/null +++ b/vstgui.sf/drawtest/source/controlsgui.h @@ -0,0 +1,51 @@ +#ifndef __controlsgui__ +#define __controlsgui__ + +#ifndef __vstcontrols__ +#include "vstcontrols.h" +#endif + +class CLabel; + +class ControlsGUI : public CViewContainer, CControlListener +{ +public: + ControlsGUI (const CRect &size, CFrame *pParent, CBitmap *pBackground = 0); + + virtual void onIdle (); + + virtual void valueChanged (CDrawContext *pContext, CControl *pControl); + +protected: + + COnOffButton *cOnOffButton; + CKickButton *cKickButton; + CKnob *cKnob; + CMovieButton *cMovieButton; + CAnimKnob *cAnimKnob; + COptionMenu *cOptionMenu; + + CRockerSwitch *cRockerSwitch; + CHorizontalSwitch *cHorizontalSwitch; + CVerticalSwitch *cVerticalSwitch; + CHorizontalSlider *cHorizontalSlider; + CHorizontalSlider *cHorizontalSlider2; + CVerticalSlider *cVerticalSlider; + CTextEdit *cTextEdit; + + CSplashScreen *cSplashScreen; + CMovieBitmap *cMovieBitmap; + CAutoAnimation *cAutoAnimation; + CSpecialDigit *cSpecialDigit; + CParamDisplay *cParamDisplay; + CVuMeter *cVuMeter; + + CViewContainer *cViewContainer; + + // others + CLabel *cLabel; + + long oldTicks; +}; + +#endif diff --git a/vstgui.sf/drawtest/source/pdrawtesteditor.cpp b/vstgui.sf/drawtest/source/pdrawtesteditor.cpp new file mode 100644 index 0000000..7e7f3af --- /dev/null +++ b/vstgui.sf/drawtest/source/pdrawtesteditor.cpp @@ -0,0 +1,266 @@ +//------------------------------------------------------------------------------------------------------- +// VSTGUI Test View plugin +// Copyright (c) 2004 Arne Scheffler. All rights reserved. +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program 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. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +//------------------------------------------------------------------------------------------------------- + +#include "pdrawtesteditor.h" +#include "pdrawtestview.h" +#include "cscrollview.h" +#include "ctabview.h" +#include "controlsgui.h" +#include "pprimitivesviews.h" + +enum { + kBackgroundBitmap = 1, + kTabButtonBitmap = 100, + kTestBitmap = 1000, +}; + +class MyTabView : public CTabView +{ +public: + MyTabView (const CRect& size, CFrame* parent, CBitmap* tabBitmap, CBitmap* background = 0, long tabPosition = kPositionTop, DrawTestEditor* editor = 0) + : CTabView (size, parent, tabBitmap, background, tabPosition) + , editor (editor) {} + + virtual void mouse (CDrawContext *pContext, CPoint &where, long button = -1) + { + if (button == kRButton) + { + CView* view = getViewAt (where); + if (!view || view->isTypeOf ("CTabButton")) + { + CRect r; + localToFrame (where); + r.offset (where.x, where.y); + r.offset (-size.left, -size.top); + COptionMenu* menu = new COptionMenu (r, NULL, 0); + menu->addEntry ("Tabs Left"); + menu->addEntry ("Tabs Right"); + menu->addEntry ("Tabs Top"); + menu->addEntry ("Tabs Bottom"); + menu->addEntry ("-"); + menu->addEntry ("Align Tabs Centered"); + menu->addEntry ("Align Tabs Left/Top"); + menu->addEntry ("Align Tabs Right/Bottom"); + getFrame ()->addView (menu); + menu->takeFocus (); + long res = menu->getLastResult (); + getFrame ()->removeView (menu); + if (res != -1) + { + if (res < 4) + { + r = size; + editor->setTabView (getFrame (), r, res); + } + else + { + alignTabs (kAlignCenter + res - 5); + } + } + return; + } + } + CTabView::mouse (pContext, where, button); + } + + virtual bool selectTab (long index) + { + bool result = CTabView::selectTab (index); + #if DEBUG + getFrame ()->dumpHierarchy (); + #endif + return result; + } + +protected: + DrawTestEditor* editor; +}; + +class MyColoredView : public CView +{ +public: + MyColoredView (const CRect& size) : CView (size) {} + + void draw (CDrawContext* context) + { + context->setFillColor (backgroundColor); + context->setFrameColor (kBlackCColor); + context->drawRect (size, kDrawFilledAndStroked); + setDirty (false); + } + + void setBackgroundColor (const CColor& c) { backgroundColor = c; } + +protected: + CColor backgroundColor; +}; + +DrawTestEditor::DrawTestEditor (void* effect) +#if AU +: AEffGUIEditor (effect) +#else +: AEffGUIEditor ((AudioEffect*)effect) +#endif +, controlsView (0) +{ + backgroundBitmap = new CBitmap (kBackgroundBitmap); + // setup size of editor + rect.left = 0; + rect.top = 0; + #if AU + rect.right = (short)backgroundBitmap->getWidth (); + rect.bottom = (short)backgroundBitmap->getHeight (); + #else + rect.right = (VstInt16)backgroundBitmap->getWidth (); + rect.bottom = (VstInt16)backgroundBitmap->getHeight (); + #endif +} + +DrawTestEditor::~DrawTestEditor () +{ + backgroundBitmap->forget (); +} + +void DrawTestEditor::valueChanged (CDrawContext *pContext, CControl *pControl) +{ +} + +void DrawTestEditor::setTabView (CFrame* frame, const CRect& r, long position) +{ + frame->removeAll (); + CBitmap* tabButtonBitmap = new CBitmap (kTabButtonBitmap); + CTabView* tabView = new MyTabView (r, frame, tabButtonBitmap, NULL, position, this); + tabView->setTransparency (true); + frame->addView (tabView); + CRect tabSize = tabView->getTabViewSize (tabSize); +// tabSize.inset (1, 1); + // add tabs + CView* testView; + CBitmap* testBitmap = new CBitmap (kTestBitmap); + CRect containerSize; + containerSize.right = testBitmap->getWidth (); + containerSize.bottom = testBitmap->getHeight (); + // the first tab is a scroll view with a movie bitmap + CScrollView* scrollview = new CScrollView (tabSize, containerSize, frame, CScrollView::kHorizontalScrollbar|CScrollView::kVerticalScrollbar); + CPoint p (0,0); + testView = new CMovieBitmap (containerSize, NULL, 0, 1, testBitmap->getHeight (), testBitmap, p); + testBitmap->forget (); + scrollview->addView (testView); + tabView->addTab (scrollview, "Scroll View"); + + // the second tab is a draw primitives view +// testView = new CDrawTestView (tabSize); +// tabView->addTab (testView, "Primitives"); + testView = new PLinesView (tabSize); + tabView->addTab (testView, "Lines"); + + testView = new PRectsView (tabSize); + tabView->addTab (testView, "Rects"); + + testView = new PMiscView (tabSize); + tabView->addTab (testView, "Misc"); + + // the third tab is the old controlsgui view embeded into a container view + CRect controlsGUISize (0, 0, 420, 210); + controlsGUISize.offset (5, 5); + testView = controlsView = new ControlsGUI (controlsGUISize, frame); + + CViewContainer* controlContainer = new CViewContainer (tabSize, frame); + controlContainer->setTransparency (true); + controlContainer->addView (testView); + + tabView->addTab (controlContainer, "Controls"); + + CColor redColor = {255, 0, 0, 150}; + CColor greenColor = {0, 255, 0, 150}; + CColor blueColor = {0, 0, 255, 150}; + + CViewContainer* clipView = new CViewContainer (tabSize, frame); + clipView->setTransparency (true); + CRect clipViewSize (0, 0, tabSize.getWidth () / 4, tabSize.getHeight () / 2); + MyColoredView* cv = new MyColoredView (clipViewSize); + cv->setBackgroundColor (redColor); + clipView->addView (cv); + clipViewSize.offset (clipViewSize.getWidth (), 0); + cv = new MyColoredView (clipViewSize); + cv->setBackgroundColor (greenColor); + clipView->addView (cv); + clipViewSize.offset (clipViewSize.getWidth (), 0); + cv = new MyColoredView (clipViewSize); + cv->setBackgroundColor (blueColor); + clipView->addView (cv); + clipViewSize.offset (clipViewSize.getWidth (), 0); + cv = new MyColoredView (clipViewSize); + cv->setBackgroundColor (redColor); + clipView->addView (cv); + clipViewSize (0, tabSize.getHeight () / 2, tabSize.getWidth () / 4, tabSize.getHeight ()); + cv = new MyColoredView (clipViewSize); + cv->setBackgroundColor (greenColor); + clipView->addView (cv); + clipViewSize.offset (clipViewSize.getWidth (), 0); + cv = new MyColoredView (clipViewSize); + cv->setBackgroundColor (blueColor); + clipView->addView (cv); + clipViewSize.offset (clipViewSize.getWidth (), 0); + cv = new MyColoredView (clipViewSize); + cv->setBackgroundColor (redColor); + clipView->addView (cv); + clipViewSize.offset (clipViewSize.getWidth (), 0); + cv = new MyColoredView (clipViewSize); + cv->setBackgroundColor (greenColor); + clipView->addView (cv); + + tabView->addTab (clipView, "Clip Test"); + tabView->alignTabs (CTabView::kAlignCenter); + + tabButtonBitmap->forget (); + frame->setDirty (); +} + +bool DrawTestEditor::open (void *ptr) +{ + AEffGUIEditor::open (ptr); + CRect size (rect.left , rect.top, rect.right, rect.bottom); + CFrame* frame = new CFrame (size, ptr, this); + frame->setBackground (backgroundBitmap); + size.inset (8, 8); + size.top++; // the background bitmap is not correct + size.left++; // the background bitmap is not correct + setTabView (frame, size, CTabView::kPositionBottom); + // last but not least set the class variable frame to our newly created frame + this->frame = frame; + return true; +} + +void DrawTestEditor::close () +{ + // don't forget to remove the frame !! + if (frame) + delete frame; + frame = 0; + controlsView = 0; +} + +void DrawTestEditor::idle () +{ + AEffGUIEditor::idle (); + + if(controlsView) + controlsView->onIdle (); +} \ No newline at end of file diff --git a/vstgui.sf/drawtest/source/pdrawtesteditor.h b/vstgui.sf/drawtest/source/pdrawtesteditor.h new file mode 100644 index 0000000..8c20a82 --- /dev/null +++ b/vstgui.sf/drawtest/source/pdrawtesteditor.h @@ -0,0 +1,48 @@ +//------------------------------------------------------------------------------------------------------- +// VSTGUI Test View plugin +// Copyright (c) 2004 Arne Scheffler. All rights reserved. +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program 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. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +//------------------------------------------------------------------------------------------------------- + +#ifndef __pdrawtesteditor__ +#define __pdrawtesteditor__ + +#ifndef __vstcontrols__ +#include "vstcontrols.h" +#endif + +class ControlsGUI; + +class DrawTestEditor : public AEffGUIEditor, CControlListener +{ +public: + DrawTestEditor (void* effect); + virtual ~DrawTestEditor (); + + void setTabView (CFrame* frame, const CRect& r, long position); + + virtual void valueChanged (CDrawContext *pContext, CControl *pControl); + +protected: + virtual bool open (void *ptr); + virtual void close (); + virtual void idle (); + + CBitmap* backgroundBitmap; + ControlsGUI* controlsView; +}; + +#endif diff --git a/vstgui.sf/drawtest/source/pdrawtesteffect.cpp b/vstgui.sf/drawtest/source/pdrawtesteffect.cpp new file mode 100644 index 0000000..7db11fa --- /dev/null +++ b/vstgui.sf/drawtest/source/pdrawtesteffect.cpp @@ -0,0 +1,177 @@ +//------------------------------------------------------------------------------------------------------- +// VSTGUI Test View plugin +// Copyright (c) 2004 Arne Scheffler. All rights reserved. +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program 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. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +//------------------------------------------------------------------------------------------------------- + +#if AU +#include "AUEffectBase.h" +#include "pdrawtesteditor.h" + +#define kComponentSubType 'vgdt' +#define kComponentManuf 'Xxxx' +#define kVersionNumber 0x00010000 + +class DrawTestAU : public AUEffectBase +{ +public: + DrawTestAU (AudioUnit au) + : AUEffectBase (au) + { + // editor = new DrawTestEditor (this); + } + + virtual ~DrawTestAU () + { + //if (editor) + //delete editor; + } + + virtual int GetNumCustomUIComponents () + { + return 1; + } + + virtual ComponentResult Version () { return kVersionNumber; } + + virtual void GetUIComponentDescs (ComponentDescription* inDescArray) + { + inDescArray[0].componentType = kAudioUnitCarbonViewComponentType; + inDescArray[0].componentSubType = kComponentSubType; + inDescArray[0].componentManufacturer = kComponentManuf; + inDescArray[0].componentFlags = 0; + inDescArray[0].componentFlagsMask = 0; + } + +/* ComponentResult GetPropertyInfo (AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement, UInt32 &outDataSize, Boolean &outWritable) + { + if (inID == 64000) + { + if (editor) + { + outDataSize = sizeof (PluginGUIEditor*); + outWritable = false; + return noErr; + } + return kAudioUnitErr_InvalidProperty; + } + return AUEffectBase::GetPropertyInfo (inID, inScope, inElement, outDataSize, outWritable); + } + + ComponentResult GetProperty (AudioUnitPropertyID inID, AudioUnitScope inScope, AudioUnitElement inElement, void *outData) + { + if (inID == 64000) + { + if (editor) + { + long ptr = (long)editor; + *((long*)outData) = ptr; + return noErr; + } + else + *((long*)outData) = 0; + return kAudioUnitErr_InvalidProperty; + } + return AUEffectBase::GetProperty (inID, inScope, inElement, outData); + } +*/ +protected: + DrawTestEditor* editor; +}; + + +#include "AUCarbonViewBase.h" +#include "plugguieditor.h" + +class VSTGUIAUView : public AUCarbonViewBase +{ +public: + VSTGUIAUView (AudioUnitCarbonView auv) + : AUCarbonViewBase (auv) + , editor (0) + , xOffset (0) + , yOffset (0) + { + } + + virtual ~VSTGUIAUView () + { + if (editor) + { + editor->close (); + } + } + + void RespondToEventTimer (EventLoopTimerRef inTimer) + { + if (editor) + editor->doIdleStuff (); + } + + virtual OSStatus CreateUI(Float32 xoffset, Float32 yoffset) + { + AudioUnit unit = GetEditAudioUnit (); + if (unit) + { + editor = new DrawTestEditor (unit); + WindowRef window = GetCarbonWindow (); + editor->open (window); +// HIViewMoveBy ((HIViewRef)editor->getFrame ()->getPlatformControl (), xoffset, yoffset); + EmbedControl ((HIViewRef)editor->getFrame ()->getPlatformControl ()); + CRect fsize = editor->getFrame ()->getViewSize (fsize); + SizeControl (mCarbonPane, fsize.width (), fsize.height ()); + CreateEventLoopTimer (kEventDurationSecond, kEventDurationSecond / 24); + HIViewSetVisible ((HIViewRef)editor->getFrame ()->getPlatformControl (), true); + HIViewSetNeedsDisplay ((HIViewRef)editor->getFrame ()->getPlatformControl (), true); + } + return noErr; + } + + Float32 xOffset, yOffset; +protected: + PluginGUIEditor* editor; +}; + +COMPONENT_ENTRY(VSTGUIAUView); +COMPONENT_ENTRY(DrawTestAU); + + +#else +#include "pdrawtesteffect.h" +#include "pdrawtesteditor.h" + +DrawTestEffect::DrawTestEffect (audioMasterCallback audioMaster) +: AudioEffectX (audioMaster, 1, 0) +{ + editor = new DrawTestEditor (this); +} + +DrawTestEffect::~DrawTestEffect () +{ +} + +void DrawTestEffect::processReplacing (float **inputs, float **outputs, VstInt32 sampleFrames) +{ +} + +VstInt32 DrawTestEffect::canDo (char* text) +{ + if (!strcmp (text, "wantsUTF8Paths")) + return 1; + return 0; +} + +#endif diff --git a/vstgui.sf/drawtest/source/pdrawtesteffect.h b/vstgui.sf/drawtest/source/pdrawtesteffect.h new file mode 100644 index 0000000..9e73589 --- /dev/null +++ b/vstgui.sf/drawtest/source/pdrawtesteffect.h @@ -0,0 +1,38 @@ +//------------------------------------------------------------------------------------------------------- +// VSTGUI Test View plugin +// Copyright (c) 2004 Arne Scheffler. All rights reserved. +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program 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. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +//------------------------------------------------------------------------------------------------------- + +#ifndef __pdrawtesteffect__ +#define __pdrawtesteffect__ + +#ifndef __audioeffectx__ +#include "audioeffectx.h" +#endif + +class DrawTestEffect : public AudioEffectX +{ +public: + DrawTestEffect (audioMasterCallback audioMaster); + ~DrawTestEffect (); + + virtual void processReplacing (float **inputs, float **outputs, VstInt32 sampleFrames); + + VstInt32 canDo (char* text); +}; + +#endif diff --git a/vstgui.sf/drawtest/source/pdrawtestmain.cpp b/vstgui.sf/drawtest/source/pdrawtestmain.cpp new file mode 100644 index 0000000..ada29d9 --- /dev/null +++ b/vstgui.sf/drawtest/source/pdrawtestmain.cpp @@ -0,0 +1,78 @@ +//------------------------------------------------------------------------------------------------------- +// VSTGUI Test View plugin +// Copyright (c) 2004 Arne Scheffler. All rights reserved. +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program 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. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +//------------------------------------------------------------------------------------------------------- + +#include "pdrawtesteffect.h" + +bool oome = false; + +#if MAC +#pragma export on +#endif + +//------------------------------------------------------------------------ +// Prototype of the export function main +//------------------------------------------------------------------------ +#if BEOS +#define main main_plugin +extern "C" __declspec(dllexport) AEffect *main_plugin (audioMasterCallback audioMaster); + +#elif MACX +#define main main_macho +extern "C" AEffect *main_macho (audioMasterCallback audioMaster); + +#else +#define main VSTPluginMain +AEffect *main (audioMasterCallback audioMaster); +#endif + +//------------------------------------------------------------------------ +AEffect *main (audioMasterCallback audioMaster) +{ + // Get VST Version + if (!audioMaster (0, audioMasterVersion, 0, 0, 0, 0)) + return 0; // old version + + // Create the AudioEffect + DrawTestEffect* effect = new DrawTestEffect (audioMaster); + if (!effect) + return 0; + + // Check if no problem in constructor of AGain + if (oome) + { + delete effect; + return 0; + } + return effect->getAeffect (); +} + +#if MAC +#pragma export off +#endif + + +#if WIN32 +#include +void* hInstance; +BOOL WINAPI DllMain (HINSTANCE hInst, DWORD dwReason, LPVOID lpvReserved) +{ + hInstance = hInst; + return 1; +} +#endif diff --git a/vstgui.sf/drawtest/source/pdrawtestview.cpp b/vstgui.sf/drawtest/source/pdrawtestview.cpp new file mode 100644 index 0000000..914aeab --- /dev/null +++ b/vstgui.sf/drawtest/source/pdrawtestview.cpp @@ -0,0 +1,299 @@ +//------------------------------------------------------------------------------------------------------- +// VSTGUI Test View plugin +// Copyright (c) 2004 Arne Scheffler. All rights reserved. +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program 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. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +//------------------------------------------------------------------------------------------------------- + +#ifndef __pdrawtestview__ +#include "pdrawtestview.h" +#endif + +#include + +static long diffX, diffY; + +CDrawTestView::CDrawTestView (const CRect& size) +: CView (size) +, value (0) +{ + diffX = diffY = 0; +} + +static inline void testDrawRect (CDrawContext *pContext, CRect r, int _offset = 0) +{ + int offset = _offset ? _offset : pContext->getLineWidth (); + int i = 0; + while (r.width () > 1 && r.height () > 1) + { + if (i++ % 2) + pContext->setFrameColor (kBlackCColor); + else + pContext->setFrameColor (kRedCColor); + pContext->drawRect (r); + r.inset (offset, offset); + } +} + +static inline void testFillRect (CDrawContext *pContext, CRect r) +{ + int i = 0; + while (r.width () > 1 && r.height () > 1) + { + if (i++ % 2) + pContext->setFillColor (kYellowCColor); + else + pContext->setFillColor (kCyanCColor); + r.inset (1,1); + pContext->fillRect (r); + } +} + +static inline void testDrawLine (CDrawContext *pContext, CRect r, int _offset = 0) +{ + int offset = _offset ? _offset : pContext->getLineWidth (); + int i = 0; + while (r.width () > 1 && r.height () > 1) + { + if (i++ % 2) + pContext->setFrameColor (kBlueCColor); + else + pContext->setFrameColor (kGreenCColor); +// pContext->setClipRect (r); + pContext->moveTo (CPoint (r.left, r.top)); + pContext->lineTo (CPoint (r.right, r.top)); + pContext->lineTo (CPoint (r.right, r.bottom)); + pContext->lineTo (CPoint (r.left, r.bottom)); + pContext->lineTo (CPoint (r.left, r.top)); +// pContext->drawRect (r); + r.inset (offset,offset); + } +} + +static inline void drawVerticalLines (CDrawContext *pContext, CRect r, int _offset = 0) +{ + int offset = _offset ? _offset : pContext->getLineWidth (); + int i = 0; + CPoint p (0, r.top); + while (p.y < r.bottom) + { + if (i++ % 2) + pContext->setFrameColor (kBlueCColor); + else + pContext->setFrameColor (kGreenCColor); + pContext->moveTo (CPoint (r.left, p.y)); + pContext->lineTo (CPoint (r.right, p.y)); + p.offset (0,offset); + } +} + +static inline void clearRect (CDrawContext* pContext, const CRect& r) +{ + pContext->setFillColor (kWhiteCColor); + pContext->fillRect (r); + pContext->setLineWidth (1); + pContext->setFrameColor (kBlackCColor); + pContext->drawRect (r); +} + +static inline void drawLines (CDrawContext* pContext, CRect r, int offset = 2) +{ + CRect size (r); + pContext->setFrameColor (kBlueCColor); + int i; + for (i = 0; i < size.height (); i++) + { + pContext->moveTo (CPoint (r.left, r.top)); + pContext->lineTo (CPoint (r.right, r.bottom)); + r.offset (0, offset); + } + for (i = 0; i < size.height (); i++) + { + size.offset (0, -offset); + pContext->moveTo (CPoint (size.left, size.top)); + pContext->lineTo (CPoint (size.right, size.bottom)); + } +} + + +CColor arcColors[] = { {0,0,255,255}, {255,0,255,255}, {0,255,0,255}, {255,0,0,255}, {255, 255, 0, 255} }; + +#define numArcColors 4 + +static inline void drawArcs (CDrawContext* pContext, CRect r, int offset = 2) +{ + r.inset (diffX, diffY); + int i = 0; + long n = r.height () > r.width () ? r.width () : r.height (); + while (r.width () > 1 && r.height () > 1) + { + pContext->setFrameColor (arcColors[i++]); if (i > numArcColors) i = 0; + pContext->drawArc (r, CPoint (r.left, r.top + r.height () / 2), CPoint (r.left + r.width () / 2, r.bottom)); + pContext->setFrameColor (arcColors[i++]); if (i > numArcColors) i = 0; + pContext->drawArc (r, CPoint (r.left + r.width () / 2, r.bottom), CPoint (r.right, r.top + r.height () / 2)); + pContext->setFrameColor (arcColors[i++]); if (i > numArcColors) i = 0; + pContext->drawArc (r, CPoint (r.right, r.top + r.height () / 2), CPoint (r.left + r.width () / 2, r.top)); + pContext->setFrameColor (arcColors[i++]); if (i > numArcColors) i = 0; + pContext->drawArc (r, CPoint (r.left + r.width () / 2, r.top), CPoint (r.left, r.top + r.height () / 2)); + r.inset (offset, offset); + } +} + +static inline void drawEllipses (CDrawContext* pContext, CRect r, int offset = 2) +{ + r.inset (diffX, diffY); + int i = 0; + long n = r.height () > r.width () ? r.width () : r.height (); + while (r.width () > 1 && r.height () > 1) + { + pContext->setFrameColor (arcColors[i++]); if (i > numArcColors) i = 0; + pContext->drawEllipse (r); + r.inset (offset, offset); + } +} + +#define kMaxValue 10 + +void CDrawTestView::draw (CDrawContext *pContext) +{ + char str[256]; + str[0] = 0; + sprintf (str, "Click for Next"); + CRect r (size); + pContext->setDrawMode (kCopyMode); + clearRect (pContext, r); + r.inset (1, 1); + switch (value) + { + case 0: + { + pContext->setLineWidth (1); + testDrawRect (pContext, r); + break; + } + case 1: + { + pContext->setLineWidth (1); + testDrawLine (pContext, r, 2); + break; + } + case 2: + { + testFillRect (pContext, r); + break; + } + case 3: + { + pContext->setLineWidth (2); + testDrawLine (pContext, r); + break; + } + case 4: + { + pContext->setDrawMode (kAntialias); + pContext->setLineWidth (2); + testDrawLine (pContext, size); + break; + } + case 5: + { + pContext->setDrawMode (kAntialias); + pContext->setLineWidth (1); + testDrawLine (pContext, r); + break; + } + case 6: + { + pContext->setLineWidth (1); + drawLines (pContext, r, 4); + break; + } + case 7: + { + pContext->setDrawMode (kAntialias); + pContext->setLineWidth (1); + drawLines (pContext, r, 4); + break; + } + case 8: + { + pContext->setDrawMode (kAntialias); + pContext->setLineWidth (4); + drawArcs (pContext, r, 8); + break; + } + case 9: + { + pContext->setDrawMode (kAntialias); + pContext->setLineWidth (4); + drawEllipses (pContext, r, 8); + break; + } + case 10: + { + pContext->setLineStyle (kLineOnOffDash); + //pContext->setDrawMode (kAntialias); + pContext->setLineWidth (1); + drawVerticalLines (pContext, r, 3); + break; + } + } + pContext->setFont (kSystemFont); + pContext->setFontColor (kWhiteCColor); + pContext->drawString (str, r); + pContext->setFontColor (kBlackCColor); + r.offset (-1, -1); + pContext->drawString (str, r, true); + pContext->setDrawMode (kCopyMode); + setDirty (false); +} + +void CDrawTestView::mouse (CDrawContext* pContext, CPoint& where, long buttons) +{ + if (buttons & kLButton) + { + if (buttons & kShift) + { + CPoint start (where); + while ((buttons = pContext->getMouseButtons ())) + { + if (pContext->waitDrag ()) + { + CPoint now; + getMouseLocation (pContext, now); + diffX += start.x - now.x; + diffY += start.y - now.y; + start = now; + setDirty (true); + if (pParentFrame) pParentFrame->doIdleStuff (); + } + } + } + else + { + value++; + if (value > kMaxValue) + value = 0; + } + } + else if (buttons & kRButton) + { + value--; + if (value < 0) + value = kMaxValue; + } + setDirty (true); +} + diff --git a/vstgui.sf/drawtest/source/pdrawtestview.h b/vstgui.sf/drawtest/source/pdrawtestview.h new file mode 100644 index 0000000..4861819 --- /dev/null +++ b/vstgui.sf/drawtest/source/pdrawtestview.h @@ -0,0 +1,44 @@ +//------------------------------------------------------------------------------------------------------- +// VSTGUI Test View plugin +// Copyright (c) 2004 Arne Scheffler. All rights reserved. +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program 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. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +//------------------------------------------------------------------------------------------------------- + +#ifndef __pdrawtestview__ +#define __pdrawtestview__ + +#ifndef __vstgui__ +#include "vstgui.h" +#endif + +BEGIN_NAMESPACE_VSTGUI + +class CDrawTestView : public CView +{ +public: + CDrawTestView (const CRect& size); + + virtual void draw (CDrawContext *pContext); + + virtual void mouse (CDrawContext* pContext, CPoint& where, long buttons); + +protected: + int value; +}; + +END_NAMESPACE_VSTGUI + +#endif \ No newline at end of file diff --git a/vstgui.sf/drawtest/source/pprimitivesviews.cpp b/vstgui.sf/drawtest/source/pprimitivesviews.cpp new file mode 100644 index 0000000..e0e668c --- /dev/null +++ b/vstgui.sf/drawtest/source/pprimitivesviews.cpp @@ -0,0 +1,245 @@ +#ifndef __pprimitivesviews__ +#include "pprimitivesviews.h" +#endif + +#include + +const CColor kBlueAlphaCColor = { 0, 0, 255, 200}; +const CColor kRedAlphaCColor = { 255, 0, 0, 200}; +const CColor kYellowAlphaCColor = { 255, 255, 0, 200}; +const CColor kGreenAlphaCColor = { 0, 255, 0, 200}; +const CColor kMagentaAlphaCColor= { 255, 0, 255, 200}; + +PMiscView::PMiscView (const CRect& size) +: CView (size), xOffset (0), yOffset (0) +{ + setTransparency (true); +} + +void PMiscView::mouse (CDrawContext* pContext, CPoint &where, long buttons) +{ + if (pContext->waitDrag ()) + { + while (pContext->getMouseButtons () == kLButton) + { + CPoint cl; + getMouseLocation (pContext, cl); + if (cl != where) + { + xOffset -= (where.x - cl.x); + yOffset -= (where.y - cl.y); + where = cl; + setDirty (true); + } + getFrame ()->doIdleStuff (); + } + } +} + +static inline void offsetPoints (CPoint* points, long numPoints, CPoint offset) +{ + for (long i = 0; i < numPoints; i++) + points[i].offset (offset.x, offset.y); +} + +void PMiscView::draw (CDrawContext* pContext) +{ + drawGrid (pContext); + CPoint polyPoints[10]; + polyPoints[0] = CPoint (50,0); + polyPoints[1] = CPoint (100,50); + polyPoints[2] = CPoint (50,100); + polyPoints[3] = CPoint (0,50); + polyPoints[4] = CPoint (50,0); + offsetPoints (polyPoints, 5, CPoint (size.left + xOffset, size.top + yOffset)); + pContext->setDrawMode (kAntialias); + pContext->setFrameColor (kBlackCColor); + pContext->drawPolygon (polyPoints, 5, kDrawStroked); + offsetPoints (polyPoints, 5, CPoint (50, 0)); + pContext->setFillColor (kBlueAlphaCColor); + pContext->drawPolygon (polyPoints, 5, kDrawFilled); + offsetPoints (polyPoints, 5, CPoint (50, 0)); + pContext->setFillColor (kRedAlphaCColor); + pContext->drawPolygon (polyPoints, 5, kDrawFilledAndStroked); + + CRect ellipseRect (200, 0, 300, 100); + ellipseRect.offset (size.left + xOffset, size.top + yOffset); + pContext->drawEllipse (ellipseRect, kDrawStroked); + ellipseRect.offset (50, 0); + pContext->setFillColor (kBlueAlphaCColor); + pContext->drawEllipse (ellipseRect, kDrawFilled); + ellipseRect.offset (50, 0); + pContext->setFillColor (kRedAlphaCColor); + pContext->drawEllipse (ellipseRect, kDrawFilledAndStroked); + + setDirty (false); +} + +void PMiscView::drawGrid (CDrawContext* pContext) +{ + static long gridOffset = 10; + long x = size.left; + long y = size.top; + long numHLines = size.getWidth () / gridOffset + 1; + long numVLines = size.getHeight () / gridOffset + 1; + CPoint* points = new CPoint [numHLines*2 + numVLines*2]; + long i; + for (i = 0; i < numHLines*2; i+=2, x += gridOffset) + { + points[i] = CPoint (x, size.top); + points[i+1] = CPoint (x, size.bottom); + } + for (i = 0; i < numVLines*2; i+=2, y += gridOffset) + { + points[numHLines*2+i] = CPoint (size.left, y); + points[numHLines*2+i+1] = CPoint (size.right, y); + } + pContext->setDrawMode (kCopyMode); + pContext->setFrameColor (kGreyCColor); + pContext->drawLines (points, numHLines+numVLines); + delete [] points; +} + +PLinesView::PLinesView (const CRect& size) +: CView (size) +{ + setTransparency (true); +} + +void PLinesView::draw (CDrawContext *context) +{ + int i; + char text[512]; + text[0] = 0; + context->setFont (kNormalFontSmall); + context->setFrameColor (kWhiteCColor); + context->setFontColor (kBlackCColor); + CRect r (size); + r.left += 10; + r.right -= 2; + r.setHeight (12); + context->drawString ("Normal Lines with different line widths", r); + context->setLineStyle (kLineSolid); + r.offset (0, 12); + for (i = 1; i <= 5; i++) + { + context->setLineWidth (i); + CPoint p (r.left, r.bottom - r.getHeight () / 2); + context->moveTo (p); + p.x = r.right; + context->lineTo (p); + CRect textSize (r.left-10, r.top, r.left, r.bottom); + sprintf (text, "%d", i); + context->drawString (text, textSize); + r.offset (0, 12); + } + context->drawString ("Dotted Lines with different line widths", r); + context->setLineStyle (kLineOnOffDash); + r.offset (0, 12); + for (i = 1; i <= 5; i++) + { + context->setLineWidth (i); + CPoint p (r.left, r.bottom - r.getHeight () / 2); + context->moveTo (p); + p.x = r.right; + context->lineTo (p); + CRect textSize (r.left-10, r.top, r.left, r.bottom); + sprintf (text, "%d", i); + context->drawString (text, textSize); + r.offset (0, 12); + } + context->drawString ("Normal Lines Antialiased with different line widths", r); + context->setLineStyle (kLineSolid); + context->setDrawMode (kAntialias); + r.offset (0, 12); + for (i = 1; i <= 5; i++) + { + context->setLineWidth (i); + CPoint p (r.left, r.bottom - r.getHeight () / 2); + context->moveTo (p); + p.x = r.right; + context->lineTo (p); + CRect textSize (r.left-10, r.top, r.left, r.bottom); + sprintf (text, "%d", i); + context->drawString (text, textSize); + r.offset (0, 12); + } + context->drawString ("Dotted Lines Antialiased with different line widths", r); + context->setLineStyle (kLineOnOffDash); + r.offset (0, 12); + for (i = 1; i <= 5; i++) + { + context->setLineWidth (i); + CPoint p (r.left, r.bottom - r.getHeight () / 2); + context->moveTo (p); + p.x = r.right; + context->lineTo (p); + CRect textSize (r.left-10, r.top, r.left, r.bottom); + sprintf (text, "%d", i); + context->drawString (text, textSize); + r.offset (0, 12); + } + context->setLineStyle (kLineSolid); + context->setLineWidth (1); + context->setDrawMode (kCopyMode); + + setDirty (false); +} + +PRectsView::PRectsView (const CRect& size) +: CView (size) +{ + setTransparency (true); +} + +void PRectsView::draw (CDrawContext *context) +{ + char text[512]; + text[0] = 0; + context->setFont (kNormalFontSmall); + context->setFrameColor (kRedCColor); + context->setFontColor (kBlackCColor); + CRect r (size); + context->drawRect (r); +// r.inset (1,1); + context->setFillColor (kWhiteCColor); + context->drawRect (r,kDrawFilled); + r.inset (2, 2); + context->setDrawMode (kAntialias); + context->drawRect (r); + context->setDrawMode (kCopyMode); + r.inset (5, 5); + CRect r1 (r); + r1.setHeight (r1.getHeight () / 2); + r1.setWidth (r1.getWidth () / 2); + CRect r2 (r1); + r2.inset (1, 1); + context->setFillColor (kBlueAlphaCColor); + context->drawRect (r2, kDrawFilledAndStroked); + r2 = r1; + r2.offset (r2.getWidth (), 0); + r2.inset (1,1); + context->setFillColor (kYellowAlphaCColor); + context->drawRect (r2, kDrawFilledAndStroked); + r2 = r1; + r2.offset (0, r2.getHeight ()); + r2.inset (1,1); + context->setFillColor (kGreenAlphaCColor); + context->drawRect (r2, kDrawFilledAndStroked); + r2 = r1; + r2.offset (r2.getWidth (), r2.getHeight ()); + r2.inset (1,1); + context->setFillColor (kMagentaAlphaCColor); + context->drawRect (r2, kDrawFilledAndStroked); + + r2 = r; + r2.inset (r2.getWidth () / 4, r2.getHeight () / 4); + CColor alphaColor = {0, 0, 0, 130}; + context->setFillColor (alphaColor); + context->fillRect (r2); + r2.inset (r2.getWidth () / 4, r2.getHeight () / 4); + CColor alpha2Color = {255, 255, 255, 130}; + context->setFillColor (alpha2Color); + context->fillRect (r2); + setDirty (false); +} diff --git a/vstgui.sf/drawtest/source/pprimitivesviews.h b/vstgui.sf/drawtest/source/pprimitivesviews.h new file mode 100644 index 0000000..90c339a --- /dev/null +++ b/vstgui.sf/drawtest/source/pprimitivesviews.h @@ -0,0 +1,37 @@ +#ifndef __pprimitivesviews__ +#define __pprimitivesviews__ + +#ifndef __vstgui__ +#include "vstgui.h" +#endif + +class PLinesView : public CView +{ +public: + PLinesView (const CRect& size); + + virtual void draw (CDrawContext *pContext); +}; + +class PRectsView : public CView +{ +public: + PRectsView (const CRect& size); + + virtual void draw (CDrawContext *pContext); +}; + +class PMiscView : public CView +{ +public: + PMiscView (const CRect& size); + + virtual void draw (CDrawContext* pContext); + virtual void mouse (CDrawContext* pContext, CPoint &where, long buttons = -1); +protected: + void drawGrid (CDrawContext* pContext); + long xOffset; + long yOffset; +}; + +#endif diff --git a/vstgui.sf/drawtest/win.vc6/drawtest.dsp b/vstgui.sf/drawtest/win.vc6/drawtest.dsp new file mode 100644 index 0000000..07ca6eb --- /dev/null +++ b/vstgui.sf/drawtest/win.vc6/drawtest.dsp @@ -0,0 +1,363 @@ +# Microsoft Developer Studio Project File - Name="drawtest" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=drawtest - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "drawtest.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "drawtest.mak" CFG="drawtest - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "drawtest - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "drawtest - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "drawtest - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "DRAWTEST_EXPORTS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\.." /I "..\..\vstgui" /I "..\..\..\public.sdk\source\vst2.x" /I "..\..\libpng" /I "..\..\zlib" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "DRAWTEST_EXPORTS" /D USE_LIBPNG=1 /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x407 /d "NDEBUG" +# ADD RSC /l 0x407 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"../../../public.sdk/samples/vst2.x/win.vc6/Release/drawtest.dll" + +!ELSEIF "$(CFG)" == "drawtest - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "DRAWTEST_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\..\.." /I "..\..\vstgui" /I "..\..\..\public.sdk\source\vst2.x" /I "..\..\libpng" /I "..\..\zlib" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "DRAWTEST_EXPORTS" /D USE_LIBPNG=1 /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x407 /d "_DEBUG" +# ADD RSC /l 0x407 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"../../../public.sdk/samples/vst2.x/win.vc6/Debug/drawtest.dll" /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "drawtest - Win32 Release" +# Name "drawtest - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Group "libpng" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\libpng\png.c +# End Source File +# Begin Source File + +SOURCE=..\..\libpng\png.h +# End Source File +# Begin Source File + +SOURCE=..\..\libpng\pngconf.h +# End Source File +# Begin Source File + +SOURCE=..\..\libpng\pngerror.c +# End Source File +# Begin Source File + +SOURCE=..\..\libpng\pnggccrd.c +# End Source File +# Begin Source File + +SOURCE=..\..\libpng\pngget.c +# End Source File +# Begin Source File + +SOURCE=..\..\libpng\pngmem.c +# End Source File +# Begin Source File + +SOURCE=..\..\libpng\pngpread.c +# End Source File +# Begin Source File + +SOURCE=..\..\libpng\pngread.c +# End Source File +# Begin Source File + +SOURCE=..\..\libpng\pngrio.c +# End Source File +# Begin Source File + +SOURCE=..\..\libpng\pngrtran.c +# End Source File +# Begin Source File + +SOURCE=..\..\libpng\pngrutil.c +# End Source File +# Begin Source File + +SOURCE=..\..\libpng\pngset.c +# End Source File +# Begin Source File + +SOURCE=..\..\libpng\pngtrans.c +# End Source File +# Begin Source File + +SOURCE=..\..\libpng\pngvcrd.c +# End Source File +# Begin Source File + +SOURCE=..\..\libpng\pngwio.c +# End Source File +# Begin Source File + +SOURCE=..\..\libpng\pngwrite.c +# End Source File +# Begin Source File + +SOURCE=..\..\libpng\pngwtran.c +# End Source File +# Begin Source File + +SOURCE=..\..\libpng\pngwutil.c +# End Source File +# End Group +# Begin Group "zlib" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\zlib\adler32.c +# End Source File +# Begin Source File + +SOURCE=..\..\zlib\compress.c +# End Source File +# Begin Source File + +SOURCE=..\..\zlib\crc32.c +# End Source File +# Begin Source File + +SOURCE=..\..\zlib\deflate.c +# End Source File +# Begin Source File + +SOURCE=..\..\zlib\gzio.c +# End Source File +# Begin Source File + +SOURCE=..\..\zlib\infback.c +# End Source File +# Begin Source File + +SOURCE=..\..\zlib\inffast.c +# End Source File +# Begin Source File + +SOURCE=..\..\zlib\inflate.c +# End Source File +# Begin Source File + +SOURCE=..\..\zlib\inftrees.c +# End Source File +# Begin Source File + +SOURCE=..\..\zlib\trees.c +# End Source File +# Begin Source File + +SOURCE=..\..\zlib\uncompr.c +# End Source File +# Begin Source File + +SOURCE=..\..\zlib\zlib.h +# End Source File +# Begin Source File + +SOURCE=..\..\zlib\zutil.c +# End Source File +# End Group +# Begin Group "vst2.x" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\PUBLIC.SDK\source\vst2.x\aeffeditor.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\public.sdk\source\vst2.x\audioeffect.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\PUBLIC.SDK\source\vst2.x\audioeffect.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\public.sdk\source\vst2.x\audioeffectx.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\PUBLIC.SDK\source\vst2.x\audioeffectx.h +# End Source File +# End Group +# Begin Group "vstgui" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\vstgui\aeffguieditor.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\vstgui\aeffguieditor.h +# End Source File +# Begin Source File + +SOURCE=..\..\vstgui\cfileselector.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\vstgui\cfileselector.h +# End Source File +# Begin Source File + +SOURCE=..\..\vstgui\cscrollview.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\vstgui\cscrollview.h +# End Source File +# Begin Source File + +SOURCE=..\..\vstgui\ctabview.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\vstgui\ctabview.h +# End Source File +# Begin Source File + +SOURCE=..\..\vstgui\vstcontrols.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\vstgui\vstcontrols.h +# End Source File +# Begin Source File + +SOURCE=..\..\vstgui\vstgui.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\vstgui\vstgui.h +# End Source File +# Begin Source File + +SOURCE=..\..\vstgui\vstkeycode.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\source\controlsgui.cpp +# End Source File +# Begin Source File + +SOURCE=..\source\controlsgui.h +# End Source File +# Begin Source File + +SOURCE=..\source\pdrawtesteditor.cpp +# End Source File +# Begin Source File + +SOURCE=..\source\pdrawtesteditor.h +# End Source File +# Begin Source File + +SOURCE=..\source\pdrawtesteffect.cpp +# End Source File +# Begin Source File + +SOURCE=..\source\pdrawtesteffect.h +# End Source File +# Begin Source File + +SOURCE=..\source\pdrawtestmain.cpp +# End Source File +# Begin Source File + +SOURCE=..\source\pdrawtestview.cpp +# End Source File +# Begin Source File + +SOURCE=..\source\pdrawtestview.h +# End Source File +# Begin Source File + +SOURCE=..\source\pprimitivesviews.cpp +# End Source File +# Begin Source File + +SOURCE=..\source\pprimitivesviews.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\win\drawtest.def +# End Source File +# Begin Source File + +SOURCE=..\win\drawtest.rc +# End Source File +# End Target +# End Project diff --git a/vstgui.sf/drawtest/win.vc6/drawtest.dsw b/vstgui.sf/drawtest/win.vc6/drawtest.dsw new file mode 100644 index 0000000..b467b25 --- /dev/null +++ b/vstgui.sf/drawtest/win.vc6/drawtest.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "drawtest"=.\drawtest.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/vstgui.sf/drawtest/win/drawtest.def b/vstgui.sf/drawtest/win/drawtest.def new file mode 100644 index 0000000..13f74e2 --- /dev/null +++ b/vstgui.sf/drawtest/win/drawtest.def @@ -0,0 +1,3 @@ +EXPORTS + VSTPluginMain + main=VSTPluginMain diff --git a/vstgui.sf/drawtest/win/drawtest.rc b/vstgui.sf/drawtest/win/drawtest.rc new file mode 100644 index 0000000..ac4ad95 --- /dev/null +++ b/vstgui.sf/drawtest/win/drawtest.rc @@ -0,0 +1,32 @@ +#define APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// +// Data +// + +1 PNG "../resources/bmp00001.png" +100 PNG "../resources/bmp00100.png" +1000 PNG "../resources/bmp01000.png" + +///////////////////////////////////////////////////////////////////////////// +// +// Bitmap +// + +10001 BITMAP DISCARDABLE "../resources/bmp10001.bmp" +10002 BITMAP DISCARDABLE "../resources/bmp10002.bmp" +10003 BITMAP DISCARDABLE "../resources/bmp10003.bmp" +10004 BITMAP DISCARDABLE "../resources/bmp10004.bmp" +10005 BITMAP DISCARDABLE "../resources/bmp10005.bmp" +10006 BITMAP DISCARDABLE "../resources/bmp10006.bmp" +10007 BITMAP DISCARDABLE "../resources/bmp10007.bmp" +10008 BITMAP DISCARDABLE "../resources/bmp10008.bmp" +10009 BITMAP DISCARDABLE "../resources/bmp10009.bmp" +10010 BITMAP DISCARDABLE "../resources/bmp10010.bmp" +10011 BITMAP DISCARDABLE "../resources/bmp10011.bmp" +10012 BITMAP DISCARDABLE "../resources/bmp10012.bmp" +10013 BITMAP DISCARDABLE "../resources/bmp10013.bmp" +10014 BITMAP DISCARDABLE "../resources/bmp10014.bmp" +10015 BITMAP DISCARDABLE "../resources/bmp10015.bmp" +10016 BITMAP DISCARDABLE "../resources/bmp10016.bmp" diff --git a/vstgui.sf/drawtest/win/drawtest.vcproj b/vstgui.sf/drawtest/win/drawtest.vcproj new file mode 100644 index 0000000..61445d0 --- /dev/null +++ b/vstgui.sf/drawtest/win/drawtest.vcproj @@ -0,0 +1,608 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vstgui.sf/vstgui/Changelog b/vstgui.sf/vstgui/Changelog new file mode 100644 index 0000000..6002673 --- /dev/null +++ b/vstgui.sf/vstgui/Changelog @@ -0,0 +1,360 @@ +2006-02-08 arne + + * fix CSplashScreen view + * fix CTextEdit + +2005-10-03 arne + + * bugfix: CTabView does not release its subviews + * CControl::getTag() is virtual now. + +2005-08-12 arne + + * initial support for X/Y mouse wheel (currently only macosx, don't know how ms windows handles this) + +2005-07-29 arne + + * bugfix: CDrawContext doesn't remember font style and does not change the font if only the font style changed. + * quartz: keyboard event handling works now, so that hosts will get all key events we don't handle. + +2005-07-22 arne + + * quartz: little optimization in CDrawContext::beginCGContext + * quartz: cleaned up the event handler + * stop advancing focus if the last focusable control has focus. + +2005-07-22 arne + + * fixed a regression bug in AEffGUIEditor, where idle() was not called + * only CKnob and CSlider want focus, as they are the only controls handling key strokes. + +2005-07-14 arne + + * moved CFileSelector in its own file + * quartz: fixed some bugs with COffscreenContext + +2005-07-09 arne + + * the CView::draw method now draws the background image if it has one. + * new CFrame::updatesDisabled method to lock idle updates. + * bug fix for overlapping control drawing. + * add a style to COnOffButton so that the listener can be called before doIdleStuff is called. + +2005-07-02 arne + + * windows: CFrame uses a backbuffer now when USE_ALPHA_BLEND is on. This fixes a performance issue with some graphic cards. + The drawback at the moment is, that drawing can only occur when the CFrame calls the views to draw. You can not draw anymore + by creating your own drawcontext. + +2005-06-25 arne + + * adding keyboard focus navigation + * add bool bWantsFocus to CView. If this is set the view is included in keyboard focus navigation. + +2005-06-24 arne + + * merge newframe back to main + * fixed some gcc warnings + +2005-05-13 arne + + * quartz: if the CFrame is embedded into a window composited window, the setSize(..) method does not resize the window anymore. + * quartz: some window compositing fixes + * the tabs in a CTabView can be aligned + * mac os x: quartz will be used per default now + +2005-05-05 arne + + * added CBitmap::setNoAlpha(..) and CBitmap::getNoAlpha(). You can set this for PNG images which don't have an alpha channel to speed up drawing on windows. + * quartz: some window compositing fixes + +2005-04-30 arne + + * windows: with libpng, when a bmp image was loaded, don't use AlphaBlend instead use old BitBlt. + * quartz: non png images can be drawn with transparent color again. + +2005-04-29 arne + + * added CTextLabel + * mac: the CFrame can be placed into HIScrollViews + * mac: using static objects for Quicktime GraphicsImporter to speed up loading of images + * mac: using CGImageCreateImageInRect on 10.4 for faster drawing of clipped images + +2005-04-11 arne + + * removed CFrame::isSomethingDirty + * added a check in CViewContainer::isDirty if the subview is inside the view container size + * fix for overlapping views not drawn everytime + * quartz: fix some drawing bugs + +2005-03-25 arne + + * quartz: fix drawing of transparent bitmaps when OLD_TRANSPARENT_BITMAP_MODE is defined + * fix a bug for quickdraw's CDrawContext::setClipRect + * quartz: on composited windows, the ctextedit creates a native UnicodeTextControl instead of an MLTE Object + * a try to fix redraw problems if the system sends a redraw and some views won't get updated completly + * changed the implementation of CView Attributes. Documentation removed. Will be updated before the 3.0 release. + +2005-03-05 arne + + * fixed a memory leak on windows with IDropTarget (thanks bigtick) + * add automatic initialization of the xpos and ypos vars in the CSpecialDigit constructor (thanks bigtick) + +2005-02-18 arne + + * new coordinate typedef CCoord, so that we have the possibility to change the coordinate system to floating point + * small bugfix in CDrawDevice::drawRect + +2005-01-04 arne + + * the following CDrawContext methods have a new optional parameter "CDrawStyle": drawPolygon, drawRect, drawArc, drawEllipse. + the draw style is either kDrawStroked, kDrawFilled or kDrawFilledAndStroked. + * added another cursor : kCursorHand + * fixed some problems compiling the code on microsoft windows. + * fixed some problems with alphablending bitmaps on windows. + * added example plugguieditor.cpp file to be used for non VST usage. (There's an example AU plug in the drawtest module) + * added CTabView class. + * changed constructor of AEffGUIEditor to take a void instead of an AudioEffect pointer, so that subclassing + either from PluginGUIEditor or AEffGUIEditor is as simple as possible. + +2004-11-29 arne + + * started to clean up the code (check your code, many methods in CView, CViewContainer & CFrame are declared const now) + * started to make a better documentation (see the headers), more to come + * renamed pEditView in CFrame to pFocusView as well as setEditView to setFocusView and getEditView to getFocusView ;-) + * the following methods in CView are now deprecated : setParentView, setFrame, getFrameTopLeftPos + * removed old windows drag&drop code + * use generic rgb color space for quartz code + * fix an issue with quartz and OLD_TRANSPARENT_BITMAP_MODE when the transparency color changed + * some drawing optimizations + * new method in CDrawContext to draw multiple lines at once : CDrawContext::drawLines () + * if you call beginEdit in any CControl class the control will be the focus view now + +2004-10-03 arne + + * added generic attributes interface to the CView class (see CViewAttributes.rtf) + * added CFrame::setPosition to change the location of the view inside it's parent view (mac quartz only at the moment) + * some mac quartz bugfixes + * some bugfixes for CScrollView + * added localToFrame and frameToLocal methods to CView + * bugfix for CViewContainer::getCurrentView (). Didn't work for nested containers (W.Franke) + * quartz: CFrame::getSize returns the size of the mac control now instead of the window + * CViewContainer::getViewAt changed so that you can get the deepest view at that position + * CControls set now the editView of the frame on beginEdit and set it to zero at endEdit (W.Franke) + +2004-08-30 arne + + **** bump version to 3.0 ! + + * change CView::getParent to CView::getFrame + * correct implementation of beginEdit and endEdit in all CControls, you should change your code of custom controls from getParent->beginEdit (tag) to beginEdit () ;-) + * new drawArc method in CDrawContext which takes angels as parameters + * added some kind of runtime type information. + * mac: changed the kInfinitySymbol to be 'oo' as the mac character is not available in Helvetica + * added two new cursor types (kCursorCopy & kCursorNotAllowed). (Currently only for Mac OS X, Windows will follow) + * complete new drag & drop implementation. Now all views can react if something is dragged over it. + * some fixes to the update methods when drawing with offsets and COffscreenContexts. + * mac: the macro 'CARBON' is changed to 'TARGET_API_MAC_CARBON' as this is what the Mac OS itself uses. + * mac: compiling with VSTGUI as namespace works now + * mac: use current API for creating menus. (fixes some bugs with the old implementation, where you could not create menuitems like "-3db") + +2004-08-25 arne + + * mac: change COptionMenuScheme implementation to be optional as it only works for OSX Version >= 10.3 (macro: MAC_ENABLE_MENU_SCHEME) + +2004-08-15 arne + + * added CView::acceptDrop. On Mac OS this changes the mouse cursor if a view accepts a drop. For Windows there is currently no action. But it should follow. And maybe it will change so that a real tracking is possible. + * with the new update mechanism the modal view is now updated first in CFrame::update, to make sure it will be drawn in all circumstances, even if it is transparent and a view below it is dirty. + +2004-08-06 arne + + * quartz: - cache the CGImageRef, so that it is not created every time the CBitmap is drawn. (Performace will be much better with the next os release) + - remove the SetPort/GetPort stuff in AEffGUIEditor. It is not needed anymore. + +2004-07-30 arne + + * better streamlined mechanism for CViewContainer::update (you can turn this off, if it does not work for you in vstgui.cpp with the NEW_UPDATE_MECHANISM macro at the top) + this is not tested with Containers using offscreens (but should work). This should fix the problem that non-transparent containers were not really nestable. + * quartz: removed the focus handlers for now as most hosts does not set the focus back on their windows if someone clicks into it. This way they get all key downs again. + * added setListener() to CControl + +2004-07-12 arne + + * quartz: fix a bug in COffscreenContext::copyTo if the offsetScreen point of the context is not at 0:0 + +2004-06-28 arne + + * quartz: fix clipping issues + * fix a bug in CViewContainer's update method if the container is transparent and embedded into another CViewContainer + +2004-06-26 arne + + * the modal view is now added to the frame like all other views. + * added a reference counting class. CView, CBitmap and CDrawContext are subclasses of it. + * clip handling is more consistent now. + * some quartz changes: - first try to implement CDrawDevice::drawArc (not yet finished) + - COffscreenContext is now more implemented, copyTo works in most situations + - native mac controls can now be embedded into the frame, but it does only work correct with compositing enabled windows + +2004-06-20 arne + + * AEffGUIEditor::draw will now draw only the rectangle it should, or as in the past the whole editor if no rect is given. + * windows: 64 bit compatibility + +2004-06-12 arne + + * CFrame is now subclassed from CViewContainer (thanks Wolfram Franke for the hard work) + - One thing to check: CFrame::removeView was declared with (CView *pView, const bool &withForget = false), this has changed to + (CView *pView, const bool &withForget = true). So if you have somewhere in your Code frame->removeView (view) you must change it + to frame->removeView (view, false). + * mac: FDebugPrint implementation for Classic and Mac OS X + * changed the CColor unused member variable to be alpha all over the place (no more MS C++ internal compiler error) + * macosx: the CFileSelector can now be used to get unix path strings. If vstFileSelect->future[0] is 1 the internal implementation will + return unix paths and set vstFileSelect->future[0] to 0. If the host supports openFileSelector vstFileSelect->future[0] will + be 1 and the results are in the old FSSpec format. + * the CFileSelector is now usable when PLUGGUI is set. + * using clipping all over the place + * quartz: rechecked the whole graphics drawing functions to work as expected + +2004-05-31 arne + + * mac: COptionMenuScheme works now with QUARTZ (Mac OS X 10.3 and above) + * mac: QUARTZ implementation of CDrawContext::drawEllipse and fillEllipse + * added a global COptionMenuScheme variable, if set all menues will use it + * fix a possible crash in COptionMenu::mouse (thanks Wolfram Franke) + +2004-05-22 arne + + * moved pBackgroundBitmap and its accessors into CView from CViewContainer, CFrame and CControl as suggested by Wolfram Franke + * mac: added implementation for quartz CBitmap::CBitmap (CFrame &frame, long width, long height) + * windows: prevent a free memory read in UDropTarget::Release (submitted by Justin Caldicott) + +2004-04-27 arne + + * changed CControlListener and added a method to intercept modifier clicks so the listener can decide if the control should handle + this click. This makes it easy to implement some kind of 'MIDI Learn' functionality. + Note: you need to implement this new method in your CControlListener, otherwise there will be compile errors. If you don't want + this feature, just return 0. + * changed all controls to support the new CControlListener method. + * mac: bugfix for CTextEdit::takeFocus under quartz. + * mac: changed fonts from arial to helvetica as on some OS X installations arial is not installed. + +2004-04-17 arne + + * windows: support for alpha blended images like it is on Mac OS X with quartz + note: this implementation uses libpng (makro is USE_LIBPNG) + * CDrawContext::setClipRect uses the offset now + * COptionMenu::getSubMenu added + * mac: fixed some quartz drawing stuff + * mac: fix for CFrame::getPosition with quartz + * mac: removed CARBON_EVENTS macro as it only works with QUARTZ + +2004-04-11 arne + + * CViewContainer should be completely nestable now + * mac: implemented the quartz offscreencontext for existing bitmaps + +2004-03-23 arne + + * CTextEdit use the CParamDisplay::stringConvert functions to draw text + * Fix of possible crash in CFileSelector::run + * CFM Carbon plugs can now draw text antialiased even if the host does not support it + (Thanks to Wolfram Franke for this stuff) + + * mac: added waitDoubleClick and waitDrag with carbon events + +2004-03-19 arne + + * add CView::getFrameTopLeftPos method to get the topleft position of the view relative to the frame + * call AEffGUIEditor instead of AudioEffectX for beginEdit and endEdit + * mac: small changes to allow to use a CDrawContext on every Window even those without a CFrame + +2004-03-01 arne + + * mac : fix for RGBA Bitmaps on Displays with less than million colors + +2004-02-16 arne + + * mac : fix compile error in CDrawContext::getMouseLocation when compiling for CFM plugs + +2004-02-06 arne + + * mac : focus fix + +2004-02-01 arne + + * add empty CBitmap constructor for easy subclassing + * mac : add beginEdit/endEndit hook for AudioUnits + * windows : fix for CFrame::setSize for Orion submitted by Ben Allison + +2004-01-02 arne + + * mac: corrected code for right mouse click with carbon events + +2003-12-15 arne + + * fix a typo in COptionMenu::mouse + * mac: fix a typo in CDrawContext::setLineStyle + * mac: fix for CDrawContext::getMouseLocation problem with DP 4 + * mac: on compositing windows the control is now added to the kHIViewWindowContentID if it exists. + * mac: should compile on Mac OS X 10.2 again if CARBON_EVENTS are defined. + +2003-12-05 arne + + * fix compile problem of COptionMenu::takeFocus on Windows + +2003-12-04 arne + + * fix for nested CViewContainers + * Mac: fix for using vstgui for other than VST ;-) + +2003-11-15 arne + + *************** + *** WARNING *** + *************** + existing code need to be changed !!! + You need to change your CView::mouse methods to add the buttons parameter and your calls to CDrawContext::getMouseLocation inside CViews should be changed to call CView::getMouseLocation instead. + *************** + + * fixed the CViewContainer stuff with Quartz. + NOTE : I had to change the way how the view can get the current mouse location. It has to ask itself now as the CView class can + check if it is embedded into a CViewContainer which the CDrawDevice couldn't. + * all mouse methods get another parameter: long buttons + + Mac Only: + * changed the drag and drop stuff for Carbon Events + * With CARBON_EVENTS == 1, CFrame acts now like a Mac Toolbox Control. It works even on compositing enabled windows and on non left-top positions. + +2003-11-12 arne + + * Bugfix for CFrame::setSize for hosts which support "audioMasterSizeWindow" submitted by Justus Henkmann (TC Works) + +2003-10-10 arne + + * Bugfix for COptionMenu::addEntry submitted by Nicolas Bronnec + +2003-09-18 arne + + * incorporated Marc Poirier's CTextEdit fixes + * quartz: bugfix in drawString, set cliprect so that the text won't draw outside + * carbon events: some code cleanup + +2003-09-17 arne + + * Added Carbon Events handling (#define CARBON_EVENTS 1) + * Implemented QUARTZ drawing. (#define QUARTZ 1) + * CSlider doesn't use a COffscreenContext for drawing on MacOSX anymore + + Quartz Notes: + - Not all graphic operations we use in vstgui have an equivalent in quartz. + Currently unsupported are : + - all drawing modes except kCopyMode + - getPoint () + _ floodFill () + - copy from Screen to Offscreen + + - to support alpha drawing on all operations I have made changes to CColor. The 4th variable is now the alpha value where 255 is opaque and 0 is transparent. + - transparent bitmap drawing is now handled with the alpha value of the bitmap, if you want the old behaviour turn on OLD_TRANSPARENT_BITMAP_MODE + - because of some strange things with CViewContainers while doing mouse downs the drawcontext has an offset which results in wrong drawing. This needs to be fixed !!! diff --git a/vstgui.sf/vstgui/Documentation/Migrating from 2.3.rtf b/vstgui.sf/vstgui/Documentation/Migrating from 2.3.rtf new file mode 100644 index 0000000..80e93f3 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/Migrating from 2.3.rtf @@ -0,0 +1,82 @@ +{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf330 +{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica;} +{\colortbl;\red255\green255\blue255;\red255\green0\blue24;} +\paperw11900\paperh16840\margl1440\margr1440\vieww22140\viewh20220\viewkind0 +\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural + +\f0\b\fs38 \cf0 \ul \ulc0 Migrating from VSTGUI 2.3 to VSTGUI 3.0\ + +\f1\b0\fs22 \ulnone \ + +\f0\b\fs26 \ul Things you need to change in your code:\ + +\f1\b0\fs22 \ulnone \ +\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\li560\fi-560\ql\qnatural + +\fs24 \cf0 - CView::mouse(..) has a new parameter, you need to add it to your own view classes\ +\ +- CView::hitTest() now uses mouseableArea instead of size\ +\ +- CColor constants now need an opacity value (255 == opaque, 0 = transparent)\ + +\fs22 \ +\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\li560\fi-560\ql\qnatural + +\fs24 \cf0 - CFrame::removeView (CView *pView, const bool &withForget = true) The second parameter (withForget) has changed its default parameter.\ +\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural +\cf0 \ +- CDrawContext::getMouseLocation (CPoint &point)\ +\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\li560\fi-560\ql\qnatural +\cf0 This call will always report the global frame coordinate of the mouse. If you need the mouse coordinates relative to a view, use view->getMouseLocation (context, point)\ +\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural +\cf0 \ +- The following CView methods are deprecated :\ +\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\li560\fi-560\ql\qnatural +\cf0 virtual void setParentView (CView *pParentView);\ + virtual void setFrame (CFrame *pParent);\ + virtual void getFrameTopLeftPos (CPoint& topLeft) const;\ +\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural +\cf0 \ +\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\li140\fi-140\ql\qnatural +\cf0 - Don't call frame->beginEdit(..) and frame->endEdit(..) in your subclassed controls. Use the CControl methods beginEdit, endEdit.\ +\ +- Nearly all getter methods have changed to be const. Check all your subclasses, so that your methods don't hide the inherited virtual functions.\ +\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\li140\fi20\ql\qnatural +\cf0 This may be the most important methods from CView and CControl\ +- CView::checkUpdate ()\ +- CView::isDirty ()\ +- CControl::getValue ()\ +- CControl::getMin ()\ +- CControl::getMax ()\ +- CControl::getOldValue ()\ +- CControl::getDefaultValue ()\ +- CControl::getTag ()\ +- CControl::getWheelInc ()\ +- CControl::getListener ()\ +\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\li140\fi-140\ql\qnatural +\cf0 \ +- Don't call CControl::update (..) anymore to force an control to redraw. Just call CControl::setDirty (true);\ +\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural +\cf0 \ +\pard\tx565\tx1133\tx1700\tx2266\tx2833\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural + +\f0\b\fs26 \cf0 \ul How to use PNG Images on Windows:\ +\ +\pard\tx565\tx1133\tx1700\tx2266\tx2833\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural + +\f1\b0\fs24 \cf0 \ulnone - Download libpng and zlib ({\field{\*\fldinst{HYPERLINK "http://libpng.sourceforge.net/"}}{\fldrslt \cf2 http://libpng.sourceforge.net/}}\cf2 , {\field{\*\fldinst{HYPERLINK "http://www.zlib.net/"}}{\fldrslt http://www.zlib.net/}}\cf0 )\ +- Add their sources to your project\ +- Define the preprocessor macro: USE_LIBPNG=1\ +- add your png images to your rc file like this: \ + 128 PNG bmp00128.png\ +- rebuild ;-)\ +\ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural + +\f0\b\fs26 \cf0 \ul Transparent Bitmaps with QUARTZ on Mac OS X:\ +\ +\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural + +\f1\b0\fs24 \cf0 \ulnone Per default on Mac OS X if you need transparent bitmaps, you should use the alpha channel of a PNG Image. If you need the old behaviour and want to set bitmap->setTransparentColor (someColor) you need to call bitmap->setNoAlpha (true); (This actually is only necessary for PNG images, all other images will get the noAlpha state per default)\ +\ +} \ No newline at end of file diff --git a/vstgui.sf/vstgui/Documentation/html/aeffguieditor_8cpp.html b/vstgui.sf/vstgui/Documentation/html/aeffguieditor_8cpp.html new file mode 100644 index 0000000..f6f0570 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/aeffguieditor_8cpp.html @@ -0,0 +1,119 @@ + + +VSTGUI: aeffguieditor.cpp File Reference + + + + + + +

aeffguieditor.cpp File Reference

#include "aeffguieditor.h"
+ + + + + + + + + +

Defines

#define kIdleRate   100
#define kIdleRate2   50
#define kIdleRateMin   4
+

Define Documentation

+

+ + + + +
+ + + + +
#define kIdleRate   100
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define kIdleRate2   50
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define kIdleRateMin   4
+
+ + + + + +
+   + + +

+

+ + + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/aeffguieditor_8h.html b/vstgui.sf/vstgui/Documentation/html/aeffguieditor_8h.html new file mode 100644 index 0000000..547f40b --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/aeffguieditor_8h.html @@ -0,0 +1,46 @@ + + +VSTGUI: aeffguieditor.h File Reference + + + + + + +

aeffguieditor.h File Reference

#include "aeffeditor.h"
+#include "vstgui.h"
+ + + + + +

Classes

class  AEffGUIEditor
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/annotated.html b/vstgui.sf/vstgui/Documentation/html/annotated.html new file mode 100644 index 0000000..6350658 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/annotated.html @@ -0,0 +1,92 @@ + + +VSTGUI: Class List + + + + + + +

VSTGUI Class List

Here are the classes, structs, unions and interfaces with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AEffGUIEditor
CAnimKnobBitmap knob control
CAttributeListEntry
CAutoAnimation
CBitmapEncapsulates various platform depended kinds of bitmaps
CColor
CControlBase class of all VSTGUI controls
CControlListener
CCView
CDragContainer
CDrawContextA drawing context encapsulates the drawing context of the underlying OS. It implements the drawing functions
CFileSelector
CFrameThe CFrame is the parent container of all views
CHorizontalSliderHorizontal slider control
CHorizontalSwitchHorizontal switch control
CKickButton
CKnobKnob control
CMovieBitmapBitmap control that displays different bitmaps according to its current value
CMovieButtonBi-states button with 2 subbitmaps
COffscreenContextA drawing device which uses a pixmap as its drawing surface
COnOffButtonButton control with 2 states
COptionMenuPopup menu control
COptionMenuScheme
CParamDisplayParameter display control
CPoint
CRect
CReferenceCounter
CRockerSwitchSwitch control with 3 sub bitmaps
CScrollbarScrollbar control
CScrollContainer
CScrollViewScrollable view
CSliderSlider control
CSpecialDigitSpecial display with custom numbers (0...9)
CSplashScreen
CSplashScreenView
CTabButton
CTabChildView
CTabViewTab view
CTextEditText edit control
CTextLabelText label
CVerticalSliderVertical slider control
CVerticalSwitchVertical switch control
CView
CViewContainerContainer Class of CView objects
CVuMeter
ERect
IScrollbarDrawer
PluginGUIEditor
VstFileSelect
VstFileType
VstKeyCode
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/cfileselector_8cpp.html b/vstgui.sf/vstgui/Documentation/html/cfileselector_8cpp.html new file mode 100644 index 0000000..1d98413 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/cfileselector_8cpp.html @@ -0,0 +1,195 @@ + + +VSTGUI: cfileselector.cpp File Reference + + + + + + +

cfileselector.cpp File Reference

#include "AudioEffectX.h"
+#include "cfileselector.h"
+ + + + + + + + + + + + + + + +

Defines

#define stringAnyType   "Any Type (*.*)"
#define stringAllTypes   "All Types: ("
#define stringSelect   "Select"
#define stringCancel   "Cancel"
#define stringLookIn   "Look in"
#define kPathMax   1024
+

Define Documentation

+

+ + + + +
+ + + + +
#define kPathMax   1024
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define stringAllTypes   "All Types: ("
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define stringAnyType   "Any Type (*.*)"
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define stringCancel   "Cancel"
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define stringLookIn   "Look in"
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define stringSelect   "Select"
+
+ + + + + +
+   + + +

+

+ + + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/cfileselector_8h.html b/vstgui.sf/vstgui/Documentation/html/cfileselector_8h.html new file mode 100644 index 0000000..668d02f --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/cfileselector_8h.html @@ -0,0 +1,98 @@ + + +VSTGUI: cfileselector.h File Reference + + + + + + +

cfileselector.h File Reference

#include "vstgui.h"
+ + + + + + + + + + + + +

Classes

class  CFileSelector
struct  VstFileType
struct  VstFileSelect

Enumerations

enum  {
+  kVstFileLoad = 0, +kVstFileSave, +kVstMultipleFilesLoad, +kVstDirectorySelect, +
+  kVstFileType = 0 +
+ }
+

Enumeration Type Documentation

+

+ + + + +
+ + + + +
anonymous enum
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + + + + +
kVstFileLoad  +
kVstFileSave  +
kVstMultipleFilesLoad  +
kVstDirectorySelect  +
kVstFileType  +
+
+
+ + + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_a_eff_g_u_i_editor-members.html b/vstgui.sf/vstgui/Documentation/html/class_a_eff_g_u_i_editor-members.html new file mode 100644 index 0000000..4446eae --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_a_eff_g_u_i_editor-members.html @@ -0,0 +1,58 @@ + + +VSTGUI: Member List + + + + + + +

AEffGUIEditor Member List

This is the complete list of members for AEffGUIEditor, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
AEffGUIEditor(AudioEffect *effect)AEffGUIEditor
beginEdit(VstInt32 index)AEffGUIEditor [virtual]
doIdleStuff()AEffGUIEditor [virtual]
endEdit(VstInt32 index)AEffGUIEditor [virtual]
frameAEffGUIEditor [protected]
getFrame()AEffGUIEditor [inline]
getKnobMode()AEffGUIEditor [inline, static]
getRect(ERect **rect)AEffGUIEditor
getTicks()AEffGUIEditor
getVstGuiVersion()AEffGUIEditor [inline, static]
idle()AEffGUIEditor
inIdleStuffAEffGUIEditor [protected]
knobModeAEffGUIEditor [protected, static]
lLastTicksAEffGUIEditor [protected]
rectAEffGUIEditor [protected]
setParameter(VstInt32 index, float value)AEffGUIEditor [virtual]
wait(unsigned int ms)AEffGUIEditor
~AEffGUIEditor()AEffGUIEditor
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_a_eff_g_u_i_editor.html b/vstgui.sf/vstgui/Documentation/html/class_a_eff_g_u_i_editor.html new file mode 100644 index 0000000..082d4b6 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_a_eff_g_u_i_editor.html @@ -0,0 +1,570 @@ + + +VSTGUI: AEffGUIEditor Class Reference + + + + + + +

AEffGUIEditor Class Reference

#include <aeffguieditor.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 AEffGUIEditor (AudioEffect *effect)
 ~AEffGUIEditor ()
CFramegetFrame ()
virtual void setParameter (VstInt32 index, float value)
virtual void beginEdit (VstInt32 index)
virtual void endEdit (VstInt32 index)
virtual void doIdleStuff ()
void wait (unsigned int ms)
unsigned int getTicks ()
bool getRect (ERect **rect)
void idle ()

Static Public Member Functions

static int getVstGuiVersion ()
static VstInt32 getKnobMode ()

Protected Attributes

ERect rect
unsigned int lLastTicks
bool inIdleStuff
CFrameframe

Static Protected Attributes

static VstInt32 knobMode = kCircularMode
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + +
AEffGUIEditor::AEffGUIEditor AudioEffect *  effect  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
AEffGUIEditor::~AEffGUIEditor  ) 
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
void AEffGUIEditor::beginEdit VstInt32  index  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
void AEffGUIEditor::doIdleStuff  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void AEffGUIEditor::endEdit VstInt32  index  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CFrame* AEffGUIEditor::getFrame  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
static VstInt32 AEffGUIEditor::getKnobMode  )  [inline, static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool AEffGUIEditor::getRect ERect **  rect  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
unsigned int AEffGUIEditor::getTicks  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
static int AEffGUIEditor::getVstGuiVersion  )  [inline, static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
void AEffGUIEditor::idle  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void AEffGUIEditor::setParameter VstInt32  index,
float  value
[virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void AEffGUIEditor::wait unsigned int  ms  ) 
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
CFrame* AEffGUIEditor::frame [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
bool AEffGUIEditor::inIdleStuff [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
VstInt32 AEffGUIEditor::knobMode = kCircularMode [static, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
unsigned int AEffGUIEditor::lLastTicks [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
ERect AEffGUIEditor::rect [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_anim_knob-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_anim_knob-members.html new file mode 100644 index 0000000..4b3cd3e --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_anim_knob-members.html @@ -0,0 +1,180 @@ + + +VSTGUI: Member List + + + + + + +

CAnimKnob Member List

This is the complete list of members for CAnimKnob, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
aCoefCKnob [protected]
attached(CView *view)CView [inline, virtual]
backOffsetCControl [protected]
bCoefCKnob [protected]
bDirtyCView [protected]
beginEdit()CControl [virtual]
bInverseBitmapCAnimKnob [protected]
bMouseEnabledCView [protected]
bounceValue()CControl [virtual]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
CAnimKnob(const CRect &size, CControlListener *listener, long tag, CBitmap *background, CPoint &offset)CAnimKnob
CAnimKnob(const CRect &size, CControlListener *listener, long tag, long subPixmaps, CCoord heightOfOneImage, CBitmap *background, CPoint &offset)CAnimKnob
CControl(const CRect &size, CControlListener *listener=0, long tag=0, CBitmap *pBackground=0)CControl
CView::CControl classCView [friend]
CFrame classCView [friend]
checkDefaultValue(CDrawContext *pContext, long button)CControl [virtual]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
CKnob(const CRect &size, CControlListener *listener, long tag, CBitmap *background, CBitmap *handle, const CPoint &offset)CKnob
colorHandleCKnob [protected]
colorShadowHandleCKnob [protected]
compute()CKnob [protected]
copyBackOffset()CControl [virtual]
CReferenceCounter()CReferenceCounter [inline]
CView(const CRect &size)CView
CViewContainer classCView [friend]
defaultValueCControl [protected]
deltaCControl [protected]
doIdleStuff()CControl [inline, virtual]
draw(CDrawContext *pContext)CAnimKnob [virtual]
drawHandle(CDrawContext *pContext)CKnob [virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CView [inline, virtual]
endEdit()CControl [virtual]
forget()CReferenceCounter [inline, virtual]
frameToLocal(CPoint &point) const CView [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackground() const CView [inline, virtual]
getDefaultValue(void) const CControl [inline, virtual]
getEditor() const CView [virtual]
getFrame() const CView [inline]
getHeight() const CView [inline]
getListener() const CControl [inline]
getMax() const CControl [inline, virtual]
getMin() const CControl [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getOldValue(void) const CControl [inline, virtual]
getParentView() const CView [inline]
getRangeAngle() const CKnob [inline, virtual]
getStartAngle() const CKnob [inline, virtual]
getTag() const CControl [inline, virtual]
getTransparency() const CView [inline, virtual]
getValue() const CControl [inline, virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWheelInc() const CControl [inline, virtual]
getWidth() const CView [inline]
getZoomFactor() const CKnob [inline, virtual]
halfAngleCKnob [protected]
heightOfOneImageCAnimKnob [protected]
hitTest(const CPoint &where, const long buttons=-1)CView [inline, virtual]
insetCKnob [protected]
isDirty() const CAnimKnob [virtual]
isDoubleClick()CControl
isTypeOf(const char *s) const CView [inline, virtual]
lastDrawnPointCAnimKnob [protected]
lastTicksCControl [protected]
listenerCControl [protected]
localToFrame(CPoint &point) const CView [virtual]
looseFocus(CDrawContext *pContext=0)CView [virtual]
mouse(CDrawContext *pContext, CPoint &where, long button=-1)CKnob [virtual]
mouseableAreaCView [protected]
notify(CView *sender, const char *message)CView [virtual]
offsetCKnob [protected]
oldValueCControl [protected]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onKeyDown(VstKeyCode &keyCode)CKnob [virtual]
onKeyUp(VstKeyCode &keyCode)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CKnob [virtual]
CControl::onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CView [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pHandleCKnob [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
radiusCKnob [protected]
rangeAngleCKnob [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CView [virtual]
remember()CReferenceCounter [inline, virtual]
removed(CView *parent)CView [inline, virtual]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackground(CBitmap *background)CView [virtual]
setBackOffset(CPoint &offset)CControl [virtual]
setColorHandle(CColor color)CKnob [virtual]
setColorShadowHandle(CColor color)CKnob [virtual]
setDefaultValue(float val)CControl [inline, virtual]
setDirty(const bool val=true)CControl [virtual]
setHandleBitmap(CBitmap *bitmap)CKnob [virtual]
setInsetValue(long val)CKnob [inline, virtual]
setInverseBitmap(bool val)CAnimKnob [inline]
setListener(CControlListener *l)CControl [inline]
setMax(float val)CControl [inline, virtual]
setMin(float val)CControl [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setOldValue(float val)CControl [inline, virtual]
setRangeAngle(float val)CKnob [virtual]
setStartAngle(float val)CKnob [virtual]
setTag(long val)CControl [inline, virtual]
setTransparency(bool val)CView [inline, virtual]
setValue(float val)CControl [inline, virtual]
setViewSize(CRect &rect)CView [virtual]
setWantsFocus(bool state)CView [inline, virtual]
setWheelInc(float val)CControl [inline, virtual]
setZoomFactor(float val)CKnob [inline, virtual]
sizeCView [protected]
startAngleCKnob [protected]
subPixmapsCAnimKnob [protected]
tagCControl [protected]
takeFocus(CDrawContext *pContext=0)CView [virtual]
update(CDrawContext *pContext)CView [protected, virtual]
valueCControl [protected]
valueFromPoint(CPoint &point) const CKnob [virtual]
valueToPoint(CPoint &point) const CKnob [virtual]
vmaxCControl [protected]
vminCControl [protected]
wantsFocus() const CView [inline, virtual]
wheelIncCControl [protected]
zoomFactorCKnob [protected]
~CAnimKnob()CAnimKnob [virtual]
~CControl()CControl [virtual]
~CKnob()CKnob [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CView()CView [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_anim_knob.html b/vstgui.sf/vstgui/Documentation/html/class_c_anim_knob.html new file mode 100644 index 0000000..8707b40 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_anim_knob.html @@ -0,0 +1,421 @@ + + +VSTGUI: CAnimKnob Class Reference + + + + + + +

CAnimKnob Class Reference

a bitmap knob control +More... +

+#include <vstcontrols.h> +

+

Inheritance diagram for CAnimKnob: +

+ +CKnob +CControl +CView +CReferenceCounter + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CAnimKnob (const CRect &size, CControlListener *listener, long tag, CBitmap *background, CPoint &offset)
 CAnimKnob (const CRect &size, CControlListener *listener, long tag, long subPixmaps, CCoord heightOfOneImage, CBitmap *background, CPoint &offset)
virtual ~CAnimKnob ()
virtual bool isDirty () const
 check if view is dirty
virtual void draw (CDrawContext *pContext)
 called if the view should draw itself
void setInverseBitmap (bool val)

Protected Attributes

long subPixmaps
CCoord heightOfOneImage
bool bInverseBitmap
CPoint lastDrawnPoint
+

Detailed Description

+a bitmap knob control +

+Such as a CKnob control object, but there is a unique pixmap which contains different views (subpixmaps) of this knob. According to the value, a specific subpixmap is displayed. The different subpixmaps are stacked in the pixmap object. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CAnimKnob::CAnimKnob const CRect size,
CControlListener listener,
long  tag,
CBitmap background,
CPoint offset
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CAnimKnob::CAnimKnob const CRect size,
CControlListener listener,
long  tag,
long  subPixmaps,
CCoord  heightOfOneImage,
CBitmap background,
CPoint offset
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CAnimKnob::~CAnimKnob  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
void CAnimKnob::draw CDrawContext pContext  )  [virtual]
+
+ + + + + +
+   + + +

+called if the view should draw itself +

+ +

+Reimplemented from CKnob.

+

+ + + + +
+ + + + + + + + +
bool CAnimKnob::isDirty  )  const [virtual]
+
+ + + + + +
+   + + +

+check if view is dirty +

+ +

+Reimplemented from CControl.

+

+ + + + +
+ + + + + + + + + +
void CAnimKnob::setInverseBitmap bool  val  )  [inline]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
bool CAnimKnob::bInverseBitmap [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord CAnimKnob::heightOfOneImage [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CPoint CAnimKnob::lastDrawnPoint [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CAnimKnob::subPixmaps [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_anim_knob.png b/vstgui.sf/vstgui/Documentation/html/class_c_anim_knob.png new file mode 100644 index 0000000..9257888 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_anim_knob.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_attribute_list_entry-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_attribute_list_entry-members.html new file mode 100644 index 0000000..53c8041 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_attribute_list_entry-members.html @@ -0,0 +1,52 @@ + + +VSTGUI: Member List + + + + + + +

CAttributeListEntry Member List

This is the complete list of members for CAttributeListEntry, including all inherited members.

+ + + + + + + + + + + + +
CAttributeListEntry(long size, CViewAttributeID id)CAttributeListEntry [inline]
CAttributeListEntry()CAttributeListEntry [inline, protected]
getID() const CAttributeListEntry [inline]
getNext() const CAttributeListEntry [inline]
getPointer() const CAttributeListEntry [inline]
getSize() const CAttributeListEntry [inline]
idCAttributeListEntry [protected]
nextEntryCAttributeListEntry [protected]
pointerCAttributeListEntry [protected]
setNext(CAttributeListEntry *entry)CAttributeListEntry [inline]
sizeOfPointerCAttributeListEntry [protected]
~CAttributeListEntry()CAttributeListEntry [inline]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_attribute_list_entry.html b/vstgui.sf/vstgui/Documentation/html/class_c_attribute_list_entry.html new file mode 100644 index 0000000..20f65f0 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_attribute_list_entry.html @@ -0,0 +1,393 @@ + + +VSTGUI: CAttributeListEntry Class Reference + + + + + + +

CAttributeListEntry Class Reference

List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CAttributeListEntry (long size, CViewAttributeID id)
 ~CAttributeListEntry ()
const CViewAttributeID getID () const
const long getSize () const
void * getPointer () const
CAttributeListEntrygetNext () const
void setNext (CAttributeListEntry *entry)

Protected Member Functions

 CAttributeListEntry ()

Protected Attributes

CAttributeListEntrynextEntry
void * pointer
long sizeOfPointer
CViewAttributeID id
+

Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
CAttributeListEntry::CAttributeListEntry long  size,
CViewAttributeID  id
[inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CAttributeListEntry::~CAttributeListEntry  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CAttributeListEntry::CAttributeListEntry  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
const CViewAttributeID CAttributeListEntry::getID  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CAttributeListEntry* CAttributeListEntry::getNext  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
void* CAttributeListEntry::getPointer  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
const long CAttributeListEntry::getSize  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CAttributeListEntry::setNext CAttributeListEntry entry  )  [inline]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
CViewAttributeID CAttributeListEntry::id [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CAttributeListEntry* CAttributeListEntry::nextEntry [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
void* CAttributeListEntry::pointer [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CAttributeListEntry::sizeOfPointer [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_auto_animation-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_auto_animation-members.html new file mode 100644 index 0000000..700b28b --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_auto_animation-members.html @@ -0,0 +1,157 @@ + + +VSTGUI: Member List + + + + + + +

CAutoAnimation Member List

This is the complete list of members for CAutoAnimation, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attached(CView *view)CView [inline, virtual]
backOffsetCControl [protected]
bDirtyCView [protected]
beginEdit()CControl [virtual]
bMouseEnabledCView [protected]
bounceValue()CControl [virtual]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
bWindowOpenedCAutoAnimation [protected]
CAutoAnimation(const CRect &size, CControlListener *listener, long tag, CBitmap *background, CPoint &offset)CAutoAnimation
CAutoAnimation(const CRect &size, CControlListener *listener, long tag, long subPixmaps, CCoord heightOfOneImage, CBitmap *background, CPoint &offset)CAutoAnimation
CControl(const CRect &size, CControlListener *listener=0, long tag=0, CBitmap *pBackground=0)CControl
CView::CControl classCView [friend]
CFrame classCView [friend]
checkDefaultValue(CDrawContext *pContext, long button)CControl [virtual]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
closeWindow(void)CAutoAnimation [virtual]
copyBackOffset()CControl [virtual]
CReferenceCounter()CReferenceCounter [inline]
CView(const CRect &size)CView
CViewContainer classCView [friend]
defaultValueCControl [protected]
deltaCControl [protected]
doIdleStuff()CControl [inline, virtual]
draw(CDrawContext *)CAutoAnimation [virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CView [inline, virtual]
endEdit()CControl [virtual]
forget()CReferenceCounter [inline, virtual]
frameToLocal(CPoint &point) const CView [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackground() const CView [inline, virtual]
getDefaultValue(void) const CControl [inline, virtual]
getEditor() const CView [virtual]
getFrame() const CView [inline]
getHeight() const CView [inline]
getListener() const CControl [inline]
getMax() const CControl [inline, virtual]
getMin() const CControl [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getOldValue(void) const CControl [inline, virtual]
getParentView() const CView [inline]
getTag() const CControl [inline, virtual]
getTransparency() const CView [inline, virtual]
getValue() const CControl [inline, virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWheelInc() const CControl [inline, virtual]
getWidth() const CView [inline]
heightOfOneImageCAutoAnimation [protected]
hitTest(const CPoint &where, const long buttons=-1)CView [inline, virtual]
isDirty() const CControl [virtual]
isDoubleClick()CControl
isTypeOf(const char *s) const CView [inline, virtual]
isWindowOpened() const CAutoAnimation [inline]
lastTicksCControl [protected]
listenerCControl [protected]
localToFrame(CPoint &point) const CView [virtual]
looseFocus(CDrawContext *pContext=0)CView [virtual]
mouse(CDrawContext *pContext, CPoint &where, long button=-1)CAutoAnimation [virtual]
mouseableAreaCView [protected]
nextPixmap(void)CAutoAnimation [virtual]
notify(CView *sender, const char *message)CView [virtual]
offsetCAutoAnimation [protected]
oldValueCControl [protected]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onKeyDown(VstKeyCode &keyCode)CView [virtual]
onKeyUp(VstKeyCode &keyCode)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CView [virtual]
openWindow(void)CAutoAnimation [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
previousPixmap(void)CAutoAnimation [virtual]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CView [virtual]
remember()CReferenceCounter [inline, virtual]
removed(CView *parent)CView [inline, virtual]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackground(CBitmap *background)CView [virtual]
setBackOffset(CPoint &offset)CControl [virtual]
setDefaultValue(float val)CControl [inline, virtual]
setDirty(const bool val=true)CControl [virtual]
setListener(CControlListener *l)CControl [inline]
setMax(float val)CControl [inline, virtual]
setMin(float val)CControl [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setOldValue(float val)CControl [inline, virtual]
setTag(long val)CControl [inline, virtual]
setTransparency(bool val)CView [inline, virtual]
setValue(float val)CControl [inline, virtual]
setViewSize(CRect &rect)CView [virtual]
setWantsFocus(bool state)CView [inline, virtual]
setWheelInc(float val)CControl [inline, virtual]
sizeCView [protected]
subPixmapsCAutoAnimation [protected]
tagCControl [protected]
takeFocus(CDrawContext *pContext=0)CView [virtual]
totalHeightOfBitmapCAutoAnimation [protected]
update(CDrawContext *pContext)CView [protected, virtual]
valueCControl [protected]
vmaxCControl [protected]
vminCControl [protected]
wantsFocus() const CView [inline, virtual]
wheelIncCControl [protected]
~CAutoAnimation()CAutoAnimation [virtual]
~CControl()CControl [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CView()CView [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_auto_animation.html b/vstgui.sf/vstgui/Documentation/html/class_c_auto_animation.html new file mode 100644 index 0000000..d1a2a3b --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_auto_animation.html @@ -0,0 +1,575 @@ + + +VSTGUI: CAutoAnimation Class Reference + + + + + + +

CAutoAnimation Class Reference

#include <vstcontrols.h> +

+

Inheritance diagram for CAutoAnimation: +

+ +CControl +CView +CReferenceCounter + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CAutoAnimation (const CRect &size, CControlListener *listener, long tag, CBitmap *background, CPoint &offset)
 CAutoAnimation (const CRect &size, CControlListener *listener, long tag, long subPixmaps, CCoord heightOfOneImage, CBitmap *background, CPoint &offset)
virtual ~CAutoAnimation ()
virtual void draw (CDrawContext *)
 called if the view should draw itself
virtual void mouse (CDrawContext *pContext, CPoint &where, long button=-1)
 called if a mouse click event occurs
virtual void openWindow (void)
virtual void closeWindow (void)
virtual void nextPixmap (void)
virtual void previousPixmap (void)
bool isWindowOpened () const

Protected Attributes

CPoint offset
long subPixmaps
CCoord heightOfOneImage
CCoord totalHeightOfBitmap
bool bWindowOpened
+

Detailed Description

+An auto-animation control contains a given number of subpixmap which can be displayed in loop. Two functions allows to get the previous or the next subpixmap (these functions increase or decrease the current value of this control). +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CAutoAnimation::CAutoAnimation const CRect size,
CControlListener listener,
long  tag,
CBitmap background,
CPoint offset
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CAutoAnimation::CAutoAnimation const CRect size,
CControlListener listener,
long  tag,
long  subPixmaps,
CCoord  heightOfOneImage,
CBitmap background,
CPoint offset
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CAutoAnimation::~CAutoAnimation  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
void CAutoAnimation::closeWindow void   )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CAutoAnimation::draw CDrawContext  )  [virtual]
+
+ + + + + +
+   + + +

+called if the view should draw itself +

+ +

+Implements CControl.

+

+ + + + +
+ + + + + + + + +
bool CAutoAnimation::isWindowOpened  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CAutoAnimation::mouse CDrawContext pContext,
CPoint where,
long  button = -1
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse click event occurs +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + +
void CAutoAnimation::nextPixmap void   )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CAutoAnimation::openWindow void   )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CAutoAnimation::previousPixmap void   )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
bool CAutoAnimation::bWindowOpened [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord CAutoAnimation::heightOfOneImage [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CPoint CAutoAnimation::offset [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CAutoAnimation::subPixmaps [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord CAutoAnimation::totalHeightOfBitmap [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_auto_animation.png b/vstgui.sf/vstgui/Documentation/html/class_c_auto_animation.png new file mode 100644 index 0000000..071ca82 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_auto_animation.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_bitmap-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_bitmap-members.html new file mode 100644 index 0000000..f4ce3de --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_bitmap-members.html @@ -0,0 +1,69 @@ + + +VSTGUI: Member List + + + + + + +

CBitmap Member List

This is the complete list of members for CBitmap, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CBitmap(long resourceID)CBitmap
CBitmap(CFrame &frame, CCoord width, CCoord height)CBitmap
CBitmap()CBitmap [protected]
CReferenceCounter()CReferenceCounter [inline]
dispose()CBitmap [protected, virtual]
draw(CDrawContext *pContext, CRect &rect, const CPoint &offset=CPoint(0, 0))CBitmap [virtual]
drawAlphaBlend(CDrawContext *pContext, CRect &rect, const CPoint &offset=CPoint(0, 0), unsigned char alpha=128)CBitmap [virtual]
drawTransparent(CDrawContext *pContext, CRect &rect, const CPoint &offset=CPoint(0, 0))CBitmap [virtual]
forget()CReferenceCounter [inline, virtual]
getHandle() const CBitmap
getHeight() const CBitmap [inline]
getNbReference() const CReferenceCounter [inline]
getNoAlpha() const CBitmap [inline]
getTransparentColor() const CBitmap [inline]
getWidth() const CBitmap [inline]
heightCBitmap [protected]
isLoaded() const CBitmap
loadFromPath(const void *platformPath)CBitmap [protected, virtual]
loadFromResource(long resourceID)CBitmap [protected, virtual]
noAlphaCBitmap [protected]
remember()CReferenceCounter [inline, virtual]
resourceIDCBitmap [protected]
setNoAlpha(bool state)CBitmap [inline]
setTransparencyMask(CDrawContext *pContext, const CPoint &offset=CPoint(0, 0))CBitmap
setTransparentColor(const CColor color)CBitmap
transparentCColorCBitmap [protected]
widthCBitmap [protected]
~CBitmap()CBitmap [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_bitmap.html b/vstgui.sf/vstgui/Documentation/html/class_c_bitmap.html new file mode 100644 index 0000000..be3482a --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_bitmap.html @@ -0,0 +1,846 @@ + + +VSTGUI: CBitmap Class Reference + + + + + + +

CBitmap Class Reference

Encapsulates various platform depended kinds of bitmaps. +More... +

+#include <vstgui.h> +

+

Inheritance diagram for CBitmap: +

+ +CReferenceCounter + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CBitmap (long resourceID)
 Create a pixmap from a resource identifier.
 CBitmap (CFrame &frame, CCoord width, CCoord height)
 Create a pixmap with a given size.
virtual ~CBitmap ()
virtual void draw (CDrawContext *pContext, CRect &rect, const CPoint &offset=CPoint(0, 0))
 Draw the pixmap using a given rect as output position and a given offset of its source pixmap.
virtual void drawTransparent (CDrawContext *pContext, CRect &rect, const CPoint &offset=CPoint(0, 0))
virtual void drawAlphaBlend (CDrawContext *pContext, CRect &rect, const CPoint &offset=CPoint(0, 0), unsigned char alpha=128)
 Same as CBitmap::draw except that it uses the alpha value to draw the bitmap alpha blended.
CCoord getWidth () const
CCoord getHeight () const
bool isLoaded () const
void * getHandle () const
void setTransparentColor (const CColor color)
CColor getTransparentColor () const
void setTransparencyMask (CDrawContext *pContext, const CPoint &offset=CPoint(0, 0))
void setNoAlpha (bool state)
bool getNoAlpha () const

Protected Member Functions

 CBitmap ()
virtual void dispose ()
virtual bool loadFromResource (long resourceID)
virtual bool loadFromPath (const void *platformPath)

Protected Attributes

long resourceID
CCoord width
CCoord height
CColor transparentCColor
bool noAlpha
+

Detailed Description

+Encapsulates various platform depended kinds of bitmaps. +

+

+Alpha Blend and Transparency

+With Version 3.0 of VSTGUI it is possible to use alpha blended bitmaps. This comes free on Mac OS X and with Windows you need to include libpng. Per default PNG images will be rendered alpha blended. If you want to use a transparency color with PNG Bitmaps, you need to call setNoAlpha(true) on the bitmap and set the transparency color.

+Classic Apple Mac OS

+The Bitmaps are PICTs and stored inside the resource fork.

+Apple Mac OS X

+The Bitmaps can be of type PNG, JPEG, PICT, BMP and are stored in the Resources folder of the plugin bundle. They must be named bmp00100.png (or bmp00100.jpg, etc). The number is the resource id.

+Microsoft Windows

+The Bitmaps are .bmp files and must be included in the plug (usually using a .rc file). It's also possible to use png as of version 3.0 if you define the macro USE_LIBPNG and include the libpng and zlib libraries/sources to your project. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + +
CBitmap::CBitmap long  resourceID  ) 
+
+ + + + + +
+   + + +

+Create a pixmap from a resource identifier. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
CBitmap::CBitmap CFrame frame,
CCoord  width,
CCoord  height
+
+ + + + + +
+   + + +

+Create a pixmap with a given size. +

+

+

+ + + + +
+ + + + + + + + +
CBitmap::~CBitmap  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CBitmap::CBitmap  )  [protected]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
void CBitmap::dispose  )  [protected, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CBitmap::draw CDrawContext pContext,
CRect rect,
const CPoint offset = CPoint(0, 0)
[virtual]
+
+ + + + + +
+   + + +

+Draw the pixmap using a given rect as output position and a given offset of its source pixmap. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CBitmap::drawAlphaBlend CDrawContext pContext,
CRect rect,
const CPoint offset = CPoint(0, 0),
unsigned char  alpha = 128
[virtual]
+
+ + + + + +
+   + + +

+Same as CBitmap::draw except that it uses the alpha value to draw the bitmap alpha blended. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CBitmap::drawTransparent CDrawContext pContext,
CRect rect,
const CPoint offset = CPoint(0, 0)
[virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
void * CBitmap::getHandle  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CCoord CBitmap::getHeight  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
bool CBitmap::getNoAlpha  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CColor CBitmap::getTransparentColor  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CCoord CBitmap::getWidth  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
bool CBitmap::isLoaded  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool CBitmap::loadFromPath const void *  platformPath  )  [protected, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool CBitmap::loadFromResource long  resourceID  )  [protected, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CBitmap::setNoAlpha bool  state  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void CBitmap::setTransparencyMask CDrawContext pContext,
const CPoint offset = CPoint(0, 0)
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CBitmap::setTransparentColor const CColor  color  ) 
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
CCoord CBitmap::height [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
bool CBitmap::noAlpha [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CBitmap::resourceID [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor CBitmap::transparentCColor [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord CBitmap::width [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_bitmap.png b/vstgui.sf/vstgui/Documentation/html/class_c_bitmap.png new file mode 100644 index 0000000..7ccc8d0 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_bitmap.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_c_view-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_c_view-members.html new file mode 100644 index 0000000..f6fac7d --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_c_view-members.html @@ -0,0 +1,45 @@ + + +VSTGUI: Member List + + + + + + +

CCView Member List

This is the complete list of members for CCView, including all inherited members.

+ + + + + +
CCView(CView *pView)CCView
pNextCCView
pPreviousCCView
pViewCCView
~CCView()CCView
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_c_view.html b/vstgui.sf/vstgui/Documentation/html/class_c_c_view.html new file mode 100644 index 0000000..6ffe37c --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_c_view.html @@ -0,0 +1,184 @@ + + +VSTGUI: CCView Class Reference + + + + + + +

CCView Class Reference

#include <vstgui.h> +

+List of all members. + + + + + + + + + + + + + +

Public Member Functions

 CCView (CView *pView)
 ~CCView ()

Public Attributes

CViewpView
CCViewpNext
CCViewpPrevious
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + +
CCView::CCView CView pView  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CCView::~CCView  ) 
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
CCView* CCView::pNext
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCView* CCView::pPrevious
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CView* CCView::pView
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_control-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_control-members.html new file mode 100644 index 0000000..cdaee37 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_control-members.html @@ -0,0 +1,144 @@ + + +VSTGUI: Member List + + + + + + +

CControl Member List

This is the complete list of members for CControl, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attached(CView *view)CView [inline, virtual]
backOffsetCControl [protected]
bDirtyCView [protected]
beginEdit()CControl [virtual]
bMouseEnabledCView [protected]
bounceValue()CControl [virtual]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
CControl(const CRect &size, CControlListener *listener=0, long tag=0, CBitmap *pBackground=0)CControl
CView::CControl classCView [friend]
CFrame classCView [friend]
checkDefaultValue(CDrawContext *pContext, long button)CControl [virtual]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
copyBackOffset()CControl [virtual]
CReferenceCounter()CReferenceCounter [inline]
CView(const CRect &size)CView
CViewContainer classCView [friend]
defaultValueCControl [protected]
deltaCControl [protected]
doIdleStuff()CControl [inline, virtual]
draw(CDrawContext *pContext)=0CControl [pure virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CView [inline, virtual]
endEdit()CControl [virtual]
forget()CReferenceCounter [inline, virtual]
frameToLocal(CPoint &point) const CView [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackground() const CView [inline, virtual]
getDefaultValue(void) const CControl [inline, virtual]
getEditor() const CView [virtual]
getFrame() const CView [inline]
getHeight() const CView [inline]
getListener() const CControl [inline]
getMax() const CControl [inline, virtual]
getMin() const CControl [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getOldValue(void) const CControl [inline, virtual]
getParentView() const CView [inline]
getTag() const CControl [inline, virtual]
getTransparency() const CView [inline, virtual]
getValue() const CControl [inline, virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWheelInc() const CControl [inline, virtual]
getWidth() const CView [inline]
hitTest(const CPoint &where, const long buttons=-1)CView [inline, virtual]
isDirty() const CControl [virtual]
isDoubleClick()CControl
isTypeOf(const char *s) const CView [inline, virtual]
lastTicksCControl [protected]
listenerCControl [protected]
localToFrame(CPoint &point) const CView [virtual]
looseFocus(CDrawContext *pContext=0)CView [virtual]
mouse(CDrawContext *pContext, CPoint &where, long buttons=-1)CView [virtual]
mouseableAreaCView [protected]
notify(CView *sender, const char *message)CView [virtual]
oldValueCControl [protected]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onKeyDown(VstKeyCode &keyCode)CView [virtual]
onKeyUp(VstKeyCode &keyCode)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CView [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CView [virtual]
remember()CReferenceCounter [inline, virtual]
removed(CView *parent)CView [inline, virtual]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackground(CBitmap *background)CView [virtual]
setBackOffset(CPoint &offset)CControl [virtual]
setDefaultValue(float val)CControl [inline, virtual]
setDirty(const bool val=true)CControl [virtual]
setListener(CControlListener *l)CControl [inline]
setMax(float val)CControl [inline, virtual]
setMin(float val)CControl [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setOldValue(float val)CControl [inline, virtual]
setTag(long val)CControl [inline, virtual]
setTransparency(bool val)CView [inline, virtual]
setValue(float val)CControl [inline, virtual]
setViewSize(CRect &rect)CView [virtual]
setWantsFocus(bool state)CView [inline, virtual]
setWheelInc(float val)CControl [inline, virtual]
sizeCView [protected]
tagCControl [protected]
takeFocus(CDrawContext *pContext=0)CView [virtual]
update(CDrawContext *pContext)CView [protected, virtual]
valueCControl [protected]
vmaxCControl [protected]
vminCControl [protected]
wantsFocus() const CView [inline, virtual]
wheelIncCControl [protected]
~CControl()CControl [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CView()CView [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_control.html b/vstgui.sf/vstgui/Documentation/html/class_c_control.html new file mode 100644 index 0000000..bbed088 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_control.html @@ -0,0 +1,1265 @@ + + +VSTGUI: CControl Class Reference + + + + + + +

CControl Class Reference

base class of all VSTGUI controls +More... +

+#include <vstcontrols.h> +

+

Inheritance diagram for CControl: +

+ +CView +CReferenceCounter +CAutoAnimation +CHorizontalSwitch +CKickButton +CKnob +CMovieBitmap +CMovieButton +COnOffButton +CParamDisplay +CRockerSwitch +CScrollbar +CSlider +CSpecialDigit +CSplashScreen +CVerticalSwitch +CVuMeter + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CControl (const CRect &size, CControlListener *listener=0, long tag=0, CBitmap *pBackground=0)
virtual ~CControl ()
virtual void draw (CDrawContext *pContext)=0
 called if the view should draw itself
virtual void doIdleStuff ()
virtual void setValue (float val)
virtual float getValue () const
virtual void setMin (float val)
virtual float getMin () const
virtual void setMax (float val)
virtual float getMax () const
virtual void setOldValue (float val)
virtual float getOldValue (void) const
virtual void setDefaultValue (float val)
virtual float getDefaultValue (void) const
virtual void setTag (long val)
virtual long getTag () const
virtual bool isDirty () const
 check if view is dirty
virtual void setDirty (const bool val=true)
 set the view to dirty so that it is redrawn in the next idle. Thread Safe !
virtual void beginEdit ()
virtual void endEdit ()
virtual void setBackOffset (CPoint &offset)
virtual void copyBackOffset ()
virtual void setWheelInc (float val)
virtual float getWheelInc () const
virtual void bounceValue ()
virtual bool checkDefaultValue (CDrawContext *pContext, long button)
CControlListenergetListener () const
void setListener (CControlListener *l)
bool isDoubleClick ()

Protected Attributes

CControlListenerlistener
long tag
float oldValue
float defaultValue
float value
float vmin
float vmax
float wheelInc
long lastTicks
long delta
CPoint backOffset
+

Detailed Description

+base class of all VSTGUI controls +

+This object manages the tag identification and the value of a control object.

+Note: Since version 2.1, when an object uses the transparency for its background and draws on it (tranparency area) or the transparency area changes during different draws (CMovieBitmap ,...), the background will be false (not updated), you have to rewrite the draw function in order to redraw the background and then call the draw of the object. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CControl::CControl const CRect size,
CControlListener listener = 0,
long  tag = 0,
CBitmap pBackground = 0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CControl::~CControl  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
void CControl::beginEdit  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
void CControl::bounceValue  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool CControl::checkDefaultValue CDrawContext pContext,
long  button
[virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
void CControl::copyBackOffset  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual void CControl::doIdleStuff  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual void CControl::draw CDrawContext pContext  )  [pure virtual]
+
+ + + + + +
+   + + +

+called if the view should draw itself +

+ +

+Reimplemented from CView. +

+Implemented in CScrollbar, CTabButton, COnOffButton, CParamDisplay, CTextLabel, CTextEdit, COptionMenu, CKnob, CAnimKnob, CVerticalSwitch, CHorizontalSwitch, CRockerSwitch, CMovieBitmap, CMovieButton, CAutoAnimation, CSlider, CSpecialDigit, CKickButton, CSplashScreen, and CVuMeter.

+

+ + + + +
+ + + + + + + + +
void CControl::endEdit  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual float CControl::getDefaultValue void   )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CControlListener* CControl::getListener  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual float CControl::getMax  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual float CControl::getMin  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual float CControl::getOldValue void   )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual long CControl::getTag  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual float CControl::getValue  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual float CControl::getWheelInc  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
bool CControl::isDirty  )  const [virtual]
+
+ + + + + +
+   + + +

+check if view is dirty +

+ +

+Reimplemented from CView. +

+Reimplemented in CAnimKnob.

+

+ + + + +
+ + + + + + + + +
bool CControl::isDoubleClick  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CControl::setBackOffset CPoint offset  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual void CControl::setDefaultValue float  val  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CControl::setDirty const bool  val = true  )  [virtual]
+
+ + + + + +
+   + + +

+set the view to dirty so that it is redrawn in the next idle. Thread Safe ! +

+ +

+Reimplemented from CView. +

+Reimplemented in CVuMeter.

+

+ + + + +
+ + + + + + + + + +
void CControl::setListener CControlListener l  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual void CControl::setMax float  val  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual void CControl::setMin float  val  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual void CControl::setOldValue float  val  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual void CControl::setTag long  val  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual void CControl::setValue float  val  )  [inline, virtual]
+
+ + + + + +
+   + + +

+ +

+Reimplemented in COptionMenu.

+

+ + + + +
+ + + + + + + + + +
virtual void CControl::setWheelInc float  val  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
CPoint CControl::backOffset [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
float CControl::defaultValue [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CControl::delta [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CControl::lastTicks [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CControlListener* CControl::listener [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
float CControl::oldValue [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CControl::tag [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
float CControl::value [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
float CControl::vmax [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
float CControl::vmin [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
float CControl::wheelInc [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_control.png b/vstgui.sf/vstgui/Documentation/html/class_c_control.png new file mode 100644 index 0000000..0f93b22 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_control.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_control_listener-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_control_listener-members.html new file mode 100644 index 0000000..66e7ef2 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_control_listener-members.html @@ -0,0 +1,42 @@ + + +VSTGUI: Member List + + + + + + +

CControlListener Member List

This is the complete list of members for CControlListener, including all inherited members.

+ + +
controlModifierClicked(CDrawContext *pContext, CControl *pControl, long button)CControlListener [inline, virtual]
valueChanged(CDrawContext *pContext, CControl *pControl)=0CControlListener [pure virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_control_listener.html b/vstgui.sf/vstgui/Documentation/html/class_c_control_listener.html new file mode 100644 index 0000000..93ae9af --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_control_listener.html @@ -0,0 +1,140 @@ + + +VSTGUI: CControlListener Class Reference + + + + + + +

CControlListener Class Reference

#include <vstcontrols.h> +

+

Inheritance diagram for CControlListener: +

+ +CScrollView +CTabView + +List of all members. + + + + + + +

Public Member Functions

virtual void valueChanged (CDrawContext *pContext, CControl *pControl)=0
virtual long controlModifierClicked (CDrawContext *pContext, CControl *pControl, long button)
+

Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual long CControlListener::controlModifierClicked CDrawContext pContext,
CControl pControl,
long  button
[inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void CControlListener::valueChanged CDrawContext pContext,
CControl pControl
[pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implemented in CScrollView, and CTabView.

+


The documentation for this class was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_control_listener.png b/vstgui.sf/vstgui/Documentation/html/class_c_control_listener.png new file mode 100644 index 0000000..aba9e21 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_control_listener.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_drag_container-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_drag_container-members.html new file mode 100644 index 0000000..cf8432d --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_drag_container-members.html @@ -0,0 +1,58 @@ + + +VSTGUI: Member List + + + + + + +

CDragContainer Member List

This is the complete list of members for CDragContainer, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
CDragContainer(void *platformDrag)CDragContainer
CReferenceCounter()CReferenceCounter [inline]
first(long &size, long &type)CDragContainer
forget()CReferenceCounter [inline, virtual]
getCount() const CDragContainer [inline]
getNbReference() const CReferenceCounter [inline]
getType(long idx) const CDragContainer
iteratorCDragContainer [protected]
kFile enum valueCDragContainer
kText enum valueCDragContainer
kUnknown enum valueCDragContainer
lastItemCDragContainer [protected]
nbItemsCDragContainer [protected]
next(long &size, long &type)CDragContainer
platformDragCDragContainer [protected]
remember()CReferenceCounter [inline, virtual]
~CDragContainer()CDragContainer
~CReferenceCounter()CReferenceCounter [inline, virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_drag_container.html b/vstgui.sf/vstgui/Documentation/html/class_c_drag_container.html new file mode 100644 index 0000000..5443c0a --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_drag_container.html @@ -0,0 +1,398 @@ + + +VSTGUI: CDragContainer Class Reference + + + + + + +

CDragContainer Class Reference

#include <vstgui.h> +

+

Inheritance diagram for CDragContainer: +

+ +CReferenceCounter + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

enum  { kFile = 0, +kText, +kUnknown = -1 + }

Public Member Functions

 CDragContainer (void *platformDrag)
 ~CDragContainer ()
void * first (long &size, long &type)
 returns pointer on a char array if type is known
void * next (long &size, long &type)
 returns pointer on a char array if type is known
long getType (long idx) const
long getCount () const

Protected Attributes

void * platformDrag
long nbItems
long iterator
void * lastItem
+

Member Enumeration Documentation

+

+ + + + +
+ + + + +
anonymous enum
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + + +
kFile  +
kText  +
kUnknown  +
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + +
CDragContainer::CDragContainer void *  platformDrag  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CDragContainer::~CDragContainer  ) 
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void * CDragContainer::first long &  size,
long &  type
+
+ + + + + +
+   + + +

+returns pointer on a char array if type is known +

+

+

+ + + + +
+ + + + + + + + +
long CDragContainer::getCount  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
long CDragContainer::getType long  idx  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void * CDragContainer::next long &  size,
long &  type
+
+ + + + + +
+   + + +

+returns pointer on a char array if type is known +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
long CDragContainer::iterator [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
void* CDragContainer::lastItem [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CDragContainer::nbItems [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
void* CDragContainer::platformDrag [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_drag_container.png b/vstgui.sf/vstgui/Documentation/html/class_c_drag_container.png new file mode 100644 index 0000000..93c608f Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_drag_container.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_draw_context-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_draw_context-members.html new file mode 100644 index 0000000..7e2f9c1 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_draw_context-members.html @@ -0,0 +1,110 @@ + + +VSTGUI: Member List + + + + + + +

CDrawContext Member List

This is the complete list of members for CDrawContext, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CBitmap classCDrawContext [friend]
CDrawContext(CFrame *pFrame, void *pSystemContext, void *pWindow=0)CDrawContext
clipRectCDrawContext [protected]
COffscreenContext classCDrawContext [friend]
CReferenceCounter()CReferenceCounter [inline]
drawArc(const CRect &rect, const float startAngle1, const float endAngle2, const CDrawStyle drawStyle=kDrawStroked)CDrawContext
drawArc(const CRect &rect, const CPoint &point1, const CPoint &point2)CDrawContext
drawEllipse(const CRect &rect, const CDrawStyle drawStyle=kDrawStroked)CDrawContext
drawLines(const CPoint *points, const long &numberOfLines)CDrawContext
drawModeCDrawContext [protected]
drawPoint(const CPoint &point, CColor color)CDrawContext
drawPolygon(const CPoint *pPoints, long numberOfPoints, const CDrawStyle drawStyle=kDrawStroked)CDrawContext
drawRect(const CRect &rect, const CDrawStyle drawStyle=kDrawStroked)CDrawContext
drawString(const char *pString, const CRect &rect, const short opaque=false, const CHoriTxtAlign hAlign=kCenterText)CDrawContext
fillArc(const CRect &rect, const CPoint &point1, const CPoint &point2)CDrawContext
fillColorCDrawContext [protected]
fillEllipse(const CRect &rect)CDrawContext
fillPolygon(const CPoint *pPoint, long numberOfPoints)CDrawContext
fillRect(const CRect &rect)CDrawContext
floodFill(const CPoint &start)CDrawContext
fontColorCDrawContext [protected]
fontIdCDrawContext [protected]
fontSizeCDrawContext [protected]
fontStyleCDrawContext [protected]
forget()CDrawContext [virtual]
frameColorCDrawContext [protected]
frameWidthCDrawContext [protected]
getClipRect(CRect &clip) const CDrawContext [inline]
getDrawMode() const CDrawContext [inline]
getFillColor() const CDrawContext [inline]
getFont() const CDrawContext [inline]
getFontColor() const CDrawContext [inline]
getFontSize() const CDrawContext [inline]
getFrame() const CDrawContext [inline]
getFrameColor() const CDrawContext [inline]
getLineStyle() const CDrawContext [inline]
getLineWidth() const CDrawContext [inline]
getLoc(CPoint &where) const CDrawContext [inline]
getMouseButtons()CDrawContext
getMouseLocation(CPoint &point)CDrawContext
getNbReference() const CReferenceCounter [inline]
getPoint(const CPoint &point)CDrawContext
getStringWidth(const char *pStr)CDrawContext
getSystemContext() const CDrawContext [inline]
getWindow()CDrawContext [inline]
lineStyleCDrawContext [protected]
lineTo(const CPoint &point)CDrawContext
moveTo(const CPoint &point)CDrawContext
offsetCDrawContext
offsetScreenCDrawContext
penLocCDrawContext [protected]
pFrameCDrawContext [protected]
polyLine(const CPoint *pPoint, long numberOfPoints)CDrawContext
pSystemContextCDrawContext [protected]
pWindowCDrawContext [protected]
remember()CReferenceCounter [inline, virtual]
resetClipRect()CDrawContext
setClipRect(const CRect &clip)CDrawContext
setDrawMode(CDrawMode mode)CDrawContext
setFillColor(const CColor color)CDrawContext
setFont(CFont fontID, const long size=0, long style=0)CDrawContext
setFontColor(const CColor color)CDrawContext
setFrameColor(const CColor color)CDrawContext
setLineStyle(CLineStyle style)CDrawContext
setLineWidth(CCoord width)CDrawContext
setWindow(void *ptr)CDrawContext [inline]
waitDoubleClick()CDrawContext
waitDrag()CDrawContext
~CDrawContext()CDrawContext [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_draw_context.html b/vstgui.sf/vstgui/Documentation/html/class_c_draw_context.html new file mode 100644 index 0000000..f59a6e6 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_draw_context.html @@ -0,0 +1,2235 @@ + + +VSTGUI: CDrawContext Class Reference + + + + + + +

CDrawContext Class Reference

A drawing context encapsulates the drawing context of the underlying OS. It implements the drawing functions. +More... +

+#include <vstgui.h> +

+

Inheritance diagram for CDrawContext: +

+ +CReferenceCounter +COffscreenContext + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CDrawContext (CFrame *pFrame, void *pSystemContext, void *pWindow=0)
virtual ~CDrawContext ()
void moveTo (const CPoint &point)
 move line position to point
void lineTo (const CPoint &point)
 draw a line from current position to point
void drawLines (const CPoint *points, const long &numberOfLines)
 draw multiple lines at once
void drawPolygon (const CPoint *pPoints, long numberOfPoints, const CDrawStyle drawStyle=kDrawStroked)
 draw a polygon
void polyLine (const CPoint *pPoint, long numberOfPoints)
 draw a stroked polygon
void fillPolygon (const CPoint *pPoint, long numberOfPoints)
 draw a filled polygon
void drawRect (const CRect &rect, const CDrawStyle drawStyle=kDrawStroked)
 draw a stroked rect
void fillRect (const CRect &rect)
 draw a filled rect
void drawArc (const CRect &rect, const float startAngle1, const float endAngle2, const CDrawStyle drawStyle=kDrawStroked)
 draw a stroked arc, where the angles are in degree
void drawArc (const CRect &rect, const CPoint &point1, const CPoint &point2)
 draw a stroked arc between point1 and point2
void fillArc (const CRect &rect, const CPoint &point1, const CPoint &point2)
 draw a filled arc between point1 and point2
void drawEllipse (const CRect &rect, const CDrawStyle drawStyle=kDrawStroked)
 draw an ellipse
void fillEllipse (const CRect &rect)
 draw a filled ellipse
void drawPoint (const CPoint &point, CColor color)
 draw a point
CColor getPoint (const CPoint &point)
void floodFill (const CPoint &start)
void setLineStyle (CLineStyle style)
 set the current line style
CLineStyle getLineStyle () const
 get the current line style
void setLineWidth (CCoord width)
 set the current line width
CCoord getLineWidth () const
 get the current line width
void setDrawMode (CDrawMode mode)
 set the current draw mode, see CDrawMode
CDrawMode getDrawMode () const
 get the current draw mode, see CDrawMode
void setClipRect (const CRect &clip)
 set the current clip
CRectgetClipRect (CRect &clip) const
 get the current clip
void resetClipRect ()
 reset the clip to the default state
void setFillColor (const CColor color)
 set current fill color
CColor getFillColor () const
 get current fill color
void setFrameColor (const CColor color)
 set current stroke color
CColor getFrameColor () const
 get current stroke color
void setFontColor (const CColor color)
 set current font color
CColor getFontColor () const
 get current font color
void setFont (CFont fontID, const long size=0, long style=0)
 set current font
CFont getFont () const
 get current font
long getFontSize () const
 get current font size
CCoord getStringWidth (const char *pStr)
 get the width of a string
void drawString (const char *pString, const CRect &rect, const short opaque=false, const CHoriTxtAlign hAlign=kCenterText)
 draw a string
long getMouseButtons ()
 get current mouse buttons
void getMouseLocation (CPoint &point)
 get current mouse location. should not be used, see CView::getMouseLocation
bool waitDoubleClick ()
 check if another mouse click occurs in the near future
bool waitDrag ()
 check if the mouse will be dragged
void * getWindow ()
void setWindow (void *ptr)
void getLoc (CPoint &where) const
CFramegetFrame () const
void * getSystemContext () const
virtual void forget ()

Public Attributes

CPoint offsetScreen
CPoint offset

Protected Attributes

void * pSystemContext
void * pWindow
CFramepFrame
long fontSize
long fontStyle
CFont fontId
CColor fontColor
CPoint penLoc
CCoord frameWidth
CColor frameColor
CColor fillColor
CLineStyle lineStyle
CDrawMode drawMode
CRect clipRect

Friends

class CBitmap
class COffscreenContext
+

Detailed Description

+A drawing context encapsulates the drawing context of the underlying OS. It implements the drawing functions. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
CDrawContext::CDrawContext CFrame inFrame,
void *  inSystemContext,
void *  inWindow = 0
+
+ + + + + +
+   + + +

+CDrawContext constructor.

Parameters:
+ + + + +
inFrame the parent CFrame
inSystemContext the platform system context, can be NULL
inWindow the platform window object
+
+
+

+ + + + +
+ + + + + + + + +
CDrawContext::~CDrawContext  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CDrawContext::drawArc const CRect rect,
const CPoint point1,
const CPoint point2
+
+ + + + + +
+   + + +

+draw a stroked arc between point1 and point2 +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CDrawContext::drawArc const CRect rect,
const float  startAngle1,
const float  endAngle2,
const CDrawStyle  drawStyle = kDrawStroked
+
+ + + + + +
+   + + +

+draw a stroked arc, where the angles are in degree +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void CDrawContext::drawEllipse const CRect rect,
const CDrawStyle  drawStyle = kDrawStroked
+
+ + + + + +
+   + + +

+draw an ellipse +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void CDrawContext::drawLines const CPoint points,
const long &  numberOfLines
+
+ + + + + +
+   + + +

+draw multiple lines at once +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void CDrawContext::drawPoint const CPoint point,
CColor  color
+
+ + + + + +
+   + + +

+draw a point +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CDrawContext::drawPolygon const CPoint pPoints,
long  numberOfPoints,
const CDrawStyle  drawStyle = kDrawStroked
+
+ + + + + +
+   + + +

+draw a polygon +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void CDrawContext::drawRect const CRect rect,
const CDrawStyle  drawStyle = kDrawStroked
+
+ + + + + +
+   + + +

+draw a stroked rect +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CDrawContext::drawString const char *  pString,
const CRect rect,
const short  opaque = false,
const CHoriTxtAlign  hAlign = kCenterText
+
+ + + + + +
+   + + +

+draw a string +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CDrawContext::fillArc const CRect rect,
const CPoint point1,
const CPoint point2
+
+ + + + + +
+   + + +

+draw a filled arc between point1 and point2 +

+

+

+ + + + +
+ + + + + + + + + +
void CDrawContext::fillEllipse const CRect rect  ) 
+
+ + + + + +
+   + + +

+draw a filled ellipse +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void CDrawContext::fillPolygon const CPoint pPoint,
long  numberOfPoints
+
+ + + + + +
+   + + +

+draw a filled polygon +

+

+

+ + + + +
+ + + + + + + + + +
void CDrawContext::fillRect const CRect rect  ) 
+
+ + + + + +
+   + + +

+draw a filled rect +

+

+

+ + + + +
+ + + + + + + + + +
void CDrawContext::floodFill const CPoint start  ) 
+
+ + + + + +
+   + + +

+

Deprecated:
+
+

+ + + + +
+ + + + + + + + +
void CDrawContext::forget  )  [virtual]
+
+ + + + + +
+   + + +

+ +

+Reimplemented from CReferenceCounter.

+

+ + + + +
+ + + + + + + + + +
CRect& CDrawContext::getClipRect CRect clip  )  const [inline]
+
+ + + + + +
+   + + +

+get the current clip +

+

+

+ + + + +
+ + + + + + + + +
CDrawMode CDrawContext::getDrawMode  )  const [inline]
+
+ + + + + +
+   + + +

+get the current draw mode, see CDrawMode +

+

+

+ + + + +
+ + + + + + + + +
CColor CDrawContext::getFillColor  )  const [inline]
+
+ + + + + +
+   + + +

+get current fill color +

+

+

+ + + + +
+ + + + + + + + +
CFont CDrawContext::getFont  )  const [inline]
+
+ + + + + +
+   + + +

+get current font +

+

+

+ + + + +
+ + + + + + + + +
CColor CDrawContext::getFontColor  )  const [inline]
+
+ + + + + +
+   + + +

+get current font color +

+

+

+ + + + +
+ + + + + + + + +
long CDrawContext::getFontSize  )  const [inline]
+
+ + + + + +
+   + + +

+get current font size +

+

+

+ + + + +
+ + + + + + + + +
CFrame* CDrawContext::getFrame  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CColor CDrawContext::getFrameColor  )  const [inline]
+
+ + + + + +
+   + + +

+get current stroke color +

+

+

+ + + + +
+ + + + + + + + +
CLineStyle CDrawContext::getLineStyle  )  const [inline]
+
+ + + + + +
+   + + +

+get the current line style +

+

+

+ + + + +
+ + + + + + + + +
CCoord CDrawContext::getLineWidth  )  const [inline]
+
+ + + + + +
+   + + +

+get the current line width +

+

+

+ + + + +
+ + + + + + + + + +
void CDrawContext::getLoc CPoint where  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
long CDrawContext::getMouseButtons  ) 
+
+ + + + + +
+   + + +

+get current mouse buttons +

+

+

+ + + + +
+ + + + + + + + + +
void CDrawContext::getMouseLocation CPoint point  ) 
+
+ + + + + +
+   + + +

+get current mouse location. should not be used, see CView::getMouseLocation +

+

+

+ + + + +
+ + + + + + + + + +
CColor CDrawContext::getPoint const CPoint point  ) 
+
+ + + + + +
+   + + +

+

Deprecated:
+
+

+ + + + +
+ + + + + + + + + +
CCoord CDrawContext::getStringWidth const char *  pStr  ) 
+
+ + + + + +
+   + + +

+get the width of a string +

+

+

+ + + + +
+ + + + + + + + +
void* CDrawContext::getSystemContext  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
void* CDrawContext::getWindow  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CDrawContext::lineTo const CPoint point  ) 
+
+ + + + + +
+   + + +

+draw a line from current position to point +

+

+

+ + + + +
+ + + + + + + + + +
void CDrawContext::moveTo const CPoint point  ) 
+
+ + + + + +
+   + + +

+move line position to point +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void CDrawContext::polyLine const CPoint pPoint,
long  numberOfPoints
+
+ + + + + +
+   + + +

+draw a stroked polygon +

+

+

+ + + + +
+ + + + + + + + +
void CDrawContext::resetClipRect  ) 
+
+ + + + + +
+   + + +

+reset the clip to the default state +

+

+

+ + + + +
+ + + + + + + + + +
void CDrawContext::setClipRect const CRect clip  ) 
+
+ + + + + +
+   + + +

+set the current clip +

+

+

+ + + + +
+ + + + + + + + + +
void CDrawContext::setDrawMode CDrawMode  mode  ) 
+
+ + + + + +
+   + + +

+set the current draw mode, see CDrawMode +

+

+

+ + + + +
+ + + + + + + + + +
void CDrawContext::setFillColor const CColor  color  ) 
+
+ + + + + +
+   + + +

+set current fill color +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CDrawContext::setFont CFont  fontID,
const long  size = 0,
long  style = 0
+
+ + + + + +
+   + + +

+set current font +

+

+

+ + + + +
+ + + + + + + + + +
void CDrawContext::setFontColor const CColor  color  ) 
+
+ + + + + +
+   + + +

+set current font color +

+

+

+ + + + +
+ + + + + + + + + +
void CDrawContext::setFrameColor const CColor  color  ) 
+
+ + + + + +
+   + + +

+set current stroke color +

+

+

+ + + + +
+ + + + + + + + + +
void CDrawContext::setLineStyle CLineStyle  style  ) 
+
+ + + + + +
+   + + +

+set the current line style +

+

+

+ + + + +
+ + + + + + + + + +
void CDrawContext::setLineWidth CCoord  width  ) 
+
+ + + + + +
+   + + +

+set the current line width +

+

+

+ + + + +
+ + + + + + + + + +
void CDrawContext::setWindow void *  ptr  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
bool CDrawContext::waitDoubleClick  ) 
+
+ + + + + +
+   + + +

+check if another mouse click occurs in the near future +

+

+

+ + + + +
+ + + + + + + + +
bool CDrawContext::waitDrag  ) 
+
+ + + + + +
+   + + +

+check if the mouse will be dragged +

+

+


Friends And Related Function Documentation

+

+ + + + +
+ + + + +
friend class CBitmap [friend]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
friend class COffscreenContext [friend]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
CRect CDrawContext::clipRect [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CDrawMode CDrawContext::drawMode [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor CDrawContext::fillColor [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor CDrawContext::fontColor [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CFont CDrawContext::fontId [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CDrawContext::fontSize [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CDrawContext::fontStyle [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor CDrawContext::frameColor [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord CDrawContext::frameWidth [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CLineStyle CDrawContext::lineStyle [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CPoint CDrawContext::offset
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CPoint CDrawContext::offsetScreen
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CPoint CDrawContext::penLoc [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CFrame* CDrawContext::pFrame [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
void* CDrawContext::pSystemContext [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
void* CDrawContext::pWindow [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_draw_context.png b/vstgui.sf/vstgui/Documentation/html/class_c_draw_context.png new file mode 100644 index 0000000..343e535 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_draw_context.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_file_selector-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_file_selector-members.html new file mode 100644 index 0000000..3cf19e7 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_file_selector-members.html @@ -0,0 +1,45 @@ + + +VSTGUI: Member List + + + + + + +

CFileSelector Member List

This is the complete list of members for CFileSelector, including all inherited members.

+ + + + + +
CFileSelector(void *ptr)CFileSelector
ptrCFileSelector [protected]
run(VstFileSelect *vstFileSelect)CFileSelector
vstFileSelectCFileSelector [protected]
~CFileSelector()CFileSelector [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_file_selector.html b/vstgui.sf/vstgui/Documentation/html/class_c_file_selector.html new file mode 100644 index 0000000..8504ec2 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_file_selector.html @@ -0,0 +1,190 @@ + + +VSTGUI: CFileSelector Class Reference + + + + + + +

CFileSelector Class Reference

#include <cfileselector.h> +

+List of all members. + + + + + + + + + + + + + +

Public Member Functions

 CFileSelector (void *ptr)
virtual ~CFileSelector ()
long run (VstFileSelect *vstFileSelect)

Protected Attributes

void * ptr
VstFileSelectvstFileSelect
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + +
BEGIN_NAMESPACE_VSTGUI CFileSelector::CFileSelector void *  ptr  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CFileSelector::~CFileSelector  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
long CFileSelector::run VstFileSelect vstFileSelect  ) 
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
void* CFileSelector::ptr [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
VstFileSelect* CFileSelector::vstFileSelect [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_frame-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_frame-members.html new file mode 100644 index 0000000..43778c4 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_frame-members.html @@ -0,0 +1,184 @@ + + +VSTGUI: Member List + + + + + + +

CFrame Member List

This is the complete list of members for CFrame, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addView(CView *pView)CViewContainer [virtual]
addView(CView *pView, CRect &mouseableArea, bool mouseEnabled=true)CViewContainer [virtual]
advanceNextFocusView(CView *oldFocus, bool reverse=false)CFrame [virtual]
attached(CView *view)CViewContainer [virtual]
backgroundColorCViewContainer [protected]
backgroundOffsetCViewContainer [protected]
bDirtyCView [protected]
bDrawInOffscreenCViewContainer [protected]
bDropActiveCFrame [protected]
beginEdit(long index)CFrame [virtual]
bFirstDrawCFrame [protected]
bMouseEnabledCView [protected]
bOpenFlagCFrame [protected]
bTransparencyEnabledCView [protected]
bUpdatesDisabledCFrame [protected]
bWantsFocusCView [protected]
CControl classCView [friend]
CFrame(const CRect &size, void *pSystemWindow, void *pEditor)CFrame
CFrame(const CRect &size, const char *pTitle, void *pEditor, const long style=0)CFrame
CViewContainer::CFrame classCView [friend]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
close()CFrame [virtual]
createDrawContext()CFrame
CReferenceCounter()CReferenceCounter [inline]
currentDragViewCViewContainer [protected]
CView(const CRect &size)CView
CViewContainer(const CRect &size, CFrame *pParent, CBitmap *pBackground=0)CViewContainer
CView::CViewContainer classCView [friend]
doIdleStuff()CFrame [virtual]
draw(CDrawContext *pContext)CFrame [virtual]
draw(CView *pView=0)CFrame [virtual]
drawBackgroundRect(CDrawContext *pContext, CRect &_updateRect)CViewContainer [virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CFrame [virtual]
endEdit(long index)CFrame [virtual]
forget()CReferenceCounter [inline, virtual]
frameToLocal(CPoint &point) const CViewContainer [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackground() const CView [inline, virtual]
getBackgroundColor() const CViewContainer [inline, virtual]
getBackgroundOffset() const CViewContainer [inline, virtual]
getCurrentLocation(CPoint &where)CFrame [virtual]
getCurrentView() const CFrame [virtual]
getEditor() const CFrame [inline, virtual]
getFocusView() const CFrame [inline, virtual]
getFrame() const CView [inline]
getHeight() const CView [inline]
getKnobMode() const CFrame [virtual]
getModalView() const CFrame [inline, virtual]
getMode() const CViewContainer [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getNbViews() const CViewContainer [virtual]
getOpenFlag() const CFrame [inline, virtual]
getParentSystemWindow() const CFrame [inline]
getParentView() const CView [inline]
getPosition(CCoord &x, CCoord &y) const CFrame [virtual]
getSize(CRect *pSize) const CFrame [virtual]
getSize(CRect &pSize) const CFrame [virtual]
getSystemWindow() const CFrame [inline]
getTicks() const CFrame [virtual]
getTransparency() const CView [inline, virtual]
getView(long index) const CViewContainer [virtual]
getViewAt(const CPoint &where, bool deep=false) const CViewContainer [virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWidth() const CView [inline]
hitTest(const CPoint &where, const long buttons=-1)CViewContainer [virtual]
hitTestSubViews(const CPoint &where, const long buttons=-1)CViewContainer [protected]
idle()CFrame [virtual]
initFrame(void *pSystemWin)CFrame [protected]
invalidate(const CRect &rect)CFrame [virtual]
isChild(CView *pView) const CViewContainer [virtual]
isDirty() const CViewContainer [virtual]
isDropActive() const CFrame [inline, virtual]
isOpen() const CFrame [inline, virtual]
isTypeOf(const char *s) const CView [inline, virtual]
kNormalUpdate enum valueCViewContainer
kOnlyDirtyUpdate enum valueCViewContainer
localToFrame(CPoint &point) const CViewContainer [virtual]
looseFocus(CDrawContext *pContext=0)CViewContainer [virtual]
modeCViewContainer [protected]
modifyDrawContext(CCoord save[4], CDrawContext *pContext)CViewContainer
mouse(CDrawContext *pContext, CPoint &where, long buttons=-1)CFrame [virtual]
mouseableAreaCView [protected]
notify(CView *sender, const char *message)CViewContainer [virtual]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CViewContainer [virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CViewContainer [virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CViewContainer [virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CViewContainer [virtual]
onKeyDown(VstKeyCode &keyCode)CFrame [virtual]
onKeyUp(VstKeyCode &keyCode)CFrame [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CFrame [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CFrame [virtual]
open(CPoint *pPoint=0)CFrame [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pEditorCFrame [protected]
pFirstViewCViewContainer [protected]
pFocusViewCFrame [protected]
pLastViewCViewContainer [protected]
pModalViewCFrame [protected]
pOffscreenContextCViewContainer [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
pSystemWindowCFrame [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CViewContainer [virtual]
remember()CReferenceCounter [inline, virtual]
removeAll(const bool &withForget=true)CViewContainer [virtual]
removed(CView *parent)CViewContainer [virtual]
removeView(CView *pView, const bool &withForget=true)CViewContainer [virtual]
restoreDrawContext(CDrawContext *pContext, CCoord save[4])CViewContainer
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackground(CBitmap *background)CView [virtual]
setBackgroundColor(const CColor color)CViewContainer [virtual]
setBackgroundOffset(const CPoint &p)CViewContainer [inline, virtual]
setCursor(CCursorType type)CFrame [virtual]
setDirty(const bool val=true)CView [inline, virtual]
setDropActive(bool val)CFrame [virtual]
setFocusView(CView *pView)CFrame [virtual]
setModalView(CView *pView)CFrame [virtual]
setMode(long val)CViewContainer [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setOpenFlag(bool val)CFrame [inline, virtual]
setParentSystemWindow(void *val)CFrame [inline]
setPosition(CCoord x, CCoord y)CFrame [virtual]
setSize(CCoord width, CCoord height)CFrame [virtual]
setTransparency(bool val)CView [inline, virtual]
setViewSize(CRect &inRect)CFrame [virtual]
setWantsFocus(bool state)CView [inline, virtual]
sizeCView [protected]
takeFocus(CDrawContext *pContext=0)CViewContainer [virtual]
update(CDrawContext *pContext)CFrame [virtual]
updatesDisabled() const CFrame [inline, virtual]
updatesDisabled(bool state)CFrame [inline, virtual]
useOffscreen(bool b)CViewContainer [virtual]
wantsFocus() const CView [inline, virtual]
~CFrame()CFrame [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CView()CView [virtual]
~CViewContainer()CViewContainer [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_frame.html b/vstgui.sf/vstgui/Documentation/html/class_c_frame.html new file mode 100644 index 0000000..d8d4ba4 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_frame.html @@ -0,0 +1,1886 @@ + + +VSTGUI: CFrame Class Reference + + + + + + +

CFrame Class Reference

The CFrame is the parent container of all views. +More... +

+#include <vstgui.h> +

+

Inheritance diagram for CFrame: +

+ +CViewContainer +CView +CReferenceCounter + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CFrame (const CRect &size, void *pSystemWindow, void *pEditor)
 CFrame (const CRect &size, const char *pTitle, void *pEditor, const long style=0)
virtual ~CFrame ()
virtual bool open (CPoint *pPoint=0)
virtual bool close ()
virtual bool isOpen () const
virtual void idle ()
virtual void doIdleStuff ()
virtual unsigned long getTicks () const
 get the current time (in ms)
virtual long getKnobMode () const
 get hosts knob mode
virtual bool setPosition (CCoord x, CCoord y)
virtual bool getPosition (CCoord &x, CCoord &y) const
virtual bool setSize (CCoord width, CCoord height)
virtual bool getSize (CRect *pSize) const
virtual bool getSize (CRect &pSize) const
virtual long setModalView (CView *pView)
virtual CViewgetModalView () const
virtual void beginEdit (long index)
virtual void endEdit (long index)
virtual bool getCurrentLocation (CPoint &where)
virtual void setCursor (CCursorType type)
virtual void setFocusView (CView *pView)
virtual CViewgetFocusView () const
virtual bool advanceNextFocusView (CView *oldFocus, bool reverse=false)
virtual bool setDropActive (bool val)
virtual bool isDropActive () const
CDrawContextcreateDrawContext ()
virtual void setOpenFlag (bool val)
virtual bool getOpenFlag () const
virtual void invalidate (const CRect &rect)
virtual bool updatesDisabled () const
virtual bool updatesDisabled (bool state)
void * getSystemWindow () const
void * getParentSystemWindow () const
void setParentSystemWindow (void *val)
virtual void draw (CDrawContext *pContext)
virtual void drawRect (CDrawContext *pContext, const CRect &updateRect)
virtual void draw (CView *pView=0)
virtual void mouse (CDrawContext *pContext, CPoint &where, long buttons=-1)
 called if a mouse click event occurs
virtual bool onWheel (CDrawContext *pContext, const CPoint &where, float distance)
 called if a mouse wheel event is happening over this view
virtual bool onWheel (CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)
 called if a mouse wheel event is happening over this view
virtual long onKeyDown (VstKeyCode &keyCode)
 called if a key down event occurs and this view has focus
virtual long onKeyUp (VstKeyCode &keyCode)
 called if a key up event occurs and this view has focus
virtual void update (CDrawContext *pContext)
virtual void setViewSize (CRect &inRect)
virtual CViewgetCurrentView () const
 get the current view under the mouse
virtual void * getEditor () const

Protected Member Functions

bool initFrame (void *pSystemWin)

Protected Attributes

void * pEditor
void * pSystemWindow
CViewpModalView
CViewpFocusView
bool bFirstDraw
bool bOpenFlag
bool bDropActive
bool bUpdatesDisabled
+

Detailed Description

+The CFrame is the parent container of all views. +

+It creates a platform dependend view object. On classic Mac OS it just draws into the provided window. On Mac OS X it is a ControlRef. On Windows it's a WS_CHILD Window. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
CFrame::CFrame const CRect size,
void *  pSystemWindow,
void *  pEditor
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CFrame::CFrame const CRect size,
const char *  pTitle,
void *  pEditor,
const long  style = 0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CFrame::~CFrame  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool CFrame::advanceNextFocusView CView oldFocus,
bool  reverse = false
[virtual]
+
+ + + + + +
+   + + +

+ +

+Reimplemented from CViewContainer.

+

+ + + + +
+ + + + + + + + + +
void CFrame::beginEdit long  index  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
bool CFrame::close  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CDrawContext * CFrame::createDrawContext  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
void CFrame::doIdleStuff  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CFrame::draw CView pView = 0  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CFrame::draw CDrawContext pContext  )  [virtual]
+
+ + + + + +
+   + + +

+

Parameters:
+ + +
pContext the context which to use to draw this container and its subviews
+
+ +

+Reimplemented from CViewContainer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void CFrame::drawRect CDrawContext pContext,
const CRect updateRect
[virtual]
+
+ + + + + +
+   + + +

+

Parameters:
+ + + +
pContext the context which to use to draw
_updateRect the area which to draw
+
+ +

+Reimplemented from CViewContainer.

+

+ + + + +
+ + + + + + + + + +
void CFrame::endEdit long  index  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool CFrame::getCurrentLocation CPoint where  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CView * CFrame::getCurrentView  )  const [virtual]
+
+ + + + + +
+   + + +

+get the current view under the mouse +

+ +

+Reimplemented from CViewContainer.

+

+ + + + +
+ + + + + + + + +
virtual void* CFrame::getEditor  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + +
virtual CView* CFrame::getFocusView  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
long CFrame::getKnobMode  )  const [virtual]
+
+ + + + + +
+   + + +

+get hosts knob mode +

+

+

+ + + + +
+ + + + + + + + +
virtual CView* CFrame::getModalView  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual bool CFrame::getOpenFlag  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
void* CFrame::getParentSystemWindow  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool CFrame::getPosition CCoord x,
CCoord y
const [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool CFrame::getSize CRect pSize  )  const [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool CFrame::getSize CRect pSize  )  const [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
void* CFrame::getSystemWindow  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
unsigned long CFrame::getTicks  )  const [virtual]
+
+ + + + + +
+   + + +

+get the current time (in ms) +

+

+

+ + + + +
+ + + + + + + + +
void CFrame::idle  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool CFrame::initFrame void *  pSystemWin  )  [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CFrame::invalidate const CRect rect  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual bool CFrame::isDropActive  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual bool CFrame::isOpen  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CFrame::mouse CDrawContext pContext,
CPoint where,
long  buttons = -1
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse click event occurs +

+ +

+Reimplemented from CViewContainer.

+

+ + + + +
+ + + + + + + + + +
long CFrame::onKeyDown VstKeyCode keyCode  )  [virtual]
+
+ + + + + +
+   + + +

+called if a key down event occurs and this view has focus +

+ +

+Reimplemented from CViewContainer.

+

+ + + + +
+ + + + + + + + + +
long CFrame::onKeyUp VstKeyCode keyCode  )  [virtual]
+
+ + + + + +
+   + + +

+called if a key up event occurs and this view has focus +

+ +

+Reimplemented from CViewContainer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool CFrame::onWheel CDrawContext pContext,
const CPoint where,
const CMouseWheelAxis  axis,
float  distance
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse wheel event is happening over this view +

+ +

+Reimplemented from CViewContainer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool CFrame::onWheel CDrawContext pContext,
const CPoint where,
float  distance
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse wheel event is happening over this view +

+ +

+Reimplemented from CViewContainer.

+

+ + + + +
+ + + + + + + + + +
bool CFrame::open CPoint pPoint = 0  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CFrame::setCursor CCursorType  type  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool CFrame::setDropActive bool  val  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CFrame::setFocusView CView pView  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
long CFrame::setModalView CView pView  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual void CFrame::setOpenFlag bool  val  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CFrame::setParentSystemWindow void *  val  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool CFrame::setPosition CCoord  x,
CCoord  y
[virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool CFrame::setSize CCoord  width,
CCoord  height
[virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CFrame::setViewSize CRect inRect  )  [virtual]
+
+ + + + + +
+   + + +

+

Parameters:
+ + +
rect the new size of the container
+
+ +

+Reimplemented from CViewContainer.

+

+ + + + +
+ + + + + + + + + +
void CFrame::update CDrawContext pContext  )  [virtual]
+
+ + + + + +
+   + + +

+ +

+Reimplemented from CViewContainer.

+

+ + + + +
+ + + + + + + + + +
virtual bool CFrame::updatesDisabled bool  state  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual bool CFrame::updatesDisabled  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
bool CFrame::bDropActive [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
bool CFrame::bFirstDraw [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
bool CFrame::bOpenFlag [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
bool CFrame::bUpdatesDisabled [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
void* CFrame::pEditor [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CView* CFrame::pFocusView [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CView* CFrame::pModalView [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
void* CFrame::pSystemWindow [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_frame.png b/vstgui.sf/vstgui/Documentation/html/class_c_frame.png new file mode 100644 index 0000000..b826261 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_frame.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_horizontal_slider-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_horizontal_slider-members.html new file mode 100644 index 0000000..fe8cea8 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_horizontal_slider-members.html @@ -0,0 +1,173 @@ + + +VSTGUI: Member List + + + + + + +

CHorizontalSlider Member List

This is the complete list of members for CHorizontalSlider, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attached(CView *parent)CSlider [virtual]
backOffsetCControl [protected]
bDirtyCView [protected]
bDrawTransparentEnabledCSlider [protected]
beginEdit()CControl [virtual]
bFreeClickCSlider [protected]
bMouseEnabledCView [protected]
bounceValue()CControl [virtual]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
CControl(const CRect &size, CControlListener *listener=0, long tag=0, CBitmap *pBackground=0)CControl
CView::CControl classCView [friend]
CFrame classCView [friend]
checkDefaultValue(CDrawContext *pContext, long button)CControl [virtual]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
CHorizontalSlider(const CRect &size, CControlListener *listener, long tag, long iMinPos, long iMaxPos, CBitmap *handle, CBitmap *background, CPoint &offset, const long style=kRight)CHorizontalSlider
CHorizontalSlider(const CRect &rect, CControlListener *listener, long tag, CPoint &offsetHandle, long rangeHandle, CBitmap *handle, CBitmap *background, CPoint &offset, const long style=kRight)CHorizontalSlider
copyBackOffset()CControl [virtual]
CReferenceCounter()CReferenceCounter [inline]
CSlider(const CRect &size, CControlListener *listener, long tag, long iMinPos, long iMaxPos, CBitmap *handle, CBitmap *background, CPoint &offset, const long style=kLeft|kHorizontal)CSlider
CSlider(const CRect &rect, CControlListener *listener, long tag, CPoint &offsetHandle, long rangeHandle, CBitmap *handle, CBitmap *background, CPoint &offset, const long style=kLeft|kHorizontal)CSlider
CView(const CRect &size)CView
CViewContainer classCView [friend]
defaultValueCControl [protected]
deltaCControl [protected]
doIdleStuff()CControl [inline, virtual]
draw(CDrawContext *)CSlider [virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CView [inline, virtual]
endEdit()CControl [virtual]
forget()CReferenceCounter [inline, virtual]
frameToLocal(CPoint &point) const CView [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackground() const CView [inline, virtual]
getDefaultValue(void) const CControl [inline, virtual]
getEditor() const CView [virtual]
getFrame() const CView [inline]
getFreeClick() const CSlider [inline, virtual]
getHandle() const CSlider [inline, virtual]
getHeight() const CView [inline]
getListener() const CControl [inline]
getMax() const CControl [inline, virtual]
getMin() const CControl [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getOldValue(void) const CControl [inline, virtual]
getParentView() const CView [inline]
getTag() const CControl [inline, virtual]
getTransparency() const CView [inline, virtual]
getValue() const CControl [inline, virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWheelInc() const CControl [inline, virtual]
getWidth() const CView [inline]
getZoomFactor() const CSlider [inline, virtual]
heightControlCSlider [protected]
heightOfSliderCSlider [protected]
hitTest(const CPoint &where, const long buttons=-1)CView [inline, virtual]
isDirty() const CControl [virtual]
isDoubleClick()CControl
isTypeOf(const char *s) const CView [inline, virtual]
lastTicksCControl [protected]
listenerCControl [protected]
localToFrame(CPoint &point) const CView [virtual]
looseFocus(CDrawContext *pContext=0)CView [virtual]
maxTmpCSlider [protected]
minPosCSlider [protected]
minTmpCSlider [protected]
mouse(CDrawContext *pContext, CPoint &where, long button=-1)CSlider [virtual]
mouseableAreaCView [protected]
notify(CView *sender, const char *message)CView [virtual]
offsetCSlider [protected]
offsetHandleCSlider [protected]
oldValueCControl [protected]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onKeyDown(VstKeyCode &keyCode)CSlider [virtual]
onKeyUp(VstKeyCode &keyCode)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CSlider [virtual]
CControl::onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CView [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pHandleCSlider [protected]
pOScreenCSlider [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
rangeHandleCSlider [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CView [virtual]
remember()CReferenceCounter [inline, virtual]
removed(CView *parent)CSlider [virtual]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackground(CBitmap *background)CView [virtual]
setBackOffset(CPoint &offset)CControl [virtual]
setDefaultValue(float val)CControl [inline, virtual]
setDirty(const bool val=true)CControl [virtual]
setDrawTransparentHandle(bool val)CSlider [inline, virtual]
setFreeClick(bool val)CSlider [inline, virtual]
setHandle(CBitmap *pHandle)CSlider [virtual]
setListener(CControlListener *l)CControl [inline]
setMax(float val)CControl [inline, virtual]
setMin(float val)CControl [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setOffsetHandle(CPoint &val)CSlider [virtual]
setOldValue(float val)CControl [inline, virtual]
setTag(long val)CControl [inline, virtual]
setTransparency(bool val)CView [inline, virtual]
setValue(float val)CControl [inline, virtual]
setViewSize(CRect &rect)CView [virtual]
setWantsFocus(bool state)CView [inline, virtual]
setWheelInc(float val)CControl [inline, virtual]
setZoomFactor(float val)CSlider [inline, virtual]
sizeCView [protected]
styleCSlider [protected]
tagCControl [protected]
takeFocus(CDrawContext *pContext=0)CView [virtual]
update(CDrawContext *pContext)CView [protected, virtual]
valueCControl [protected]
vmaxCControl [protected]
vminCControl [protected]
wantsFocus() const CView [inline, virtual]
wheelIncCControl [protected]
widthControlCSlider [protected]
widthOfSliderCSlider [protected]
zoomFactorCSlider [protected]
~CControl()CControl [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CSlider()CSlider [virtual]
~CView()CView [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_horizontal_slider.html b/vstgui.sf/vstgui/Documentation/html/class_c_horizontal_slider.html new file mode 100644 index 0000000..9dd2cac --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_horizontal_slider.html @@ -0,0 +1,226 @@ + + +VSTGUI: CHorizontalSlider Class Reference + + + + + + +

CHorizontalSlider Class Reference

a horizontal slider control +More... +

+#include <vstcontrols.h> +

+

Inheritance diagram for CHorizontalSlider: +

+ +CSlider +CControl +CView +CReferenceCounter + +List of all members. + + + + + + +

Public Member Functions

 CHorizontalSlider (const CRect &size, CControlListener *listener, long tag, long iMinPos, long iMaxPos, CBitmap *handle, CBitmap *background, CPoint &offset, const long style=kRight)
 CHorizontalSlider (const CRect &rect, CControlListener *listener, long tag, CPoint &offsetHandle, long rangeHandle, CBitmap *handle, CBitmap *background, CPoint &offset, const long style=kRight)
+

Detailed Description

+a horizontal slider control +

+This is the horizontal slider. See CSlider. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CHorizontalSlider::CHorizontalSlider const CRect size,
CControlListener listener,
long  tag,
long  iMinPos,
long  iMaxPos,
CBitmap handle,
CBitmap background,
CPoint offset,
const long  style = kRight
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CHorizontalSlider::CHorizontalSlider const CRect rect,
CControlListener listener,
long  tag,
CPoint offsetHandle,
long  rangeHandle,
CBitmap handle,
CBitmap background,
CPoint offset,
const long  style = kRight
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_horizontal_slider.png b/vstgui.sf/vstgui/Documentation/html/class_c_horizontal_slider.png new file mode 100644 index 0000000..8eb091f Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_horizontal_slider.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_horizontal_switch-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_horizontal_switch-members.html new file mode 100644 index 0000000..b1ad86f --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_horizontal_switch-members.html @@ -0,0 +1,151 @@ + + +VSTGUI: Member List + + + + + + +

CHorizontalSwitch Member List

This is the complete list of members for CHorizontalSwitch, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attached(CView *view)CView [inline, virtual]
backOffsetCControl [protected]
bDirtyCView [protected]
beginEdit()CControl [virtual]
bMouseEnabledCView [protected]
bounceValue()CControl [virtual]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
CControl(const CRect &size, CControlListener *listener=0, long tag=0, CBitmap *pBackground=0)CControl
CView::CControl classCView [friend]
CFrame classCView [friend]
checkDefaultValue(CDrawContext *pContext, long button)CControl [virtual]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
CHorizontalSwitch(const CRect &size, CControlListener *listener, long tag, CBitmap *background, CPoint &offset)CHorizontalSwitch
CHorizontalSwitch(const CRect &size, CControlListener *listener, long tag, long subPixmaps, CCoord heightOfOneImage, long iMaxPositions, CBitmap *background, CPoint &offset)CHorizontalSwitch
copyBackOffset()CControl [virtual]
CReferenceCounter()CReferenceCounter [inline]
CView(const CRect &size)CView
CViewContainer classCView [friend]
defaultValueCControl [protected]
deltaCControl [protected]
doIdleStuff()CControl [inline, virtual]
draw(CDrawContext *)CHorizontalSwitch [virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CView [inline, virtual]
endEdit()CControl [virtual]
forget()CReferenceCounter [inline, virtual]
frameToLocal(CPoint &point) const CView [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackground() const CView [inline, virtual]
getDefaultValue(void) const CControl [inline, virtual]
getEditor() const CView [virtual]
getFrame() const CView [inline]
getHeight() const CView [inline]
getListener() const CControl [inline]
getMax() const CControl [inline, virtual]
getMin() const CControl [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getOldValue(void) const CControl [inline, virtual]
getParentView() const CView [inline]
getTag() const CControl [inline, virtual]
getTransparency() const CView [inline, virtual]
getValue() const CControl [inline, virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWheelInc() const CControl [inline, virtual]
getWidth() const CView [inline]
heightOfOneImageCHorizontalSwitch [protected]
hitTest(const CPoint &where, const long buttons=-1)CView [inline, virtual]
iMaxPositionsCHorizontalSwitch [protected]
isDirty() const CControl [virtual]
isDoubleClick()CControl
isTypeOf(const char *s) const CView [inline, virtual]
lastTicksCControl [protected]
listenerCControl [protected]
localToFrame(CPoint &point) const CView [virtual]
looseFocus(CDrawContext *pContext=0)CView [virtual]
mouse(CDrawContext *pContext, CPoint &where, long button=-1)CHorizontalSwitch [virtual]
mouseableAreaCView [protected]
notify(CView *sender, const char *message)CView [virtual]
offsetCHorizontalSwitch [protected]
oldValueCControl [protected]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onKeyDown(VstKeyCode &keyCode)CView [virtual]
onKeyUp(VstKeyCode &keyCode)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CView [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CView [virtual]
remember()CReferenceCounter [inline, virtual]
removed(CView *parent)CView [inline, virtual]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackground(CBitmap *background)CView [virtual]
setBackOffset(CPoint &offset)CControl [virtual]
setDefaultValue(float val)CControl [inline, virtual]
setDirty(const bool val=true)CControl [virtual]
setListener(CControlListener *l)CControl [inline]
setMax(float val)CControl [inline, virtual]
setMin(float val)CControl [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setOldValue(float val)CControl [inline, virtual]
setTag(long val)CControl [inline, virtual]
setTransparency(bool val)CView [inline, virtual]
setValue(float val)CControl [inline, virtual]
setViewSize(CRect &rect)CView [virtual]
setWantsFocus(bool state)CView [inline, virtual]
setWheelInc(float val)CControl [inline, virtual]
sizeCView [protected]
subPixmapsCHorizontalSwitch [protected]
tagCControl [protected]
takeFocus(CDrawContext *pContext=0)CView [virtual]
update(CDrawContext *pContext)CView [protected, virtual]
valueCControl [protected]
vmaxCControl [protected]
vminCControl [protected]
wantsFocus() const CView [inline, virtual]
wheelIncCControl [protected]
~CControl()CControl [virtual]
~CHorizontalSwitch()CHorizontalSwitch [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CView()CView [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_horizontal_switch.html b/vstgui.sf/vstgui/Documentation/html/class_c_horizontal_switch.html new file mode 100644 index 0000000..a1ac33d --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_horizontal_switch.html @@ -0,0 +1,412 @@ + + +VSTGUI: CHorizontalSwitch Class Reference + + + + + + +

CHorizontalSwitch Class Reference

a horizontal switch control +More... +

+#include <vstcontrols.h> +

+

Inheritance diagram for CHorizontalSwitch: +

+ +CControl +CView +CReferenceCounter + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CHorizontalSwitch (const CRect &size, CControlListener *listener, long tag, CBitmap *background, CPoint &offset)
 CHorizontalSwitch (const CRect &size, CControlListener *listener, long tag, long subPixmaps, CCoord heightOfOneImage, long iMaxPositions, CBitmap *background, CPoint &offset)
virtual ~CHorizontalSwitch ()
virtual void draw (CDrawContext *)
 called if the view should draw itself
virtual void mouse (CDrawContext *pContext, CPoint &where, long button=-1)
 called if a mouse click event occurs

Protected Attributes

CPoint offset
long subPixmaps
long iMaxPositions
CCoord heightOfOneImage
+

Detailed Description

+a horizontal switch control +

+Same as the CVerticalSwitch but horizontal. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CHorizontalSwitch::CHorizontalSwitch const CRect size,
CControlListener listener,
long  tag,
CBitmap background,
CPoint offset
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CHorizontalSwitch::CHorizontalSwitch const CRect size,
CControlListener listener,
long  tag,
long  subPixmaps,
CCoord  heightOfOneImage,
long  iMaxPositions,
CBitmap background,
CPoint offset
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CHorizontalSwitch::~CHorizontalSwitch  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
void CHorizontalSwitch::draw CDrawContext  )  [virtual]
+
+ + + + + +
+   + + +

+called if the view should draw itself +

+ +

+Implements CControl.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CHorizontalSwitch::mouse CDrawContext pContext,
CPoint where,
long  button = -1
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse click event occurs +

+ +

+Reimplemented from CView.

+


Member Data Documentation

+

+ + + + +
+ + + + +
CCoord CHorizontalSwitch::heightOfOneImage [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CHorizontalSwitch::iMaxPositions [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CPoint CHorizontalSwitch::offset [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CHorizontalSwitch::subPixmaps [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_horizontal_switch.png b/vstgui.sf/vstgui/Documentation/html/class_c_horizontal_switch.png new file mode 100644 index 0000000..b44cf10 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_horizontal_switch.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_kick_button-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_kick_button-members.html new file mode 100644 index 0000000..7545bb5 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_kick_button-members.html @@ -0,0 +1,149 @@ + + +VSTGUI: Member List + + + + + + +

CKickButton Member List

This is the complete list of members for CKickButton, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attached(CView *view)CView [inline, virtual]
backOffsetCControl [protected]
bDirtyCView [protected]
beginEdit()CControl [virtual]
bMouseEnabledCView [protected]
bounceValue()CControl [virtual]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
CControl(const CRect &size, CControlListener *listener=0, long tag=0, CBitmap *pBackground=0)CControl
CView::CControl classCView [friend]
CFrame classCView [friend]
checkDefaultValue(CDrawContext *pContext, long button)CControl [virtual]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
CKickButton(const CRect &size, CControlListener *listener, long tag, CBitmap *background, CPoint &offset)CKickButton
CKickButton(const CRect &size, CControlListener *listener, long tag, CCoord heightOfOneImage, CBitmap *background, CPoint &offset)CKickButton
copyBackOffset()CControl [virtual]
CReferenceCounter()CReferenceCounter [inline]
CView(const CRect &size)CView
CViewContainer classCView [friend]
defaultValueCControl [protected]
deltaCControl [protected]
doIdleStuff()CControl [inline, virtual]
draw(CDrawContext *)CKickButton [virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CView [inline, virtual]
endEdit()CControl [virtual]
forget()CReferenceCounter [inline, virtual]
frameToLocal(CPoint &point) const CView [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackground() const CView [inline, virtual]
getDefaultValue(void) const CControl [inline, virtual]
getEditor() const CView [virtual]
getFrame() const CView [inline]
getHeight() const CView [inline]
getListener() const CControl [inline]
getMax() const CControl [inline, virtual]
getMin() const CControl [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getOldValue(void) const CControl [inline, virtual]
getParentView() const CView [inline]
getTag() const CControl [inline, virtual]
getTransparency() const CView [inline, virtual]
getValue() const CControl [inline, virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWheelInc() const CControl [inline, virtual]
getWidth() const CView [inline]
heightOfOneImageCKickButton [protected]
hitTest(const CPoint &where, const long buttons=-1)CView [inline, virtual]
isDirty() const CControl [virtual]
isDoubleClick()CControl
isTypeOf(const char *s) const CView [inline, virtual]
lastTicksCControl [protected]
listenerCControl [protected]
localToFrame(CPoint &point) const CView [virtual]
looseFocus(CDrawContext *pContext=0)CView [virtual]
mouse(CDrawContext *pContext, CPoint &where, long button=-1)CKickButton [virtual]
mouseableAreaCView [protected]
notify(CView *sender, const char *message)CView [virtual]
offsetCKickButton [protected]
oldValueCControl [protected]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onKeyDown(VstKeyCode &keyCode)CView [virtual]
onKeyUp(VstKeyCode &keyCode)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CView [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CView [virtual]
remember()CReferenceCounter [inline, virtual]
removed(CView *parent)CView [inline, virtual]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackground(CBitmap *background)CView [virtual]
setBackOffset(CPoint &offset)CControl [virtual]
setDefaultValue(float val)CControl [inline, virtual]
setDirty(const bool val=true)CControl [virtual]
setListener(CControlListener *l)CControl [inline]
setMax(float val)CControl [inline, virtual]
setMin(float val)CControl [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setOldValue(float val)CControl [inline, virtual]
setTag(long val)CControl [inline, virtual]
setTransparency(bool val)CView [inline, virtual]
setValue(float val)CControl [inline, virtual]
setViewSize(CRect &rect)CView [virtual]
setWantsFocus(bool state)CView [inline, virtual]
setWheelInc(float val)CControl [inline, virtual]
sizeCView [protected]
tagCControl [protected]
takeFocus(CDrawContext *pContext=0)CView [virtual]
update(CDrawContext *pContext)CView [protected, virtual]
valueCControl [protected]
vmaxCControl [protected]
vminCControl [protected]
wantsFocus() const CView [inline, virtual]
wheelIncCControl [protected]
~CControl()CControl [virtual]
~CKickButton()CKickButton [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CView()CView [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_kick_button.html b/vstgui.sf/vstgui/Documentation/html/class_c_kick_button.html new file mode 100644 index 0000000..bf10704 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_kick_button.html @@ -0,0 +1,345 @@ + + +VSTGUI: CKickButton Class Reference + + + + + + +

CKickButton Class Reference

#include <vstcontrols.h> +

+

Inheritance diagram for CKickButton: +

+ +CControl +CView +CReferenceCounter + +List of all members. + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CKickButton (const CRect &size, CControlListener *listener, long tag, CBitmap *background, CPoint &offset)
 CKickButton (const CRect &size, CControlListener *listener, long tag, CCoord heightOfOneImage, CBitmap *background, CPoint &offset)
virtual ~CKickButton ()
virtual void draw (CDrawContext *)
 called if the view should draw itself
virtual void mouse (CDrawContext *pContext, CPoint &where, long button=-1)
 called if a mouse click event occurs

Protected Attributes

CPoint offset
CCoord heightOfOneImage
+

Detailed Description

+Define a button with 2 states using 2 subpixmaps. One click on it, then the second subpixmap is displayed. When the mouse button is relaxed, the first subpixmap is framed. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CKickButton::CKickButton const CRect size,
CControlListener listener,
long  tag,
CBitmap background,
CPoint offset
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CKickButton::CKickButton const CRect size,
CControlListener listener,
long  tag,
CCoord  heightOfOneImage,
CBitmap background,
CPoint offset
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CKickButton::~CKickButton  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
void CKickButton::draw CDrawContext  )  [virtual]
+
+ + + + + +
+   + + +

+called if the view should draw itself +

+ +

+Implements CControl.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CKickButton::mouse CDrawContext pContext,
CPoint where,
long  button = -1
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse click event occurs +

+ +

+Reimplemented from CView.

+


Member Data Documentation

+

+ + + + +
+ + + + +
CCoord CKickButton::heightOfOneImage [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CPoint CKickButton::offset [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_kick_button.png b/vstgui.sf/vstgui/Documentation/html/class_c_kick_button.png new file mode 100644 index 0000000..26b0a49 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_kick_button.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_knob-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_knob-members.html new file mode 100644 index 0000000..b279b08 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_knob-members.html @@ -0,0 +1,172 @@ + + +VSTGUI: Member List + + + + + + +

CKnob Member List

This is the complete list of members for CKnob, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
aCoefCKnob [protected]
attached(CView *view)CView [inline, virtual]
backOffsetCControl [protected]
bCoefCKnob [protected]
bDirtyCView [protected]
beginEdit()CControl [virtual]
bMouseEnabledCView [protected]
bounceValue()CControl [virtual]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
CControl(const CRect &size, CControlListener *listener=0, long tag=0, CBitmap *pBackground=0)CControl
CView::CControl classCView [friend]
CFrame classCView [friend]
checkDefaultValue(CDrawContext *pContext, long button)CControl [virtual]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
CKnob(const CRect &size, CControlListener *listener, long tag, CBitmap *background, CBitmap *handle, const CPoint &offset)CKnob
colorHandleCKnob [protected]
colorShadowHandleCKnob [protected]
compute()CKnob [protected]
copyBackOffset()CControl [virtual]
CReferenceCounter()CReferenceCounter [inline]
CView(const CRect &size)CView
CViewContainer classCView [friend]
defaultValueCControl [protected]
deltaCControl [protected]
doIdleStuff()CControl [inline, virtual]
draw(CDrawContext *pContext)CKnob [virtual]
drawHandle(CDrawContext *pContext)CKnob [virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CView [inline, virtual]
endEdit()CControl [virtual]
forget()CReferenceCounter [inline, virtual]
frameToLocal(CPoint &point) const CView [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackground() const CView [inline, virtual]
getDefaultValue(void) const CControl [inline, virtual]
getEditor() const CView [virtual]
getFrame() const CView [inline]
getHeight() const CView [inline]
getListener() const CControl [inline]
getMax() const CControl [inline, virtual]
getMin() const CControl [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getOldValue(void) const CControl [inline, virtual]
getParentView() const CView [inline]
getRangeAngle() const CKnob [inline, virtual]
getStartAngle() const CKnob [inline, virtual]
getTag() const CControl [inline, virtual]
getTransparency() const CView [inline, virtual]
getValue() const CControl [inline, virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWheelInc() const CControl [inline, virtual]
getWidth() const CView [inline]
getZoomFactor() const CKnob [inline, virtual]
halfAngleCKnob [protected]
hitTest(const CPoint &where, const long buttons=-1)CView [inline, virtual]
insetCKnob [protected]
isDirty() const CControl [virtual]
isDoubleClick()CControl
isTypeOf(const char *s) const CView [inline, virtual]
lastTicksCControl [protected]
listenerCControl [protected]
localToFrame(CPoint &point) const CView [virtual]
looseFocus(CDrawContext *pContext=0)CView [virtual]
mouse(CDrawContext *pContext, CPoint &where, long button=-1)CKnob [virtual]
mouseableAreaCView [protected]
notify(CView *sender, const char *message)CView [virtual]
offsetCKnob [protected]
oldValueCControl [protected]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onKeyDown(VstKeyCode &keyCode)CKnob [virtual]
onKeyUp(VstKeyCode &keyCode)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CKnob [virtual]
CControl::onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CView [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pHandleCKnob [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
radiusCKnob [protected]
rangeAngleCKnob [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CView [virtual]
remember()CReferenceCounter [inline, virtual]
removed(CView *parent)CView [inline, virtual]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackground(CBitmap *background)CView [virtual]
setBackOffset(CPoint &offset)CControl [virtual]
setColorHandle(CColor color)CKnob [virtual]
setColorShadowHandle(CColor color)CKnob [virtual]
setDefaultValue(float val)CControl [inline, virtual]
setDirty(const bool val=true)CControl [virtual]
setHandleBitmap(CBitmap *bitmap)CKnob [virtual]
setInsetValue(long val)CKnob [inline, virtual]
setListener(CControlListener *l)CControl [inline]
setMax(float val)CControl [inline, virtual]
setMin(float val)CControl [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setOldValue(float val)CControl [inline, virtual]
setRangeAngle(float val)CKnob [virtual]
setStartAngle(float val)CKnob [virtual]
setTag(long val)CControl [inline, virtual]
setTransparency(bool val)CView [inline, virtual]
setValue(float val)CControl [inline, virtual]
setViewSize(CRect &rect)CView [virtual]
setWantsFocus(bool state)CView [inline, virtual]
setWheelInc(float val)CControl [inline, virtual]
setZoomFactor(float val)CKnob [inline, virtual]
sizeCView [protected]
startAngleCKnob [protected]
tagCControl [protected]
takeFocus(CDrawContext *pContext=0)CView [virtual]
update(CDrawContext *pContext)CView [protected, virtual]
valueCControl [protected]
valueFromPoint(CPoint &point) const CKnob [virtual]
valueToPoint(CPoint &point) const CKnob [virtual]
vmaxCControl [protected]
vminCControl [protected]
wantsFocus() const CView [inline, virtual]
wheelIncCControl [protected]
zoomFactorCKnob [protected]
~CControl()CControl [virtual]
~CKnob()CKnob [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CView()CView [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_knob.html b/vstgui.sf/vstgui/Documentation/html/class_c_knob.html new file mode 100644 index 0000000..c5b6e7b --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_knob.html @@ -0,0 +1,1048 @@ + + +VSTGUI: CKnob Class Reference + + + + + + +

CKnob Class Reference

a knob control +More... +

+#include <vstcontrols.h> +

+

Inheritance diagram for CKnob: +

+ +CControl +CView +CReferenceCounter +CAnimKnob + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CKnob (const CRect &size, CControlListener *listener, long tag, CBitmap *background, CBitmap *handle, const CPoint &offset)
virtual ~CKnob ()
virtual void draw (CDrawContext *pContext)
 called if the view should draw itself
virtual void mouse (CDrawContext *pContext, CPoint &where, long button=-1)
 called if a mouse click event occurs
virtual bool onWheel (CDrawContext *pContext, const CPoint &where, float distance)
 called if a mouse wheel event is happening over this view
virtual long onKeyDown (VstKeyCode &keyCode)
 called if a key down event occurs and this view has focus
virtual void drawHandle (CDrawContext *pContext)
virtual void setStartAngle (float val)
virtual float getStartAngle () const
virtual void setRangeAngle (float val)
virtual float getRangeAngle () const
virtual void valueToPoint (CPoint &point) const
virtual float valueFromPoint (CPoint &point) const
virtual void setInsetValue (long val)
virtual void setColorShadowHandle (CColor color)
virtual void setColorHandle (CColor color)
virtual void setHandleBitmap (CBitmap *bitmap)
virtual void setZoomFactor (float val)
virtual float getZoomFactor () const

Protected Member Functions

void compute ()

Protected Attributes

CPoint offset
CColor colorHandle
CColor colorShadowHandle
CBitmappHandle
long inset
float startAngle
float rangeAngle
float halfAngle
float aCoef
float bCoef
float radius
float zoomFactor
+

Detailed Description

+a knob control +

+Define a knob with a given background and foreground handle. The handle describes a circle over the background (between -45deg and +225deg). By clicking Alt+Left Mouse the default value is used. By clicking Alt+Left Mouse the value changes with a vertical move (version 2.1) +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CKnob::CKnob const CRect size,
CControlListener listener,
long  tag,
CBitmap background,
CBitmap handle,
const CPoint offset
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CKnob::~CKnob  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
void CKnob::compute  )  [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CKnob::draw CDrawContext pContext  )  [virtual]
+
+ + + + + +
+   + + +

+called if the view should draw itself +

+ +

+Implements CControl. +

+Reimplemented in CAnimKnob.

+

+ + + + +
+ + + + + + + + + +
void CKnob::drawHandle CDrawContext pContext  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual float CKnob::getRangeAngle  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual float CKnob::getStartAngle  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual float CKnob::getZoomFactor  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CKnob::mouse CDrawContext pContext,
CPoint where,
long  button = -1
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse click event occurs +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + +
long CKnob::onKeyDown VstKeyCode keyCode  )  [virtual]
+
+ + + + + +
+   + + +

+called if a key down event occurs and this view has focus +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool CKnob::onWheel CDrawContext pContext,
const CPoint where,
float  distance
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse wheel event is happening over this view +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + +
void CKnob::setColorHandle CColor  color  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CKnob::setColorShadowHandle CColor  color  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CKnob::setHandleBitmap CBitmap bitmap  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual void CKnob::setInsetValue long  val  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CKnob::setRangeAngle float  val  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CKnob::setStartAngle float  val  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual void CKnob::setZoomFactor float  val  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
float CKnob::valueFromPoint CPoint point  )  const [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CKnob::valueToPoint CPoint point  )  const [virtual]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
float CKnob::aCoef [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
float CKnob::bCoef [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor CKnob::colorHandle [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor CKnob::colorShadowHandle [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
float CKnob::halfAngle [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CKnob::inset [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CPoint CKnob::offset [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CBitmap* CKnob::pHandle [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
float CKnob::radius [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
float CKnob::rangeAngle [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
float CKnob::startAngle [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
float CKnob::zoomFactor [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_knob.png b/vstgui.sf/vstgui/Documentation/html/class_c_knob.png new file mode 100644 index 0000000..e81b50d Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_knob.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_movie_bitmap-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_movie_bitmap-members.html new file mode 100644 index 0000000..91c85e8 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_movie_bitmap-members.html @@ -0,0 +1,150 @@ + + +VSTGUI: Member List + + + + + + +

CMovieBitmap Member List

This is the complete list of members for CMovieBitmap, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attached(CView *view)CView [inline, virtual]
backOffsetCControl [protected]
bDirtyCView [protected]
beginEdit()CControl [virtual]
bMouseEnabledCView [protected]
bounceValue()CControl [virtual]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
CControl(const CRect &size, CControlListener *listener=0, long tag=0, CBitmap *pBackground=0)CControl
CView::CControl classCView [friend]
CFrame classCView [friend]
checkDefaultValue(CDrawContext *pContext, long button)CControl [virtual]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
CMovieBitmap(const CRect &size, CControlListener *listener, long tag, CBitmap *background, CPoint &offset)CMovieBitmap
CMovieBitmap(const CRect &size, CControlListener *listener, long tag, long subPixmaps, CCoord heightOfOneImage, CBitmap *background, CPoint &offset)CMovieBitmap
copyBackOffset()CControl [virtual]
CReferenceCounter()CReferenceCounter [inline]
CView(const CRect &size)CView
CViewContainer classCView [friend]
defaultValueCControl [protected]
deltaCControl [protected]
doIdleStuff()CControl [inline, virtual]
draw(CDrawContext *)CMovieBitmap [virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CView [inline, virtual]
endEdit()CControl [virtual]
forget()CReferenceCounter [inline, virtual]
frameToLocal(CPoint &point) const CView [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackground() const CView [inline, virtual]
getDefaultValue(void) const CControl [inline, virtual]
getEditor() const CView [virtual]
getFrame() const CView [inline]
getHeight() const CView [inline]
getListener() const CControl [inline]
getMax() const CControl [inline, virtual]
getMin() const CControl [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getOldValue(void) const CControl [inline, virtual]
getParentView() const CView [inline]
getTag() const CControl [inline, virtual]
getTransparency() const CView [inline, virtual]
getValue() const CControl [inline, virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWheelInc() const CControl [inline, virtual]
getWidth() const CView [inline]
heightOfOneImageCMovieBitmap [protected]
hitTest(const CPoint &where, const long buttons=-1)CView [inline, virtual]
isDirty() const CControl [virtual]
isDoubleClick()CControl
isTypeOf(const char *s) const CView [inline, virtual]
lastTicksCControl [protected]
listenerCControl [protected]
localToFrame(CPoint &point) const CView [virtual]
looseFocus(CDrawContext *pContext=0)CView [virtual]
mouse(CDrawContext *pContext, CPoint &where, long buttons=-1)CView [virtual]
mouseableAreaCView [protected]
notify(CView *sender, const char *message)CView [virtual]
offsetCMovieBitmap [protected]
oldValueCControl [protected]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onKeyDown(VstKeyCode &keyCode)CView [virtual]
onKeyUp(VstKeyCode &keyCode)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CView [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CView [virtual]
remember()CReferenceCounter [inline, virtual]
removed(CView *parent)CView [inline, virtual]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackground(CBitmap *background)CView [virtual]
setBackOffset(CPoint &offset)CControl [virtual]
setDefaultValue(float val)CControl [inline, virtual]
setDirty(const bool val=true)CControl [virtual]
setListener(CControlListener *l)CControl [inline]
setMax(float val)CControl [inline, virtual]
setMin(float val)CControl [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setOldValue(float val)CControl [inline, virtual]
setTag(long val)CControl [inline, virtual]
setTransparency(bool val)CView [inline, virtual]
setValue(float val)CControl [inline, virtual]
setViewSize(CRect &rect)CView [virtual]
setWantsFocus(bool state)CView [inline, virtual]
setWheelInc(float val)CControl [inline, virtual]
sizeCView [protected]
subPixmapsCMovieBitmap [protected]
tagCControl [protected]
takeFocus(CDrawContext *pContext=0)CView [virtual]
update(CDrawContext *pContext)CView [protected, virtual]
valueCControl [protected]
vmaxCControl [protected]
vminCControl [protected]
wantsFocus() const CView [inline, virtual]
wheelIncCControl [protected]
~CControl()CControl [virtual]
~CMovieBitmap()CMovieBitmap [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CView()CView [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_movie_bitmap.html b/vstgui.sf/vstgui/Documentation/html/class_c_movie_bitmap.html new file mode 100644 index 0000000..e676686 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_movie_bitmap.html @@ -0,0 +1,331 @@ + + +VSTGUI: CMovieBitmap Class Reference + + + + + + +

CMovieBitmap Class Reference

a bitmap control that displays different bitmaps according to its current value +More... +

+#include <vstcontrols.h> +

+

Inheritance diagram for CMovieBitmap: +

+ +CControl +CView +CReferenceCounter + +List of all members. + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CMovieBitmap (const CRect &size, CControlListener *listener, long tag, CBitmap *background, CPoint &offset)
 CMovieBitmap (const CRect &size, CControlListener *listener, long tag, long subPixmaps, CCoord heightOfOneImage, CBitmap *background, CPoint &offset)
virtual ~CMovieBitmap ()
virtual void draw (CDrawContext *)
 called if the view should draw itself

Protected Attributes

CPoint offset
long subPixmaps
CCoord heightOfOneImage
+

Detailed Description

+a bitmap control that displays different bitmaps according to its current value +

+A movie pixmap allows to display different subpixmaps according to its current value. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CMovieBitmap::CMovieBitmap const CRect size,
CControlListener listener,
long  tag,
CBitmap background,
CPoint offset
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CMovieBitmap::CMovieBitmap const CRect size,
CControlListener listener,
long  tag,
long  subPixmaps,
CCoord  heightOfOneImage,
CBitmap background,
CPoint offset
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CMovieBitmap::~CMovieBitmap  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
void CMovieBitmap::draw CDrawContext  )  [virtual]
+
+ + + + + +
+   + + +

+called if the view should draw itself +

+ +

+Implements CControl.

+


Member Data Documentation

+

+ + + + +
+ + + + +
CCoord CMovieBitmap::heightOfOneImage [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CPoint CMovieBitmap::offset [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CMovieBitmap::subPixmaps [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_movie_bitmap.png b/vstgui.sf/vstgui/Documentation/html/class_c_movie_bitmap.png new file mode 100644 index 0000000..5016ef3 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_movie_bitmap.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_movie_button-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_movie_button-members.html new file mode 100644 index 0000000..6ce3205 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_movie_button-members.html @@ -0,0 +1,150 @@ + + +VSTGUI: Member List + + + + + + +

CMovieButton Member List

This is the complete list of members for CMovieButton, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attached(CView *view)CView [inline, virtual]
backOffsetCControl [protected]
bDirtyCView [protected]
beginEdit()CControl [virtual]
bMouseEnabledCView [protected]
bounceValue()CControl [virtual]
bTransparencyEnabledCView [protected]
buttonStateCMovieButton [protected]
bWantsFocusCView [protected]
CControl(const CRect &size, CControlListener *listener=0, long tag=0, CBitmap *pBackground=0)CControl
CView::CControl classCView [friend]
CFrame classCView [friend]
checkDefaultValue(CDrawContext *pContext, long button)CControl [virtual]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
CMovieButton(const CRect &size, CControlListener *listener, long tag, CBitmap *background, CPoint &offset)CMovieButton
CMovieButton(const CRect &size, CControlListener *listener, long tag, CCoord heightOfOneImage, CBitmap *background, CPoint &offset)CMovieButton
copyBackOffset()CControl [virtual]
CReferenceCounter()CReferenceCounter [inline]
CView(const CRect &size)CView
CViewContainer classCView [friend]
defaultValueCControl [protected]
deltaCControl [protected]
doIdleStuff()CControl [inline, virtual]
draw(CDrawContext *)CMovieButton [virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CView [inline, virtual]
endEdit()CControl [virtual]
forget()CReferenceCounter [inline, virtual]
frameToLocal(CPoint &point) const CView [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackground() const CView [inline, virtual]
getDefaultValue(void) const CControl [inline, virtual]
getEditor() const CView [virtual]
getFrame() const CView [inline]
getHeight() const CView [inline]
getListener() const CControl [inline]
getMax() const CControl [inline, virtual]
getMin() const CControl [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getOldValue(void) const CControl [inline, virtual]
getParentView() const CView [inline]
getTag() const CControl [inline, virtual]
getTransparency() const CView [inline, virtual]
getValue() const CControl [inline, virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWheelInc() const CControl [inline, virtual]
getWidth() const CView [inline]
heightOfOneImageCMovieButton [protected]
hitTest(const CPoint &where, const long buttons=-1)CView [inline, virtual]
isDirty() const CControl [virtual]
isDoubleClick()CControl
isTypeOf(const char *s) const CView [inline, virtual]
lastTicksCControl [protected]
listenerCControl [protected]
localToFrame(CPoint &point) const CView [virtual]
looseFocus(CDrawContext *pContext=0)CView [virtual]
mouse(CDrawContext *pContext, CPoint &where, long button=-1)CMovieButton [virtual]
mouseableAreaCView [protected]
notify(CView *sender, const char *message)CView [virtual]
offsetCMovieButton [protected]
oldValueCControl [protected]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onKeyDown(VstKeyCode &keyCode)CView [virtual]
onKeyUp(VstKeyCode &keyCode)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CView [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CView [virtual]
remember()CReferenceCounter [inline, virtual]
removed(CView *parent)CView [inline, virtual]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackground(CBitmap *background)CView [virtual]
setBackOffset(CPoint &offset)CControl [virtual]
setDefaultValue(float val)CControl [inline, virtual]
setDirty(const bool val=true)CControl [virtual]
setListener(CControlListener *l)CControl [inline]
setMax(float val)CControl [inline, virtual]
setMin(float val)CControl [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setOldValue(float val)CControl [inline, virtual]
setTag(long val)CControl [inline, virtual]
setTransparency(bool val)CView [inline, virtual]
setValue(float val)CControl [inline, virtual]
setViewSize(CRect &rect)CView [virtual]
setWantsFocus(bool state)CView [inline, virtual]
setWheelInc(float val)CControl [inline, virtual]
sizeCView [protected]
tagCControl [protected]
takeFocus(CDrawContext *pContext=0)CView [virtual]
update(CDrawContext *pContext)CView [protected, virtual]
valueCControl [protected]
vmaxCControl [protected]
vminCControl [protected]
wantsFocus() const CView [inline, virtual]
wheelIncCControl [protected]
~CControl()CControl [virtual]
~CMovieButton()CMovieButton [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CView()CView [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_movie_button.html b/vstgui.sf/vstgui/Documentation/html/class_c_movie_button.html new file mode 100644 index 0000000..82790e0 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_movie_button.html @@ -0,0 +1,375 @@ + + +VSTGUI: CMovieButton Class Reference + + + + + + +

CMovieButton Class Reference

a bi-states button with 2 subbitmaps +More... +

+#include <vstcontrols.h> +

+

Inheritance diagram for CMovieButton: +

+ +CControl +CView +CReferenceCounter + +List of all members. + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CMovieButton (const CRect &size, CControlListener *listener, long tag, CBitmap *background, CPoint &offset)
 CMovieButton (const CRect &size, CControlListener *listener, long tag, CCoord heightOfOneImage, CBitmap *background, CPoint &offset)
virtual ~CMovieButton ()
virtual void draw (CDrawContext *)
 called if the view should draw itself
virtual void mouse (CDrawContext *pContext, CPoint &where, long button=-1)
 called if a mouse click event occurs

Protected Attributes

CPoint offset
CCoord heightOfOneImage
float buttonState
+

Detailed Description

+a bi-states button with 2 subbitmaps +

+A movie button is a bi-states button with 2 subpixmaps. These subpixmaps are stacked in the pixmap. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CMovieButton::CMovieButton const CRect size,
CControlListener listener,
long  tag,
CBitmap background,
CPoint offset
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CMovieButton::CMovieButton const CRect size,
CControlListener listener,
long  tag,
CCoord  heightOfOneImage,
CBitmap background,
CPoint offset
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CMovieButton::~CMovieButton  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
void CMovieButton::draw CDrawContext  )  [virtual]
+
+ + + + + +
+   + + +

+called if the view should draw itself +

+ +

+Implements CControl.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CMovieButton::mouse CDrawContext pContext,
CPoint where,
long  button = -1
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse click event occurs +

+ +

+Reimplemented from CView.

+


Member Data Documentation

+

+ + + + +
+ + + + +
float CMovieButton::buttonState [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord CMovieButton::heightOfOneImage [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CPoint CMovieButton::offset [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_movie_button.png b/vstgui.sf/vstgui/Documentation/html/class_c_movie_button.png new file mode 100644 index 0000000..fc56ca0 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_movie_button.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_offscreen_context-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_offscreen_context-members.html new file mode 100644 index 0000000..4905325 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_offscreen_context-members.html @@ -0,0 +1,123 @@ + + +VSTGUI: Member List + + + + + + +

COffscreenContext Member List

This is the complete list of members for COffscreenContext, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
backgroundColorCOffscreenContext [protected]
bDestroyPixmapCOffscreenContext [protected]
CBitmap classCDrawContext [friend]
CDrawContext(CFrame *pFrame, void *pSystemContext, void *pWindow=0)CDrawContext
clipRectCDrawContext [protected]
COffscreenContext(CDrawContext *pContext, CBitmap *pBitmap, bool drawInBitmap=false)COffscreenContext
COffscreenContext(CFrame *pFrame, long width, long height, const CColor backgroundColor=kBlackCColor)COffscreenContext
CDrawContext::COffscreenContext classCDrawContext [friend]
copyFrom(CDrawContext *pContext, CRect destRect, CPoint srcOffset=CPoint(0, 0))COffscreenContext
copyTo(CDrawContext *pContext, CRect &srcRect, CPoint destOffset=CPoint(0, 0))COffscreenContext
CReferenceCounter()CReferenceCounter [inline]
drawArc(const CRect &rect, const float startAngle1, const float endAngle2, const CDrawStyle drawStyle=kDrawStroked)CDrawContext
drawArc(const CRect &rect, const CPoint &point1, const CPoint &point2)CDrawContext
drawEllipse(const CRect &rect, const CDrawStyle drawStyle=kDrawStroked)CDrawContext
drawLines(const CPoint *points, const long &numberOfLines)CDrawContext
drawModeCDrawContext [protected]
drawPoint(const CPoint &point, CColor color)CDrawContext
drawPolygon(const CPoint *pPoints, long numberOfPoints, const CDrawStyle drawStyle=kDrawStroked)CDrawContext
drawRect(const CRect &rect, const CDrawStyle drawStyle=kDrawStroked)CDrawContext
drawString(const char *pString, const CRect &rect, const short opaque=false, const CHoriTxtAlign hAlign=kCenterText)CDrawContext
fillArc(const CRect &rect, const CPoint &point1, const CPoint &point2)CDrawContext
fillColorCDrawContext [protected]
fillEllipse(const CRect &rect)CDrawContext
fillPolygon(const CPoint *pPoint, long numberOfPoints)CDrawContext
fillRect(const CRect &rect)CDrawContext
floodFill(const CPoint &start)CDrawContext
fontColorCDrawContext [protected]
fontIdCDrawContext [protected]
fontSizeCDrawContext [protected]
fontStyleCDrawContext [protected]
forget()CDrawContext [virtual]
frameColorCDrawContext [protected]
frameWidthCDrawContext [protected]
getClipRect(CRect &clip) const CDrawContext [inline]
getDrawMode() const CDrawContext [inline]
getFillColor() const CDrawContext [inline]
getFont() const CDrawContext [inline]
getFontColor() const CDrawContext [inline]
getFontSize() const CDrawContext [inline]
getFrame() const CDrawContext [inline]
getFrameColor() const CDrawContext [inline]
getHeight() const COffscreenContext [inline]
getLineStyle() const CDrawContext [inline]
getLineWidth() const CDrawContext [inline]
getLoc(CPoint &where) const CDrawContext [inline]
getMouseButtons()CDrawContext
getMouseLocation(CPoint &point)CDrawContext
getNbReference() const CReferenceCounter [inline]
getPoint(const CPoint &point)CDrawContext
getStringWidth(const char *pStr)CDrawContext
getSystemContext() const CDrawContext [inline]
getWidth() const COffscreenContext [inline]
getWindow()CDrawContext [inline]
heightCOffscreenContext [protected]
lineStyleCDrawContext [protected]
lineTo(const CPoint &point)CDrawContext
moveTo(const CPoint &point)CDrawContext
offsetCDrawContext
offsetScreenCDrawContext
pBitmapCOffscreenContext [protected]
pBitmapBgCOffscreenContext [protected]
penLocCDrawContext [protected]
pFrameCDrawContext [protected]
polyLine(const CPoint *pPoint, long numberOfPoints)CDrawContext
pSystemContextCDrawContext [protected]
pWindowCDrawContext [protected]
remember()CReferenceCounter [inline, virtual]
resetClipRect()CDrawContext
setClipRect(const CRect &clip)CDrawContext
setDrawMode(CDrawMode mode)CDrawContext
setFillColor(const CColor color)CDrawContext
setFont(CFont fontID, const long size=0, long style=0)CDrawContext
setFontColor(const CColor color)CDrawContext
setFrameColor(const CColor color)CDrawContext
setLineStyle(CLineStyle style)CDrawContext
setLineWidth(CCoord width)CDrawContext
setWindow(void *ptr)CDrawContext [inline]
waitDoubleClick()CDrawContext
waitDrag()CDrawContext
widthCOffscreenContext [protected]
~CDrawContext()CDrawContext [virtual]
~COffscreenContext()COffscreenContext [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_offscreen_context.html b/vstgui.sf/vstgui/Documentation/html/class_c_offscreen_context.html new file mode 100644 index 0000000..4432d4c --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_offscreen_context.html @@ -0,0 +1,492 @@ + + +VSTGUI: COffscreenContext Class Reference + + + + + + +

COffscreenContext Class Reference

A drawing device which uses a pixmap as its drawing surface. +More... +

+#include <vstgui.h> +

+

Inheritance diagram for COffscreenContext: +

+ +CDrawContext +CReferenceCounter + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 COffscreenContext (CDrawContext *pContext, CBitmap *pBitmap, bool drawInBitmap=false)
 COffscreenContext (CFrame *pFrame, long width, long height, const CColor backgroundColor=kBlackCColor)
virtual ~COffscreenContext ()
void copyFrom (CDrawContext *pContext, CRect destRect, CPoint srcOffset=CPoint(0, 0))
 copy from offscreen to pContext
void copyTo (CDrawContext *pContext, CRect &srcRect, CPoint destOffset=CPoint(0, 0))
 copy to offscreen from pContext
CCoord getWidth () const
CCoord getHeight () const

Protected Attributes

CBitmappBitmap
CBitmappBitmapBg
CCoord height
CCoord width
bool bDestroyPixmap
CColor backgroundColor
+

Detailed Description

+A drawing device which uses a pixmap as its drawing surface. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
COffscreenContext::COffscreenContext CDrawContext pContext,
CBitmap pBitmap,
bool  drawInBitmap = false
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
COffscreenContext::COffscreenContext CFrame pFrame,
long  width,
long  height,
const CColor  backgroundColor = kBlackCColor
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
COffscreenContext::~COffscreenContext  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void COffscreenContext::copyFrom CDrawContext pContext,
CRect  destRect,
CPoint  srcOffset = CPoint(0, 0)
+
+ + + + + +
+   + + +

+copy from offscreen to pContext +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void COffscreenContext::copyTo CDrawContext pContext,
CRect srcRect,
CPoint  destOffset = CPoint(0, 0)
+
+ + + + + +
+   + + +

+copy to offscreen from pContext +

+

+

+ + + + +
+ + + + + + + + +
CCoord COffscreenContext::getHeight  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CCoord COffscreenContext::getWidth  )  const [inline]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
CColor COffscreenContext::backgroundColor [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
bool COffscreenContext::bDestroyPixmap [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord COffscreenContext::height [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CBitmap* COffscreenContext::pBitmap [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CBitmap* COffscreenContext::pBitmapBg [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord COffscreenContext::width [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_offscreen_context.png b/vstgui.sf/vstgui/Documentation/html/class_c_offscreen_context.png new file mode 100644 index 0000000..e1391f7 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_offscreen_context.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_on_off_button-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_on_off_button-members.html new file mode 100644 index 0000000..fc21ce9 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_on_off_button-members.html @@ -0,0 +1,151 @@ + + +VSTGUI: Member List + + + + + + +

COnOffButton Member List

This is the complete list of members for COnOffButton, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attached(CView *view)CView [inline, virtual]
backOffsetCControl [protected]
bDirtyCView [protected]
beginEdit()CControl [virtual]
bMouseEnabledCView [protected]
bounceValue()CControl [virtual]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
CControl(const CRect &size, CControlListener *listener=0, long tag=0, CBitmap *pBackground=0)CControl
CView::CControl classCView [friend]
CFrame classCView [friend]
checkDefaultValue(CDrawContext *pContext, long button)CControl [virtual]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
COnOffButton(const CRect &size, CControlListener *listener, long tag, CBitmap *background, long style=kPreListenerUpdate)COnOffButton
copyBackOffset()CControl [virtual]
CReferenceCounter()CReferenceCounter [inline]
CView(const CRect &size)CView
CViewContainer classCView [friend]
defaultValueCControl [protected]
deltaCControl [protected]
doIdleStuff()CControl [inline, virtual]
draw(CDrawContext *)COnOffButton [virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CView [inline, virtual]
endEdit()CControl [virtual]
forget()CReferenceCounter [inline, virtual]
frameToLocal(CPoint &point) const CView [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackground() const CView [inline, virtual]
getDefaultValue(void) const CControl [inline, virtual]
getEditor() const CView [virtual]
getFrame() const CView [inline]
getHeight() const CView [inline]
getListener() const CControl [inline]
getMax() const CControl [inline, virtual]
getMin() const CControl [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getOldValue(void) const CControl [inline, virtual]
getParentView() const CView [inline]
getStyle() const COnOffButton [inline, virtual]
getTag() const CControl [inline, virtual]
getTransparency() const CView [inline, virtual]
getValue() const CControl [inline, virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWheelInc() const CControl [inline, virtual]
getWidth() const CView [inline]
hitTest(const CPoint &where, const long buttons=-1)CView [inline, virtual]
isDirty() const CControl [virtual]
isDoubleClick()CControl
isTypeOf(const char *s) const CView [inline, virtual]
kPostListenerUpdate enum valueCOnOffButton
kPreListenerUpdate enum valueCOnOffButton
lastTicksCControl [protected]
listenerCControl [protected]
localToFrame(CPoint &point) const CView [virtual]
looseFocus(CDrawContext *pContext=0)CView [virtual]
mouse(CDrawContext *pContext, CPoint &where, long button=-1)COnOffButton [virtual]
mouseableAreaCView [protected]
notify(CView *sender, const char *message)CView [virtual]
oldValueCControl [protected]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onKeyDown(VstKeyCode &keyCode)CView [virtual]
onKeyUp(VstKeyCode &keyCode)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CView [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CView [virtual]
remember()CReferenceCounter [inline, virtual]
removed(CView *parent)CView [inline, virtual]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackground(CBitmap *background)CView [virtual]
setBackOffset(CPoint &offset)CControl [virtual]
setDefaultValue(float val)CControl [inline, virtual]
setDirty(const bool val=true)CControl [virtual]
setListener(CControlListener *l)CControl [inline]
setMax(float val)CControl [inline, virtual]
setMin(float val)CControl [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setOldValue(float val)CControl [inline, virtual]
setStyle(long newStyle)COnOffButton [inline, virtual]
setTag(long val)CControl [inline, virtual]
setTransparency(bool val)CView [inline, virtual]
setValue(float val)CControl [inline, virtual]
setViewSize(CRect &rect)CView [virtual]
setWantsFocus(bool state)CView [inline, virtual]
setWheelInc(float val)CControl [inline, virtual]
sizeCView [protected]
styleCOnOffButton [protected]
tagCControl [protected]
takeFocus(CDrawContext *pContext=0)CView [virtual]
update(CDrawContext *pContext)CView [protected, virtual]
valueCControl [protected]
vmaxCControl [protected]
vminCControl [protected]
wantsFocus() const CView [inline, virtual]
wheelIncCControl [protected]
~CControl()CControl [virtual]
~COnOffButton()COnOffButton [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CView()CView [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_on_off_button.html b/vstgui.sf/vstgui/Documentation/html/class_c_on_off_button.html new file mode 100644 index 0000000..12fd296 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_on_off_button.html @@ -0,0 +1,363 @@ + + +VSTGUI: COnOffButton Class Reference + + + + + + +

COnOffButton Class Reference

a button control with 2 states +More... +

+#include <vstcontrols.h> +

+

Inheritance diagram for COnOffButton: +

+ +CControl +CView +CReferenceCounter +CTabButton + +List of all members. + + + + + + + + + + + + + + + + + + + + + + +

Public Types

enum  { kPreListenerUpdate, +kPostListenerUpdate + }

Public Member Functions

 COnOffButton (const CRect &size, CControlListener *listener, long tag, CBitmap *background, long style=kPreListenerUpdate)
virtual ~COnOffButton ()
virtual void draw (CDrawContext *)
 called if the view should draw itself
virtual void mouse (CDrawContext *pContext, CPoint &where, long button=-1)
 called if a mouse click event occurs
virtual long getStyle () const
virtual void setStyle (long newStyle)

Protected Attributes

long style
+

Detailed Description

+a button control with 2 states +

+Define a button with 2 positions. The pixmap includes the 2 subpixmaps (i.e the rectangle used for the display of this button is half-height of the pixmap). When its value changes, the listener is called. +

+


Member Enumeration Documentation

+

+ + + + +
+ + + + +
anonymous enum
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + +
kPreListenerUpdate  +listener will be called after doIdleStuff was called
kPostListenerUpdate  +listener will be called before doIdleStuff is called
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
COnOffButton::COnOffButton const CRect size,
CControlListener listener,
long  tag,
CBitmap background,
long  style = kPreListenerUpdate
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
COnOffButton::~COnOffButton  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
void COnOffButton::draw CDrawContext  )  [virtual]
+
+ + + + + +
+   + + +

+called if the view should draw itself +

+ +

+Implements CControl. +

+Reimplemented in CTabButton.

+

+ + + + +
+ + + + + + + + +
virtual long COnOffButton::getStyle  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void COnOffButton::mouse CDrawContext pContext,
CPoint where,
long  button = -1
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse click event occurs +

+ +

+Reimplemented from CView. +

+Reimplemented in CTabButton.

+

+ + + + +
+ + + + + + + + + +
virtual void COnOffButton::setStyle long  newStyle  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
long COnOffButton::style [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_on_off_button.png b/vstgui.sf/vstgui/Documentation/html/class_c_on_off_button.png new file mode 100644 index 0000000..ddaeaeb Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_on_off_button.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_option_menu-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_option_menu-members.html new file mode 100644 index 0000000..0ba08d1 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_option_menu-members.html @@ -0,0 +1,225 @@ + + +VSTGUI: Member List + + + + + + +

COptionMenu Member List

This is the complete list of members for COptionMenu, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addEntry(COptionMenu *subMenu, char *txt)COptionMenu [virtual]
addEntry(char *txt, long index=-1)COptionMenu [virtual]
allocateMenu(long nb)COptionMenu [protected]
allocateSubMenu(long nb)COptionMenu [protected]
appendItems(long &offsetIdx)COptionMenu [protected]
attached(CView *view)CView [inline, virtual]
backColorCParamDisplay [protected]
backOffsetCControl [protected]
bDirtyCView [protected]
beginEdit()CControl [virtual]
bgWhenClickCOptionMenu [protected]
bMouseEnabledCView [protected]
bounceValue()CControl [virtual]
bTextTransparencyEnabledCParamDisplay [protected]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
CControl(const CRect &size, CControlListener *listener=0, long tag=0, CBitmap *pBackground=0)CControl
CView::CControl classCView [friend]
CFrame classCView [friend]
checkCOptionMenu [protected]
checkDefaultValue(CDrawContext *pContext, long button)CControl [virtual]
checkEntry(long index, bool state)COptionMenu [virtual]
checkEntryAlone(long index)COptionMenu [virtual]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
COptionMenu(const CRect &size, CControlListener *listener, long tag, CBitmap *background=0, CBitmap *bgWhenClick=0, const long style=0)COptionMenu
copyBackOffset()CControl [virtual]
CParamDisplay(const CRect &size, CBitmap *background=0, const long style=0)CParamDisplay
CReferenceCounter()CReferenceCounter [inline]
currentIndexCOptionMenu [protected]
CView(const CRect &size)CView
CViewContainer classCView [friend]
defaultValueCControl [protected]
deltaCControl [protected]
doIdleStuff()CControl [inline, virtual]
draw(CDrawContext *pContext)COptionMenu [virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CView [inline, virtual]
drawText(CDrawContext *pContext, char *string, CBitmap *newBack=0)CParamDisplay [protected]
endEdit()CControl [virtual]
entryCOptionMenu [protected]
fontColorCParamDisplay [protected]
fontIDCParamDisplay [protected]
forget()CReferenceCounter [inline, virtual]
frameColorCParamDisplay [protected]
frameToLocal(CPoint &point) const CView [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackColor() const CParamDisplay [inline]
getBackground() const CView [inline, virtual]
getCurrent(char *txt=0, bool countSeparator=true) const COptionMenu [virtual]
getDefaultValue(void) const CControl [inline, virtual]
getEditor() const CView [virtual]
getEntry(long index, char *txt) const COptionMenu [virtual]
getFont() const CParamDisplay [inline]
getFontColor() const CParamDisplay [inline]
getFrame() const CView [inline]
getFrameColor() const CParamDisplay [inline]
getHeight() const CView [inline]
getIndex(char *txt) const COptionMenu [virtual]
getItemMenu(long idx, long &idxInMenu, long &offsetIdx)COptionMenu [protected]
getLastItemMenu(long &idxInMenu) const COptionMenu
getLastResult() const COptionMenu [inline]
getListener() const CControl [inline]
getMax() const CControl [inline, virtual]
getMin() const CControl [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbEntries() const COptionMenu [inline, virtual]
getNbItemsPerColumn() const COptionMenu [inline, virtual]
getNbReference() const CReferenceCounter [inline]
getOldValue(void) const CControl [inline, virtual]
getParentView() const CView [inline]
getScheme() const COptionMenu [inline, virtual]
getShadowColor() const CParamDisplay [inline]
getStyle() const CParamDisplay [inline]
getSubMenu(long idx) const COptionMenu
getTag() const CControl [inline, virtual]
getTextTransparency() const CParamDisplay [inline]
getTransparency() const CView [inline, virtual]
getTxtFace() const CParamDisplay [inline]
getValue() const CControl [inline, virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWheelInc() const CControl [inline, virtual]
getWidth() const CView [inline]
hitTest(const CPoint &where, const long buttons=-1)CView [inline, virtual]
horiTxtAlignCParamDisplay [protected]
isCheckEntry(long index) const COptionMenu [virtual]
isDirty() const CControl [virtual]
isDoubleClick()CControl
isTypeOf(const char *s) const CView [inline, virtual]
lastButtonCOptionMenu [protected]
lastMenuCOptionMenu [protected]
lastResultCOptionMenu [protected]
lastTicksCControl [protected]
listenerCControl [protected]
localToFrame(CPoint &point) const CView [virtual]
looseFocus(CDrawContext *pContext=0)COptionMenu [virtual]
MAX_ENTRY enum valueCOptionMenu
mouse(CDrawContext *pContext, CPoint &where, long button=-1)COptionMenu [virtual]
mouseableAreaCView [protected]
nbAllocatedCOptionMenu [protected]
nbEntriesCOptionMenu [protected]
nbItemsPerColumnCOptionMenu [protected]
nbSubMenuAllocatedCOptionMenu [protected]
nbSubMenusCOptionMenu [protected]
notify(CView *sender, const char *message)CView [virtual]
oldValueCControl [protected]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onKeyDown(VstKeyCode &keyCode)CView [virtual]
onKeyUp(VstKeyCode &keyCode)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CView [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
platformControlCOptionMenu [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
prefixNumbersCOptionMenu [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CView [virtual]
remember()CReferenceCounter [inline, virtual]
removeAllEntry()COptionMenu [virtual]
removed(CView *parent)CView [inline, virtual]
removeEntry(long index)COptionMenu [virtual]
removeItems()COptionMenu [protected]
schemeCOptionMenu [protected]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackColor(CColor color)CParamDisplay [virtual]
setBackground(CBitmap *background)CView [virtual]
setBackOffset(CPoint &offset)CControl [virtual]
setCurrent(long index, bool countSeparator=true)COptionMenu [virtual]
setDefaultValue(float val)CControl [inline, virtual]
setDirty(const bool val=true)CControl [virtual]
setEntry(long index, char *txt)COptionMenu [virtual]
setFont(CFont fontID)CParamDisplay [virtual]
setFontColor(CColor color)CParamDisplay [virtual]
setFrameColor(CColor color)CParamDisplay [virtual]
setHoriAlign(CHoriTxtAlign hAlign)CParamDisplay [virtual]
setListener(CControlListener *l)CControl [inline]
setMax(float val)CControl [inline, virtual]
setMin(float val)CControl [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setNbItemsPerColumn(long val)COptionMenu [inline, virtual]
setOldValue(float val)CControl [inline, virtual]
setPrefixNumbers(long preCount)COptionMenu [virtual]
setScheme(COptionMenuScheme *s)COptionMenu [inline]
setShadowColor(CColor color)CParamDisplay [virtual]
setString2FloatConvert(void(*convert)(char *string, float &output))CParamDisplay [virtual]
setStringConvert(void(*convert)(float value, char *string))CParamDisplay [virtual]
setStringConvert(void(*convert)(float value, char *string, void *userDta), void *userData)CParamDisplay [virtual]
setStyle(long val)CParamDisplay [virtual]
setTag(long val)CControl [inline, virtual]
setTextTransparency(bool val)CParamDisplay [inline, virtual]
setTransparency(bool val)CView [inline, virtual]
setTxtFace(CTxtFace val)CParamDisplay [virtual]
setValue(float val)COptionMenu [virtual]
setViewSize(CRect &rect)CView [virtual]
setWantsFocus(bool state)CView [inline, virtual]
setWheelInc(float val)CControl [inline, virtual]
shadowColorCParamDisplay [protected]
sizeCView [protected]
string2FloatConvertCParamDisplay [protected]
stringConvertCParamDisplay [protected]
stringConvert2CParamDisplay [protected]
styleCParamDisplay [protected]
submenuEntryCOptionMenu [protected]
tagCControl [protected]
takeFocus(CDrawContext *pContext=0)COptionMenu [virtual]
txtFaceCParamDisplay [protected]
update(CDrawContext *pContext)CView [protected, virtual]
userDataCParamDisplay [protected]
valueCControl [protected]
vmaxCControl [protected]
vminCControl [protected]
wantsFocus() const CView [inline, virtual]
wheelIncCControl [protected]
~CControl()CControl [virtual]
~COptionMenu()COptionMenu [virtual]
~CParamDisplay()CParamDisplay [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CView()CView [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_option_menu.html b/vstgui.sf/vstgui/Documentation/html/class_c_option_menu.html new file mode 100644 index 0000000..3e8fbd1 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_option_menu.html @@ -0,0 +1,1633 @@ + + +VSTGUI: COptionMenu Class Reference + + + + + + +

COptionMenu Class Reference

a popup menu control +More... +

+#include <vstcontrols.h> +

+

Inheritance diagram for COptionMenu: +

+ +CParamDisplay +CControl +CView +CReferenceCounter + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

enum  { MAX_ENTRY = 1024 + }

Public Member Functions

 COptionMenu (const CRect &size, CControlListener *listener, long tag, CBitmap *background=0, CBitmap *bgWhenClick=0, const long style=0)
virtual ~COptionMenu ()
virtual void setValue (float val)
virtual bool addEntry (COptionMenu *subMenu, char *txt)
virtual bool addEntry (char *txt, long index=-1)
virtual long getCurrent (char *txt=0, bool countSeparator=true) const
virtual bool setCurrent (long index, bool countSeparator=true)
virtual bool getEntry (long index, char *txt) const
virtual bool setEntry (long index, char *txt)
virtual bool removeEntry (long index)
virtual bool removeAllEntry ()
virtual long getNbEntries () const
virtual long getIndex (char *txt) const
virtual bool checkEntry (long index, bool state)
virtual bool checkEntryAlone (long index)
virtual bool isCheckEntry (long index) const
virtual void draw (CDrawContext *pContext)
 called if the view should draw itself
virtual void mouse (CDrawContext *pContext, CPoint &where, long button=-1)
 called if a mouse click event occurs
virtual void takeFocus (CDrawContext *pContext=0)
 called if view should take focus
virtual void looseFocus (CDrawContext *pContext=0)
 called if view should loose focus
virtual void setNbItemsPerColumn (long val)
virtual long getNbItemsPerColumn () const
long getLastResult () const
COptionMenugetLastItemMenu (long &idxInMenu) const
void setScheme (COptionMenuScheme *s)
virtual COptionMenuSchemegetScheme () const
virtual void setPrefixNumbers (long preCount)
COptionMenugetSubMenu (long idx) const

Protected Member Functions

COptionMenugetItemMenu (long idx, long &idxInMenu, long &offsetIdx)
void removeItems ()
void * appendItems (long &offsetIdx)
bool allocateMenu (long nb)
bool allocateSubMenu (long nb)

Protected Attributes

void * platformControl
char ** entry
COptionMenu ** submenuEntry
bool * check
long nbEntries
long nbSubMenus
long currentIndex
CBitmapbgWhenClick
long lastButton
long nbItemsPerColumn
long nbAllocated
long nbSubMenuAllocated
long lastResult
long prefixNumbers
COptionMenulastMenu
COptionMenuSchemescheme
+

Detailed Description

+a popup menu control +

+Define a rectangle view where a text-value can be displayed with a given font and color. The text-value is centered in the given rect. A pixmap can be used as background, a second pixmap can be used when the option menu is popuped. There are 2 styles with or without a shadowed text. When a mouse click occurs, a popup menu is displayed. +

+


Member Enumeration Documentation

+

+ + + + +
+ + + + +
anonymous enum
+
+ + + + + +
+   + + +

+

Enumerator:
+ + +
MAX_ENTRY  +
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
COptionMenu::COptionMenu const CRect size,
CControlListener listener,
long  tag,
CBitmap background = 0,
CBitmap bgWhenClick = 0,
const long  style = 0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
COptionMenu::~COptionMenu  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool COptionMenu::addEntry char *  txt,
long  index = -1
[virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool COptionMenu::addEntry COptionMenu subMenu,
char *  txt
[virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool COptionMenu::allocateMenu long  nb  )  [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool COptionMenu::allocateSubMenu long  nb  )  [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void * COptionMenu::appendItems long &  offsetIdx  )  [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool COptionMenu::checkEntry long  index,
bool  state
[virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool COptionMenu::checkEntryAlone long  index  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void COptionMenu::draw CDrawContext pContext  )  [virtual]
+
+ + + + + +
+   + + +

+called if the view should draw itself +

+ +

+Reimplemented from CParamDisplay.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
long COptionMenu::getCurrent char *  txt = 0,
bool  countSeparator = true
const [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool COptionMenu::getEntry long  index,
char *  txt
const [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
long COptionMenu::getIndex char *  txt  )  const [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
COptionMenu * COptionMenu::getItemMenu long  idx,
long &  idxInMenu,
long &  offsetIdx
[protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
COptionMenu * COptionMenu::getLastItemMenu long &  idxInMenu  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
long COptionMenu::getLastResult  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual long COptionMenu::getNbEntries  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual long COptionMenu::getNbItemsPerColumn  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual COptionMenuScheme* COptionMenu::getScheme  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
COptionMenu * COptionMenu::getSubMenu long  idx  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool COptionMenu::isCheckEntry long  index  )  const [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void COptionMenu::looseFocus CDrawContext pContext = 0  )  [virtual]
+
+ + + + + +
+   + + +

+called if view should loose focus +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void COptionMenu::mouse CDrawContext pContext,
CPoint where,
long  button = -1
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse click event occurs +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + +
bool COptionMenu::removeAllEntry  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool COptionMenu::removeEntry long  index  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
void COptionMenu::removeItems  )  [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool COptionMenu::setCurrent long  index,
bool  countSeparator = true
[virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool COptionMenu::setEntry long  index,
char *  txt
[virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual void COptionMenu::setNbItemsPerColumn long  val  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void COptionMenu::setPrefixNumbers long  preCount  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void COptionMenu::setScheme COptionMenuScheme s  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void COptionMenu::setValue float  val  )  [virtual]
+
+ + + + + +
+   + + +

+ +

+Reimplemented from CControl.

+

+ + + + +
+ + + + + + + + + +
void COptionMenu::takeFocus CDrawContext pContext = 0  )  [virtual]
+
+ + + + + +
+   + + +

+called if view should take focus +

+ +

+Reimplemented from CView.

+


Member Data Documentation

+

+ + + + +
+ + + + +
CBitmap* COptionMenu::bgWhenClick [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
bool* COptionMenu::check [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long COptionMenu::currentIndex [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
char** COptionMenu::entry [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long COptionMenu::lastButton [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
COptionMenu* COptionMenu::lastMenu [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long COptionMenu::lastResult [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long COptionMenu::nbAllocated [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long COptionMenu::nbEntries [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long COptionMenu::nbItemsPerColumn [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long COptionMenu::nbSubMenuAllocated [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long COptionMenu::nbSubMenus [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
void* COptionMenu::platformControl [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long COptionMenu::prefixNumbers [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
COptionMenuScheme* COptionMenu::scheme [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
COptionMenu** COptionMenu::submenuEntry [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_option_menu.png b/vstgui.sf/vstgui/Documentation/html/class_c_option_menu.png new file mode 100644 index 0000000..ccdaad9 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_option_menu.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_option_menu_scheme-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_option_menu_scheme-members.html new file mode 100644 index 0000000..99abb50 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_option_menu_scheme-members.html @@ -0,0 +1,63 @@ + + +VSTGUI: Member List + + + + + + +

COptionMenuScheme Member List

This is the complete list of members for COptionMenuScheme, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
backgroundColorCOptionMenuScheme [protected]
COptionMenuScheme()COptionMenuScheme
CReferenceCounter()CReferenceCounter [inline]
disableTextColorCOptionMenuScheme [protected]
drawItem(const char *text, long itemId, long state, CDrawContext *pContext, const CRect &rect)COptionMenuScheme [virtual]
drawItemBack(CDrawContext *pContext, const CRect &rect, bool hilite)COptionMenuScheme [protected, virtual]
fontCOptionMenuScheme [protected]
forget()CReferenceCounter [inline, virtual]
getItemSize(const char *text, CDrawContext *pContext, CPoint &size)COptionMenuScheme [virtual]
getNbReference() const CReferenceCounter [inline]
hiliteTextColorCOptionMenuScheme [protected]
kChecked enum valueCOptionMenuScheme
kDisabled enum valueCOptionMenuScheme
kSelected enum valueCOptionMenuScheme
kSubMenu enum valueCOptionMenuScheme
kTitle enum valueCOptionMenuScheme
remember()CReferenceCounter [inline, virtual]
selectionColorCOptionMenuScheme [protected]
setColors(CColor back, CColor select, CColor text, CColor htext, CColor dtext)COptionMenuScheme [inline]
setFont(CFont f)COptionMenuScheme [inline]
textColorCOptionMenuScheme [protected]
~COptionMenuScheme()COptionMenuScheme [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_option_menu_scheme.html b/vstgui.sf/vstgui/Documentation/html/class_c_option_menu_scheme.html new file mode 100644 index 0000000..b1f9781 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_option_menu_scheme.html @@ -0,0 +1,555 @@ + + +VSTGUI: COptionMenuScheme Class Reference + + + + + + +

COptionMenuScheme Class Reference

#include <vstcontrols.h> +

+

Inheritance diagram for COptionMenuScheme: +

+ +CReferenceCounter + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

enum  {
+  kChecked = 0x01, +kDisabled = 0x02, +kSelected = 0x04, +kSubMenu = 0x08, +
+  kTitle = 0x10 +
+ }

Public Member Functions

 COptionMenuScheme ()
virtual ~COptionMenuScheme ()
virtual void getItemSize (const char *text, CDrawContext *pContext, CPoint &size)
virtual void drawItem (const char *text, long itemId, long state, CDrawContext *pContext, const CRect &rect)
void setColors (CColor back, CColor select, CColor text, CColor htext, CColor dtext)
void setFont (CFont f)

Protected Member Functions

virtual void drawItemBack (CDrawContext *pContext, const CRect &rect, bool hilite)

Protected Attributes

CColor backgroundColor
CColor selectionColor
CColor textColor
CColor hiliteTextColor
CColor disableTextColor
CFont font
+

Detailed Description

+Used to define the appearance (font color, background color...) of a popup-menu. To define the scheme of a menu, use the appropriate setScheme method (see COptionMenu).

+New since 3.0

+You can also use the global variable gOptionMenuScheme to use one scheme on all menus.

+Note

+If you want to use it on Mac OS X, you must set the macro MAC_ENABLE_MENU_SCHEME (needs Mac OS X 10.3 or higher) +

+


Member Enumeration Documentation

+

+ + + + +
+ + + + +
anonymous enum
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + + + + +
kChecked  +
kDisabled  +
kSelected  +
kSubMenu  +
kTitle  +
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
COptionMenuScheme::COptionMenuScheme  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
COptionMenuScheme::~COptionMenuScheme  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void COptionMenuScheme::drawItem const char *  text,
long  itemId,
long  state,
CDrawContext pContext,
const CRect rect
[virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void COptionMenuScheme::drawItemBack CDrawContext pContext,
const CRect rect,
bool  hilite
[protected, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void COptionMenuScheme::getItemSize const char *  text,
CDrawContext pContext,
CPoint size
[virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void COptionMenuScheme::setColors CColor  back,
CColor  select,
CColor  text,
CColor  htext,
CColor  dtext
[inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void COptionMenuScheme::setFont CFont  f  )  [inline]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
CColor COptionMenuScheme::backgroundColor [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor COptionMenuScheme::disableTextColor [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CFont COptionMenuScheme::font [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor COptionMenuScheme::hiliteTextColor [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor COptionMenuScheme::selectionColor [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor COptionMenuScheme::textColor [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_option_menu_scheme.png b/vstgui.sf/vstgui/Documentation/html/class_c_option_menu_scheme.png new file mode 100644 index 0000000..7b74632 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_option_menu_scheme.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_param_display-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_param_display-members.html new file mode 100644 index 0000000..eb76da5 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_param_display-members.html @@ -0,0 +1,180 @@ + + +VSTGUI: Member List + + + + + + +

CParamDisplay Member List

This is the complete list of members for CParamDisplay, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attached(CView *view)CView [inline, virtual]
backColorCParamDisplay [protected]
backOffsetCControl [protected]
bDirtyCView [protected]
beginEdit()CControl [virtual]
bMouseEnabledCView [protected]
bounceValue()CControl [virtual]
bTextTransparencyEnabledCParamDisplay [protected]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
CControl(const CRect &size, CControlListener *listener=0, long tag=0, CBitmap *pBackground=0)CControl
CView::CControl classCView [friend]
CFrame classCView [friend]
checkDefaultValue(CDrawContext *pContext, long button)CControl [virtual]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
copyBackOffset()CControl [virtual]
CParamDisplay(const CRect &size, CBitmap *background=0, const long style=0)CParamDisplay
CReferenceCounter()CReferenceCounter [inline]
CView(const CRect &size)CView
CViewContainer classCView [friend]
defaultValueCControl [protected]
deltaCControl [protected]
doIdleStuff()CControl [inline, virtual]
draw(CDrawContext *pContext)CParamDisplay [virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CView [inline, virtual]
drawText(CDrawContext *pContext, char *string, CBitmap *newBack=0)CParamDisplay [protected]
endEdit()CControl [virtual]
fontColorCParamDisplay [protected]
fontIDCParamDisplay [protected]
forget()CReferenceCounter [inline, virtual]
frameColorCParamDisplay [protected]
frameToLocal(CPoint &point) const CView [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackColor() const CParamDisplay [inline]
getBackground() const CView [inline, virtual]
getDefaultValue(void) const CControl [inline, virtual]
getEditor() const CView [virtual]
getFont() const CParamDisplay [inline]
getFontColor() const CParamDisplay [inline]
getFrame() const CView [inline]
getFrameColor() const CParamDisplay [inline]
getHeight() const CView [inline]
getListener() const CControl [inline]
getMax() const CControl [inline, virtual]
getMin() const CControl [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getOldValue(void) const CControl [inline, virtual]
getParentView() const CView [inline]
getShadowColor() const CParamDisplay [inline]
getStyle() const CParamDisplay [inline]
getTag() const CControl [inline, virtual]
getTextTransparency() const CParamDisplay [inline]
getTransparency() const CView [inline, virtual]
getTxtFace() const CParamDisplay [inline]
getValue() const CControl [inline, virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWheelInc() const CControl [inline, virtual]
getWidth() const CView [inline]
hitTest(const CPoint &where, const long buttons=-1)CView [inline, virtual]
horiTxtAlignCParamDisplay [protected]
isDirty() const CControl [virtual]
isDoubleClick()CControl
isTypeOf(const char *s) const CView [inline, virtual]
lastTicksCControl [protected]
listenerCControl [protected]
localToFrame(CPoint &point) const CView [virtual]
looseFocus(CDrawContext *pContext=0)CView [virtual]
mouse(CDrawContext *pContext, CPoint &where, long buttons=-1)CView [virtual]
mouseableAreaCView [protected]
notify(CView *sender, const char *message)CView [virtual]
oldValueCControl [protected]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onKeyDown(VstKeyCode &keyCode)CView [virtual]
onKeyUp(VstKeyCode &keyCode)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CView [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CView [virtual]
remember()CReferenceCounter [inline, virtual]
removed(CView *parent)CView [inline, virtual]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackColor(CColor color)CParamDisplay [virtual]
setBackground(CBitmap *background)CView [virtual]
setBackOffset(CPoint &offset)CControl [virtual]
setDefaultValue(float val)CControl [inline, virtual]
setDirty(const bool val=true)CControl [virtual]
setFont(CFont fontID)CParamDisplay [virtual]
setFontColor(CColor color)CParamDisplay [virtual]
setFrameColor(CColor color)CParamDisplay [virtual]
setHoriAlign(CHoriTxtAlign hAlign)CParamDisplay [virtual]
setListener(CControlListener *l)CControl [inline]
setMax(float val)CControl [inline, virtual]
setMin(float val)CControl [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setOldValue(float val)CControl [inline, virtual]
setShadowColor(CColor color)CParamDisplay [virtual]
setString2FloatConvert(void(*convert)(char *string, float &output))CParamDisplay [virtual]
setStringConvert(void(*convert)(float value, char *string))CParamDisplay [virtual]
setStringConvert(void(*convert)(float value, char *string, void *userDta), void *userData)CParamDisplay [virtual]
setStyle(long val)CParamDisplay [virtual]
setTag(long val)CControl [inline, virtual]
setTextTransparency(bool val)CParamDisplay [inline, virtual]
setTransparency(bool val)CView [inline, virtual]
setTxtFace(CTxtFace val)CParamDisplay [virtual]
setValue(float val)CControl [inline, virtual]
setViewSize(CRect &rect)CView [virtual]
setWantsFocus(bool state)CView [inline, virtual]
setWheelInc(float val)CControl [inline, virtual]
shadowColorCParamDisplay [protected]
sizeCView [protected]
string2FloatConvertCParamDisplay [protected]
stringConvertCParamDisplay [protected]
stringConvert2CParamDisplay [protected]
styleCParamDisplay [protected]
tagCControl [protected]
takeFocus(CDrawContext *pContext=0)CView [virtual]
txtFaceCParamDisplay [protected]
update(CDrawContext *pContext)CView [protected, virtual]
userDataCParamDisplay [protected]
valueCControl [protected]
vmaxCControl [protected]
vminCControl [protected]
wantsFocus() const CView [inline, virtual]
wheelIncCControl [protected]
~CControl()CControl [virtual]
~CParamDisplay()CParamDisplay [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CView()CView [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_param_display.html b/vstgui.sf/vstgui/Documentation/html/class_c_param_display.html new file mode 100644 index 0000000..e7b8ef7 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_param_display.html @@ -0,0 +1,1152 @@ + + +VSTGUI: CParamDisplay Class Reference + + + + + + +

CParamDisplay Class Reference

a parameter display control +More... +

+#include <vstcontrols.h> +

+

Inheritance diagram for CParamDisplay: +

+ +CControl +CView +CReferenceCounter +COptionMenu +CTextEdit +CTextLabel + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CParamDisplay (const CRect &size, CBitmap *background=0, const long style=0)
virtual ~CParamDisplay ()
virtual void setFont (CFont fontID)
CFont getFont () const
virtual void setFontColor (CColor color)
CColor getFontColor () const
virtual void setBackColor (CColor color)
CColor getBackColor () const
virtual void setFrameColor (CColor color)
CColor getFrameColor () const
virtual void setShadowColor (CColor color)
CColor getShadowColor () const
virtual void setHoriAlign (CHoriTxtAlign hAlign)
virtual void setStringConvert (void(*convert)(float value, char *string))
virtual void setStringConvert (void(*convert)(float value, char *string, void *userDta), void *userData)
virtual void setString2FloatConvert (void(*convert)(char *string, float &output))
virtual void setStyle (long val)
long getStyle () const
virtual void setTxtFace (CTxtFace val)
CTxtFace getTxtFace () const
virtual void draw (CDrawContext *pContext)
 called if the view should draw itself
virtual void setTextTransparency (bool val)
bool getTextTransparency () const

Protected Member Functions

void drawText (CDrawContext *pContext, char *string, CBitmap *newBack=0)

Protected Attributes

void(* stringConvert )(float value, char *string)
void(* stringConvert2 )(float value, char *string, void *userData)
void(* string2FloatConvert )(char *string, float &output)
void * userData
CHoriTxtAlign horiTxtAlign
long style
CFont fontID
CTxtFace txtFace
CColor fontColor
CColor backColor
CColor frameColor
CColor shadowColor
bool bTextTransparencyEnabled
+

Detailed Description

+a parameter display control +

+Define a rectangle view where a text-value can be displayed with a given font and color. The user can specify its convert function (from float to char) by default the string format is "%2.2f". The text-value is centered in the given rect. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
CParamDisplay::CParamDisplay const CRect size,
CBitmap background = 0,
const long  style = 0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CParamDisplay::~CParamDisplay  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
void CParamDisplay::draw CDrawContext pContext  )  [virtual]
+
+ + + + + +
+   + + +

+called if the view should draw itself +

+ +

+Implements CControl. +

+Reimplemented in CTextLabel, CTextEdit, and COptionMenu.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CParamDisplay::drawText CDrawContext pContext,
char *  string,
CBitmap newBack = 0
[protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CColor CParamDisplay::getBackColor  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CFont CParamDisplay::getFont  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CColor CParamDisplay::getFontColor  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CColor CParamDisplay::getFrameColor  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CColor CParamDisplay::getShadowColor  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
long CParamDisplay::getStyle  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
bool CParamDisplay::getTextTransparency  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CTxtFace CParamDisplay::getTxtFace  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CParamDisplay::setBackColor CColor  color  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CParamDisplay::setFont CFont  fontID  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CParamDisplay::setFontColor CColor  color  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CParamDisplay::setFrameColor CColor  color  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CParamDisplay::setHoriAlign CHoriTxtAlign  hAlign  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CParamDisplay::setShadowColor CColor  color  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CParamDisplay::setString2FloatConvert void(*)(char *string, float &output)  convert  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void CParamDisplay::setStringConvert void(*)(float value, char *string, void *userDta)  convert,
void *  userData
[virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CParamDisplay::setStringConvert void(*)(float value, char *string)  convert  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CParamDisplay::setStyle long  val  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual void CParamDisplay::setTextTransparency bool  val  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CParamDisplay::setTxtFace CTxtFace  val  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
CColor CParamDisplay::backColor [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
bool CParamDisplay::bTextTransparencyEnabled [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor CParamDisplay::fontColor [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CFont CParamDisplay::fontID [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor CParamDisplay::frameColor [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CHoriTxtAlign CParamDisplay::horiTxtAlign [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor CParamDisplay::shadowColor [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
void(* CParamDisplay::string2FloatConvert)(char *string, float &output) [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
void(* CParamDisplay::stringConvert)(float value, char *string) [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
void(* CParamDisplay::stringConvert2)(float value, char *string, void *userData) [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CParamDisplay::style [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CTxtFace CParamDisplay::txtFace [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
void* CParamDisplay::userData [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_param_display.png b/vstgui.sf/vstgui/Documentation/html/class_c_param_display.png new file mode 100644 index 0000000..9afbc7a Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_param_display.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_reference_counter-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_reference_counter-members.html new file mode 100644 index 0000000..26cb1f2 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_reference_counter-members.html @@ -0,0 +1,45 @@ + + +VSTGUI: Member List + + + + + + +

CReferenceCounter Member List

This is the complete list of members for CReferenceCounter, including all inherited members.

+ + + + + +
CReferenceCounter()CReferenceCounter [inline]
forget()CReferenceCounter [inline, virtual]
getNbReference() const CReferenceCounter [inline]
remember()CReferenceCounter [inline, virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_reference_counter.html b/vstgui.sf/vstgui/Documentation/html/class_c_reference_counter.html new file mode 100644 index 0000000..e9c53de --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_reference_counter.html @@ -0,0 +1,229 @@ + + +VSTGUI: CReferenceCounter Class Reference + + + + + + +

CReferenceCounter Class Reference

#include <vstgui.h> +

+

Inheritance diagram for CReferenceCounter: +

+ +CBitmap +CDragContainer +CDrawContext +COptionMenuScheme +CTabChildView +CView +COffscreenContext +CControl +CSplashScreenView +CViewContainer +CAutoAnimation +CHorizontalSwitch +CKickButton +CKnob +CMovieBitmap +CMovieButton +COnOffButton +CParamDisplay +CRockerSwitch +CScrollbar +CSlider +CSpecialDigit +CSplashScreen +CVerticalSwitch +CVuMeter +CFrame +CScrollContainer +CScrollView +CTabView + +List of all members. + + + + + + + + + + + + +

Public Member Functions

 CReferenceCounter ()
virtual ~CReferenceCounter ()
virtual void forget ()
virtual void remember ()
long getNbReference () const
+

Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
CReferenceCounter::CReferenceCounter  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual CReferenceCounter::~CReferenceCounter  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual void CReferenceCounter::forget  )  [inline, virtual]
+
+ + + + + +
+   + + +

+ +

+Reimplemented in CDrawContext.

+

+ + + + +
+ + + + + + + + +
long CReferenceCounter::getNbReference  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual void CReferenceCounter::remember  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_reference_counter.png b/vstgui.sf/vstgui/Documentation/html/class_c_reference_counter.png new file mode 100644 index 0000000..811ea3a Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_reference_counter.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_rocker_switch-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_rocker_switch-members.html new file mode 100644 index 0000000..f25ed53 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_rocker_switch-members.html @@ -0,0 +1,150 @@ + + +VSTGUI: Member List + + + + + + +

CRockerSwitch Member List

This is the complete list of members for CRockerSwitch, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attached(CView *view)CView [inline, virtual]
backOffsetCControl [protected]
bDirtyCView [protected]
beginEdit()CControl [virtual]
bMouseEnabledCView [protected]
bounceValue()CControl [virtual]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
CControl(const CRect &size, CControlListener *listener=0, long tag=0, CBitmap *pBackground=0)CControl
CView::CControl classCView [friend]
CFrame classCView [friend]
checkDefaultValue(CDrawContext *pContext, long button)CControl [virtual]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
copyBackOffset()CControl [virtual]
CReferenceCounter()CReferenceCounter [inline]
CRockerSwitch(const CRect &size, CControlListener *listener, long tag, CBitmap *background, CPoint &offset, const long style=kHorizontal)CRockerSwitch
CRockerSwitch(const CRect &size, CControlListener *listener, long tag, CCoord heightOfOneImage, CBitmap *background, CPoint &offset, const long style=kHorizontal)CRockerSwitch
CView(const CRect &size)CView
CViewContainer classCView [friend]
defaultValueCControl [protected]
deltaCControl [protected]
doIdleStuff()CControl [inline, virtual]
draw(CDrawContext *)CRockerSwitch [virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CView [inline, virtual]
endEdit()CControl [virtual]
forget()CReferenceCounter [inline, virtual]
frameToLocal(CPoint &point) const CView [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackground() const CView [inline, virtual]
getDefaultValue(void) const CControl [inline, virtual]
getEditor() const CView [virtual]
getFrame() const CView [inline]
getHeight() const CView [inline]
getListener() const CControl [inline]
getMax() const CControl [inline, virtual]
getMin() const CControl [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getOldValue(void) const CControl [inline, virtual]
getParentView() const CView [inline]
getTag() const CControl [inline, virtual]
getTransparency() const CView [inline, virtual]
getValue() const CControl [inline, virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWheelInc() const CControl [inline, virtual]
getWidth() const CView [inline]
heightOfOneImageCRockerSwitch [protected]
hitTest(const CPoint &where, const long buttons=-1)CView [inline, virtual]
isDirty() const CControl [virtual]
isDoubleClick()CControl
isTypeOf(const char *s) const CView [inline, virtual]
lastTicksCControl [protected]
listenerCControl [protected]
localToFrame(CPoint &point) const CView [virtual]
looseFocus(CDrawContext *pContext=0)CView [virtual]
mouse(CDrawContext *pContext, CPoint &where, long button=-1)CRockerSwitch [virtual]
mouseableAreaCView [protected]
notify(CView *sender, const char *message)CView [virtual]
offsetCRockerSwitch [protected]
oldValueCControl [protected]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onKeyDown(VstKeyCode &keyCode)CView [virtual]
onKeyUp(VstKeyCode &keyCode)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CRockerSwitch [virtual]
CControl::onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CView [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CView [virtual]
remember()CReferenceCounter [inline, virtual]
removed(CView *parent)CView [inline, virtual]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackground(CBitmap *background)CView [virtual]
setBackOffset(CPoint &offset)CControl [virtual]
setDefaultValue(float val)CControl [inline, virtual]
setDirty(const bool val=true)CControl [virtual]
setListener(CControlListener *l)CControl [inline]
setMax(float val)CControl [inline, virtual]
setMin(float val)CControl [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setOldValue(float val)CControl [inline, virtual]
setTag(long val)CControl [inline, virtual]
setTransparency(bool val)CView [inline, virtual]
setValue(float val)CControl [inline, virtual]
setViewSize(CRect &rect)CView [virtual]
setWantsFocus(bool state)CView [inline, virtual]
setWheelInc(float val)CControl [inline, virtual]
sizeCView [protected]
styleCRockerSwitch [protected]
tagCControl [protected]
takeFocus(CDrawContext *pContext=0)CView [virtual]
update(CDrawContext *pContext)CView [protected, virtual]
valueCControl [protected]
vmaxCControl [protected]
vminCControl [protected]
wantsFocus() const CView [inline, virtual]
wheelIncCControl [protected]
~CControl()CControl [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CRockerSwitch()CRockerSwitch [virtual]
~CView()CView [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_rocker_switch.html b/vstgui.sf/vstgui/Documentation/html/class_c_rocker_switch.html new file mode 100644 index 0000000..c299fab --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_rocker_switch.html @@ -0,0 +1,437 @@ + + +VSTGUI: CRockerSwitch Class Reference + + + + + + +

CRockerSwitch Class Reference

a switch control with 3 sub bitmaps +More... +

+#include <vstcontrols.h> +

+

Inheritance diagram for CRockerSwitch: +

+ +CControl +CView +CReferenceCounter + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CRockerSwitch (const CRect &size, CControlListener *listener, long tag, CBitmap *background, CPoint &offset, const long style=kHorizontal)
 CRockerSwitch (const CRect &size, CControlListener *listener, long tag, CCoord heightOfOneImage, CBitmap *background, CPoint &offset, const long style=kHorizontal)
virtual ~CRockerSwitch ()
virtual void draw (CDrawContext *)
 called if the view should draw itself
virtual void mouse (CDrawContext *pContext, CPoint &where, long button=-1)
 called if a mouse click event occurs
virtual bool onWheel (CDrawContext *pContext, const CPoint &where, float distance)
 called if a mouse wheel event is happening over this view

Protected Attributes

CPoint offset
CCoord heightOfOneImage
long style
+

Detailed Description

+a switch control with 3 sub bitmaps +

+Define a rocker switch with 3 states using 3 subpixmaps. One click on its leftside, then the first subpixmap is displayed. One click on its rightside, then the third subpixmap is displayed. When the mouse button is relaxed, the second subpixmap is framed. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CRockerSwitch::CRockerSwitch const CRect size,
CControlListener listener,
long  tag,
CBitmap background,
CPoint offset,
const long  style = kHorizontal
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CRockerSwitch::CRockerSwitch const CRect size,
CControlListener listener,
long  tag,
CCoord  heightOfOneImage,
CBitmap background,
CPoint offset,
const long  style = kHorizontal
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CRockerSwitch::~CRockerSwitch  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
void CRockerSwitch::draw CDrawContext  )  [virtual]
+
+ + + + + +
+   + + +

+called if the view should draw itself +

+ +

+Implements CControl.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CRockerSwitch::mouse CDrawContext pContext,
CPoint where,
long  button = -1
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse click event occurs +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool CRockerSwitch::onWheel CDrawContext pContext,
const CPoint where,
float  distance
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse wheel event is happening over this view +

+ +

+Reimplemented from CView.

+


Member Data Documentation

+

+ + + + +
+ + + + +
CCoord CRockerSwitch::heightOfOneImage [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CPoint CRockerSwitch::offset [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CRockerSwitch::style [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_rocker_switch.png b/vstgui.sf/vstgui/Documentation/html/class_c_rocker_switch.png new file mode 100644 index 0000000..1aa89b9 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_rocker_switch.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_scroll_container-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_scroll_container-members.html new file mode 100644 index 0000000..f301b6d --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_scroll_container-members.html @@ -0,0 +1,148 @@ + + +VSTGUI: Member List + + + + + + +

CScrollContainer Member List

This is the complete list of members for CScrollContainer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addView(CView *pView)CViewContainer [virtual]
addView(CView *pView, CRect &mouseableArea, bool mouseEnabled=true)CViewContainer [virtual]
advanceNextFocusView(CView *oldFocus, bool reverse=false)CViewContainer [virtual]
attached(CView *view)CViewContainer [virtual]
backgroundColorCViewContainer [protected]
backgroundOffsetCViewContainer [protected]
bDirtyCView [protected]
bDrawInOffscreenCViewContainer [protected]
bMouseEnabledCView [protected]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
CControl classCView [friend]
CFrame classCView [friend]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
containerSizeCScrollContainer [protected]
CReferenceCounter()CReferenceCounter [inline]
CScrollContainer(const CRect &size, const CRect &containerSize, CFrame *pParent, CBitmap *pBackground=0)CScrollContainer
currentDragViewCViewContainer [protected]
CView(const CRect &size)CView
CViewContainer(const CRect &size, CFrame *pParent, CBitmap *pBackground=0)CViewContainer
CView::CViewContainer classCView [friend]
draw(CDrawContext *pContext)CViewContainer [virtual]
drawBackgroundRect(CDrawContext *pContext, CRect &_updateRect)CViewContainer [virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CViewContainer [virtual]
forget()CReferenceCounter [inline, virtual]
frameToLocal(CPoint &point) const CViewContainer [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackground() const CView [inline, virtual]
getBackgroundColor() const CViewContainer [inline, virtual]
getBackgroundOffset() const CViewContainer [inline, virtual]
getContainerSize() const CScrollContainer [inline]
getCurrentView() const CViewContainer [virtual]
getEditor() const CView [virtual]
getFrame() const CView [inline]
getHeight() const CView [inline]
getMode() const CViewContainer [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getNbViews() const CViewContainer [virtual]
getParentView() const CView [inline]
getScrollOffset(CPoint &off) const CScrollContainer [inline]
getTransparency() const CView [inline, virtual]
getView(long index) const CViewContainer [virtual]
getViewAt(const CPoint &where, bool deep=false) const CViewContainer [virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWidth() const CView [inline]
hitTest(const CPoint &where, const long buttons=-1)CViewContainer [virtual]
hitTestSubViews(const CPoint &where, const long buttons=-1)CViewContainer [protected]
isChild(CView *pView) const CViewContainer [virtual]
isDirty() const CScrollContainer [virtual]
isTypeOf(const char *s) const CView [inline, virtual]
kNormalUpdate enum valueCViewContainer
kOnlyDirtyUpdate enum valueCViewContainer
localToFrame(CPoint &point) const CViewContainer [virtual]
looseFocus(CDrawContext *pContext=0)CViewContainer [virtual]
modeCViewContainer [protected]
modifyDrawContext(CCoord save[4], CDrawContext *pContext)CViewContainer
mouse(CDrawContext *pContext, CPoint &where, long buttons=-1)CViewContainer [virtual]
mouseableAreaCView [protected]
notify(CView *sender, const char *message)CViewContainer [virtual]
offsetCScrollContainer [protected]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CViewContainer [virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CViewContainer [virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CViewContainer [virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CViewContainer [virtual]
onKeyDown(VstKeyCode &keyCode)CViewContainer [virtual]
onKeyUp(VstKeyCode &keyCode)CViewContainer [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CViewContainer [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CViewContainer [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pFirstViewCViewContainer [protected]
pLastViewCViewContainer [protected]
pOffscreenContextCViewContainer [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CScrollContainer [virtual]
remember()CReferenceCounter [inline, virtual]
removeAll(const bool &withForget=true)CViewContainer [virtual]
removed(CView *parent)CViewContainer [virtual]
removeView(CView *pView, const bool &withForget=true)CViewContainer [virtual]
restoreDrawContext(CDrawContext *pContext, CCoord save[4])CViewContainer
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackground(CBitmap *background)CView [virtual]
setBackgroundColor(const CColor color)CViewContainer [virtual]
setBackgroundOffset(const CPoint &p)CViewContainer [inline, virtual]
setContainerSize(const CRect &cs)CScrollContainer
setDirty(const bool val=true)CView [inline, virtual]
setMode(long val)CViewContainer [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setScrollOffset(CPoint offset, bool withRedraw=false)CScrollContainer
setTransparency(bool val)CView [inline, virtual]
setViewSize(CRect &rect)CViewContainer [virtual]
setWantsFocus(bool state)CView [inline, virtual]
sizeCView [protected]
takeFocus(CDrawContext *pContext=0)CViewContainer [virtual]
update(CDrawContext *pContext)CViewContainer [virtual]
useOffscreen(bool b)CViewContainer [virtual]
wantsFocus() const CView [inline, virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CScrollContainer()CScrollContainer [virtual]
~CView()CView [virtual]
~CViewContainer()CViewContainer [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_scroll_container.html b/vstgui.sf/vstgui/Documentation/html/class_c_scroll_container.html new file mode 100644 index 0000000..8001d0f --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_scroll_container.html @@ -0,0 +1,397 @@ + + +VSTGUI: CScrollContainer Class Reference + + + + + + +

CScrollContainer Class Reference

#include <cscrollview.h> +

+

Inheritance diagram for CScrollContainer: +

+ +CViewContainer +CView +CReferenceCounter + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CScrollContainer (const CRect &size, const CRect &containerSize, CFrame *pParent, CBitmap *pBackground=0)
virtual ~CScrollContainer ()
void setScrollOffset (CPoint offset, bool withRedraw=false)
void getScrollOffset (CPoint &off) const
CRect getContainerSize () const
void setContainerSize (const CRect &cs)
virtual void redrawRect (CDrawContext *context, const CRect &rect)
virtual bool isDirty () const
 check if view is dirty

Protected Attributes

CRect containerSize
CPoint offset
+

Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CScrollContainer::CScrollContainer const CRect size,
const CRect containerSize,
CFrame pParent,
CBitmap pBackground = 0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CScrollContainer::~CScrollContainer  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
CRect CScrollContainer::getContainerSize  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CScrollContainer::getScrollOffset CPoint off  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
bool CScrollContainer::isDirty  )  const [virtual]
+
+ + + + + +
+   + + +

+check if view is dirty +

+ +

+Reimplemented from CViewContainer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void CScrollContainer::redrawRect CDrawContext context,
const CRect rect
[virtual]
+
+ + + + + +
+   + + +

+

Parameters:
+ + + +
context the context which to use to redraw this container
rect the area which to redraw
+
+ +

+Reimplemented from CViewContainer.

+

+ + + + +
+ + + + + + + + + +
void CScrollContainer::setContainerSize const CRect cs  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void CScrollContainer::setScrollOffset CPoint  offset,
bool  withRedraw = false
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
CRect CScrollContainer::containerSize [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CPoint CScrollContainer::offset [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_scroll_container.png b/vstgui.sf/vstgui/Documentation/html/class_c_scroll_container.png new file mode 100644 index 0000000..0321fb7 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_scroll_container.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_scroll_view-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_scroll_view-members.html new file mode 100644 index 0000000..b04c887 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_scroll_view-members.html @@ -0,0 +1,154 @@ + + +VSTGUI: Member List + + + + + + +

CScrollView Member List

This is the complete list of members for CScrollView, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addView(CView *pView)CScrollView [virtual]
CViewContainer::addView(CView *pView, CRect &mouseableArea, bool mouseEnabled=true)CViewContainer [virtual]
advanceNextFocusView(CView *oldFocus, bool reverse=false)CViewContainer [virtual]
attached(CView *view)CViewContainer [virtual]
backgroundColorCViewContainer [protected]
backgroundOffsetCViewContainer [protected]
bDirtyCView [protected]
bDrawInOffscreenCViewContainer [protected]
bMouseEnabledCView [protected]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
CControl classCView [friend]
CFrame classCView [friend]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
containerSizeCScrollView [protected]
controlModifierClicked(CDrawContext *pContext, CControl *pControl, long button)CControlListener [inline, private, virtual]
CReferenceCounter()CReferenceCounter [inline]
CScrollView(const CRect &size, const CRect &containerSize, CFrame *pParent, long style, long scrollbarWidth=16, CBitmap *pBackground=0)CScrollView
currentDragViewCViewContainer [protected]
CView(const CRect &size)CView
CViewContainer(const CRect &size, CFrame *pParent, CBitmap *pBackground=0)CViewContainer
CView::CViewContainer classCView [friend]
draw(CDrawContext *pContext)CViewContainer [virtual]
drawBackgroundRect(CDrawContext *pContext, CRect &_updateRect)CScrollView [virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CViewContainer [virtual]
forget()CReferenceCounter [inline, virtual]
frameToLocal(CPoint &point) const CViewContainer [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackground() const CView [inline, virtual]
getBackgroundColor() const CViewContainer [inline, virtual]
getBackgroundOffset() const CViewContainer [inline, virtual]
getCurrentView() const CViewContainer [virtual]
getEditor() const CView [virtual]
getFrame() const CView [inline]
getHeight() const CView [inline]
getHorizontalScrollbar() const CScrollView [inline, virtual]
getMode() const CViewContainer [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getNbViews() const CViewContainer [virtual]
getParentView() const CView [inline]
getTransparency() const CView [inline, virtual]
getVerticalScrollbar() const CScrollView [inline, virtual]
getView(long index) const CViewContainer [virtual]
getViewAt(const CPoint &where, bool deep=false) const CViewContainer [virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWidth() const CView [inline]
hitTest(const CPoint &where, const long buttons=-1)CViewContainer [virtual]
hitTestSubViews(const CPoint &where, const long buttons=-1)CViewContainer [protected]
hsbCScrollView [protected]
isChild(CView *pView) const CViewContainer [virtual]
isDirty() const CViewContainer [virtual]
isTypeOf(const char *s) const CView [inline, virtual]
kHorizontalScrollbar enum valueCScrollView
kNormalUpdate enum valueCViewContainer
kOnlyDirtyUpdate enum valueCViewContainer
kVerticalScrollbar enum valueCScrollView
localToFrame(CPoint &point) const CViewContainer [virtual]
looseFocus(CDrawContext *pContext=0)CViewContainer [virtual]
modeCViewContainer [protected]
modifyDrawContext(CCoord save[4], CDrawContext *pContext)CViewContainer
mouse(CDrawContext *pContext, CPoint &where, long buttons=-1)CViewContainer [virtual]
mouseableAreaCView [protected]
notify(CView *sender, const char *message)CViewContainer [virtual]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CViewContainer [virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CViewContainer [virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CViewContainer [virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CViewContainer [virtual]
onKeyDown(VstKeyCode &keyCode)CViewContainer [virtual]
onKeyUp(VstKeyCode &keyCode)CViewContainer [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CScrollView [virtual]
CViewContainer::onWheel(CDrawContext *pContext, const CPoint &where, float distance)CViewContainer [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pFirstViewCViewContainer [protected]
pLastViewCViewContainer [protected]
pOffscreenContextCViewContainer [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CViewContainer [virtual]
remember()CReferenceCounter [inline, virtual]
removeAll(const bool &withForget=true)CViewContainer [virtual]
removed(CView *parent)CViewContainer [virtual]
removeView(CView *pView, const bool &withForget=true)CViewContainer [virtual]
restoreDrawContext(CDrawContext *pContext, CCoord save[4])CViewContainer
scCScrollView [protected]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackground(CBitmap *background)CView [virtual]
setBackgroundColor(const CColor color)CViewContainer [virtual]
setBackgroundOffset(const CPoint &p)CViewContainer [inline, virtual]
setContainerSize(const CRect &cs)CScrollView [virtual]
setDirty(const bool val=true)CView [inline, virtual]
setMode(long val)CViewContainer [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setTransparency(bool val)CView [inline, virtual]
setViewSize(CRect &rect)CViewContainer [virtual]
setWantsFocus(bool state)CView [inline, virtual]
sizeCView [protected]
styleCScrollView [protected]
takeFocus(CDrawContext *pContext=0)CViewContainer [virtual]
update(CDrawContext *pContext)CViewContainer [virtual]
useOffscreen(bool b)CViewContainer [virtual]
valueChanged(CDrawContext *pContext, CControl *pControl)CScrollView [virtual]
vsbCScrollView [protected]
wantsFocus() const CView [inline, virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CScrollView()CScrollView [virtual]
~CView()CView [virtual]
~CViewContainer()CViewContainer [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_scroll_view.html b/vstgui.sf/vstgui/Documentation/html/class_c_scroll_view.html new file mode 100644 index 0000000..b9da8a4 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_scroll_view.html @@ -0,0 +1,597 @@ + + +VSTGUI: CScrollView Class Reference + + + + + + +

CScrollView Class Reference

a scrollable view +More... +

+#include <cscrollview.h> +

+

Inheritance diagram for CScrollView: +

+ +CViewContainer +CControlListener +CView +CReferenceCounter + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

enum  { kHorizontalScrollbar = 1 << 1, +kVerticalScrollbar = 1 << 2 + }

Public Member Functions

 CScrollView (const CRect &size, const CRect &containerSize, CFrame *pParent, long style, long scrollbarWidth=16, CBitmap *pBackground=0)
virtual ~CScrollView ()
virtual void setContainerSize (const CRect &cs)
 set the virtual size of this container
virtual void addView (CView *pView)
 add a child view
virtual void drawBackgroundRect (CDrawContext *pContext, CRect &_updateRect)
 draw the background
virtual bool onWheel (CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)
 called if a mouse wheel event is happening over this view
virtual void valueChanged (CDrawContext *pContext, CControl *pControl)
virtual CScrollbargetVerticalScrollbar () const
virtual CScrollbargetHorizontalScrollbar () const

Protected Attributes

CScrollContainersc
CScrollbarvsb
CScrollbarhsb
CRect containerSize
long style
+

Detailed Description

+a scrollable view +

+


Member Enumeration Documentation

+

+ + + + +
+ + + + +
anonymous enum
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + +
kHorizontalScrollbar  +add a horizontal scrollbar
kVerticalScrollbar  +add a vertical scrollbar
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CScrollView::CScrollView const CRect size,
const CRect containerSize,
CFrame pParent,
long  style,
long  scrollbarWidth = 16,
CBitmap pBackground = 0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CScrollView::~CScrollView  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
void CScrollView::addView CView pView  )  [virtual]
+
+ + + + + +
+   + + +

+add a child view +

+

Parameters:
+ + +
pView the view object to add to this container
+
+ +

+Reimplemented from CViewContainer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void CScrollView::drawBackgroundRect CDrawContext pContext,
CRect _updateRect
[virtual]
+
+ + + + + +
+   + + +

+draw the background +

+

Parameters:
+ + + +
pContext the context which to use to draw the background
_updateRect the area which to draw
+
+ +

+Reimplemented from CViewContainer.

+

+ + + + +
+ + + + + + + + +
virtual CScrollbar* CScrollView::getHorizontalScrollbar  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual CScrollbar* CScrollView::getVerticalScrollbar  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool CScrollView::onWheel CDrawContext pContext,
const CPoint where,
const CMouseWheelAxis  axis,
float  distance
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse wheel event is happening over this view +

+ +

+Reimplemented from CViewContainer.

+

+ + + + +
+ + + + + + + + + +
void CScrollView::setContainerSize const CRect cs  )  [virtual]
+
+ + + + + +
+   + + +

+set the virtual size of this container +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void CScrollView::valueChanged CDrawContext pContext,
CControl pControl
[virtual]
+
+ + + + + +
+   + + +

+ +

+Implements CControlListener.

+


Member Data Documentation

+

+ + + + +
+ + + + +
CRect CScrollView::containerSize [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CScrollbar* CScrollView::hsb [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CScrollContainer* CScrollView::sc [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CScrollView::style [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CScrollbar* CScrollView::vsb [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_scroll_view.png b/vstgui.sf/vstgui/Documentation/html/class_c_scroll_view.png new file mode 100644 index 0000000..6c1bd83 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_scroll_view.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_scrollbar-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_scrollbar-members.html new file mode 100644 index 0000000..95e2e83 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_scrollbar-members.html @@ -0,0 +1,172 @@ + + +VSTGUI: Member List + + + + + + +

CScrollbar Member List

This is the complete list of members for CScrollbar, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attached(CView *view)CView [inline, virtual]
backgroundColorCScrollbar [protected]
backOffsetCControl [protected]
bDirtyCView [protected]
beginEdit()CControl [virtual]
bMouseEnabledCView [protected]
bounceValue()CControl [virtual]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
calculateScrollerLength()CScrollbar [protected]
CControl(const CRect &size, CControlListener *listener=0, long tag=0, CBitmap *pBackground=0)CControl
CView::CControl classCView [friend]
CFrame classCView [friend]
checkDefaultValue(CDrawContext *pContext, long button)CControl [virtual]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
copyBackOffset()CControl [virtual]
CReferenceCounter()CReferenceCounter [inline]
CScrollbar(const CRect &size, CControlListener *listener, long tag, long style, const CRect &scrollSize)CScrollbar
CView(const CRect &size)CView
CViewContainer classCView [friend]
defaultValueCControl [protected]
deltaCControl [protected]
doIdleStuff()CControl [inline, virtual]
draw(CDrawContext *pContext)CScrollbar [virtual]
drawBackground(CDrawContext *pContext)CScrollbar [protected]
drawerCScrollbar [protected]
drawRect(CDrawContext *pContext, const CRect &updateRect)CView [inline, virtual]
drawScroller(CDrawContext *pContext, const CRect &size)CScrollbar [protected]
endEdit()CControl [virtual]
forget()CReferenceCounter [inline, virtual]
frameColorCScrollbar [protected]
frameToLocal(CPoint &point) const CView [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackground() const CView [inline, virtual]
getBackgroundColor() const CScrollbar [inline]
getDefaultValue(void) const CControl [inline, virtual]
getEditor() const CView [virtual]
getFrame() const CView [inline]
getFrameColor() const CScrollbar [inline]
getHeight() const CView [inline]
getListener() const CControl [inline]
getMax() const CControl [inline, virtual]
getMin() const CControl [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getOldValue(void) const CControl [inline, virtual]
getParentView() const CView [inline]
getScrollerColor() const CScrollbar [inline]
getScrollerRect()CScrollbar [protected]
getScrollSize(CRect &rect) const CScrollbar [inline]
getStep() const CScrollbar [inline]
getTag() const CControl [inline, virtual]
getTransparency() const CView [inline, virtual]
getValue() const CControl [inline, virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWheelInc() const CControl [inline, virtual]
getWidth() const CView [inline]
hitTest(const CPoint &where, const long buttons=-1)CView [inline, virtual]
isDirty() const CControl [virtual]
isDoubleClick()CControl
isTypeOf(const char *s) const CView [inline, virtual]
kHorizontal enum valueCScrollbar
kVertical enum valueCScrollbar
lastTicksCControl [protected]
listenerCControl [protected]
localToFrame(CPoint &point) const CView [virtual]
looseFocus(CDrawContext *pContext=0)CView [virtual]
mouse(CDrawContext *pContext, CPoint &where, long buttons=-1)CScrollbar [virtual]
mouseableAreaCView [protected]
notify(CView *sender, const char *message)CView [virtual]
oldValueCControl [protected]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onKeyDown(VstKeyCode &keyCode)CView [virtual]
onKeyUp(VstKeyCode &keyCode)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CScrollbar [virtual]
CControl::onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CView [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CView [virtual]
remember()CReferenceCounter [inline, virtual]
removed(CView *parent)CView [inline, virtual]
scrollerAreaCScrollbar [protected]
scrollerColorCScrollbar [protected]
scrollerLengthCScrollbar [protected]
scrollSizeCScrollbar [protected]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackground(CBitmap *background)CView [virtual]
setBackgroundColor(const CColor &color)CScrollbar [inline, virtual]
setBackOffset(CPoint &offset)CControl [virtual]
setDefaultValue(float val)CControl [inline, virtual]
setDirty(const bool val=true)CControl [virtual]
setDrawer(IScrollbarDrawer *d)CScrollbar [inline, virtual]
setFrameColor(const CColor &color)CScrollbar [inline, virtual]
setListener(CControlListener *l)CControl [inline]
setMax(float val)CControl [inline, virtual]
setMin(float val)CControl [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setOldValue(float val)CControl [inline, virtual]
setScrollerColor(const CColor &color)CScrollbar [inline, virtual]
setScrollSize(const CRect &ssize)CScrollbar [virtual]
setStep(float newStep)CScrollbar [inline, virtual]
setTag(long val)CControl [inline, virtual]
setTransparency(bool val)CView [inline, virtual]
setValue(float val)CControl [inline, virtual]
setViewSize(CRect &rect)CView [virtual]
setWantsFocus(bool state)CView [inline, virtual]
setWheelInc(float val)CControl [inline, virtual]
sizeCView [protected]
stepValueCScrollbar [protected]
styleCScrollbar [protected]
tagCControl [protected]
takeFocus(CDrawContext *pContext=0)CView [virtual]
update(CDrawContext *pContext)CView [protected, virtual]
valueCControl [protected]
vmaxCControl [protected]
vminCControl [protected]
wantsFocus() const CView [inline, virtual]
wheelIncCControl [protected]
~CControl()CControl [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CScrollbar()CScrollbar [virtual]
~CView()CView [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_scrollbar.html b/vstgui.sf/vstgui/Documentation/html/class_c_scrollbar.html new file mode 100644 index 0000000..c987a3c --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_scrollbar.html @@ -0,0 +1,1001 @@ + + +VSTGUI: CScrollbar Class Reference + + + + + + +

CScrollbar Class Reference

a scrollbar control +More... +

+#include <cscrollview.h> +

+

Inheritance diagram for CScrollbar: +

+ +CControl +CView +CReferenceCounter + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

enum  { kHorizontal, +kVertical + }

Public Member Functions

 CScrollbar (const CRect &size, CControlListener *listener, long tag, long style, const CRect &scrollSize)
virtual ~CScrollbar ()
virtual void setDrawer (IScrollbarDrawer *d)
virtual void setScrollSize (const CRect &ssize)
virtual void setStep (float newStep)
CRectgetScrollSize (CRect &rect) const
float getStep () const
virtual void setFrameColor (const CColor &color)
virtual void setScrollerColor (const CColor &color)
virtual void setBackgroundColor (const CColor &color)
CColor getFrameColor () const
CColor getScrollerColor () const
CColor getBackgroundColor () const
virtual void draw (CDrawContext *pContext)
 called if the view should draw itself
virtual void mouse (CDrawContext *pContext, CPoint &where, long buttons=-1)
 called if a mouse click event occurs
virtual bool onWheel (CDrawContext *pContext, const CPoint &where, float distance)
 called if a mouse wheel event is happening over this view

Protected Member Functions

void drawBackground (CDrawContext *pContext)
void drawScroller (CDrawContext *pContext, const CRect &size)
void calculateScrollerLength ()
CRect getScrollerRect ()

Protected Attributes

long style
CRect scrollSize
CRect scrollerArea
float stepValue
CCoord scrollerLength
CColor frameColor
CColor scrollerColor
CColor backgroundColor
IScrollbarDrawerdrawer
+

Detailed Description

+a scrollbar control +

+


Member Enumeration Documentation

+

+ + + + +
+ + + + +
anonymous enum
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + +
kHorizontal  +
kVertical  +
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CScrollbar::CScrollbar const CRect size,
CControlListener listener,
long  tag,
long  style,
const CRect scrollSize
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CScrollbar::~CScrollbar  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
void CScrollbar::calculateScrollerLength  )  [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CScrollbar::draw CDrawContext pContext  )  [virtual]
+
+ + + + + +
+   + + +

+called if the view should draw itself +

+ +

+Implements CControl.

+

+ + + + +
+ + + + + + + + + +
void CScrollbar::drawBackground CDrawContext pContext  )  [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void CScrollbar::drawScroller CDrawContext pContext,
const CRect size
[protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CColor CScrollbar::getBackgroundColor  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CColor CScrollbar::getFrameColor  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CColor CScrollbar::getScrollerColor  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CRect CScrollbar::getScrollerRect  )  [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
CRect& CScrollbar::getScrollSize CRect rect  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
float CScrollbar::getStep  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CScrollbar::mouse CDrawContext pContext,
CPoint where,
long  buttons = -1
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse click event occurs +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool CScrollbar::onWheel CDrawContext pContext,
const CPoint where,
float  distance
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse wheel event is happening over this view +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + +
virtual void CScrollbar::setBackgroundColor const CColor color  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual void CScrollbar::setDrawer IScrollbarDrawer d  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual void CScrollbar::setFrameColor const CColor color  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual void CScrollbar::setScrollerColor const CColor color  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CScrollbar::setScrollSize const CRect ssize  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual void CScrollbar::setStep float  newStep  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
CColor CScrollbar::backgroundColor [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
IScrollbarDrawer* CScrollbar::drawer [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor CScrollbar::frameColor [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CRect CScrollbar::scrollerArea [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor CScrollbar::scrollerColor [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord CScrollbar::scrollerLength [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CRect CScrollbar::scrollSize [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
float CScrollbar::stepValue [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CScrollbar::style [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_scrollbar.png b/vstgui.sf/vstgui/Documentation/html/class_c_scrollbar.png new file mode 100644 index 0000000..f0f54f3 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_scrollbar.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_slider-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_slider-members.html new file mode 100644 index 0000000..b458832 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_slider-members.html @@ -0,0 +1,171 @@ + + +VSTGUI: Member List + + + + + + +

CSlider Member List

This is the complete list of members for CSlider, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attached(CView *parent)CSlider [virtual]
backOffsetCControl [protected]
bDirtyCView [protected]
bDrawTransparentEnabledCSlider [protected]
beginEdit()CControl [virtual]
bFreeClickCSlider [protected]
bMouseEnabledCView [protected]
bounceValue()CControl [virtual]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
CControl(const CRect &size, CControlListener *listener=0, long tag=0, CBitmap *pBackground=0)CControl
CView::CControl classCView [friend]
CFrame classCView [friend]
checkDefaultValue(CDrawContext *pContext, long button)CControl [virtual]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
copyBackOffset()CControl [virtual]
CReferenceCounter()CReferenceCounter [inline]
CSlider(const CRect &size, CControlListener *listener, long tag, long iMinPos, long iMaxPos, CBitmap *handle, CBitmap *background, CPoint &offset, const long style=kLeft|kHorizontal)CSlider
CSlider(const CRect &rect, CControlListener *listener, long tag, CPoint &offsetHandle, long rangeHandle, CBitmap *handle, CBitmap *background, CPoint &offset, const long style=kLeft|kHorizontal)CSlider
CView(const CRect &size)CView
CViewContainer classCView [friend]
defaultValueCControl [protected]
deltaCControl [protected]
doIdleStuff()CControl [inline, virtual]
draw(CDrawContext *)CSlider [virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CView [inline, virtual]
endEdit()CControl [virtual]
forget()CReferenceCounter [inline, virtual]
frameToLocal(CPoint &point) const CView [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackground() const CView [inline, virtual]
getDefaultValue(void) const CControl [inline, virtual]
getEditor() const CView [virtual]
getFrame() const CView [inline]
getFreeClick() const CSlider [inline, virtual]
getHandle() const CSlider [inline, virtual]
getHeight() const CView [inline]
getListener() const CControl [inline]
getMax() const CControl [inline, virtual]
getMin() const CControl [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getOldValue(void) const CControl [inline, virtual]
getParentView() const CView [inline]
getTag() const CControl [inline, virtual]
getTransparency() const CView [inline, virtual]
getValue() const CControl [inline, virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWheelInc() const CControl [inline, virtual]
getWidth() const CView [inline]
getZoomFactor() const CSlider [inline, virtual]
heightControlCSlider [protected]
heightOfSliderCSlider [protected]
hitTest(const CPoint &where, const long buttons=-1)CView [inline, virtual]
isDirty() const CControl [virtual]
isDoubleClick()CControl
isTypeOf(const char *s) const CView [inline, virtual]
lastTicksCControl [protected]
listenerCControl [protected]
localToFrame(CPoint &point) const CView [virtual]
looseFocus(CDrawContext *pContext=0)CView [virtual]
maxTmpCSlider [protected]
minPosCSlider [protected]
minTmpCSlider [protected]
mouse(CDrawContext *pContext, CPoint &where, long button=-1)CSlider [virtual]
mouseableAreaCView [protected]
notify(CView *sender, const char *message)CView [virtual]
offsetCSlider [protected]
offsetHandleCSlider [protected]
oldValueCControl [protected]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onKeyDown(VstKeyCode &keyCode)CSlider [virtual]
onKeyUp(VstKeyCode &keyCode)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CSlider [virtual]
CControl::onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CView [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pHandleCSlider [protected]
pOScreenCSlider [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
rangeHandleCSlider [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CView [virtual]
remember()CReferenceCounter [inline, virtual]
removed(CView *parent)CSlider [virtual]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackground(CBitmap *background)CView [virtual]
setBackOffset(CPoint &offset)CControl [virtual]
setDefaultValue(float val)CControl [inline, virtual]
setDirty(const bool val=true)CControl [virtual]
setDrawTransparentHandle(bool val)CSlider [inline, virtual]
setFreeClick(bool val)CSlider [inline, virtual]
setHandle(CBitmap *pHandle)CSlider [virtual]
setListener(CControlListener *l)CControl [inline]
setMax(float val)CControl [inline, virtual]
setMin(float val)CControl [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setOffsetHandle(CPoint &val)CSlider [virtual]
setOldValue(float val)CControl [inline, virtual]
setTag(long val)CControl [inline, virtual]
setTransparency(bool val)CView [inline, virtual]
setValue(float val)CControl [inline, virtual]
setViewSize(CRect &rect)CView [virtual]
setWantsFocus(bool state)CView [inline, virtual]
setWheelInc(float val)CControl [inline, virtual]
setZoomFactor(float val)CSlider [inline, virtual]
sizeCView [protected]
styleCSlider [protected]
tagCControl [protected]
takeFocus(CDrawContext *pContext=0)CView [virtual]
update(CDrawContext *pContext)CView [protected, virtual]
valueCControl [protected]
vmaxCControl [protected]
vminCControl [protected]
wantsFocus() const CView [inline, virtual]
wheelIncCControl [protected]
widthControlCSlider [protected]
widthOfSliderCSlider [protected]
zoomFactorCSlider [protected]
~CControl()CControl [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CSlider()CSlider [virtual]
~CView()CView [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_slider.html b/vstgui.sf/vstgui/Documentation/html/class_c_slider.html new file mode 100644 index 0000000..fc6b5e6 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_slider.html @@ -0,0 +1,1136 @@ + + +VSTGUI: CSlider Class Reference + + + + + + +

CSlider Class Reference

a slider control +More... +

+#include <vstcontrols.h> +

+

Inheritance diagram for CSlider: +

+ +CControl +CView +CReferenceCounter +CHorizontalSlider +CVerticalSlider + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CSlider (const CRect &size, CControlListener *listener, long tag, long iMinPos, long iMaxPos, CBitmap *handle, CBitmap *background, CPoint &offset, const long style=kLeft|kHorizontal)
 CSlider (const CRect &rect, CControlListener *listener, long tag, CPoint &offsetHandle, long rangeHandle, CBitmap *handle, CBitmap *background, CPoint &offset, const long style=kLeft|kHorizontal)
virtual ~CSlider ()
virtual bool attached (CView *parent)
 view is attached to a parent view
virtual bool removed (CView *parent)
 view is removed from parent view
virtual void draw (CDrawContext *)
 called if the view should draw itself
virtual void mouse (CDrawContext *pContext, CPoint &where, long button=-1)
 called if a mouse click event occurs
virtual bool onWheel (CDrawContext *pContext, const CPoint &where, float distance)
 called if a mouse wheel event is happening over this view
virtual long onKeyDown (VstKeyCode &keyCode)
 called if a key down event occurs and this view has focus
virtual void setDrawTransparentHandle (bool val)
virtual void setFreeClick (bool val)
virtual bool getFreeClick () const
virtual void setOffsetHandle (CPoint &val)
virtual void setHandle (CBitmap *pHandle)
virtual CBitmapgetHandle () const
virtual void setZoomFactor (float val)
virtual float getZoomFactor () const

Protected Attributes

CPoint offset
CPoint offsetHandle
CBitmappHandle
COffscreenContextpOScreen
long style
CCoord widthOfSlider
CCoord heightOfSlider
CCoord rangeHandle
CCoord minTmp
CCoord maxTmp
CCoord minPos
CCoord widthControl
CCoord heightControl
float zoomFactor
bool bDrawTransparentEnabled
bool bFreeClick
+

Detailed Description

+a slider control +

+Define a slider with a given background and handle. The range of variation of the handle should be defined. By default the handler is drawn with transparency (white color). By clicking Alt+Left Mouse the default value is used. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CSlider::CSlider const CRect size,
CControlListener listener,
long  tag,
long  iMinPos,
long  iMaxPos,
CBitmap handle,
CBitmap background,
CPoint offset,
const long  style = kLeft|kHorizontal
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CSlider::CSlider const CRect rect,
CControlListener listener,
long  tag,
CPoint offsetHandle,
long  rangeHandle,
CBitmap handle,
CBitmap background,
CPoint offset,
const long  style = kLeft|kHorizontal
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CSlider::~CSlider  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
bool CSlider::attached CView parent  )  [virtual]
+
+ + + + + +
+   + + +

+view is attached to a parent view +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + +
void CSlider::draw CDrawContext  )  [virtual]
+
+ + + + + +
+   + + +

+called if the view should draw itself +

+ +

+Implements CControl.

+

+ + + + +
+ + + + + + + + +
virtual bool CSlider::getFreeClick  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual CBitmap* CSlider::getHandle  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual float CSlider::getZoomFactor  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CSlider::mouse CDrawContext pContext,
CPoint where,
long  button = -1
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse click event occurs +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + +
long CSlider::onKeyDown VstKeyCode keyCode  )  [virtual]
+
+ + + + + +
+   + + +

+called if a key down event occurs and this view has focus +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool CSlider::onWheel CDrawContext pContext,
const CPoint where,
float  distance
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse wheel event is happening over this view +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + +
bool CSlider::removed CView parent  )  [virtual]
+
+ + + + + +
+   + + +

+view is removed from parent view +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + +
virtual void CSlider::setDrawTransparentHandle bool  val  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual void CSlider::setFreeClick bool  val  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CSlider::setHandle CBitmap pHandle  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CSlider::setOffsetHandle CPoint val  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual void CSlider::setZoomFactor float  val  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
bool CSlider::bDrawTransparentEnabled [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
bool CSlider::bFreeClick [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord CSlider::heightControl [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord CSlider::heightOfSlider [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord CSlider::maxTmp [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord CSlider::minPos [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord CSlider::minTmp [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CPoint CSlider::offset [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CPoint CSlider::offsetHandle [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CBitmap* CSlider::pHandle [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
COffscreenContext* CSlider::pOScreen [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord CSlider::rangeHandle [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CSlider::style [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord CSlider::widthControl [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord CSlider::widthOfSlider [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
float CSlider::zoomFactor [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_slider.png b/vstgui.sf/vstgui/Documentation/html/class_c_slider.png new file mode 100644 index 0000000..7638a23 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_slider.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_special_digit-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_special_digit-members.html new file mode 100644 index 0000000..6d32828 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_special_digit-members.html @@ -0,0 +1,152 @@ + + +VSTGUI: Member List + + + + + + +

CSpecialDigit Member List

This is the complete list of members for CSpecialDigit, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attached(CView *view)CView [inline, virtual]
backOffsetCControl [protected]
bDirtyCView [protected]
beginEdit()CControl [virtual]
bMouseEnabledCView [protected]
bounceValue()CControl [virtual]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
CControl(const CRect &size, CControlListener *listener=0, long tag=0, CBitmap *pBackground=0)CControl
CView::CControl classCView [friend]
CFrame classCView [friend]
checkDefaultValue(CDrawContext *pContext, long button)CControl [virtual]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
copyBackOffset()CControl [virtual]
CReferenceCounter()CReferenceCounter [inline]
CSpecialDigit(const CRect &size, CControlListener *listener, long tag, long dwPos, long iNumbers, long *xpos, long *ypos, long width, long height, CBitmap *background)CSpecialDigit
CView(const CRect &size)CView
CViewContainer classCView [friend]
defaultValueCControl [protected]
deltaCControl [protected]
doIdleStuff()CControl [inline, virtual]
draw(CDrawContext *)CSpecialDigit [virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CView [inline, virtual]
endEdit()CControl [virtual]
forget()CReferenceCounter [inline, virtual]
frameToLocal(CPoint &point) const CView [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackground() const CView [inline, virtual]
getDefaultValue(void) const CControl [inline, virtual]
getEditor() const CView [virtual]
getFrame() const CView [inline]
getHeight() const CView [inline]
getListener() const CControl [inline]
getMax() const CControl [inline, virtual]
getMin() const CControl [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getNormValue(void) const CSpecialDigit [virtual]
getOldValue(void) const CControl [inline, virtual]
getParentView() const CView [inline]
getTag() const CControl [inline, virtual]
getTransparency() const CView [inline, virtual]
getValue() const CControl [inline, virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWheelInc() const CControl [inline, virtual]
getWidth() const CView [inline]
heightCSpecialDigit [protected]
hitTest(const CPoint &where, const long buttons=-1)CView [inline, virtual]
iNumbersCSpecialDigit [protected]
isDirty() const CControl [virtual]
isDoubleClick()CControl
isTypeOf(const char *s) const CView [inline, virtual]
lastTicksCControl [protected]
listenerCControl [protected]
localToFrame(CPoint &point) const CView [virtual]
looseFocus(CDrawContext *pContext=0)CView [virtual]
mouse(CDrawContext *pContext, CPoint &where, long buttons=-1)CView [virtual]
mouseableAreaCView [protected]
notify(CView *sender, const char *message)CView [virtual]
oldValueCControl [protected]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onKeyDown(VstKeyCode &keyCode)CView [virtual]
onKeyUp(VstKeyCode &keyCode)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CView [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CView [virtual]
remember()CReferenceCounter [inline, virtual]
removed(CView *parent)CView [inline, virtual]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackground(CBitmap *background)CView [virtual]
setBackOffset(CPoint &offset)CControl [virtual]
setDefaultValue(float val)CControl [inline, virtual]
setDirty(const bool val=true)CControl [virtual]
setListener(CControlListener *l)CControl [inline]
setMax(float val)CControl [inline, virtual]
setMin(float val)CControl [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setOldValue(float val)CControl [inline, virtual]
setTag(long val)CControl [inline, virtual]
setTransparency(bool val)CView [inline, virtual]
setValue(float val)CControl [inline, virtual]
setViewSize(CRect &rect)CView [virtual]
setWantsFocus(bool state)CView [inline, virtual]
setWheelInc(float val)CControl [inline, virtual]
sizeCView [protected]
tagCControl [protected]
takeFocus(CDrawContext *pContext=0)CView [virtual]
update(CDrawContext *pContext)CView [protected, virtual]
valueCControl [protected]
vmaxCControl [protected]
vminCControl [protected]
wantsFocus() const CView [inline, virtual]
wheelIncCControl [protected]
widthCSpecialDigit [protected]
xposCSpecialDigit [protected]
yposCSpecialDigit [protected]
~CControl()CControl [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CSpecialDigit()CSpecialDigit [virtual]
~CView()CView [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_special_digit.html b/vstgui.sf/vstgui/Documentation/html/class_c_special_digit.html new file mode 100644 index 0000000..151afea --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_special_digit.html @@ -0,0 +1,372 @@ + + +VSTGUI: CSpecialDigit Class Reference + + + + + + +

CSpecialDigit Class Reference

special display with custom numbers (0...9) +More... +

+#include <vstcontrols.h> +

+

Inheritance diagram for CSpecialDigit: +

+ +CControl +CView +CReferenceCounter + +List of all members. + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CSpecialDigit (const CRect &size, CControlListener *listener, long tag, long dwPos, long iNumbers, long *xpos, long *ypos, long width, long height, CBitmap *background)
virtual ~CSpecialDigit ()
virtual void draw (CDrawContext *)
 called if the view should draw itself
virtual float getNormValue (void) const

Protected Attributes

long iNumbers
long xpos [7]
long ypos [7]
long width
long height
+

Detailed Description

+special display with custom numbers (0...9) +

+Can be used to display a counter with maximum 7 digits. All digit have the same size and are stacked in height in the pixmap. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CSpecialDigit::CSpecialDigit const CRect size,
CControlListener listener,
long  tag,
long  dwPos,
long  iNumbers,
long *  xpos,
long *  ypos,
long  width,
long  height,
CBitmap background
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CSpecialDigit::~CSpecialDigit  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
void CSpecialDigit::draw CDrawContext  )  [virtual]
+
+ + + + + +
+   + + +

+called if the view should draw itself +

+ +

+Implements CControl.

+

+ + + + +
+ + + + + + + + + +
float CSpecialDigit::getNormValue void   )  const [virtual]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
long CSpecialDigit::height [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CSpecialDigit::iNumbers [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CSpecialDigit::width [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CSpecialDigit::xpos[7] [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CSpecialDigit::ypos[7] [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_special_digit.png b/vstgui.sf/vstgui/Documentation/html/class_c_special_digit.png new file mode 100644 index 0000000..0f430d3 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_special_digit.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_splash_screen-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_splash_screen-members.html new file mode 100644 index 0000000..ddca12c --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_splash_screen-members.html @@ -0,0 +1,154 @@ + + +VSTGUI: Member List + + + + + + +

CSplashScreen Member List

This is the complete list of members for CSplashScreen, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attached(CView *view)CView [inline, virtual]
backOffsetCControl [protected]
bDirtyCView [protected]
beginEdit()CControl [virtual]
bitmapTransparencyCSplashScreen [protected]
bMouseEnabledCView [protected]
bounceValue()CControl [virtual]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
CControl(const CRect &size, CControlListener *listener=0, long tag=0, CBitmap *pBackground=0)CControl
CView::CControl classCView [friend]
CFrame classCView [friend]
checkDefaultValue(CDrawContext *pContext, long button)CControl [virtual]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
copyBackOffset()CControl [virtual]
CReferenceCounter()CReferenceCounter [inline]
CSplashScreen(const CRect &size, CControlListener *listener, long tag, CBitmap *background, CRect &toDisplay, CPoint &offset)CSplashScreen
CView(const CRect &size)CView
CViewContainer classCView [friend]
defaultValueCControl [protected]
deltaCControl [protected]
doIdleStuff()CControl [inline, virtual]
draw(CDrawContext *)CSplashScreen [virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CView [inline, virtual]
endEdit()CControl [virtual]
forget()CReferenceCounter [inline, virtual]
frameToLocal(CPoint &point) const CView [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackground() const CView [inline, virtual]
getBitmapTransparency() const CSplashScreen [inline]
getDefaultValue(void) const CControl [inline, virtual]
getEditor() const CView [virtual]
getFrame() const CView [inline]
getHeight() const CView [inline]
getListener() const CControl [inline]
getMax() const CControl [inline, virtual]
getMin() const CControl [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getOffset() const CSplashScreen [inline]
getOldValue(void) const CControl [inline, virtual]
getParentView() const CView [inline]
getTag() const CControl [inline, virtual]
getTransparency() const CView [inline, virtual]
getValue() const CControl [inline, virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWheelInc() const CControl [inline, virtual]
getWidth() const CView [inline]
hitTest(const CPoint &where, const long buttons=-1)CSplashScreen [virtual]
isDirty() const CControl [virtual]
isDoubleClick()CControl
isTypeOf(const char *s) const CView [inline, virtual]
keepSizeCSplashScreen [protected]
lastTicksCControl [protected]
listenerCControl [protected]
localToFrame(CPoint &point) const CView [virtual]
looseFocus(CDrawContext *pContext=0)CView [virtual]
mouse(CDrawContext *pContext, CPoint &where, long button=-1)CSplashScreen [virtual]
mouseableAreaCView [protected]
notify(CView *sender, const char *message)CView [virtual]
offsetCSplashScreen [protected]
oldValueCControl [protected]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onKeyDown(VstKeyCode &keyCode)CView [virtual]
onKeyUp(VstKeyCode &keyCode)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CView [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CView [virtual]
remember()CReferenceCounter [inline, virtual]
removed(CView *parent)CView [inline, virtual]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackground(CBitmap *background)CView [virtual]
setBackOffset(CPoint &offset)CControl [virtual]
setBitmapTransparency(unsigned char transparency)CSplashScreen
setDefaultValue(float val)CControl [inline, virtual]
setDirty(const bool val=true)CControl [virtual]
setListener(CControlListener *l)CControl [inline]
setMax(float val)CControl [inline, virtual]
setMin(float val)CControl [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setOldValue(float val)CControl [inline, virtual]
setTag(long val)CControl [inline, virtual]
setTransparency(bool val)CView [inline, virtual]
setValue(float val)CControl [inline, virtual]
setViewSize(CRect &rect)CView [virtual]
setWantsFocus(bool state)CView [inline, virtual]
setWheelInc(float val)CControl [inline, virtual]
sizeCView [protected]
tagCControl [protected]
takeFocus(CDrawContext *pContext=0)CView [virtual]
toDisplayCSplashScreen [protected]
unSplash(CDrawContext *pContext=0)CSplashScreen [virtual]
update(CDrawContext *pContext)CView [protected, virtual]
valueCControl [protected]
vmaxCControl [protected]
vminCControl [protected]
wantsFocus() const CView [inline, virtual]
wheelIncCControl [protected]
~CControl()CControl [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CSplashScreen()CSplashScreen [virtual]
~CView()CView [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_splash_screen.html b/vstgui.sf/vstgui/Documentation/html/class_c_splash_screen.html new file mode 100644 index 0000000..044c0d3 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_splash_screen.html @@ -0,0 +1,500 @@ + + +VSTGUI: CSplashScreen Class Reference + + + + + + +

CSplashScreen Class Reference

#include <vstcontrols.h> +

+

Inheritance diagram for CSplashScreen: +

+ +CControl +CView +CReferenceCounter + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CSplashScreen (const CRect &size, CControlListener *listener, long tag, CBitmap *background, CRect &toDisplay, CPoint &offset)
virtual ~CSplashScreen ()
virtual void draw (CDrawContext *)
 called if the view should draw itself
virtual bool hitTest (const CPoint &where, const long buttons=-1)
 check if where hits this view
virtual void mouse (CDrawContext *pContext, CPoint &where, long button=-1)
 called if a mouse click event occurs
virtual void unSplash (CDrawContext *pContext=0)
void setBitmapTransparency (unsigned char transparency)
unsigned char getBitmapTransparency () const
const CPointgetOffset () const

Protected Attributes

CRect toDisplay
CRect keepSize
CPoint offset
unsigned char bitmapTransparency
+

Detailed Description

+One click on its activated region and its pixmap is displayed, in this state the other control can not be used, an another click on the displayed area reinstalls the normal frame. This can be used to display a help view over the other views. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CSplashScreen::CSplashScreen const CRect size,
CControlListener listener,
long  tag,
CBitmap background,
CRect toDisplay,
CPoint offset
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CSplashScreen::~CSplashScreen  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
void CSplashScreen::draw CDrawContext  )  [virtual]
+
+ + + + + +
+   + + +

+called if the view should draw itself +

+ +

+Implements CControl.

+

+ + + + +
+ + + + + + + + +
unsigned char CSplashScreen::getBitmapTransparency  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
const CPoint& CSplashScreen::getOffset  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool CSplashScreen::hitTest const CPoint where,
const long  buttons = -1
[virtual]
+
+ + + + + +
+   + + +

+check if where hits this view +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CSplashScreen::mouse CDrawContext pContext,
CPoint where,
long  button = -1
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse click event occurs +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + +
void CSplashScreen::setBitmapTransparency unsigned char  transparency  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CSplashScreen::unSplash CDrawContext pContext = 0  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
unsigned char CSplashScreen::bitmapTransparency [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CRect CSplashScreen::keepSize [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CPoint CSplashScreen::offset [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CRect CSplashScreen::toDisplay [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_splash_screen.png b/vstgui.sf/vstgui/Documentation/html/class_c_splash_screen.png new file mode 100644 index 0000000..33c1350 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_splash_screen.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_splash_screen_view-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_splash_screen_view-members.html new file mode 100644 index 0000000..fdd2b56 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_splash_screen_view-members.html @@ -0,0 +1,109 @@ + + +VSTGUI: Member List + + + + + + +

CSplashScreenView Member List

This is the complete list of members for CSplashScreenView, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attached(CView *view)CView [inline, virtual]
bDirtyCView [protected]
bMouseEnabledCView [protected]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
CControl classCView [friend]
CFrame classCView [friend]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
CReferenceCounter()CReferenceCounter [inline]
CSplashScreenView(const CRect &size, CSplashScreen *splashScreen)CSplashScreenView [inline]
CView(const CRect &size)CView
CViewContainer classCView [friend]
draw(CDrawContext *pContext)CSplashScreenView [inline, virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CView [inline, virtual]
forget()CReferenceCounter [inline, virtual]
frameToLocal(CPoint &point) const CView [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackground() const CView [inline, virtual]
getEditor() const CView [virtual]
getFrame() const CView [inline]
getHeight() const CView [inline]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getParentView() const CView [inline]
getTransparency() const CView [inline, virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWidth() const CView [inline]
hitTest(const CPoint &where, const long buttons=-1)CView [inline, virtual]
isDirty() const CView [inline, virtual]
isTypeOf(const char *s) const CView [inline, virtual]
localToFrame(CPoint &point) const CView [virtual]
looseFocus(CDrawContext *pContext=0)CView [virtual]
mouse(CDrawContext *pContext, CPoint &where, long button)CSplashScreenView [inline, virtual]
mouseableAreaCView [protected]
notify(CView *sender, const char *message)CView [virtual]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onKeyDown(VstKeyCode &keyCode)CView [virtual]
onKeyUp(VstKeyCode &keyCode)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CView [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CView [virtual]
remember()CReferenceCounter [inline, virtual]
removed(CView *parent)CView [inline, virtual]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackground(CBitmap *background)CView [virtual]
setDirty(const bool val=true)CView [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setTransparency(bool val)CView [inline, virtual]
setViewSize(CRect &rect)CView [virtual]
setWantsFocus(bool state)CView [inline, virtual]
sizeCView [protected]
splashScreenCSplashScreenView [protected]
takeFocus(CDrawContext *pContext=0)CView [virtual]
update(CDrawContext *pContext)CView [protected, virtual]
wantsFocus() const CView [inline, virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CView()CView [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_splash_screen_view.html b/vstgui.sf/vstgui/Documentation/html/class_c_splash_screen_view.html new file mode 100644 index 0000000..9f06e3f --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_splash_screen_view.html @@ -0,0 +1,204 @@ + + +VSTGUI: CSplashScreenView Class Reference + + + + + + +

CSplashScreenView Class Reference

Inheritance diagram for CSplashScreenView: +

+ +CView +CReferenceCounter + +List of all members. + + + + + + + + + + + + + +

Public Member Functions

 CSplashScreenView (const CRect &size, CSplashScreen *splashScreen)
void draw (CDrawContext *pContext)
 called if the view should draw itself
void mouse (CDrawContext *pContext, CPoint &where, long button)
 called if a mouse click event occurs

Protected Attributes

CSplashScreensplashScreen
+

Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
CSplashScreenView::CSplashScreenView const CRect size,
CSplashScreen splashScreen
[inline]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
void CSplashScreenView::draw CDrawContext pContext  )  [inline, virtual]
+
+ + + + + +
+   + + +

+called if the view should draw itself +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CSplashScreenView::mouse CDrawContext pContext,
CPoint where,
long  button
[inline, virtual]
+
+ + + + + +
+   + + +

+called if a mouse click event occurs +

+ +

+Reimplemented from CView.

+


Member Data Documentation

+

+ + + + +
+ + + + +
CSplashScreen* CSplashScreenView::splashScreen [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_splash_screen_view.png b/vstgui.sf/vstgui/Documentation/html/class_c_splash_screen_view.png new file mode 100644 index 0000000..10d3e25 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_splash_screen_view.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_tab_button-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_tab_button-members.html new file mode 100644 index 0000000..259f8d0 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_tab_button-members.html @@ -0,0 +1,162 @@ + + +VSTGUI: Member List + + + + + + +

CTabButton Member List

This is the complete list of members for CTabButton, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
activeTextColorCTabButton [protected]
attached(CView *view)CView [inline, virtual]
backOffsetCControl [protected]
bDirtyCView [protected]
beginEdit()CControl [virtual]
bMouseEnabledCView [protected]
bounceValue()CControl [virtual]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
CControl(const CRect &size, CControlListener *listener=0, long tag=0, CBitmap *pBackground=0)CControl
CView::CControl classCView [friend]
CFrame classCView [friend]
checkDefaultValue(CDrawContext *pContext, long button)CControl [virtual]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
COnOffButton(const CRect &size, CControlListener *listener, long tag, CBitmap *background, long style=kPreListenerUpdate)COnOffButton
copyBackOffset()CControl [virtual]
CReferenceCounter()CReferenceCounter [inline]
CTabButton(const CRect &size, CControlListener *listener, long tag, CBitmap *background, const char *inName)CTabButton [inline]
CView(const CRect &size)CView
CViewContainer classCView [friend]
defaultValueCControl [protected]
deltaCControl [protected]
doIdleStuff()CControl [inline, virtual]
draw(CDrawContext *pContext)CTabButton [inline, virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CView [inline, virtual]
endEdit()CControl [virtual]
fontSizeCTabButton [protected]
forget()CReferenceCounter [inline, virtual]
frameToLocal(CPoint &point) const CView [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackground() const CView [inline, virtual]
getDefaultValue(void) const CControl [inline, virtual]
getEditor() const CView [virtual]
getFrame() const CView [inline]
getHeight() const CView [inline]
getListener() const CControl [inline]
getMax() const CControl [inline, virtual]
getMin() const CControl [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getOldValue(void) const CControl [inline, virtual]
getParentView() const CView [inline]
getStyle() const COnOffButton [inline, virtual]
getTag() const CControl [inline, virtual]
getTransparency() const CView [inline, virtual]
getValue() const CControl [inline, virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWheelInc() const CControl [inline, virtual]
getWidth() const CView [inline]
hitTest(const CPoint &where, const long buttons=-1)CView [inline, virtual]
inactiveTextColorCTabButton [protected]
isDirty() const CControl [virtual]
isDoubleClick()CControl
isTypeOf(const char *s) const CView [inline, virtual]
kPostListenerUpdate enum valueCOnOffButton
kPreListenerUpdate enum valueCOnOffButton
lastTicksCControl [protected]
listenerCControl [protected]
localToFrame(CPoint &point) const CView [virtual]
looseFocus(CDrawContext *pContext=0)CView [virtual]
mouse(CDrawContext *pContext, CPoint &where, long button)CTabButton [inline, virtual]
mouseableAreaCView [protected]
nameCTabButton [protected]
notify(CView *sender, const char *message)CView [virtual]
oldValueCControl [protected]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CTabButton [inline, virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onKeyDown(VstKeyCode &keyCode)CView [virtual]
onKeyUp(VstKeyCode &keyCode)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CView [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CView [virtual]
remember()CReferenceCounter [inline, virtual]
removed(CView *parent)CView [inline, virtual]
setActiveTextColor(const CColor &color)CTabButton [inline]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackground(CBitmap *background)CView [virtual]
setBackOffset(CPoint &offset)CControl [virtual]
setDefaultValue(float val)CControl [inline, virtual]
setDirty(const bool val=true)CControl [virtual]
setInactiveTextColor(const CColor &color)CTabButton [inline]
setListener(CControlListener *l)CControl [inline]
setMax(float val)CControl [inline, virtual]
setMin(float val)CControl [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setOldValue(float val)CControl [inline, virtual]
setStyle(long newStyle)COnOffButton [inline, virtual]
setTag(long val)CControl [inline, virtual]
setTextFont(const CFont &font)CTabButton [inline]
setTextSize(const long &textSize)CTabButton [inline]
setTransparency(bool val)CView [inline, virtual]
setValue(float val)CControl [inline, virtual]
setViewSize(CRect &rect)CView [virtual]
setWantsFocus(bool state)CView [inline, virtual]
setWheelInc(float val)CControl [inline, virtual]
sizeCView [protected]
styleCOnOffButton [protected]
tagCControl [protected]
takeFocus(CDrawContext *pContext=0)CView [virtual]
textFontCTabButton [protected]
update(CDrawContext *pContext)CView [protected, virtual]
valueCControl [protected]
vmaxCControl [protected]
vminCControl [protected]
wantsFocus() const CView [inline, virtual]
wheelIncCControl [protected]
~CControl()CControl [virtual]
~COnOffButton()COnOffButton [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CTabButton()CTabButton [inline, virtual]
~CView()CView [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_tab_button.html b/vstgui.sf/vstgui/Documentation/html/class_c_tab_button.html new file mode 100644 index 0000000..29f7ab5 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_tab_button.html @@ -0,0 +1,523 @@ + + +VSTGUI: CTabButton Class Reference + + + + + + +

CTabButton Class Reference

Inheritance diagram for CTabButton: +

+ +COnOffButton +CControl +CView +CReferenceCounter + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CTabButton (const CRect &size, CControlListener *listener, long tag, CBitmap *background, const char *inName)
virtual ~CTabButton ()
virtual void draw (CDrawContext *pContext)
 called if the view should draw itself
void mouse (CDrawContext *pContext, CPoint &where, long button)
 called if a mouse click event occurs
virtual void onDragEnter (CDrawContext *context, CDragContainer *drag, const CPoint &where)
 called if a drag is entering this view
void setTextFont (const CFont &font)
void setActiveTextColor (const CColor &color)
void setInactiveTextColor (const CColor &color)
void setTextSize (const long &textSize)

Protected Attributes

char * name
CFont textFont
CColor activeTextColor
CColor inactiveTextColor
long fontSize
+

Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CTabButton::CTabButton const CRect size,
CControlListener listener,
long  tag,
CBitmap background,
const char *  inName
[inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual CTabButton::~CTabButton  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual void CTabButton::draw CDrawContext pContext  )  [inline, virtual]
+
+ + + + + +
+   + + +

+called if the view should draw itself +

+ +

+Reimplemented from COnOffButton.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CTabButton::mouse CDrawContext pContext,
CPoint where,
long  button
[inline, virtual]
+
+ + + + + +
+   + + +

+called if a mouse click event occurs +

+ +

+Reimplemented from COnOffButton.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void CTabButton::onDragEnter CDrawContext context,
CDragContainer drag,
const CPoint where
[inline, virtual]
+
+ + + + + +
+   + + +

+called if a drag is entering this view +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + +
void CTabButton::setActiveTextColor const CColor color  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CTabButton::setInactiveTextColor const CColor color  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CTabButton::setTextFont const CFont font  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CTabButton::setTextSize const long &  textSize  )  [inline]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
CColor CTabButton::activeTextColor [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CTabButton::fontSize [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor CTabButton::inactiveTextColor [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
char* CTabButton::name [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CFont CTabButton::textFont [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_tab_button.png b/vstgui.sf/vstgui/Documentation/html/class_c_tab_button.png new file mode 100644 index 0000000..4bb09fa Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_tab_button.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_tab_child_view-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_tab_child_view-members.html new file mode 100644 index 0000000..6d47f7e --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_tab_child_view-members.html @@ -0,0 +1,51 @@ + + +VSTGUI: Member List + + + + + + +

CTabChildView Member List

This is the complete list of members for CTabChildView, including all inherited members.

+ + + + + + + + + + + +
buttonCTabChildView
CReferenceCounter()CReferenceCounter [inline]
CTabChildView(CView *view)CTabChildView [inline]
forget()CReferenceCounter [inline, virtual]
getNbReference() const CReferenceCounter [inline]
nextCTabChildView
previousCTabChildView
remember()CReferenceCounter [inline, virtual]
viewCTabChildView
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CTabChildView()CTabChildView [inline, virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_tab_child_view.html b/vstgui.sf/vstgui/Documentation/html/class_c_tab_child_view.html new file mode 100644 index 0000000..bef9740 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_tab_child_view.html @@ -0,0 +1,212 @@ + + +VSTGUI: CTabChildView Class Reference + + + + + + +

CTabChildView Class Reference

Inheritance diagram for CTabChildView: +

+ +CReferenceCounter + +List of all members. + + + + + + + + + + + + + + + +

Public Member Functions

 CTabChildView (CView *view)
virtual ~CTabChildView ()

Public Attributes

CViewview
CTabChildViewprevious
CTabChildViewnext
CTabButtonbutton
+

Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + +
CTabChildView::CTabChildView CView view  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual CTabChildView::~CTabChildView  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
CTabButton* CTabChildView::button
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CTabChildView* CTabChildView::next
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CTabChildView* CTabChildView::previous
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CView* CTabChildView::view
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_tab_child_view.png b/vstgui.sf/vstgui/Documentation/html/class_c_tab_child_view.png new file mode 100644 index 0000000..0f788cd Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_tab_child_view.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_tab_view-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_tab_view-members.html new file mode 100644 index 0000000..29120c2 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_tab_view-members.html @@ -0,0 +1,170 @@ + + +VSTGUI: Member List + + + + + + +

CTabView Member List

This is the complete list of members for CTabView, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addTab(CView *view, const char *name=0, CBitmap *tabBitmap=0)CTabView [virtual]
addView(CView *pView)CViewContainer [virtual]
addView(CView *pView, CRect &mouseableArea, bool mouseEnabled=true)CViewContainer [virtual]
advanceNextFocusView(CView *oldFocus, bool reverse=false)CViewContainer [virtual]
alignTabs(long alignment=kAlignCenter)CTabView [virtual]
attached(CView *view)CViewContainer [virtual]
backgroundColorCViewContainer [protected]
backgroundOffsetCViewContainer [protected]
bDirtyCView [protected]
bDrawInOffscreenCViewContainer [protected]
bMouseEnabledCView [protected]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
CControl classCView [friend]
CFrame classCView [friend]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
controlModifierClicked(CDrawContext *pContext, CControl *pControl, long button)CControlListener [inline, virtual]
CReferenceCounter()CReferenceCounter [inline]
CTabView(const CRect &size, CFrame *parent, CBitmap *tabBitmap, CBitmap *background=0, long tabPosition=kPositionTop, long style=0)CTabView
CTabView(const CRect &size, CFrame *parent, const CRect &tabSize, CBitmap *background=0, long tabPosition=kPositionTop, long style=0)CTabView
currentChildCTabView [protected]
currentDragViewCViewContainer [protected]
CView(const CRect &size)CView
CViewContainer(const CRect &size, CFrame *pParent, CBitmap *pBackground=0)CViewContainer
CView::CViewContainer classCView [friend]
draw(CDrawContext *pContext)CViewContainer [virtual]
drawBackgroundRect(CDrawContext *pContext, CRect &_updateRect)CViewContainer [virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CViewContainer [virtual]
firstChildCTabView [protected]
forget()CReferenceCounter [inline, virtual]
frameToLocal(CPoint &point) const CViewContainer [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackground() const CView [inline, virtual]
getBackgroundColor() const CViewContainer [inline, virtual]
getBackgroundOffset() const CViewContainer [inline, virtual]
getCurrentView() const CViewContainer [virtual]
getEditor() const CView [virtual]
getFrame() const CView [inline]
getHeight() const CView [inline]
getMode() const CViewContainer [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getNbViews() const CViewContainer [virtual]
getParentView() const CView [inline]
getTabViewSize(CRect &rect) const CTabView [virtual]
getTransparency() const CView [inline, virtual]
getView(long index) const CViewContainer [virtual]
getViewAt(const CPoint &where, bool deep=false) const CViewContainer [virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWidth() const CView [inline]
hitTest(const CPoint &where, const long buttons=-1)CViewContainer [virtual]
hitTestSubViews(const CPoint &where, const long buttons=-1)CViewContainer [protected]
isChild(CView *pView) const CViewContainer [virtual]
isDirty() const CViewContainer [virtual]
isTypeOf(const char *s) const CView [inline, virtual]
kAlignBottom enum valueCTabView
kAlignCenter enum valueCTabView
kAlignLeft enum valueCTabView
kAlignRight enum valueCTabView
kAlignTop enum valueCTabView
kNormalUpdate enum valueCViewContainer
kOnlyDirtyUpdate enum valueCViewContainer
kPositionBottom enum valueCTabView
kPositionLeft enum valueCTabView
kPositionRight enum valueCTabView
kPositionTop enum valueCTabView
lastChildCTabView [protected]
localToFrame(CPoint &point) const CViewContainer [virtual]
looseFocus(CDrawContext *pContext=0)CViewContainer [virtual]
modeCViewContainer [protected]
modifyDrawContext(CCoord save[4], CDrawContext *pContext)CViewContainer
mouse(CDrawContext *pContext, CPoint &where, long buttons=-1)CViewContainer [virtual]
mouseableAreaCView [protected]
notify(CView *sender, const char *message)CViewContainer [virtual]
numberOfChildsCTabView [protected]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CViewContainer [virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CViewContainer [virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CViewContainer [virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CViewContainer [virtual]
onKeyDown(VstKeyCode &keyCode)CViewContainer [virtual]
onKeyUp(VstKeyCode &keyCode)CViewContainer [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CViewContainer [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CViewContainer [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pFirstViewCViewContainer [protected]
pLastViewCViewContainer [protected]
pOffscreenContextCViewContainer [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CViewContainer [virtual]
remember()CReferenceCounter [inline, virtual]
removeAll(const bool &withForget=true)CViewContainer [virtual]
removeAllTabs()CTabView [virtual]
removed(CView *parent)CViewContainer [virtual]
removeTab(CView *view)CTabView [virtual]
removeView(CView *pView, const bool &withForget=true)CViewContainer [virtual]
restoreDrawContext(CDrawContext *pContext, CCoord save[4])CViewContainer
selectTab(long index)CTabView [virtual]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackground(CBitmap *background)CView [virtual]
setBackgroundColor(const CColor color)CViewContainer [virtual]
setBackgroundOffset(const CPoint &p)CViewContainer [inline, virtual]
setCurrentChild(CTabChildView *childView)CTabView [protected]
setDirty(const bool val=true)CView [inline, virtual]
setMode(long val)CViewContainer [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setTabFontStyle(const CFont &font, long fontSize=12, CColor selectedColor=kBlackCColor, CColor deselectedColor=kWhiteCColor)CTabView [virtual]
setTransparency(bool val)CView [inline, virtual]
setViewSize(CRect &rect)CViewContainer [virtual]
setWantsFocus(bool state)CView [inline, virtual]
sizeCView [protected]
styleCTabView [protected]
tabBitmapCTabView [protected]
tabPositionCTabView [protected]
tabSizeCTabView [protected]
takeFocus(CDrawContext *pContext=0)CViewContainer [virtual]
update(CDrawContext *pContext)CViewContainer [virtual]
useOffscreen(bool b)CViewContainer [virtual]
valueChanged(CDrawContext *pContext, CControl *pControl)CTabView [virtual]
wantsFocus() const CView [inline, virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CTabView()CTabView [virtual]
~CView()CView [virtual]
~CViewContainer()CViewContainer [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_tab_view.html b/vstgui.sf/vstgui/Documentation/html/class_c_tab_view.html new file mode 100644 index 0000000..58863e9 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_tab_view.html @@ -0,0 +1,833 @@ + + +VSTGUI: CTabView Class Reference + + + + + + +

CTabView Class Reference

a tab view +More... +

+#include <ctabview.h> +

+

Inheritance diagram for CTabView: +

+ +CViewContainer +CControlListener +CView +CReferenceCounter + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

enum  { kPositionLeft = 0, +kPositionRight, +kPositionTop, +kPositionBottom + }
enum  {
+  kAlignCenter = 0, +kAlignLeft, +kAlignRight, +kAlignTop = kAlignLeft, +
+  kAlignBottom = kAlignRight +
+ }

Public Member Functions

 CTabView (const CRect &size, CFrame *parent, CBitmap *tabBitmap, CBitmap *background=0, long tabPosition=kPositionTop, long style=0)
 CTabView (const CRect &size, CFrame *parent, const CRect &tabSize, CBitmap *background=0, long tabPosition=kPositionTop, long style=0)
virtual ~CTabView ()
virtual bool addTab (CView *view, const char *name=0, CBitmap *tabBitmap=0)
virtual bool removeTab (CView *view)
virtual bool removeAllTabs ()
virtual bool selectTab (long index)
virtual CRectgetTabViewSize (CRect &rect) const
virtual void setTabFontStyle (const CFont &font, long fontSize=12, CColor selectedColor=kBlackCColor, CColor deselectedColor=kWhiteCColor)
 call this after the tabs are added. Tabs added after this call will have the default font style.
virtual void alignTabs (long alignment=kAlignCenter)
 call this after you have added all tabs
virtual void valueChanged (CDrawContext *pContext, CControl *pControl)

Protected Member Functions

void setCurrentChild (CTabChildView *childView)

Protected Attributes

unsigned long numberOfChilds
long tabPosition
long style
CRect tabSize
CBitmaptabBitmap
CTabChildViewfirstChild
CTabChildViewlastChild
CTabChildViewcurrentChild
+

Detailed Description

+a tab view +

+


Member Enumeration Documentation

+

+ + + + +
+ + + + +
anonymous enum
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + + + +
kPositionLeft  +
kPositionRight  +
kPositionTop  +
kPositionBottom  +
+
+
+

+ + + + +
+ + + + +
anonymous enum
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + + + + +
kAlignCenter  +
kAlignLeft  +
kAlignRight  +
kAlignTop  +
kAlignBottom  +
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CTabView::CTabView const CRect size,
CFrame parent,
CBitmap tabBitmap,
CBitmap background = 0,
long  tabPosition = kPositionTop,
long  style = 0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CTabView::CTabView const CRect size,
CFrame parent,
const CRect tabSize,
CBitmap background = 0,
long  tabPosition = kPositionTop,
long  style = 0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CTabView::~CTabView  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool CTabView::addTab CView view,
const char *  name = 0,
CBitmap tabBitmap = 0
[virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CTabView::alignTabs long  alignment = kAlignCenter  )  [virtual]
+
+ + + + + +
+   + + +

+call this after you have added all tabs +

+

+

+ + + + +
+ + + + + + + + + +
CRect & CTabView::getTabViewSize CRect rect  )  const [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
bool CTabView::removeAllTabs  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool CTabView::removeTab CView view  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool CTabView::selectTab long  index  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CTabView::setCurrentChild CTabChildView childView  )  [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CTabView::setTabFontStyle const CFont font,
long  fontSize = 12,
CColor  selectedColor = kBlackCColor,
CColor  deselectedColor = kWhiteCColor
[virtual]
+
+ + + + + +
+   + + +

+call this after the tabs are added. Tabs added after this call will have the default font style. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void CTabView::valueChanged CDrawContext pContext,
CControl pControl
[virtual]
+
+ + + + + +
+   + + +

+ +

+Implements CControlListener.

+


Member Data Documentation

+

+ + + + +
+ + + + +
CTabChildView* CTabView::currentChild [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CTabChildView* CTabView::firstChild [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CTabChildView* CTabView::lastChild [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
unsigned long CTabView::numberOfChilds [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CTabView::style [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CBitmap* CTabView::tabBitmap [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CTabView::tabPosition [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CRect CTabView::tabSize [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_tab_view.png b/vstgui.sf/vstgui/Documentation/html/class_c_tab_view.png new file mode 100644 index 0000000..55691e8 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_tab_view.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_text_edit-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_text_edit-members.html new file mode 100644 index 0000000..7897961 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_text_edit-members.html @@ -0,0 +1,193 @@ + + +VSTGUI: Member List + + + + + + +

CTextEdit Member List

This is the complete list of members for CTextEdit, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attached(CView *view)CView [inline, virtual]
backColorCParamDisplay [protected]
backOffsetCControl [protected]
bDirtyCView [protected]
beginEdit()CControl [virtual]
bMouseEnabledCView [protected]
bounceValue()CControl [virtual]
bTextTransparencyEnabledCParamDisplay [protected]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
bWasReturnPressedCTextEdit
CControl(const CRect &size, CControlListener *listener=0, long tag=0, CBitmap *pBackground=0)CControl
CView::CControl classCView [friend]
CFrame classCView [friend]
checkDefaultValue(CDrawContext *pContext, long button)CControl [virtual]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
copyBackOffset()CControl [virtual]
CParamDisplay(const CRect &size, CBitmap *background=0, const long style=0)CParamDisplay
CReferenceCounter()CReferenceCounter [inline]
CTextEdit(const CRect &size, CControlListener *listener, long tag, const char *txt=0, CBitmap *background=0, const long style=0)CTextEdit
CView(const CRect &size)CView
CViewContainer classCView [friend]
defaultValueCControl [protected]
deltaCControl [protected]
doIdleStuff()CControl [inline, virtual]
draw(CDrawContext *pContext)CTextEdit [virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CView [inline, virtual]
drawText(CDrawContext *pContext, char *string, CBitmap *newBack=0)CParamDisplay [protected]
editConvertCTextEdit [protected]
editConvert2CTextEdit [protected]
endEdit()CControl [virtual]
fontColorCParamDisplay [protected]
fontIDCParamDisplay [protected]
forget()CReferenceCounter [inline, virtual]
frameColorCParamDisplay [protected]
frameToLocal(CPoint &point) const CView [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackColor() const CParamDisplay [inline]
getBackground() const CView [inline, virtual]
getDefaultValue(void) const CControl [inline, virtual]
getEditor() const CView [virtual]
getFont() const CParamDisplay [inline]
getFontColor() const CParamDisplay [inline]
getFrame() const CView [inline]
getFrameColor() const CParamDisplay [inline]
getHeight() const CView [inline]
getListener() const CControl [inline]
getMax() const CControl [inline, virtual]
getMin() const CControl [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getOldValue(void) const CControl [inline, virtual]
getParentView() const CView [inline]
getShadowColor() const CParamDisplay [inline]
getStyle() const CParamDisplay [inline]
getTag() const CControl [inline, virtual]
getText(char *txt) const CTextEdit [virtual]
getTextTransparency() const CParamDisplay [inline]
getTransparency() const CView [inline, virtual]
getTxtFace() const CParamDisplay [inline]
getValue() const CControl [inline, virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWheelInc() const CControl [inline, virtual]
getWidth() const CView [inline]
hitTest(const CPoint &where, const long buttons=-1)CView [inline, virtual]
horiTxtAlignCParamDisplay [protected]
isDirty() const CControl [virtual]
isDoubleClick()CControl
isTypeOf(const char *s) const CView [inline, virtual]
lastTicksCControl [protected]
listenerCControl [protected]
localToFrame(CPoint &point) const CView [virtual]
looseFocus(CDrawContext *pContext=0)CTextEdit [virtual]
mouse(CDrawContext *pContext, CPoint &where, long button=-1)CTextEdit [virtual]
mouseableAreaCView [protected]
notify(CView *sender, const char *message)CView [virtual]
oldValueCControl [protected]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onKeyDown(VstKeyCode &keyCode)CView [virtual]
onKeyUp(VstKeyCode &keyCode)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CView [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
platformControlCTextEdit
platformFontCTextEdit [protected]
platformFontColorCTextEdit
pParentFrameCView [protected]
pParentViewCView [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CView [virtual]
remember()CReferenceCounter [inline, virtual]
removed(CView *parent)CView [inline, virtual]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackColor(CColor color)CParamDisplay [virtual]
setBackground(CBitmap *background)CView [virtual]
setBackOffset(CPoint &offset)CControl [virtual]
setDefaultValue(float val)CControl [inline, virtual]
setDirty(const bool val=true)CControl [virtual]
setFont(CFont fontID)CParamDisplay [virtual]
setFontColor(CColor color)CParamDisplay [virtual]
setFrameColor(CColor color)CParamDisplay [virtual]
setHoriAlign(CHoriTxtAlign hAlign)CParamDisplay [virtual]
setListener(CControlListener *l)CControl [inline]
setMax(float val)CControl [inline, virtual]
setMin(float val)CControl [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setOldValue(float val)CControl [inline, virtual]
setShadowColor(CColor color)CParamDisplay [virtual]
setString2FloatConvert(void(*convert)(char *string, float &output))CParamDisplay [virtual]
setStringConvert(void(*convert)(float value, char *string))CParamDisplay [virtual]
setStringConvert(void(*convert)(float value, char *string, void *userDta), void *userData)CParamDisplay [virtual]
setStyle(long val)CParamDisplay [virtual]
setTag(long val)CControl [inline, virtual]
setText(char *txt)CTextEdit [virtual]
setTextEditConvert(void(*editConvert)(char *input, char *string))CTextEdit [virtual]
setTextEditConvert(void(*editConvert2)(char *input, char *string, void *userDta), void *userData)CTextEdit [virtual]
setTextTransparency(bool val)CParamDisplay [inline, virtual]
setTransparency(bool val)CView [inline, virtual]
setTxtFace(CTxtFace val)CParamDisplay [virtual]
setValue(float val)CControl [inline, virtual]
setViewSize(CRect &rect)CView [virtual]
setWantsFocus(bool state)CView [inline, virtual]
setWheelInc(float val)CControl [inline, virtual]
shadowColorCParamDisplay [protected]
sizeCView [protected]
string2FloatConvertCParamDisplay [protected]
stringConvertCParamDisplay [protected]
stringConvert2CParamDisplay [protected]
styleCParamDisplay [protected]
tagCControl [protected]
takeFocus(CDrawContext *pContext=0)CTextEdit [virtual]
textCTextEdit [protected]
txtFaceCParamDisplay [protected]
update(CDrawContext *pContext)CView [protected, virtual]
userDataCParamDisplay [protected]
valueCControl [protected]
vmaxCControl [protected]
vminCControl [protected]
wantsFocus() const CView [inline, virtual]
wheelIncCControl [protected]
~CControl()CControl [virtual]
~CParamDisplay()CParamDisplay [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CTextEdit()CTextEdit [virtual]
~CView()CView [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_text_edit.html b/vstgui.sf/vstgui/Documentation/html/class_c_text_edit.html new file mode 100644 index 0000000..66145c1 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_text_edit.html @@ -0,0 +1,619 @@ + + +VSTGUI: CTextEdit Class Reference + + + + + + +

CTextEdit Class Reference

a text edit control +More... +

+#include <vstcontrols.h> +

+

Inheritance diagram for CTextEdit: +

+ +CParamDisplay +CControl +CView +CReferenceCounter + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CTextEdit (const CRect &size, CControlListener *listener, long tag, const char *txt=0, CBitmap *background=0, const long style=0)
virtual ~CTextEdit ()
virtual void setText (char *txt)
virtual void getText (char *txt) const
virtual void draw (CDrawContext *pContext)
 called if the view should draw itself
virtual void mouse (CDrawContext *pContext, CPoint &where, long button=-1)
 called if a mouse click event occurs
virtual void setTextEditConvert (void(*editConvert)(char *input, char *string))
virtual void setTextEditConvert (void(*editConvert2)(char *input, char *string, void *userDta), void *userData)
virtual void takeFocus (CDrawContext *pContext=0)
 called if view should take focus
virtual void looseFocus (CDrawContext *pContext=0)
 called if view should loose focus

Public Attributes

void * platformFontColor
void * platformControl
bool bWasReturnPressed

Protected Attributes

void * platformFont
char text [256]
void(* editConvert )(char *input, char *string)
void(* editConvert2 )(char *input, char *string, void *userData)
+

Detailed Description

+a text edit control +

+Define a rectangle view where a text-value can be displayed and edited with a given font and color. The user can specify its convert function (from char to char). The text-value is centered in the given rect. A pixmap can be used as background. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CTextEdit::CTextEdit const CRect size,
CControlListener listener,
long  tag,
const char *  txt = 0,
CBitmap background = 0,
const long  style = 0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CTextEdit::~CTextEdit  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
void CTextEdit::draw CDrawContext pContext  )  [virtual]
+
+ + + + + +
+   + + +

+called if the view should draw itself +

+ +

+Reimplemented from CParamDisplay.

+

+ + + + +
+ + + + + + + + + +
void CTextEdit::getText char *  txt  )  const [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CTextEdit::looseFocus CDrawContext pContext = 0  )  [virtual]
+
+ + + + + +
+   + + +

+called if view should loose focus +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CTextEdit::mouse CDrawContext pContext,
CPoint where,
long  button = -1
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse click event occurs +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + +
void CTextEdit::setText char *  txt  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void CTextEdit::setTextEditConvert void(*)(char *input, char *string, void *userDta)  editConvert2,
void *  userData
[virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CTextEdit::setTextEditConvert void(*)(char *input, char *string)  editConvert  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CTextEdit::takeFocus CDrawContext pContext = 0  )  [virtual]
+
+ + + + + +
+   + + +

+called if view should take focus +

+ +

+Reimplemented from CView.

+


Member Data Documentation

+

+ + + + +
+ + + + +
bool CTextEdit::bWasReturnPressed
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
void(* CTextEdit::editConvert)(char *input, char *string) [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
void(* CTextEdit::editConvert2)(char *input, char *string, void *userData) [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
void* CTextEdit::platformControl
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
void* CTextEdit::platformFont [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
void* CTextEdit::platformFontColor
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
char CTextEdit::text[256] [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_text_edit.png b/vstgui.sf/vstgui/Documentation/html/class_c_text_edit.png new file mode 100644 index 0000000..4fc0df5 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_text_edit.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_text_label-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_text_label-members.html new file mode 100644 index 0000000..edb7de8 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_text_label-members.html @@ -0,0 +1,186 @@ + + +VSTGUI: Member List + + + + + + +

CTextLabel Member List

This is the complete list of members for CTextLabel, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attached(CView *view)CView [inline, virtual]
backColorCParamDisplay [protected]
backOffsetCControl [protected]
bDirtyCView [protected]
beginEdit()CControl [virtual]
bMouseEnabledCView [protected]
bounceValue()CControl [virtual]
bTextTransparencyEnabledCParamDisplay [protected]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
CControl(const CRect &size, CControlListener *listener=0, long tag=0, CBitmap *pBackground=0)CControl
CView::CControl classCView [friend]
CFrame classCView [friend]
checkDefaultValue(CDrawContext *pContext, long button)CControl [virtual]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
copyBackOffset()CControl [virtual]
CParamDisplay(const CRect &size, CBitmap *background=0, const long style=0)CParamDisplay
CReferenceCounter()CReferenceCounter [inline]
CTextLabel(const CRect &size, const char *txt=0, CBitmap *background=0, const long style=0)CTextLabel
CView(const CRect &size)CView
CViewContainer classCView [friend]
defaultValueCControl [protected]
deltaCControl [protected]
doIdleStuff()CControl [inline, virtual]
draw(CDrawContext *pContext)CTextLabel [virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CView [inline, virtual]
drawText(CDrawContext *pContext, char *string, CBitmap *newBack=0)CParamDisplay [protected]
endEdit()CControl [virtual]
fontColorCParamDisplay [protected]
fontIDCParamDisplay [protected]
forget()CReferenceCounter [inline, virtual]
frameColorCParamDisplay [protected]
frameToLocal(CPoint &point) const CView [virtual]
freeText()CTextLabel [protected]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackColor() const CParamDisplay [inline]
getBackground() const CView [inline, virtual]
getDefaultValue(void) const CControl [inline, virtual]
getEditor() const CView [virtual]
getFont() const CParamDisplay [inline]
getFontColor() const CParamDisplay [inline]
getFrame() const CView [inline]
getFrameColor() const CParamDisplay [inline]
getHeight() const CView [inline]
getListener() const CControl [inline]
getMax() const CControl [inline, virtual]
getMin() const CControl [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getOldValue(void) const CControl [inline, virtual]
getParentView() const CView [inline]
getShadowColor() const CParamDisplay [inline]
getStyle() const CParamDisplay [inline]
getTag() const CControl [inline, virtual]
getText() const CTextLabel [virtual]
getTextTransparency() const CParamDisplay [inline]
getTransparency() const CView [inline, virtual]
getTxtFace() const CParamDisplay [inline]
getValue() const CControl [inline, virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWheelInc() const CControl [inline, virtual]
getWidth() const CView [inline]
hitTest(const CPoint &where, const long buttons=-1)CView [inline, virtual]
horiTxtAlignCParamDisplay [protected]
isDirty() const CControl [virtual]
isDoubleClick()CControl
isTypeOf(const char *s) const CView [inline, virtual]
lastTicksCControl [protected]
listenerCControl [protected]
localToFrame(CPoint &point) const CView [virtual]
looseFocus(CDrawContext *pContext=0)CView [virtual]
mouse(CDrawContext *pContext, CPoint &where, long buttons=-1)CView [virtual]
mouseableAreaCView [protected]
notify(CView *sender, const char *message)CView [virtual]
oldValueCControl [protected]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onKeyDown(VstKeyCode &keyCode)CView [virtual]
onKeyUp(VstKeyCode &keyCode)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CView [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CView [virtual]
remember()CReferenceCounter [inline, virtual]
removed(CView *parent)CView [inline, virtual]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackColor(CColor color)CParamDisplay [virtual]
setBackground(CBitmap *background)CView [virtual]
setBackOffset(CPoint &offset)CControl [virtual]
setDefaultValue(float val)CControl [inline, virtual]
setDirty(const bool val=true)CControl [virtual]
setFont(CFont fontID)CParamDisplay [virtual]
setFontColor(CColor color)CParamDisplay [virtual]
setFrameColor(CColor color)CParamDisplay [virtual]
setHoriAlign(CHoriTxtAlign hAlign)CParamDisplay [virtual]
setListener(CControlListener *l)CControl [inline]
setMax(float val)CControl [inline, virtual]
setMin(float val)CControl [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setOldValue(float val)CControl [inline, virtual]
setShadowColor(CColor color)CParamDisplay [virtual]
setString2FloatConvert(void(*convert)(char *string, float &output))CParamDisplay [virtual]
setStringConvert(void(*convert)(float value, char *string))CParamDisplay [virtual]
setStringConvert(void(*convert)(float value, char *string, void *userDta), void *userData)CParamDisplay [virtual]
setStyle(long val)CParamDisplay [virtual]
setTag(long val)CControl [inline, virtual]
setText(const char *txt)CTextLabel [virtual]
setTextTransparency(bool val)CParamDisplay [inline, virtual]
setTransparency(bool val)CView [inline, virtual]
setTxtFace(CTxtFace val)CParamDisplay [virtual]
setValue(float val)CControl [inline, virtual]
setViewSize(CRect &rect)CView [virtual]
setWantsFocus(bool state)CView [inline, virtual]
setWheelInc(float val)CControl [inline, virtual]
shadowColorCParamDisplay [protected]
sizeCView [protected]
string2FloatConvertCParamDisplay [protected]
stringConvertCParamDisplay [protected]
stringConvert2CParamDisplay [protected]
styleCParamDisplay [protected]
tagCControl [protected]
takeFocus(CDrawContext *pContext=0)CView [virtual]
textCTextLabel [protected]
txtFaceCParamDisplay [protected]
update(CDrawContext *pContext)CView [protected, virtual]
userDataCParamDisplay [protected]
valueCControl [protected]
vmaxCControl [protected]
vminCControl [protected]
wantsFocus() const CView [inline, virtual]
wheelIncCControl [protected]
~CControl()CControl [virtual]
~CParamDisplay()CParamDisplay [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CTextLabel()CTextLabel
~CView()CView [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_text_label.html b/vstgui.sf/vstgui/Documentation/html/class_c_text_label.html new file mode 100644 index 0000000..f46cea1 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_text_label.html @@ -0,0 +1,294 @@ + + +VSTGUI: CTextLabel Class Reference + + + + + + +

CTextLabel Class Reference

a text label +More... +

+#include <vstcontrols.h> +

+

Inheritance diagram for CTextLabel: +

+ +CParamDisplay +CControl +CView +CReferenceCounter + +List of all members. + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CTextLabel (const CRect &size, const char *txt=0, CBitmap *background=0, const long style=0)
 ~CTextLabel ()
virtual void setText (const char *txt)
virtual const char * getText () const
virtual void draw (CDrawContext *pContext)
 called if the view should draw itself

Protected Member Functions

void freeText ()

Protected Attributes

char * text
+

Detailed Description

+a text label +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CTextLabel::CTextLabel const CRect size,
const char *  txt = 0,
CBitmap background = 0,
const long  style = 0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CTextLabel::~CTextLabel  ) 
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
void CTextLabel::draw CDrawContext pContext  )  [virtual]
+
+ + + + + +
+   + + +

+called if the view should draw itself +

+ +

+Reimplemented from CParamDisplay.

+

+ + + + +
+ + + + + + + + +
void CTextLabel::freeText  )  [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
const char * CTextLabel::getText  )  const [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CTextLabel::setText const char *  txt  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
char* CTextLabel::text [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_text_label.png b/vstgui.sf/vstgui/Documentation/html/class_c_text_label.png new file mode 100644 index 0000000..99867a6 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_text_label.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_vertical_slider-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_vertical_slider-members.html new file mode 100644 index 0000000..e6bf98a --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_vertical_slider-members.html @@ -0,0 +1,173 @@ + + +VSTGUI: Member List + + + + + + +

CVerticalSlider Member List

This is the complete list of members for CVerticalSlider, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attached(CView *parent)CSlider [virtual]
backOffsetCControl [protected]
bDirtyCView [protected]
bDrawTransparentEnabledCSlider [protected]
beginEdit()CControl [virtual]
bFreeClickCSlider [protected]
bMouseEnabledCView [protected]
bounceValue()CControl [virtual]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
CControl(const CRect &size, CControlListener *listener=0, long tag=0, CBitmap *pBackground=0)CControl
CView::CControl classCView [friend]
CFrame classCView [friend]
checkDefaultValue(CDrawContext *pContext, long button)CControl [virtual]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
copyBackOffset()CControl [virtual]
CReferenceCounter()CReferenceCounter [inline]
CSlider(const CRect &size, CControlListener *listener, long tag, long iMinPos, long iMaxPos, CBitmap *handle, CBitmap *background, CPoint &offset, const long style=kLeft|kHorizontal)CSlider
CSlider(const CRect &rect, CControlListener *listener, long tag, CPoint &offsetHandle, long rangeHandle, CBitmap *handle, CBitmap *background, CPoint &offset, const long style=kLeft|kHorizontal)CSlider
CVerticalSlider(const CRect &size, CControlListener *listener, long tag, long iMinPos, long iMaxPos, CBitmap *handle, CBitmap *background, CPoint &offset, const long style=kBottom)CVerticalSlider
CVerticalSlider(const CRect &rect, CControlListener *listener, long tag, CPoint &offsetHandle, long rangeHandle, CBitmap *handle, CBitmap *background, CPoint &offset, const long style=kBottom)CVerticalSlider
CView(const CRect &size)CView
CViewContainer classCView [friend]
defaultValueCControl [protected]
deltaCControl [protected]
doIdleStuff()CControl [inline, virtual]
draw(CDrawContext *)CSlider [virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CView [inline, virtual]
endEdit()CControl [virtual]
forget()CReferenceCounter [inline, virtual]
frameToLocal(CPoint &point) const CView [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackground() const CView [inline, virtual]
getDefaultValue(void) const CControl [inline, virtual]
getEditor() const CView [virtual]
getFrame() const CView [inline]
getFreeClick() const CSlider [inline, virtual]
getHandle() const CSlider [inline, virtual]
getHeight() const CView [inline]
getListener() const CControl [inline]
getMax() const CControl [inline, virtual]
getMin() const CControl [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getOldValue(void) const CControl [inline, virtual]
getParentView() const CView [inline]
getTag() const CControl [inline, virtual]
getTransparency() const CView [inline, virtual]
getValue() const CControl [inline, virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWheelInc() const CControl [inline, virtual]
getWidth() const CView [inline]
getZoomFactor() const CSlider [inline, virtual]
heightControlCSlider [protected]
heightOfSliderCSlider [protected]
hitTest(const CPoint &where, const long buttons=-1)CView [inline, virtual]
isDirty() const CControl [virtual]
isDoubleClick()CControl
isTypeOf(const char *s) const CView [inline, virtual]
lastTicksCControl [protected]
listenerCControl [protected]
localToFrame(CPoint &point) const CView [virtual]
looseFocus(CDrawContext *pContext=0)CView [virtual]
maxTmpCSlider [protected]
minPosCSlider [protected]
minTmpCSlider [protected]
mouse(CDrawContext *pContext, CPoint &where, long button=-1)CSlider [virtual]
mouseableAreaCView [protected]
notify(CView *sender, const char *message)CView [virtual]
offsetCSlider [protected]
offsetHandleCSlider [protected]
oldValueCControl [protected]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onKeyDown(VstKeyCode &keyCode)CSlider [virtual]
onKeyUp(VstKeyCode &keyCode)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CSlider [virtual]
CControl::onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CView [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pHandleCSlider [protected]
pOScreenCSlider [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
rangeHandleCSlider [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CView [virtual]
remember()CReferenceCounter [inline, virtual]
removed(CView *parent)CSlider [virtual]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackground(CBitmap *background)CView [virtual]
setBackOffset(CPoint &offset)CControl [virtual]
setDefaultValue(float val)CControl [inline, virtual]
setDirty(const bool val=true)CControl [virtual]
setDrawTransparentHandle(bool val)CSlider [inline, virtual]
setFreeClick(bool val)CSlider [inline, virtual]
setHandle(CBitmap *pHandle)CSlider [virtual]
setListener(CControlListener *l)CControl [inline]
setMax(float val)CControl [inline, virtual]
setMin(float val)CControl [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setOffsetHandle(CPoint &val)CSlider [virtual]
setOldValue(float val)CControl [inline, virtual]
setTag(long val)CControl [inline, virtual]
setTransparency(bool val)CView [inline, virtual]
setValue(float val)CControl [inline, virtual]
setViewSize(CRect &rect)CView [virtual]
setWantsFocus(bool state)CView [inline, virtual]
setWheelInc(float val)CControl [inline, virtual]
setZoomFactor(float val)CSlider [inline, virtual]
sizeCView [protected]
styleCSlider [protected]
tagCControl [protected]
takeFocus(CDrawContext *pContext=0)CView [virtual]
update(CDrawContext *pContext)CView [protected, virtual]
valueCControl [protected]
vmaxCControl [protected]
vminCControl [protected]
wantsFocus() const CView [inline, virtual]
wheelIncCControl [protected]
widthControlCSlider [protected]
widthOfSliderCSlider [protected]
zoomFactorCSlider [protected]
~CControl()CControl [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CSlider()CSlider [virtual]
~CView()CView [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_vertical_slider.html b/vstgui.sf/vstgui/Documentation/html/class_c_vertical_slider.html new file mode 100644 index 0000000..4c04543 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_vertical_slider.html @@ -0,0 +1,226 @@ + + +VSTGUI: CVerticalSlider Class Reference + + + + + + +

CVerticalSlider Class Reference

a vertical slider control +More... +

+#include <vstcontrols.h> +

+

Inheritance diagram for CVerticalSlider: +

+ +CSlider +CControl +CView +CReferenceCounter + +List of all members. + + + + + + +

Public Member Functions

 CVerticalSlider (const CRect &size, CControlListener *listener, long tag, long iMinPos, long iMaxPos, CBitmap *handle, CBitmap *background, CPoint &offset, const long style=kBottom)
 CVerticalSlider (const CRect &rect, CControlListener *listener, long tag, CPoint &offsetHandle, long rangeHandle, CBitmap *handle, CBitmap *background, CPoint &offset, const long style=kBottom)
+

Detailed Description

+a vertical slider control +

+This is the vertical slider. See CSlider. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CVerticalSlider::CVerticalSlider const CRect size,
CControlListener listener,
long  tag,
long  iMinPos,
long  iMaxPos,
CBitmap handle,
CBitmap background,
CPoint offset,
const long  style = kBottom
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CVerticalSlider::CVerticalSlider const CRect rect,
CControlListener listener,
long  tag,
CPoint offsetHandle,
long  rangeHandle,
CBitmap handle,
CBitmap background,
CPoint offset,
const long  style = kBottom
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_vertical_slider.png b/vstgui.sf/vstgui/Documentation/html/class_c_vertical_slider.png new file mode 100644 index 0000000..fc50710 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_vertical_slider.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_vertical_switch-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_vertical_switch-members.html new file mode 100644 index 0000000..ac85e2a --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_vertical_switch-members.html @@ -0,0 +1,151 @@ + + +VSTGUI: Member List + + + + + + +

CVerticalSwitch Member List

This is the complete list of members for CVerticalSwitch, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attached(CView *view)CView [inline, virtual]
backOffsetCControl [protected]
bDirtyCView [protected]
beginEdit()CControl [virtual]
bMouseEnabledCView [protected]
bounceValue()CControl [virtual]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
CControl(const CRect &size, CControlListener *listener=0, long tag=0, CBitmap *pBackground=0)CControl
CView::CControl classCView [friend]
CFrame classCView [friend]
checkDefaultValue(CDrawContext *pContext, long button)CControl [virtual]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
copyBackOffset()CControl [virtual]
CReferenceCounter()CReferenceCounter [inline]
CVerticalSwitch(const CRect &size, CControlListener *listener, long tag, CBitmap *background, CPoint &offset)CVerticalSwitch
CVerticalSwitch(const CRect &size, CControlListener *listener, long tag, long subPixmaps, CCoord heightOfOneImage, long iMaxPositions, CBitmap *background, CPoint &offset)CVerticalSwitch
CView(const CRect &size)CView
CViewContainer classCView [friend]
defaultValueCControl [protected]
deltaCControl [protected]
doIdleStuff()CControl [inline, virtual]
draw(CDrawContext *)CVerticalSwitch [virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CView [inline, virtual]
endEdit()CControl [virtual]
forget()CReferenceCounter [inline, virtual]
frameToLocal(CPoint &point) const CView [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackground() const CView [inline, virtual]
getDefaultValue(void) const CControl [inline, virtual]
getEditor() const CView [virtual]
getFrame() const CView [inline]
getHeight() const CView [inline]
getListener() const CControl [inline]
getMax() const CControl [inline, virtual]
getMin() const CControl [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getOldValue(void) const CControl [inline, virtual]
getParentView() const CView [inline]
getTag() const CControl [inline, virtual]
getTransparency() const CView [inline, virtual]
getValue() const CControl [inline, virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWheelInc() const CControl [inline, virtual]
getWidth() const CView [inline]
heightOfOneImageCVerticalSwitch [protected]
hitTest(const CPoint &where, const long buttons=-1)CView [inline, virtual]
iMaxPositionsCVerticalSwitch [protected]
isDirty() const CControl [virtual]
isDoubleClick()CControl
isTypeOf(const char *s) const CView [inline, virtual]
lastTicksCControl [protected]
listenerCControl [protected]
localToFrame(CPoint &point) const CView [virtual]
looseFocus(CDrawContext *pContext=0)CView [virtual]
mouse(CDrawContext *pContext, CPoint &where, long button=-1)CVerticalSwitch [virtual]
mouseableAreaCView [protected]
notify(CView *sender, const char *message)CView [virtual]
offsetCVerticalSwitch [protected]
oldValueCControl [protected]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onKeyDown(VstKeyCode &keyCode)CView [virtual]
onKeyUp(VstKeyCode &keyCode)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CView [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CView [virtual]
remember()CReferenceCounter [inline, virtual]
removed(CView *parent)CView [inline, virtual]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackground(CBitmap *background)CView [virtual]
setBackOffset(CPoint &offset)CControl [virtual]
setDefaultValue(float val)CControl [inline, virtual]
setDirty(const bool val=true)CControl [virtual]
setListener(CControlListener *l)CControl [inline]
setMax(float val)CControl [inline, virtual]
setMin(float val)CControl [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setOldValue(float val)CControl [inline, virtual]
setTag(long val)CControl [inline, virtual]
setTransparency(bool val)CView [inline, virtual]
setValue(float val)CControl [inline, virtual]
setViewSize(CRect &rect)CView [virtual]
setWantsFocus(bool state)CView [inline, virtual]
setWheelInc(float val)CControl [inline, virtual]
sizeCView [protected]
subPixmapsCVerticalSwitch [protected]
tagCControl [protected]
takeFocus(CDrawContext *pContext=0)CView [virtual]
update(CDrawContext *pContext)CView [protected, virtual]
valueCControl [protected]
vmaxCControl [protected]
vminCControl [protected]
wantsFocus() const CView [inline, virtual]
wheelIncCControl [protected]
~CControl()CControl [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CVerticalSwitch()CVerticalSwitch [virtual]
~CView()CView [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_vertical_switch.html b/vstgui.sf/vstgui/Documentation/html/class_c_vertical_switch.html new file mode 100644 index 0000000..a55c6ac --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_vertical_switch.html @@ -0,0 +1,412 @@ + + +VSTGUI: CVerticalSwitch Class Reference + + + + + + +

CVerticalSwitch Class Reference

a vertical switch control +More... +

+#include <vstcontrols.h> +

+

Inheritance diagram for CVerticalSwitch: +

+ +CControl +CView +CReferenceCounter + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CVerticalSwitch (const CRect &size, CControlListener *listener, long tag, CBitmap *background, CPoint &offset)
 CVerticalSwitch (const CRect &size, CControlListener *listener, long tag, long subPixmaps, CCoord heightOfOneImage, long iMaxPositions, CBitmap *background, CPoint &offset)
virtual ~CVerticalSwitch ()
virtual void draw (CDrawContext *)
 called if the view should draw itself
virtual void mouse (CDrawContext *pContext, CPoint &where, long button=-1)
 called if a mouse click event occurs

Protected Attributes

CPoint offset
long subPixmaps
CCoord heightOfOneImage
long iMaxPositions
+

Detailed Description

+a vertical switch control +

+Define a switch with a given number of positions, the current position is defined by the position of the last click on this object (the object is divided in its height by the number of position). Each position has its subpixmap, each subpixmap is stacked in the given handle pixmap. By clicking Alt+Left Mouse the default value is used. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CVerticalSwitch::CVerticalSwitch const CRect size,
CControlListener listener,
long  tag,
CBitmap background,
CPoint offset
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CVerticalSwitch::CVerticalSwitch const CRect size,
CControlListener listener,
long  tag,
long  subPixmaps,
CCoord  heightOfOneImage,
long  iMaxPositions,
CBitmap background,
CPoint offset
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CVerticalSwitch::~CVerticalSwitch  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
void CVerticalSwitch::draw CDrawContext  )  [virtual]
+
+ + + + + +
+   + + +

+called if the view should draw itself +

+ +

+Implements CControl.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CVerticalSwitch::mouse CDrawContext pContext,
CPoint where,
long  button = -1
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse click event occurs +

+ +

+Reimplemented from CView.

+


Member Data Documentation

+

+ + + + +
+ + + + +
CCoord CVerticalSwitch::heightOfOneImage [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CVerticalSwitch::iMaxPositions [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CPoint CVerticalSwitch::offset [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CVerticalSwitch::subPixmaps [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_vertical_switch.png b/vstgui.sf/vstgui/Documentation/html/class_c_vertical_switch.png new file mode 100644 index 0000000..2159a80 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_vertical_switch.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_view-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_view-members.html new file mode 100644 index 0000000..2d7ebe3 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_view-members.html @@ -0,0 +1,107 @@ + + +VSTGUI: Member List + + + + + + +

CView Member List

This is the complete list of members for CView, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attached(CView *view)CView [inline, virtual]
bDirtyCView [protected]
bMouseEnabledCView [protected]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
CControl classCView [friend]
CFrame classCView [friend]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
CReferenceCounter()CReferenceCounter [inline]
CView(const CRect &size)CView
CViewContainer classCView [friend]
draw(CDrawContext *pContext)CView [virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CView [inline, virtual]
forget()CReferenceCounter [inline, virtual]
frameToLocal(CPoint &point) const CView [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackground() const CView [inline, virtual]
getEditor() const CView [virtual]
getFrame() const CView [inline]
getHeight() const CView [inline]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getParentView() const CView [inline]
getTransparency() const CView [inline, virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWidth() const CView [inline]
hitTest(const CPoint &where, const long buttons=-1)CView [inline, virtual]
isDirty() const CView [inline, virtual]
isTypeOf(const char *s) const CView [inline, virtual]
localToFrame(CPoint &point) const CView [virtual]
looseFocus(CDrawContext *pContext=0)CView [virtual]
mouse(CDrawContext *pContext, CPoint &where, long buttons=-1)CView [virtual]
mouseableAreaCView [protected]
notify(CView *sender, const char *message)CView [virtual]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onKeyDown(VstKeyCode &keyCode)CView [virtual]
onKeyUp(VstKeyCode &keyCode)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CView [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CView [virtual]
remember()CReferenceCounter [inline, virtual]
removed(CView *parent)CView [inline, virtual]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackground(CBitmap *background)CView [virtual]
setDirty(const bool val=true)CView [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setTransparency(bool val)CView [inline, virtual]
setViewSize(CRect &rect)CView [virtual]
setWantsFocus(bool state)CView [inline, virtual]
sizeCView [protected]
takeFocus(CDrawContext *pContext=0)CView [virtual]
update(CDrawContext *pContext)CView [protected, virtual]
wantsFocus() const CView [inline, virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CView()CView [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_view.html b/vstgui.sf/vstgui/Documentation/html/class_c_view.html new file mode 100644 index 0000000..2c07d5c --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_view.html @@ -0,0 +1,2253 @@ + + +VSTGUI: CView Class Reference + + + + + + +

CView Class Reference

#include <vstgui.h> +

+

Inheritance diagram for CView: +

+ +CReferenceCounter +CControl +CSplashScreenView +CViewContainer +CAutoAnimation +CHorizontalSwitch +CKickButton +CKnob +CMovieBitmap +CMovieButton +COnOffButton +CParamDisplay +CRockerSwitch +CScrollbar +CSlider +CSpecialDigit +CSplashScreen +CVerticalSwitch +CVuMeter +CFrame +CScrollContainer +CScrollView +CTabView + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CView (const CRect &size)
virtual ~CView ()
virtual void draw (CDrawContext *pContext)
 called if the view should draw itself
virtual void drawRect (CDrawContext *pContext, const CRect &updateRect)
 called if the view should draw itself
virtual bool checkUpdate (CRect &updateRect) const
virtual void mouse (CDrawContext *pContext, CPoint &where, long buttons=-1)
 called if a mouse click event occurs
virtual void setBackground (CBitmap *background)
 set the background image of this view
virtual CBitmapgetBackground () const
 get the background image of this view
virtual long onKeyDown (VstKeyCode &keyCode)
 called if a key down event occurs and this view has focus
virtual long onKeyUp (VstKeyCode &keyCode)
 called if a key up event occurs and this view has focus
virtual bool onWheel (CDrawContext *pContext, const CPoint &where, float distance)
 called if a mouse wheel event is happening over this view
virtual bool onWheel (CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)
 called if a mouse wheel event is happening over this view
virtual bool onDrop (CDrawContext *context, CDragContainer *drag, const CPoint &where)
 called if a drag is dropped onto this view
virtual void onDragEnter (CDrawContext *context, CDragContainer *drag, const CPoint &where)
 called if a drag is entering this view
virtual void onDragLeave (CDrawContext *context, CDragContainer *drag, const CPoint &where)
 called if a drag is leaving this view
virtual void onDragMove (CDrawContext *context, CDragContainer *drag, const CPoint &where)
 called if a drag is current moved over this view
virtual void looseFocus (CDrawContext *pContext=0)
 called if view should loose focus
virtual void takeFocus (CDrawContext *pContext=0)
 called if view should take focus
virtual bool isDirty () const
 check if view is dirty
virtual void setDirty (const bool val=true)
 set the view to dirty so that it is redrawn in the next idle. Thread Safe !
virtual void setMouseEnabled (const bool bEnable=true)
 turn on/off mouse usage for this view
virtual bool getMouseEnabled () const
 get the state of wheather this view uses the mouse or not
virtual void setMouseableArea (const CRect &rect)
 set the area in which the view reacts to the mouse
virtual CRectgetMouseableArea (CRect &rect) const
 get the area in which the view reacts to the mouse
virtual bool hitTest (const CPoint &where, const long buttons=-1)
 check if where hits this view
virtual void setTransparency (bool val)
 set views transparent state
virtual bool getTransparency () const
 is view transparent ?
CCoord getHeight () const
 get the height of the view
CCoord getWidth () const
 get the width of the view
virtual void setViewSize (CRect &rect)
 set views size
virtual CRectgetViewSize (CRect &rect) const
 returns the current view size
virtual bool removed (CView *parent)
 view is removed from parent view
virtual bool attached (CView *view)
 view is attached to a parent view
virtual void getMouseLocation (CDrawContext *context, CPoint &point)
 get current mouse location in local view coordinates
virtual CPointframeToLocal (CPoint &point) const
 conversion from frame coordinates to local view coordinates
virtual CPointlocalToFrame (CPoint &point) const
 conversion from local view coordinates to frame coordinates
bool getAttributeSize (const CViewAttributeID id, long &outSize) const
 get the size of an attribute
bool getAttribute (const CViewAttributeID id, const long inSize, void *outData, long &outSize) const
 get an attribute
bool setAttribute (const CViewAttributeID id, const long inSize, void *inData)
 set an attribute
CViewgetParentView () const
CFramegetFrame () const
virtual void * getEditor () const
virtual long notify (CView *sender, const char *message)
void redraw ()
virtual void redrawRect (CDrawContext *context, const CRect &rect)
virtual bool wantsFocus () const
 check if view supports focus
virtual void setWantsFocus (bool state)
 set focus support on/off
virtual bool isTypeOf (const char *s) const

Protected Member Functions

virtual void update (CDrawContext *pContext)

Protected Attributes

CRect size
CRect mouseableArea
CFramepParentFrame
CViewpParentView
bool bDirty
bool bMouseEnabled
bool bTransparencyEnabled
bool bWantsFocus
CBitmappBackground
CAttributeListEntrypAttributeList

Friends

class CControl
class CFrame
class CViewContainer
+

Detailed Description

+base class of all view objects +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + +
CView::CView const CRect size  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CView::~CView  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual bool CView::attached CView view  )  [inline, virtual]
+
+ + + + + +
+   + + +

+view is attached to a parent view +

+ +

+Reimplemented in CSlider, CVuMeter, and CViewContainer.

+

+ + + + +
+ + + + + + + + + +
virtual bool CView::checkUpdate CRect updateRect  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CView::draw CDrawContext pContext  )  [virtual]
+
+ + + + + +
+   + + +

+called if the view should draw itself +

+ +

+Reimplemented in CScrollbar, CTabButton, CSplashScreenView, CControl, COnOffButton, CParamDisplay, CTextLabel, CTextEdit, COptionMenu, CKnob, CAnimKnob, CVerticalSwitch, CHorizontalSwitch, CRockerSwitch, CMovieBitmap, CMovieButton, CAutoAnimation, CSlider, CSpecialDigit, CKickButton, CSplashScreen, CVuMeter, CViewContainer, and CFrame.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void CView::drawRect CDrawContext pContext,
const CRect updateRect
[inline, virtual]
+
+ + + + + +
+   + + +

+called if the view should draw itself +

+ +

+Reimplemented in CViewContainer, and CFrame.

+

+ + + + +
+ + + + + + + + + +
CPoint & CView::frameToLocal CPoint point  )  const [virtual]
+
+ + + + + +
+   + + +

+conversion from frame coordinates to local view coordinates +

+ +

+Reimplemented in CViewContainer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool CView::getAttribute const CViewAttributeID  id,
const long  inSize,
void *  outData,
long &  outSize
const
+
+ + + + + +
+   + + +

+get an attribute +

+

Parameters:
+ + + + + +
id the ID of the Attribute
inSize the size of the outData pointer
outData a pointer where to copy the attribute data
outSize the size in bytes which was copied into outData
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool CView::getAttributeSize const CViewAttributeID  id,
long &  outSize
const
+
+ + + + + +
+   + + +

+get the size of an attribute +

+

Parameters:
+ + + +
id the ID of the Attribute
outSize on return the size of the attribute
+
+
+

+ + + + +
+ + + + + + + + +
virtual CBitmap* CView::getBackground  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+get the background image of this view +

+

+

+ + + + +
+ + + + + + + + +
void * CView::getEditor  )  const [virtual]
+
+ + + + + +
+   + + +

+ +

+Reimplemented in CFrame.

+

+ + + + +
+ + + + + + + + +
CFrame* CView::getFrame  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CCoord CView::getHeight  )  const [inline]
+
+ + + + + +
+   + + +

+get the height of the view +

+

+

+ + + + +
+ + + + + + + + + +
virtual CRect& CView::getMouseableArea CRect rect  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+get the area in which the view reacts to the mouse +

+

+

+ + + + +
+ + + + + + + + +
virtual bool CView::getMouseEnabled  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+get the state of wheather this view uses the mouse or not +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void CView::getMouseLocation CDrawContext context,
CPoint point
[virtual]
+
+ + + + + +
+   + + +

+get current mouse location in local view coordinates +

+

+

+ + + + +
+ + + + + + + + +
CView* CView::getParentView  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual bool CView::getTransparency  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+is view transparent ? +

+

+

+ + + + +
+ + + + + + + + + +
virtual CRect& CView::getViewSize CRect rect  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+returns the current view size +

+

+

+ + + + +
+ + + + + + + + +
CCoord CView::getWidth  )  const [inline]
+
+ + + + + +
+   + + +

+get the width of the view +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool CView::hitTest const CPoint where,
const long  buttons = -1
[inline, virtual]
+
+ + + + + +
+   + + +

+check if where hits this view +

+ +

+Reimplemented in CSplashScreen, and CViewContainer.

+

+ + + + +
+ + + + + + + + +
virtual bool CView::isDirty  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+check if view is dirty +

+ +

+Reimplemented in CScrollContainer, CControl, CAnimKnob, and CViewContainer.

+

+ + + + +
+ + + + + + + + + +
virtual bool CView::isTypeOf const char *  s  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
CPoint & CView::localToFrame CPoint point  )  const [virtual]
+
+ + + + + +
+   + + +

+conversion from local view coordinates to frame coordinates +

+ +

+Reimplemented in CViewContainer.

+

+ + + + +
+ + + + + + + + + +
void CView::looseFocus CDrawContext pContext = 0  )  [virtual]
+
+ + + + + +
+   + + +

+called if view should loose focus +

+ +

+Reimplemented in CTextEdit, COptionMenu, and CViewContainer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CView::mouse CDrawContext pContext,
CPoint where,
long  buttons = -1
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse click event occurs +

+ +

+Reimplemented in CScrollbar, CTabButton, CSplashScreenView, COnOffButton, CTextEdit, COptionMenu, CKnob, CVerticalSwitch, CHorizontalSwitch, CRockerSwitch, CMovieButton, CAutoAnimation, CSlider, CKickButton, CSplashScreen, CViewContainer, and CFrame.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
long CView::notify CView sender,
const char *  message
[virtual]
+
+ + + + + +
+   + + +

+ +

+Reimplemented in CViewContainer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void CView::onDragEnter CDrawContext context,
CDragContainer drag,
const CPoint where
[inline, virtual]
+
+ + + + + +
+   + + +

+called if a drag is entering this view +

+ +

+Reimplemented in CTabButton, and CViewContainer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void CView::onDragLeave CDrawContext context,
CDragContainer drag,
const CPoint where
[inline, virtual]
+
+ + + + + +
+   + + +

+called if a drag is leaving this view +

+ +

+Reimplemented in CViewContainer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void CView::onDragMove CDrawContext context,
CDragContainer drag,
const CPoint where
[inline, virtual]
+
+ + + + + +
+   + + +

+called if a drag is current moved over this view +

+ +

+Reimplemented in CViewContainer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool CView::onDrop CDrawContext context,
CDragContainer drag,
const CPoint where
[inline, virtual]
+
+ + + + + +
+   + + +

+called if a drag is dropped onto this view +

+ +

+Reimplemented in CViewContainer.

+

+ + + + +
+ + + + + + + + + +
long CView::onKeyDown VstKeyCode keyCode  )  [virtual]
+
+ + + + + +
+   + + +

+called if a key down event occurs and this view has focus +

+ +

+Reimplemented in CKnob, CSlider, CViewContainer, and CFrame.

+

+ + + + +
+ + + + + + + + + +
long CView::onKeyUp VstKeyCode keyCode  )  [virtual]
+
+ + + + + +
+   + + +

+called if a key up event occurs and this view has focus +

+ +

+Reimplemented in CViewContainer, and CFrame.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool CView::onWheel CDrawContext pContext,
const CPoint where,
const CMouseWheelAxis  axis,
float  distance
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse wheel event is happening over this view +

+ +

+Reimplemented in CScrollView, CViewContainer, and CFrame.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool CView::onWheel CDrawContext pContext,
const CPoint where,
float  distance
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse wheel event is happening over this view +

+ +

+Reimplemented in CScrollbar, CKnob, CRockerSwitch, CSlider, CViewContainer, and CFrame.

+

+ + + + +
+ + + + + + + + +
void CView::redraw  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void CView::redrawRect CDrawContext context,
const CRect rect
[virtual]
+
+ + + + + +
+   + + +

+ +

+Reimplemented in CScrollContainer, and CViewContainer.

+

+ + + + +
+ + + + + + + + + +
virtual bool CView::removed CView parent  )  [inline, virtual]
+
+ + + + + +
+   + + +

+view is removed from parent view +

+ +

+Reimplemented in CSlider, CVuMeter, and CViewContainer.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool CView::setAttribute const CViewAttributeID  id,
const long  inSize,
void *  inData
+
+ + + + + +
+   + + +

+set an attribute +

+copies data into the attribute. If it does not exist, creates a new attribute.

Parameters:
+ + + + +
id the ID of the Attribute
inSize the size of the outData pointer
inData a pointer to the data
+
+
+

+ + + + +
+ + + + + + + + + +
void CView::setBackground CBitmap background  )  [virtual]
+
+ + + + + +
+   + + +

+set the background image of this view +

+

+

+ + + + +
+ + + + + + + + + +
virtual void CView::setDirty const bool  val = true  )  [inline, virtual]
+
+ + + + + +
+   + + +

+set the view to dirty so that it is redrawn in the next idle. Thread Safe ! +

+ +

+Reimplemented in CControl, and CVuMeter.

+

+ + + + +
+ + + + + + + + + +
virtual void CView::setMouseableArea const CRect rect  )  [inline, virtual]
+
+ + + + + +
+   + + +

+set the area in which the view reacts to the mouse +

+

+

+ + + + +
+ + + + + + + + + +
virtual void CView::setMouseEnabled const bool  bEnable = true  )  [inline, virtual]
+
+ + + + + +
+   + + +

+turn on/off mouse usage for this view +

+

+

+ + + + +
+ + + + + + + + + +
virtual void CView::setTransparency bool  val  )  [inline, virtual]
+
+ + + + + +
+   + + +

+set views transparent state +

+

+

+ + + + +
+ + + + + + + + + +
void CView::setViewSize CRect rect  )  [virtual]
+
+ + + + + +
+   + + +

+set views size +

+ +

+Reimplemented in CViewContainer, and CFrame.

+

+ + + + +
+ + + + + + + + + +
virtual void CView::setWantsFocus bool  state  )  [inline, virtual]
+
+ + + + + +
+   + + +

+set focus support on/off +

+

+

+ + + + +
+ + + + + + + + + +
void CView::takeFocus CDrawContext pContext = 0  )  [virtual]
+
+ + + + + +
+   + + +

+called if view should take focus +

+ +

+Reimplemented in CTextEdit, COptionMenu, and CViewContainer.

+

+ + + + +
+ + + + + + + + + +
void CView::update CDrawContext pContext  )  [protected, virtual]
+
+ + + + + +
+   + + +

+ +

+Reimplemented in CViewContainer, and CFrame.

+

+ + + + +
+ + + + + + + + +
virtual bool CView::wantsFocus  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+check if view supports focus +

+

+


Friends And Related Function Documentation

+

+ + + + +
+ + + + +
friend class CControl [friend]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
friend class CFrame [friend]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
friend class CViewContainer [friend]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
bool CView::bDirty [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
bool CView::bMouseEnabled [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
bool CView::bTransparencyEnabled [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
bool CView::bWantsFocus [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CRect CView::mouseableArea [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CAttributeListEntry* CView::pAttributeList [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CBitmap* CView::pBackground [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CFrame* CView::pParentFrame [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CView* CView::pParentView [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CRect CView::size [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_view.png b/vstgui.sf/vstgui/Documentation/html/class_c_view.png new file mode 100644 index 0000000..70496b0 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_view.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_view_container-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_view_container-members.html new file mode 100644 index 0000000..1dcf42a --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_view_container-members.html @@ -0,0 +1,140 @@ + + +VSTGUI: Member List + + + + + + +

CViewContainer Member List

This is the complete list of members for CViewContainer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addView(CView *pView)CViewContainer [virtual]
addView(CView *pView, CRect &mouseableArea, bool mouseEnabled=true)CViewContainer [virtual]
advanceNextFocusView(CView *oldFocus, bool reverse=false)CViewContainer [virtual]
attached(CView *view)CViewContainer [virtual]
backgroundColorCViewContainer [protected]
backgroundOffsetCViewContainer [protected]
bDirtyCView [protected]
bDrawInOffscreenCViewContainer [protected]
bMouseEnabledCView [protected]
bTransparencyEnabledCView [protected]
bWantsFocusCView [protected]
CControl classCView [friend]
CFrame classCView [friend]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
CReferenceCounter()CReferenceCounter [inline]
currentDragViewCViewContainer [protected]
CView(const CRect &size)CView
CViewContainer(const CRect &size, CFrame *pParent, CBitmap *pBackground=0)CViewContainer
CView::CViewContainer classCView [friend]
draw(CDrawContext *pContext)CViewContainer [virtual]
drawBackgroundRect(CDrawContext *pContext, CRect &_updateRect)CViewContainer [virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CViewContainer [virtual]
forget()CReferenceCounter [inline, virtual]
frameToLocal(CPoint &point) const CViewContainer [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackground() const CView [inline, virtual]
getBackgroundColor() const CViewContainer [inline, virtual]
getBackgroundOffset() const CViewContainer [inline, virtual]
getCurrentView() const CViewContainer [virtual]
getEditor() const CView [virtual]
getFrame() const CView [inline]
getHeight() const CView [inline]
getMode() const CViewContainer [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getNbViews() const CViewContainer [virtual]
getParentView() const CView [inline]
getTransparency() const CView [inline, virtual]
getView(long index) const CViewContainer [virtual]
getViewAt(const CPoint &where, bool deep=false) const CViewContainer [virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWidth() const CView [inline]
hitTest(const CPoint &where, const long buttons=-1)CViewContainer [virtual]
hitTestSubViews(const CPoint &where, const long buttons=-1)CViewContainer [protected]
isChild(CView *pView) const CViewContainer [virtual]
isDirty() const CViewContainer [virtual]
isTypeOf(const char *s) const CView [inline, virtual]
kNormalUpdate enum valueCViewContainer
kOnlyDirtyUpdate enum valueCViewContainer
localToFrame(CPoint &point) const CViewContainer [virtual]
looseFocus(CDrawContext *pContext=0)CViewContainer [virtual]
modeCViewContainer [protected]
modifyDrawContext(CCoord save[4], CDrawContext *pContext)CViewContainer
mouse(CDrawContext *pContext, CPoint &where, long buttons=-1)CViewContainer [virtual]
mouseableAreaCView [protected]
notify(CView *sender, const char *message)CViewContainer [virtual]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CViewContainer [virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CViewContainer [virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CViewContainer [virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CViewContainer [virtual]
onKeyDown(VstKeyCode &keyCode)CViewContainer [virtual]
onKeyUp(VstKeyCode &keyCode)CViewContainer [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CViewContainer [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CViewContainer [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pFirstViewCViewContainer [protected]
pLastViewCViewContainer [protected]
pOffscreenContextCViewContainer [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CViewContainer [virtual]
remember()CReferenceCounter [inline, virtual]
removeAll(const bool &withForget=true)CViewContainer [virtual]
removed(CView *parent)CViewContainer [virtual]
removeView(CView *pView, const bool &withForget=true)CViewContainer [virtual]
restoreDrawContext(CDrawContext *pContext, CCoord save[4])CViewContainer
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackground(CBitmap *background)CView [virtual]
setBackgroundColor(const CColor color)CViewContainer [virtual]
setBackgroundOffset(const CPoint &p)CViewContainer [inline, virtual]
setDirty(const bool val=true)CView [inline, virtual]
setMode(long val)CViewContainer [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setTransparency(bool val)CView [inline, virtual]
setViewSize(CRect &rect)CViewContainer [virtual]
setWantsFocus(bool state)CView [inline, virtual]
sizeCView [protected]
takeFocus(CDrawContext *pContext=0)CViewContainer [virtual]
update(CDrawContext *pContext)CViewContainer [virtual]
useOffscreen(bool b)CViewContainer [virtual]
wantsFocus() const CView [inline, virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CView()CView [virtual]
~CViewContainer()CViewContainer [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_view_container.html b/vstgui.sf/vstgui/Documentation/html/class_c_view_container.html new file mode 100644 index 0000000..1303cd9 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_view_container.html @@ -0,0 +1,2169 @@ + + +VSTGUI: CViewContainer Class Reference + + + + + + +

CViewContainer Class Reference

Container Class of CView objects. +More... +

+#include <vstgui.h> +

+

Inheritance diagram for CViewContainer: +

+ +CView +CReferenceCounter +CFrame +CScrollContainer +CScrollView +CTabView + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

enum  { kNormalUpdate = 0, +kOnlyDirtyUpdate + }

Public Member Functions

 CViewContainer (const CRect &size, CFrame *pParent, CBitmap *pBackground=0)
virtual ~CViewContainer ()
virtual void addView (CView *pView)
 add a child view
virtual void addView (CView *pView, CRect &mouseableArea, bool mouseEnabled=true)
 add a child view
virtual void removeView (CView *pView, const bool &withForget=true)
 remove a child view
virtual void removeAll (const bool &withForget=true)
 remove all child views
virtual bool isChild (CView *pView) const
 check if pView is a child view of this container
virtual long getNbViews () const
 get the number of child views
virtual CViewgetView (long index) const
 get the child view at index
virtual void setBackgroundColor (const CColor color)
 set the background color (will only be drawn if this container is not set to transparent and does not have a background bitmap)
virtual CColor getBackgroundColor () const
 get the background color
virtual void setBackgroundOffset (const CPoint &p)
 set the offset of the background bitmap
virtual const CPointgetBackgroundOffset () const
 get the offset of the background bitmap
virtual void drawBackgroundRect (CDrawContext *pContext, CRect &_updateRect)
 draw the background
virtual void setMode (long val)
 set the update mode
virtual long getMode () const
 get the update mode
virtual void useOffscreen (bool b)
 turn on/off using an offscreen
virtual CViewgetCurrentView () const
 get the current view under the mouse
virtual CViewgetViewAt (const CPoint &where, bool deep=false) const
 get the view at point where
void modifyDrawContext (CCoord save[4], CDrawContext *pContext)
void restoreDrawContext (CDrawContext *pContext, CCoord save[4])
virtual void draw (CDrawContext *pContext)
virtual void drawRect (CDrawContext *pContext, const CRect &updateRect)
virtual void mouse (CDrawContext *pContext, CPoint &where, long buttons=-1)
 called if a mouse click event occurs
virtual bool onWheel (CDrawContext *pContext, const CPoint &where, float distance)
 called if a mouse wheel event is happening over this view
virtual bool onWheel (CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)
 called if a mouse wheel event is happening over this view
virtual void update (CDrawContext *pContext)
virtual bool hitTest (const CPoint &where, const long buttons=-1)
 check if where hits this view
virtual long onKeyDown (VstKeyCode &keyCode)
 called if a key down event occurs and this view has focus
virtual long onKeyUp (VstKeyCode &keyCode)
 called if a key up event occurs and this view has focus
virtual long notify (CView *sender, const char *message)
virtual bool onDrop (CDrawContext *context, CDragContainer *drag, const CPoint &where)
 called if a drag is dropped onto this view
virtual void onDragEnter (CDrawContext *context, CDragContainer *drag, const CPoint &where)
 called if a drag is entering this view
virtual void onDragLeave (CDrawContext *context, CDragContainer *drag, const CPoint &where)
 called if a drag is leaving this view
virtual void onDragMove (CDrawContext *context, CDragContainer *drag, const CPoint &where)
 called if a drag is current moved over this view
virtual void looseFocus (CDrawContext *pContext=0)
 called if view should loose focus
virtual void takeFocus (CDrawContext *pContext=0)
 called if view should take focus
virtual bool advanceNextFocusView (CView *oldFocus, bool reverse=false)
virtual bool isDirty () const
 check if view is dirty
virtual void setViewSize (CRect &rect)
virtual bool removed (CView *parent)
 view is removed from parent view
virtual bool attached (CView *view)
 view is attached to a parent view
virtual CPointframeToLocal (CPoint &point) const
 conversion from frame coordinates to local view coordinates
virtual CPointlocalToFrame (CPoint &point) const
 conversion from local view coordinates to frame coordinates
virtual void redrawRect (CDrawContext *context, const CRect &rect)

Protected Member Functions

bool hitTestSubViews (const CPoint &where, const long buttons=-1)

Protected Attributes

CCViewpFirstView
CCViewpLastView
long mode
COffscreenContextpOffscreenContext
CColor backgroundColor
CPoint backgroundOffset
bool bDrawInOffscreen
CViewcurrentDragView
+

Detailed Description

+Container Class of CView objects. +

+


Member Enumeration Documentation

+

+ + + + +
+ + + + +
anonymous enum
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + +
kNormalUpdate  +this mode redraws the whole container if something is dirty
kOnlyDirtyUpdate  +this mode only redraws the views which are dirty
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
CViewContainer::CViewContainer const CRect rect,
CFrame pParent,
CBitmap pBackground = 0
+
+ + + + + +
+   + + +

+CViewContainer constructor.

Parameters:
+ + + + +
rect the size of the container
pParent the parent CFrame
pBackground the background bitmap, can be NULL
+
+
+

+ + + + +
+ + + + + + + + +
CViewContainer::~CViewContainer  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CViewContainer::addView CView pView,
CRect mouseableArea,
bool  mouseEnabled = true
[virtual]
+
+ + + + + +
+   + + +

+add a child view +

+

Parameters:
+ + + + +
pView the view object to add to this container
mouseableArea the view area in where the view will get mouse events
mouseEnabled bool to set if view will get mouse events
+
+
+

+ + + + +
+ + + + + + + + + +
void CViewContainer::addView CView pView  )  [virtual]
+
+ + + + + +
+   + + +

+add a child view +

+

Parameters:
+ + +
pView the view object to add to this container
+
+ +

+Reimplemented in CScrollView.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool CViewContainer::advanceNextFocusView CView oldFocus,
bool  reverse = false
[virtual]
+
+ + + + + +
+   + + +

+ +

+Reimplemented in CFrame.

+

+ + + + +
+ + + + + + + + + +
bool CViewContainer::attached CView view  )  [virtual]
+
+ + + + + +
+   + + +

+view is attached to a parent view +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + +
void CViewContainer::draw CDrawContext pContext  )  [virtual]
+
+ + + + + +
+   + + +

+

Parameters:
+ + +
pContext the context which to use to draw this container and its subviews
+
+ +

+Reimplemented from CView. +

+Reimplemented in CFrame.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void CViewContainer::drawBackgroundRect CDrawContext pContext,
CRect _updateRect
[virtual]
+
+ + + + + +
+   + + +

+draw the background +

+

Parameters:
+ + + +
pContext the context which to use to draw the background
_updateRect the area which to draw
+
+ +

+Reimplemented in CScrollView.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void CViewContainer::drawRect CDrawContext pContext,
const CRect _updateRect
[virtual]
+
+ + + + + +
+   + + +

+

Parameters:
+ + + +
pContext the context which to use to draw
_updateRect the area which to draw
+
+ +

+Reimplemented from CView. +

+Reimplemented in CFrame.

+

+ + + + +
+ + + + + + + + + +
CPoint & CViewContainer::frameToLocal CPoint point  )  const [virtual]
+
+ + + + + +
+   + + +

+conversion from frame coordinates to local view coordinates +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + +
virtual CColor CViewContainer::getBackgroundColor  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+get the background color +

+

+

+ + + + +
+ + + + + + + + +
virtual const CPoint& CViewContainer::getBackgroundOffset  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+get the offset of the background bitmap +

+

+

+ + + + +
+ + + + + + + + +
CView * CViewContainer::getCurrentView  )  const [virtual]
+
+ + + + + +
+   + + +

+get the current view under the mouse +

+ +

+Reimplemented in CFrame.

+

+ + + + +
+ + + + + + + + +
virtual long CViewContainer::getMode  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+get the update mode +

+

+

+ + + + +
+ + + + + + + + +
long CViewContainer::getNbViews  )  const [virtual]
+
+ + + + + +
+   + + +

+get the number of child views +

+

+

+ + + + +
+ + + + + + + + + +
CView * CViewContainer::getView long  index  )  const [virtual]
+
+ + + + + +
+   + + +

+get the child view at index +

+

Parameters:
+ + +
index the index of the view to return
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
CView * CViewContainer::getViewAt const CPoint where,
bool  deep = false
const [virtual]
+
+ + + + + +
+   + + +

+get the view at point where +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool CViewContainer::hitTest const CPoint where,
const long  buttons = -1
[virtual]
+
+ + + + + +
+   + + +

+check if where hits this view +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool CViewContainer::hitTestSubViews const CPoint where,
const long  buttons = -1
[protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool CViewContainer::isChild CView pView  )  const [virtual]
+
+ + + + + +
+   + + +

+check if pView is a child view of this container +

+

Parameters:
+ + +
pView the view which should be checked if it is a child of this container
+
+
+

+ + + + +
+ + + + + + + + +
bool CViewContainer::isDirty  )  const [virtual]
+
+ + + + + +
+   + + +

+check if view is dirty +

+ +

+Reimplemented from CView. +

+Reimplemented in CScrollContainer.

+

+ + + + +
+ + + + + + + + + +
CPoint & CViewContainer::localToFrame CPoint point  )  const [virtual]
+
+ + + + + +
+   + + +

+conversion from local view coordinates to frame coordinates +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + +
void CViewContainer::looseFocus CDrawContext pContext = 0  )  [virtual]
+
+ + + + + +
+   + + +

+called if view should loose focus +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void CViewContainer::modifyDrawContext CCoord  save[4],
CDrawContext pContext
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CViewContainer::mouse CDrawContext pContext,
CPoint where,
long  buttons = -1
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse click event occurs +

+ +

+Reimplemented from CView. +

+Reimplemented in CFrame.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
long CViewContainer::notify CView sender,
const char *  message
[virtual]
+
+ + + + + +
+   + + +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CViewContainer::onDragEnter CDrawContext context,
CDragContainer drag,
const CPoint where
[virtual]
+
+ + + + + +
+   + + +

+called if a drag is entering this view +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CViewContainer::onDragLeave CDrawContext context,
CDragContainer drag,
const CPoint where
[virtual]
+
+ + + + + +
+   + + +

+called if a drag is leaving this view +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CViewContainer::onDragMove CDrawContext context,
CDragContainer drag,
const CPoint where
[virtual]
+
+ + + + + +
+   + + +

+called if a drag is current moved over this view +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool CViewContainer::onDrop CDrawContext context,
CDragContainer drag,
const CPoint where
[virtual]
+
+ + + + + +
+   + + +

+called if a drag is dropped onto this view +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + +
long CViewContainer::onKeyDown VstKeyCode keyCode  )  [virtual]
+
+ + + + + +
+   + + +

+called if a key down event occurs and this view has focus +

+ +

+Reimplemented from CView. +

+Reimplemented in CFrame.

+

+ + + + +
+ + + + + + + + + +
long CViewContainer::onKeyUp VstKeyCode keyCode  )  [virtual]
+
+ + + + + +
+   + + +

+called if a key up event occurs and this view has focus +

+ +

+Reimplemented from CView. +

+Reimplemented in CFrame.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool CViewContainer::onWheel CDrawContext pContext,
const CPoint where,
const CMouseWheelAxis  axis,
float  distance
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse wheel event is happening over this view +

+ +

+Reimplemented from CView. +

+Reimplemented in CScrollView, and CFrame.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool CViewContainer::onWheel CDrawContext pContext,
const CPoint where,
float  distance
[virtual]
+
+ + + + + +
+   + + +

+called if a mouse wheel event is happening over this view +

+ +

+Reimplemented from CView. +

+Reimplemented in CFrame.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void CViewContainer::redrawRect CDrawContext context,
const CRect rect
[virtual]
+
+ + + + + +
+   + + +

+

Parameters:
+ + + +
context the context which to use to redraw this container
rect the area which to redraw
+
+ +

+Reimplemented from CView. +

+Reimplemented in CScrollContainer.

+

+ + + + +
+ + + + + + + + + +
void CViewContainer::removeAll const bool &  withForget = true  )  [virtual]
+
+ + + + + +
+   + + +

+remove all child views +

+

Parameters:
+ + +
withForget bool to indicate if the view's reference counter should be decreased after removed from the container
+
+
+

+ + + + +
+ + + + + + + + + +
bool CViewContainer::removed CView parent  )  [virtual]
+
+ + + + + +
+   + + +

+view is removed from parent view +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void CViewContainer::removeView CView pView,
const bool &  withForget = true
[virtual]
+
+ + + + + +
+   + + +

+remove a child view +

+

Parameters:
+ + + +
pView the view which should be removed from the container
withForget bool to indicate if the view's reference counter should be decreased after removed from the container
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void CViewContainer::restoreDrawContext CDrawContext pContext,
CCoord  save[4]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CViewContainer::setBackgroundColor const CColor  color  )  [virtual]
+
+ + + + + +
+   + + +

+set the background color (will only be drawn if this container is not set to transparent and does not have a background bitmap) +

+

Parameters:
+ + +
color the new background color of the container
+
+
+

+ + + + +
+ + + + + + + + + +
virtual void CViewContainer::setBackgroundOffset const CPoint p  )  [inline, virtual]
+
+ + + + + +
+   + + +

+set the offset of the background bitmap +

+

+

+ + + + +
+ + + + + + + + + +
virtual void CViewContainer::setMode long  val  )  [inline, virtual]
+
+ + + + + +
+   + + +

+set the update mode +

+

+

+ + + + +
+ + + + + + + + + +
void CViewContainer::setViewSize CRect rect  )  [virtual]
+
+ + + + + +
+   + + +

+

Parameters:
+ + +
rect the new size of the container
+
+ +

+Reimplemented from CView. +

+Reimplemented in CFrame.

+

+ + + + +
+ + + + + + + + + +
void CViewContainer::takeFocus CDrawContext pContext = 0  )  [virtual]
+
+ + + + + +
+   + + +

+called if view should take focus +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + +
void CViewContainer::update CDrawContext pContext  )  [virtual]
+
+ + + + + +
+   + + +

+ +

+Reimplemented from CView. +

+Reimplemented in CFrame.

+

+ + + + +
+ + + + + + + + + +
void CViewContainer::useOffscreen bool  b  )  [virtual]
+
+ + + + + +
+   + + +

+turn on/off using an offscreen +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
CColor CViewContainer::backgroundColor [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CPoint CViewContainer::backgroundOffset [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
bool CViewContainer::bDrawInOffscreen [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CView* CViewContainer::currentDragView [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CViewContainer::mode [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCView* CViewContainer::pFirstView [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCView* CViewContainer::pLastView [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
COffscreenContext* CViewContainer::pOffscreenContext [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_view_container.png b/vstgui.sf/vstgui/Documentation/html/class_c_view_container.png new file mode 100644 index 0000000..a5efb2e Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_view_container.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_vu_meter-members.html b/vstgui.sf/vstgui/Documentation/html/class_c_vu_meter-members.html new file mode 100644 index 0000000..e2c6079 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_vu_meter-members.html @@ -0,0 +1,158 @@ + + +VSTGUI: Member List + + + + + + +

CVuMeter Member List

This is the complete list of members for CVuMeter, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attached(CView *parent)CVuMeter [virtual]
backOffsetCControl [protected]
bDirtyCView [protected]
beginEdit()CControl [virtual]
bMouseEnabledCView [protected]
bounceValue()CControl [virtual]
bTransparencyEnabledCView [protected]
bUseOffscreenCVuMeter [protected]
bWantsFocusCView [protected]
CControl(const CRect &size, CControlListener *listener=0, long tag=0, CBitmap *pBackground=0)CControl
CView::CControl classCView [friend]
CFrame classCView [friend]
checkDefaultValue(CDrawContext *pContext, long button)CControl [virtual]
checkUpdate(CRect &updateRect) const CView [inline, virtual]
copyBackOffset()CControl [virtual]
CReferenceCounter()CReferenceCounter [inline]
CView(const CRect &size)CView
CViewContainer classCView [friend]
CVuMeter(const CRect &size, CBitmap *onBitmap, CBitmap *offBitmap, long nbLed, const long style=kVertical)CVuMeter
decreaseValueCVuMeter [protected]
defaultValueCControl [protected]
deltaCControl [protected]
doIdleStuff()CControl [inline, virtual]
draw(CDrawContext *pContext)CVuMeter [virtual]
drawRect(CDrawContext *pContext, const CRect &updateRect)CView [inline, virtual]
endEdit()CControl [virtual]
forget()CReferenceCounter [inline, virtual]
frameToLocal(CPoint &point) const CView [virtual]
getAttribute(const CViewAttributeID id, const long inSize, void *outData, long &outSize) const CView
getAttributeSize(const CViewAttributeID id, long &outSize) const CView
getBackground() const CView [inline, virtual]
getDefaultValue(void) const CControl [inline, virtual]
getEditor() const CView [virtual]
getFrame() const CView [inline]
getHeight() const CView [inline]
getListener() const CControl [inline]
getMax() const CControl [inline, virtual]
getMin() const CControl [inline, virtual]
getMouseableArea(CRect &rect) const CView [inline, virtual]
getMouseEnabled() const CView [inline, virtual]
getMouseLocation(CDrawContext *context, CPoint &point)CView [virtual]
getNbReference() const CReferenceCounter [inline]
getOldValue(void) const CControl [inline, virtual]
getParentView() const CView [inline]
getTag() const CControl [inline, virtual]
getTransparency() const CView [inline, virtual]
getUseOffscreen() const CVuMeter [inline]
getValue() const CControl [inline, virtual]
getViewSize(CRect &rect) const CView [inline, virtual]
getWheelInc() const CControl [inline, virtual]
getWidth() const CView [inline]
hitTest(const CPoint &where, const long buttons=-1)CView [inline, virtual]
isDirty() const CControl [virtual]
isDoubleClick()CControl
isTypeOf(const char *s) const CView [inline, virtual]
lastTicksCControl [protected]
listenerCControl [protected]
localToFrame(CPoint &point) const CView [virtual]
looseFocus(CDrawContext *pContext=0)CView [virtual]
mouse(CDrawContext *pContext, CPoint &where, long buttons=-1)CView [virtual]
mouseableAreaCView [protected]
nbLedCVuMeter [protected]
notify(CView *sender, const char *message)CView [virtual]
offBitmapCVuMeter [protected]
oldValueCControl [protected]
onBitmapCVuMeter [protected]
onDragEnter(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragLeave(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDragMove(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onDrop(CDrawContext *context, CDragContainer *drag, const CPoint &where)CView [inline, virtual]
onKeyDown(VstKeyCode &keyCode)CView [virtual]
onKeyUp(VstKeyCode &keyCode)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, float distance)CView [virtual]
onWheel(CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance)CView [virtual]
pAttributeListCView [protected]
pBackgroundCView [protected]
pOScreenCVuMeter [protected]
pParentFrameCView [protected]
pParentViewCView [protected]
rectOffCVuMeter [protected]
rectOnCVuMeter [protected]
redraw()CView
redrawRect(CDrawContext *context, const CRect &rect)CView [virtual]
remember()CReferenceCounter [inline, virtual]
removed(CView *parent)CVuMeter [virtual]
setAttribute(const CViewAttributeID id, const long inSize, void *inData)CView
setBackground(CBitmap *background)CView [virtual]
setBackOffset(CPoint &offset)CControl [virtual]
setDecreaseStepValue(float value)CVuMeter [inline, virtual]
setDefaultValue(float val)CControl [inline, virtual]
setDirty(const bool val=true)CVuMeter [virtual]
setListener(CControlListener *l)CControl [inline]
setMax(float val)CControl [inline, virtual]
setMin(float val)CControl [inline, virtual]
setMouseableArea(const CRect &rect)CView [inline, virtual]
setMouseEnabled(const bool bEnable=true)CView [inline, virtual]
setOldValue(float val)CControl [inline, virtual]
setTag(long val)CControl [inline, virtual]
setTransparency(bool val)CView [inline, virtual]
setUseOffscreen(bool val=true)CVuMeter
setValue(float val)CControl [inline, virtual]
setViewSize(CRect &rect)CView [virtual]
setWantsFocus(bool state)CView [inline, virtual]
setWheelInc(float val)CControl [inline, virtual]
sizeCView [protected]
styleCVuMeter [protected]
tagCControl [protected]
takeFocus(CDrawContext *pContext=0)CView [virtual]
update(CDrawContext *pContext)CView [protected, virtual]
valueCControl [protected]
vmaxCControl [protected]
vminCControl [protected]
wantsFocus() const CView [inline, virtual]
wheelIncCControl [protected]
~CControl()CControl [virtual]
~CReferenceCounter()CReferenceCounter [inline, virtual]
~CView()CView [virtual]
~CVuMeter()CVuMeter [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_vu_meter.html b/vstgui.sf/vstgui/Documentation/html/class_c_vu_meter.html new file mode 100644 index 0000000..cbbc614 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_c_vu_meter.html @@ -0,0 +1,598 @@ + + +VSTGUI: CVuMeter Class Reference + + + + + + +

CVuMeter Class Reference

#include <vstcontrols.h> +

+

Inheritance diagram for CVuMeter: +

+ +CControl +CView +CReferenceCounter + +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CVuMeter (const CRect &size, CBitmap *onBitmap, CBitmap *offBitmap, long nbLed, const long style=kVertical)
virtual ~CVuMeter ()
virtual void setDecreaseStepValue (float value)
virtual bool attached (CView *parent)
 view is attached to a parent view
virtual bool removed (CView *parent)
 view is removed from parent view
virtual void draw (CDrawContext *pContext)
 called if the view should draw itself
virtual void setDirty (const bool val=true)
 set the view to dirty so that it is redrawn in the next idle. Thread Safe !
void setUseOffscreen (bool val=true)
bool getUseOffscreen () const

Protected Attributes

CBitmaponBitmap
CBitmapoffBitmap
COffscreenContextpOScreen
long nbLed
long style
float decreaseValue
bool bUseOffscreen
CRect rectOn
CRect rectOff
+

Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CVuMeter::CVuMeter const CRect size,
CBitmap onBitmap,
CBitmap offBitmap,
long  nbLed,
const long  style = kVertical
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CVuMeter::~CVuMeter  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
bool CVuMeter::attached CView parent  )  [virtual]
+
+ + + + + +
+   + + +

+view is attached to a parent view +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + +
void CVuMeter::draw CDrawContext pContext  )  [virtual]
+
+ + + + + +
+   + + +

+called if the view should draw itself +

+ +

+Implements CControl.

+

+ + + + +
+ + + + + + + + +
bool CVuMeter::getUseOffscreen  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool CVuMeter::removed CView parent  )  [virtual]
+
+ + + + + +
+   + + +

+view is removed from parent view +

+ +

+Reimplemented from CView.

+

+ + + + +
+ + + + + + + + + +
virtual void CVuMeter::setDecreaseStepValue float  value  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CVuMeter::setDirty const bool  val = true  )  [virtual]
+
+ + + + + +
+   + + +

+set the view to dirty so that it is redrawn in the next idle. Thread Safe ! +

+ +

+Reimplemented from CControl.

+

+ + + + +
+ + + + + + + + + +
void CVuMeter::setUseOffscreen bool  val = true  ) 
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
bool CVuMeter::bUseOffscreen [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
float CVuMeter::decreaseValue [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CVuMeter::nbLed [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CBitmap* CVuMeter::offBitmap [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CBitmap* CVuMeter::onBitmap [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
COffscreenContext* CVuMeter::pOScreen [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CRect CVuMeter::rectOff [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CRect CVuMeter::rectOn [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long CVuMeter::style [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_c_vu_meter.png b/vstgui.sf/vstgui/Documentation/html/class_c_vu_meter.png new file mode 100644 index 0000000..3cb3ffe Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/class_c_vu_meter.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/class_i_scrollbar_drawer-members.html b/vstgui.sf/vstgui/Documentation/html/class_i_scrollbar_drawer-members.html new file mode 100644 index 0000000..cb949e1 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_i_scrollbar_drawer-members.html @@ -0,0 +1,42 @@ + + +VSTGUI: Member List + + + + + + +

IScrollbarDrawer Member List

This is the complete list of members for IScrollbarDrawer, including all inherited members.

+ + +
drawScrollbarBackground(CDrawContext *pContext, const CRect &size, long style, CScrollbar *bar)=0IScrollbarDrawer [pure virtual]
drawScrollbarScroller(CDrawContext *pContext, const CRect &size, long style, CScrollbar *bar)=0IScrollbarDrawer [pure virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_i_scrollbar_drawer.html b/vstgui.sf/vstgui/Documentation/html/class_i_scrollbar_drawer.html new file mode 100644 index 0000000..8131b4e --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_i_scrollbar_drawer.html @@ -0,0 +1,150 @@ + + +VSTGUI: IScrollbarDrawer Class Reference + + + + + + +

IScrollbarDrawer Class Reference

#include <cscrollview.h> +

+List of all members. + + + + + + +

Public Member Functions

virtual void drawScrollbarBackground (CDrawContext *pContext, const CRect &size, long style, CScrollbar *bar)=0
virtual void drawScrollbarScroller (CDrawContext *pContext, const CRect &size, long style, CScrollbar *bar)=0
+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void IScrollbarDrawer::drawScrollbarBackground CDrawContext pContext,
const CRect size,
long  style,
CScrollbar bar
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void IScrollbarDrawer::drawScrollbarScroller CDrawContext pContext,
const CRect size,
long  style,
CScrollbar bar
[pure virtual]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_plugin_g_u_i_editor-members.html b/vstgui.sf/vstgui/Documentation/html/class_plugin_g_u_i_editor-members.html new file mode 100644 index 0000000..98bc785 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_plugin_g_u_i_editor-members.html @@ -0,0 +1,63 @@ + + +VSTGUI: Member List + + + + + + +

PluginGUIEditor Member List

This is the complete list of members for PluginGUIEditor, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
beginEdit(long index)PluginGUIEditor [inline, virtual]
close()PluginGUIEditor [inline, virtual]
doIdleStuff()PluginGUIEditor [virtual]
draw(ERect *pRect)PluginGUIEditor [virtual]
effectPluginGUIEditor [protected]
endEdit(long index)PluginGUIEditor [inline, virtual]
framePluginGUIEditor [protected]
getEffect()PluginGUIEditor [inline]
getFrame()PluginGUIEditor [inline]
getKnobMode()PluginGUIEditor [inline, static]
getRect(ERect **ppRect)PluginGUIEditor [virtual]
getTicks()PluginGUIEditor
getVstGuiVersion()PluginGUIEditor [inline]
idle()PluginGUIEditor [virtual]
onWheel(float distance)PluginGUIEditor [virtual]
open(void *ptr)PluginGUIEditor [virtual]
PluginGUIEditor(void *pEffect)PluginGUIEditor
rectPluginGUIEditor [protected]
setKnobMode(int val)PluginGUIEditor [virtual]
setParameter(long index, float value)PluginGUIEditor [inline, virtual]
systemWindowPluginGUIEditor [protected]
wait(unsigned long ms)PluginGUIEditor
~PluginGUIEditor()PluginGUIEditor [virtual]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/class_plugin_g_u_i_editor.html b/vstgui.sf/vstgui/Documentation/html/class_plugin_g_u_i_editor.html new file mode 100644 index 0000000..85c6737 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/class_plugin_g_u_i_editor.html @@ -0,0 +1,725 @@ + + +VSTGUI: PluginGUIEditor Class Reference + + + + + + +

PluginGUIEditor Class Reference

#include <plugguieditor.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 PluginGUIEditor (void *pEffect)
virtual ~PluginGUIEditor ()
virtual void setParameter (long index, float value)
virtual long getRect (ERect **ppRect)
virtual bool open (void *ptr)
virtual void close ()
virtual void idle ()
virtual void draw (ERect *pRect)
void wait (unsigned long ms)
unsigned long getTicks ()
virtual void doIdleStuff ()
void * getEffect ()
long getVstGuiVersion ()
virtual long setKnobMode (int val)
virtual bool onWheel (float distance)
CFramegetFrame ()
virtual void beginEdit (long index)
virtual void endEdit (long index)

Static Public Member Functions

static long getKnobMode ()

Protected Attributes

ERect rect
CFrameframe
void * effect
void * systemWindow
+


Detailed Description

+This is the same as the AEffGUIEditor class except that this one allows the VSTGUI lib to build without VST dependencies. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + +
PluginGUIEditor::PluginGUIEditor void *  pEffect  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
PluginGUIEditor::~PluginGUIEditor  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual void PluginGUIEditor::beginEdit long  index  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual void PluginGUIEditor::close  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
void PluginGUIEditor::doIdleStuff  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void PluginGUIEditor::draw ERect pRect  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual void PluginGUIEditor::endEdit long  index  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
void* PluginGUIEditor::getEffect  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CFrame* PluginGUIEditor::getFrame  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
static long PluginGUIEditor::getKnobMode  )  [inline, static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
long PluginGUIEditor::getRect ERect **  ppRect  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
unsigned long PluginGUIEditor::getTicks  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
long PluginGUIEditor::getVstGuiVersion  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
void PluginGUIEditor::idle  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool PluginGUIEditor::onWheel float  distance  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool PluginGUIEditor::open void *  ptr  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
long PluginGUIEditor::setKnobMode int  val  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void PluginGUIEditor::setParameter long  index,
float  value
[inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void PluginGUIEditor::wait unsigned long  ms  ) 
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
void* PluginGUIEditor::effect [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CFrame* PluginGUIEditor::frame [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
ERect PluginGUIEditor::rect [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
void* PluginGUIEditor::systemWindow [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/cscrollview_8cpp.html b/vstgui.sf/vstgui/Documentation/html/cscrollview_8cpp.html new file mode 100644 index 0000000..fcfff06 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/cscrollview_8cpp.html @@ -0,0 +1,94 @@ + + +VSTGUI: cscrollview.cpp File Reference + + + + + + +

cscrollview.cpp File Reference

#include "cscrollview.h"
+ + + + + + + +

Defines

#define FOREACHSUBVIEW   for (CCView *pSv = pFirstView; pSv; pSv = pSv->pNext) {CView *pV = pSv->pView;
#define ENDFOR   }
+

Define Documentation

+

+ + + + +
+ + + + +
#define ENDFOR   }
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define FOREACHSUBVIEW   for (CCView *pSv = pFirstView; pSv; pSv = pSv->pNext) {CView *pV = pSv->pView;
+
+ + + + + +
+   + + +

+

+ + + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/cscrollview_8h.html b/vstgui.sf/vstgui/Documentation/html/cscrollview_8h.html new file mode 100644 index 0000000..c596f9b --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/cscrollview_8h.html @@ -0,0 +1,53 @@ + + +VSTGUI: cscrollview.h File Reference + + + + + + +

cscrollview.h File Reference

#include "vstgui.h"
+ + + + + + + + + + + + + +

Classes

class  CScrollView
 a scrollable view More...
class  CScrollContainer
class  IScrollbarDrawer
class  CScrollbar
 a scrollbar control More...
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/ctabview_8cpp.html b/vstgui.sf/vstgui/Documentation/html/ctabview_8cpp.html new file mode 100644 index 0000000..3f7e9af --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/ctabview_8cpp.html @@ -0,0 +1,74 @@ + + +VSTGUI: ctabview.cpp File Reference + + + + + + +

ctabview.cpp File Reference

#include "ctabview.h"
+ + + + + + + + + + +

Classes

class  CTabButton
class  CTabChildView

Defines

#define kTabButtonTagStart   20000
+

Define Documentation

+

+ + + + +
+ + + + +
#define kTabButtonTagStart   20000
+
+ + + + + +
+   + + +

+

+ + + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/ctabview_8h.html b/vstgui.sf/vstgui/Documentation/html/ctabview_8h.html new file mode 100644 index 0000000..fbf021e --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/ctabview_8h.html @@ -0,0 +1,46 @@ + + +VSTGUI: ctabview.h File Reference + + + + + + +

ctabview.h File Reference

#include "vstcontrols.h"
+ + + + + + +

Classes

class  CTabView
 a tab view More...
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/deprecated.html b/vstgui.sf/vstgui/Documentation/html/deprecated.html new file mode 100644 index 0000000..6a3fa57 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/deprecated.html @@ -0,0 +1,42 @@ + + +VSTGUI: Deprecated List + + + + + +

Deprecated List

+
Member CDrawContext::floodFill (const CPoint &start)
+
+
+

+

+
Member CDrawContext::getPoint (const CPoint &point)
+
+
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/doc_8h.html b/vstgui.sf/vstgui/Documentation/html/doc_8h.html new file mode 100644 index 0000000..f7ffac9 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/doc_8h.html @@ -0,0 +1,41 @@ + + +VSTGUI: doc.h File Reference + + + + + + +

doc.h File Reference

+ +
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/doxygen.css b/vstgui.sf/vstgui/Documentation/html/doxygen.css new file mode 100644 index 0000000..05615b2 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/doxygen.css @@ -0,0 +1,310 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: Geneva, Arial, Helvetica, sans-serif; +} +BODY,TD { + font-size: 90%; +} +H1 { + text-align: center; + font-size: 160%; +} +H2 { + font-size: 120%; +} +H3 { + font-size: 100%; +} +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navtab { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +TD.navtab { + font-size: 70%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +.fragment { + font-family: Fixed, monospace; + font-size: 95%; +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } +TD.md { background-color: #F4F4FB; font-weight: bold; } +TD.mdPrefix { + background-color: #F4F4FB; + color: #606060; + font-size: 80%; +} +TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; } +TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; } +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey { + background-color: #e8eef2; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #e8eef2; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +SPAN.keyword { color: #008000 } +SPAN.keywordtype { color: #604020 } +SPAN.keywordflow { color: #e08000 } +SPAN.comment { color: #800000 } +SPAN.preprocessor { color: #806020 } +SPAN.stringliteral { color: #002080 } +SPAN.charliteral { color: #008080 } +.mdTable { + border: 1px solid #868686; + background-color: #F4F4FB; +} +.mdRow { + padding: 8px 10px; +} +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 80%; +} +.search { color: #003399; + font-weight: bold; +} +FORM.search { + margin-bottom: 0px; + margin-top: 0px; +} +INPUT.search { font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +TD.tiny { font-size: 75%; +} +a { + color: #1A41A8; +} +a:visited { + color: #2A3798; +} +.dirtab { padding: 4px; + border-collapse: collapse; + border: 1px solid #84b0c7; +} +TH.dirtab { background: #e8eef2; + font-weight: bold; +} +HR { height: 1px; + border: none; + border-top: 1px solid black; +} + diff --git a/vstgui.sf/vstgui/Documentation/html/doxygen.png b/vstgui.sf/vstgui/Documentation/html/doxygen.png new file mode 100644 index 0000000..f0a274b Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/doxygen.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/files.html b/vstgui.sf/vstgui/Documentation/html/files.html new file mode 100644 index 0000000..4572d04 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/files.html @@ -0,0 +1,60 @@ + + +VSTGUI: File Index + + + + + + +

VSTGUI File List

Here is a list of all files with brief descriptions: + + + + + + + + + + + + + + + + + + + + +
aeffguieditor.cpp
aeffguieditor.h
cfileselector.cpp
cfileselector.h
cscrollview.cpp
cscrollview.h
ctabview.cpp
ctabview.h
doc.h
plugguieditor.cpp
plugguieditor.h
vstcontrols.cpp
vstcontrols.h
vstgui.cpp
vstgui.h
vstkeycode.h
vstplugscarbon.h
vstplugsmac.h
vstplugsmacho.h
vstplugsquartz.h
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/ftv2blank.png b/vstgui.sf/vstgui/Documentation/html/ftv2blank.png new file mode 100644 index 0000000..493c3c0 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/ftv2blank.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/ftv2doc.png b/vstgui.sf/vstgui/Documentation/html/ftv2doc.png new file mode 100644 index 0000000..f72999f Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/ftv2doc.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/ftv2folderclosed.png b/vstgui.sf/vstgui/Documentation/html/ftv2folderclosed.png new file mode 100644 index 0000000..d6d0634 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/ftv2folderclosed.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/ftv2folderopen.png b/vstgui.sf/vstgui/Documentation/html/ftv2folderopen.png new file mode 100644 index 0000000..bbe2c91 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/ftv2folderopen.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/ftv2lastnode.png b/vstgui.sf/vstgui/Documentation/html/ftv2lastnode.png new file mode 100644 index 0000000..e7b9ba9 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/ftv2lastnode.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/ftv2link.png b/vstgui.sf/vstgui/Documentation/html/ftv2link.png new file mode 100644 index 0000000..14f3fed Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/ftv2link.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/ftv2mlastnode.png b/vstgui.sf/vstgui/Documentation/html/ftv2mlastnode.png new file mode 100644 index 0000000..09ceb6a Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/ftv2mlastnode.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/ftv2mnode.png b/vstgui.sf/vstgui/Documentation/html/ftv2mnode.png new file mode 100644 index 0000000..3254c05 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/ftv2mnode.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/ftv2node.png b/vstgui.sf/vstgui/Documentation/html/ftv2node.png new file mode 100644 index 0000000..c9f06a5 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/ftv2node.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/ftv2plastnode.png b/vstgui.sf/vstgui/Documentation/html/ftv2plastnode.png new file mode 100644 index 0000000..0b07e00 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/ftv2plastnode.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/ftv2pnode.png b/vstgui.sf/vstgui/Documentation/html/ftv2pnode.png new file mode 100644 index 0000000..2001b79 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/ftv2pnode.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/ftv2vertline.png b/vstgui.sf/vstgui/Documentation/html/ftv2vertline.png new file mode 100644 index 0000000..b330f3a Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/ftv2vertline.png differ diff --git a/vstgui.sf/vstgui/Documentation/html/functions.html b/vstgui.sf/vstgui/Documentation/html/functions.html new file mode 100644 index 0000000..dd1fef0 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions.html @@ -0,0 +1,96 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- a -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_0x62.html b/vstgui.sf/vstgui/Documentation/html/functions_0x62.html new file mode 100644 index 0000000..5e501b2 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_0x62.html @@ -0,0 +1,114 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- b -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_0x63.html b/vstgui.sf/vstgui/Documentation/html/functions_0x63.html new file mode 100644 index 0000000..693b283 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_0x63.html @@ -0,0 +1,148 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- c -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_0x64.html b/vstgui.sf/vstgui/Documentation/html/functions_0x64.html new file mode 100644 index 0000000..8332a87 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_0x64.html @@ -0,0 +1,111 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- d -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_0x65.html b/vstgui.sf/vstgui/Documentation/html/functions_0x65.html new file mode 100644 index 0000000..962ee78 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_0x65.html @@ -0,0 +1,88 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- e -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_0x66.html b/vstgui.sf/vstgui/Documentation/html/functions_0x66.html new file mode 100644 index 0000000..a3571d2 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_0x66.html @@ -0,0 +1,105 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- f -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_0x67.html b/vstgui.sf/vstgui/Documentation/html/functions_0x67.html new file mode 100644 index 0000000..1a140bb --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_0x67.html @@ -0,0 +1,183 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- g -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_0x68.html b/vstgui.sf/vstgui/Documentation/html/functions_0x68.html new file mode 100644 index 0000000..00686f7 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_0x68.html @@ -0,0 +1,94 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- h -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_0x69.html b/vstgui.sf/vstgui/Documentation/html/functions_0x69.html new file mode 100644 index 0000000..8db83bd --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_0x69.html @@ -0,0 +1,105 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- i -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_0x6b.html b/vstgui.sf/vstgui/Documentation/html/functions_0x6b.html new file mode 100644 index 0000000..157892c --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_0x6b.html @@ -0,0 +1,110 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- k -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_0x6c.html b/vstgui.sf/vstgui/Documentation/html/functions_0x6c.html new file mode 100644 index 0000000..8357a89 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_0x6c.html @@ -0,0 +1,99 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- l -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_0x6d.html b/vstgui.sf/vstgui/Documentation/html/functions_0x6d.html new file mode 100644 index 0000000..360a77f --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_0x6d.html @@ -0,0 +1,97 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- m -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_0x6e.html b/vstgui.sf/vstgui/Documentation/html/functions_0x6e.html new file mode 100644 index 0000000..b1670bb --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_0x6e.html @@ -0,0 +1,99 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- n -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_0x6f.html b/vstgui.sf/vstgui/Documentation/html/functions_0x6f.html new file mode 100644 index 0000000..6940a36 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_0x6f.html @@ -0,0 +1,103 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- o -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_0x70.html b/vstgui.sf/vstgui/Documentation/html/functions_0x70.html new file mode 100644 index 0000000..83086b2 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_0x70.html @@ -0,0 +1,117 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- p -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_0x72.html b/vstgui.sf/vstgui/Documentation/html/functions_0x72.html new file mode 100644 index 0000000..b06e6b5 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_0x72.html @@ -0,0 +1,110 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- r -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_0x73.html b/vstgui.sf/vstgui/Documentation/html/functions_0x73.html new file mode 100644 index 0000000..cd3372f --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_0x73.html @@ -0,0 +1,193 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- s -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_0x74.html b/vstgui.sf/vstgui/Documentation/html/functions_0x74.html new file mode 100644 index 0000000..8c3687f --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_0x74.html @@ -0,0 +1,98 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- t -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_0x75.html b/vstgui.sf/vstgui/Documentation/html/functions_0x75.html new file mode 100644 index 0000000..34f6fe7 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_0x75.html @@ -0,0 +1,89 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- u -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_0x76.html b/vstgui.sf/vstgui/Documentation/html/functions_0x76.html new file mode 100644 index 0000000..293b271 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_0x76.html @@ -0,0 +1,95 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- v -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_0x77.html b/vstgui.sf/vstgui/Documentation/html/functions_0x77.html new file mode 100644 index 0000000..306c736 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_0x77.html @@ -0,0 +1,91 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- w -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_0x78.html b/vstgui.sf/vstgui/Documentation/html/functions_0x78.html new file mode 100644 index 0000000..9859d22 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_0x78.html @@ -0,0 +1,86 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- x -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_0x79.html b/vstgui.sf/vstgui/Documentation/html/functions_0x79.html new file mode 100644 index 0000000..09b296a --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_0x79.html @@ -0,0 +1,86 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- y -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_0x7a.html b/vstgui.sf/vstgui/Documentation/html/functions_0x7a.html new file mode 100644 index 0000000..4d0c862 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_0x7a.html @@ -0,0 +1,84 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- z -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_0x7e.html b/vstgui.sf/vstgui/Documentation/html/functions_0x7e.html new file mode 100644 index 0000000..30e31bc --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_0x7e.html @@ -0,0 +1,122 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- ~ -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_eval.html b/vstgui.sf/vstgui/Documentation/html/functions_eval.html new file mode 100644 index 0000000..4edf298 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_eval.html @@ -0,0 +1,78 @@ + + +VSTGUI: Class Members - Enumerator + + + + + + + +  +

+

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_func.html b/vstgui.sf/vstgui/Documentation/html/functions_func.html new file mode 100644 index 0000000..8ab0a61 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_func.html @@ -0,0 +1,89 @@ + + +VSTGUI: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- a -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_func_0x62.html b/vstgui.sf/vstgui/Documentation/html/functions_func_0x62.html new file mode 100644 index 0000000..54ec784 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_func_0x62.html @@ -0,0 +1,82 @@ + + +VSTGUI: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- b -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_func_0x63.html b/vstgui.sf/vstgui/Documentation/html/functions_func_0x63.html new file mode 100644 index 0000000..4012af4 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_func_0x63.html @@ -0,0 +1,134 @@ + + +VSTGUI: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- c -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_func_0x64.html b/vstgui.sf/vstgui/Documentation/html/functions_func_0x64.html new file mode 100644 index 0000000..44a7661 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_func_0x64.html @@ -0,0 +1,100 @@ + + +VSTGUI: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- d -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_func_0x65.html b/vstgui.sf/vstgui/Documentation/html/functions_func_0x65.html new file mode 100644 index 0000000..4bb8e99 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_func_0x65.html @@ -0,0 +1,80 @@ + + +VSTGUI: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- e -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_func_0x66.html b/vstgui.sf/vstgui/Documentation/html/functions_func_0x66.html new file mode 100644 index 0000000..2e7e308 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_func_0x66.html @@ -0,0 +1,88 @@ + + +VSTGUI: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- f -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_func_0x67.html b/vstgui.sf/vstgui/Documentation/html/functions_func_0x67.html new file mode 100644 index 0000000..3a8af5d --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_func_0x67.html @@ -0,0 +1,178 @@ + + +VSTGUI: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- g -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_func_0x68.html b/vstgui.sf/vstgui/Documentation/html/functions_func_0x68.html new file mode 100644 index 0000000..9a0d585 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_func_0x68.html @@ -0,0 +1,82 @@ + + +VSTGUI: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- h -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_func_0x69.html b/vstgui.sf/vstgui/Documentation/html/functions_func_0x69.html new file mode 100644 index 0000000..0b7d205 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_func_0x69.html @@ -0,0 +1,94 @@ + + +VSTGUI: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- i -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_func_0x6c.html b/vstgui.sf/vstgui/Documentation/html/functions_func_0x6c.html new file mode 100644 index 0000000..c7d43ec --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_func_0x6c.html @@ -0,0 +1,84 @@ + + +VSTGUI: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- l -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_func_0x6d.html b/vstgui.sf/vstgui/Documentation/html/functions_func_0x6d.html new file mode 100644 index 0000000..8e0637f --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_func_0x6d.html @@ -0,0 +1,82 @@ + + +VSTGUI: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- m -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_func_0x6e.html b/vstgui.sf/vstgui/Documentation/html/functions_func_0x6e.html new file mode 100644 index 0000000..f18e90f --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_func_0x6e.html @@ -0,0 +1,82 @@ + + +VSTGUI: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- n -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_func_0x6f.html b/vstgui.sf/vstgui/Documentation/html/functions_func_0x6f.html new file mode 100644 index 0000000..459422f --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_func_0x6f.html @@ -0,0 +1,94 @@ + + +VSTGUI: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- o -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_func_0x70.html b/vstgui.sf/vstgui/Documentation/html/functions_func_0x70.html new file mode 100644 index 0000000..67d2359 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_func_0x70.html @@ -0,0 +1,83 @@ + + +VSTGUI: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- p -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_func_0x72.html b/vstgui.sf/vstgui/Documentation/html/functions_func_0x72.html new file mode 100644 index 0000000..8e5aeaa --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_func_0x72.html @@ -0,0 +1,94 @@ + + +VSTGUI: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- r -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_func_0x73.html b/vstgui.sf/vstgui/Documentation/html/functions_func_0x73.html new file mode 100644 index 0000000..ba9fe20 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_func_0x73.html @@ -0,0 +1,168 @@ + + +VSTGUI: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- s -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_func_0x74.html b/vstgui.sf/vstgui/Documentation/html/functions_func_0x74.html new file mode 100644 index 0000000..922eb11 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_func_0x74.html @@ -0,0 +1,80 @@ + + +VSTGUI: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- t -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_func_0x75.html b/vstgui.sf/vstgui/Documentation/html/functions_func_0x75.html new file mode 100644 index 0000000..70e584a --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_func_0x75.html @@ -0,0 +1,83 @@ + + +VSTGUI: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- u -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_func_0x76.html b/vstgui.sf/vstgui/Documentation/html/functions_func_0x76.html new file mode 100644 index 0000000..222ddd4 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_func_0x76.html @@ -0,0 +1,83 @@ + + +VSTGUI: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- v -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_func_0x77.html b/vstgui.sf/vstgui/Documentation/html/functions_func_0x77.html new file mode 100644 index 0000000..b734559 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_func_0x77.html @@ -0,0 +1,84 @@ + + +VSTGUI: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- w -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_func_0x7e.html b/vstgui.sf/vstgui/Documentation/html/functions_func_0x7e.html new file mode 100644 index 0000000..5ab03ad --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_func_0x7e.html @@ -0,0 +1,118 @@ + + +VSTGUI: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- ~ -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_rela.html b/vstgui.sf/vstgui/Documentation/html/functions_rela.html new file mode 100644 index 0000000..125b4fd --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_rela.html @@ -0,0 +1,57 @@ + + +VSTGUI: Class Members - Related Functions + + + + + + + +  +

+

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_vars.html b/vstgui.sf/vstgui/Documentation/html/functions_vars.html new file mode 100644 index 0000000..437b399 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_vars.html @@ -0,0 +1,85 @@ + + +VSTGUI: Class Members - Variables + + + + + + + +
+ +
+ +

+  +

+

- a -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_vars_0x62.html b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x62.html new file mode 100644 index 0000000..c8c2890 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x62.html @@ -0,0 +1,110 @@ + + +VSTGUI: Class Members - Variables + + + + + + + +
+ +
+ +

+  +

+

- b -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_vars_0x63.html b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x63.html new file mode 100644 index 0000000..ae3d704 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x63.html @@ -0,0 +1,92 @@ + + +VSTGUI: Class Members - Variables + + + + + + + +
+ +
+ +

+  +

+

- c -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_vars_0x64.html b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x64.html new file mode 100644 index 0000000..5741d29 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x64.html @@ -0,0 +1,89 @@ + + +VSTGUI: Class Members - Variables + + + + + + + +
+ +
+ +

+  +

+

- d -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_vars_0x65.html b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x65.html new file mode 100644 index 0000000..1085448 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x65.html @@ -0,0 +1,86 @@ + + +VSTGUI: Class Members - Variables + + + + + + + +
+ +
+ +

+  +

+

- e -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_vars_0x66.html b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x66.html new file mode 100644 index 0000000..c217f34 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x66.html @@ -0,0 +1,95 @@ + + +VSTGUI: Class Members - Variables + + + + + + + +
+ +
+ +

+  +

+

- f -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_vars_0x67.html b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x67.html new file mode 100644 index 0000000..4c42204 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x67.html @@ -0,0 +1,83 @@ + + +VSTGUI: Class Members - Variables + + + + + + + +
+ +
+ +

+  +

+

- g -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_vars_0x68.html b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x68.html new file mode 100644 index 0000000..ca4cfcd --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x68.html @@ -0,0 +1,91 @@ + + +VSTGUI: Class Members - Variables + + + + + + + +
+ +
+ +

+  +

+

- h -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_vars_0x69.html b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x69.html new file mode 100644 index 0000000..2d667db --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x69.html @@ -0,0 +1,90 @@ + + +VSTGUI: Class Members - Variables + + + + + + + +
+ +
+ +

+  +

+

- i -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_vars_0x6b.html b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x6b.html new file mode 100644 index 0000000..d697e0d --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x6b.html @@ -0,0 +1,84 @@ + + +VSTGUI: Class Members - Variables + + + + + + + +
+ +
+ +

+  +

+

- k -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_vars_0x6c.html b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x6c.html new file mode 100644 index 0000000..609cc7f --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x6c.html @@ -0,0 +1,93 @@ + + +VSTGUI: Class Members - Variables + + + + + + + +
+ +
+ +

+  +

+

- l -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_vars_0x6d.html b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x6d.html new file mode 100644 index 0000000..6b1e9c3 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x6d.html @@ -0,0 +1,92 @@ + + +VSTGUI: Class Members - Variables + + + + + + + +
+ +
+ +

+  +

+

- m -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_vars_0x6e.html b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x6e.html new file mode 100644 index 0000000..0e40424 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x6e.html @@ -0,0 +1,96 @@ + + +VSTGUI: Class Members - Variables + + + + + + + +
+ +
+ +

+  +

+

- n -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_vars_0x6f.html b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x6f.html new file mode 100644 index 0000000..6b57846 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x6f.html @@ -0,0 +1,88 @@ + + +VSTGUI: Class Members - Variables + + + + + + + +
+ +
+ +

+  +

+

- o -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_vars_0x70.html b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x70.html new file mode 100644 index 0000000..ddfeeff --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x70.html @@ -0,0 +1,112 @@ + + +VSTGUI: Class Members - Variables + + + + + + + +
+ +
+ +

+  +

+

- p -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_vars_0x72.html b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x72.html new file mode 100644 index 0000000..9f668cd --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x72.html @@ -0,0 +1,94 @@ + + +VSTGUI: Class Members - Variables + + + + + + + +
+ +
+ +

+  +

+

- r -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_vars_0x73.html b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x73.html new file mode 100644 index 0000000..d0f2930 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x73.html @@ -0,0 +1,103 @@ + + +VSTGUI: Class Members - Variables + + + + + + + +
+ +
+ +

+  +

+

- s -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_vars_0x74.html b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x74.html new file mode 100644 index 0000000..6e8d16a --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x74.html @@ -0,0 +1,96 @@ + + +VSTGUI: Class Members - Variables + + + + + + + +
+ +
+ +

+  +

+

- t -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_vars_0x75.html b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x75.html new file mode 100644 index 0000000..c839bfd --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x75.html @@ -0,0 +1,84 @@ + + +VSTGUI: Class Members - Variables + + + + + + + +
+ +
+ +

+  +

+

- u -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_vars_0x76.html b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x76.html new file mode 100644 index 0000000..9405b4c --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x76.html @@ -0,0 +1,90 @@ + + +VSTGUI: Class Members - Variables + + + + + + + +
+ +
+ +

+  +

+

- v -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_vars_0x77.html b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x77.html new file mode 100644 index 0000000..bef06f1 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x77.html @@ -0,0 +1,86 @@ + + +VSTGUI: Class Members - Variables + + + + + + + +
+ +
+ +

+  +

+

- w -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_vars_0x78.html b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x78.html new file mode 100644 index 0000000..8988204 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x78.html @@ -0,0 +1,85 @@ + + +VSTGUI: Class Members - Variables + + + + + + + +
+ +
+ +

+  +

+

- x -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_vars_0x79.html b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x79.html new file mode 100644 index 0000000..53cfeb8 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x79.html @@ -0,0 +1,85 @@ + + +VSTGUI: Class Members - Variables + + + + + + + +
+ +
+ +

+  +

+

- y -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/functions_vars_0x7a.html b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x7a.html new file mode 100644 index 0000000..4acba8c --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/functions_vars_0x7a.html @@ -0,0 +1,83 @@ + + +VSTGUI: Class Members - Variables + + + + + + + +
+ +
+ +

+  +

+

- z -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/globals.html b/vstgui.sf/vstgui/Documentation/html/globals.html new file mode 100644 index 0000000..2726be6 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/globals.html @@ -0,0 +1,78 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- _ -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/globals_0x61.html b/vstgui.sf/vstgui/Documentation/html/globals_0x61.html new file mode 100644 index 0000000..fd94a35 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/globals_0x61.html @@ -0,0 +1,77 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- a -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/globals_0x62.html b/vstgui.sf/vstgui/Documentation/html/globals_0x62.html new file mode 100644 index 0000000..dff208d --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/globals_0x62.html @@ -0,0 +1,78 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- b -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/globals_0x63.html b/vstgui.sf/vstgui/Documentation/html/globals_0x63.html new file mode 100644 index 0000000..bfe3770 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/globals_0x63.html @@ -0,0 +1,92 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- c -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/globals_0x65.html b/vstgui.sf/vstgui/Documentation/html/globals_0x65.html new file mode 100644 index 0000000..ecfa583 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/globals_0x65.html @@ -0,0 +1,78 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- e -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/globals_0x66.html b/vstgui.sf/vstgui/Documentation/html/globals_0x66.html new file mode 100644 index 0000000..72588bb --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/globals_0x66.html @@ -0,0 +1,78 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- f -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/globals_0x67.html b/vstgui.sf/vstgui/Documentation/html/globals_0x67.html new file mode 100644 index 0000000..4374576 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/globals_0x67.html @@ -0,0 +1,81 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- g -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/globals_0x6b.html b/vstgui.sf/vstgui/Documentation/html/globals_0x6b.html new file mode 100644 index 0000000..e5c8e90 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/globals_0x6b.html @@ -0,0 +1,175 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- k -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/globals_0x6d.html b/vstgui.sf/vstgui/Documentation/html/globals_0x6d.html new file mode 100644 index 0000000..0d69358 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/globals_0x6d.html @@ -0,0 +1,86 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- m -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/globals_0x6e.html b/vstgui.sf/vstgui/Documentation/html/globals_0x6e.html new file mode 100644 index 0000000..4bb87f1 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/globals_0x6e.html @@ -0,0 +1,77 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- n -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/globals_0x6f.html b/vstgui.sf/vstgui/Documentation/html/globals_0x6f.html new file mode 100644 index 0000000..75949ea --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/globals_0x6f.html @@ -0,0 +1,78 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- o -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/globals_0x71.html b/vstgui.sf/vstgui/Documentation/html/globals_0x71.html new file mode 100644 index 0000000..d173273 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/globals_0x71.html @@ -0,0 +1,77 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- q -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/globals_0x72.html b/vstgui.sf/vstgui/Documentation/html/globals_0x72.html new file mode 100644 index 0000000..0676ed4 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/globals_0x72.html @@ -0,0 +1,77 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- r -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/globals_0x73.html b/vstgui.sf/vstgui/Documentation/html/globals_0x73.html new file mode 100644 index 0000000..ed3ae28 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/globals_0x73.html @@ -0,0 +1,82 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- s -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/globals_0x74.html b/vstgui.sf/vstgui/Documentation/html/globals_0x74.html new file mode 100644 index 0000000..7783178 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/globals_0x74.html @@ -0,0 +1,78 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- t -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/globals_0x75.html b/vstgui.sf/vstgui/Documentation/html/globals_0x75.html new file mode 100644 index 0000000..e8f4491 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/globals_0x75.html @@ -0,0 +1,83 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- u -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/globals_0x76.html b/vstgui.sf/vstgui/Documentation/html/globals_0x76.html new file mode 100644 index 0000000..7c2b793 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/globals_0x76.html @@ -0,0 +1,146 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- v -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/globals_0x77.html b/vstgui.sf/vstgui/Documentation/html/globals_0x77.html new file mode 100644 index 0000000..4dbbe47 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/globals_0x77.html @@ -0,0 +1,77 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- w -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/globals_defs.html b/vstgui.sf/vstgui/Documentation/html/globals_defs.html new file mode 100644 index 0000000..6d84ce5 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/globals_defs.html @@ -0,0 +1,179 @@ + + +VSTGUI: Class Members + + + + + + + +
+ +
+ +

+  +

+

- _ -

+

- a -

+

- b -

+

- c -

+

- e -

+

- f -

+

- g -

+

- k -

+

- m -

+

- n -

+

- o -

+

- q -

+

- r -

+

- s -

+

- t -

+

- u -

+

- v -

+

- w -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/globals_enum.html b/vstgui.sf/vstgui/Documentation/html/globals_enum.html new file mode 100644 index 0000000..5dc84a4 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/globals_enum.html @@ -0,0 +1,65 @@ + + +VSTGUI: Class Members + + + + + + + +  +

+

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/globals_eval.html b/vstgui.sf/vstgui/Documentation/html/globals_eval.html new file mode 100644 index 0000000..e7db6ee --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/globals_eval.html @@ -0,0 +1,196 @@ + + +VSTGUI: Class Members + + + + + + + +
+
    +
  • k
  • +
  • m
  • +
  • v
  • +
+
+ +

+  +

+

- k -

+

- m -

+

- v -

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/globals_type.html b/vstgui.sf/vstgui/Documentation/html/globals_type.html new file mode 100644 index 0000000..da1e678 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/globals_type.html @@ -0,0 +1,54 @@ + + +VSTGUI: Class Members + + + + + + + +  +

+

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/globals_vars.html b/vstgui.sf/vstgui/Documentation/html/globals_vars.html new file mode 100644 index 0000000..1611e9b --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/globals_vars.html @@ -0,0 +1,67 @@ + + +VSTGUI: Class Members + + + + + + + +  +

+

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/hierarchy.html b/vstgui.sf/vstgui/Documentation/html/hierarchy.html new file mode 100644 index 0000000..e3ee9a1 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/hierarchy.html @@ -0,0 +1,114 @@ + + +VSTGUI: Hierarchical Index + + + + + + +

VSTGUI Class Hierarchy

This inheritance list is sorted roughly, but not completely, alphabetically: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/index.html b/vstgui.sf/vstgui/Documentation/html/index.html new file mode 100644 index 0000000..97a977d --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/index.html @@ -0,0 +1,8 @@ + + +VSTGUI + + + + + diff --git a/vstgui.sf/vstgui/Documentation/html/intro.html b/vstgui.sf/vstgui/Documentation/html/intro.html new file mode 100644 index 0000000..ef70551 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/intro.html @@ -0,0 +1,63 @@ + + +VSTGUI: Introduction + + + + + +

Introduction

+What is a VST Plug-In?

+Essentially, a VST Plug-in is a pure audio processing component, and not an audio application: It is a component that is utilized within a host application. This host application provides the audio streams that are processed by the plug-in's code.

+Generally speaking, a VST plug-in it can take a stream of audio data, apply a process to the audio, and return the result to the host application. A VST Plug-In performs its process normally using the processor of the computer; It does not necessarily need dedicated digital signal processors. The audio stream is broken down into a series of blocks. The host supplies the blocks in sequence. The host and its current environment control the block-size. The VST applicationsPlug-In maintains the status of all its own parameters relating to the running process: The host does not maintain any information about what the plug-in did with the last block of data it processed.

+From the host application’s point of view, a VST Plug-In is a black box with an arbitrary number of inputs, outputs (MIDI or Audio), and associated parameters. The host needs no implicit knowledge of the plug-in's process to be able to use it. The plug-in process can use whatever parameters it wishes, internally to the process, but depending on the capabilities of the host, it can allow the changes to user parameters to be automated by the host.

+The source code of a VST Plug-In is platform independent, but the delivery system depends on the platform architecture:

+

    +
  • On the Windows platform, a VST Plug-In is a multi-threaded DLL (Dynamic Link Library). A standard (default) folder for the VST Plug-Ins is defined in the registry under "HKEY_LOCAL_MACHINE\SOFTWARE\VST\VSTPluginsPath".
  • +
  • On Mac OS X, a VST Plug-In is a Bundle. You define the Plug-In's name in the plist.info file with the CFBundleName key.
  • +
  • On BeOS and SGI (under MOTIF, UNIX), a VST Plug-In is a shared Library.
  • +
+To learn more about VST you can subscribe to the VST Developer Mailing List - check the 3rd Party Developer Support section at www.steinberg.net.

+


+

+Audio Processing

+Audio processing in the plug is accomplished by one of 3 methods, namely process (), processReplacing () and processDoubleReplacing (). While process () takes input data, applies its processing algorithm, and then adds the result to the output (accumulating), processReplacing () and processDoubleReplacing (), overwrite the output buffer.

+

Note:
The accumulating process mode is deprecated in VST 2.4. Please implement processReplacing (mandatory!) and processDoubleReplacing (optional).
+Audio data processed by VST Plug-Ins is 32 bit (single precision) and optionally 64 bit (double precision) floating-point data. The default used range is from -1.0 to +1.0 inclusive [-1.0, +1.0] (where 1.0 corresponds to 0dB, 0.5 to -6dB and 0.0 to -oodB). Note that an effect could generate values above this range.

+All parameters - the user parameters, acting directly or indirectly on that data, as automated by the host, are 32 bit floating-point data. They must always range from 0.0 to 1.0 inclusive [0.0, +1.0], regardless of their internal or external representation.

+

See also:
Threading issues
+
+

+Plug-In Implementation

+If you want to develop a VST Plug-In, you may prefer to go straight to the code examples now. These are very simple examples in which you will learn most of the important basic concepts just by reading a few lines of code. As a Plug-In developer you actually need to know very little about hosting a Plug-In. You should concentrate on the AudioEffect (VST 1.0) and AudioEffectX (VST 2.x extensions) base classes.
Note:
Never edit any of the SDK source files. Never ever. The host application relies on them being used as they are provided. Anything can be added or changed by overriding in your private classes derived from AudioEffectX.
+
+

+User Interfaces

+All user-interface issues are entirely separated from the audio processing issues. At its simplest there is an option where you can avoid providing a user interface at all. In this case the host requests character strings from the Plug-In representing each of the parameters. The host can use the separate ASCII strings for the value, the label, and the units of the parameters to construct its own user interface. This is how the simple code-examples, AGain & ADelay, work. This is also often a good way to develop a VST Plug-In, it offers a very short development cycle to start to test the algorithm. The proper interface can come later.

+The next user interface level is provided when the Plug-In defines its own editor. This allows practically any user interface to be defined. A negative aspect is that then you can quickly land up in platform specifics when dealing with the nuts an bolts of the interface issues, even though the audio process, the concepts and methodology remain platform independent.

+The final option is to use a portable framework for creating sophisticated user interfaces. This framework takes the form of the VSTGUI Library files that are available for almost all supported VST platforms. The VSTGUI Library classes and their usage is described in separate documentation.

See also:
VSTGUI on SourceForge
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/license.html b/vstgui.sf/vstgui/Documentation/html/license.html new file mode 100644 index 0000000..3f3e328 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/license.html @@ -0,0 +1,97 @@ + + +VSTGUI: Licensing Issues + + + + + +

Licensing Issues

The Steinberg VST Plug-In Software Development Kit can be used freely subject to certain licensing conditions by anyone interested in developing Plug-Ins, or to extend an application so that it’s capable of hosting VST Plug-Ins. When you chose to receive the VST Plug-In SDK you declared yourself to be in agreement with the Licensing conditions.

+These notes don’t replace the licensing agreement in any way, but quickly explain what you can and cannot do with the Steinberg VST Plug-In Software Development Kit.

+The License:

+
    +
  • is not time limited.
  • +
  • is subject to the laws of the Federal Republic of Germany only.
  • +
  • its remaining conditions remain valid even if one of the conditions becomes invalid.
  • +
+

+This SDK:

+
    +
  • is created with the sole aim that you can create or host VST Plug-Ins.
  • +
  • is offered ‘AS IS’ and we make no claims about how suitable it is for your application.
  • +
+

+Steinberg:

+
    +
  • still holds the copyright for VST Plug-In specification.
  • +
  • are not responsible for anything that happens because you chose to use the VST Plug-In Interface.
  • +
  • cannot be held liable if your use of the VST Plug-In Interfaces causes damage or loss to anyone.
  • +
  • may release improved versions of the Licensed Software Developer Kit
  • +
  • offer no commitment that updates will occur at anytime or for anybody.
  • +
  • are not aware of VST Plug-In technology infringing the intellectual copyright of anyone else,
  • +
  • cannot accept any responsibility for any claims made against you.
  • +
+

+You cannot:

+
    +
  • transfer your License to anyone
  • +
  • license the information contained in this SDK to anyone else.
  • +
  • sell the information contained in this SDK to anyone.
  • +
  • re-work or otherwise pass this technology off as your own.
  • +
  • give it away or in any other way distribute it, or cause it to be become distributed.
  • +
  • use the VST logo or other marks on promotional merchandise. So no VST t-shirts or baseball caps.
  • +
  • claim to be a partner of Steinberg or be acting on our behalf.
  • +
  • make any statements on Steinberg’s behalf.
  • +
+

+You should not:

+
    +
  • bring the VST technology into disrepute, or damage its reputation in any way.
  • +
  • use VST technology in connection with products that are obscene, pornographic or illegal.
  • +
  • use VST technology in connection with products that are excessively violent, or in poor taste.
  • +
  • break the rules of the license, or we have the right terminate the License immediately.
  • +
+

+You have to:

+
    +
  • include references to Steinberg’s copyrights and trademarks in a product that uses this SDK.
  • +
  • ensure “VST is a trademark of Steinberg Media Technologies GmbH” appears on any packaging
  • +
  • place the VST Logo on packages and promotional material. We provide the artwork.
  • +
  • add our copyright notice to your about box. “VST Plug-In Technology by Steinberg.”
  • +
  • agree that we hold your details on file for our internal purposes.
  • +
  • inform Steinberg immediately if any one makes a claim against you in regard to VST-Plug-Ins.
  • +
  • make sure the end-publisher of your work is also a VST license holder.
  • +
+

+You can:

+
    +
  • make VST Plug-Ins or VST Host Applications and distribute them worldwide.
  • +
  • release products without having to pay to use the VST Plug-In Interface technology
  • +
  • use VST technology in Demo Versions of your products.
  • +
+

Please read the Licensing Agreement!

+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/maceditor.html b/vstgui.sf/vstgui/Documentation/html/maceditor.html new file mode 100644 index 0000000..702648f --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/maceditor.html @@ -0,0 +1,73 @@ + + +VSTGUI: Macintosh Editor as HIViewRef + + + + + +

Macintosh Editor as HIViewRef

+Introduction

+In the beginning of VST the Plug-In's GUI was attached at the left-top corner without a mechanism for the host to move it. This and the evolution of the macintosh platform makes it necessary to change this old behaviour. The modern way on Mac OS X to do UI design with C/C++ is to use HIViews and window compositing.
+ The VST SDK 2.4 requires the Plug-In to attach one HIView to the window and that this HIView can be moved around and that it can be embedded into other subviews.
+ Hosts which implement VST 2.4 need to provide a window to the Plug-In which is composited if the Plug-In itself uses 2.4. If the Plug-In uses an earlier VST SDK it should provide a non composited window.

+


+

+Adding an HIView on effEditOpen

+As before the ptr in effEditOpen is a WindowRef. You need to add one HIView to the content view of this window.

+

HIViewRef contentView;
+if (HIViewFindByID (HIViewGetRoot ((WindowRef)ptr, kHIViewWindowContentID, &contentView) == noErr)
+        HIViewAddSubview (contentView, myPluginView);
+

+


+

+Closing on effEditClose

+When effEditClose is called you should remove your HIView from the window.

+

HIViewRemoveFromSuperview (myPluginView);
+

+Don't do anything with the window. It is not your window.

+


+

+Resizing the Plug-In

+If you want to resize your view, just do it, but don't resize the host window.

+

HIRect pluginBounds;
+HIViewGetFrame (myPluginView, &pluginBounds);
+pluginBounds.size.width = newWidth;
+pluginBounds.size.height = newHeight;
+HIViewSetFrame (myPluginView, &pluginBounds);
+

+The host needs to listen to bounds changes on the Plug-In view and resize its window accordingly.

+


+

+No more effEditDraw, effEditIdle, effEditMouse, effEditTop, effEditSleep

+You need to use Carbon Events now, which you register on the HIView, not on the window if possible. But don't remove these opcodes from your editor yet.

+


+

+VST 2.4 Plug-Ins and VST 2.3 Hosts

+Now there is a conflict situation that VST 2.3 hosts may not work with HIViews and window compositing. Therefore you need at least support effEditDraw, so that your Plug-In draws correctly in these hosts. Mouse, idle and activation events can be handled via Carbon Events.

+

See also:
Apple HIView Programming Guide
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/main.html b/vstgui.sf/vstgui/Documentation/html/main.html new file mode 100644 index 0000000..ed6ccc1 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/main.html @@ -0,0 +1,47 @@ + + +VSTGUI: Main Page + + + + + +

VSTGUI Documentation

+

+Welcome to VSTGUI 3.0!

+Providing an interface to your Plug-In makes you be immediately confronted with platform specifics of different windows handling and event handling models. For this very reason, the VSTGUI libraries have been created. These are available for all supported platforms and make the handling of user interaction with a graphic-rich user interface also cross-platform. Thus they propose common objects for plugs's GUI, like knobs, sliders ...and of course nothing prevents you from adding via inheritance any more specific components you should need.

+You can contribute to VSTGUI development thru Sourceforge project (http://sourceforge.net/projects/vstgui/). You can join the associated mailing list (check https://lists.sourceforge.net/lists/listinfo/vstgui-devel)

+The source code of VSTGUI is included in this SDK and is under the following Licensing:

+


+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

+

    +
  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  • +
  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  • +
  • Neither the name of the Steinberg Media Technologies nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
  • +
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/others.html b/vstgui.sf/vstgui/Documentation/html/others.html new file mode 100644 index 0000000..3f774a9 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/others.html @@ -0,0 +1,51 @@ + + +VSTGUI: Others + + + + + +

Others

+VST Monitor Plug-In

+The VSTMonitor Plug-In provided with this SDK is dedicated to "monitor" the communications between a VST Plug-In and the host which instanciates it: it keeps track of all the calls made by the host to the Plug-In's dispatcher, and of all the calls made by the Plug-In to the host's audiomaster. This is useful to record the sequence of calls done by any host to a VST Plug-In while loading it. Besides VSTMonitor has a "trigger" function which lets the user trigger (via a pop-up menu) any call to the host's audiomaster, to see how the host reacts (and notably to see if the function is implemented by the host...).

+You will find this plug-in in the VSTPlug-ins folder dedicated to each platform. You only need to put it directly in your own VST plug-ins folder in order to make it work.

+Calls made by the host to the plug-in are shown in grey, calls from the plug-in to the host are displayed in red. Internal (to the plug-in) calls are shown in blue.

+All the GUI buttons don't correspond to "real" parameters declared to the host, in order to prevent from disturbing the monitoring. Nevertheless, 3 "real" parameters and 2 programs are declared "publically" (although they are not used internally) to let you see how they are handled by the host.

+

Note:
Many hosts, while loading, open each Vst plug-in, for example to check their IO configuration. This is "hidden" to the user (as the plug-in is always closed as soon as the information needed has been recorded by the host), but VstMonitor can record even those calls, and display them the next time it is opened "normally" in the sequencer. That's why while the host is loading, an alert window may be automatically opened (on Windows platform), asking if the user want to keep track of "what has happened" (and although he has not explicitly opened the plug-in). On Mac, things recorded are kept by default (use Reset -see below- to delete them).
+VstMonitor's buttons:

+

    +
  • display : by default, comms (a "comm" means a call to the dispatcher or audiomaster) are not automatically displayed when they occur. Clicking on this button causes the displaying.
  • +
  • reset : used to erase all the comms recorded.
  • +
  • export : export as a .txt file all the comms recorded,
  • +
  • trigger : a pop-up menu from which you can select a call to the host you would like to trigger VstMonitor's options :
  • +
  • filters : the user can choose to filter (ie not display, as they are always recorded in the background) some coms. In order to do that, you simply need to right-click (in the display) on the comm you want to filter. This comm is then added to the "filter menu" (one of the buttons beneath the display). Clicking on the name of a function in this menu cause the filter to be removed. Some filters are set by default, notably those which concern parameters (setParameter...), but can be unset via the menu.
  • +
  • function's params : the user can choose to display the parameters of the calls
  • +
  • function's returned value : the user can choose to display the "result" of th call (it means the value returned, and pointers which have been filled if necessary).
  • +
  • continuous display : set this if you want the synchronous display of the comms.
  • +
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/pages.html b/vstgui.sf/vstgui/Documentation/html/pages.html new file mode 100644 index 0000000..a5db300 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/pages.html @@ -0,0 +1,37 @@ + + +VSTGUI: Page Index + + + + + +

VSTGUI Related Pages

Here is a list of all related documentation pages: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/plugguieditor_8cpp.html b/vstgui.sf/vstgui/Documentation/html/plugguieditor_8cpp.html new file mode 100644 index 0000000..ace74e7 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/plugguieditor_8cpp.html @@ -0,0 +1,119 @@ + + +VSTGUI: plugguieditor.cpp File Reference + + + + + + +

plugguieditor.cpp File Reference

#include "plugguieditor.h"
+ + + + + + + + + +

Defines

#define kIdleRate   100
#define kIdleRate2   50
#define kIdleRateMin   4
+

Define Documentation

+

+ + + + +
+ + + + +
#define kIdleRate   100
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define kIdleRate2   50
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define kIdleRateMin   4
+
+ + + + + +
+   + + +

+

+ + + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/plugguieditor_8h.html b/vstgui.sf/vstgui/Documentation/html/plugguieditor_8h.html new file mode 100644 index 0000000..9984988 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/plugguieditor_8h.html @@ -0,0 +1,47 @@ + + +VSTGUI: plugguieditor.h File Reference + + + + + + +

plugguieditor.h File Reference

#include "vstgui.h"
+ + + + + + + +

Classes

struct  ERect
class  PluginGUIEditor
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/sequences.html b/vstgui.sf/vstgui/Documentation/html/sequences.html new file mode 100644 index 0000000..61fa489 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/sequences.html @@ -0,0 +1,97 @@ + + +VSTGUI: VST Calling Sequences + + + + + +

VST Calling Sequences

+Introduction

+The diagrams below illustrate the most important calling sequences taking place between VST host application and plug-in. This is of interest to plug-in developers as well as to host developers.

+


+

+Threading issues

+In general, processEvents(), startProcess(), stopProcess(), process(), processReplacing() and processDoubleReplacing() are called from a time-critical high priority thread (except for offline processing).
+ To satisfy realtime constraints for low latency audio processing, memory allocations and lock-based syncronisation should be avoided.
+ The same applies to setParameter() and setProgram() when playing automation from host. Any others functions are called from UI thread in general.
+ The host takes care that processing and setup functions are isolated from each other. setSampleRate(), setBlockSize(), setProcessPrecision(), etc. calls occur only in suspended state, i.e. before resume() is called.

+


+

+Sequence Diagrams

+ +

+ + + + + + + +
+Initialisation.gif +

Figure 3: A plug-in is initialized

+
+Termination.gif +

Figure 4: A plug-in is terminated

+
+TurnOn.gif +

Figure 1: A plug-in is turned on

+
+TurnOff.gif +

Figure 2: A plug-in is turned off

+
+Sampleratechange.gif +

Figure 6: The sample rate changed

+
+Blocksizechange.gif +

Figure 9: The block size changed

+
+ + + + + + + + + +
+SpeakerarrangementnegotiationforVSTfx.gif +

Figure 5: The speaker arrangements negotiation between the host and the plug-in

+
+IOchange.gif +

Figure 7: The number of IOs changed caused e.g. by user interaction

+
+ControlChanged.gif +

Figure 8: A control changed within the userinterface of the plug-in

+
+Offlineprocessing.gif +

Figure 10: A plug-in processes offline

+
+ + + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/struct_c_color-members.html b/vstgui.sf/vstgui/Documentation/html/struct_c_color-members.html new file mode 100644 index 0000000..8e93719 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/struct_c_color-members.html @@ -0,0 +1,49 @@ + + +VSTGUI: Member List + + + + + + +

CColor Member List

This is the complete list of members for CColor, including all inherited members.

+ + + + + + + + + +
alphaCColor
blueCColor
greenCColor
operator!=(const CColor &other) const CColor [inline]
operator()(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)CColor [inline]
operator=(const CColor &newColor)CColor [inline]
operator==(const CColor &other) const CColor [inline]
operator~()CColor [inline]
redCColor
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/struct_c_color.html b/vstgui.sf/vstgui/Documentation/html/struct_c_color.html new file mode 100644 index 0000000..448633c --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/struct_c_color.html @@ -0,0 +1,320 @@ + + +VSTGUI: CColor Struct Reference + + + + + + +

CColor Struct Reference

#include <vstgui.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

CColoroperator() (unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)
CColoroperator= (const CColor &newColor)
CColor operator~ ()
bool operator!= (const CColor &other) const
bool operator== (const CColor &other) const

Public Attributes

unsigned char red
unsigned char green
unsigned char blue
unsigned char alpha
+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
bool CColor::operator!= const CColor other  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CColor& CColor::operator() unsigned char  red,
unsigned char  green,
unsigned char  blue,
unsigned char  alpha
[inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
CColor& CColor::operator= const CColor newColor  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool CColor::operator== const CColor other  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CColor CColor::operator~  )  [inline]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
unsigned char CColor::alpha
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
unsigned char CColor::blue
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
unsigned char CColor::green
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
unsigned char CColor::red
+
+ + + + + +
+   + + +

+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/struct_c_point-members.html b/vstgui.sf/vstgui/Documentation/html/struct_c_point-members.html new file mode 100644 index 0000000..69b71d7 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/struct_c_point-members.html @@ -0,0 +1,50 @@ + + +VSTGUI: Member List + + + + + + +

CPoint Member List

This is the complete list of members for CPoint, including all inherited members.

+ + + + + + + + + + +
CPoint(CCoord h=0, CCoord v=0)CPoint [inline]
hCPoint
isInside(CRect &r) const CPoint [inline]
offset(CCoord h, CCoord v)CPoint [inline]
operator!=(const CPoint &other) const CPoint [inline]
operator()(CCoord h, CCoord v)CPoint [inline]
operator==(const CPoint &other) const CPoint [inline]
vCPoint
xCPoint
yCPoint
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/struct_c_point.html b/vstgui.sf/vstgui/Documentation/html/struct_c_point.html new file mode 100644 index 0000000..89cf6fa --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/struct_c_point.html @@ -0,0 +1,349 @@ + + +VSTGUI: CPoint Struct Reference + + + + + + +

CPoint Struct Reference

#include <vstgui.h> +

+List of all members. + + + + + + + + + + + + + + +

Public Member Functions

 CPoint (CCoord h=0, CCoord v=0)
CPointoperator() (CCoord h, CCoord v)
bool isInside (CRect &r) const
bool operator!= (const CPoint &other) const
bool operator== (const CPoint &other) const
CPointoffset (CCoord h, CCoord v)
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
CPoint::CPoint CCoord  h = 0,
CCoord  v = 0
[inline]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
bool CPoint::isInside CRect r  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
CPoint& CPoint::offset CCoord  h,
CCoord  v
[inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool CPoint::operator!= const CPoint other  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
CPoint& CPoint::operator() CCoord  h,
CCoord  v
[inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool CPoint::operator== const CPoint other  )  const [inline]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
CCoord CPoint::h
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord CPoint::v
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord CPoint::x
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord CPoint::y
+
+ + + + + +
+   + + +

+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/struct_c_rect-members.html b/vstgui.sf/vstgui/Documentation/html/struct_c_rect-members.html new file mode 100644 index 0000000..3f67edf --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/struct_c_rect-members.html @@ -0,0 +1,66 @@ + + +VSTGUI: Member List + + + + + + +

CRect Member List

This is the complete list of members for CRect, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
bottomCRect
bound(const CRect &rect)CRect
CRect(CCoord left=0, CCoord top=0, CCoord right=0, CCoord bottom=0)CRect [inline]
CRect(const CRect &r)CRect [inline]
getHeight() const CRect [inline]
getWidth() const CRect [inline]
height() const CRect [inline]
inset(CCoord deltaX, CCoord deltaY)CRect [inline]
isEmpty() const CRect
leftCRect
moveTo(CCoord x, CCoord y)CRect [inline]
offset(CCoord x, CCoord y)CRect [inline]
operator!=(const CRect &other) const CRect [inline]
operator()(CCoord left, CCoord top, CCoord right, CCoord bottom)CRect [inline]
operator==(const CRect &other) const CRect [inline]
pointInside(const CPoint &where) const CRect
rectOverlap(const CRect &rect) const CRect [inline]
rightCRect
setHeight(CCoord height)CRect [inline]
setWidth(CCoord width)CRect [inline]
topCRect
width() const CRect [inline]
xCRect
x2CRect
yCRect
y2CRect
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/struct_c_rect.html b/vstgui.sf/vstgui/Documentation/html/struct_c_rect.html new file mode 100644 index 0000000..4429a87 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/struct_c_rect.html @@ -0,0 +1,838 @@ + + +VSTGUI: CRect Struct Reference + + + + + + +

CRect Struct Reference

#include <vstgui.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 CRect (CCoord left=0, CCoord top=0, CCoord right=0, CCoord bottom=0)
 CRect (const CRect &r)
CRectoperator() (CCoord left, CCoord top, CCoord right, CCoord bottom)
bool operator!= (const CRect &other) const
bool operator== (const CRect &other) const
CCoord width () const
CCoord height () const
CCoord getWidth () const
CCoord getHeight () const
void setWidth (CCoord width)
void setHeight (CCoord height)
CRectoffset (CCoord x, CCoord y)
CRectinset (CCoord deltaX, CCoord deltaY)
CRectmoveTo (CCoord x, CCoord y)
bool pointInside (const CPoint &where) const
bool isEmpty () const
bool rectOverlap (const CRect &rect) const
void bound (const CRect &rect)
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CRect::CRect CCoord  left = 0,
CCoord  top = 0,
CCoord  right = 0,
CCoord  bottom = 0
[inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
CRect::CRect const CRect r  )  [inline]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
void CRect::bound const CRect rect  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CCoord CRect::getHeight  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CCoord CRect::getWidth  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CCoord CRect::height  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
CRect& CRect::inset CCoord  deltaX,
CCoord  deltaY
[inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
bool CRect::isEmpty  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
CRect& CRect::moveTo CCoord  x,
CCoord  y
[inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
CRect& CRect::offset CCoord  x,
CCoord  y
[inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool CRect::operator!= const CRect other  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CRect& CRect::operator() CCoord  left,
CCoord  top,
CCoord  right,
CCoord  bottom
[inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool CRect::operator== const CRect other  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool CRect::pointInside const CPoint where  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool CRect::rectOverlap const CRect rect  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CRect::setHeight CCoord  height  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void CRect::setWidth CCoord  width  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
CCoord CRect::width  )  const [inline]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
CCoord CRect::bottom
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord CRect::left
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord CRect::right
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord CRect::top
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord CRect::x
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord CRect::x2
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord CRect::y
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CCoord CRect::y2
+
+ + + + + +
+   + + +

+

+


The documentation for this struct was generated from the following files: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/struct_e_rect-members.html b/vstgui.sf/vstgui/Documentation/html/struct_e_rect-members.html new file mode 100644 index 0000000..f71d82d --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/struct_e_rect-members.html @@ -0,0 +1,44 @@ + + +VSTGUI: Member List + + + + + + +

ERect Member List

This is the complete list of members for ERect, including all inherited members.

+ + + + +
bottomERect
leftERect
rightERect
topERect
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/struct_e_rect.html b/vstgui.sf/vstgui/Documentation/html/struct_e_rect.html new file mode 100644 index 0000000..2832d0f --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/struct_e_rect.html @@ -0,0 +1,148 @@ + + +VSTGUI: ERect Struct Reference + + + + + + +

ERect Struct Reference

#include <plugguieditor.h> +

+List of all members. + + + + + + + + + + +

Public Attributes

short top
short left
short bottom
short right
+


Member Data Documentation

+

+ + + + +
+ + + + +
short ERect::bottom
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
short ERect::left
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
short ERect::right
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
short ERect::top
+
+ + + + + +
+   + + +

+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/struct_vst_file_select-members.html b/vstgui.sf/vstgui/Documentation/html/struct_vst_file_select-members.html new file mode 100644 index 0000000..81db599 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/struct_vst_file_select-members.html @@ -0,0 +1,53 @@ + + +VSTGUI: Member List + + + + + + +

VstFileSelect Member List

This is the complete list of members for VstFileSelect, including all inherited members.

+ + + + + + + + + + + + + +
commandVstFileSelect
fileTypesVstFileSelect
futureVstFileSelect
initialPathVstFileSelect
macCreatorVstFileSelect
nbFileTypesVstFileSelect
nbReturnPathVstFileSelect
reservedVstFileSelect
returnMultiplePathsVstFileSelect
returnPathVstFileSelect
sizeReturnPathVstFileSelect
titleVstFileSelect
typeVstFileSelect
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/struct_vst_file_select.html b/vstgui.sf/vstgui/Documentation/html/struct_vst_file_select.html new file mode 100644 index 0000000..d5d44af --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/struct_vst_file_select.html @@ -0,0 +1,373 @@ + + +VSTGUI: VstFileSelect Struct Reference + + + + + + +

VstFileSelect Struct Reference

#include <cfileselector.h> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Attributes

long command
long type
long macCreator
long nbFileTypes
VstFileTypefileTypes
char title [1024]
char * initialPath
char * returnPath
long sizeReturnPath
char ** returnMultiplePaths
long nbReturnPath
long reserved
char future [116]
+


Member Data Documentation

+

+ + + + +
+ + + + +
long VstFileSelect::command
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
VstFileType* VstFileSelect::fileTypes
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
char VstFileSelect::future[116]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
char* VstFileSelect::initialPath
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long VstFileSelect::macCreator
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long VstFileSelect::nbFileTypes
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long VstFileSelect::nbReturnPath
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long VstFileSelect::reserved
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
char** VstFileSelect::returnMultiplePaths
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
char* VstFileSelect::returnPath
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long VstFileSelect::sizeReturnPath
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
char VstFileSelect::title[1024]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
long VstFileSelect::type
+
+ + + + + +
+   + + +

+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/struct_vst_file_type-members.html b/vstgui.sf/vstgui/Documentation/html/struct_vst_file_type-members.html new file mode 100644 index 0000000..55e7d21 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/struct_vst_file_type-members.html @@ -0,0 +1,47 @@ + + +VSTGUI: Member List + + + + + + +

VstFileType Member List

This is the complete list of members for VstFileType, including all inherited members.

+ + + + + + + +
dosTypeVstFileType
macTypeVstFileType
mimeType1VstFileType
mimeType2VstFileType
nameVstFileType
unixTypeVstFileType
VstFileType(char *_name, char *_macType, char *_dosType, char *_unixType=0, char *_mimeType1=0, char *_mimeType2=0)VstFileType [inline]
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/struct_vst_file_type.html b/vstgui.sf/vstgui/Documentation/html/struct_vst_file_type.html new file mode 100644 index 0000000..847a55a --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/struct_vst_file_type.html @@ -0,0 +1,263 @@ + + +VSTGUI: VstFileType Struct Reference + + + + + + +

VstFileType Struct Reference

#include <cfileselector.h> +

+List of all members. + + + + + + + + + + + + + + + + + +

Public Member Functions

 VstFileType (char *_name, char *_macType, char *_dosType, char *_unixType=0, char *_mimeType1=0, char *_mimeType2=0)

Public Attributes

char name [128]
char macType [8]
char dosType [8]
char unixType [8]
char mimeType1 [128]
char mimeType2 [128]
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VstFileType::VstFileType char *  _name,
char *  _macType,
char *  _dosType,
char *  _unixType = 0,
char *  _mimeType1 = 0,
char *  _mimeType2 = 0
[inline]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
char VstFileType::dosType[8]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
char VstFileType::macType[8]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
char VstFileType::mimeType1[128]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
char VstFileType::mimeType2[128]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
char VstFileType::name[128]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
char VstFileType::unixType[8]
+
+ + + + + +
+   + + +

+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/struct_vst_key_code-members.html b/vstgui.sf/vstgui/Documentation/html/struct_vst_key_code-members.html new file mode 100644 index 0000000..019b07b --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/struct_vst_key_code-members.html @@ -0,0 +1,43 @@ + + +VSTGUI: Member List + + + + + + +

VstKeyCode Member List

This is the complete list of members for VstKeyCode, including all inherited members.

+ + + +
characterVstKeyCode
modifierVstKeyCode
virtVstKeyCode
+ + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/struct_vst_key_code.html b/vstgui.sf/vstgui/Documentation/html/struct_vst_key_code.html new file mode 100644 index 0000000..a3362a8 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/struct_vst_key_code.html @@ -0,0 +1,123 @@ + + +VSTGUI: VstKeyCode Struct Reference + + + + + + +

VstKeyCode Struct Reference

#include <vstkeycode.h> +

+List of all members. + + + + + + + + +

Public Attributes

long character
unsigned char virt
unsigned char modifier
+


Member Data Documentation

+

+ + + + +
+ + + + +
long VstKeyCode::character
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
unsigned char VstKeyCode::modifier
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
unsigned char VstKeyCode::virt
+
+ + + + + +
+   + + +

+

+


The documentation for this struct was generated from the following file: + + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/tab_b.gif b/vstgui.sf/vstgui/Documentation/html/tab_b.gif new file mode 100644 index 0000000..0d62348 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/tab_b.gif differ diff --git a/vstgui.sf/vstgui/Documentation/html/tab_l.gif b/vstgui.sf/vstgui/Documentation/html/tab_l.gif new file mode 100644 index 0000000..9b1e633 Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/tab_l.gif differ diff --git a/vstgui.sf/vstgui/Documentation/html/tab_r.gif b/vstgui.sf/vstgui/Documentation/html/tab_r.gif new file mode 100644 index 0000000..ce9dd9f Binary files /dev/null and b/vstgui.sf/vstgui/Documentation/html/tab_r.gif differ diff --git a/vstgui.sf/vstgui/Documentation/html/tabs.css b/vstgui.sf/vstgui/Documentation/html/tabs.css new file mode 100644 index 0000000..a61552a --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/tabs.css @@ -0,0 +1,102 @@ +/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ + +DIV.tabs +{ + float : left; + width : 100%; + background : url("tab_b.gif") repeat-x bottom; + margin-bottom : 4px; +} + +DIV.tabs UL +{ + margin : 0px; + padding-left : 10px; + list-style : none; +} + +DIV.tabs LI, DIV.tabs FORM +{ + display : inline; + margin : 0px; + padding : 0px; +} + +DIV.tabs FORM +{ + float : right; +} + +DIV.tabs A +{ + float : left; + background : url("tab_r.gif") no-repeat right top; + border-bottom : 1px solid #84B0C7; + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + +DIV.tabs A:hover +{ + background-position: 100% -150px; +} + +DIV.tabs A:link, DIV.tabs A:visited, +DIV.tabs A:active, DIV.tabs A:hover +{ + color: #1A419D; +} + +DIV.tabs SPAN +{ + float : left; + display : block; + background : url("tab_l.gif") no-repeat left top; + padding : 5px 9px; + white-space : nowrap; +} + +DIV.tabs INPUT +{ + float : right; + display : inline; + font-size : 1em; +} + +DIV.tabs TD +{ + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + + + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +DIV.tabs SPAN {float : none;} +/* End IE5-Mac hack */ + +DIV.tabs A:hover SPAN +{ + background-position: 0% -150px; +} + +DIV.tabs LI#current A +{ + background-position: 100% -150px; + border-width : 0px; +} + +DIV.tabs LI#current SPAN +{ + background-position: 0% -150px; + padding-bottom : 6px; +} + +DIV.nav +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; +} diff --git a/vstgui.sf/vstgui/Documentation/html/thanks.html b/vstgui.sf/vstgui/Documentation/html/thanks.html new file mode 100644 index 0000000..e856a3b --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/thanks.html @@ -0,0 +1,38 @@ + + +VSTGUI: Acknowledgements + + + + + +

Acknowledgements

The VSTGUI interfaces & libraries were created by Yvan Grabit and Michael Schmidt (additional development Matthias Juwan, Arne Scheffler). The time they have invested has really made the huge inroads into cross-platform code compatibility.

+Thanks too, to Philippe Goutier who provided the VST Offline Interface.

+Not forgetting Dave Nicholson, Julien Junod, Pierre Jean Camillieri, Janne Roeper, Rene Hansen who did some additional typing.

+There were many more people involved in the creation of this interface, not all of whom can be mentioned here. We extend our thanks not just to the Steinberg Staff and Associates that contributed but also to the many other developers from other parties have helped with their input - mainly all the nice people on the VST Plug-In DEVELOPER MAILING LIST

+Thanks to all of you for having made this possible.

+Charlie Steinberg 2006 + + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/tree.html b/vstgui.sf/vstgui/Documentation/html/tree.html new file mode 100644 index 0000000..48c270d --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/tree.html @@ -0,0 +1,238 @@ + + + + + + + TreeView + + + + + +
+

VSTGUI

+
+

o*Main Page

+

o+File List

+ +

o+Class List

+ +

o+Class Hierarchy

+ +

o*Class Members

+

o*File Members

+

\+Related Pages

+ +
+
+ + diff --git a/vstgui.sf/vstgui/Documentation/html/vstcontrols_8cpp.html b/vstgui.sf/vstgui/Documentation/html/vstcontrols_8cpp.html new file mode 100644 index 0000000..7ac750c --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/vstcontrols_8cpp.html @@ -0,0 +1,127 @@ + + +VSTGUI: vstcontrols.cpp File Reference + + + + + + +

vstcontrols.cpp File Reference

#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+#include "vstcontrols.h"
+#include "vstkeycode.h"
+ + + + + + + + + + + + +

Classes

class  CSplashScreenView

Variables

BEGIN_NAMESPACE_VSTGUI long gStandardFontSize []
const char * gStandardFontName []
COptionMenuSchemegOptionMenuScheme = 0
+

Variable Documentation

+

+ + + + +
+ + + + +
COptionMenuScheme* gOptionMenuScheme = 0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
const char* gStandardFontName[]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
BEGIN_NAMESPACE_VSTGUI long gStandardFontSize[]
+
+ + + + + +
+   + + +

+

+ + + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/vstcontrols_8h.html b/vstgui.sf/vstgui/Documentation/html/vstcontrols_8h.html new file mode 100644 index 0000000..6bd42cc --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/vstcontrols_8h.html @@ -0,0 +1,494 @@ + + +VSTGUI: vstcontrols.h File Reference + + + + + + +

vstcontrols.h File Reference

#include "vstgui.h"
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Classes

class  CControlListener
class  CControl
 base class of all VSTGUI controls More...
class  COnOffButton
 a button control with 2 states More...
class  CParamDisplay
 a parameter display control More...
class  CTextLabel
 a text label More...
class  CTextEdit
 a text edit control More...
class  COptionMenuScheme
class  COptionMenu
 a popup menu control More...
class  CKnob
 a knob control More...
class  CAnimKnob
 a bitmap knob control More...
class  CVerticalSwitch
 a vertical switch control More...
class  CHorizontalSwitch
 a horizontal switch control More...
class  CRockerSwitch
 a switch control with 3 sub bitmaps More...
class  CMovieBitmap
 a bitmap control that displays different bitmaps according to its current value More...
class  CMovieButton
 a bi-states button with 2 subbitmaps More...
class  CAutoAnimation
class  CSlider
 a slider control More...
class  CVerticalSlider
 a vertical slider control More...
class  CHorizontalSlider
 a horizontal slider control More...
class  CSpecialDigit
 special display with custom numbers (0...9) More...
class  CKickButton
class  CSplashScreen
class  CVuMeter

Defines

#define kPI   3.14159265358979323846
#define k2PI   6.28318530717958647692
#define kPI_2   1.57079632679489661923f
#define kPI_4   0.78539816339744830962
#define kE   2.7182818284590452354
#define kLN2   0.69314718055994530942
#define kSQRT2   1.41421356237309504880
#define kMenuTitle   "-T"
#define kMenuSeparator   "-"
#define kMenuDisable   "-G"
#define kMenuSubMenu   "-M"

Enumerations

enum  CControlEnum {
+  kHorizontal = 1 << 0, +kVertical = 1 << 1, +kShadowText = 1 << 2, +kLeft = 1 << 3, +
+  kRight = 1 << 4, +kTop = 1 << 5, +kBottom = 1 << 6, +k3DIn = 1 << 7, +
+  k3DOut = 1 << 8, +kPopupStyle = 1 << 9, +kCheckStyle = 1 << 10, +kMultipleCheckStyle, +
+  kNoTextStyle = 1 << 11, +kNoDrawStyle = 1 << 12, +kDoubleClickStyle = 1 << 13, +kNoFrame = 1 << 14 +
+ }

Variables

COptionMenuSchemegOptionMenuScheme
+

Define Documentation

+

+ + + + +
+ + + + +
#define k2PI   6.28318530717958647692
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define kE   2.7182818284590452354
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define kLN2   0.69314718055994530942
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define kMenuDisable   "-G"
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define kMenuSeparator   "-"
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define kMenuSubMenu   "-M"
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define kMenuTitle   "-T"
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define kPI   3.14159265358979323846
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define kPI_2   1.57079632679489661923f
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define kPI_4   0.78539816339744830962
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define kSQRT2   1.41421356237309504880
+
+ + + + + +
+   + + +

+

+


Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum CControlEnum
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + + + + + + + + + + + + + + + +
kHorizontal  +
kVertical  +
kShadowText  +
kLeft  +
kRight  +
kTop  +
kBottom  +
k3DIn  +
k3DOut  +
kPopupStyle  +
kCheckStyle  +
kMultipleCheckStyle  +
kNoTextStyle  +
kNoDrawStyle  +
kDoubleClickStyle  +
kNoFrame  +
+
+
+


Variable Documentation

+

+ + + + +
+ + + + +
COptionMenuScheme* gOptionMenuScheme
+
+ + + + + +
+   + + +

+

+ + + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/vstgui_8cpp.html b/vstgui.sf/vstgui/Documentation/html/vstgui_8cpp.html new file mode 100644 index 0000000..0ad40ab --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/vstgui_8cpp.html @@ -0,0 +1,835 @@ + + +VSTGUI: vstgui.cpp File Reference + + + + + + +

vstgui.cpp File Reference

#include "vstgui.h"
+#include "audioeffectx.h"
+#include "vstkeycode.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Classes

class  CAttributeListEntry

Defines

#define USE_ALPHA_BLEND   QUARTZ || USE_LIBPNG
#define USE_CLIPPING_DRAWRECT   1
#define MAC_OLD_DRAG   1
#define NEW_UPDATE_MECHANISM   1
#define USE_VST_WINDOW   (!PLUGGUI && !VST_FORCE_DEPRECATED)
#define USE_GLOBAL_CONTEXT   1
#define VSTGUI_CFrame   CFrame
#define VSTGUI_CPoint   CPoint
#define VSTGUI_CTextEdit   CTextEdit
#define VSTGUI_CColor   CColor
#define VSTGUI_CDrawContext   CDrawContext
#define VSTGUI_COffscreenContext   COffscreenContext
#define VSTGUI_COptionMenu   COptionMenu
#define VSTGUI_COptionMenuScheme   COptionMenuScheme
#define VSTGUI_CDragContainer   CDragContainer
#define kDragDelay   0
#define FOREACHSUBVIEW   for (CCView *pSv = pFirstView; pSv; pSv = pSv->pNext) {CView *pV = pSv->pView;
#define FOREACHSUBVIEW_REVERSE(reverse)   for (CCView *pSv = reverse ? pLastView : pFirstView; pSv; pSv = reverse ? pSv->pPrevious : pSv->pNext) {CView *pV = pSv->pView;
#define ENDFOR   }

Variables

BEGIN_NAMESPACE_VSTGUI CColor kTransparentCColor = {255, 255, 255, 0}
CColor kBlackCColor = {0, 0, 0, 255}
CColor kWhiteCColor = {255, 255, 255, 255}
CColor kGreyCColor = {127, 127, 127, 255}
CColor kRedCColor = {255, 0, 0, 255}
CColor kGreenCColor = {0 , 255, 0, 255}
CColor kBlueCColor = {0 , 0, 255, 255}
CColor kYellowCColor = {255, 255, 0, 255}
CColor kMagentaCColor = {255, 0, 255, 255}
CColor kCyanCColor = {0 , 255, 255, 255}
char * kMsgCheckIfViewContainer = "kMsgCheckIfViewContainer"
const CViewAttributeID kCViewAttributeReferencePointer = 'cvrp'
+

Define Documentation

+

+ + + + +
+ + + + +
#define ENDFOR   }
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define FOREACHSUBVIEW   for (CCView *pSv = pFirstView; pSv; pSv = pSv->pNext) {CView *pV = pSv->pView;
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
#define FOREACHSUBVIEW_REVERSE reverse   )    for (CCView *pSv = reverse ? pLastView : pFirstView; pSv; pSv = reverse ? pSv->pPrevious : pSv->pNext) {CView *pV = pSv->pView;
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define kDragDelay   0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define MAC_OLD_DRAG   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define NEW_UPDATE_MECHANISM   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define USE_ALPHA_BLEND   QUARTZ || USE_LIBPNG
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define USE_CLIPPING_DRAWRECT   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define USE_GLOBAL_CONTEXT   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define USE_VST_WINDOW   (!PLUGGUI && !VST_FORCE_DEPRECATED)
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define VSTGUI_CColor   CColor
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define VSTGUI_CDragContainer   CDragContainer
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define VSTGUI_CDrawContext   CDrawContext
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define VSTGUI_CFrame   CFrame
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define VSTGUI_COffscreenContext   COffscreenContext
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define VSTGUI_COptionMenu   COptionMenu
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define VSTGUI_COptionMenuScheme   COptionMenuScheme
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define VSTGUI_CPoint   CPoint
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define VSTGUI_CTextEdit   CTextEdit
+
+ + + + + +
+   + + +

+

+


Variable Documentation

+

+ + + + +
+ + + + +
CColor kBlackCColor = {0, 0, 0, 255}
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor kBlueCColor = {0 , 0, 255, 255}
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
const CViewAttributeID kCViewAttributeReferencePointer = 'cvrp'
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor kCyanCColor = {0 , 255, 255, 255}
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor kGreenCColor = {0 , 255, 0, 255}
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor kGreyCColor = {127, 127, 127, 255}
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor kMagentaCColor = {255, 0, 255, 255}
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
char* kMsgCheckIfViewContainer = "kMsgCheckIfViewContainer"
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor kRedCColor = {255, 0, 0, 255}
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
BEGIN_NAMESPACE_VSTGUI CColor kTransparentCColor = {255, 255, 255, 0}
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor kWhiteCColor = {255, 255, 255, 255}
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor kYellowCColor = {255, 255, 0, 255}
+
+ + + + + +
+   + + +

+

+ + + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/vstgui_8h.html b/vstgui.sf/vstgui/Documentation/html/vstgui_8h.html new file mode 100644 index 0000000..5c4cf35 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/vstgui_8h.html @@ -0,0 +1,1068 @@ + + +VSTGUI: vstgui.h File Reference + + + + + + +

vstgui.h File Reference

#include "vstcontrols.h"
+#include "aeffguieditor.h"
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Classes

struct  CRect
struct  CPoint
struct  CColor
class  CReferenceCounter
class  CDrawContext
 A drawing context encapsulates the drawing context of the underlying OS. It implements the drawing functions. More...
class  COffscreenContext
 A drawing device which uses a pixmap as its drawing surface. More...
class  CBitmap
 Encapsulates various platform depended kinds of bitmaps. More...
class  CView
class  CViewContainer
 Container Class of CView objects. More...
class  CFrame
 The CFrame is the parent container of all views. More...
class  CDragContainer
class  CCView

Defines

#define BEGIN_NAMESPACE_VSTGUI
#define END_NAMESPACE_VSTGUI
#define USING_NAMESPACE_VSTGUI
#define VSTGUI_VERSION_MAJOR   3
#define VSTGUI_VERSION_MINOR   0
#define CLASS_METHODS(name, parent)

Typedefs

typedef long CCoord
typedef unsigned long CViewAttributeID

Enumerations

enum  CFont {
+  kSystemFont = 0, +kNormalFontVeryBig, +kNormalFontBig, +kNormalFont, +
+  kNormalFontSmall, +kNormalFontSmaller, +kNormalFontVerySmall, +kSymbolFont, +
+  kNumStandardFonts +
+ }
enum  CTxtFace { kNormalFace = 0, +kBoldFace = 1, +kItalicFace = 2, +kUnderlineFace = 4 + }
enum  CLineStyle { kLineSolid = 0, +kLineOnOffDash + }
enum  CDrawMode { kCopyMode = 0, +kOrMode, +kXorMode, +kAntialias + }
enum  CHoriTxtAlign { kLeftText = 0, +kCenterText, +kRightText + }
enum  CButton {
+  kLButton = 1, +kMButton = 2, +kRButton = 4, +kShift = 8, +
+  kControl = 16, +kAlt = 32, +kApple = 64 +
+ }
enum  CCursorType {
+  kCursorDefault = 0, +kCursorWait, +kCursorHSize, +kCursorVSize, +
+  kCursorSizeAll, +kCursorNESWSize, +kCursorNWSESize, +kCursorCopy, +
+  kCursorNotAllowed, +kCursorHand +
+ }
enum  CKnobMode { kCircularMode = 0, +kRelativCircularMode, +kLinearMode + }
enum  CDrawStyle { kDrawStroked = 0, +kDrawFilled, +kDrawFilledAndStroked + }
enum  CMouseWheelAxis { kMouseWheelAxisX = 0, +kMouseWheelAxisY + }
enum  { kMessageUnknown = 0, +kMessageNotified = 1 + }

Variables

CColor kTransparentCColor
CColor kBlackCColor
CColor kWhiteCColor
CColor kGreyCColor
CColor kRedCColor
CColor kGreenCColor
CColor kBlueCColor
CColor kYellowCColor
CColor kCyanCColor
CColor kMagentaCColor
const CViewAttributeID kCViewAttributeReferencePointer
char * kMsgCheckIfViewContainer
+

Define Documentation

+

+ + + + +
+ + + + +
#define BEGIN_NAMESPACE_VSTGUI
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + +
#define CLASS_METHODS name,
parent   ) 
+
+ + + + + +
+   + + +

+Value:

virtual bool isTypeOf (const char* s) const \
+                { return (!strcmp (s, (#name))) ? true : parent::isTypeOf (s); }\
+
+

+ + + + +
+ + + + +
#define END_NAMESPACE_VSTGUI
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define USING_NAMESPACE_VSTGUI
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define VSTGUI_VERSION_MAJOR   3
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define VSTGUI_VERSION_MINOR   0
+
+ + + + + +
+   + + +

+

+


Typedef Documentation

+

+ + + + +
+ + + + +
typedef long CCoord
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
typedef unsigned long CViewAttributeID
+
+ + + + + +
+   + + +

+

+


Enumeration Type Documentation

+

+ + + + +
+ + + + +
anonymous enum
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + +
kMessageUnknown  +
kMessageNotified  +
+
+
+

+ + + + +
+ + + + +
enum CButton
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + + + + + + +
kLButton  +
kMButton  +
kRButton  +
kShift  +
kControl  +
kAlt  +
kApple  +
+
+
+

+ + + + +
+ + + + +
enum CCursorType
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + + + + + + + + + +
kCursorDefault  +
kCursorWait  +
kCursorHSize  +
kCursorVSize  +
kCursorSizeAll  +
kCursorNESWSize  +
kCursorNWSESize  +
kCursorCopy  +
kCursorNotAllowed  +
kCursorHand  +
+
+
+

+ + + + +
+ + + + +
enum CDrawMode
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + + + +
kCopyMode  +
kOrMode  +
kXorMode  +
kAntialias  +
+
+
+

+ + + + +
+ + + + +
enum CDrawStyle
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + + +
kDrawStroked  +
kDrawFilled  +
kDrawFilledAndStroked  +
+
+
+

+ + + + +
+ + + + +
enum CFont
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + + + + + + + + +
kSystemFont  +
kNormalFontVeryBig  +
kNormalFontBig  +
kNormalFont  +
kNormalFontSmall  +
kNormalFontSmaller  +
kNormalFontVerySmall  +
kSymbolFont  +
kNumStandardFonts  +
+
+
+

+ + + + +
+ + + + +
enum CHoriTxtAlign
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + + +
kLeftText  +
kCenterText  +
kRightText  +
+
+
+

+ + + + +
+ + + + +
enum CKnobMode
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + + +
kCircularMode  +
kRelativCircularMode  +
kLinearMode  +
+
+
+

+ + + + +
+ + + + +
enum CLineStyle
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + +
kLineSolid  +
kLineOnOffDash  +
+
+
+

+ + + + +
+ + + + +
enum CMouseWheelAxis
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + +
kMouseWheelAxisX  +
kMouseWheelAxisY  +
+
+
+

+ + + + +
+ + + + +
enum CTxtFace
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + + + +
kNormalFace  +
kBoldFace  +
kItalicFace  +
kUnderlineFace  +
+
+
+


Variable Documentation

+

+ + + + +
+ + + + +
CColor kBlackCColor
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor kBlueCColor
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
const CViewAttributeID kCViewAttributeReferencePointer
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor kCyanCColor
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor kGreenCColor
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor kGreyCColor
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor kMagentaCColor
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
char* kMsgCheckIfViewContainer
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor kRedCColor
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor kTransparentCColor
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor kWhiteCColor
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
CColor kYellowCColor
+
+ + + + + +
+   + + +

+

+ + + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/vstkeycode_8h.html b/vstgui.sf/vstgui/Documentation/html/vstkeycode_8h.html new file mode 100644 index 0000000..78cf2d2 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/vstkeycode_8h.html @@ -0,0 +1,303 @@ + + +VSTGUI: vstkeycode.h File Reference + + + + + + +

vstkeycode.h File Reference

+ + + + + + + + + +

Classes

struct  VstKeyCode

Enumerations

enum  VstVirtualKey {
+  VKEY_BACK = 1, +VKEY_TAB, +VKEY_CLEAR, +VKEY_RETURN, +
+  VKEY_PAUSE, +VKEY_ESCAPE, +VKEY_SPACE, +VKEY_NEXT, +
+  VKEY_END, +VKEY_HOME, +VKEY_LEFT, +VKEY_UP, +
+  VKEY_RIGHT, +VKEY_DOWN, +VKEY_PAGEUP, +VKEY_PAGEDOWN, +
+  VKEY_SELECT, +VKEY_PRINT, +VKEY_ENTER, +VKEY_SNAPSHOT, +
+  VKEY_INSERT, +VKEY_DELETE, +VKEY_HELP, +VKEY_NUMPAD0, +
+  VKEY_NUMPAD1, +VKEY_NUMPAD2, +VKEY_NUMPAD3, +VKEY_NUMPAD4, +
+  VKEY_NUMPAD5, +VKEY_NUMPAD6, +VKEY_NUMPAD7, +VKEY_NUMPAD8, +
+  VKEY_NUMPAD9, +VKEY_MULTIPLY, +VKEY_ADD, +VKEY_SEPARATOR, +
+  VKEY_SUBTRACT, +VKEY_DECIMAL, +VKEY_DIVIDE, +VKEY_F1, +
+  VKEY_F2, +VKEY_F3, +VKEY_F4, +VKEY_F5, +
+  VKEY_F6, +VKEY_F7, +VKEY_F8, +VKEY_F9, +
+  VKEY_F10, +VKEY_F11, +VKEY_F12, +VKEY_NUMLOCK, +
+  VKEY_SCROLL, +VKEY_SHIFT, +VKEY_CONTROL, +VKEY_ALT, +
+  VKEY_EQUALS +
+ }
enum  VstModifierKey { MODIFIER_SHIFT = 1<<0, +MODIFIER_ALTERNATE = 1<<1, +MODIFIER_COMMAND = 1<<2, +MODIFIER_CONTROL = 1<<3 + }
+

Enumeration Type Documentation

+

+ + + + +
+ + + + +
enum VstModifierKey
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + + + +
MODIFIER_SHIFT  +
MODIFIER_ALTERNATE  +
MODIFIER_COMMAND  +
MODIFIER_CONTROL  +
+
+
+

+ + + + +
+ + + + +
enum VstVirtualKey
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VKEY_BACK  +
VKEY_TAB  +
VKEY_CLEAR  +
VKEY_RETURN  +
VKEY_PAUSE  +
VKEY_ESCAPE  +
VKEY_SPACE  +
VKEY_NEXT  +
VKEY_END  +
VKEY_HOME  +
VKEY_LEFT  +
VKEY_UP  +
VKEY_RIGHT  +
VKEY_DOWN  +
VKEY_PAGEUP  +
VKEY_PAGEDOWN  +
VKEY_SELECT  +
VKEY_PRINT  +
VKEY_ENTER  +
VKEY_SNAPSHOT  +
VKEY_INSERT  +
VKEY_DELETE  +
VKEY_HELP  +
VKEY_NUMPAD0  +
VKEY_NUMPAD1  +
VKEY_NUMPAD2  +
VKEY_NUMPAD3  +
VKEY_NUMPAD4  +
VKEY_NUMPAD5  +
VKEY_NUMPAD6  +
VKEY_NUMPAD7  +
VKEY_NUMPAD8  +
VKEY_NUMPAD9  +
VKEY_MULTIPLY  +
VKEY_ADD  +
VKEY_SEPARATOR  +
VKEY_SUBTRACT  +
VKEY_DECIMAL  +
VKEY_DIVIDE  +
VKEY_F1  +
VKEY_F2  +
VKEY_F3  +
VKEY_F4  +
VKEY_F5  +
VKEY_F6  +
VKEY_F7  +
VKEY_F8  +
VKEY_F9  +
VKEY_F10  +
VKEY_F11  +
VKEY_F12  +
VKEY_NUMLOCK  +
VKEY_SCROLL  +
VKEY_SHIFT  +
VKEY_CONTROL  +
VKEY_ALT  +
VKEY_EQUALS  +
+
+
+ + + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/vstoffline.html b/vstgui.sf/vstgui/Documentation/html/vstoffline.html new file mode 100644 index 0000000..097f1ee --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/vstoffline.html @@ -0,0 +1,33 @@ + + +VSTGUI: VST Offline Processing + + + + + +

VST Offline Processing

+ + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/vstparamstruct.html b/vstgui.sf/vstgui/Documentation/html/vstparamstruct.html new file mode 100644 index 0000000..246aff6 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/vstparamstruct.html @@ -0,0 +1,33 @@ + + +VSTGUI: VST Parameters Structure + + + + + +

VST Parameters Structure

+ + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/vstplugscarbon_8h.html b/vstgui.sf/vstgui/Documentation/html/vstplugscarbon_8h.html new file mode 100644 index 0000000..2774036 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/vstplugscarbon_8h.html @@ -0,0 +1,293 @@ + + +VSTGUI: vstplugscarbon.h File Reference + + + + + + +

vstplugscarbon.h File Reference

+ + + + + + + + + + + + + + + + + + + + + + +

Defines

#define MAC   1
#define WINDOWS   0
#define SGI   0
#define MOTIF   0
#define BEBOX   0
#define CARBON   1
#define TARGET_API_MAC_CARBON   1
#define TARGET_OS_MAC   1
#define OLDP2C   1
#define OPAQUE_TOOLBOX_STRUCTS   1
+

Define Documentation

+

+ + + + +
+ + + + +
#define BEBOX   0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define CARBON   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define MAC   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define MOTIF   0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define OLDP2C   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define OPAQUE_TOOLBOX_STRUCTS   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define SGI   0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define TARGET_API_MAC_CARBON   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define TARGET_OS_MAC   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define WINDOWS   0
+
+ + + + + +
+   + + +

+

+ + + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/vstplugsmac_8h.html b/vstgui.sf/vstgui/Documentation/html/vstplugsmac_8h.html new file mode 100644 index 0000000..c05f80c --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/vstplugsmac_8h.html @@ -0,0 +1,381 @@ + + +VSTGUI: vstplugsmac.h File Reference + + + + + + +

vstplugsmac.h File Reference

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define MAC   1
#define WINDOWS   0
#define SGI   0
#define MOTIF   0
#define BEBOX   0
#define RHAPSODY   0
#define TARGET_OS_MAC   1
#define OPAQUE_TOOLBOX_STRUCTS   0
#define ACCESSOR_CALLS_ARE_FUNCTIONS   0
#define CALL_NOT_IN_CARBON   1
#define USENAVSERVICES   1
#define GetPortBounds(port, rect)   *(rect) = port->portRect
#define GetPortPixMap(port)   port->portPixMap
+

Define Documentation

+

+ + + + +
+ + + + +
#define ACCESSOR_CALLS_ARE_FUNCTIONS   0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define BEBOX   0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define CALL_NOT_IN_CARBON   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + +
#define GetPortBounds port,
rect   )    *(rect) = port->portRect
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
#define GetPortPixMap port   )    port->portPixMap
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define MAC   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define MOTIF   0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define OPAQUE_TOOLBOX_STRUCTS   0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define RHAPSODY   0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define SGI   0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define TARGET_OS_MAC   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define USENAVSERVICES   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define WINDOWS   0
+
+ + + + + +
+   + + +

+

+ + + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/vstplugsmacho_8h.html b/vstgui.sf/vstgui/Documentation/html/vstplugsmacho_8h.html new file mode 100644 index 0000000..9755d2e --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/vstplugsmacho_8h.html @@ -0,0 +1,418 @@ + + +VSTGUI: vstplugsmacho.h File Reference + + + + + + +

vstplugsmacho.h File Reference

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define MAC   1
#define MACX   1
#define WINDOWS   0
#define SGI   0
#define MOTIF   0
#define BEBOX   0
#define USE_NAMESPACE   0
#define CARBON   1
#define TARGET_API_MAC_CARBON   1
#define TARGET_OS_MAC   1
#define OLDP2C   1
#define OPAQUE_TOOLBOX_STRUCTS   1
#define USENAVSERVICES   1
#define __DEBUGGING__
#define __CF_USE_FRAMEWORK_INCLUDES__
+

Define Documentation

+

+ + + + +
+ + + + +
#define __CF_USE_FRAMEWORK_INCLUDES__
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define __DEBUGGING__
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define BEBOX   0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define CARBON   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define MAC   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define MACX   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define MOTIF   0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define OLDP2C   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define OPAQUE_TOOLBOX_STRUCTS   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define SGI   0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define TARGET_API_MAC_CARBON   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define TARGET_OS_MAC   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define USE_NAMESPACE   0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define USENAVSERVICES   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define WINDOWS   0
+
+ + + + + +
+   + + +

+

+ + + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/vstplugsquartz_8h.html b/vstgui.sf/vstgui/Documentation/html/vstplugsquartz_8h.html new file mode 100644 index 0000000..a919d68 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/vstplugsquartz_8h.html @@ -0,0 +1,369 @@ + + +VSTGUI: vstplugsquartz.h File Reference + + + + + + +

vstplugsquartz.h File Reference

#include <AvailabilityMacros.h>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define MAC   1
#define MACX   1
#define WINDOWS   0
#define SGI   0
#define MOTIF   0
#define BEBOX   0
#define USE_NAMESPACE   0
#define TARGET_API_MAC_CARBON   1
#define USENAVSERVICES   1
#define __CF_USE_FRAMEWORK_INCLUDES__
#define QUARTZ   1
#define MAC_OS_X_VERSION_MIN_REQUIRED   1020
#define MAC_OS_X_VERSION_MAX_ALLOWED   1030
+

Define Documentation

+

+ + + + +
+ + + + +
#define __CF_USE_FRAMEWORK_INCLUDES__
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define BEBOX   0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define MAC   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define MAC_OS_X_VERSION_MAX_ALLOWED   1030
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define MAC_OS_X_VERSION_MIN_REQUIRED   1020
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define MACX   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define MOTIF   0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define QUARTZ   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define SGI   0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define TARGET_API_MAC_CARBON   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define USE_NAMESPACE   0
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define USENAVSERVICES   1
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define WINDOWS   0
+
+ + + + + +
+   + + +

+

+ + + + Empty + + + + + + +
+


+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/html/whatsnew.html b/vstgui.sf/vstgui/Documentation/html/whatsnew.html new file mode 100644 index 0000000..c4cfe73 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/html/whatsnew.html @@ -0,0 +1,84 @@ + + +VSTGUI: What's new in VST 2.4 + + + + + +

What's new in VST 2.4

+64 Bit Platform Compatibility

+With VST SDK 2.4 you can compile native VST Plug-Ins for 64 Bit Platforms (e.g. Windows XP x64 Edition). The formerly used 'long' data type has been replaced by VstInt32 and VstIntPtr:
    +
  • VstInt32 is always 32 bits wide, regardless of the platform compiled for.
  • +
  • VstIntPtr is a generic type, with the same size as a pointer (4 Bytes on a 32 bit OS, 8 Bytes on x64 Systems).
  • +
+
+

+Double Precision Processing

+A new process function has been added to support 64 bit (double precision) floating-point audio samples. Please note that this function is optional, whereas the processReplacing function for 32 bit (single precision) floating-point samples is mandatory!
See also:
AudioEffect::canDoubleReplacing
+ AudioEffect::processDoubleReplacing
+ AudioEffectX::setProcessPrecision
+
+

+MIDI Events

+New enum VstMidiEventFlags for VstMidiEvent::flags with value kVstMidiEventIsRealtime which indicates that an event is played live, not from a sequencer track.

+

See also:
AudioEffectX::getNumMidiInputChannels
+ AudioEffectX::getNumMidiOutputChannels
+
+

+VST Parameters Structure

+The VST Parameters Structure XML definition provides an easy way to structure parameters of existing VST Plug-Ins hierarchically, without having to recompile the Plug-In binary. The VST SDK package contains a tool to test, extract and embed VSTXML resources.

+

See also:
VST Parameters Structure
+
+

+Macintosh Editor Changes

+All Plug-Ins built with this SDK must support composited windows on OSX.

+

See also:
Macintosh Editor as HIViewRef
+
+

+Deprecated Features

+The VST Protocol is a historically grown technology. In Revision 2.4 the API has undergone a general cleanup. Some rarely (or not at all) used features and inconsistent or redundant parts of the protocol have been declared as deprecated. Deprecated opcodes and data structures are still available in the SDK headers, but their names are modified if the VST_FORCE_DEPRECATED compile switch is active (1 by default) - this might cause errors when compiling existing code.

+What does it mean? Exisiting (already released) Hosts and Plug-Ins of course remain uninfluenced. If you create a new Plug with VST SDK 2.4 it should work in any existing host as well. However, there are some details that might cause compatibility problems:

+

    +
  • MIDI Input: New Plugs should implement AudioEffectX::canDo "receiveVstMidiEvent" to indicate the presence of a MIDI Input, instead of wantEvents. The base class method AudioEffectX::resume can be called for compatibility with old VST hosts (< 2.4).
  • +
  • MIDI Output: implement AudioEffectX::canDo "sendVstMidiEvent".
  • +
  • Idle Calls outside Editor: AudioEffectX::needIdle and AudioEffectX::fxIdle are not widely supported, thus Plugs can not rely on it. Please create your own timer/background thread if needed. On Windows SetTimer with a callback function could be used (look it up on MSDN), the MacOS X equivalent is InstallEventLoopTimer.
  • +
  • No more accumulating process mode: New Plugs have to implement AudioEffect::processReplacing instead!
  • +
  • The exported 'main' function (aka 'main_macho' on Mac or 'main_plugin') should be named 'VSTPluginMain' on all platforms! For downwards compatibility, you can export both.
  • +
+To support VST Plug-Ins <= 2.4 in new Host Applications, you'll have to implement workarounds. In the long run, deprecated features shouldn't be used anymore. Future versions of VST SDK will not contain them at all.

+

See also:
Deprecated List
+
+

+Other Changes

+You might have already noticed some more minor changes in VST SDK 2.4:
    +
  • New SDK folder structure
  • +
  • Some files have been renamed (e.g. AudioEffect.hpp -> audioeffect.h)
  • +
  • MiniHost Example
  • +
  • Updated documentation
  • +
+ + + + Empty + + + + + + +
+
+
+Copyright ©2006 Steinberg Media Technologies. +All Rights Reserved. +
+ + + diff --git a/vstgui.sf/vstgui/Documentation/index.html b/vstgui.sf/vstgui/Documentation/index.html new file mode 100644 index 0000000..6270b94 --- /dev/null +++ b/vstgui.sf/vstgui/Documentation/index.html @@ -0,0 +1,11 @@ + + + + VSTGUI + + + + + + diff --git a/vstgui.sf/vstgui/aeffguieditor.cpp b/vstgui.sf/vstgui/aeffguieditor.cpp new file mode 100644 index 0000000..504a918 --- /dev/null +++ b/vstgui.sf/vstgui/aeffguieditor.cpp @@ -0,0 +1,409 @@ +//----------------------------------------------------------------------------- +// VST Plug-Ins SDK +// VSTGUI: Graphical User Interface Framework for VST plugins +// +// Version 3.0 Date : 30/06/04 +// +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- +// VSTGUI LICENSE +// © 2004, Steinberg Media Technologies, All Rights Reserved +//----------------------------------------------------------------------------- +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// * Neither the name of the Steinberg Media Technologies nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +// OF THE POSSIBILITY OF SUCH DAMAGE. +//----------------------------------------------------------------------------- + +#ifndef __aeffguieditor__ +#include "aeffguieditor.h" +#endif + +//----------------------------------------------------------------------------- +#define kIdleRate 100 // host idle rate in ms +#define kIdleRate2 50 +#define kIdleRateMin 4 // minimum time between 2 idles in ms + +#if MOTIF +static unsigned int _getTicks (); +#endif + +//----------------------------------------------------------------------------- +VstInt32 AEffGUIEditor::knobMode = kCircularMode; + +//----------------------------------------------------------------------------- +// AEffGUIEditor Implementation +//----------------------------------------------------------------------------- +AEffGUIEditor::AEffGUIEditor (AudioEffect* effect) +: AEffEditor (effect), + lLastTicks (0), + inIdleStuff (false), + frame (0) +{ + rect.left = rect.top = rect.right = rect.bottom = 0; + lLastTicks = getTicks (); + + effect->setEditor (this); + + #if WINDOWS + OleInitialize (0); + #endif + + #if MACX + void InitMachOLibrary (); + InitMachOLibrary (); + #endif +} + +//----------------------------------------------------------------------------- +AEffGUIEditor::~AEffGUIEditor () +{ + #if WINDOWS + OleUninitialize (); + #endif + + #if MACX + void ExitMachOLibrary (); + ExitMachOLibrary (); + #endif +} + +//----------------------------------------------------------------------------- +void AEffGUIEditor::setParameter (VstInt32 index, float value) +{} + +//----------------------------------------------------------------------------- +void AEffGUIEditor::beginEdit (VstInt32 index) +{ + ((AudioEffectX*)effect)->beginEdit (index); +} + +//----------------------------------------------------------------------------- +void AEffGUIEditor::endEdit (VstInt32 index) +{ + ((AudioEffectX*)effect)->endEdit (index); +} + +//----------------------------------------------------------------------------- +#if VST_2_1_EXTENSIONS +bool AEffGUIEditor::onKeyDown (VstKeyCode& keyCode) +{ + return frame && frame->onKeyDown (keyCode) == 1 ? true : false; +} + +//----------------------------------------------------------------------------- +bool AEffGUIEditor::onKeyUp (VstKeyCode& keyCode) +{ + return frame && frame->onKeyUp (keyCode) == 1 ? true : false; +} + +//----------------------------------------------------------------------------- +bool AEffGUIEditor::setKnobMode (VstInt32 val) +{ + knobMode = val; + return true; +} + +//----------------------------------------------------------------------------- +bool AEffGUIEditor::onWheel (float distance) +{ + if (frame) + { + CDrawContext context (frame, NULL, systemWindow); + CPoint where; + context.getMouseLocation (where); + return frame->onWheel (&context, where, distance); + } + return false; +} +#endif + +//----------------------------------------------------------------------------- +#if MAC +void AEffGUIEditor::DECLARE_VST_DEPRECATED (draw) (ERect* rect) +{ + if (frame) + { + if (rect) + { + CRect r (rect->left, rect->top, rect->right, rect->bottom); + CDrawContext context (frame, NULL, systemWindow); + frame->drawRect (&context, r); + } + else + frame->draw (); + } +} + +//----------------------------------------------------------------------------- +VstInt32 AEffGUIEditor::DECLARE_VST_DEPRECATED (mouse) (VstInt32 x, VstInt32 y) +{ + CDrawContext context (frame, NULL, systemWindow); + CPoint where (x, y); + + if (frame) + frame->mouse (&context, where); + + return 1; +} +#endif + +//----------------------------------------------------------------------------- +bool AEffGUIEditor::getRect (ERect **ppErect) +{ + *ppErect = ▭ + return true; +} + +//----------------------------------------------------------------------------- +void AEffGUIEditor::idle () +{ +#if MAC && !QUARTZ + GrafPtr savePort; + GetPort (&savePort); + SetPort ((GrafPtr)GetWindowPort ((WindowRef)systemWindow)); + + AEffEditor::idle (); + if (frame) + frame->idle (); + + SetPort (savePort); +#else + + #if BEOS + PlugView *plugView = 0; + if (frame) + { + plugView = (PlugView *) frame->getSystemWindow (); + if (plugView->LockLooperWithTimeout (0) != B_OK) + return; + } + #else + if (inIdleStuff) + return; + #endif + + AEffEditor::idle (); + if (frame) + frame->idle (); + + #if BEOS + if (frame) + plugView->UnlockLooper (); + #endif +#endif +} + +//----------------------------------------------------------------------------- +void AEffGUIEditor::wait (unsigned int ms) +{ + #if MAC + unsigned long ticks; + Delay (ms * 60 / 1000, &ticks); + + #elif WINDOWS + Sleep (ms); + + #elif SGI + struct timespec sleeptime = {0, ms * 1000000}; + nanosleep (&sleeptime, NULL); + + #elif BEOS + snooze (ms * 1000); + #endif +} + +//----------------------------------------------------------------------------- +unsigned int AEffGUIEditor::getTicks () +{ + #if MAC + return (TickCount () * 1000) / 60; + + #elif WINDOWS + return (unsigned int)GetTickCount (); + + #elif MOTIF + return _getTicks (); + + #elif BEOS + return (system_time () / 1000); + #endif + + return 0; +} + +//----------------------------------------------------------------------------- +void AEffGUIEditor::doIdleStuff () +{ + #if !(MAC && !TARGET_API_MAC_CARBON) + // get the current time + unsigned int currentTicks = getTicks (); + + // YG TEST idle (); + if (currentTicks < lLastTicks) + { + #if (MAC && TARGET_API_MAC_CARBON) + RunCurrentEventLoop (kEventDurationMillisecond * kIdleRateMin); + #else + wait (kIdleRateMin); + #endif + currentTicks += kIdleRateMin; + if (currentTicks < lLastTicks - kIdleRate2) + return; + } + + idle (); + + #if WINDOWS + MSG windowsMessage; + if (PeekMessage (&windowsMessage, NULL, WM_PAINT, WM_PAINT, PM_REMOVE)) + DispatchMessage (&windowsMessage); + + #elif MACX + EventRef event; + EventTypeSpec eventTypes[] = { {kEventClassWindow, kEventWindowUpdate}, {kEventClassWindow, kEventWindowDrawContent} }; + if (ReceiveNextEvent (GetEventTypeCount (eventTypes), eventTypes, kEventDurationNoWait, true, &event) == noErr) + { + SendEventToEventTarget (event, GetEventDispatcherTarget ()); + ReleaseEvent (event); + } + #endif + + // save the next time + lLastTicks = currentTicks + kIdleRate; + #endif + + inIdleStuff = true; + + #if !BEOS + if (effect) + effect->masterIdle (); + #endif + + inIdleStuff = false; +} + + +#if MOTIF +//----------------------------------------------------------------------------- +unsigned int _getTicks () +{ + #if SGI + long long time; + syssgi (SGI_GET_UST, &time, 0); + return time / 1000000; + + #elif SUN + hrtime_t nanosecs = gethrtime (); + return (unsigned long long)nanosecs / 1000000UL; + + #elif LINUX + // gettimeofday is not what we need here, checkout API for hw time + struct timeval tv; + struct timezone tz; + gettimeofday (&tv, &tz); + return tv.tv_sec * 1000 + tv.tv_usec / 1000; + #endif +} +#endif +#if MACX +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +extern "C" { +#include +#include +} +#include + +BEGIN_NAMESPACE_VSTGUI + +void* gBundleRef = 0; + +END_NAMESPACE_VSTGUI + +#if USE_NAMESPACE +#define VSTGUI_BUNDLEREF VSTGUI::gBundleRef +#else +#define VSTGUI_BUNDLEREF gBundleRef +#endif + +// ----------------------------------------------------------------------------- +static CFBundleRef _CFXBundleCreateFromImageName (CFAllocatorRef allocator, const char* image_name); +static CFBundleRef _CFXBundleCreateFromImageName (CFAllocatorRef allocator, const char* image_name) +{ + CFURLRef myBundleExecutableURL = CFURLCreateFromFileSystemRepresentation (allocator, (const unsigned char*)image_name, strlen (image_name), false); + if (myBundleExecutableURL == 0) + return 0; + + CFURLRef myBundleContentsMacOSURL = CFURLCreateCopyDeletingLastPathComponent (allocator, myBundleExecutableURL); // Delete Versions/Current/Executable + CFRelease (myBundleExecutableURL); + if (myBundleContentsMacOSURL == 0) + return 0; + + CFURLRef myBundleContentsURL = CFURLCreateCopyDeletingLastPathComponent (allocator, myBundleContentsMacOSURL); // Delete Current + CFRelease (myBundleContentsMacOSURL); + if (myBundleContentsURL == 0) + return 0; + + CFURLRef theBundleURL = CFURLCreateCopyDeletingLastPathComponent (allocator, myBundleContentsURL); // Delete Versions + CFRelease (myBundleContentsURL); + if (theBundleURL == 0) + return 0; + + CFBundleRef result = CFBundleCreate (allocator, theBundleURL); + CFRelease (theBundleURL); + + return result; +} + +// ----------------------------------------------------------------------------- +void InitMachOLibrary (); +void InitMachOLibrary () +{ + const mach_header* header = &_mh_bundle_header; + + const char* imagename = 0; + /* determine the image name, TODO: ther have to be a better way */ + int cnt = _dyld_image_count(); + for (int idx1 = 1; idx1 < cnt; idx1++) + { + if (_dyld_get_image_header(idx1) == header) + { + imagename = _dyld_get_image_name(idx1); + break; + } + } + if (imagename == 0) + return; + /* get the bundle of a header, TODO: ther have to be a better way */ + VSTGUI_BUNDLEREF = (void*)_CFXBundleCreateFromImageName (NULL, imagename); +} + +// ----------------------------------------------------------------------------- +void ExitMachOLibrary (); +void ExitMachOLibrary () +{ + if (VSTGUI_BUNDLEREF) + CFRelease (VSTGUI_BUNDLEREF); +} + +#endif diff --git a/vstgui.sf/vstgui/aeffguieditor.h b/vstgui.sf/vstgui/aeffguieditor.h new file mode 100644 index 0000000..3ec990b --- /dev/null +++ b/vstgui.sf/vstgui/aeffguieditor.h @@ -0,0 +1,113 @@ +//----------------------------------------------------------------------------- +// VST Plug-Ins SDK +// VSTGUI: Graphical User Interface Framework for VST plugins +// +// Version 3.0 Date : 30/06/04 +// +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- +// VSTGUI LICENSE +// © 2004, Steinberg Media Technologies, All Rights Reserved +//----------------------------------------------------------------------------- +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// * Neither the name of the Steinberg Media Technologies nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +// OF THE POSSIBILITY OF SUCH DAMAGE. +//----------------------------------------------------------------------------- + +#ifndef __aeffguieditor__ +#define __aeffguieditor__ + +#ifndef __aeffeditor__ +#include "aeffeditor.h" +#endif + +#ifndef __vstgui__ +#include "vstgui.h" +#endif + +//----------------------------------------------------------------------------- +// AEffGUIEditor Declaration +//----------------------------------------------------------------------------- +class AEffGUIEditor : public AEffEditor +{ +public: +//----------------------------------------------------------------------------- + AEffGUIEditor (AudioEffect* effect); + ~AEffGUIEditor (); + + // get the CFrame object + #if USE_NAMESPACE + VSTGUI::CFrame* getFrame () { return frame; } + #else + CFrame* getFrame () { return frame; } + #endif + + virtual void setParameter (VstInt32 index, float value); + virtual void beginEdit (VstInt32 index); + virtual void endEdit (VstInt32 index); + + // feedback to application + virtual void doIdleStuff (); + + // wait (in ms) + void wait (unsigned int ms); + + // get the current time (in ms) + unsigned int getTicks (); + + // get version of this VSTGUI + static int getVstGuiVersion () { return (VSTGUI_VERSION_MAJOR << 16) + VSTGUI_VERSION_MINOR; } + + // get the knob mode + static VstInt32 getKnobMode () { return knobMode; } +//----------------------------------------------------------------------------- +// AEffEditor overrides: +//----------------------------------------------------------------------------- + bool getRect (ERect** rect); + void idle (); + + #if MAC + void DECLARE_VST_DEPRECATED (draw) (ERect* rect); + VstInt32 DECLARE_VST_DEPRECATED (mouse) (VstInt32 x, VstInt32 y); + #endif + + #if VST_2_1_EXTENSIONS + bool onKeyDown (VstKeyCode& keyCode); + bool onKeyUp (VstKeyCode& keyCode); + bool onWheel (float distance); + bool setKnobMode (VstInt32 val); + #endif +//----------------------------------------------------------------------------- +protected: + ERect rect; + unsigned int lLastTicks; + bool inIdleStuff; + static VstInt32 knobMode; + #if USE_NAMESPACE + VSTGUI::CFrame* frame; + #else + CFrame* frame; + #endif +}; + +#endif diff --git a/vstgui.sf/vstgui/cfileselector.cpp b/vstgui.sf/vstgui/cfileselector.cpp new file mode 100644 index 0000000..0a715ea --- /dev/null +++ b/vstgui.sf/vstgui/cfileselector.cpp @@ -0,0 +1,1156 @@ +//----------------------------------------------------------------------------- +// VST Plug-Ins SDK +// VSTGUI: Graphical User Interface Framework for VST plugins : +// +// Version 3.0 $Date: 2006/01/31 10:03:38 $ +// +//----------------------------------------------------------------------------- +// VSTGUI LICENSE +// © 2004, Steinberg Media Technologies, All Rights Reserved +//----------------------------------------------------------------------------- +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// * Neither the name of the Steinberg Media Technologies nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +// OF THE POSSIBILITY OF SUCH DAMAGE. +//----------------------------------------------------------------------------- + +#if !PLUGGUI +#include "AudioEffectX.h" +#endif + +#ifndef __cfileselector__ +#include "cfileselector.h" +#endif + +//----------------------------------------------------------------------------- +// CFileSelector Implementation +//----------------------------------------------------------------------------- +#define stringAnyType "Any Type (*.*)" +#define stringAllTypes "All Types: (" +#define stringSelect "Select" +#define stringCancel "Cancel" +#define stringLookIn "Look in" +#define kPathMax 1024 + +#if WINDOWS +#include + +static UINT_PTR APIENTRY SelectDirectoryHook (HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam); +static LRESULT CALLBACK SelectDirectoryButtonProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); +WNDPROC fpOldSelectDirectoryButtonProc; +static UINT_PTR APIENTRY WinSaveHook (HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam); +static bool bFolderSelected; +static bool bDidCancel; +static char selDirPath[kPathMax]; +#if PLUGGUI + extern HINSTANCE ghInst; + inline HINSTANCE GetInstance () { return ghInst; } +#else + extern void* hInstance; + inline HINSTANCE GetInstance () { return (HINSTANCE)hInstance; } +#endif +#endif + +BEGIN_NAMESPACE_VSTGUI + +//----------------------------------------------------------------------------- +CFileSelector::CFileSelector (void* ptr) +: ptr (ptr) +, vstFileSelect (0) +{} + +//----------------------------------------------------------------------------- +CFileSelector::~CFileSelector () +{ + if (vstFileSelect) + { + #if VST + if (ptr && ((AudioEffectX*)ptr)->canHostDo ("closeFileSelector")) + ((AudioEffectX*)ptr)->closeFileSelector (vstFileSelect); + else + #endif + { + if (vstFileSelect->reserved == 1 && vstFileSelect->returnPath) + { + delete []vstFileSelect->returnPath; + vstFileSelect->returnPath = 0; + vstFileSelect->sizeReturnPath = 0; + } + if (vstFileSelect->returnMultiplePaths) + { + for (long i = 0; i < vstFileSelect->nbReturnPath; i++) + { + delete []vstFileSelect->returnMultiplePaths[i]; + vstFileSelect->returnMultiplePaths[i] = 0; + } + delete[] vstFileSelect->returnMultiplePaths; + vstFileSelect->returnMultiplePaths = 0; + } + } + } +} + +//----------------------------------------------------------------------------- +long CFileSelector::run (VstFileSelect *vstFileSelect) +{ + this->vstFileSelect = vstFileSelect; + vstFileSelect->nbReturnPath = 0; + if (vstFileSelect->returnPath) + vstFileSelect->returnPath[0] = 0; + + #if !PLUGGUI + if (ptr + #if MACX + && vstFileSelect->command != kVstFileSave + #endif + && ((AudioEffectX*)ptr)->canHostDo ("openFileSelector") && ((AudioEffectX*)ptr)->canHostDo ("closeFileSelector")) + { + if (((AudioEffectX*)ptr)->openFileSelector (vstFileSelect)) + return vstFileSelect->nbReturnPath; + } + else + #endif + { +#if WINDOWS + char filter[512]; + char filePathBuffer[kPathMax]; + strcpy (filePathBuffer, ""); + char* filePath = filePathBuffer; + char fileName[kPathMax]; + strcpy (fileName, ""); + filter[0] = 0; + filePath[0] = 0; + fileName[0] = 0; + + //----------------------------------------- + if (vstFileSelect->command == kVstFileLoad || + vstFileSelect->command == kVstMultipleFilesLoad || + vstFileSelect->command == kVstDirectorySelect) + { + char* multiBuffer = 0; + if (vstFileSelect->command == kVstMultipleFilesLoad) + { + multiBuffer = new char [kPathMax * 100]; + strcpy (multiBuffer, ""); + filePath = multiBuffer; + } + + if (vstFileSelect->command != kVstDirectorySelect) + { + char allBuffer [kPathMax] = {0}; + char* p = filter; + char* p2 = allBuffer; + + const char* ext; + const char* extensions [100]; + long i, j, extCount = 0; + char string[24]; + + for (long ty = 0; ty < vstFileSelect->nbFileTypes; ty++) + { + for (i = 0; i < 2 ; i++) + { + if (i == 0) + { + ext = vstFileSelect->fileTypes[ty].dosType; + + strcpy (p, vstFileSelect->fileTypes[ty].name); + strcat (p, " (."); + strcat (p, ext); + strcat (p, ")"); + p += strlen (p) + 1; + + strcpy (string, "*."); + strcat (string, ext); + strcpy (p, string); + p += strlen (p); + } + else + { + if (!strcmp (vstFileSelect->fileTypes[ty].dosType, vstFileSelect->fileTypes[ty].unixType) || !strcmp (vstFileSelect->fileTypes[ty].unixType, "")) + break; // for + ext = vstFileSelect->fileTypes[ty].unixType; + strcpy (string, ";*."); + strcat (string, ext); + strcpy (p, string); + p += strlen (p); + } + bool found = false; + for (j = 0; j < extCount;j ++) + { + if (strcmp (ext, extensions [j]) == 0) + { + found = true; + break; + } + } + if (!found && extCount < 100) + extensions [extCount++] = ext; + } + p ++; + } // end for filetype + + if (extCount > 1) + { + for (i = 0; i < extCount ;i ++) + { + ext = extensions [i]; + strcpy (string, "*."); + strcat (string, ext); + + if (p2 != allBuffer) + { + strcpy (p2, ";"); + p2++; + } + strcpy (p2, string); + p2 += strlen (p2); + } + + // add the : All types + strcpy (p, stringAllTypes); + strcat (p, allBuffer); + strcat (p, ")"); + p += strlen (p) + 1; + strcpy (p, allBuffer); + p += strlen (p) + 1; + } + + strcpy (p, stringAnyType); + p += strlen (p) + 1; + strcpy (p, "*.*"); + p += strlen (p) + 1; + + *p++ = 0; + *p++ = 0; + } + + OPENFILENAME ofn = {0}; + ofn.lStructSize = sizeof (OPENFILENAME); + HWND owner = 0; + #if !PLUGGUI + if (ptr && ((AudioEffectX*)ptr)->getEditor () && ((AEffGUIEditor*)((AudioEffectX*)ptr)->getEditor ())->getFrame ()) + owner = (HWND)((AEffGUIEditor*)((AudioEffectX*)ptr)->getEditor ())->getFrame ()->getSystemWindow (); + #endif + ofn.hwndOwner = owner; + + if (vstFileSelect->command == kVstDirectorySelect) + ofn.lpstrFilter = "HideFileFilter\0*.___\0\0"; // to hide files + else + ofn.lpstrFilter = filter[0] ? filter : 0; + ofn.nFilterIndex = 1; + ofn.lpstrCustomFilter = NULL; + ofn.lpstrFile = filePath; + if (vstFileSelect->command == kVstMultipleFilesLoad) + ofn.nMaxFile = 100 * kPathMax - 1; + else + ofn.nMaxFile = sizeof (filePathBuffer) - 1; + + ofn.lpstrFileTitle = fileName; + ofn.nMaxFileTitle = 64; + ofn.lpstrInitialDir = vstFileSelect->initialPath; + ofn.lpstrTitle = vstFileSelect->title; + ofn.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_EXPLORER | OFN_ENABLESIZING | OFN_ENABLEHOOK; + if (vstFileSelect->command == kVstDirectorySelect) + { + ofn.Flags &= ~OFN_FILEMUSTEXIST; + ofn.lpfnHook = SelectDirectoryHook; + } + + if (vstFileSelect->command == kVstMultipleFilesLoad) + ofn.Flags |= OFN_ALLOWMULTISELECT; + + vstFileSelect->nbReturnPath = 0; + bDidCancel = true; + + if (GetOpenFileName (&ofn) || + ((vstFileSelect->command == kVstDirectorySelect) && !bDidCancel && strlen (selDirPath) != 0)) + { + switch (vstFileSelect->command) + { + case kVstFileLoad: + vstFileSelect->nbReturnPath = 1; + if (!vstFileSelect->returnPath) + { + vstFileSelect->reserved = 1; + vstFileSelect->returnPath = new char[strlen (ofn.lpstrFile) + 1]; + vstFileSelect->sizeReturnPath = (long)strlen (ofn.lpstrFile) + 1; + } + strcpy (vstFileSelect->returnPath, ofn.lpstrFile); + break; + + case kVstMultipleFilesLoad: + { + char string[kPathMax], directory[kPathMax]; + char *previous = ofn.lpstrFile; + size_t len; + bool dirFound = false; + bool first = true; + directory[0] = 0; // !! + vstFileSelect->returnMultiplePaths = new char*[kPathMax]; + long i = 0; + while (1) + { + if (*previous != 0) + { // something found + if (!dirFound) + { + dirFound = true; + strcpy (directory, previous); + len = strlen (previous) + 1; // including 0 + previous += len; + + if (*previous == 0) + { // 1 selected file only + vstFileSelect->returnMultiplePaths[i] = new char [strlen (directory) + 1]; + strcpy (vstFileSelect->returnMultiplePaths[i++], directory); + } + else + { + if (directory[strlen (directory) - 1] != '\\') + strcat (directory, "\\"); + } + } + else + { + sprintf (string, "%s%s", directory, previous); + len = strlen (previous) + 1; // including 0 + previous += len; + + vstFileSelect->returnMultiplePaths[i] = new char [strlen (string) + 1]; + strcpy (vstFileSelect->returnMultiplePaths[i++], string); + } + } + else + break; + } + vstFileSelect->nbReturnPath = i; + } break; + + case kVstDirectorySelect: + vstFileSelect->nbReturnPath = 1; + if (!vstFileSelect->returnPath) + { + vstFileSelect->reserved = 1; + vstFileSelect->returnPath = new char[strlen (selDirPath) + 1]; + vstFileSelect->sizeReturnPath = (long)strlen (selDirPath) + 1; + } + strcpy (vstFileSelect->returnPath, selDirPath); + } + if (multiBuffer) + delete []multiBuffer; + return vstFileSelect->nbReturnPath; + } + if (multiBuffer) + delete []multiBuffer; + } + + //----------------------------------------- + else if (vstFileSelect->command == kVstFileSave) + { + char* p = filter; + for (long ty = 0; ty < vstFileSelect->nbFileTypes; ty++) + { + const char* ext = vstFileSelect->fileTypes[ty].dosType; + if (ext) + { + strcpy (p, vstFileSelect->fileTypes[ty].name); + strcat (p, " (."); + strcat (p, ext); + strcat (p, ")"); + p += strlen (p) + 1; + + char string[24]; + strcpy (string, "*."); + strcat (string, ext); + strcpy (p, string); + p += strlen (p) + 1; + } + } + *p++ = 0; + *p++ = 0; + + OPENFILENAME ofn = {0}; + ofn.lStructSize = sizeof (OPENFILENAME); + HWND owner = 0; + #if !PLUGGUI + if (((AudioEffectX*)ptr)->getEditor () && ((AEffGUIEditor*)((AudioEffectX*)ptr)->getEditor ())->getFrame ()) + owner = (HWND)((AEffGUIEditor*)((AudioEffectX*)ptr)->getEditor ())->getFrame ()->getSystemWindow (); + #endif + ofn.hwndOwner = owner; + ofn.hInstance = GetInstance (); + ofn.lpstrFilter = filter[0] ? filter : 0; + ofn.nFilterIndex = 1; + ofn.lpstrFile = filePath; + ofn.lpstrCustomFilter = NULL; + ofn.nMaxFile = sizeof (filePathBuffer) - 1; + ofn.lpstrFileTitle = fileName; + ofn.nMaxFileTitle = 64; + ofn.lpstrInitialDir = vstFileSelect->initialPath; + ofn.lpstrTitle = vstFileSelect->title; + ofn.Flags = OFN_EXPLORER | OFN_ENABLESIZING | OFN_HIDEREADONLY | OFN_ENABLEHOOK; + + if (vstFileSelect->nbFileTypes >= 1) + ofn.lpstrDefExt = vstFileSelect->fileTypes[0].dosType; + + // add a template view + ofn.lCustData = (DWORD)0; + ofn.lpfnHook = WinSaveHook; + + if (GetSaveFileName (&ofn)) + { + vstFileSelect->nbReturnPath = 1; + if (!vstFileSelect->returnPath) + { + vstFileSelect->reserved = 1; + vstFileSelect->returnPath = new char[strlen (ofn.lpstrFile) + 1]; + vstFileSelect->sizeReturnPath = (long)strlen (ofn.lpstrFile) + 1; + } + strcpy (vstFileSelect->returnPath, ofn.lpstrFile); + + return vstFileSelect->nbReturnPath; + } + #if _DEBUG + else + { + DWORD err = CommDlgExtendedError (); // for breakpoint + } + #endif + } + +#elif MAC +#if TARGET_API_MAC_CARBON + #if MACX + // new approach for supporting long filenames on mac os x is to use unix path mode + // if vstFileSelect->future[0] is 1 on entry and 0 on exit the resulting paths are UTF8 encoded paths + bool unixPathMode = (vstFileSelect->future[0] == 1); + #endif + NavEventUPP eventUPP = NewNavEventUPP (CFileSelector::navEventProc); + if (vstFileSelect->command == kVstFileSave) + { + NavDialogCreationOptions dialogOptions; + NavGetDefaultDialogCreationOptions (&dialogOptions); + dialogOptions.windowTitle = CFStringCreateWithCString (NULL, vstFileSelect->title[0] ? vstFileSelect->title : "Select a Destination", kCFStringEncodingUTF8); + CFStringRef defSaveName = 0; + #if MACX + if (unixPathMode && vstFileSelect->initialPath) + { + char* name = strrchr (vstFileSelect->initialPath, '/'); + if (name && name[1] != 0) + { + defSaveName = dialogOptions.saveFileName = CFStringCreateWithCString (NULL, name+1, kCFStringEncodingUTF8); + name[0] = 0; + dialogOptions.optionFlags |= kNavPreserveSaveFileExtension; + } + else if (name == 0) + { + defSaveName = dialogOptions.saveFileName = CFStringCreateWithCString (NULL, vstFileSelect->initialPath, kCFStringEncodingUTF8); + dialogOptions.optionFlags |= kNavPreserveSaveFileExtension; + vstFileSelect->initialPath = 0; + } + } + else + #endif + if (vstFileSelect->initialPath && ((FSSpec*)vstFileSelect->initialPath)->name) + { + FSSpec* defaultSpec = (FSSpec*)vstFileSelect->initialPath; + defSaveName = CFStringCreateWithPascalString (NULL, defaultSpec->name, kCFStringEncodingASCII); + if (defSaveName) + { + dialogOptions.saveFileName = defSaveName; + dialogOptions.optionFlags |= kNavPreserveSaveFileExtension; + } + *defaultSpec->name = 0; + } + NavDialogRef dialogRef; + if (NavCreatePutFileDialog (&dialogOptions, NULL, kNavGenericSignature, eventUPP, this, &dialogRef) == noErr) + { + AEDesc defaultLocation; + AEDesc* defLocPtr = 0; + if (vstFileSelect->initialPath) + { + #if MACX + if (unixPathMode) + { + FSRef fsRef; + if (FSPathMakeRef ((const unsigned char*)vstFileSelect->initialPath, &fsRef, NULL) == noErr) + { + if (AECreateDesc (typeFSRef, &fsRef, sizeof(FSRef), &defaultLocation) == noErr) + defLocPtr = &defaultLocation; + } + } + else + #endif + { + FSSpec* defaultSpec = (FSSpec*)vstFileSelect->initialPath; + if (defaultSpec->parID && defaultSpec->vRefNum) + { + if (AECreateDesc (typeFSS, defaultSpec, sizeof(FSSpec), &defaultLocation) == noErr) + defLocPtr = &defaultLocation; + } + } + } + if (defLocPtr) + NavCustomControl (dialogRef, kNavCtlSetLocation, (void*)defLocPtr); + NavDialogRun (dialogRef); + + if (defLocPtr) + AEDisposeDesc (defLocPtr); + + NavReplyRecord navReply; + if (NavDialogGetReply (dialogRef, &navReply) == noErr) + { + FSRef parentFSRef; + AEKeyword theAEKeyword; + DescType typeCode; + Size actualSize; + // get the FSRef referring to the parent directory + if (AEGetNthPtr(&navReply.selection, 1, typeFSRef, + &theAEKeyword, &typeCode, &parentFSRef, sizeof(FSRef), &actualSize) == noErr) + { + #if MACX + if (unixPathMode) + { + bool success = true; + vstFileSelect->nbReturnPath = 1; + if (vstFileSelect->returnPath == 0) + { + vstFileSelect->reserved = 1; + vstFileSelect->returnPath = new char [PATH_MAX]; + } + if (FSRefMakePath (&parentFSRef, (unsigned char*)vstFileSelect->returnPath, PATH_MAX) == noErr) + { + char saveFileName [PATH_MAX]; + if (CFStringGetCString (navReply.saveFileName, saveFileName, PATH_MAX, kCFStringEncodingUTF8)) + { + strcat (vstFileSelect->returnPath, "/"); + strcat (vstFileSelect->returnPath, saveFileName); + vstFileSelect->future[0] = 0; + } + else + success = false; + } + else + success = false; + if (!success && vstFileSelect->reserved) + { + vstFileSelect->nbReturnPath = 0; + delete [] vstFileSelect->returnPath; + } + } + else + #endif + { + FSSpec spec; + FSCatalogInfoBitmap infoBitmap = kFSCatInfoNone; + FSGetCatalogInfo (&parentFSRef, infoBitmap, NULL, NULL, &spec, NULL); + CInfoPBRec pbRec = {0}; + pbRec.dirInfo.ioDrDirID = spec.parID; + pbRec.dirInfo.ioVRefNum = spec.vRefNum; + pbRec.dirInfo.ioNamePtr = spec.name; + if (PBGetCatInfoSync (&pbRec) == noErr) + { + spec.parID = pbRec.dirInfo.ioDrDirID; + // the cfstring -> pascalstring can fail if the filename length > 63 (FSSpec sucks) + if (CFStringGetPascalString (navReply.saveFileName, (unsigned char*)&spec.name, sizeof (spec.name), kCFStringEncodingASCII)) + { + vstFileSelect->nbReturnPath = 1; + if (!vstFileSelect->returnPath) + { + vstFileSelect->reserved = 1; + vstFileSelect->returnPath = new char [sizeof (FSSpec)]; + } + memcpy (vstFileSelect->returnPath, &spec, sizeof (FSSpec)); + } + } + } + } + NavDisposeReply (&navReply); + } + if (defSaveName) + CFRelease (defSaveName); + NavDialogDispose (dialogRef); + DisposeNavEventUPP (eventUPP); + return vstFileSelect->nbReturnPath; + } + if (defSaveName) + CFRelease (defSaveName); + } + else if (vstFileSelect->command == kVstDirectorySelect) + { + NavDialogCreationOptions dialogOptions; + NavGetDefaultDialogCreationOptions (&dialogOptions); + dialogOptions.windowTitle = CFStringCreateWithCString (NULL, vstFileSelect->title[0] ? vstFileSelect->title : "Select Directory", kCFStringEncodingUTF8); + NavDialogRef dialogRef; + if (NavCreateChooseFolderDialog (&dialogOptions, eventUPP, NULL, this, &dialogRef) == noErr) + { + AEDesc defaultLocation; + AEDesc* defLocPtr = 0; + if (vstFileSelect->initialPath) + { + #if MACX + if (unixPathMode) + { + FSRef fsRef; + if (FSPathMakeRef ((const unsigned char*)vstFileSelect->initialPath, &fsRef, NULL) == noErr) + { + if (AECreateDesc (typeFSRef, &fsRef, sizeof(FSRef), &defaultLocation) == noErr) + defLocPtr = &defaultLocation; + } + } + else + #endif + { + FSSpec* defaultSpec = (FSSpec*)vstFileSelect->initialPath; + if (defaultSpec->parID && defaultSpec->vRefNum) + if (AECreateDesc (typeFSS, defaultSpec, sizeof(FSSpec), &defaultLocation) == noErr) + defLocPtr = &defaultLocation; + } + } + if (defLocPtr) + NavCustomControl (dialogRef, kNavCtlSetLocation, (void*)defLocPtr); + NavDialogRun (dialogRef); + if (defLocPtr) + AEDisposeDesc (defLocPtr); + NavReplyRecord navReply; + if (NavDialogGetReply (dialogRef, &navReply) == noErr) + { + FSRef parentFSRef; + AEKeyword theAEKeyword; + DescType typeCode; + Size actualSize; + if (AEGetNthPtr(&navReply.selection, 1, typeFSRef, + &theAEKeyword, &typeCode, &parentFSRef, sizeof(FSRef), &actualSize) == noErr) + { + #if MACX + if (unixPathMode) + { + vstFileSelect->nbReturnPath = 1; + if (vstFileSelect->returnPath == 0) + { + vstFileSelect->reserved = 1; + vstFileSelect->returnPath = new char [PATH_MAX]; + } + if (FSRefMakePath (&parentFSRef, (unsigned char*)vstFileSelect->returnPath, PATH_MAX) != noErr) + { + vstFileSelect->nbReturnPath = 0; + if (vstFileSelect->reserved) + delete [] vstFileSelect->returnPath; + } + else + vstFileSelect->future[0] = 0; + } + else + #endif + { + FSSpec spec; + FSCatalogInfoBitmap infoBitmap = kFSCatInfoNone; + FSGetCatalogInfo (&parentFSRef, infoBitmap, NULL, NULL, &spec, NULL); + vstFileSelect->nbReturnPath = 1; + if (!vstFileSelect->returnPath) + { + vstFileSelect->reserved = 1; + vstFileSelect->returnPath = new char [sizeof (FSSpec)]; + } + memcpy (vstFileSelect->returnPath, &spec, sizeof (FSSpec)); + } + } + + NavDisposeReply (&navReply); + } + NavDialogDispose (dialogRef); + DisposeNavEventUPP (eventUPP); + return vstFileSelect->nbReturnPath; + } + } + else // FileLoad + { + NavDialogCreationOptions dialogOptions; + NavGetDefaultDialogCreationOptions (&dialogOptions); + if (vstFileSelect->command == kVstFileLoad) + { + dialogOptions.windowTitle = CFStringCreateWithCString (NULL, vstFileSelect->title[0] ? vstFileSelect->title : "Select a File to Open", kCFStringEncodingUTF8); + dialogOptions.optionFlags &= ~kNavAllowMultipleFiles; + } + else + { + dialogOptions.windowTitle = CFStringCreateWithCString (NULL, vstFileSelect->title[0] ? vstFileSelect->title : "Select Files to Open", kCFStringEncodingUTF8); + dialogOptions.optionFlags |= kNavAllowMultipleFiles; + } + NavObjectFilterUPP objectFilterUPP = NewNavObjectFilterUPP (CFileSelector::navObjectFilterProc); + NavDialogRef dialogRef; + if (NavCreateGetFileDialog (&dialogOptions, NULL, eventUPP, NULL, objectFilterUPP, this, &dialogRef) == noErr) + { + AEDesc defaultLocation; + AEDesc* defLocPtr = 0; + if (vstFileSelect->initialPath) + { + #if MACX + if (unixPathMode) + { + FSRef fsRef; + if (FSPathMakeRef ((const unsigned char*)vstFileSelect->initialPath, &fsRef, NULL) == noErr) + { + if (AECreateDesc (typeFSRef, &fsRef, sizeof(FSRef), &defaultLocation) == noErr) + defLocPtr = &defaultLocation; + } + } + else + #endif + { + FSSpec* defaultSpec = (FSSpec*)vstFileSelect->initialPath; + if (defaultSpec->parID && defaultSpec->vRefNum) + if (AECreateDesc (typeFSS, defaultSpec, sizeof(FSSpec), &defaultLocation) == noErr) + defLocPtr = &defaultLocation; + } + } + if (defLocPtr) + NavCustomControl (dialogRef, kNavCtlSetLocation, (void*)defLocPtr); + + NavDialogRun (dialogRef); + + if (defLocPtr) + AEDisposeDesc (defLocPtr); + + NavReplyRecord navReply; + if (NavDialogGetReply (dialogRef, &navReply) == noErr) + { + FSRef parentFSRef; + AEKeyword theAEKeyword; + DescType typeCode; + Size actualSize; + if (vstFileSelect->command == kVstFileLoad) + { + if (AEGetNthPtr(&navReply.selection, 1, typeFSRef, + &theAEKeyword, &typeCode, &parentFSRef, sizeof(FSRef), &actualSize) == noErr) + { + #if MACX + if (unixPathMode) + { + vstFileSelect->nbReturnPath = 1; + if (vstFileSelect->returnPath == 0) + { + vstFileSelect->reserved = 1; + vstFileSelect->returnPath = new char [PATH_MAX]; + } + if (FSRefMakePath (&parentFSRef, (unsigned char*)vstFileSelect->returnPath, PATH_MAX) != noErr) + { + vstFileSelect->nbReturnPath = 0; + if (vstFileSelect->reserved) + delete [] vstFileSelect->returnPath; + } + else + vstFileSelect->future[0] = 0; + } + else + #endif + { + FSSpec spec; + FSCatalogInfoBitmap infoBitmap = kFSCatInfoNone; + FSGetCatalogInfo (&parentFSRef, infoBitmap, NULL, NULL, &spec, NULL); + vstFileSelect->nbReturnPath = 1; + if (!vstFileSelect->returnPath) + { + vstFileSelect->reserved = 1; + vstFileSelect->returnPath = new char [sizeof (FSSpec)]; + } + memcpy (vstFileSelect->returnPath, &spec, sizeof (FSSpec)); + } + } + } + else + { + long nbReturnPath; + AECountItems (&navReply.selection, &nbReturnPath); + vstFileSelect->nbReturnPath = nbReturnPath; + vstFileSelect->returnMultiplePaths = new char* [vstFileSelect->nbReturnPath]; + int index = 1; + while (AEGetNthPtr(&navReply.selection, index++, typeFSRef, + &theAEKeyword, &typeCode, &parentFSRef, sizeof(FSRef), &actualSize) == noErr) + { + #if MACX + if (unixPathMode) + { + vstFileSelect->returnMultiplePaths[index-2] = new char[PATH_MAX]; + FSRefMakePath (&parentFSRef, (unsigned char*)vstFileSelect->returnMultiplePaths[index-2], PATH_MAX); + vstFileSelect->future[0] = 0; + } + else + #endif + { + FSSpec spec; + FSCatalogInfoBitmap infoBitmap = kFSCatInfoNone; + FSGetCatalogInfo (&parentFSRef, infoBitmap, NULL, NULL, &spec, NULL); + vstFileSelect->returnMultiplePaths[index-2] = new char[sizeof (FSSpec)]; + memcpy (vstFileSelect->returnMultiplePaths[index-2], &spec, sizeof (FSSpec)); + } + } + } + } + DisposeNavObjectFilterUPP (objectFilterUPP); + DisposeNavEventUPP (eventUPP); + NavDialogDispose (dialogRef); + return vstFileSelect->nbReturnPath; + } + DisposeNavObjectFilterUPP (objectFilterUPP); + } + DisposeNavEventUPP (eventUPP); +#else + StandardFileReply reply; + if (vstFileSelect->command == kVstFileSave) + { + unsigned char defName[64]; + defName[0] = 0; + StandardPutFile ("\pSelect a Destination", defName, &reply); + if (reply.sfGood && reply.sfFile.name[0] != 0) + { + if (!vstFileSelect->returnPath) + { + vstFileSelect->reserved = 1; + vstFileSelect->returnPath = new char [301]; + } + memcpy (vstFileSelect->returnPath, &reply.sfFile, 300); + vstFileSelect->nbReturnPath = 1; + return 1; + } + } + + else if (vstFileSelect->command == kVstDirectorySelect) + { + #if USENAVSERVICES + if (NavServicesAvailable ()) + { + NavReplyRecord navReply; + NavDialogOptions dialogOptions; + short ret = false; + AEDesc defLoc; + defLoc.descriptorType = typeFSS; + defLoc.dataHandle = NewHandle (sizeof (FSSpec)); + FSSpec finalFSSpec; + finalFSSpec.parID = 0; // *dirID; + finalFSSpec.vRefNum = 0; // *volume; + finalFSSpec.name[0] = 0; + + NavGetDefaultDialogOptions (&dialogOptions); + dialogOptions.dialogOptionFlags &= ~kNavAllowMultipleFiles; + dialogOptions.dialogOptionFlags |= kNavSelectDefaultLocation; + strcpy ((char* )dialogOptions.message, "Select Directory"); + c2pstr ((char* )dialogOptions.message); + NavChooseFolder (&defLoc, &navReply, &dialogOptions, 0 /* eventUPP */, 0, 0); + DisposeHandle (defLoc.dataHandle); + + AEDesc resultDesc; + AEKeyword keyword; + resultDesc.dataHandle = 0L; + + if (navReply.validRecord && AEGetNthDesc (&navReply.selection, 1, typeFSS, &keyword, &resultDesc) == noErr) + { + ret = true; + vstFileSelect->nbReturnPath = 1; + if (!vstFileSelect->returnPath) + { + vstFileSelect->reserved = 1; + vstFileSelect->returnPath = new char [sizeof (FSSpec)]; + } + memcpy (vstFileSelect->returnPath, *resultDesc.dataHandle, sizeof (FSSpec)); + } + NavDisposeReply (&navReply); + return vstFileSelect->nbReturnPath; + } + else + #endif + { + // Can't select a Folder; the Application does not support it, and Navigational Services are not available... + return 0; + } + } + + else + { + SFTypeList typelist; + long numFileTypes = vstFileSelect->nbFileTypes; + //seem not to work... if (numFileTypes <= 0) + { + numFileTypes = -1; // all files + typelist[0] = 'AIFF'; + } + /*else + { + if (numFileTypes > 4) + numFileTypes = 4; + for (long i = 0; i < numFileTypes; i++) + memcpy (&typelist[i], vstFileSelect->fileTypes[i].macType, 4); + }*/ + StandardGetFile (0L, numFileTypes, typelist, &reply); + if (reply.sfGood) + { + if (!vstFileSelect->returnPath) + { + vstFileSelect->reserved = 1; + vstFileSelect->returnPath = new char [301]; + } + memcpy (vstFileSelect->returnPath, &reply.sfFile, 300); + vstFileSelect->nbReturnPath = 1; + return 1; + } + } +#endif // TARGET_API_MAC_CARBON +#else + //CAlert::alert ("The current Host application doesn't support FileSelector !", "Warning"); +#endif + } + return 0; +} + +#if MAC && TARGET_API_MAC_CARBON +//----------------------------------------------------------------------------- +pascal void CFileSelector::navEventProc (const NavEventCallbackMessage callBackSelector, NavCBRecPtr callBackParms, NavCallBackUserData callBackUD) +{ + CFileSelector* fs = (CFileSelector*)callBackUD; + switch (callBackSelector) + { + case kNavCBEvent: + { + #if !PLUGGUI + AudioEffectX* effect = (AudioEffectX*)fs->ptr; + if (effect && callBackParms->eventData.eventDataParms.event->what == nullEvent) + effect->masterIdle (); + #endif + break; + } + } +} + +//----------------------------------------------------------------------------- +pascal Boolean CFileSelector::navObjectFilterProc (AEDesc *theItem, void *info, void *callBackUD, NavFilterModes filterMode) +{ + Boolean result = false; + CFileSelector* fs = (CFileSelector*)callBackUD; + NavFileOrFolderInfo *theInfo = (NavFileOrFolderInfo*)info; + + if (theInfo->isFolder || fs->vstFileSelect->nbFileTypes == 0) + result = true; + else + { + FSRef ref; + AECoerceDesc (theItem, typeFSRef, theItem); + if (AEGetDescData (theItem, &ref, sizeof (FSRef)) == noErr) + { + LSItemInfoRecord infoRecord; + if (LSCopyItemInfoForRef (&ref, kLSRequestExtension | kLSRequestTypeCreator, &infoRecord) == noErr) + { + char extension [128]; + extension[0] = 0; + if (infoRecord.extension) + CFStringGetCString (infoRecord.extension, extension, 128, kCFStringEncodingUTF8); + for (long i = 0; i < fs->vstFileSelect->nbFileTypes; i++) + { + VstFileType* ft = &fs->vstFileSelect->fileTypes[i]; + if ((OSType)ft->macType == infoRecord.filetype) + { + result = true; + break; + } + else if (infoRecord.extension) + { + if (!strcasecmp (extension, ft->unixType) || !strcasecmp (extension, ft->dosType)) + { + result = true; + break; + } + } + } + if (infoRecord.extension) + CFRelease (infoRecord.extension); + } + } + } + return result; +} +#endif + +END_NAMESPACE_VSTGUI + +#if WINDOWS +#include +//----------------------------------------------------------------------------- +UINT_PTR APIENTRY SelectDirectoryHook (HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam) +{ + switch (message) + { + case WM_NOTIFY: + { + OFNOTIFY *lpon = (OFNOTIFY *)lParam; + + switch (lpon->hdr.code) + { + case CDN_FILEOK: + CommDlg_OpenSave_GetFolderPath (GetParent (hdlg), selDirPath, kPathMax); + bDidCancel = false; + break; + + case CDN_INITDONE: { + #define HIDE_ITEMS 4 + int i; + UINT hide_items[HIDE_ITEMS] = {edt1, stc3, cmb1, stc2}; + + for (i = 0; i < HIDE_ITEMS; i++) + CommDlg_OpenSave_HideControl (GetParent (hdlg), hide_items[i]); + + CommDlg_OpenSave_SetControlText (GetParent (hdlg), stc4, (char*)(const char*)stringLookIn); + CommDlg_OpenSave_SetControlText (GetParent (hdlg), IDOK, (char*)(const char*)stringSelect); + CommDlg_OpenSave_SetControlText (GetParent (hdlg), IDCANCEL, (char*)(const char*)stringCancel); + } break; + } + } break; + + case WM_INITDIALOG: + fpOldSelectDirectoryButtonProc = /*(FARPROC)*/(WNDPROC)SetWindowLongPtr ( + GetDlgItem (GetParent (hdlg), IDOK), + GWLP_WNDPROC, (LONG_PTR)SelectDirectoryButtonProc); + break; + + case WM_DESTROY: + SetWindowLongPtr (GetDlgItem (GetParent (hdlg), IDOK), + GWLP_WNDPROC, (LONG_PTR)fpOldSelectDirectoryButtonProc); + } + return false; +} + +//----------------------------------------------------------------------------- +LRESULT CALLBACK SelectDirectoryButtonProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + switch (message) + { + case WM_SETTEXT: + if (! (strcmp ((char *)lParam, stringSelect) == 0)) + return false; + break; + + case WM_LBUTTONUP: + case WM_RBUTTONUP: { + char mode[256]; + GetWindowText (hwnd, mode, 256); + if (!strcmp (mode, stringSelect)) + { + bFolderSelected = true; + char oldDirPath[kPathMax]; + CommDlg_OpenSave_GetFolderPath (GetParent (hwnd), oldDirPath, kPathMax); + // you need a lot of tricks to get name of currently selected folder: + // the following call of the original windows procedure causes the + // selected folder to open and after that you can retrieve its name + // by calling ..._GetFolderPath (...) + CallWindowProc ((WNDPROC)fpOldSelectDirectoryButtonProc, hwnd, message, wParam, lParam); + CommDlg_OpenSave_GetFolderPath (GetParent (hwnd), selDirPath, kPathMax); + + if (1) // consumers like it like this + { + if (strcmp (oldDirPath, selDirPath) == 0 || selDirPath [0] == 0) + { + // the same folder as the old one, means nothing selected: close + bFolderSelected = true; + bDidCancel = false; + PostMessage (GetParent (hwnd), WM_CLOSE, 0, 0); + return false; + } + else + { + // another folder is selected: browse into it + bFolderSelected = false; + return true; + } + } + else // original code + { + if (strcmp (oldDirPath, selDirPath) == 0 || selDirPath [0] == 0) + { + // the same folder as the old one, means nothing selected: stay open + bFolderSelected = false; + return true; + } + } + } + + bDidCancel = false; + PostMessage (GetParent (hwnd), WM_CLOSE, 0, 0); + return false; + } break; + } // end switch + + return CallWindowProc ((WNDPROC)fpOldSelectDirectoryButtonProc, hwnd, message, wParam, lParam); +} + +//----------------------------------------------------------------------------- +static void showPathInWindowTitle (HWND hParent, LPOFNOTIFY lpon) +{ + #define WINDOWTEXTSIZE 260 + 64 + OPENFILENAME *ofn = lpon->lpOFN; + char text[WINDOWTEXTSIZE]; + char *p; + size_t len; + + // Put the path into the Window Title + if (lpon->lpOFN->lpstrTitle) + strcpy (text, lpon->lpOFN->lpstrTitle); + else + { + char *pp; + + GetWindowText (hParent, text, WINDOWTEXTSIZE); + pp = strchr (text, '-'); + if (pp) + *--pp = 0; + } + + p = strcat (text, " - ["); + p = text; + len = strlen (text); + p += len; + len = WINDOWTEXTSIZE - len - 2; + CommDlg_OpenSave_GetFolderPath (hParent, p, len); + strcat (text, "]"); + SetWindowText (hParent, text); +} + +//------------------------------------------------------------------------ +UINT_PTR APIENTRY WinSaveHook (HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + switch (msg) + { + case WM_NOTIFY: { + LPOFNOTIFY lpon = (LPOFNOTIFY)lParam; + if (!lpon) + break; + + switch (lpon->hdr.code) + { + case CDN_FOLDERCHANGE: + showPathInWindowTitle (GetParent (hdlg), lpon); + break; + } + } break; + } // end switch + + return 0; +} +#endif + +//----------------------------------------------------------------------------- diff --git a/vstgui.sf/vstgui/cfileselector.h b/vstgui.sf/vstgui/cfileselector.h new file mode 100644 index 0000000..11d84be --- /dev/null +++ b/vstgui.sf/vstgui/cfileselector.h @@ -0,0 +1,133 @@ +//----------------------------------------------------------------------------- +// VST Plug-Ins SDK +// VSTGUI: Graphical User Interface Framework for VST plugins : +// +// Version 3.0 $Date: 2005/11/01 10:03:05 $ +// +//----------------------------------------------------------------------------- +// VSTGUI LICENSE +// © 2004, Steinberg Media Technologies, All Rights Reserved +//----------------------------------------------------------------------------- +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// * Neither the name of the Steinberg Media Technologies nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +// OF THE POSSIBILITY OF SUCH DAMAGE. +//----------------------------------------------------------------------------- + +#ifndef __cfileselector__ +#define __cfileselector__ + +#include "vstgui.h" + +BEGIN_NAMESPACE_VSTGUI + +#ifndef __aeffectx__ +struct VstFileSelect; +#endif + +//----------------------------------------------------------------------------- +// CFileSelector Declaration +//! +//----------------------------------------------------------------------------- +class CFileSelector +{ +public: + CFileSelector (void* ptr); + virtual ~CFileSelector (); + + long run (VstFileSelect *vstFileSelect); + +protected: + void* ptr; + VstFileSelect *vstFileSelect; + + #if MAC + static pascal void navEventProc (const NavEventCallbackMessage callBackSelector, NavCBRecPtr callBackParms, NavCallBackUserData callBackUD); + static pascal Boolean navObjectFilterProc (AEDesc *theItem, void *info, void *callBackUD, NavFilterModes filterMode); + #endif +}; + +#ifndef __aeffectx__ +struct VstFileType +{ + VstFileType (char* _name, char *_macType, char *_dosType, char *_unixType = 0, char *_mimeType1 = 0, char *_mimeType2 = 0) + { + if (_name) + strcpy (name, _name); + if (_macType) + strcpy (macType, _macType); + if (_dosType) + strcpy (dosType, _dosType); + if (_unixType) + strcpy (unixType, _unixType); + if (_mimeType1) + strcpy (mimeType1, _mimeType1); + if (_mimeType2) + strcpy (mimeType2, _mimeType2); + } + char name[128]; + char macType[8]; + char dosType[8]; + char unixType[8]; + char mimeType1[128]; + char mimeType2[128]; +}; + +struct VstFileSelect +{ + long command; // see enum kVstFileLoad.... + long type; // see enum kVstFileType... + + long macCreator; // optional: 0 = no creator + + long nbFileTypes; // nb of fileTypes to used + VstFileType *fileTypes; // list of fileTypes + + char title[1024]; // text display in the file selector's title + + char *initialPath; // initial path + + char *returnPath; // use with kVstFileLoad and kVstDirectorySelect + // if null is passed, the host will allocated memory + // the plugin should then called closeOpenFileSelector for freeing memory + long sizeReturnPath; + + char **returnMultiplePaths; // use with kVstMultipleFilesLoad + // the host allocates this array. The plugin should then called closeOpenFileSelector for freeing memory + long nbReturnPath; // number of selected paths + + long reserved; // reserved for host application + char future[116]; // future use +}; + +enum { + kVstFileLoad = 0, + kVstFileSave, + kVstMultipleFilesLoad, + kVstDirectorySelect, + + kVstFileType = 0 +}; +#endif + +END_NAMESPACE_VSTGUI + +#endif diff --git a/vstgui.sf/vstgui/cscrollview.cpp b/vstgui.sf/vstgui/cscrollview.cpp new file mode 100644 index 0000000..77638bd --- /dev/null +++ b/vstgui.sf/vstgui/cscrollview.cpp @@ -0,0 +1,497 @@ +//----------------------------------------------------------------------------- +// VST Plug-Ins SDK +// VSTGUI: Graphical User Interface Framework for VST plugins : +// +// CScrollView written 2004 by Arne Scheffler +// +//----------------------------------------------------------------------------- +// VSTGUI LICENSE +// © 2004, Steinberg Media Technologies, All Rights Reserved +//----------------------------------------------------------------------------- +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// * Neither the name of the Steinberg Media Technologies nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +// OF THE POSSIBILITY OF SUCH DAMAGE. +//----------------------------------------------------------------------------- + +#ifndef __cscrollview__ +#include "cscrollview.h" +#endif + +#define FOREACHSUBVIEW for (CCView *pSv = pFirstView; pSv; pSv = pSv->pNext) {CView *pV = pSv->pView; +#define ENDFOR } + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +CScrollContainer::CScrollContainer (const CRect &size, const CRect &containerSize, CFrame *pParent, CBitmap *pBackground) +: CViewContainer (size, pParent, pBackground) +, containerSize (containerSize) +, offset (CPoint (0, 0)) +{ + setTransparency (true); + setMode (kOnlyDirtyUpdate); +} + +//----------------------------------------------------------------------------- +CScrollContainer::~CScrollContainer () +{ +} + + +//----------------------------------------------------------------------------- +void CScrollContainer::setContainerSize (const CRect& cs) +{ + containerSize = cs; + setScrollOffset (offset, false); +} + +//----------------------------------------------------------------------------- +void CScrollContainer::setScrollOffset (CPoint newOffset, bool redraw) +{ + if (newOffset.x < containerSize.left - containerSize.width ()) + newOffset.x = containerSize.left - containerSize.width (); + if (newOffset.x > containerSize.right) + newOffset.x = containerSize.right; + if (newOffset.y < containerSize.top) + newOffset.y = containerSize.top; + if (newOffset.y > containerSize.bottom) + newOffset.y = containerSize.bottom; + CPoint diff (newOffset.x - offset.x, offset.y - newOffset.y); + if (diff.x == 0 && diff.y == 0) + return; + CCView *pV = pFirstView; + while (pV) + { + CRect r; + pV->pView->getViewSize (r); + r.offset (diff.x , diff.y); + pV->pView->setViewSize (r); + pV->pView->getMouseableArea (r); + r.offset (diff.x , diff.y); + pV->pView->setMouseableArea (r); + + pV = pV->pNext; + } + offset = newOffset; + + if (0) //redraw) + { + CDrawContext* pContext = getFrame ()->createDrawContext (); + CPoint contextOffset = pContext->offset; + pContext->offset.offset (-contextOffset.x, -contextOffset.y); + pContext->offsetScreen.offset (-contextOffset.x, -contextOffset.y); + redrawRect (pContext, size); + pContext->offset.offset (contextOffset.x, contextOffset.y); + pContext->offsetScreen.offset (contextOffset.x, contextOffset.y); + pContext->forget (); + } + else + setDirty (true); +} + +//----------------------------------------------------------------------------- +void CScrollContainer::redrawRect (CDrawContext* context, const CRect& rect) +{ + CRect _rect (rect); + _rect.offset (size.left, size.top); + _rect.bound (size); + if (bTransparencyEnabled) + { + // as this is transparent, we call the parentview to redraw this area. + if (pParentView) + pParentView->redrawRect (context, _rect); + else if (pParentFrame) + pParentFrame->drawRect (context, _rect); + } + else + drawRect (context, _rect); +} + +//----------------------------------------------------------------------------- +bool CScrollContainer::isDirty () const +{ + if (bDirty) + return true; + + FOREACHSUBVIEW + if (pV->isDirty ()) + { + CRect vs = pV->getViewSize (vs); + vs.offset (size.left, size.top); + if (size.rectOverlap (vs)) + return true; + } + ENDFOR + return false; +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +CScrollView::CScrollView (const CRect &size, const CRect &containerSize, CFrame* pParent, long style, long scrollbarWidth, CBitmap* pBackground) +: CViewContainer (size, pParent, pBackground) +, sc (0) +, vsb (0) +, hsb (0) +, containerSize (containerSize) +, style (style) +{ + setTransparency (true); + setMode (kOnlyDirtyUpdate); + + CRect scsize (size); + scsize.offset (-scsize.left, -scsize.top); +// CScrollbar* sb = 0; + if (style & kHorizontalScrollbar) + { + CRect sbr (size); + sbr.offset (-size.left, -size.top); + sbr.top = sbr.bottom - scrollbarWidth; + if (style & kVerticalScrollbar) + { + sbr.right -= (scrollbarWidth - 1); + } + hsb = new CScrollbar (sbr, this, kHSBTag, CScrollbar::kHorizontal, containerSize); + CViewContainer::addView (hsb); + scsize.bottom = sbr.top; + } + if (style & kVerticalScrollbar) + { + CRect sbr (size); + sbr.offset (-size.left, -size.top); + sbr.left = sbr.right - scrollbarWidth; + if (style & kHorizontalScrollbar) + { + sbr.bottom -= (scrollbarWidth - 1); + } + vsb = new CScrollbar (sbr, this, kVSBTag, CScrollbar::kVertical, containerSize); + CViewContainer::addView (vsb); + scsize.right = sbr.left; + } + + sc = new CScrollContainer (scsize, this->containerSize, pParent); + CViewContainer::addView (sc); +} + +//----------------------------------------------------------------------------- +CScrollView::~CScrollView () +{ +} + +//----------------------------------------------------------------------------- +void CScrollView::setContainerSize (const CRect& cs) +{ + containerSize = cs; + if (sc) + { + sc->setContainerSize (cs); + } + if (vsb) + { + vsb->setScrollSize (cs); + valueChanged (NULL, vsb); + } + if (hsb) + { + hsb->setScrollSize (cs); + valueChanged (NULL, hsb); + } +} + +//----------------------------------------------------------------------------- +void CScrollView::addView (CView *pView) +{ + sc->addView (pView); +} + +//----------------------------------------------------------------------------- +void CScrollView::valueChanged (CDrawContext *pContext, CControl *pControl) +{ + if (sc) + { + float value = pControl->getValue (); + long tag = pControl->getTag (); + CPoint offset; + CRect vsize = sc->getViewSize (vsize); + CRect csize = sc->getContainerSize (); + sc->getScrollOffset (offset); + + switch (tag) + { + case kHSBTag: + { + offset.x = csize.left - (CCoord)((csize.width () - vsize.width ()) * value); + sc->setScrollOffset (offset, false); + break; + } + case kVSBTag: + { + offset.y = csize.top + (CCoord)((csize.height () - vsize.height ()) * value); + sc->setScrollOffset (offset, false); + break; + } + } + } +} + +//----------------------------------------------------------------------------- +void CScrollView::drawBackgroundRect (CDrawContext *pContext, CRect& _updateRect) +{ + CRect r (size); + r.offset (-r.left, -r.top); + pContext->setFrameColor (kBlackCColor); + pContext->setLineWidth (1); + pContext->drawRect (r); + CViewContainer::drawBackgroundRect (pContext, _updateRect); +} + +//----------------------------------------------------------------------------- +bool CScrollView::onWheel (CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance) +{ + bool result = CViewContainer::onWheel (pContext, where, axis, distance); + if (!result) + { + if (vsb && axis == kMouseWheelAxisY) + result = vsb->onWheel (pContext, where, distance); + else if (hsb && axis == kMouseWheelAxisX) + result = hsb->onWheel (pContext, where, distance); + } + return result; +} + +//----------------------------------------------------------------------------- +CScrollbar::CScrollbar (const CRect& size, CControlListener* listener, long tag, long style, const CRect& scrollSize) +: CControl (size, listener, tag, 0) +, style (style) +, scrollSize (scrollSize) +, scrollerArea (size) +, stepValue (0.1f) +, scrollerLength (0) +, drawer (0) +{ + setWheelInc (0.05f); + scrollerArea.inset (2, 2); + calculateScrollerLength (); + frameColor (0, 0, 0, 255); + scrollerColor (0, 0, 255, 255); + backgroundColor (255, 255, 255, 200); +} + +//----------------------------------------------------------------------------- +CScrollbar::~CScrollbar () +{ +} + +//----------------------------------------------------------------------------- +void CScrollbar::setScrollSize (const CRect& ssize) +{ + scrollSize = ssize; + calculateScrollerLength (); + setDirty (true); +} + +//----------------------------------------------------------------------------- +void CScrollbar::calculateScrollerLength () +{ + CCoord newScrollerLength = scrollerLength; + if (style == kHorizontal) + { + float factor = (float)size.width () / (float)scrollSize.width (); + if (factor >= 1.f) + factor = 0; + newScrollerLength = (CCoord)(size.width () * factor); + } + else + { + float factor = (float)size.height () / (float)scrollSize.height (); + if (factor >= 1.f) + factor = 0; + newScrollerLength = (CCoord)(size.height () * factor); + } + if (newScrollerLength != scrollerLength) + { + scrollerLength = newScrollerLength; + setDirty (true); + } +} + +//----------------------------------------------------------------------------- +CRect CScrollbar::getScrollerRect () +{ + CRect scrollerRect (scrollerArea); + CCoord l = (style == kHorizontal) ? scrollerArea.width () : scrollerArea.height (); + CCoord scrollerOffset = (CCoord)(value * (l - scrollerLength)); + if (style == kHorizontal) + { + scrollerRect.setWidth (scrollerLength); + scrollerRect.offset (scrollerOffset, 0); + } + else + { + scrollerRect.setHeight (scrollerLength); + scrollerRect.offset (0, scrollerOffset); + } + return scrollerRect; +} + +//----------------------------------------------------------------------------- +void CScrollbar::mouse (CDrawContext* pContext, CPoint& where, long buttons) +{ + if (buttons == -1) buttons = pContext->getMouseButtons (); + if (buttons != kLButton || scrollerLength == 0) return; + + float newValue = 0.f; + + // scrolling + CRect scrollerRect = getScrollerRect (); + if (where.isInside (scrollerRect)) + { + CPoint newPoint (where); + while (pContext->waitDrag ()) + { + getMouseLocation (pContext, newPoint); + newPoint.x -= where.x - scrollerRect.left; + newPoint.y -= where.y - scrollerRect.top; + if (style == kHorizontal) + { + newValue = (float)(newPoint.x - scrollerArea.left) / ((float)scrollerArea.width () - scrollerRect.width ()); + } + else + { + newValue = (float)(newPoint.y - scrollerArea.top) / ((float)scrollerArea.height () - scrollerRect.height ()); + } + if (newValue < 0.f) newValue = 0.f; + if (newValue > 1.f) newValue = 1.f; + if (newValue != value) + { + value = newValue; + if (listener) + listener->valueChanged (pContext, this); + } + doIdleStuff (); + } + } + // stepping + else if (where.isInside (scrollerArea)) + { + long kWaitTime = 100; + long nextUpdateTime = getFrame ()->getTicks (); + do + { + long ticks = getFrame ()->getTicks (); + if (nextUpdateTime - ticks < 0) + { + if (style == kHorizontal) + { + if (where.x < scrollerRect.left) + newValue = value - (float)scrollerLength / (float)scrollerArea.width (); + else + newValue = value + (float)scrollerLength / (float)scrollerArea.width (); + } + else + { + if (where.y < scrollerRect.top) + newValue = value - (float)scrollerLength / (float)scrollerArea.height (); + else + newValue = value + (float)scrollerLength / (float)scrollerArea.height (); + } + if (newValue < 0.f) newValue = 0.f; + if (newValue > 1.f) newValue = 1.f; + if (newValue != value) + { + value = newValue; + if (listener) + listener->valueChanged (pContext, this); + } + scrollerRect = getScrollerRect (); + if (where.isInside (scrollerRect)) + break; + nextUpdateTime = ticks + kWaitTime; + } + doIdleStuff (); + } while (pContext->getMouseButtons () == kLButton); + } +} + +//------------------------------------------------------------------------ +bool CScrollbar::onWheel (CDrawContext *pContext, const CPoint &where, float distance) +{ + if (!bMouseEnabled) + return false; + + if (style == kHorizontal) + distance *= -1; + + long buttons = pContext->getMouseButtons (); + if (buttons & kShift) + value -= 0.1f * distance * wheelInc; + else + value -= distance * wheelInc; + bounceValue (); + + if (isDirty () && listener) + listener->valueChanged (pContext, this); + return true; +} + +//----------------------------------------------------------------------------- +void CScrollbar::drawBackground (CDrawContext* pContext) +{ + CRect r (size); + if (drawer) + drawer->drawScrollbarBackground (pContext, r, style, this); + else + { + pContext->setLineWidth (1); + pContext->setFillColor (backgroundColor); + pContext->setFrameColor (frameColor); + pContext->drawRect (r, kDrawFilledAndStroked); + } +} + +//----------------------------------------------------------------------------- +void CScrollbar::drawScroller (CDrawContext* pContext, const CRect& size) +{ + CRect r (size); + if (drawer) + drawer->drawScrollbarScroller (pContext, r, style, this); + else + { + pContext->setLineWidth (1); + pContext->setFillColor (scrollerColor); + pContext->setFrameColor (frameColor); + pContext->drawRect (r, kDrawFilledAndStroked); + } +} + +//----------------------------------------------------------------------------- +void CScrollbar::draw (CDrawContext* pContext) +{ + drawBackground (pContext); + if (scrollerLength > 0) + { + CRect scrollerRect = getScrollerRect (); + drawScroller (pContext, scrollerRect); + } + setDirty (false); +} + diff --git a/vstgui.sf/vstgui/cscrollview.h b/vstgui.sf/vstgui/cscrollview.h new file mode 100644 index 0000000..f5f85cd --- /dev/null +++ b/vstgui.sf/vstgui/cscrollview.h @@ -0,0 +1,179 @@ +//----------------------------------------------------------------------------- +// VST Plug-Ins SDK +// VSTGUI: Graphical User Interface Framework for VST plugins : +// +// CScrollView written 2004 by Arne Scheffler +// +//----------------------------------------------------------------------------- +// VSTGUI LICENSE +// © 2003, Steinberg Media Technologies, All Rights Reserved +//----------------------------------------------------------------------------- +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// * Neither the name of the Steinberg Media Technologies nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +// OF THE POSSIBILITY OF SUCH DAMAGE. +//----------------------------------------------------------------------------- + +#ifndef __cscrollview__ +#define __cscrollview__ + +#ifndef __vstgui__ +#include "vstgui.h" +#endif + +BEGIN_NAMESPACE_VSTGUI + +class CScrollbar; +class CScrollContainer; + +//----------------------------------------------------------------------------- +class CScrollView : public CViewContainer, CControlListener +//! a scrollable view +//----------------------------------------------------------------------------- +{ +public: + CScrollView (const CRect &size, const CRect &containerSize, CFrame* pParent, long style, long scrollbarWidth = 16, CBitmap* pBackground = 0); + virtual ~CScrollView (); + + // style + enum { + kHorizontalScrollbar = 1 << 1, ///< add a horizontal scrollbar + kVerticalScrollbar = 1 << 2 ///< add a vertical scrollbar + }; + + virtual void setContainerSize (const CRect& cs); ///< set the virtual size of this container + virtual void addView (CView *pView); + virtual void drawBackgroundRect (CDrawContext *pContext, CRect& _updateRect); + virtual bool onWheel (CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance); + virtual void valueChanged (CDrawContext *pContext, CControl *pControl); + + virtual CScrollbar* getVerticalScrollbar () const { return vsb; } + virtual CScrollbar* getHorizontalScrollbar () const { return hsb; } + + CLASS_METHODS(CScrollView, CViewContainer) +//----------------------------------------------------------------------------- +protected: + CScrollContainer* sc; + CScrollbar* vsb; + CScrollbar* hsb; + + CRect containerSize; + long style; + +private: + enum { + kHSBTag, + kVSBTag, + }; +}; + +//----------------------------------------------------------------------------- +class CScrollContainer : public CViewContainer +//----------------------------------------------------------------------------- +{ +public: + CScrollContainer (const CRect &size, const CRect &containerSize, CFrame *pParent, CBitmap *pBackground = 0); + virtual ~CScrollContainer (); + + void setScrollOffset (CPoint offset, bool withRedraw = false); + void getScrollOffset (CPoint& off) const { off = offset; } + + CRect getContainerSize () const { return containerSize; } + void setContainerSize (const CRect& cs); + + virtual void redrawRect (CDrawContext* context, const CRect& rect); + virtual bool isDirty () const; + + CLASS_METHODS(CScrollContainer, CViewContainer) +//----------------------------------------------------------------------------- +protected: + CRect containerSize; + CPoint offset; +}; + +//----------------------------------------------------------------------------- +class IScrollbarDrawer +//----------------------------------------------------------------------------- +{ +public: + virtual void drawScrollbarBackground (CDrawContext* pContext, const CRect& size, long style, CScrollbar* bar) = 0; + virtual void drawScrollbarScroller (CDrawContext* pContext, const CRect& size, long style, CScrollbar* bar) = 0; +}; + +//----------------------------------------------------------------------------- +class CScrollbar : public CControl +//! a scrollbar control +//----------------------------------------------------------------------------- +{ +public: + CScrollbar (const CRect& size, CControlListener* listener, long tag, long style, const CRect& scrollSize); + virtual ~CScrollbar (); + + enum { + kHorizontal, + kVertical, + }; + + virtual void setDrawer (IScrollbarDrawer* d) { drawer = d; } + virtual void setScrollSize (const CRect& ssize); + virtual void setStep (float newStep) { stepValue = newStep; } + + CRect& getScrollSize (CRect& rect) const { rect = scrollSize; return rect; } + float getStep () const { return stepValue; } + + virtual void setFrameColor (const CColor& color) { frameColor = color; } + virtual void setScrollerColor (const CColor& color) { scrollerColor = color; } + virtual void setBackgroundColor (const CColor& color) { backgroundColor = color; } + + CColor getFrameColor () const { return frameColor; } + CColor getScrollerColor () const { return scrollerColor; } + CColor getBackgroundColor () const { return backgroundColor; } + + virtual void draw (CDrawContext* pContext); + virtual void mouse (CDrawContext* pContext, CPoint& where, long buttons = -1); + virtual bool onWheel (CDrawContext *pContext, const CPoint &where, float distance); + + CLASS_METHODS(CScrollbar, CControl) +//----------------------------------------------------------------------------- +protected: + void drawBackground (CDrawContext* pContext); + void drawScroller (CDrawContext* pContext, const CRect& size); + + void calculateScrollerLength (); + CRect getScrollerRect (); + + long style; + CRect scrollSize; + CRect scrollerArea; + + float stepValue; + CCoord scrollerLength; + + CColor frameColor; + CColor scrollerColor; + CColor backgroundColor; + + IScrollbarDrawer* drawer; +}; + +END_NAMESPACE_VSTGUI + +#endif diff --git a/vstgui.sf/vstgui/ctabview.cpp b/vstgui.sf/vstgui/ctabview.cpp new file mode 100644 index 0000000..805fbad --- /dev/null +++ b/vstgui.sf/vstgui/ctabview.cpp @@ -0,0 +1,404 @@ +//----------------------------------------------------------------------------- +// VST Plug-Ins SDK +// VSTGUI: Graphical User Interface Framework not only for VST plugins : +// +// CTabView written 2004 by Arne Scheffler +// +//----------------------------------------------------------------------------- +// VSTGUI LICENSE +// © 2004, Steinberg Media Technologies, All Rights Reserved +//----------------------------------------------------------------------------- +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// * Neither the name of the Steinberg Media Technologies nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +// OF THE POSSIBILITY OF SUCH DAMAGE. +//----------------------------------------------------------------------------- + +#ifndef __ctabview__ +#include "ctabview.h" +#endif + +BEGIN_NAMESPACE_VSTGUI + +#define kTabButtonTagStart 20000 + +//----------------------------------------------------------------------------- +class CTabButton : public COnOffButton +//----------------------------------------------------------------------------- +{ +public: + CTabButton (const CRect &size, CControlListener *listener, long tag, CBitmap *background, const char* inName) + : COnOffButton (size, listener, tag, background) + , name (0) + { + if (inName) + { + name = (char*)malloc (strlen (inName) + 1); + strcpy (name, inName); + } + activeTextColor = kBlackCColor; + inactiveTextColor (90, 90, 90, 255); + textFont = kSystemFont; + fontSize = 12; + } + + virtual ~CTabButton () + { + if (name) + free (name); + } + + virtual void draw (CDrawContext *pContext) + { + COnOffButton::draw (pContext); + if (name) + { + pContext->setFont (textFont, fontSize); + pContext->setFontColor (value ? activeTextColor : inactiveTextColor); + pContext->drawString (name, size, false); + } + } + + void mouse (CDrawContext *pContext, CPoint &where, long button) + { + if (!bMouseEnabled) + return; + + if (button == -1) button = pContext->getMouseButtons (); + if (!(button & kLButton)) + return; + + value = ((long)value) ? 0.f : 1.f; + + if (listener) + listener->valueChanged (pContext, this); + } + + virtual void onDragEnter (CDrawContext* context, CDragContainer* drag, const CPoint& where) + { + if (value == 0.f) + { + value = 1.f; + if (listener) + listener->valueChanged (context, this); + } + } + + void setTextFont (const CFont& font) { textFont = font; } + void setActiveTextColor (const CColor& color) { activeTextColor = color; } + void setInactiveTextColor (const CColor& color) { inactiveTextColor = color; } + void setTextSize (const long& textSize) { fontSize = textSize; } + + CLASS_METHODS (CTabButton, COnOffButton) +protected: + char* name; + CFont textFont; + CColor activeTextColor; + CColor inactiveTextColor; + long fontSize; +}; + +//----------------------------------------------------------------------------- +class CTabChildView : public CReferenceCounter +//----------------------------------------------------------------------------- +{ +public: + CTabChildView (CView* view) + : view (view) + , previous (0) + , next (0) + , button (0) + { + } + + virtual ~CTabChildView () + { + view->forget (); + } + + CView* view; + CTabChildView* previous; + CTabChildView* next; + CTabButton* button; +}; + +//----------------------------------------------------------------------------- +CTabView::CTabView (const CRect& size, CFrame* parent, CBitmap* tabBitmap, CBitmap* background, long tabPosition, long style) +: CViewContainer (size, parent, background) +, numberOfChilds (0) +, tabPosition (tabPosition) +, style (style) +, tabSize (CRect (0, 0, 0, 0)) +, tabBitmap (tabBitmap) +, firstChild (0) +, lastChild (0) +, currentChild (0) +{ + if (tabBitmap) + { + tabBitmap->remember (); + tabSize.right = tabBitmap->getWidth (); + tabSize.bottom = tabBitmap->getHeight (); + } + setMode (kOnlyDirtyUpdate); +} + +//----------------------------------------------------------------------------- +CTabView::CTabView (const CRect& size, CFrame* parent, const CRect& tabSize, CBitmap* background, long tabPosition, long style) +: CViewContainer (size, parent, background) +, numberOfChilds (0) +, tabPosition (tabPosition) +, style (style) +, tabSize (tabSize) +, tabBitmap (0) +, firstChild (0) +, lastChild (0) +, currentChild (0) +{ + setMode (kOnlyDirtyUpdate); +} + +//----------------------------------------------------------------------------- +CTabView::~CTabView () +{ + pParentFrame = 0; + removeAllTabs (); + if (tabBitmap) + tabBitmap->forget (); +} + +//----------------------------------------------------------------------------- +bool CTabView::addTab (CView* view, const char* name, CBitmap* tabBitmap) +{ + if (!view) + return false; + if (tabBitmap == 0) + tabBitmap = this->tabBitmap; + + CRect ts (0, 0, tabSize.getWidth (), tabSize.getHeight () / 2); + switch (tabPosition) + { + case kPositionTop: + ts.offset (tabSize.getWidth () * numberOfChilds, 0); break; + case kPositionBottom: + ts.offset (tabSize.getWidth () * numberOfChilds, size.getHeight () - tabSize.getHeight () / 2); break; + case kPositionLeft: + ts.offset (0, tabSize.getHeight () / 2 * numberOfChilds); break; + case kPositionRight: + ts.offset (size.getWidth () - tabSize.getWidth (), tabSize.getHeight () / 2 * numberOfChilds); break; + } + CTabButton* b = new CTabButton (ts, this, numberOfChilds + kTabButtonTagStart, tabBitmap, name); + b->setTransparency (true); + addView (b); + CTabChildView* v = new CTabChildView (view); + v->button = b; + if (lastChild) + { + lastChild->next = v; + v->previous = lastChild; + lastChild = v; + } + else + { + firstChild = lastChild = v; + setCurrentChild (v); + } + numberOfChilds++; + return true; +} + +//----------------------------------------------------------------------------- +bool CTabView::removeTab (CView* view) +{ + if (!view) + return false; + + CTabChildView* v = firstChild; + while (v) + { + if (v->view == view) + { + if (v->previous) + v->previous->next = v->next; + if (v->next) + v->next->previous = v->previous; + if (v == currentChild) + setCurrentChild (v->previous ? v->previous : v->next); + removeView (v->button, true); + v->forget (); + numberOfChilds--; + return true; + } + v = v->next; + } + return false; +} + +//----------------------------------------------------------------------------- +bool CTabView::removeAllTabs () +{ + setCurrentChild (0); + CTabChildView* v = lastChild; + while (v) + { + CTabChildView* next = v->previous; + removeTab (v->view); + v = next; + } + firstChild = 0; + lastChild = 0; + numberOfChilds = 0; + return true; +} + +//----------------------------------------------------------------------------- +bool CTabView::selectTab (long index) +{ + if (index > (long)numberOfChilds) + return false; + CTabChildView* v = firstChild; + long i = 0; + while (v) + { + if (index == i) + break; + v = v->next; + i++; + } + if (v) + { + setCurrentChild (v); + return true; + } + return false; +} + +//----------------------------------------------------------------------------- +void CTabView::setCurrentChild (CTabChildView* childView) +{ + if (childView == currentChild) + { + if (currentChild->button) + currentChild->button->setValue (1.f); + return; + } + if (currentChild) + { + if (currentChild->button) + currentChild->button->setValue (0.f); + removeView (currentChild->view, false); + } + currentChild = childView; + if (currentChild) + { + addView (currentChild->view); + if (currentChild->button) + currentChild->button->setValue (1.f); + } + setDirty (); +} + +//----------------------------------------------------------------------------- +void CTabView::valueChanged (CDrawContext *pContext, CControl *pControl) +{ + if (pControl->isTypeOf ("CTabButton")) + selectTab (pControl->getTag () - kTabButtonTagStart); +} + +//----------------------------------------------------------------------------- +CRect& CTabView::getTabViewSize (CRect& rect) const +{ + rect = size; + rect.offset (-size.left, -size.top); + switch (tabPosition) + { + case kPositionTop: + rect.top += tabSize.getHeight () / 2; break; + case kPositionBottom: + rect.bottom -= tabSize.getHeight () / 2; break; + case kPositionLeft: + rect.left += tabSize.getWidth (); break; + case kPositionRight: + rect.right -= tabSize.getWidth (); break; + } + return rect; +} + +//----------------------------------------------------------------------------- +void CTabView::setTabFontStyle (const CFont& font, long fontSize, CColor selectedColor, CColor deselectedColor) +{ + CTabChildView* v = firstChild; + while (v) + { + v->button->setTextFont (font); + v->button->setTextSize (fontSize); + v->button->setActiveTextColor (selectedColor); + v->button->setInactiveTextColor (deselectedColor); + v = v->next; + } +} + +//----------------------------------------------------------------------------- +void CTabView::alignTabs (long alignment) +{ + CCoord allTabsWidth; + CCoord viewWidth; + CCoord offset = 0; + CRect ts (0, 0, tabSize.getWidth (), tabSize.getHeight () / 2); + if (tabPosition == kPositionTop || tabPosition == kPositionBottom) + { + allTabsWidth = tabSize.getWidth () * numberOfChilds; + viewWidth = size.getWidth (); + } + else + { + allTabsWidth = (tabSize.getHeight () / 2) * numberOfChilds; + viewWidth = size.getHeight (); + } + if (alignment == kAlignCenter) + offset = (viewWidth - allTabsWidth) / 2; + else if (alignment == kAlignLeft) + offset = 0; + else if (alignment == kAlignRight) + offset = viewWidth - allTabsWidth; + if (tabPosition == kPositionTop) + ts.offset (offset, 0); + else if (tabPosition == kPositionBottom) + ts.offset (offset, size.getHeight () - tabSize.getHeight () / 2); + else if (tabPosition == kPositionLeft) + ts.offset (0, offset); + else if (tabPosition == kPositionRight) + ts.offset (size.getWidth () - tabSize.getWidth (), offset); + CTabChildView* v = firstChild; + while (v) + { + v->button->setViewSize (ts); + v->button->setMouseableArea (ts); + if (tabPosition == kPositionTop || tabPosition == kPositionBottom) + ts.offset (tabSize.getWidth (), 0); + else + ts.offset (0, tabSize.getHeight () / 2); + v = v->next; + } + setDirty (true); +} + +END_NAMESPACE_VSTGUI diff --git a/vstgui.sf/vstgui/ctabview.h b/vstgui.sf/vstgui/ctabview.h new file mode 100644 index 0000000..c7d4678 --- /dev/null +++ b/vstgui.sf/vstgui/ctabview.h @@ -0,0 +1,100 @@ +//----------------------------------------------------------------------------- +// VST Plug-Ins SDK +// VSTGUI: Graphical User Interface Framework not only for VST plugins : +// +// CTabView written 2004 by Arne Scheffler +// +//----------------------------------------------------------------------------- +// VSTGUI LICENSE +// © 2004, Steinberg Media Technologies, All Rights Reserved +//----------------------------------------------------------------------------- +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// * Neither the name of the Steinberg Media Technologies nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +// OF THE POSSIBILITY OF SUCH DAMAGE. +//----------------------------------------------------------------------------- + +#ifndef __ctabview__ +#define __ctabview__ + +#ifndef __vstcontrols__ +#include "vstcontrols.h" +#endif + +BEGIN_NAMESPACE_VSTGUI + +class CTabChildView; + +//----------------------------------------------------------------------------- +class CTabView : public CViewContainer, public CControlListener +//! a tab view +//----------------------------------------------------------------------------- +{ +public: + CTabView (const CRect& size, CFrame* parent, CBitmap* tabBitmap, CBitmap* background = 0, long tabPosition = kPositionTop, long style = 0); + CTabView (const CRect& size, CFrame* parent, const CRect& tabSize, CBitmap* background = 0, long tabPosition = kPositionTop, long style = 0); + virtual ~CTabView (); + + virtual bool addTab (CView* view, const char* name = 0, CBitmap* tabBitmap = 0); + virtual bool removeTab (CView* view); + virtual bool removeAllTabs (); + virtual bool selectTab (long index); + + virtual CRect& getTabViewSize (CRect& rect) const; + + virtual void setTabFontStyle (const CFont& font, long fontSize = 12, CColor selectedColor = kBlackCColor, CColor deselectedColor = kWhiteCColor); ///< call this after the tabs are added. Tabs added after this call will have the default font style. + + virtual void alignTabs (long alignment = kAlignCenter); ///< call this after you have added all tabs + + enum { + kPositionLeft = 0, + kPositionRight, + kPositionTop, + kPositionBottom, + }; + + enum { + kAlignCenter = 0, + kAlignLeft, + kAlignRight, + kAlignTop = kAlignLeft, + kAlignBottom = kAlignRight + }; + + virtual void valueChanged (CDrawContext *pContext, CControl *pControl); +//----------------------------------------------------------------------------- + CLASS_METHODS (CTabView, CViewContainer) +protected: + void setCurrentChild (CTabChildView* childView); + + unsigned long numberOfChilds; + long tabPosition; + long style; + CRect tabSize; + CBitmap* tabBitmap; + CTabChildView* firstChild; + CTabChildView* lastChild; + CTabChildView* currentChild; +}; + +END_NAMESPACE_VSTGUI + +#endif diff --git a/vstgui.sf/vstgui/plugguieditor.cpp b/vstgui.sf/vstgui/plugguieditor.cpp new file mode 100644 index 0000000..c1f1599 --- /dev/null +++ b/vstgui.sf/vstgui/plugguieditor.cpp @@ -0,0 +1,301 @@ +//----------------------------------------------------------------------------- +// VST Plug-Ins SDK +// VSTGUI: Graphical User Interface Framework for VST plugins +// +// Version 3.0 Date : 30/06/04 +// +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- +// VSTGUI LICENSE +// © 2004, Steinberg Media Technologies, All Rights Reserved +//----------------------------------------------------------------------------- +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// * Neither the name of the Steinberg Media Technologies nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +// OF THE POSSIBILITY OF SUCH DAMAGE. +//----------------------------------------------------------------------------- + +#ifndef __plugguieditor__ +#include "plugguieditor.h" +#endif + +#define kIdleRate 100 // host idle rate in ms +#define kIdleRate2 50 +#define kIdleRateMin 4 // minimum time between 2 idles in ms + +#if WINDOWS +static struct tagMSG windowsMessage; +#endif + +//----------------------------------------------------------------------------- +// PluginGUIEditor Implementation +//----------------------------------------------------------------------------- +/*! @class PluginGUIEditor +This is the same as the AEffGUIEditor class except that this one allows +the VSTGUI lib to build without VST dependencies. +*/ +PluginGUIEditor::PluginGUIEditor (void *pEffect) + : effect (pEffect), frame (0), inIdleStuff (false) +{ + systemWindow = 0; + lLastTicks = getTicks (); + + #if WINDOWS + OleInitialize (0); + #endif + #if MACX + void InitMachOLibrary (); + InitMachOLibrary (); + #endif +} + +//----------------------------------------------------------------------------- +PluginGUIEditor::~PluginGUIEditor () +{ + #if WINDOWS + OleUninitialize (); + #endif + #if MACX + void ExitMachOLibrary (); + ExitMachOLibrary (); + #endif +} + +//----------------------------------------------------------------------------- +void PluginGUIEditor::draw (ERect *ppErect) +{ + if (frame) + { + if (ppErect) + { + CRect r (ppErect->left, ppErect->top, ppErect->right, ppErect->bottom); + CDrawContext context (frame, NULL, systemWindow); + frame->drawRect (&context, r); + } + else + frame->draw (); + } +} + +//----------------------------------------------------------------------------- +bool PluginGUIEditor::open (void *ptr) +{ + systemWindow = ptr; + return true; +} + +//----------------------------------------------------------------------------- +void PluginGUIEditor::idle () +{ + if (frame) + frame->idle (); +} + +//----------------------------------------------------------------------------- +long PluginGUIEditor::knobMode = kCircularMode; + +//----------------------------------------------------------------------------- +long PluginGUIEditor::setKnobMode (int val) +{ + PluginGUIEditor::knobMode = val; + return 1; +} + +//----------------------------------------------------------------------------- +bool PluginGUIEditor::onWheel (float distance) +{ + if (frame) + { + CDrawContext context (frame, NULL, systemWindow); + CPoint where; + context.getMouseLocation (where); + return frame->onWheel (&context, where, distance); + } + + return false; +} + +//----------------------------------------------------------------------------- +void PluginGUIEditor::wait (unsigned long ms) +{ + #if MAC + unsigned long ticks; + Delay (ms * 60 / 1000, &ticks); + + #elif WINDOWS + Sleep (ms); + + #endif +} + +//----------------------------------------------------------------------------- +unsigned long PluginGUIEditor::getTicks () +{ + #if MAC + return (TickCount () * 1000) / 60; + + #elif WINDOWS + return (unsigned long)GetTickCount (); + + #endif + + return 0; +} + +//----------------------------------------------------------------------------- +void PluginGUIEditor::doIdleStuff () +{ + // get the current time + unsigned long currentTicks = getTicks (); + + // YG TEST idle (); + if (currentTicks < lLastTicks) + { + #if (MAC && TARGET_API_MAC_CARBON) + RunCurrentEventLoop (kEventDurationMillisecond * kIdleRateMin); + #else + wait (kIdleRateMin); + #endif + currentTicks += kIdleRateMin; + if (currentTicks < lLastTicks - kIdleRate2) + return; + } + idle (); // TEST + + #if WINDOWS + if (PeekMessage (&windowsMessage, NULL, WM_PAINT, WM_PAINT, PM_REMOVE)) + DispatchMessage (&windowsMessage); + + #elif MACX + EventRef event; + EventTypeSpec eventTypes[] = { {kEventClassWindow, kEventWindowUpdate}, {kEventClassWindow, kEventWindowDrawContent} }; + if (ReceiveNextEvent (GetEventTypeCount (eventTypes), eventTypes, kEventDurationNoWait, true, &event) == noErr) + { + SendEventToEventTarget (event, GetEventDispatcherTarget ()); + ReleaseEvent (event); + } + #endif + + // save the next time + lLastTicks = currentTicks + kIdleRate; +} + +//----------------------------------------------------------------------------- +long PluginGUIEditor::getRect (ERect **ppErect) +{ + *ppErect = ▭ + return true; +} + +#if MACX +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +extern "C" { +#include +#include +} +#include + +BEGIN_NAMESPACE_VSTGUI + +void* gBundleRef = 0; + +END_NAMESPACE_VSTGUI + +#if USE_NAMESPACE +#define VSTGUI_BUNDLEREF VSTGUI::gBundleRef +#else +#define VSTGUI_BUNDLEREF gBundleRef +#endif + +#if PLUGGUI_STANDALONE +void InitMachOLibrary () +{ + VSTGUI_BUNDLEREF = CFBundleGetMainBundle (); +} + +void ExitMachOLibrary () {} +#else +// ----------------------------------------------------------------------------- +static CFBundleRef _CFXBundleCreateFromImageName (CFAllocatorRef allocator, const char* image_name); +static CFBundleRef _CFXBundleCreateFromImageName (CFAllocatorRef allocator, const char* image_name) +{ + CFURLRef myBundleExecutableURL = CFURLCreateFromFileSystemRepresentation (allocator, (const unsigned char*)image_name, strlen (image_name), false); + if (myBundleExecutableURL == 0) + return 0; + + CFURLRef myBundleContentsMacOSURL = CFURLCreateCopyDeletingLastPathComponent (allocator, myBundleExecutableURL); // Delete Versions/Current/Executable + CFRelease (myBundleExecutableURL); + if (myBundleContentsMacOSURL == 0) + return 0; + + CFURLRef myBundleContentsURL = CFURLCreateCopyDeletingLastPathComponent (allocator, myBundleContentsMacOSURL); // Delete Current + CFRelease (myBundleContentsMacOSURL); + if (myBundleContentsURL == 0) + return 0; + + CFURLRef theBundleURL = CFURLCreateCopyDeletingLastPathComponent (allocator, myBundleContentsURL); // Delete Versions + CFRelease (myBundleContentsURL); + if (theBundleURL == 0) + return 0; + + CFBundleRef result = CFBundleCreate (allocator, theBundleURL); + CFRelease (theBundleURL); + + return result; +} + +// ----------------------------------------------------------------------------- +void InitMachOLibrary (); +void InitMachOLibrary () +{ + const mach_header* header = &_mh_bundle_header; + if (header == 0) + return; + + const char* imagename = 0; + /* determine the image name, TODO: ther have to be a better way */ + int cnt = _dyld_image_count(); + for (int idx1 = 1; idx1 < cnt; idx1++) + { + if (_dyld_get_image_header(idx1) == header) + { + imagename = _dyld_get_image_name(idx1); + break; + } + } + if (imagename == 0) + return; + /* get the bundle of a header, TODO: ther have to be a better way */ + VSTGUI_BUNDLEREF = _CFXBundleCreateFromImageName (NULL, imagename); +} + +// ----------------------------------------------------------------------------- +void ExitMachOLibrary (); +void ExitMachOLibrary () +{ + if (VSTGUI_BUNDLEREF) + CFRelease (VSTGUI_BUNDLEREF); +} + +#endif +#endif diff --git a/vstgui.sf/vstgui/plugguieditor.h b/vstgui.sf/vstgui/plugguieditor.h new file mode 100644 index 0000000..11c27ab --- /dev/null +++ b/vstgui.sf/vstgui/plugguieditor.h @@ -0,0 +1,122 @@ +//----------------------------------------------------------------------------- +// VST Plug-Ins SDK +// VSTGUI: Graphical User Interface Framework for VST plugins +// +// Version 3.0 Date : 30/06/04 +// +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- +// VSTGUI LICENSE +// © 2004, Steinberg Media Technologies, All Rights Reserved +//----------------------------------------------------------------------------- +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// * Neither the name of the Steinberg Media Technologies nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +// OF THE POSSIBILITY OF SUCH DAMAGE. +//----------------------------------------------------------------------------- + +#ifndef __plugguieditor__ +#define __plugguieditor__ + +#ifndef __vstgui__ +#include "vstgui.h" +#endif + +//---------------------------------------------------------------------- +struct ERect +{ + short top; + short left; + short bottom; + short right; +}; + +//----------------------------------------------------------------------------- +// AEffGUIEditor Declaration +//----------------------------------------------------------------------------- +class PluginGUIEditor +{ +public : + + PluginGUIEditor (void *pEffect); + + virtual ~PluginGUIEditor (); + + virtual void setParameter (long index, float value) {} + virtual long getRect (ERect **ppRect); + virtual bool open (void *ptr); + virtual void close () { systemWindow = 0; } + virtual void idle (); + virtual void draw (ERect *pRect); + + // wait (in ms) + void wait (unsigned long ms); + + // get the current time (in ms) + unsigned long getTicks (); + + // feedback to appli. + virtual void doIdleStuff (); + + // get the effect attached to this editor + void *getEffect () { return effect; } + + // get version of this VSTGUI + long getVstGuiVersion () { return (VSTGUI_VERSION_MAJOR << 16) + VSTGUI_VERSION_MINOR; } + + // set/get the knob mode + virtual long setKnobMode (int val); + static long getKnobMode () { return knobMode; } + + virtual bool onWheel (float distance); + + // get the CFrame object + #if USE_NAMESPACE + VSTGUI::CFrame *getFrame () { return frame; } + #else + CFrame *getFrame () { return frame; } + #endif + + virtual void beginEdit (long index) {} + virtual void endEdit (long index) {} + +//--------------------------------------- +protected: + ERect rect; + + #if USE_NAMESPACE + VSTGUI::CFrame *frame; + #else + CFrame *frame; + #endif + + void* effect; + void* systemWindow; + +private: + unsigned long lLastTicks; + bool inIdleStuff; + + static long knobMode; +}; + +#endif diff --git a/vstgui.sf/vstgui/vstcontrols.cpp b/vstgui.sf/vstgui/vstcontrols.cpp new file mode 100644 index 0000000..ba164d9 --- /dev/null +++ b/vstgui.sf/vstgui/vstcontrols.cpp @@ -0,0 +1,5516 @@ +//----------------------------------------------------------------------------- +// VST Plug-Ins SDK +// VSTGUI: Graphical User Interface Framework for VST plugins : +// Standard Control Objects +// +// Version 3.0 $Date: 2006/02/09 10:18:20 $ +// +// Added new objects : Michael Schmidt 08.97 +// Added new objects : Yvan Grabit 01.98 +// Added BeOS version : Georges-Edouard Berenger 05.99 +// Added MacOSX version : Arne Scheffler 02.03 +// +//----------------------------------------------------------------------------- +// VSTGUI LICENSE +// © 2004, Steinberg Media Technologies, All Rights Reserved +//----------------------------------------------------------------------------- +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// * Neither the name of the Steinberg Media Technologies nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +// OF THE POSSIBILITY OF SUCH DAMAGE. +//----------------------------------------------------------------------------- + +#include +#include +#include +#include + +#ifndef __vstcontrols__ +#include "vstcontrols.h" +#endif + +#include "vstkeycode.h" + +#if (__MACH__ && __MWERKS__) + #ifndef cosf + #define cosf (float)cos + #endif + + #ifndef sinf + #define sinf (float)sin + #endif +#endif + +BEGIN_NAMESPACE_VSTGUI + +// some external variables (vstgui.cpp) +extern long gStandardFontSize []; +extern const char *gStandardFontName []; + +//------------------------------------------------------------------------ +// CControl +//------------------------------------------------------------------------ +/*! @class CControl +This object manages the tag identification and the value of a control object. + +Note: +Since version 2.1, when an object uses the transparency for its background and draws on it (tranparency area) +or the transparency area changes during different draws (CMovieBitmap ,...), the background will be false (not updated), +you have to rewrite the draw function in order to redraw the background and then call the draw of the object. +*/ +CControl::CControl (const CRect &size, CControlListener *listener, long tag, + CBitmap *pBackground) +: CView (size), + listener (listener), tag (tag), oldValue (1), defaultValue (0.5f), + value (0), vmin (0), vmax (1.f), wheelInc (0.1f), lastTicks (-1) +{ + #if WINDOWS + delta = GetDoubleClickTime (); + #elif MAC + delta = GetDblTime (); + #else + delta = 500; + #endif + + if (delta < 250) + delta = 250; + + setTransparency (false); + setMouseEnabled (true); + backOffset (0 ,0); + + setBackground (pBackground); +} + +//------------------------------------------------------------------------ +CControl::~CControl () +{ +} + +//------------------------------------------------------------------------ +void CControl::beginEdit () +{ + // begin of edit parameter + getFrame ()->setFocusView(this); + getFrame ()->beginEdit (tag); +} + +//------------------------------------------------------------------------ +void CControl::endEdit () +{ + // end of edit parameter + getFrame ()->endEdit (tag); +} + +//------------------------------------------------------------------------ +bool CControl::isDirty () const +{ + if (oldValue != value || CView::isDirty ()) + return true; + return false; +} + +//------------------------------------------------------------------------ +void CControl::setDirty (const bool val) +{ + CView::setDirty (val); + if (val) + { + if (value != -1.f) + oldValue = -1.f; + else + oldValue = 0.f; + } + else + oldValue = value; +} + +//------------------------------------------------------------------------ +void CControl::setBackOffset (CPoint &offset) +{ + backOffset = offset; +} + +//----------------------------------------------------------------------------- +void CControl::copyBackOffset () +{ + backOffset (size.left, size.top); +} + +//------------------------------------------------------------------------ +void CControl::bounceValue () +{ + if (value > vmax) + value = vmax; + else if (value < vmin) + value = vmin; +} + +//----------------------------------------------------------------------------- +bool CControl::checkDefaultValue (CDrawContext *pContext, long button) +{ + if (button == (kControl|kLButton)) + { + // begin of edit parameter + beginEdit (); + + value = getDefaultValue (); + if (isDirty () && listener) + listener->valueChanged (pContext, this); + + // end of edit parameter + endEdit (); + return true; + } + return false; +} + +//----------------------------------------------------------------------------- +bool CControl::isDoubleClick () +{ + long ticks = getFrame ()->getTicks (); + if (lastTicks <= 0) + { + lastTicks = ticks; + return false; + } + + if (lastTicks + delta > ticks) + lastTicks = 0; + else + { + lastTicks = ticks; + return false; + } + return true; +} + +//------------------------------------------------------------------------ +// COnOffButton +//------------------------------------------------------------------------ +/*! @class COnOffButton +Define a button with 2 positions. +The pixmap includes the 2 subpixmaps (i.e the rectangle used for the display of this button is half-height of the pixmap). +When its value changes, the listener is called. +*/ +COnOffButton::COnOffButton (const CRect &size, CControlListener *listener, long tag, + CBitmap *background, long style) +: CControl (size, listener, tag, background) +, style (style) +{} + +//------------------------------------------------------------------------ +COnOffButton::~COnOffButton () +{} + +//------------------------------------------------------------------------ +void COnOffButton::draw (CDrawContext *pContext) +{ + CCoord off; + + if (value && pBackground) + off = pBackground->getHeight () / 2; + else + off = 0; + + if (pBackground) + { + if (bTransparencyEnabled) + pBackground->drawTransparent (pContext, size, CPoint (0, off)); + else + pBackground->draw (pContext, size, CPoint (0, off)); + } + setDirty (false); +} + +//------------------------------------------------------------------------ +void COnOffButton::mouse (CDrawContext *pContext, CPoint &where, long button) +{ + if (!bMouseEnabled) + return; + + if (button == -1) button = pContext->getMouseButtons (); + if (!(button & kLButton)) + return; + + if (listener && button & (kAlt | kShift | kControl | kApple)) + { + if (listener->controlModifierClicked (pContext, this, button) != 0) + return; + } + value = ((long)value) ? 0.f : 1.f; + + if (listener && style == kPostListenerUpdate) + { + // begin of edit parameter + beginEdit (); + + listener->valueChanged (pContext, this); + + // end of edit parameter + endEdit (); + } + + doIdleStuff (); + + if (listener && style == kPreListenerUpdate) + { + // begin of edit parameter + beginEdit (); + + listener->valueChanged (pContext, this); + + // end of edit parameter + endEdit (); + } +} + + +//------------------------------------------------------------------------ +// CKnob +//------------------------------------------------------------------------ +/*! @class CKnob +Define a knob with a given background and foreground handle. +The handle describes a circle over the background (between -45deg and +225deg). +By clicking Alt+Left Mouse the default value is used. +By clicking Alt+Left Mouse the value changes with a vertical move (version 2.1) +*/ +CKnob::CKnob (const CRect &size, CControlListener *listener, long tag, + CBitmap *background, CBitmap *handle, const CPoint &offset) +: CControl (size, listener, tag, background), offset (offset), pHandle (handle) +{ + if (pHandle) + { + pHandle->remember (); + inset = (long)((float)pHandle->getWidth () / 2.f + 2.5f); + } + else + inset = 3; + + colorShadowHandle = kGreyCColor; + colorHandle = kWhiteCColor; + radius = (float)(size.right - size.left) / 2.f; + + rangeAngle = 1.f; + setStartAngle ((float)(5.f * kPI / 4.f)); + setRangeAngle ((float)(-3.f * kPI / 2.f)); + zoomFactor = 1.5f; + + setWantsFocus (true); +} + +//------------------------------------------------------------------------ +CKnob::~CKnob () +{ + if (pHandle) + pHandle->forget (); +} + +//------------------------------------------------------------------------ +void CKnob::draw (CDrawContext *pContext) +{ + if (pBackground) + { + if (bTransparencyEnabled) + pBackground->drawTransparent (pContext, size, offset); + else + pBackground->draw (pContext, size, offset); + } + drawHandle (pContext); + setDirty (false); +} + +//------------------------------------------------------------------------ +void CKnob::drawHandle (CDrawContext *pContext) +{ + CPoint where; + valueToPoint (where); + + if (pHandle) + { + long width = (long)pHandle->getWidth (); + long height = (long)pHandle->getHeight (); + where.offset (size.left - width / 2, size.top - height / 2); + + CRect handleSize (0, 0, width, height); + handleSize.offset (where.h, where.v); + pHandle->drawTransparent (pContext, handleSize); + } + else + { + CPoint origin (size.width () / 2, size.height () / 2); + + where.offset (size.left - 1, size.top); + origin.offset (size.left - 1, size.top); + pContext->setFrameColor (colorShadowHandle); + pContext->moveTo (where); + pContext->lineTo (origin); + + where.offset (1, -1); + origin.offset (1, -1); + pContext->setFrameColor (colorHandle); + pContext->moveTo (where); + pContext->lineTo (origin); + } +} + +//------------------------------------------------------------------------ +void CKnob::mouse (CDrawContext *pContext, CPoint &where, long button) +{ + if (!bMouseEnabled) + return; + + if (button == -1) button = pContext->getMouseButtons (); + if (!(button & kLButton)) + return; + + if (listener && button & (kAlt | kShift | kControl | kApple)) + { + if (listener->controlModifierClicked (pContext, this, button) != 0) + return; + } + + // check if default value wanted + if (checkDefaultValue (pContext, button)) + return; + + float old = oldValue; + CPoint firstPoint; + bool modeLinear = false; + float fEntryState = value; + float middle = (vmax - vmin) * 0.5f; + float range = 200.f; + float coef = (vmax - vmin) / range; + long oldButton = button; + + long mode = kCircularMode; + long newMode = getFrame ()->getKnobMode (); + if (kLinearMode == newMode) + { + if (!(button & kAlt)) + mode = newMode; + } + else if (button & kAlt) + mode = kLinearMode; + + if (mode == kLinearMode && (button & kLButton)) + { + if (button & kShift) + range *= zoomFactor; + firstPoint = where; + modeLinear = true; + coef = (vmax - vmin) / range; + } + else + { + CPoint where2 (where); + where2.offset (-size.left, -size.top); + old = valueFromPoint (where2); + } + + CPoint oldWhere (-1, -1); + + // begin of edit parameter + beginEdit (); + do + { + button = pContext->getMouseButtons (); + if (where != oldWhere) + { + oldWhere = where; + if (modeLinear) + { + CCoord diff = (firstPoint.v - where.v) + (where.h - firstPoint.h); + if (button != oldButton) + { + range = 200.f; + if (button & kShift) + range *= zoomFactor; + + float coef2 = (vmax - vmin) / range; + fEntryState += diff * (coef - coef2); + coef = coef2; + oldButton = button; + } + value = fEntryState + diff * coef; + bounceValue (); + } + else + { + where.offset (-size.left, -size.top); + value = valueFromPoint (where); + if (old - value > middle) + value = vmax; + else if (value - old > middle) + value = vmin; + else + old = value; + } + if (isDirty () && listener) + listener->valueChanged (pContext, this); + } + getMouseLocation (pContext, where); + doIdleStuff (); + + } while (button & kLButton); + + // end of edit parameter + endEdit (); +} + +//------------------------------------------------------------------------ +bool CKnob::onWheel (CDrawContext *pContext, const CPoint &where, float distance) +{ + if (!bMouseEnabled) + return false; + + long buttons = pContext->getMouseButtons (); + if (buttons & kShift) + value += 0.1f * distance * wheelInc; + else + value += distance * wheelInc; + bounceValue (); + + if (isDirty () && listener) + { + // begin of edit parameter + beginEdit (); + + listener->valueChanged (pContext, this); + + // end of edit parameter + endEdit (); + } + return true; +} + +//------------------------------------------------------------------------ +long CKnob::onKeyDown (VstKeyCode& keyCode) +{ + switch (keyCode.virt) + { + case VKEY_UP : + case VKEY_RIGHT : + case VKEY_DOWN : + case VKEY_LEFT : + { + float distance = 1.f; + if (keyCode.virt == VKEY_DOWN || keyCode.virt == VKEY_LEFT) + distance = -distance; + + if (keyCode.modifier & MODIFIER_SHIFT) + value += 0.1f * distance * wheelInc; + else + value += distance * wheelInc; + bounceValue (); + + if (isDirty () && listener) + { + // begin of edit parameter + beginEdit (); + + listener->valueChanged (0, this); + + // end of edit parameter + endEdit (); + } + } return 1; + } + return -1; +} + +//------------------------------------------------------------------------ +void CKnob::setStartAngle (float val) +{ + startAngle = val; + compute (); +} + +//------------------------------------------------------------------------ +void CKnob::setRangeAngle (float val) +{ + rangeAngle = val; + compute (); +} + +//------------------------------------------------------------------------ +void CKnob::compute () +{ + aCoef = (vmax - vmin) / rangeAngle; + bCoef = vmin - aCoef * startAngle; + halfAngle = ((float)k2PI - fabsf (rangeAngle)) * 0.5f; + setDirty (); +} + +//------------------------------------------------------------------------ +void CKnob::valueToPoint (CPoint &point) const +{ + float alpha = (value - bCoef) / aCoef; + point.h = (long)(radius + cosf (alpha) * (radius - inset) + 0.5f); + point.v = (long)(radius - sinf (alpha) * (radius - inset) + 0.5f); +} + +//------------------------------------------------------------------------ +float CKnob::valueFromPoint (CPoint &point) const +{ + float v; + float alpha = (float)atan2 (radius - point.v, point.h - radius); + if (alpha < 0.f) + alpha += (float)k2PI; + + float alpha2 = alpha - startAngle; + if (rangeAngle < 0) + { + alpha2 -= rangeAngle; + float alpha3 = alpha2; + if (alpha3 < 0.f) + alpha3 += (float)k2PI; + else if (alpha3 > k2PI) + alpha3 -= (float)k2PI; + if (alpha3 > halfAngle - rangeAngle) + v = vmax; + else if (alpha3 > -rangeAngle) + v = vmin; + else + { + if (alpha2 > halfAngle - rangeAngle) + alpha2 -= (float)k2PI; + else if (alpha2 < -halfAngle) + alpha2 += (float)k2PI; + v = aCoef * alpha2 + vmax; + } + } + else + { + float alpha3 = alpha2; + if (alpha3 < 0.f) + alpha3 += (float)k2PI; + else if (alpha3 > k2PI) + alpha3 -= (float)k2PI; + if (alpha3 > rangeAngle + halfAngle) + v = vmin; + else if (alpha3 > rangeAngle) + v = vmax; + else + { + if (alpha2 > rangeAngle + halfAngle) + alpha2 -= (float)k2PI; + else if (alpha2 < -halfAngle) + alpha2 += (float)k2PI; + v = aCoef * alpha2 + vmin; + } + } + + return v; +} + +//------------------------------------------------------------------------ +void CKnob::setColorShadowHandle (CColor color) +{ + colorShadowHandle = color; + setDirty (); +} + +//------------------------------------------------------------------------ +void CKnob::setColorHandle (CColor color) +{ + colorHandle = color; + setDirty (); +} + +//------------------------------------------------------------------------ +void CKnob::setHandleBitmap (CBitmap *bitmap) +{ + if (pHandle) + { + pHandle->forget (); + pHandle = 0; + } + + if (bitmap) + { + pHandle = bitmap; + pHandle->remember (); + inset = (long)((float)pHandle->getWidth () / 2.f + 2.5f); + } +} + + +//------------------------------------------------------------------------ +// CParamDisplay +//------------------------------------------------------------------------ +/*! @class CParamDisplay +Define a rectangle view where a text-value can be displayed with a given font and color. +The user can specify its convert function (from float to char) by default the string format is "%2.2f". +The text-value is centered in the given rect. +*/ +CParamDisplay::CParamDisplay (const CRect &size, CBitmap *background, const long style) +: CControl (size, 0, 0, background), stringConvert (0), stringConvert2 (0), string2FloatConvert (0), + horiTxtAlign (kCenterText), style (style), bTextTransparencyEnabled (true) +{ + backOffset (0, 0); + + fontID = kNormalFont; + txtFace = kNormalFace; + fontColor = kWhiteCColor; + backColor = kBlackCColor; + frameColor = kBlackCColor; + shadowColor = kRedCColor; + userData = 0; + if (style & kNoDrawStyle) + setDirty (false); +} + +//------------------------------------------------------------------------ +CParamDisplay::~CParamDisplay () +{} + +//------------------------------------------------------------------------ +void CParamDisplay::setStyle (long val) +{ + if (style != val) + { + style = val; + setDirty (); + } +} + +//------------------------------------------------------------------------ +void CParamDisplay::draw (CDrawContext *pContext) +{ + char string[256]; + string[0] = 0; + + if (stringConvert2) + stringConvert2 (value, string, userData); + else if (stringConvert) + stringConvert (value, string); + else + sprintf (string, "%2.2f", value); + + drawText (pContext, string); +} + +//------------------------------------------------------------------------ +void CParamDisplay::drawText (CDrawContext *pContext, char *string, CBitmap *newBack) +{ + setDirty (false); + + if (style & kNoDrawStyle) + return; + + // draw the background + if (newBack) + { + if (bTransparencyEnabled) + newBack->drawTransparent (pContext, size, backOffset); + else + newBack->draw (pContext, size, backOffset); + } + else if (pBackground) + { + if (bTransparencyEnabled) + pBackground->drawTransparent (pContext, size, backOffset); + else + pBackground->draw (pContext, size, backOffset); + } + else + { + if (!bTransparencyEnabled) + { + pContext->setFillColor (backColor); + pContext->fillRect (size); + + if (!(style & (k3DIn|k3DOut|kNoFrame))) + { + pContext->setFrameColor (frameColor); + pContext->drawRect (size); + } + } + } + // draw the frame for the 3D effect + if (style & (k3DIn|k3DOut)) + { + CRect r (size); + r.right--; r.top++; + r.bottom--; + pContext->setLineWidth (1); + if (style & k3DIn) + pContext->setFrameColor (backColor); + else + pContext->setFrameColor (frameColor); + CPoint p; + pContext->moveTo (p (r.left, r.bottom)); + pContext->lineTo (p (r.left, r.top)); + pContext->lineTo (p (r.right, r.top)); + + if (style & k3DIn) + pContext->setFrameColor (frameColor); + else + pContext->setFrameColor (backColor); + pContext->moveTo (p (r.right, r.top)); + pContext->lineTo (p (r.right, r.bottom)); + pContext->lineTo (p (r.left, r.bottom)); + } + + if (!(style & kNoTextStyle) && string) + { + CRect oldClip; + pContext->getClipRect (oldClip); + CRect newClip (size); + newClip.bound (oldClip); + pContext->setClipRect (newClip); + pContext->setFont (fontID, 0, txtFace); + + // draw darker text (as shadow) + if (style & kShadowText) + { + CRect newSize (size); + newSize.offset (1, 1); + pContext->setFontColor (shadowColor); + pContext->drawString (string, newSize, !bTextTransparencyEnabled, horiTxtAlign); + } + pContext->setFontColor (fontColor); + pContext->drawString (string, size, !bTextTransparencyEnabled, horiTxtAlign); + pContext->setClipRect (oldClip); + } +} + +//------------------------------------------------------------------------ +void CParamDisplay::setFont (CFont fontID) +{ + // to force the redraw + if (this->fontID != fontID) + setDirty (); + this->fontID = fontID; +} + +//------------------------------------------------------------------------ +void CParamDisplay::setTxtFace (CTxtFace txtFace) +{ + // to force the redraw + if (this->txtFace != txtFace) + setDirty (); + this->txtFace = txtFace; +} + +//------------------------------------------------------------------------ +void CParamDisplay::setFontColor (CColor color) +{ + // to force the redraw + if (fontColor != color) + setDirty (); + fontColor = color; +} + +//------------------------------------------------------------------------ +void CParamDisplay::setBackColor (CColor color) +{ + // to force the redraw + if (backColor != color) + setDirty (); + backColor = color; +} + +//------------------------------------------------------------------------ +void CParamDisplay::setFrameColor (CColor color) +{ + // to force the redraw + if (frameColor != color) + setDirty (); + frameColor = color; +} + +//------------------------------------------------------------------------ +void CParamDisplay::setShadowColor (CColor color) +{ + // to force the redraw + if (shadowColor != color) + setDirty (); + shadowColor = color; +} + +//------------------------------------------------------------------------ +void CParamDisplay::setHoriAlign (CHoriTxtAlign hAlign) +{ + // to force the redraw + if (horiTxtAlign != hAlign) + setDirty (); + horiTxtAlign = hAlign; +} + +//------------------------------------------------------------------------ +void CParamDisplay::setStringConvert (void (*convert) (float value, char *string)) +{ + stringConvert = convert; +} + +//------------------------------------------------------------------------ +void CParamDisplay::setStringConvert (void (*convert) (float value, char *string, + void *userDta), void *userData) +{ + stringConvert2 = convert; + this->userData = userData; +} + +//------------------------------------------------------------------------ +void CParamDisplay::setString2FloatConvert (void (*convert) (char *string, float &output)) +{ + string2FloatConvert = convert; +} + +//------------------------------------------------------------------------ +// CTextLabel +//------------------------------------------------------------------------ +/*! @class CTextLabel +*/ +CTextLabel::CTextLabel (const CRect& size, const char* txt, CBitmap* background, const long style) +: CParamDisplay (size, background, style) +, text (0) +{ + setText (txt); +} + +//------------------------------------------------------------------------ +CTextLabel::~CTextLabel () +{ + freeText (); +} + +//------------------------------------------------------------------------ +void CTextLabel::freeText () +{ + if (text) + free (text); + text = 0; +} + +//------------------------------------------------------------------------ +void CTextLabel::setText (const char* txt) +{ + freeText (); + if (txt) + { + text = (char*)malloc (strlen (txt)+1); + strcpy (text, txt); + } +} + +//------------------------------------------------------------------------ +const char* CTextLabel::getText () const +{ + return text; +} + +//------------------------------------------------------------------------ +void CTextLabel::draw (CDrawContext *pContext) +{ + drawText (pContext, text); + setDirty (false); +} + + +//------------------------------------------------------------------------ +// CTextEdit +//------------------------------------------------------------------------ +/*! @class CTextEdit +Define a rectangle view where a text-value can be displayed and edited with a given font and color. +The user can specify its convert function (from char to char). The text-value is centered in the given rect. +A pixmap can be used as background. +*/ +CTextEdit::CTextEdit (const CRect &size, CControlListener *listener, long tag, + const char *txt, CBitmap *background, const long style) +: CParamDisplay (size, background, style), platformFontColor (0), platformControl (0), + platformFont (0), editConvert (0), editConvert2 (0) +{ +#if (MAC && !MACX) + text_edit = 0; +#endif + this->listener = listener; + this->tag = tag; + + if (txt) + strcpy (text, txt); + else + strcpy (text, ""); +#if MAC + // remember our VST plugin's resource map ID (it should be the current one at this moment) + pluginResID = CurResFile(); +#endif +#if QUARTZ + textControl = 0; +#endif + setWantsFocus (true); +} + +//------------------------------------------------------------------------ +CTextEdit::~CTextEdit () +{} + +//------------------------------------------------------------------------ +void CTextEdit::setText (char *txt) +{ + if (txt) + { + if (strcmp (text, txt)) + { + strcpy (text, txt); + + // to force the redraw + setDirty (); + } + } + else + { + if (strcmp (text, "")) + { + strcpy (text, ""); + + // to force the redraw + setDirty (); + } + } +} + +//------------------------------------------------------------------------ +void CTextEdit::getText (char *txt) const +{ + if (txt) + strcpy (txt, text); +} + +//------------------------------------------------------------------------ +void CTextEdit::draw (CDrawContext *pContext) +{ + if (platformControl) + { + #if MACX + #if QUARTZ + if (textControl) + { + HIViewSetNeedsDisplay (textControl, true); + } + else + #endif + TXNDraw ((TXNObject)platformControl, NULL); + #endif + setDirty (false); + return; + } + + char string[256]; + string[0] = 0; + + if (editConvert2) + editConvert2 (text, string, userData); + else if (editConvert) + editConvert (text, string); + // Allow to display strings through the stringConvert + // callbacks inherited from CParamDisplay + else if (stringConvert2) + { + string[0] = 0; + stringConvert2 (value, string, userData); + strcpy(text, string); + } + else if (stringConvert) + { + string[0] = 0; + stringConvert (value, string); + strcpy(text, string); + } + else + sprintf (string, "%s", text); + + drawText (pContext, string); + setDirty (false); +} + +//------------------------------------------------------------------------ +void CTextEdit::mouse (CDrawContext *pContext, CPoint &where, long button) +{ + if (!bMouseEnabled) + return; + + if (button == -1) button = pContext->getMouseButtons (); + + if (listener && button & (kAlt | kShift | kControl | kApple)) + { + if (listener->controlModifierClicked (pContext, this, button) != 0) + return; + } + + if (button & kLButton) + { + if (getFrame ()->getFocusView () != this) + { + if (style & kDoubleClickStyle) + if (!isDoubleClick ()) + return; + + beginEdit(); + takeFocus (pContext); + } + } +} + +//------------------------------------------------------------------------ +#if WINDOWS +#define WIN32_LEAN_AND_MEAN 1 +#include + +END_NAMESPACE_VSTGUI + +#if PLUGGUI + extern HINSTANCE ghInst; + inline HINSTANCE GetInstance () { return ghInst; } +#else + extern void* hInstance; + inline HINSTANCE GetInstance () { return (HINSTANCE)hInstance; } +#endif + +BEGIN_NAMESPACE_VSTGUI + +extern long standardFontSize []; +extern const char *standardFontName []; + +#ifdef STRICT +#define WINDOWSPROC WNDPROC +#else +#define WINDOWSPROC FARPROC +#endif + +static WINDOWSPROC oldWndProcEdit; +LONG_PTR WINAPI WindowProcEdit (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); +LONG_PTR WINAPI WindowProcEdit (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + switch (message) + { + case WM_GETDLGCODE : + { + long flags = DLGC_WANTALLKEYS; + return flags; + } + + case WM_KEYDOWN: + { + if (wParam == VK_RETURN) + { + CTextEdit *textEdit = (CTextEdit*) GetWindowLongPtr (hwnd, GWLP_USERDATA); + if (textEdit) + { + textEdit->bWasReturnPressed = true; + textEdit->looseFocus (); + } + } + } break; + + case WM_KILLFOCUS: + { + CTextEdit *textEdit = (CTextEdit*) GetWindowLongPtr (hwnd, GWLP_USERDATA); + if (textEdit) + textEdit->looseFocus (); + } break; + } + + return CallWindowProc (oldWndProcEdit, hwnd, message, wParam, lParam); +} + +//------------------------------------------------------------------------ +#elif MOTIF +#include +extern XFontStruct *gFontStructs[]; +#endif + +//------------------------------------------------------------------------ +#if BEOS +#include +#include + +class BeTextView : public BTextView +{ +public: + BeTextView (CTextEdit* cTextEdit, BRect frame, + const char *name, BRect textRect); + void MakeFocus (bool focusState = true); + void KeyDown (const char *bytes, int32 numBytes); +private: + CTextEdit *cTextEdit; +}; + +//------------------------------------------------------------------------ +BeTextView::BeTextView (CTextEdit* cTextEdit, BRect frame, const char *name, BRect textRect) +: BTextView (frame, name, textRect, B_FOLLOW_NONE), cTextEdit (cTextEdit) +{} + +//------------------------------------------------------------------------ +void BeTextView::MakeFocus (bool focusState) +{ + BTextView::MakeFocus (focusState); + if (!focusState && cTextEdit) + cTextEdit->looseFocus (); +} + +//------------------------------------------------------------------------ +void BeTextView::KeyDown (const char *bytes, int32 numBytes) +{ + if (cTextEdit && (bytes[0] == B_RETURN || bytes[0] == B_TAB)) + cTextEdit->looseFocus (); + else + BTextView::KeyDown (bytes, numBytes); +} +#endif + +#if MACX +static EventHandlerRef gTextEditEventHandler = 0; +static bool gTextEditCanceled = false; +pascal OSStatus CarbonEventsTextControlProc (EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void *inUserData); +pascal OSStatus CarbonEventsTextControlProc (EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void *inUserData) +{ + OSStatus result = eventNotHandledErr; + UInt32 eventClass = GetEventClass (inEvent); + UInt32 eventKind = GetEventKind (inEvent); + CTextEdit* textEdit = (CTextEdit*)inUserData; + + switch (eventClass) + { + case kEventClassKeyboard: + { + switch (eventKind) + { + case kEventRawKeyDown: + case kEventRawKeyRepeat: + { + char macCharCode; + UInt32 keyCode; + UInt32 modifiers; + GetEventParameter (inEvent, kEventParamKeyMacCharCodes, typeChar, NULL, sizeof (char), NULL, &macCharCode); + GetEventParameter (inEvent, kEventParamKeyCode, typeUInt32, NULL, sizeof (UInt32), NULL, &keyCode); + GetEventParameter (inEvent, kEventParamKeyModifiers, typeUInt32, NULL, sizeof (UInt32), NULL, &modifiers); + if (macCharCode == 13 || macCharCode == 3 || macCharCode == 27) + { + if (macCharCode == 27) + gTextEditCanceled = true; + else + textEdit->bWasReturnPressed = true; + + WindowRef window = (WindowRef) (textEdit->getFrame ()->getSystemWindow()); + GrafPtr savedPort; + bool portChanged = window ? QDSwapPort (GetWindowPort (window), &savedPort) : false; + + // remember the current resource map ID + short currentResID = CurResFile(); + short vstResFileID = textEdit->pluginResID; + // if it's different (and if it's valid), set the current resource map ID to our plugin's resource map + if ( (vstResFileID != currentResID) && (vstResFileID > 0) ) + UseResFile(vstResFileID); + + textEdit->looseFocus (); + + // revert the window port, if we changed it + if (portChanged) + QDSwapPort (savedPort, NULL); + // revert the current resource map, if we changed it + if ( (currentResID > 0) && (vstResFileID != currentResID) && (vstResFileID > 0) ) + UseResFile(currentResID); + + result = noErr; + } + #if QUARTZ + else if (textEdit->textControl) + break; + #endif + else if (modifiers & cmdKey) + { + result = noErr; + TXNObject text_edit = (TXNObject) (textEdit->platformControl); + switch (toupper(macCharCode)) + { + // copy + case 'C': + if (!TXNIsSelectionEmpty(text_edit)) + { + OSStatus scrapErr = ClearCurrentScrap(); + scrapErr = TXNCopy(text_edit); + result = noErr; + } + break; + // cut + case 'X': + if (!TXNIsSelectionEmpty(text_edit)) + { + OSStatus scrapErr = ClearCurrentScrap(); + scrapErr = TXNCut(text_edit); + result = noErr; + } + break; + // paste + case 'V': + TXNPaste(text_edit); + result = noErr; + break; + + // select all + case 'A': + TXNSelectAll(text_edit); + break; + + default: + break; + } + } + else + { + EventRecord eventRecord; + if (ConvertEventRefToEventRecord (inEvent, &eventRecord)) + TXNKeyDown ((TXNObject)textEdit->platformControl, &eventRecord); + result = noErr; + } + break; + } + } + break; + } + case kEventClassMouse: + { + switch (eventKind) + { + case kEventMouseDown: + case kEventMouseUp: + { + WindowRef window; + GetEventParameter (inEvent, kEventParamWindowRef, typeWindowRef, NULL, sizeof (WindowRef), NULL, &window); + HIPoint p; + GetEventParameter (inEvent, kEventParamMouseLocation, typeHIPoint, NULL, sizeof (HIPoint), NULL, &p); + Point point = {(short)p.y, (short)p.x}; + QDGlobalToLocalPoint (GetWindowPort (window), &point); + Rect rect; + TXNGetViewRect ((TXNObject)textEdit->platformControl, &rect); + if (PtInRect (point, &rect)) + { + EventRecord eventRecord; + if (eventKind == kEventMouseDown && ConvertEventRefToEventRecord (inEvent, &eventRecord)) + TXNClick ((TXNObject)textEdit->platformControl, &eventRecord); + result = noErr; + } + break; + } + case kEventMouseMoved: + { + TXNAdjustCursor ((TXNObject)textEdit->platformControl, NULL); + break; + } + } + break; + } + case kEventClassWindow: + { + WindowRef window; + if (GetEventParameter (inEvent, kEventParamDirectObject, typeWindowRef, NULL, sizeof (WindowRef), NULL, &window) != noErr) + break; + switch (eventKind) + { + case kEventWindowDeactivated: + { + result = CallNextEventHandler (inHandlerCallRef, inEvent); + ClearKeyboardFocus (window); + + // set up the correct drawing port for the window + GrafPtr savedPort; + bool portChanged = QDSwapPort (GetWindowPort (window), &savedPort); + + // remember the current resource map ID + short currentResID = CurResFile(); + short vstResFileID = textEdit->pluginResID; + // if it's different (and if it's valid), set the current resource map ID to our plugin's resource map + if ( (vstResFileID != currentResID) && (vstResFileID > 0) ) + UseResFile(vstResFileID); + + textEdit->looseFocus (); + + // revert the window port, if we changed it + if (portChanged) + QDSwapPort (savedPort, NULL); + // revert the current resource map, if we changed it + if ( (currentResID > 0) && (vstResFileID != currentResID) && (vstResFileID > 0) ) + UseResFile(currentResID); + + break; + } + } + break; + } + } + return result; +} +#endif + +#if MAC && CALL_NOT_IN_CARBON +#include +#include +#define ClearCurrentScrap ZeroScrap +#endif + +//------------------------------------------------------------------------ +void CTextEdit::takeFocus (CDrawContext *pContext) +{ + bWasReturnPressed = false; + +#if WINDOWS || MACX + // calculate offset for CViewContainers + CRect rect (size); + CView* parent = getParentView (); + CRect vSize; + while (parent) + { + if (parent->notify (this, kMsgCheckIfViewContainer) == kMessageNotified) + { + parent->getViewSize (vSize); + rect.offset (vSize.left, vSize.top); + } + parent = parent->getParentView (); + } + if (pContext) + rect.offset (pContext->offset.h, pContext->offset.v); +#endif + +#if WINDOWS + int wstyle = 0; + if (horiTxtAlign == kLeftText) + wstyle |= ES_LEFT; + else if (horiTxtAlign == kRightText) + wstyle |= ES_RIGHT; + else + wstyle |= ES_CENTER; + + wstyle |= WS_CHILD | WS_VISIBLE | ES_AUTOHSCROLL; + platformControl = (void*)CreateWindow ( + "EDIT", text, wstyle, + rect.left, rect.top, rect.width ()/* + 1*/, rect.height ()/* + 1*/, + (HWND)getFrame ()->getSystemWindow (), NULL, GetInstance (), 0); + + // get/set the current font + LOGFONT logfont = {0}; + + long fontH = gStandardFontSize [fontID]; + if (fontH > rect.height () - 2) + fontH = rect.height () - 2; + + logfont.lfWeight = FW_NORMAL; + logfont.lfHeight = -fontH; + logfont.lfPitchAndFamily = VARIABLE_PITCH | FF_SWISS; + strcpy (logfont.lfFaceName, gStandardFontName[fontID]); + + logfont.lfClipPrecision = CLIP_STROKE_PRECIS; + logfont.lfOutPrecision = OUT_STRING_PRECIS; + logfont.lfQuality = DEFAULT_QUALITY; + logfont.lfCharSet = ANSI_CHARSET; + + platformFont = (HANDLE)CreateFontIndirect (&logfont); + platformFontColor = 0; + + SetWindowLongPtr ((HWND)platformControl, GWLP_USERDATA, (LONG_PTR)this); + SendMessage ((HWND)platformControl, WM_SETFONT, (WPARAM)platformFont, true); + SendMessage ((HWND)platformControl, EM_SETMARGINS, EC_LEFTMARGIN|EC_RIGHTMARGIN, MAKELONG (0, 0)); + SendMessage ((HWND)platformControl, EM_SETSEL, 0, -1); + SendMessage ((HWND)platformControl, EM_LIMITTEXT, 255, 0); + SetFocus ((HWND)platformControl); + + oldWndProcEdit = (WINDOWSPROC)SetWindowLongPtr ((HWND)platformControl, GWLP_WNDPROC, (LONG_PTR)WindowProcEdit); + +#elif MAC +#if MACX + WindowRef window = (WindowRef)getFrame ()->getSystemWindow (); + #if QUARTZ + WindowAttributes winAttributes; + GetWindowAttributes (window, &winAttributes); + if (winAttributes & kWindowCompositingAttribute) + { + Rect r; + r.left = (short)rect.left;// + 2; + r.right = (short)rect.right;// - 4; + r.top = (short)rect.top;// + 2; + r.bottom = (short)rect.bottom;// - 4; + if (rect.getHeight () > gStandardFontSize [fontID]) + { + r.top = (short)(rect.top + rect.getHeight () / 2 - gStandardFontSize [fontID] / 2 + 1); + r.bottom = (short)(r.top + gStandardFontSize [fontID]); + } + if (CreateEditUnicodeTextControl (NULL, &r, NULL, false, NULL, &textControl) == noErr) + { + HIViewAddSubview ((HIViewRef)getFrame ()->getPlatformControl (), textControl); + HIViewSetFirstSubViewFocus ((HIViewRef)getFrame ()->getPlatformControl (), textControl); + HIViewAdvanceFocus ((HIViewRef)getFrame ()->getPlatformControl (), 0); + EventTypeSpec eventTypes[] = { { kEventClassWindow, kEventWindowDeactivated }, { kEventClassKeyboard, kEventRawKeyDown }, { kEventClassKeyboard, kEventRawKeyRepeat } }; + InstallControlEventHandler (textControl, CarbonEventsTextControlProc, GetEventTypeCount (eventTypes), eventTypes, this, &gTextEditEventHandler); + platformControl = textControl; + if (strlen (text) > 0) + { + CFStringRef textString = CFStringCreateWithCString (NULL, text, kCFStringEncodingUTF8); + if (textString) + { + SetControlData (textControl, kControlEditTextPart, kControlEditTextCFStringTag, sizeof (CFStringRef), &textString); + CFRelease (textString); + } + ControlEditTextSelectionRec selection; + selection.selStart = 0; + selection.selEnd = strlen (text); + SetControlData (textControl, kControlEditTextPart, kControlEditTextSelectionTag, sizeof (ControlEditTextSelectionRec), &selection); + } + Boolean singleLineStyle = true; + SetControlData (textControl, kControlEditTextPart, kControlEditTextSingleLineTag, sizeof (Boolean), &singleLineStyle); + ControlFontStyleRec fontStyle; + memset (&fontStyle, 0, sizeof (fontStyle)); + fontStyle.flags = kControlUseJustMask | kControlUseSizeMask | kControlUseFontMask; + switch (horiTxtAlign) + { + case kLeftText: fontStyle.just = teFlushLeft; break; + case kRightText: fontStyle.just = teFlushRight; break; + default: fontStyle.just = teCenter; break; + } + fontStyle.size = gStandardFontSize [fontID]; + extern const char* gMacXfontNames[]; + Str255 fontName; + CopyCStringToPascal ((const char*)gMacXfontNames[fontID], fontName); + GetFNum (fontName, &fontStyle.font); + SetControlData (textControl, kControlEditTextPart, kControlFontStyleTag, sizeof (fontStyle), &fontStyle); + HIViewSetVisible (textControl, true); + } + return; + } + if (pContext) + rect.offset (pContext->offsetScreen.h, pContext->offsetScreen.v); + #endif + static bool gTXNInititalized = false; + if (!gTXNInititalized) + { + TXNMacOSPreferredFontDescription defaults; // fontID, pointSize, encoding, and fontStyle + defaults.fontID = 0; + defaults.pointSize = kTXNDefaultFontSize; + defaults.encoding = CreateTextEncoding(kTextEncodingMacRoman, kTextEncodingDefaultVariant, kTextEncodingDefaultFormat); + defaults.fontStyle = kTXNDefaultFontStyle; + TXNInitOptions options = 0; + TXNInitTextension(&defaults, 1, options); + gTXNInititalized = true; + } + gTextEditCanceled = false; + TXNFrameOptions iFrameOptions = kTXNMonostyledTextMask | kTXNDisableDragAndDropMask | kTXNSingleLineOnlyMask; //kTXNNoKeyboardSyncMask | kTXNDisableDragAndDropMask | kTXNSingleLineOnlyMask | kTXNMonostyledTextMask; + TXNFrameID frameID = 0; + TXNObjectRefcon iRefCon = 0; + TXNObject object; + Rect r; + r.left = (short)rect.left; + r.right = (short)rect.right; + r.top = (short)rect.top; + r.bottom = (short)rect.bottom; + OSStatus err; + err = TXNNewObject (NULL, window, &r, iFrameOptions, kTXNTextEditStyleFrameType, kTXNSingleStylePerTextDocumentResType, kTXNMacOSEncoding, &object, &frameID, iRefCon); + if (err == noErr) + { + platformControl = object; + TXNSetFrameBounds ((TXNObject)platformControl, r.top, r.left, r.bottom, r.right, frameID); + + if (strlen (text) > 0) + TXNSetData ((TXNObject)platformControl, kTXNTextData, (void*)text, strlen (text), kTXNStartOffset, kTXNEndOffset); + // set background + extern void CColor2RGBColor (const CColor &cc, RGBColor &rgb); + RGBColor rgbBackColor = { 0, 0, 0}; + CColor2RGBColor (kWhiteCColor /*backColor*/, rgbBackColor); + RGBColor rgbTextColor = { 32767, 32767, 32767 }; + CColor2RGBColor (kBlackCColor /*fontColor*/, rgbTextColor); + RGBBackColor (&rgbBackColor); + RGBForeColor (&rgbTextColor); + TXNBackground txnBackground; + txnBackground.bgType = kTXNBackgroundTypeRGB; + txnBackground.bg.color = rgbBackColor; + TXNSetBackground ((TXNObject)platformControl, &txnBackground); + // set justification + TXNControlTag controlTag[1]; + TXNControlData controlData[1]; + SInt32 just; + switch (horiTxtAlign) + { + case kLeftText : just = kTXNFlushLeft; break; + case kRightText : just = kTXNFlushRight; break; + default : just = kTXNCenter; break; + } + controlTag[0] = kTXNJustificationTag; + controlData[0].sValue = just; + TXNSetTXNObjectControls ((TXNObject)platformControl, false, 1, controlTag, controlData); + // set font + TXNTypeAttributes attributes[3]; + // font name + extern const unsigned char* gMacXfontNames[]; + + short familyID; + #if QUARTZ + Str255 fontName; + CopyCStringToPascal ((const char*)gMacXfontNames[fontID], fontName); + GetFNum (fontName, &familyID); + #else + GetFNum (gMacXfontNames[fontID], &familyID); + #endif + + ATSUFontID fontNameID; + + ATSUFONDtoFontID (familyID, 0, &fontNameID); + + attributes[0].tag = kATSUFontTag; + attributes[0].size = sizeof(ATSUFontID); + attributes[0].data.dataPtr = &fontNameID; + // size + long fontSize = gStandardFontSize [fontID] << 16; // needs to be in Fixed format + attributes[1].tag = kTXNQDFontSizeAttribute; + attributes[1].size = kTXNFontSizeAttributeSize; + attributes[1].data.dataValue = fontSize; + // color + attributes[2].tag = kTXNQDFontColorAttribute; + attributes[2].size = kTXNQDFontColorAttributeSize; + attributes[2].data.dataPtr = &rgbTextColor; + + TXNSetTypeAttributes ((TXNObject)platformControl, 3, attributes, kTXNStartOffset, kTXNEndOffset); + + SetUserFocusWindow (window); + AdvanceKeyboardFocus (window); + TXNActivate ((TXNObject)platformControl, frameID, false); + TXNFocus ((TXNObject)platformControl, true); + EventTypeSpec eventTypes[] = { { kEventClassMouse, kEventMouseMoved }, { kEventClassMouse, kEventMouseDown }, { kEventClassMouse, kEventMouseUp }, { kEventClassWindow, kEventWindowDeactivated }, { kEventClassKeyboard, kEventRawKeyDown }, { kEventClassKeyboard, kEventRawKeyRepeat } }; + InstallWindowEventHandler (window, CarbonEventsTextControlProc, GetEventTypeCount (eventTypes), eventTypes, this, &gTextEditEventHandler); + TXNSelectAll ((TXNObject)platformControl); + + } + +#else + bool ende = false; + char c; + EventRecord theEvent; + Rect rect, vrect; + + platformControl = new char[256]; + + rect.left = size.left; + rect.right = size.right; + rect.top = size.top; + rect.bottom = size.bottom; + #if !TARGET_API_MAC_CARBON + rect.bottom++; + rect.right++; + #endif + + if (pContext) + { + rect.left += pContext->offset.h; + rect.right += pContext->offset.h; + rect.top += pContext->offset.v; + rect.bottom += pContext->offset.v; + } + vrect = rect; + + vrect.top++; + vrect.left++; + vrect.right--; + #if TARGET_API_MAC_CARBON + vrect.bottom--; + #endif + + RGBColor blackrgb = {0, 0, 0}; + RGBColor whitergb = {0xffff, 0xffff, 0xffff}; + RGBForeColor (&blackrgb); + RGBBackColor (&whitergb); + + EraseRect (&rect); + //FrameRect (&rect); // Dave + #if !TARGET_API_MAC_CARBON + InsetRect (&vrect, 0, -2); + #endif + + TextFont (kFontIDHelvetica); + TextSize (gStandardFontSize [fontID]); + + text_edit = TENew (&rect, &vrect); + + if (horiTxtAlign == kLeftText) + TESetAlignment (teJustLeft, (TEHandle)text_edit); + else if (horiTxtAlign == kRightText) + TESetAlignment (teJustRight, (TEHandle)text_edit); + else + TESetAlignment (teJustCenter, (TEHandle)text_edit); + + char string[256]; + strcpy (string, text); + TESetText (string, strlen (string), (TEHandle)text_edit); + TESetSelect (0, strlen (string), (TEHandle)text_edit); + TEUpdate (&(**(TEHandle)text_edit).viewRect, (TEHandle)text_edit); + TEActivate ((TEHandle)text_edit); + HLock ((Handle)text_edit); + + (**(TEHandle)text_edit).crOnly = -1; + + bLoosefocusWanted = false; + + while (!ende && !bLoosefocusWanted) + { + GetNextEvent (everyEvent, &theEvent); + switch (theEvent.what) + { + case nullEvent: + doIdleStuff (); + break; + case autoKey : + case keyDown : + RGBForeColor (&blackrgb); + RGBBackColor (&whitergb); + + c = theEvent.message & charCodeMask; + if (c == 13 || c == 3 || c == 27) + { + if (c == 13) + bWasReturnPressed = true; + ende = true; + } + else if (((theEvent.message >> 8) & 0xFF) == 0x75) + { + if ((**(TEHandle)text_edit).selEnd < (**(TEHandle)text_edit).teLength) + { + if (((**(TEHandle)text_edit).selEnd - (**(TEHandle)text_edit).selStart) > 1) + TEDelete ((TEHandle)text_edit); + else + TEKey (0x1D, (TEHandle)text_edit); + c = 8; + } + else + c = -1; + } + if (theEvent.modifiers & cmdKey) + { + switch (toupper(c)) + { + // copy + case 'C': + if ((**(TEHandle)text_edit).selEnd > (**(TEHandle)text_edit).selStart) + { + OSStatus scrapErr = ClearCurrentScrap(); + TECopy((TEHandle)text_edit); + if (scrapErr == noErr) + scrapErr = TEToScrap(); + } + break; + // cut + case 'X': + if ((**(TEHandle)text_edit).selEnd > (**(TEHandle)text_edit).selStart) + { + OSStatus scrapErr = ClearCurrentScrap(); + TECut((TEHandle)text_edit); + if (scrapErr == noErr) + scrapErr = TEToScrap(); + } + break; + // paste + case 'V': + { + OSErr scrapErr = TEFromScrap(); + TEPaste((TEHandle)text_edit); + } + break; + // select all + case 'A': + TESetSelect(0, (**(TEHandle)text_edit).teLength, (TEHandle)text_edit); + break; + default: + break; + } + } + else if (!ende) + TEKey (c, (TEHandle)text_edit); + break; + case mouseDown : + GlobalToLocal (&theEvent.where); + if (PtInRect (theEvent.where, &rect)) + { + bool shiftdown = (theEvent.modifiers & shiftKey) != 0; + TEClick (theEvent.where, shiftdown, (TEHandle)text_edit); + } + else + ende = true; + break; + } + } + CharsHandle h = TEGetText ((TEHandle)text_edit); + short length = (**(TEHandle)text_edit).teLength; + if (length > 255) + length = 255; + strncpy ((char*)platformControl, (char*)*h, length); + ((char*)platformControl)[length] = 0; + + HUnlock ((Handle)text_edit); + TEDeactivate ((TEHandle)text_edit); + TEDispose ((TEHandle)text_edit); + text_edit = 0; + looseFocus (); + +#endif +#elif MOTIF + // we have to add the Text to the parent !! + Dimension posX, posY; + Widget widget = (Widget)(getFrame ()->getSystemWindow ()); + XtVaGetValues (widget, XmNx, &posX, XmNy, &posY, 0); + + Arg args[20]; + int n = 0; + XtSetArg (args[n], XmNx, size.left + posX); n++; + XtSetArg (args[n], XmNy, size.top + posY); n++; + XtSetArg (args[n], XmNwidth, size.width () + 1); n++; + XtSetArg (args[n], XmNheight, size.height () + 2); n++; + + XtSetArg (args[n], XmNvalue, text); n++; + + XtSetArg (args[n], XmNshadowType, XmSHADOW_IN); n++; + XtSetArg (args[n], XmNshadowThickness, 0); n++; + XtSetArg (args[n], XmNcursorPositionVisible, true); n++; + + XtSetArg (args[n], XmNmarginWidth, 0); n++; + XtSetArg (args[n], XmNmarginHeight, 0); n++; + XtSetArg (args[n], XmNresizeHeight, True); n++; + XtSetArg (args[n], XmNborderWidth, 0); n++; + XtSetArg (args[n], XmNeditMode, XmSINGLE_LINE_EDIT); n++; + + // get/set the current font + XmFontList fl = 0; + XFontStruct* fs = fontStructs[fontID]; + if (fs) + { + XmFontListEntry entry = XmFontListEntryCreate (XmFONTLIST_DEFAULT_TAG, XmFONT_IS_FONT, fs); + XmFontList fl = XmFontListAppendEntry (0, entry); + XtSetArg (args[n], XmNfontList, fl); n++; + } + + platformControl = XmCreateText (XtParent (widget), "Text", args, n); + XtManageChild ((Widget)platformControl); + if (fl) + XmFontListFree (fl); + XmTextSetSelection ((Widget)platformControl, 0, strlen (text), 0); + XmTextSetHighlight ((Widget)platformControl, 0, strlen (text), XmHIGHLIGHT_SELECTED); + +#elif BEOS + BView* plugView = (BView*) getFrame ()->getSystemWindow (); + CRect rect; + getFrame ()->getSize (&rect); + BRect r (rect.left + size.left, rect.top + size.top, rect.left + size.right, rect.top + size.bottom); + BRect tr = r; + tr.OffsetTo (B_ORIGIN); + tr.InsetBy (1, 1); + BeTextView* textView = new BeTextView (this, r, NULL, tr); + plugView->Window ()->Activate (true); + plugView->AddChild (textView); + BFont font; + if (fontID < 0 || fontID >= kNumStandardFonts) + fontID = kSystemFont; + extern const char* gStandardFontStyle[]; + font.SetFamilyAndStyle (gStandardFontName[fontID], gStandardFontStyle[fontID]); + font.SetSize (gStandardFontSize[fontID]); + rgb_color c = { fontColor.red, fontColor.green, fontColor.blue, 255 }; + textView->SetFontAndColor (&font, B_FONT_FAMILY_AND_STYLE | B_FONT_SIZE, &c); + rgb_color cv = { backColor.red, backColor.green, backColor.blue, 255 }; + textView->SetMaxBytes (255); + textView->SetViewColor (cv); + alignment a; + if (horiTxtAlign == kRightText) + a = B_ALIGN_RIGHT; + else if (horiTxtAlign == kLeftText) + a = B_ALIGN_LEFT; + else + a = B_ALIGN_CENTER; + textView->SetAlignment (a); + textView->SetText (text); + textView->DisallowChar ('\n'); + textView->DisallowChar ('\t'); + textView->MakeResizable (true); + textView->MakeFocus (true); + textView->SelectAll (); + platformControl = textView; +#endif +} + +//------------------------------------------------------------------------ +void CTextEdit::looseFocus (CDrawContext *pContext) +{ + // Call this yet to avoid recursive call + endEdit(); + if (getFrame ()->getFocusView () == this) + getFrame ()->setFocusView (0); + + if (platformControl == 0) + return; + + char oldText[256]; + strcpy (oldText, text); + +#if WINDOWS + char newText[255]; + GetWindowText ((HWND)platformControl, newText, 255); + strcpy (text, newText); + + DestroyWindow ((HWND)platformControl); + if (platformFont) + { + DeleteObject ((HGDIOBJ)platformFont); + platformFont = 0; + } + if (platformFontColor) + { + DeleteObject (platformFontColor); + platformFontColor = 0; + } + +#elif MAC + + #if MACX + if (platformControl == 0) + return; + + if (gTextEditEventHandler) + RemoveEventHandler (gTextEditEventHandler); + gTextEditEventHandler = 0; + #if QUARTZ + if (textControl) + { + CFStringRef cfstr; + if (!gTextEditCanceled && GetControlData (textControl, kControlEditTextPart, kControlEditTextCFStringTag, sizeof cfstr, (void*)&cfstr, NULL) == noErr) + { + CFStringGetCString (cfstr, text, 255, kCFStringEncodingUTF8); + CFRelease (cfstr); + } + HIViewSetVisible (textControl, false); + HIViewRemoveFromSuperview (textControl); + textControl = 0; + pParentFrame->setCursor (kCursorDefault); + } + else + #endif + { + if (!gTextEditCanceled) + { + CharsHandle dataHandle; + TXNGetDataEncoded ((TXNObject)platformControl, kTXNStartOffset, kTXNEndOffset, &dataHandle, kTXNTextData); + if (dataHandle != NULL && GetHandleSize (dataHandle) > 0) + { + long s = GetHandleSize (dataHandle); + strncpy (text, *dataHandle, (s > 255) ? 255 : s); + text [(s > 255) ? 255 : s] = 0; + DisposeHandle (dataHandle); + } + else + text[0] = 0; + } + TXNFocus ((TXNObject)platformControl, false); + TXNDeleteObject ((TXNObject)platformControl); + } + + platformControl = 0; + + setDirty (true); + + #if 0//QUARTZ + CRect fr (size); + CPoint offset; + localToFrame (offset); + fr.offset (offset.x, offset.y); + + RgnHandle rgn = NewRgn (); + MacSetRectRgn (rgn, fr.left, fr.top, fr.right, fr.bottom); + HIViewSetNeedsDisplayInRegion ((HIViewRef)getFrame ()->getPlatformControl () , rgn, true); + DisposeRgn (rgn); + #endif +// doIdleStuff (); + + #else + + strcpy (text, (char*)platformControl); + delete[] platformControl; + #endif +#elif MOTIF + char *pNewText = XmTextGetString ((Widget)platformControl); + strcpy (text, pNewText); + XtFree (pNewText); + + XtUnmanageChild ((Widget)platformControl); + XtDestroyWidget ((Widget)platformControl); + +#elif BEOS + BTextView* textView = (BTextView*) platformControl; + strncpy (text, textView->Text (), 255); + if (textView->LockLooper ()) + { + BWindow* w = textView->Window (); + textView->RemoveSelf (); + w->Unlock (); + } + delete textView; + +#endif + CPoint origOffset; + bool resetContextOffset = false; + if (!pContext) + { + // create a local context + pContext = getFrame ()->createDrawContext (); + if (getParentView ()) + { + resetContextOffset = true; + origOffset.x = pContext->offset.x; + origOffset.y = pContext->offset.y; + CView *view= getParentView (); + CRect rect2; + view->getViewSize (rect2); + CPoint offset; + view->localToFrame (offset); + rect2.offset (offset.x, offset.y); + pContext->offset.h = rect2.left; + pContext->offset.v = rect2.top; + } + } + else + pContext->remember (); + + // update dependency + bool change = false; + if (strcmp (oldText, text)) + { + change = true; + if (listener) + listener->valueChanged (pContext, this); + } + + platformControl = 0; + if (resetContextOffset) + { + pContext->offset.x = origOffset.x; + pContext->offset.y = origOffset.y; + } + pContext->forget (); + + if (change) + doIdleStuff (); + + CView* receiver = pParentView ? pParentView : pParentFrame; + if (receiver) + receiver->notify (this, "LooseFocus"); +} + +//------------------------------------------------------------------------ +void CTextEdit::setTextEditConvert (void (*convert) (char *input, char *string)) +{ + editConvert = convert; +} + +//------------------------------------------------------------------------ +void CTextEdit::setTextEditConvert (void (*convert) (char *input, char *string, + void *userDta), void *userData) +{ + editConvert2 = convert; + this->userData = userData; +} + +//------------------------------------------------------------------------ +// COptionMenuScheme +//------------------------------------------------------------------------ +/*! @class COptionMenuScheme +Used to define the appearance (font color, background color...) of a popup-menu. +To define the scheme of a menu, use the appropriate setScheme method (see COptionMenu). +@section coptionmenuscheme_new_in_3_0 New since 3.0 +You can also use the global variable gOptionMenuScheme to use one scheme on all menus. +@section coptionmenuscheme_note Note +If you want to use it on Mac OS X, you must set the macro MAC_ENABLE_MENU_SCHEME (needs Mac OS X 10.3 or higher) +*/ +COptionMenuScheme* gOptionMenuScheme = 0; + +//------------------------------------------------------------------------ +COptionMenuScheme::COptionMenuScheme () +{ +#if WINDOWS + COLORREF c = GetSysColor (COLOR_MENU); + backgroundColor (GetRValue (c), GetGValue (c), GetBValue (c), 0); + c = GetSysColor (COLOR_HIGHLIGHT); + selectionColor (GetRValue (c), GetGValue (c), GetBValue (c), 0); + c = GetSysColor (COLOR_MENUTEXT); + textColor (GetRValue (c), GetGValue (c), GetBValue (c), 0); + c = GetSysColor (COLOR_HIGHLIGHTTEXT); + hiliteTextColor (GetRValue (c), GetGValue (c), GetBValue (c), 0); + c = GetSysColor (COLOR_GRAYTEXT); + disableTextColor (GetRValue (c), GetGValue (c), GetBValue (c), 0); +#else + backgroundColor = kGreyCColor; + selectionColor = kBlueCColor; + textColor = kBlackCColor; + hiliteTextColor = kWhiteCColor; + disableTextColor = kWhiteCColor; +#endif + font = kNormalFontSmall; + #if MAC_ENABLE_MENU_SCHEME + registerWithToolbox (); + #endif +} + +//------------------------------------------------------------------------ +COptionMenuScheme::~COptionMenuScheme () +{ + #if MAC_ENABLE_MENU_SCHEME + unregisterWithToolbox (); + #endif +} + +//------------------------------------------------------------------------ +void COptionMenuScheme::getItemSize (const char* text, CDrawContext* pContext, CPoint& size) +{ + if (!strcmp (text, kMenuSeparator)) // separator + { + #if MAC + size.h = 6; + size.v = 9; + #else + // was: size.h = size.v = 6; + size.h = 6; + size.v = 18; + // separators must have same height, otherwise we have problems + // in multi-column menus :( + #endif + } + else + { + pContext->setFont (font); + size.h = pContext->getStringWidth (text) + 18; + size.v = 18; + #if MAC + size.h += 18; + #endif + } +} + +//------------------------------------------------------------------------ +void COptionMenuScheme::drawItemBack (CDrawContext* pContext, const CRect& rect, bool hilite) +{ + if (hilite) + pContext->setFillColor (selectionColor); + else + pContext->setFillColor (backgroundColor); + pContext->fillRect (rect); +} + +//------------------------------------------------------------------------ +void COptionMenuScheme::drawItem (const char* text, long itemId, long state, CDrawContext* pContext, const CRect& rect) +{ + bool hilite = (state & kSelected) != 0; + + drawItemBack (pContext, rect, hilite); + + if (!strcmp (text, kMenuSeparator)) + { + CCoord y = rect.top + rect.height () / 2; + + const CColor bc = { 0, 0, 0, 150}; + const CColor wc = { 255, 255, 255, 150}; + + pContext->setFrameColor (bc); + pContext->moveTo (CPoint (rect.left + 2, y - 1)); + pContext->lineTo (CPoint (rect.right - 2, y - 1)); + pContext->setFrameColor (wc); + pContext->moveTo (CPoint (rect.left + 2, y)); + pContext->lineTo (CPoint (rect.right - 2, y)); + return; + } + + CRect r; + if (state & kChecked) + { + r (6, 4, 14, 12); + r.offset (rect.left, rect.top); + if (hilite) + pContext->setFillColor (hiliteTextColor); + else + pContext->setFillColor (textColor); + pContext->fillEllipse (r); + } + + r = rect; + r.left += 18; + pContext->setFont (font); + if (state & kDisabled) + pContext->setFontColor (disableTextColor); + else + { + if (hilite) + pContext->setFontColor (hiliteTextColor); + else + pContext->setFontColor (textColor); + } + + // this needs to be done right, without changing the text pointer in anyway ;-) + char *ptr = (char*)strstr (text, "\t"); + if (ptr) + { + char modifier[32]; + strcpy (modifier, ptr + 1); + *ptr = 0; + pContext->drawString (text, r, false, kLeftText); + + *ptr = '\t'; + r.left = r.right - 50; + pContext->drawString (modifier, r, false, kLeftText); + } + else + pContext->drawString (text, r, false, kLeftText); +} + +#if MAC_ENABLE_MENU_SCHEME +#define kHIMenuViewClassID CFSTR("com.apple.HIMenuView") + +struct HIMenuScheme +{ + HIViewRef hiView; + COptionMenuScheme* scheme; + COptionMenu* menu; + COffscreenContext* offscreenContext; + float maxWidth; +}; + +const EventParamName kEventParamCOptionMenuScheme = 'COMS'; +const EventParamName kEventParamCOptionMenu = 'COM '; + +#define kItemHeight 18 + +static CFStringRef gOptionMenuSchemeClassID = 0; +static HIObjectClassRef gMenuClassRef = 0; +static CFIndex gOptionMenuSchemeClassIDRefCount = 0; + +//------------------------------------------------------------------------ +void COptionMenuScheme::registerWithToolbox () +{ + if (gOptionMenuSchemeClassID == 0) + { + gOptionMenuSchemeClassID = CFStringCreateWithFormat (NULL, NULL, CFSTR("net.sourceforge.vstgui.COptionMenuSchemeClassID.%d"), this); + + static const EventTypeSpec events[] = + { + { kEventClassHIObject, kEventHIObjectConstruct } , + { kEventClassHIObject, kEventHIObjectInitialize }, + { kEventClassHIObject, kEventHIObjectDestruct }, + + { kEventClassControl, kEventControlHitTest }, + { kEventClassControl, kEventControlGetPartRegion }, + { kEventClassControl, kEventControlDraw }, + { kEventClassControl, kEventControlGetOptimalBounds }, + + { kEventClassMenu, kEventMenuCreateFrameView }, + + { kEventClassScrollable, kEventScrollableGetInfo }, + }; + + HIObjectRegisterSubclass ( gOptionMenuSchemeClassID, + kHIMenuViewClassID, + kNilOptions, + COptionMenuScheme::eventHandler, + GetEventTypeCount (events), + events, + NULL, + &gMenuClassRef); + gOptionMenuSchemeClassIDRefCount = CFGetRetainCount (gOptionMenuSchemeClassID); + } + else + CFRetain (gOptionMenuSchemeClassID); +} + +//------------------------------------------------------------------------ +void COptionMenuScheme::unregisterWithToolbox () +{ + if (gOptionMenuSchemeClassID) + { + if (CFGetRetainCount (gOptionMenuSchemeClassID) == gOptionMenuSchemeClassIDRefCount) + { + HIObjectUnregisterClass (gMenuClassRef); + gMenuClassRef = 0; + } + CFRelease (gOptionMenuSchemeClassID); + } +} + +//------------------------------------------------------------------------ +pascal OSStatus COptionMenuScheme::eventHandler (EventHandlerCallRef inCallRef, EventRef inEvent, void *inUserData) +{ + OSStatus err = eventNotHandledErr; + UInt32 eventClass = GetEventClass (inEvent); + UInt32 eventKind = GetEventKind (inEvent); + HIMenuScheme* scheme = (HIMenuScheme*)inUserData; + + switch (eventClass) + { + case kEventClassHIObject: + { + switch (eventKind) + { + case kEventHIObjectConstruct: + { + scheme = (HIMenuScheme*)calloc (1, sizeof (HIMenuScheme)); + GetEventParameter (inEvent, kEventParamHIObjectInstance, typeHIObjectRef, NULL, sizeof (HIObjectRef), NULL, &scheme->hiView); + SetEventParameter (inEvent, kEventParamHIObjectInstance, typeVoidPtr, sizeof (HIMenuScheme*), &scheme); + scheme->maxWidth = 100; + err = noErr; + break; + } + case kEventHIObjectInitialize: + { + err = CallNextEventHandler (inCallRef, inEvent); + if (err == noErr) + { + GetEventParameter (inEvent, kEventParamCOptionMenuScheme, typeVoidPtr, NULL, sizeof (COptionMenuScheme*), NULL, &scheme->scheme); + GetEventParameter (inEvent, kEventParamCOptionMenu, typeVoidPtr, NULL, sizeof (COptionMenu*), NULL, &scheme->menu); + scheme->scheme->remember (); + scheme->menu->remember (); + scheme->offscreenContext = new COffscreenContext (scheme->menu->getFrame (), 600, 100); + } + break; + } + case kEventHIObjectDestruct: + { + delete scheme->offscreenContext; + scheme->scheme->forget (); + scheme->menu->forget (); + free (scheme); + err = noErr; + break; + } + } + break; + } + case kEventClassControl: + { + HIViewRef control; + GetEventParameter (inEvent, kEventParamDirectObject, typeControlRef, NULL, sizeof (HIViewRef), NULL, &control); + switch (eventKind) + { + case kEventControlInitialize: + { + err = CallNextEventHandler (inCallRef, inEvent); + break; + } + case kEventControlHitTest: + { + HIPoint mouseLoc; + GetEventParameter (inEvent, kEventParamMouseLocation, typeHIPoint, NULL, sizeof (mouseLoc), NULL, &mouseLoc); + ControlPartCode partHit = mouseLoc.y / kItemHeight + 1; + char temp[1024]; + CPoint size; + long yPos = 0; + for (long i = 0; i < scheme->menu->getNbEntries (); i++) + { + scheme->menu->getEntry (i, temp); + scheme->scheme->getItemSize (temp, scheme->offscreenContext, size); + yPos += size.y; + if (yPos >= mouseLoc.y) + { + partHit = i + 1; + break; + } + } + SetEventParameter (inEvent, kEventParamControlPart, typeControlPartCode, sizeof (partHit), &partHit); + err = noErr; + break; + } + case kEventControlGetOptimalBounds: + { + HIRect r = { {0, 0}, { 0, 0 }}; + r.size.width = scheme->maxWidth; + char temp[1024]; + CPoint size; + for (long i = 0; i < scheme->menu->getNbEntries (); i++) + { + scheme->menu->getEntry (i, temp); + scheme->scheme->getItemSize (temp, scheme->offscreenContext, size); + if (!strncmp (temp, kMenuSubMenu, 2)) + size.x += 16; + r.size.height += size.y; + if (r.size.width < size.x) + r.size.width = size.x; + } + //r.size.height += scheme->menu->getNbEntries (); + scheme->maxWidth = r.size.width; + SetEventParameter (inEvent, kEventParamControlOptimalBounds, typeHIRect, sizeof (HIRect), &r); + err = noErr; + break; + } + case kEventControlGetPartRegion: + { + HIRect r = { {0, 0}, { 0, 0 }}; + ControlPartCode whichItem; + RgnHandle outRegion = NULL; + GetEventParameter (inEvent, kEventParamControlPart, typeControlPartCode, NULL, sizeof (whichItem), NULL, &whichItem); + GetEventParameter (inEvent, kEventParamControlRegion, typeQDRgnHandle, NULL, sizeof(outRegion), NULL, &outRegion); + if (whichItem <= 0) + { + r.size.width = scheme->maxWidth; + char temp[1024]; + CPoint size; + for (long i = 0; i < scheme->menu->getNbEntries (); i++) + { + scheme->menu->getEntry (i, temp); + scheme->scheme->getItemSize (temp, scheme->offscreenContext, size); + if (!strncmp (temp, kMenuSubMenu, 2)) + size.x += 16; + r.size.height += size.y; + if (r.size.width < size.x) + r.size.width = size.x; + } + scheme->maxWidth = r.size.width; + r.size.height += scheme->menu->getNbEntries (); + } + else + { + char temp[1024]; + CPoint size; + for (long i = 0; i < whichItem; i++) + { + r.origin.y += size.y; + scheme->menu->getEntry (i, temp); + scheme->scheme->getItemSize (temp, scheme->offscreenContext, size); + r.size.height += size.y; + } + r.size.width = scheme->maxWidth; + } + SetRectRgn (outRegion, (short) r.origin.x, (short) r.origin.y,(short) r.origin.x + r.size.width, (short) r.origin.y+ r.size.height + 1); + err = noErr; + break; + } + case kEventControlDraw: + { + CGContextRef cgContext; + GetEventParameter (inEvent, kEventParamCGContextRef, typeCGContextRef, NULL, sizeof (cgContext), NULL, &cgContext); + HIRect r; + HIViewGetBounds (control, &r); + CGContextClearRect (cgContext, r); + if (control != scheme->hiView) + { + err = noErr; + break; + } + ControlPartCode focusPart; + HIViewGetFocusPart (scheme->hiView, &focusPart); + focusPart--; + WindowRef window = HIViewGetWindow (scheme->hiView); + CDrawContext context (NULL, cgContext, window); + char entryText[1024]; + CPoint size; + CRect rect (0, 0); + rect.setHeight (kItemHeight); + rect.setWidth (scheme->maxWidth); + for (int i = 0; i < scheme->menu->getNbEntries (); i++) + { + if (scheme->menu->getEntry (i, entryText)) + { + scheme->scheme->getItemSize (entryText, &context, size); + long state = scheme->menu->isCheckEntry (i) ? kChecked : 0; + if (focusPart >= 0 && focusPart == i) + state |= kSelected; + long offset = 0; + if (!strncmp (entryText, kMenuSubMenu, 2)) + { + state |= kSubMenu; + offset = 2; + } + else if (!strncmp (entryText, kMenuTitle, 2)) + { + state |= kTitle; + offset = 2; + } + else if (!strncmp (entryText, kMenuDisable, 2)) + { + state |= kDisabled; + offset = 2; + } + rect.setHeight (size.y+1); + context.setClipRect (rect); + scheme->scheme->drawItem (entryText+offset, i, state, &context, rect); + rect.offset (0, size.y); + } + } + break; + } + case kEventControlGetFrameMetrics: + { + err = CallNextEventHandler (inCallRef, inEvent); + HIViewFrameMetrics metrics; + GetEventParameter (inEvent, kEventParamControlFrameMetrics, typeControlFrameMetrics, NULL, sizeof (metrics), NULL, &metrics); + metrics.top = metrics.bottom = 0; + SetEventParameter (inEvent, kEventParamControlFrameMetrics, typeControlFrameMetrics, sizeof (metrics), &metrics); + break; + } + case kEventControlOwningWindowChanged: + { + WindowRef newWindow = GetControlOwner (control); + HIWindowChangeFeatures (newWindow, 0, kWindowIsOpaque); + err = noErr; + HIViewRef root = HIViewGetRoot (newWindow); + if (root) + { + HIRect bounds, frame; + HIViewGetBounds (root, &bounds); + HIViewGetFrame (root, &frame); + } + break; + } + } + break; + } + case kEventClassMenu: + { + switch (eventKind) + { + case kEventMenuCreateFrameView: + { + err = CallNextEventHandler (inCallRef, inEvent); + HIViewRef frameView; + GetEventParameter (inEvent, kEventParamMenuFrameView, typeControlRef, NULL, sizeof (ControlRef), NULL, &frameView); + HIViewFindByID (frameView, kHIViewWindowContentID, &frameView); + if (frameView) + { + EventTypeSpec events [] = { { kEventClassControl, kEventControlDraw }, { kEventClassControl, kEventControlOwningWindowChanged }, { kEventClassControl, kEventControlGetFrameMetrics } }; + InstallControlEventHandler (frameView, COptionMenuScheme::eventHandler, GetEventTypeCount (events), events, scheme, NULL); + } + break; + } + } + break; + } + case kEventClassScrollable: + { + switch (eventKind) + { + case kEventScrollableGetInfo: + { + HISize size; + HIPoint origin = { 0, 0 }; + + size.width = 200; + size.height = kItemHeight * (scheme->menu->getNbEntries () + 1);; + + SetEventParameter(inEvent, kEventParamImageSize, typeHISize, sizeof( size ), &size ); + SetEventParameter(inEvent, kEventParamViewSize, typeHISize, sizeof( size ), &size ); + SetEventParameter(inEvent, kEventParamOrigin, typeHIPoint, sizeof( origin ), &origin ); + + // line size is 1/10th total size + size.width /= 10; + size.height /= 10; + + SetEventParameter(inEvent, kEventParamLineSize, typeHISize, sizeof( size ), &size ); + + err = noErr; + break; + } + } + break; + } + } + + return err; +} +#endif + +//------------------------------------------------------------------------ +// COptionMenu +//------------------------------------------------------------------------ +/*! @class COptionMenu +Define a rectangle view where a text-value can be displayed with a given font and color. +The text-value is centered in the given rect. +A pixmap can be used as background, a second pixmap can be used when the option menu is popuped. +There are 2 styles with or without a shadowed text. When a mouse click occurs, a popup menu is displayed. +*/ +COptionMenu::COptionMenu (const CRect &size, CControlListener *listener, long tag, + CBitmap *background, CBitmap *bgWhenClick, const long style) +: CParamDisplay (size, background, style), bgWhenClick (bgWhenClick), nbItemsPerColumn (-1), + prefixNumbers (0), scheme (0) +{ + this->listener = listener; + this->tag = tag; + + nbEntries = 0; + nbSubMenus = 0; + currentIndex = -1; + lastButton = kRButton; + platformControl = 0; + lastResult = -1; + lastMenu = 0; + + #if MAC + menuID = 0; + #endif + + if (bgWhenClick) + bgWhenClick->remember (); + + nbSubMenuAllocated = nbAllocated = 0; + + check = 0; + entry = 0; + submenuEntry = 0; +} + +//------------------------------------------------------------------------ +COptionMenu::~COptionMenu () +{ + removeAllEntry (); + + if (bgWhenClick) + bgWhenClick->forget (); +} + +//------------------------------------------------------------------------ +void COptionMenu::setPrefixNumbers (long preCount) +{ + prefixNumbers = preCount; +} + +//----------------------------------------------------------------------------- +bool COptionMenu::allocateSubMenu (long nb) +{ + long newAllocated = nbSubMenuAllocated + nb; + + if (submenuEntry) + submenuEntry = (COptionMenu**)realloc (submenuEntry, newAllocated * sizeof (COptionMenu*)); + else + submenuEntry = (COptionMenu**)malloc (newAllocated * sizeof (COptionMenu*)); + + long i; + for (i = nbSubMenuAllocated; i < newAllocated; i++) + submenuEntry[i] = 0; + + nbSubMenuAllocated = newAllocated; + + return true; +} + +//------------------------------------------------------------------------ +bool COptionMenu::allocateMenu (long nb) +{ + long newAllocated = nbAllocated + nb; + + if (check) + check = (bool*)realloc (check, newAllocated * sizeof (bool)); + else + check = (bool*)malloc (newAllocated * sizeof (bool)); + if (!check) + return false; + + if (entry) + entry = (char**)realloc (entry, newAllocated * sizeof (char*)); + else + entry = (char**)malloc (newAllocated * sizeof (char*)); + if (!entry) + { + free (check); + return false; + } + + long i; + for (i = nbAllocated; i < newAllocated; i++) + { + check[i] = false; + entry[i] = 0; + } + + nbAllocated = newAllocated; + + return true; +} + +//------------------------------------------------------------------------ +COptionMenu* COptionMenu::getSubMenu (long idx) const +{ + if (submenuEntry && idx < nbSubMenus) + return submenuEntry[idx]; + return 0; +} + +//------------------------------------------------------------------------ +bool COptionMenu::addEntry (COptionMenu *subMenu, char *txt) +{ + if (nbEntries >= MAX_ENTRY || !subMenu || !txt) + return false; + + if (nbEntries >= nbAllocated) + if (!allocateMenu (32)) + return false; + + entry[nbEntries] = (char*)malloc (256); + switch (prefixNumbers) + { + case 2: + sprintf (entry[nbEntries], "-M%1d %s", (int)(nbEntries + 1), txt); + break; + + case 3: + sprintf (entry[nbEntries], "-M%02d %s", (int)(nbEntries + 1), txt); + break; + + case 4: + sprintf (entry[nbEntries], "-M%03d %s", (int)(nbEntries + 1), txt); + break; + + default: + sprintf (entry[nbEntries], "-M%s", txt); + } + + + if (nbSubMenus >= nbSubMenuAllocated) + if (!allocateSubMenu (10)) + return false; + + submenuEntry[nbSubMenus++] = subMenu; + subMenu->remember (); + + nbEntries++; + + if (currentIndex < 0) + currentIndex = 0; + + return true; +} + +//------------------------------------------------------------------------ +bool COptionMenu::addEntry (char *txt, long index) +{ + if (nbEntries >= MAX_ENTRY) + return false; + + if (nbEntries >= nbAllocated) + if (!allocateMenu (32)) + return false; + + entry[nbEntries] = (char*)malloc (256); + + long pos = nbEntries; + + // switch the entries for the insert + if (index >= 0) + { + for (long i = nbEntries; i > index; i--) + strcpy (entry[i], entry[i - 1]); + if (index >= nbEntries) + pos = nbEntries; + else + pos = index; + if (currentIndex >= index) + currentIndex++; + } + + *entry[pos] = 0; + if (txt) + { + switch (prefixNumbers) + { + case 2: + sprintf (entry[pos], "%1d %s", (int)(index + 1), txt); + break; + + case 3: + sprintf (entry[pos], "%02d %s", (int)(index + 1), txt); + break; + + case 4: + sprintf (entry[pos], "%03d %s", (int)(index + 1), txt); + break; + + default: + strncpy (entry[pos], txt, 256); + } + } + + nbEntries++; + + if (currentIndex < 0) + currentIndex = 0; + + return true; +} + +//------------------------------------------------------------------------ +long COptionMenu::getCurrent (char *txt, bool countSeparator) const +{ + if (currentIndex < 0) + return -1; + + long result = 0; + + if (countSeparator) + { + if (txt) + strcpy (txt, entry[currentIndex]); + result = currentIndex; + } + else + { + for (long i = 0; i < currentIndex; i++) + { + if (strcmp (entry[i], kMenuSeparator) && strncmp (entry[i], kMenuTitle, 2)) + result++; + } + if (txt) + strcpy (txt, entry[currentIndex]); + } + return result; +} + +//------------------------------------------------------------------------ +bool COptionMenu::setCurrent (long index, bool countSeparator) +{ + if (index < 0 || index >= nbEntries) + return false; + + if (countSeparator) + { + if (!strcmp (entry[index], kMenuSeparator) && strncmp (entry[index], kMenuTitle, 2)) + return false; + + currentIndex = index; + } + else + { + long newCurrent = 0; + long i = 0; + while (i <= index && newCurrent < nbEntries) + { + if (strcmp (entry[newCurrent], kMenuSeparator) && strncmp (entry[newCurrent], kMenuTitle, 2)) + i++; + newCurrent++; + } + currentIndex = newCurrent - 1; + } + if (style & (kMultipleCheckStyle & ~kCheckStyle)) + check[currentIndex] = !check[currentIndex]; + + // to force the redraw + setDirty (); + + return true; +} + +//------------------------------------------------------------------------ +bool COptionMenu::getEntry (long index, char *txt) const +{ + if (index < 0 || index >= nbEntries) + return false; + + if (txt) + strcpy (txt, entry[index]); + return true; +} + +//------------------------------------------------------------------------ +bool COptionMenu::setEntry (long index, char *txt) +{ + if (index < 0 || index >= nbEntries) + return false; + + if (txt) + strcpy (entry[index], txt); + return true; +} + +//------------------------------------------------------------------------ +bool COptionMenu::removeEntry (long index) +{ + if (index < 0 || index >= nbEntries) + return false; + + nbEntries--; + + // switch the entries + for (long i = index; i < nbEntries; i++) + { + strcpy (entry[i], entry[i + 1]); + check[i] = check [i + 1]; + } + + if (currentIndex >= index) + currentIndex--; + + // delete the last one + free (entry[nbEntries]); + entry[nbEntries] = 0; + check[nbEntries] = false; + + if (nbEntries == 0) + currentIndex = -1; + return true; +} + +//------------------------------------------------------------------------ +bool COptionMenu::removeAllEntry () +{ + long i; + for (i = 0; i < nbEntries; i++) + { + free (entry[i]); + entry[i] = 0; + check[i] = false; + } + + nbEntries = 0; + currentIndex = -1; + + for (i = 0; i < nbSubMenus; i++) + { + submenuEntry[i]->forget (); + submenuEntry[i] = 0; + } + nbSubMenus = 0; + + if (check) + free (check); + check = 0; + if (entry) + free (entry); + entry = 0; + if (submenuEntry) + free (submenuEntry); + submenuEntry = 0; + nbAllocated = 0; + nbSubMenuAllocated = 0; + + return true; +} + +//------------------------------------------------------------------------ +long COptionMenu::getIndex (char *txt) const +{ + if (!txt) + return -1; + + // search entries + for (long i = 0; i < nbEntries; i++) + if (!strcmp (entry[i], txt)) + return i; + + // not found + return -1; +} + +//------------------------------------------------------------------------ +bool COptionMenu::checkEntry (long index, bool state) +{ + if (index < 0 || index >= nbEntries) + return false; + + check[index] = state; + + return true; +} + +//------------------------------------------------------------------------ +bool COptionMenu::checkEntryAlone (long index) +{ + if (index < 0 || index >= nbEntries) + return false; + for (long i = 0; i < nbEntries; i++) + check[i] = false; + check[index] = true; + + return true; +} + +//------------------------------------------------------------------------ +bool COptionMenu::isCheckEntry (long index) const +{ + if (index < 0 || index >= nbEntries) + return false; + + return check[index]; +} + +//------------------------------------------------------------------------ +void COptionMenu::draw (CDrawContext *pContext) +{ + if (currentIndex >= 0 && nbEntries) + drawText (pContext, entry[currentIndex] + prefixNumbers); + else + drawText (pContext, NULL); +} + +//------------------------------------------------------------------------ +void COptionMenu::mouse (CDrawContext *pContext, CPoint &where, long button) +{ + if (!bMouseEnabled || !getFrame () || !pContext) + return; + + lastButton = (button != -1) ? button : pContext->getMouseButtons (); + + if (listener && button & (kAlt | kShift | kControl | kApple)) + { + if (listener->controlModifierClicked (pContext, this, button) != 0) + return; + } + + if (lastButton & (kLButton|kRButton|kApple)) + { + if (bgWhenClick) + { + char string[256]; + if (currentIndex >= 0) + sprintf (string, "%s", entry[currentIndex]); + else + string[0] = 0; + + drawText (pContext, string, bgWhenClick); + } + + beginEdit(); + takeFocus (pContext); + } +} + +//------------------------------------------------------------------------ +#if MOTIF +#include +#include +#include +#include + +static void _unmapCallback (Widget item, XtPointer clientData, XtPointer callData); +static void _activateCallback (Widget item, XtPointer clientData, XtPointer callData); + +//------------------------------------------------------------------------ +static void _unmapCallback (Widget item, XtPointer clientData, XtPointer callData) +{ + COptionMenu *optionMenu= (COptionMenu*)clientData; + optionMenu->looseFocus (); +} + +//------------------------------------------------------------------------ +static void _activateCallback (Widget item, XtPointer clientData, XtPointer callData) +{ + COptionMenu *optionMenu= (COptionMenu*)clientData; + optionMenu->setCurrentSelected ((void*)item); +} +#endif + +//------------------------------------------------------------------------ +#if BEOS +#include +#include +#endif + +//------------------------------------------------------------------------ +COptionMenu *COptionMenu::getLastItemMenu (long &idxInMenu) const +{ + idxInMenu = lastMenu ? (long)lastMenu->getValue (): -1; + return lastMenu; +} + +//------------------------------------------------------------------------ +COptionMenu *COptionMenu::getItemMenu (long idx, long &idxInMenu, long &offsetIdx) +{ +#if WINDOWS + long oldIDx = offsetIdx; + offsetIdx += nbEntries; + + if (idx < offsetIdx) + { + idxInMenu = idx - oldIDx; + return this; + } + +#elif MAC + if (menuID == offsetIdx) + { + idxInMenu = idx; + return this; + } +#endif + COptionMenu *menu = 0; + for (long i = 0; i < nbSubMenus; i++) + { + menu = submenuEntry[i]->getItemMenu (idx, idxInMenu, offsetIdx); + if (menu) + break; + } + return menu; +} + +//------------------------------------------------------------------------ +void COptionMenu::removeItems () +{ + for (long i = 0; i < nbSubMenus; i++) + submenuEntry[i]->removeItems (); + +#if WINDOWS + // destroy the menu + if (platformControl) + DestroyMenu ((HMENU)platformControl); + platformControl = 0; + +#elif MAC + // destroy the menu + if (menuID) + DeleteMenu (menuID); + if (platformControl) + DisposeMenu ((MenuHandle)platformControl); + platformControl = 0; + +#endif +} + +//------------------------------------------------------------------------ +void *COptionMenu::appendItems (long &offsetIdx) +{ + bool multipleCheck = style & (kMultipleCheckStyle & ~kCheckStyle); + +#if WINDOWS + void *menu = (void*)CreatePopupMenu (); + + bool ownerDraw = (scheme != 0) || (gOptionMenuScheme != 0); + + int flags = 0; + long idxSubmenu = 0; + long offset = offsetIdx; + offsetIdx += nbEntries; + long inc = 0; + for (long i = 0; i < nbEntries; i++) + { + //---Separator----- + if (!strcmp (entry[i], kMenuSeparator)) + { + if (ownerDraw) + AppendMenu ((HMENU)menu, MF_OWNERDRAW|MF_SEPARATOR, 0, entry[i]); + else + AppendMenu ((HMENU)menu, MF_SEPARATOR, 0, entry[i]); + } + else + { + flags = ownerDraw ? MF_OWNERDRAW : MF_STRING; + if (nbEntries < 160 && nbItemsPerColumn > 0 && inc && !(inc % nbItemsPerColumn)) + flags |= MF_MENUBARBREAK; + + if (!strncmp (entry[i], kMenuSubMenu, 2)) + { + if (idxSubmenu < nbSubMenus) + { + void *submenu = submenuEntry[idxSubmenu]->appendItems (offsetIdx); + if (submenu) + { + idxSubmenu++; + AppendMenu ((HMENU)menu, flags|MF_POPUP|MF_ENABLED, (UINT_PTR)submenu, entry[i] + 2); + } + else + continue; + } + else + continue; + } + //---Disable/Gray entry----------- + else if (!strncmp (entry[i], kMenuDisable, 2)) + { + AppendMenu ((HMENU)menu, flags|MF_GRAYED, offset + inc, entry[i] + 2); + } + //---Disable entry-------- + else if (!strncmp (entry[i], kMenuTitle, 2)) + { + AppendMenu ((HMENU)menu, flags|MF_DISABLED, offset + inc, entry[i] + 2); + } + //---Multiple Checked entry--- + else if (multipleCheck) + { + AppendMenu ((HMENU)menu, flags|MF_ENABLED | + (check[i] ? MF_CHECKED : MF_UNCHECKED), offset + inc, entry[i]); + } + //---Checked Entry--------- + else if (style & kCheckStyle) + { + AppendMenu ((HMENU)menu, flags|MF_ENABLED | + ((i == currentIndex) ? MF_CHECKED : MF_UNCHECKED), offset + inc, entry[i]); + } + else + AppendMenu ((HMENU)menu, flags|MF_ENABLED, offset + inc, entry[i]); + } + inc++; + } + platformControl = menu; + return menu; + +#elif MAC + //---Get an non-existing ID for the menu: + menuID = UniqueID ('MENU'); + + MenuHandle theMenu = 0; + //---Create the menu + #if MAC_ENABLE_MENU_SCHEME + extern long pSystemVersion; + if ((scheme || gOptionMenuScheme) && pSystemVersion >= 0x1030) + { + COptionMenuScheme* s = gOptionMenuScheme ? gOptionMenuScheme : scheme; + EventRef initEvent = NULL; + if (CreateEvent (NULL, kEventClassHIObject, kEventHIObjectInitialize, 0, 0, &initEvent) == noErr) + { + MenuDefSpec customMenuDef; + COptionMenu* optMenu = this; + SetEventParameter (initEvent, kEventParamCOptionMenu, typeVoidPtr, sizeof(COptionMenu*), &optMenu); + customMenuDef.defType = kMenuDefClassID; + customMenuDef.u.view.classID = gOptionMenuSchemeClassID; + customMenuDef.u.view.initEvent = initEvent; + SetEventParameter (initEvent, kEventParamCOptionMenuScheme, typeVoidPtr, sizeof(COptionMenuScheme*), &s); + CreateCustomMenu (&customMenuDef, menuID, 0, &theMenu); + ReleaseEvent (initEvent); + if (theMenu == NULL) + return NULL; + } + } + else + #endif + theMenu = NewMenu (menuID, "\pPopUp"); + + char text2[256]; + long keyChar; + long idxSubmenu = 0; + offsetIdx += nbEntries; + short keyModifiers; + bool useGlyph; + for (long i = 0; i < nbEntries; i++) + { + keyChar = 0; + keyModifiers = kMenuNoModifiers; + useGlyph = false; + + strcpy (text2, entry[i]); + char *ptr = strstr (text2, "\t"); + if (ptr) + { + *ptr = '\0'; + ptr++; + if (strlen (ptr) > 0) + { + if (!strstr (ptr, "Ctrl")) + keyModifiers |= kMenuNoCommandModifier; + if (strstr (ptr, "Alt")) + keyModifiers |= kMenuOptionModifier; + if (strstr (ptr, "Shift")) + keyModifiers |= kMenuShiftModifier; + if (strstr (ptr, "Apple")) + keyModifiers |= kMenuControlModifier; + + if (!strncmp (ptr, "Del", 3)) + keyChar = 0x17; + else if (!strncmp (ptr, "Left", 4)) + { + keyChar = 0x64; + useGlyph = true; + } + else if (!strncmp (ptr, "Right", 5)) + { + keyChar = 0x65; + useGlyph = true; + } + else if (!strncmp (ptr, "Up", 2)) + { + keyChar = 0x68; + useGlyph = true; + } + else if (!strncmp (ptr, "Down", 4)) + { + keyChar = 0x6a; + useGlyph = true; + } + else + keyChar = (long)ptr[strlen (ptr) - 1]; + } + else + { + keyModifiers = kMenuNoCommandModifier; + keyChar = (long)*ptr; + } + } + #if TARGET_API_MAC_CARBON + + if (!strcmp (entry[i], kMenuSeparator)) + { + AppendMenuItemTextWithCFString (theMenu, CFSTR(""), kMenuItemAttrSeparator, 0, NULL); + } + else + { + CFStringRef itemString = 0; + MenuItemAttributes itemAttribs = kMenuItemAttrIgnoreMeta; + // Submenu + if (!strncmp (entry[i], kMenuSubMenu, 2)) + { + if (idxSubmenu < nbSubMenus) + { + itemString = CFStringCreateWithCString (NULL, entry[i] + 2, kCFStringEncodingUTF8); + InsertMenuItemTextWithCFString (theMenu, itemString, i+1, itemAttribs, 0); + CFRelease (itemString); + void *submenu = submenuEntry[idxSubmenu]->appendItems (offsetIdx); + if (submenu) + { + SetMenuItemHierarchicalID (theMenu, i + 1, submenuEntry[idxSubmenu]->getMenuID ()); + idxSubmenu++; + continue; + } + else + continue; + } + else + continue; + } + //---Disable/Gray entry----------- + else if (!strncmp (entry[i], kMenuDisable, 2)) + { + itemString = CFStringCreateWithCString (NULL, entry[i] + 2, kCFStringEncodingUTF8); + itemAttribs |= kMenuItemAttrDisabled; + } + //---Disable entry-------- + else if (!strncmp (entry[i], kMenuTitle, 2)) + { + itemString = CFStringCreateWithCString (NULL, entry[i] + 2, kCFStringEncodingUTF8); + itemAttribs |= kMenuItemAttrSectionHeader; + } + else + itemString = CFStringCreateWithCString (NULL, entry[i], kCFStringEncodingUTF8); + + InsertMenuItemTextWithCFString (theMenu, itemString, i+1, itemAttribs, 0); + CFRelease (itemString); + } + + #else + Str255 menuItem; + strcpy ((char*)menuItem, (const char*)"\p\0"); + menuItem[0] = strlen ((const char*)text2); + AppendMenu (theMenu, "\pjunk"); + + if (!strncmp (text2, kMenuTitle, 2) || !strncmp (text2, kMenuDisable, 2) || !strncmp (text2, kMenuSubMenu, 2)) + { + menuItem[0] -= 2; + strcat ((char*)menuItem, text2 + 2); + + //---Disable item-------- + if (!strncmp (text2, kMenuDisable, 2)) + { + #if TARGET_API_MAC_CARBON + DisableMenuItem (theMenu, i + 1); + #else + DisableItem (theMenu, i + 1); + #endif + } + //---Submenu------------- + else if (!strncmp (text2, kMenuSubMenu, 2)) + { + if (idxSubmenu < nbSubMenus) + { + void *submenu = submenuEntry[idxSubmenu]->appendItems (offsetIdx); + if (submenu) + { + SetMenuItemHierarchicalID (theMenu, i + 1, submenuEntry[idxSubmenu]->getMenuID ()); + idxSubmenu++; + } + else + continue; + } + else + continue; + } + } + else + { + strcat ((char*)menuItem, text2); + } + SetMenuItemText (theMenu, i + 1, menuItem); + + #endif // !TARGET_API_MAC_CARBON + + //---Set the shortcut + if (keyChar != 0) + { + SetItemCmd (theMenu, i + 1, keyChar); + if (useGlyph) + SetMenuItemKeyGlyph (theMenu, i + 1, keyChar); + SetMenuItemModifiers (theMenu, i + 1, keyModifiers); + } + + if (multipleCheck && check[i]) + CheckMenuItem (theMenu, i + 1, true); + + } + + // set the check + if (style & kCheckStyle && !multipleCheck) + CheckMenuItem (theMenu, currentIndex + 1, true); + + InsertMenu ((MenuHandle)theMenu, -1); + + platformControl = (void*)theMenu; + return platformControl; +#endif +} + +//------------------------------------------------------------------------ +void COptionMenu::setValue (float val) +{ + if ((long)val < 0 || (long)val >= nbEntries) + return; + + currentIndex = (long)val; + if (style & (kMultipleCheckStyle & ~kCheckStyle)) + check[currentIndex] = !check[currentIndex]; + CParamDisplay::setValue (val); + + // to force the redraw + setDirty (); +} + +//------------------------------------------------------------------------ +void COptionMenu::takeFocus (CDrawContext *pContext) +{ + if (!getFrame ()) + return; + + bool multipleCheck = style & (kMultipleCheckStyle & ~kCheckStyle); + lastResult = -1; + lastMenu = 0; + +#if MAC || WINDOWS + // calculate Screen Position + #if WINDOWS + HWND hwnd = (HWND)getFrame ()->getSystemWindow (); + + #endif + + CRect rect; + if (pContext) + { + rect.left = pContext->offsetScreen.h; + rect.top = pContext->offsetScreen.v; + } + else + { + #if WINDOWS + RECT rctWinParent; + GetWindowRect (hwnd, &rctWinParent); + rect.left = rctWinParent.left; + rect.top = rctWinParent.top; + #elif QUARTZ + HIRect bounds; + HIViewRef control = (HIViewRef)getFrame ()->getPlatformControl (); + HIViewGetFrame (control, &bounds); + WindowRef window = (WindowRef)getFrame ()->getSystemWindow (); + WindowAttributes attr; + GetWindowAttributes (window, &attr); + if (attr & kWindowCompositingAttribute) + { + HIViewRef contentView; + HIViewFindByID (HIViewGetRoot (window), kHIViewWindowContentID, &contentView); + if (HIViewGetSuperview (control) != contentView) + HIViewConvertRect (&bounds, control, contentView); + bounds.origin.x += getFrame ()->hiScrollOffset.x; + bounds.origin.y += getFrame ()->hiScrollOffset.y; + } + rect.left = (CCoord)bounds.origin.x; + rect.top = (CCoord)bounds.origin.y; + #endif + } + CView* parent = getParentView (); + while (parent) + { + if (parent->notify (this, kMsgCheckIfViewContainer) == kMessageNotified) + { + CRect vSize; + parent->getViewSize (vSize); + rect.offset (vSize.left, vSize.top); + } + parent = parent->getParentView (); + } +#endif + +#if WINDOWS + MSG msg; + long result = -1; + + //---Create the popup menu--- + long offIdx = 0; + appendItems (offIdx); + + //---Popup the menu--- + long offset; + if (style & kPopupStyle) + offset = (long)(rect.top + size.top); + else + offset = (long)(rect.top + size.bottom); + + int flags = TPM_LEFTALIGN; + if (lastButton & kRButton) + flags |= TPM_RIGHTBUTTON; + + if (TrackPopupMenu ((HMENU)platformControl, flags, + (int)(rect.left + size.left), offset, 0, hwnd, 0)) + { + if (PeekMessage (&msg, hwnd, WM_COMMAND, WM_COMMAND, PM_REMOVE)) + { + if (HIWORD (msg.wParam) == 0) + { + result = LOWORD (msg.wParam); + lastResult = result; + } + } + } + + //---Destroy the menu---- + removeItems (); + + //---Update the dependencies + if (result != -1 || bgWhenClick) + { + CDrawContext *pContextTemp = 0; + HDC hdc; + if (!pContext && result != -1) + { + // create a local context + hdc = GetDC (hwnd); + pContextTemp = new CDrawContext (getFrame (), hdc, hwnd); + } + else + pContextTemp = pContext; + + // to force the redraw + if (bgWhenClick) + setDirty (); + + if (result != -1) + { + long idx = 0; + offIdx = 0; + COptionMenu *menu = getItemMenu (result, idx, offIdx); + if (menu) + { + lastMenu = menu; + menu->setValue ((float)idx); + + // update dependency + if (listener) + listener->valueChanged (pContextTemp, menu); + } + } + + // redraw the display + // AAAAARRRRGHHHHHHHHHHHHH!! + //doIdleStuff (); + //setDirty (false); + + if (!pContext && pContextTemp) + { + delete pContextTemp; + ReleaseDC (hwnd, hdc); + } + } + +#elif MAC + // no entries, no menu + if (nbEntries == 0) + { + endEdit(); + getFrame ()->setFocusView (0); + return; + } + + //---Transform local coordinates to global coordinates + long offset; + + if (style & kPopupStyle) + offset = (long)size.top; + else + offset = (long)size.bottom; + + CCoord gx = 0, gy = 0; + Point LToG; + getFrame()->getPosition(gx, gy); + LToG.v = (short)(gy + rect.top + offset); + LToG.h = (short)(gx + rect.left + size.left); + + //---Create the popup menu--- + long offIdx = 0; + MenuHandle theMenu = (MenuHandle)appendItems (offIdx); + + // Calculate the menu size (height and width) + CalcMenuSize (theMenu); + + // Get a handle to the screen + RgnHandle rgn = GetGrayRgn (); + #if TARGET_API_MAC_CARBON + Rect bounds; + GetRegionBounds (rgn, &bounds); + int bottom = bounds.bottom; + long menuHeight = GetMenuHeight (theMenu); + #else + int bottom = (*rgn)->rgnBBox.bottom; + long menuHeight = (*theMenu)->menuHeight; + #endif + + // Calculate the size of one menu item (round to the next int) + int menuItemSize = (menuHeight + nbEntries - 1) / nbEntries; + + setDirty (false); + + //---Popup the Menu + long popUpItem = 1; + long PopUpMenuItem = 0; + + if (LToG.v + menuHeight >= bottom - menuItemSize / 2) + { + if (nbEntries * menuItemSize >= bottom) + { + popUpItem = currentIndex + 2; + if (popUpItem > nbEntries) + popUpItem = nbEntries; + } + if (nbEntries * menuItemSize >= bottom) + PopUpMenuItem = PopUpMenuSelect (theMenu, LToG.v, LToG.h, popUpItem); + else + PopUpMenuItem = PopUpMenuSelect (theMenu, bottom - menuHeight - menuItemSize, LToG.h, popUpItem); + } + else + PopUpMenuItem = PopUpMenuSelect (theMenu, LToG.v, LToG.h, popUpItem); + + //---Destroy the menu---- + removeItems (); + + // HiWord indicates MenuID, LoWord indicates the item index + short result = LoWord (PopUpMenuItem) - 1; + lastResult = result; + short menuIDResult = HiWord (PopUpMenuItem); + if (menuIDResult != 0 || bgWhenClick) + { + // to force the redraw + if (bgWhenClick) + setDirty (); + + if (!pContext && menuIDResult != 0) + { + pContext = getFrame ()->createDrawContext (); + } + else if (pContext) + pContext->remember (); + + if (menuIDResult != 0) + { + long idx = 0; + offIdx = menuIDResult; + COptionMenu *menu = getItemMenu (result, idx, offIdx); + if (menu) + { + lastMenu = menu; + menu->setValue (result); + if (listener) + listener->valueChanged (pContext, menu); + } + } + + if (pContext) + pContext->forget (); + } + +#elif MOTIF + Arg args[10]; + int n = 0; + + // get the position of the pParent + CRect rect; + getFrame ()->getSize (&rect); + + if (pContext) + { + rect.left += pContext->offset.h; + rect.top += pContext->offset.v; + } + + // create a popup menu + int offset; + if (style & kPopupStyle) + offset = (int)(rect.top + size.top); + else + offset = (int)(rect.top + size.bottom); + + XtSetArg (args[n], XmNx, rect.left + size.left); n++; + XtSetArg (args[n], XmNy, offset); n++; + XtSetArg (args[n], XmNmenuHistory, currentIndex); n++; + XtSetArg (args[n], XmNtraversalOn, true); n++; + + platformControl = (void*)XmCreatePopupMenu ((Widget)(getFrame ()->getSystemWindow ()), + "popup", args, n); + + XtAddCallback ((Widget)platformControl, XmNunmapCallback, _unmapCallback, this); + + // insert the menu items + for (long i = 0; i < nbEntries; i++) + { + if (!strcmp (entry[i], kMenuSeparator)) + { + itemWidget[i] = (void*)XtCreateManagedWidget ("separator", + xmSeparatorGadgetClass, (Widget)platformControl, 0, 0); + } + else + { + if (multipleCheck) + { + itemWidget[i] = (void*)XtVaCreateManagedWidget (entry[i], + xmToggleButtonWidgetClass, (Widget)platformControl, + XmNset, check[i], XmNvisibleWhenOff, false, 0); + XtAddCallback ((Widget)itemWidget[i], XmNvalueChangedCallback, _activateCallback, this); + } + else if (style & kCheckStyle) + { + itemWidget[i] = (void*)XtVaCreateManagedWidget (entry[i], + xmToggleButtonWidgetClass, (Widget)platformControl, + XmNset, (i == currentIndex) ? true : false, XmNvisibleWhenOff, false, 0); + XtAddCallback ((Widget)itemWidget[i], XmNvalueChangedCallback, _activateCallback, this); + } + else + { + itemWidget[i] = (void*)XtVaCreateManagedWidget (entry[i], + xmPushButtonWidgetClass, (Widget)platformControl, 0); + XtAddCallback ((Widget)itemWidget[i], XmNactivateCallback, _activateCallback, this); + } + } + } + + XtManageChild ((Widget)platformControl); + +#elif BEOS + BPopUpMenu* popup = new BPopUpMenu ("popup", false, false); + BMessage* message; + BMenuItem* item; + for (long i = 0; i < nbEntries; i++) + { + if (strcmp (entry[i], kMenuSeparator) == 0) + popup->AddSeparatorItem (); + else + { + message = new BMessage (i); + item = new BMenuItem (entry[i], message); + popup->AddItem (item); + if (multipleCheck) + { + if (check[i]) + item->SetMarked (true); + } + else if ((style & kCheckStyle) && currentIndex == i) + item->SetMarked (true); + } + } + CRect rect; + getFrame ()->getSize (&rect); + if (pContext) + { + rect.left += pContext->offset.h; + rect.top += pContext->offset.v; + } + long offset; + if (style & kPopupStyle) + offset = (int)(rect.top + size.top); + else + offset = (int)(rect.top + size.bottom); + BPoint where (rect.left + size.left, offset); + BView* plugView = (BView*) getFrame ()->getSystemWindow (); + plugView->ConvertToScreen (&where); + item = popup->Go (where); + if (item) + { + message = item->Message (); + if (message) + { + CDrawContext *pContextTemp = pContext; + // create a local context + if (!pContextTemp) + pContextTemp = new CDrawContext (getFrame (), plugView, NULL); + + setValue (message->what); + + if (listener) + listener->valueChanged (pContextTemp, this); + + // redraw the display + draw (pContextTemp); + + if (!pContext && pContextTemp) + delete pContextTemp; + } + } + delete popup; +#endif + + getFrame ()->setFocusView (0); + endEdit(); +} + +//------------------------------------------------------------------------ +void COptionMenu::looseFocus (CDrawContext *pContext) +{ + if (platformControl == 0) + return; + +#if WINDOWS +#elif MAC +#elif MOTIF + for (long i = 0; i < nbEntries; i++) + if (itemWidget[i]) + XtDestroyWidget ((Widget)itemWidget[i]); + + if (platformControl) + { + XtUnmanageChild ((Widget)platformControl); + XtDestroyWidget ((Widget)platformControl); + } +#endif + + platformControl = 0; +} + +#if MOTIF +//------------------------------------------------------------------------ +void COptionMenu::setCurrentSelected (void *itemSelected) +{ + // retrieve the current index + if (itemSelected != 0) + { + for (long i = 0; i < nbEntries; i++) + if (itemWidget[i] == itemSelected) + { + currentIndex = i; + break; + } + } + + // update dependency + CDrawContext *pContext = new CDrawContext (getFrame (), (void*)getFrame ()->getGC (), (void*)getFrame ()->getWindow ()); + + setValue (currentIndex); + + if (listener) + listener->valueChanged (pContext, this); + delete pContext; +} +#endif + + +//------------------------------------------------------------------------ +// CAnimKnob +//------------------------------------------------------------------------ +/*! @class CAnimKnob +Such as a CKnob control object, but there is a unique pixmap which contains different views (subpixmaps) of this knob. +According to the value, a specific subpixmap is displayed. The different subpixmaps are stacked in the pixmap object. +*/ +CAnimKnob::CAnimKnob (const CRect &size, CControlListener *listener, long tag, + CBitmap *background, CPoint &offset) +: CKnob (size, listener, tag, background, 0, offset), bInverseBitmap (false) +{ + heightOfOneImage = size.height (); + subPixmaps = (short)(background->getHeight () / heightOfOneImage); + inset = 0; +} + +//------------------------------------------------------------------------ +CAnimKnob::CAnimKnob (const CRect &size, CControlListener *listener, long tag, + long subPixmaps, // number of subPixmaps + CCoord heightOfOneImage, // height of one image in pixel + CBitmap *background, CPoint &offset) +: CKnob (size, listener, tag, background, 0, offset), + subPixmaps (subPixmaps), heightOfOneImage (heightOfOneImage), bInverseBitmap (false) +{ + inset = 0; +} + +//------------------------------------------------------------------------ +CAnimKnob::~CAnimKnob () +{} + +//----------------------------------------------------------------------------------------------- +bool CAnimKnob::isDirty () const +{ + if (!bDirty) + { + CPoint p; + valueToPoint (p); + if (p == lastDrawnPoint) + return false; + } + return CKnob::isDirty (); +} + +//------------------------------------------------------------------------ +void CAnimKnob::draw (CDrawContext *pContext) +{ + CPoint where (0, 0); + if (value >= 0.f) + { + CCoord tmp = heightOfOneImage * (subPixmaps - 1); + if (bInverseBitmap) + where.v = (long)((1 - value) * (float)tmp); + else + where.v = (long)(value * (float)tmp); + for (CCoord realY = 0; realY <= tmp; realY += heightOfOneImage) + { + if (where.v < realY) + { + where.v = realY - heightOfOneImage; + if (where.v < 0) + where.v = 0; + break; + } + } + } + + if (pBackground) + { + if (bTransparencyEnabled) + pBackground->drawTransparent (pContext, size, where); + else + pBackground->draw (pContext, size, where); + } + valueToPoint (lastDrawnPoint); + setDirty (false); +} + +//------------------------------------------------------------------------ +// CVerticalSwitch +//------------------------------------------------------------------------ +/*! @class CVerticalSwitch +Define a switch with a given number of positions, the current position is defined by the position +of the last click on this object (the object is divided in its height by the number of position). +Each position has its subpixmap, each subpixmap is stacked in the given handle pixmap. +By clicking Alt+Left Mouse the default value is used. +*/ +CVerticalSwitch::CVerticalSwitch (const CRect &size, CControlListener *listener, long tag, + CBitmap *background, CPoint &offset) +: CControl (size, listener, tag, background), offset (offset) +{ + heightOfOneImage = size.height (); + subPixmaps = (long)(background->getHeight () / heightOfOneImage); + iMaxPositions = subPixmaps; + + setDefaultValue (0.f); +} + +//------------------------------------------------------------------------ +CVerticalSwitch::CVerticalSwitch (const CRect &size, CControlListener *listener, long tag, + long subPixmaps, // number of subPixmaps + CCoord heightOfOneImage, // height of one image in pixel + long iMaxPositions, + CBitmap *background, CPoint &offset) +: CControl (size, listener, tag, background), offset (offset), + subPixmaps (subPixmaps), heightOfOneImage (heightOfOneImage), + iMaxPositions (iMaxPositions) +{ + setDefaultValue (0.f); +} + +//------------------------------------------------------------------------ +CVerticalSwitch::~CVerticalSwitch () +{} + +//------------------------------------------------------------------------ +void CVerticalSwitch::draw (CDrawContext *pContext) +{ + if (pBackground) + { + // source position in bitmap + CPoint where (0, heightOfOneImage * ((long)(value * (iMaxPositions - 1) + 0.5f))); + + if (bTransparencyEnabled) + pBackground->drawTransparent (pContext, size, where); + else + pBackground->draw (pContext, size, where); + } + setDirty (false); +} + +//------------------------------------------------------------------------ +void CVerticalSwitch::mouse (CDrawContext *pContext, CPoint &where, long button) +{ + if (!bMouseEnabled) + return; + + if (button == -1) button = pContext->getMouseButtons (); + if (!(button & kLButton)) + return; + + if (listener && button & (kAlt | kShift | kControl | kApple)) + { + if (listener->controlModifierClicked (pContext, this, button) != 0) + return; + } + + // check if default value wanted + if (checkDefaultValue (pContext, button)) + return; + + double coef = (double)heightOfOneImage / (double)iMaxPositions; + + // begin of edit parameter + beginEdit (); + do + { + value = (long)((where.v - size.top) / coef) / (float)(iMaxPositions - 1); + if (value > 1.f) + value = 1.f; + else if (value < 0.f) + value = 0.f; + + if (isDirty () && listener) + listener->valueChanged (pContext, this); + + getMouseLocation (pContext, where); + + doIdleStuff (); + } + while (pContext->getMouseButtons () == button); + + // end of edit parameter + endEdit (); +} + + +//------------------------------------------------------------------------ +// CHorizontalSwitch +//------------------------------------------------------------------------ +/*! @class CHorizontalSwitch +Same as the CVerticalSwitch but horizontal. +*/ +CHorizontalSwitch::CHorizontalSwitch (const CRect &size, CControlListener *listener, long tag, + CBitmap *background, CPoint &offset) +: CControl (size, listener, tag, background), offset (offset) +{ + heightOfOneImage = size.width (); + subPixmaps = (long)(background->getWidth () / heightOfOneImage); + iMaxPositions = subPixmaps; + + setDefaultValue (0.f); +} + +//------------------------------------------------------------------------ +CHorizontalSwitch::CHorizontalSwitch (const CRect &size, CControlListener *listener, long tag, + long subPixmaps, // number of subPixmaps + CCoord heightOfOneImage, // height of one image in pixel + long iMaxPositions, + CBitmap *background, CPoint &offset) +: CControl (size, listener, tag, background), offset (offset), + subPixmaps (subPixmaps), heightOfOneImage (heightOfOneImage), + iMaxPositions (iMaxPositions) +{ + setDefaultValue (0.f); +} + +//------------------------------------------------------------------------ +CHorizontalSwitch::~CHorizontalSwitch () +{} + +//------------------------------------------------------------------------ +void CHorizontalSwitch::draw (CDrawContext *pContext) +{ + if (pBackground) + { + // source position in bitmap + CPoint where (0, heightOfOneImage * ((long)(value * (iMaxPositions - 1) + 0.5f))); + + if (bTransparencyEnabled) + pBackground->drawTransparent (pContext, size, where); + else + pBackground->draw (pContext, size, where); + } + setDirty (false); +} + +//------------------------------------------------------------------------ +void CHorizontalSwitch::mouse (CDrawContext *pContext, CPoint &where, long button) +{ + if (!bMouseEnabled) + return; + + if (button == -1) button = pContext->getMouseButtons (); + + if (listener && button & (kAlt | kShift | kControl | kApple)) + { + if (listener->controlModifierClicked (pContext, this, button) != 0) + return; + } + + if (!(button & kLButton)) + return; + + // check if default value wanted + if (checkDefaultValue (pContext, button)) + return; + + double coef = (double)pBackground->getWidth () / (double)iMaxPositions; + + // begin of edit parameter + beginEdit (); + do + { + value = (long)((where.h - size.left) / coef) / (float)(iMaxPositions - 1); + if (value > 1.f) + value = 1.f; + else if (value < 0.f) + value = 0.f; + + if (isDirty () && listener) + listener->valueChanged (pContext, this); + + getMouseLocation (pContext, where); + + doIdleStuff (); + } + while (pContext->getMouseButtons () == button); + + // end of edit parameter + endEdit (); +} + + +//------------------------------------------------------------------------ +// CRockerSwitch +//------------------------------------------------------------------------ +/*! @class CRockerSwitch +Define a rocker switch with 3 states using 3 subpixmaps. +One click on its leftside, then the first subpixmap is displayed. +One click on its rightside, then the third subpixmap is displayed. +When the mouse button is relaxed, the second subpixmap is framed. +*/ +CRockerSwitch::CRockerSwitch (const CRect &size, CControlListener *listener, long tag, // identifier tag (ID) + CBitmap *background, CPoint &offset, const long style) +: CControl (size, listener, tag, background), offset (offset), style (style) +{ + heightOfOneImage = size.width (); +} + +//------------------------------------------------------------------------ +CRockerSwitch::CRockerSwitch (const CRect &size, CControlListener *listener, long tag, // identifier tag (ID) + CCoord heightOfOneImage, // height of one image in pixel + CBitmap *background, CPoint &offset, const long style) +: CControl (size, listener, tag, background), offset (offset), + heightOfOneImage (heightOfOneImage), style (style) +{} + +//------------------------------------------------------------------------ +CRockerSwitch::~CRockerSwitch () +{} + +//------------------------------------------------------------------------ +void CRockerSwitch::draw (CDrawContext *pContext) +{ + CPoint where (offset.h, offset.v); + + if (value == 1.f) + where.v += 2 * heightOfOneImage; + else if (value == 0.f) + where.v += heightOfOneImage; + + if (pBackground) + { + if (bTransparencyEnabled) + pBackground->drawTransparent (pContext, size, where); + else + pBackground->draw (pContext, size, where); + } + setDirty (false); +} + +//------------------------------------------------------------------------ +void CRockerSwitch::mouse (CDrawContext *pContext, CPoint &where, long button) +{ + if (!bMouseEnabled) + return; + + if (button == -1) button = pContext->getMouseButtons (); + + if (listener && button & (kAlt | kShift | kControl | kApple)) + { + if (listener->controlModifierClicked (pContext, this, button) != 0) + return; + } + + if (!(button & kLButton)) + return; + + float fEntryState = value; + + CCoord width_2 = size.width () / 2; + CCoord height_2 = size.height () / 2; + + // begin of edit parameter + beginEdit (); + + if (button) + { + do + { + if (style & kHorizontal) + { + if (where.h >= size.left && where.v >= size.top && + where.h <= (size.left + width_2) && where.v <= size.bottom) + value = -1.0f; + else if (where.h >= (size.left + width_2) && where.v >= size.top && + where.h <= size.right && where.v <= size.bottom) + value = 1.0f; + else + value = fEntryState; + } + else + { + if (where.h >= size.left && where.v >= size.top && + where.h <= size.right && where.v <= (size.top + height_2)) + value = -1.0f; + else if (where.h >= size.left && where.v >= (size.top + height_2) && + where.h <= size.right && where.v <= size.bottom) + value = 1.0f; + else + value = fEntryState; + } + + if (isDirty () && listener) + listener->valueChanged (pContext, this); + + getMouseLocation (pContext, where); + + doIdleStuff (); + } + while (pContext->getMouseButtons ()); + } + else + { + if (where.h >= size.left && where.v >= size.top && + where.h <= (size.left + width_2) && where.v <= size.bottom) + value = -1.0f; + else if (where.h >= (size.left + width_2) && where.v >= size.top && + where.h <= size.right && where.v <= size.bottom) + value = 1.0f; + + if (listener) + listener->valueChanged (pContext, this); + } + + value = 0.f; // set button to UNSELECTED state + if (listener) + listener->valueChanged (pContext, this); + + // end of edit parameter + endEdit (); +} + +//------------------------------------------------------------------------ +bool CRockerSwitch::onWheel (CDrawContext *pContext, const CPoint &where, float distance) +{ + if (!bMouseEnabled) + return false; + + if (distance > 0) + value = -1.0f; + else + value = 1.0f; + + // begin of edit parameter + beginEdit (); + + if (isDirty () && listener) + listener->valueChanged (pContext, this); + + value = 0.0f; // set button to UNSELECTED state + if (listener) + listener->valueChanged (pContext, this); + + // end of edit parameter + endEdit (); + + return true; +} + + +//------------------------------------------------------------------------ +// CMovieBitmap +//------------------------------------------------------------------------ +/*! @class CMovieBitmap +A movie pixmap allows to display different subpixmaps according to its current value. +*/ +CMovieBitmap::CMovieBitmap (const CRect &size, CControlListener *listener, long tag, + CBitmap *background, CPoint &offset) + : CControl (size, listener, tag, background), offset (offset), + subPixmaps (subPixmaps), heightOfOneImage (heightOfOneImage) +{ + heightOfOneImage = size.height (); + subPixmaps = (long)(background->getHeight () / heightOfOneImage); +} + +//------------------------------------------------------------------------ +CMovieBitmap::CMovieBitmap (const CRect &size, CControlListener *listener, long tag, + long subPixmaps, // number of subPixmaps + CCoord heightOfOneImage, // height of one image in pixel + CBitmap *background, CPoint &offset) + : CControl (size, listener, tag, background), offset (offset), + subPixmaps (subPixmaps), heightOfOneImage (heightOfOneImage) +{} + +//------------------------------------------------------------------------ +CMovieBitmap::~CMovieBitmap () +{} + +//------------------------------------------------------------------------ +void CMovieBitmap::draw (CDrawContext *pContext) +{ + CPoint where (offset.h, offset.v); + + if (value > 1.0f) + value = 1.0f; + + if (value > 0.0f) + where.v += heightOfOneImage * (int)(value * (subPixmaps - 1) + 0.5); + + if (pBackground) + { + if (bTransparencyEnabled) + pBackground->drawTransparent (pContext, size, where); + else + pBackground->draw (pContext, size, where); + } + setDirty (false); +} + + +//------------------------------------------------------------------------ +// CMovieButton +//------------------------------------------------------------------------ +/*! @class CMovieButton +A movie button is a bi-states button with 2 subpixmaps. These subpixmaps are stacked in the pixmap. +*/ +CMovieButton::CMovieButton (const CRect &size, CControlListener *listener, long tag, // identifier tag (ID) + CBitmap *background, CPoint &offset) +: CControl (size, listener, tag, background), offset (offset), buttonState (value) +{ + heightOfOneImage = size.height (); +} + +//------------------------------------------------------------------------ +CMovieButton::CMovieButton (const CRect &size, CControlListener *listener, long tag, + CCoord heightOfOneImage, // height of one image in pixel + CBitmap *background, CPoint &offset) + : CControl (size, listener, tag, background), offset (offset), + heightOfOneImage (heightOfOneImage), buttonState (value) +{} + +//------------------------------------------------------------------------ +CMovieButton::~CMovieButton () +{} + +//------------------------------------------------------------------------ +void CMovieButton::draw (CDrawContext *pContext) +{ + CPoint where; + + where.h = 0; + + bounceValue (); + + if (value) + where.v = heightOfOneImage; + else + where.v = 0; + + if (pBackground) + { + if (bTransparencyEnabled) + pBackground->drawTransparent (pContext, size, where); + else + pBackground->draw (pContext, size, where); + } + buttonState = value; + + setDirty (false); +} + +//------------------------------------------------------------------------ +void CMovieButton::mouse (CDrawContext *pContext, CPoint &where, long button) +{ + if (!bMouseEnabled) + return; + + if (button == -1) button = pContext->getMouseButtons (); + + if (listener && button & (kAlt | kShift | kControl | kApple)) + { + if (listener->controlModifierClicked (pContext, this, button) != 0) + return; + } + + if (!(button & kLButton)) + return; + + // this simulates a real windows button + float fEntryState = value; + + // begin of edit parameter + beginEdit (); + + if (pContext->getMouseButtons ()) + { + do + { + if (where.h >= size.left && + where.v >= size.top && + where.h <= size.right && + where.v <= size.bottom) + value = !fEntryState; + else + value = fEntryState; + + if (isDirty () && listener) + listener->valueChanged (pContext, this); + + getMouseLocation (pContext, where); + + doIdleStuff (); + } + while (pContext->getMouseButtons () == button); + } + else + { + value = !value; + if (listener) + listener->valueChanged (pContext, this); + } + + // end of edit parameter + endEdit (); + + buttonState = value; +} + + +//------------------------------------------------------------------------ +// CAutoAnimation +//------------------------------------------------------------------------ +/*! @class CAutoAnimation +An auto-animation control contains a given number of subpixmap which can be displayed in loop. +Two functions allows to get the previous or the next subpixmap (these functions increase or decrease the current value of this control). +*/ +// displays bitmaps within a (child-) window +CAutoAnimation::CAutoAnimation (const CRect &size, CControlListener *listener, long tag, + CBitmap *background, CPoint &offset) +: CControl (size, listener, tag, background), offset (offset), bWindowOpened (false) +{ + heightOfOneImage = size.height (); + subPixmaps = (long)(background->getHeight () / heightOfOneImage); + + totalHeightOfBitmap = heightOfOneImage * subPixmaps; +} + +//------------------------------------------------------------------------ +CAutoAnimation::CAutoAnimation (const CRect &size, CControlListener *listener, long tag, + long subPixmaps, // number of subPixmaps... + CCoord heightOfOneImage, // height of one image in pixel + CBitmap *background, CPoint &offset) + : CControl (size, listener, tag, background), offset (offset), + subPixmaps (subPixmaps), heightOfOneImage (heightOfOneImage), + bWindowOpened (false) +{ + totalHeightOfBitmap = heightOfOneImage * subPixmaps; +} + +//------------------------------------------------------------------------ +CAutoAnimation::~CAutoAnimation () +{} + +//------------------------------------------------------------------------ +void CAutoAnimation::draw (CDrawContext *pContext) +{ + if (isWindowOpened ()) + { + CPoint where; + where.v = (long)value + offset.v; + where.h = offset.h; + + if (pBackground) + { + if (bTransparencyEnabled) + pBackground->drawTransparent (pContext, size, where); + else + pBackground->draw (pContext, size, where); + } + } + setDirty (false); +} + +//------------------------------------------------------------------------ +void CAutoAnimation::mouse (CDrawContext *pContext, CPoint &where, long button) +{ + if (!bMouseEnabled) + return; + + if (button == -1) button = pContext->getMouseButtons (); + + if (listener && button & (kAlt | kShift | kControl | kApple)) + { + if (listener->controlModifierClicked (pContext, this, button) != 0) + return; + } + + if (!(button & kLButton)) + return; + + if (!isWindowOpened ()) + { + value = 0; + openWindow (); + setDirty (); // force to redraw + if (listener) + listener->valueChanged (pContext, this); + } + else + { + // stop info animation + value = 0; // draw first pic of bitmap + setDirty (); + closeWindow (); + } +} + +//------------------------------------------------------------------------ +void CAutoAnimation::openWindow () +{ + bWindowOpened = true; +} + +//------------------------------------------------------------------------ +void CAutoAnimation::closeWindow () +{ + bWindowOpened = false; +} + +//------------------------------------------------------------------------ +void CAutoAnimation::nextPixmap () +{ + value += heightOfOneImage; + if (value >= (totalHeightOfBitmap - heightOfOneImage)) + value = 0; +} + +//------------------------------------------------------------------------ +void CAutoAnimation::previousPixmap () +{ + value -= heightOfOneImage; + if (value < 0.f) + value = (float)(totalHeightOfBitmap - heightOfOneImage - 1); +} + + +//------------------------------------------------------------------------ +// CSlider +//------------------------------------------------------------------------ +/*! @class CSlider +Define a slider with a given background and handle. +The range of variation of the handle should be defined. +By default the handler is drawn with transparency (white color). +By clicking Alt+Left Mouse the default value is used. +*/ +CSlider::CSlider (const CRect &rect, CControlListener *listener, long tag, + long iMinPos, // min position in pixel + long iMaxPos, // max position in pixel + CBitmap *handle, // bitmap of slider + CBitmap *background, // bitmap of background + CPoint &offset, // offset in the background + const long style) // style (kBottom,kRight,kTop,kLeft,kHorizontal,kVertical) + : CControl (rect, listener, tag, background), offset (offset), pHandle (handle), + pOScreen (0), style (style), bFreeClick (true) +{ + setDrawTransparentHandle (true); + + if (pHandle) + { + pHandle->remember (); + widthOfSlider = pHandle->getWidth (); + heightOfSlider = pHandle->getHeight (); + } + else + { + widthOfSlider = 1; + heightOfSlider = 1; + } + + widthControl = size.width (); + heightControl = size.height (); + + if (style & kHorizontal) + { + minPos = iMinPos - size.left; + rangeHandle = iMaxPos - iMinPos; + CPoint p (0, 0); + setOffsetHandle (p); + } + else + { + minPos = iMinPos - size.top; + rangeHandle = iMaxPos - iMinPos; + CPoint p (0, 0); + setOffsetHandle (p); + } + + zoomFactor = 10.f; + + setWantsFocus (true); +} + +//------------------------------------------------------------------------ +CSlider::CSlider (const CRect &rect, CControlListener *listener, long tag, + CPoint &offsetHandle, // handle offset + long _rangeHandle, // size of handle range + CBitmap *handle, // bitmap of slider + CBitmap *background, // bitmap of background + CPoint &offset, // offset in the background + const long style) // style (kBottom,kRight,kTop,kLeft,kHorizontal,kVertical) +: CControl (rect, listener, tag, background), offset (offset), pHandle (handle), + pOScreen (0), style (style), minPos (0), bFreeClick (true) +{ + setDrawTransparentHandle (true); + + if (pHandle) + { + pHandle->remember (); + widthOfSlider = pHandle->getWidth (); + heightOfSlider = pHandle->getHeight (); + } + else + { + widthOfSlider = 1; + heightOfSlider = 1; + } + + widthControl = size.width (); + heightControl = size.height (); + if (style & kHorizontal) + rangeHandle = _rangeHandle - widthOfSlider; + else + rangeHandle = _rangeHandle - heightOfSlider; + + setOffsetHandle (offsetHandle); + + zoomFactor = 10.f; + + setWantsFocus (true); +} + +//------------------------------------------------------------------------ +CSlider::~CSlider () +{ + if (pHandle) + pHandle->forget (); +} + +//------------------------------------------------------------------------ +void CSlider::setOffsetHandle (CPoint &val) +{ + offsetHandle = val; + + if (style & kHorizontal) + { + minTmp = offsetHandle.h + minPos; + maxTmp = minTmp + rangeHandle + widthOfSlider; + } + else + { + minTmp = offsetHandle.v + minPos; + maxTmp = minTmp + rangeHandle + heightOfSlider; + } +} + +//----------------------------------------------------------------------------- +bool CSlider::attached (CView *parent) +{ + if (pOScreen) + delete pOScreen; + #if !MACX + pOScreen = new COffscreenContext (getFrame (), widthControl, heightControl, kBlackCColor); + #endif + return CControl::attached (parent); +} + +//----------------------------------------------------------------------------- +bool CSlider::removed (CView *parent) +{ + if (pOScreen) + { + delete pOScreen; + pOScreen = 0; + } + return CControl::removed (parent); +} + +//------------------------------------------------------------------------ +void CSlider::draw (CDrawContext *pContext) +{ + CDrawContext* drawContext = pOScreen ? pOScreen : pContext; + + #if 1 + if (pOScreen && bTransparencyEnabled) + pOScreen->copyTo (pContext, size); + #endif + float fValue; + if (style & kLeft || style & kTop) + fValue = value; + else + fValue = 1.f - value; + + // (re)draw background + CRect rect (0, 0, widthControl, heightControl); + if (!pOScreen) + rect.offset (size.left, size.top); + if (pBackground) + { + if (bTransparencyEnabled) + pBackground->drawTransparent (drawContext, rect, offset); + else + pBackground->draw (drawContext, rect, offset); + } + + // calc new coords of slider + CRect rectNew; + if (style & kHorizontal) + { + rectNew.top = offsetHandle.v; + rectNew.bottom = rectNew.top + heightOfSlider; + + rectNew.left = offsetHandle.h + (int)(fValue * rangeHandle); + rectNew.left = (rectNew.left < minTmp) ? minTmp : rectNew.left; + + rectNew.right = rectNew.left + widthOfSlider; + rectNew.right = (rectNew.right > maxTmp) ? maxTmp : rectNew.right; + } + else + { + rectNew.left = offsetHandle.h; + rectNew.right = rectNew.left + widthOfSlider; + + rectNew.top = offsetHandle.v + (int)(fValue * rangeHandle); + rectNew.top = (rectNew.top < minTmp) ? minTmp : rectNew.top; + + rectNew.bottom = rectNew.top + heightOfSlider; + rectNew.bottom = (rectNew.bottom > maxTmp) ? maxTmp : rectNew.bottom; + } + if (!pOScreen) + rectNew.offset (size.left, size.top); + + // draw slider at new position + if (pHandle) + { + if (bDrawTransparentEnabled) + pHandle->drawTransparent (drawContext, rectNew); + else + pHandle->draw (drawContext, rectNew); + } + + if (pOScreen) + pOScreen->copyFrom (pContext, size); + + setDirty (false); +} + +//------------------------------------------------------------------------ +void CSlider::mouse (CDrawContext *pContext, CPoint &where, long button) +{ + if (!bMouseEnabled) + return; + + if (button == -1) button = pContext->getMouseButtons (); + + if (listener && button & (kAlt | kShift | kControl | kApple)) + { + if (listener->controlModifierClicked (pContext, this, button) != 0) + return; + } + + // check if default value wanted + if (checkDefaultValue (pContext, button)) + return; + + // allow left mousebutton only + if (!(button & kLButton)) + return; + + CCoord delta; + if (style & kHorizontal) + delta = size.left + offsetHandle.h; + else + delta = size.top + offsetHandle.v; + if (!bFreeClick) + { + float fValue; + if (style & kLeft || style & kTop) + fValue = value; + else + fValue = 1.f - value; + CCoord actualPos; + CRect rect; + + if (style & kHorizontal) + { + actualPos = offsetHandle.h + (int)(fValue * rangeHandle) + size.left; + + rect.left = actualPos; + rect.top = size.top + offsetHandle.v; + rect.right = rect.left + widthOfSlider; + rect.bottom = rect.top + heightOfSlider; + + if (!where.isInside (rect)) + return; + else + delta += where.h - actualPos; + } + else + { + actualPos = offsetHandle.v + (int)(fValue * rangeHandle) + size.top; + + rect.left = size.left + offsetHandle.h; + rect.top = actualPos; + rect.right = rect.left + widthOfSlider; + rect.bottom = rect.top + heightOfSlider; + + if (!where.isInside (rect)) + return; + else + delta += where.v - actualPos; + } + } + else + { + if (style & kHorizontal) + delta += widthOfSlider / 2 - 1; + else + delta += heightOfSlider / 2 - 1; + } + + float oldVal = value; + long oldButton = button; + + // begin of edit parameter + beginEdit (); + + while (1) + { + button = pContext->getMouseButtons (); + if (!(button & kLButton)) + break; + + if ((oldButton != button) && (button & kShift)) + { + oldVal = value; + oldButton = button; + } + else if (!(button & kShift)) + oldVal = value; + + if (style & kHorizontal) + value = (float)(where.h - delta) / (float)rangeHandle; + else + value = (float)(where.v - delta) / (float)rangeHandle; + + if (style & kRight || style & kBottom) + value = 1.f - value; + + if (button & kShift) + value = oldVal + ((value - oldVal) / zoomFactor); + bounceValue (); + + if (isDirty () && listener) + listener->valueChanged (pContext, this); + + getMouseLocation (pContext, where); + + doIdleStuff (); + } + + // end of edit parameter + endEdit (); +} + +//------------------------------------------------------------------------ +bool CSlider::onWheel (CDrawContext *pContext, const CPoint &where, float distance) +{ + if (!bMouseEnabled) + return false; + + long buttons = pContext->getMouseButtons (); + if (buttons & kShift) + value += 0.1f * distance * wheelInc; + else + value += distance * wheelInc; + bounceValue (); + + if (isDirty () && listener) + { + // begin of edit parameter + beginEdit (); + + listener->valueChanged (pContext, this); + + // end of edit parameter + endEdit (); + } + + return true; +} + +//------------------------------------------------------------------------ +long CSlider::onKeyDown (VstKeyCode& keyCode) +{ + switch (keyCode.virt) + { + case VKEY_UP : + case VKEY_RIGHT : + case VKEY_DOWN : + case VKEY_LEFT : + { + float distance = 1.f; + if (keyCode.virt == VKEY_DOWN || keyCode.virt == VKEY_LEFT) + distance = -distance; + + if (keyCode.modifier & MODIFIER_SHIFT) + value += 0.1f * distance * wheelInc; + else + value += distance * wheelInc; + bounceValue (); + + if (isDirty () && listener) + { + // begin of edit parameter + beginEdit (); + + listener->valueChanged (0, this); + + // end of edit parameter + endEdit (); + } + } return 1; + } + return -1; +} + +//------------------------------------------------------------------------ +void CSlider::setHandle (CBitmap *_pHandle) +{ + if (pHandle) + pHandle->forget (); + pHandle = _pHandle; + if (pHandle) + { + pHandle->remember (); + widthOfSlider = pHandle->getWidth (); + heightOfSlider = pHandle->getHeight (); + } +} + + +//------------------------------------------------------------------------ +// CVerticalSlider +//------------------------------------------------------------------------ +/*! @class CVerticalSlider +This is the vertical slider. See CSlider. +*/ +CVerticalSlider::CVerticalSlider (const CRect &rect, CControlListener *listener, long tag, + long iMinPos, // min position in pixel + long iMaxPos, // max position in pixel + CBitmap *handle, // bitmap of slider + CBitmap *background, // bitmap of background + CPoint &offset, // offset in the background + const long style) // style (kLeft, kRight) + : CSlider (rect, listener, tag, iMinPos, iMaxPos, handle, background, offset, style|kVertical) +{} + +//------------------------------------------------------------------------ +CVerticalSlider::CVerticalSlider (const CRect &rect, CControlListener *listener, long tag, + CPoint &offsetHandle, // handle offset + long rangeHandle, // size of handle range + CBitmap *handle, // bitmap of slider + CBitmap *background, // bitmap of background + CPoint &offset, // offset in the background + const long style) // style (kLeft, kRight) +: CSlider (rect, listener, tag, offsetHandle, rangeHandle, handle, background, offset, style|kVertical) +{} + + +//------------------------------------------------------------------------ +// CHorizontalSlider +//------------------------------------------------------------------------ +/*! @class CHorizontalSlider +This is the horizontal slider. See CSlider. +*/ +CHorizontalSlider::CHorizontalSlider (const CRect &rect, CControlListener *listener, long tag, + long iMinPos, // min Y position in pixel + long iMaxPos, // max Y position in pixel + CBitmap *handle, // bitmap of slider + CBitmap *background, // bitmap of background + CPoint &offset, // offset in the background + const long style) // style (kLeft, kRight) + : CSlider (rect, listener, tag, iMinPos, iMaxPos, handle, background, offset, style|kHorizontal) +{} + +//------------------------------------------------------------------------ +CHorizontalSlider::CHorizontalSlider (const CRect &rect, CControlListener *listener, long tag, + CPoint &offsetHandle, // handle offset + long rangeHandle, // size of handle range + CBitmap *handle, // bitmap of slider + CBitmap *background, // bitmap of background + CPoint &offset, // offset in the background + const long style) // style (kLeft, kRight) +: CSlider (rect, listener, tag, offsetHandle, rangeHandle, handle, background, offset, style|kHorizontal) +{} + + +//------------------------------------------------------------------------ +// CSpecialDigit +//------------------------------------------------------------------------ +/*! @class CSpecialDigit +Can be used to display a counter with maximum 7 digits. +All digit have the same size and are stacked in height in the pixmap. +*/ +CSpecialDigit::CSpecialDigit (const CRect &size, + CControlListener *listener, + long tag, // tag identifier + long dwPos, // actual value + long iNumbers, // amount of numbers (max 7) + long *xpos, // array of all XPOS + long *ypos, // array of all YPOS + long width, // width of ONE number + long height, // height of ONE number + CBitmap *background) // bitmap numbers + : CControl (size, listener, tag, background), + iNumbers (iNumbers), width (width), height (height) +{ + setValue ((float)dwPos); // actual value + + if (iNumbers > 7) + iNumbers = 7; + + if (xpos == NULL) + { + // automatically init xpos/ypos if not provided by caller + const int numw = (const int)background->getWidth(); + int x = (int)size.left; + for (long i = 0; i < iNumbers; i++) + { + this->xpos[i] = x; + this->ypos[i] = (long)size.top; + x += numw; + } + } + else + { + // store coordinates of x/y pos of each digit + for (long i = 0; i < iNumbers; i++) + { + this->xpos[i] = xpos[i]; + this->ypos[i] = ypos[i]; + } + } + + setMax ((float)pow (10., (double)iNumbers) - 1.0f); + setMin (0.0f); +} + +//------------------------------------------------------------------------ +CSpecialDigit::~CSpecialDigit () +{} + +//------------------------------------------------------------------------ +void CSpecialDigit::draw (CDrawContext *pContext) +{ + CPoint where; + CRect rectDest; + long i, j; + long dwValue; + long one_digit[16]; + + if ((long)value >= getMax ()) + dwValue = (long)getMax (); + else if ((long)value < getMin ()) + dwValue = (long)getMin (); + else + dwValue = (long)value; + + for (i = 0, j = ((long)getMax () + 1) / 10; i < iNumbers; i++, j /= 10) + { + one_digit[i] = dwValue / j; + dwValue -= (one_digit[i] * j); + } + + where.h = 0; + for (i = 0; i < iNumbers; i++) + { + j = one_digit[i]; + if (j > 9) + j = 9; + + rectDest.left = xpos[i]; + rectDest.top = ypos[i]; + + rectDest.right = rectDest.left + width; + rectDest.bottom = rectDest.top + height; + + // where = src from bitmap + where.v = j * height; + if (pBackground) + { + if (bTransparencyEnabled) + pBackground->drawTransparent (pContext, rectDest, where); + else + pBackground->draw (pContext, rectDest, where); + } + } + + setDirty (false); +} + +//------------------------------------------------------------------------ +float CSpecialDigit::getNormValue () const +{ + float fTemp; + fTemp = value / getMax (); + if (fTemp > 1.0f) + fTemp = 1.0f; + else if (fTemp < 0.0f) + fTemp = 0.0f; + + return fTemp; +} + + +//------------------------------------------------------------------------ +// CKickButton +//------------------------------------------------------------------------ +/*! @class CKickButton +Define a button with 2 states using 2 subpixmaps. +One click on it, then the second subpixmap is displayed. +When the mouse button is relaxed, the first subpixmap is framed. +*/ +CKickButton::CKickButton (const CRect &size, CControlListener *listener, long tag, + CBitmap *background, CPoint &offset) +: CControl (size, listener, tag, background), offset (offset) +{ + heightOfOneImage = size.height (); +} + +//------------------------------------------------------------------------ +CKickButton::CKickButton (const CRect &size, CControlListener *listener, long tag, + CCoord heightOfOneImage, // height of one image in pixel + CBitmap *background, CPoint &offset) +: CControl (size, listener, tag, background), offset (offset), + heightOfOneImage (heightOfOneImage) +{} + +//------------------------------------------------------------------------ +CKickButton::~CKickButton () +{} + +//------------------------------------------------------------------------ +void CKickButton::draw (CDrawContext *pContext) +{ + CPoint where (offset.h, offset.v); + + bounceValue (); + + if (value) + where.v += heightOfOneImage; + + if (pBackground) + { + if (bTransparencyEnabled) + pBackground->drawTransparent (pContext, size, where); + else + pBackground->draw (pContext, size, where); + } + setDirty (false); +} + +//------------------------------------------------------------------------ +void CKickButton::mouse (CDrawContext *pContext, CPoint &where, long button) +{ + if (!bMouseEnabled) + return; + + if (button == -1) button = pContext->getMouseButtons (); + + if (listener && button & (kAlt | kShift | kControl | kApple)) + { + if (listener->controlModifierClicked (pContext, this, button) != 0) + return; + } + + if (!(button & kLButton)) + return; + + // this simulates a real windows button + float fEntryState = value; + + // begin of edit parameter + beginEdit (); + + if (pContext->getMouseButtons () == kLButton) + { + do + { + if (where.h >= size.left && where.v >= size.top && + where.h <= size.right && where.v <= size.bottom) + value = !fEntryState; + else + value = fEntryState; + + if (isDirty () && listener) + listener->valueChanged (pContext, this); + + getMouseLocation (pContext, where); + + doIdleStuff (); + } + while (pContext->getMouseButtons () == kLButton); + } + else + { + value = !value; + if (listener) + listener->valueChanged (pContext, this); + } + + value = 0.0f; // set button to UNSELECTED state + if (listener) + listener->valueChanged (pContext, this); + + // end of edit parameter + endEdit (); +} + + +//------------------------------------------------------------------------ +class CSplashScreenView : public CView +{ +public: + CSplashScreenView (const CRect& size, CSplashScreen* splashScreen) + : CView (size) + , splashScreen (splashScreen) + { + setTransparency (splashScreen->getTransparency ()); + setBackground (splashScreen->getBackground ()); + } + + void draw (CDrawContext *pContext) + { + if (bTransparencyEnabled) + { + if (splashScreen->getBitmapTransparency ()) + pBackground->drawAlphaBlend (pContext, size, splashScreen->getOffset (), splashScreen->getBitmapTransparency ()); + else + pBackground->drawTransparent (pContext, size, splashScreen->getOffset ()); + } + else + pBackground->draw (pContext, size, splashScreen->getOffset ()); + setDirty (false); + } + + void mouse (CDrawContext *pContext, CPoint &where, long button) + { + if (button & kLButton) + { + splashScreen->unSplash (pContext); + getFrame ()->setDirty (true); + getFrame ()->setModalView (0); + forget (); + } + } + +protected: + CSplashScreen* splashScreen; +}; + +//------------------------------------------------------------------------ +// CSplashScreen +//------------------------------------------------------------------------ +/*! @class CSplashScreen +One click on its activated region and its pixmap is displayed, in this state the other control can not be used, +an another click on the displayed area reinstalls the normal frame. +This can be used to display a help view over the other views. +*/ +// one click draw its pixmap, an another click redraw its parent +CSplashScreen::CSplashScreen (const CRect &size, CControlListener *listener, long tag, + CBitmap *background, + CRect &toDisplay, + CPoint &offset) +: CControl (size, listener, tag, background), + toDisplay (toDisplay), offset (offset), bitmapTransparency (255) +{} + +//------------------------------------------------------------------------ +CSplashScreen::~CSplashScreen () +{} + +//------------------------------------------------------------------------ +void CSplashScreen::setBitmapTransparency (unsigned char transparency) +{ + bitmapTransparency = transparency; + setTransparency (bitmapTransparency != 255); +} + +//------------------------------------------------------------------------ +void CSplashScreen::draw (CDrawContext *pContext) +{ + if (value && pBackground) + { + if (bTransparencyEnabled) + { + if (bitmapTransparency) + pBackground->drawAlphaBlend (pContext, toDisplay, offset, bitmapTransparency); + else + pBackground->drawTransparent (pContext, toDisplay, offset); + } + else + pBackground->draw (pContext, toDisplay, offset); + } + setDirty (false); +} + +//------------------------------------------------------------------------ +bool CSplashScreen::hitTest (const CPoint& where, const long buttons) +{ + bool result = CView::hitTest (where, buttons); + if (result && !(buttons & kLButton)) + return false; + return result; +} + +//------------------------------------------------------------------------ +void CSplashScreen::mouse (CDrawContext *pContext, CPoint &where, long button) +{ + if (!bMouseEnabled) + return; + + if (button == -1) button = pContext->getMouseButtons (); + + if (listener && button & (kAlt | kShift | kControl | kApple)) + { + if (listener->controlModifierClicked (pContext, this, button) != 0) + return; + } + + if (!(button & kLButton)) + return; + + value = !value; + if (value) + { + CSplashScreenView* ssv = new CSplashScreenView (toDisplay, this); + if (getFrame () && getFrame ()->setModalView (ssv)) + { +// keepSize = size; +// size = toDisplay; +// mouseableArea = size; + if (listener) + listener->valueChanged (pContext, this); + } + setDirty (); + } +// else +// { +// size = keepSize; +// mouseableArea = size; +// if (listener) +// listener->valueChanged (pContext, this); +// if (getFrame ()) +// { +// getFrame ()->setDirty (true); +// getFrame ()->setModalView (NULL); +// } +// } +} + +//------------------------------------------------------------------------ +void CSplashScreen::unSplash (CDrawContext* pContext) +{ +// setDirty (); +// value = 0.f; +// +// size = keepSize; +// if (getFrame ()) +// { +// if (getFrame ()->getModalView () == this) +// { +// getFrame ()->setModalView (NULL); +// getFrame ()->redraw (); +// } +// } + if (value) + { + value = 0; + if (listener) + listener->valueChanged (pContext, this); + } +} + +//------------------------------------------------------------------------ +// CVuMeter +//------------------------------------------------------------------------ +CVuMeter::CVuMeter (const CRect &size, CBitmap *onBitmap, CBitmap *offBitmap, + long nbLed, const long style) + : CControl (size, 0, 0), + onBitmap (onBitmap), offBitmap (offBitmap), pOScreen (0), + nbLed (nbLed), style (style) +{ + setDecreaseStepValue (0.1f); + +#if WINDOWS && !USE_LIBPNG + setUseOffscreen (true); +#endif + + if (onBitmap) + onBitmap->remember (); + if (offBitmap) + offBitmap->remember (); + + rectOn (size.left, size.top, size.right, size.bottom); + rectOff (size.left, size.top, size.right, size.bottom); +} + +//------------------------------------------------------------------------ +CVuMeter::~CVuMeter () +{ + if (onBitmap) + onBitmap->forget (); + if (offBitmap) + offBitmap->forget (); +} + +//------------------------------------------------------------------------ +void CVuMeter::setDirty (const bool val) +{ + CView::setDirty (val); +} + +//----------------------------------------------------------------------------- +bool CVuMeter::attached (CView *parent) +{ + if (pOScreen) + delete pOScreen; + + if (bUseOffscreen) + { + pOScreen = new COffscreenContext (getFrame (), (long)size.width (), (long)size.height (), kBlackCColor); + rectOn (0, 0, size.width (), size.height ()); + rectOff (0, 0, size.width (), size.height ()); + } + else + { + rectOn (size.left, size.top, size.right, size.bottom); + rectOff (size.left, size.top, size.right, size.bottom); + } + + return CControl::attached (parent); +} + +//------------------------------------------------------------------------ +void CVuMeter::setUseOffscreen (bool val) +{ + bUseOffscreen = val; +} + +//----------------------------------------------------------------------------- +bool CVuMeter::removed (CView *parent) +{ + if (pOScreen) + { + delete pOScreen; + pOScreen = 0; + } + return CControl::removed (parent); +} + +//------------------------------------------------------------------------ +void CVuMeter::draw (CDrawContext *_pContext) +{ + if (!onBitmap) + return; + + CPoint pointOn; + CPoint pointOff; + CDrawContext *pContext = _pContext; + + bounceValue (); + + float newValue = oldValue - decreaseValue; + if (newValue < value) + newValue = value; + oldValue = newValue; + + if (bUseOffscreen) + { + if (!pOScreen) + { + pOScreen = new COffscreenContext (getFrame (), (long)size.width (), (long)size.height (), kBlackCColor); + rectOn (0, 0, size.width (), size.height ()); + rectOff (0, 0, size.width (), size.height ()); + } + pContext = pOScreen; + } + + if (style & kHorizontal) + { + CCoord tmp = (long)(((long)(nbLed * newValue + 0.5f) / (float)nbLed) * onBitmap->getWidth ()); + pointOff (tmp, 0); + if (!bUseOffscreen) + tmp += size.left; + + rectOff.left = tmp; + rectOn.right = tmp; + } + else + { + CCoord tmp = (long)(((long)(nbLed * (getMax () - newValue) + 0.5f) / (float)nbLed) * onBitmap->getHeight ()); + pointOn (0, tmp); + if (!bUseOffscreen) + tmp += size.top; + + rectOff.bottom = tmp; + rectOn.top = tmp; + } + + if (offBitmap) + { + if (bTransparencyEnabled) + offBitmap->drawTransparent (pContext, rectOff, pointOff); + else + offBitmap->draw (pContext, rectOff, pointOff); + } + + if (bTransparencyEnabled) + onBitmap->drawTransparent (pContext, rectOn, pointOn); + else + onBitmap->draw (pContext, rectOn, pointOn); + + if (pOScreen) + pOScreen->copyFrom (_pContext, size); + setDirty (false); +} + +END_NAMESPACE_VSTGUI +//------------------------------------------------------------------------ +// END. +//------------------------------------------------------------------------ diff --git a/vstgui.sf/vstgui/vstcontrols.h b/vstgui.sf/vstgui/vstcontrols.h new file mode 100644 index 0000000..515cafc --- /dev/null +++ b/vstgui.sf/vstgui/vstcontrols.h @@ -0,0 +1,996 @@ +//----------------------------------------------------------------------------- +// VST Plug-Ins SDK +// VSTGUI: Graphical User Interface Framework for VST plugins : +// Standard Control Objects +// +// Version 3.0 $Date: 2006/02/08 17:29:59 $ +// +//----------------------------------------------------------------------------- +// VSTGUI LICENSE +// © 2004, Steinberg Media Technologies, All Rights Reserved +//----------------------------------------------------------------------------- +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// * Neither the name of the Steinberg Media Technologies nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +// OF THE POSSIBILITY OF SUCH DAMAGE. +//----------------------------------------------------------------------------- + +#ifndef __vstcontrols__ +#define __vstcontrols__ + +#ifndef __vstgui__ +#include "vstgui.h" +#endif + +//------------------ +// defines +//------------------ +#ifndef kPI +#define kPI 3.14159265358979323846 +#endif + +#ifndef k2PI +#define k2PI 6.28318530717958647692 +#endif + +#ifndef kPI_2 +#define kPI_2 1.57079632679489661923f +#endif + +#ifndef kPI_4 +#define kPI_4 0.78539816339744830962 +#endif + +#ifndef kE +#define kE 2.7182818284590452354 +#endif + +#ifndef kLN2 +#define kLN2 0.69314718055994530942 +#endif + +#ifndef kSQRT2 +#define kSQRT2 1.41421356237309504880 +#endif + +//------------------ +// CControlEnum type +//------------------ +enum CControlEnum +{ + kHorizontal = 1 << 0, + kVertical = 1 << 1, + kShadowText = 1 << 2, + kLeft = 1 << 3, + kRight = 1 << 4, + kTop = 1 << 5, + kBottom = 1 << 6, + k3DIn = 1 << 7, + k3DOut = 1 << 8, + kPopupStyle = 1 << 9, + kCheckStyle = 1 << 10, + kMultipleCheckStyle, + kNoTextStyle = 1 << 11, + kNoDrawStyle = 1 << 12, + kDoubleClickStyle = 1 << 13, + kNoFrame = 1 << 14 +}; + +//--------------------------- +// Some defines for Menu item +//--------------------------- +#define kMenuTitle "-T" +#define kMenuSeparator "-" +#define kMenuDisable "-G" +#define kMenuSubMenu "-M" + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +class CControlListener +{ +public: + #if USE_NAMESPACE + virtual void valueChanged (VSTGUI::CDrawContext *pContext, VSTGUI::CControl *pControl) = 0; + virtual long controlModifierClicked (VSTGUI::CDrawContext *pContext, VSTGUI::CControl *pControl, long button) { return 0; } // return 1 if you want the control to not handle it, otherwise 0 + #else + virtual void valueChanged (CDrawContext *pContext, CControl *pControl) = 0; + virtual long controlModifierClicked (CDrawContext *pContext, CControl *pControl, long button) { return 0; } // return 1 if you want the control to not handle it, otherwise 0 + #endif +}; + +class AudioEffectX; + +//----------------------------------------------------------------------------- +BEGIN_NAMESPACE_VSTGUI +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +// CControl Declaration +//! base class of all VSTGUI controls +//----------------------------------------------------------------------------- +class CControl : public CView +{ +public: + CControl (const CRect &size, CControlListener *listener = 0, long tag = 0, + CBitmap *pBackground = 0); + virtual ~CControl (); + + virtual void draw (CDrawContext *pContext) = 0; + virtual void doIdleStuff () { if (pParentFrame) pParentFrame->doIdleStuff (); } + + virtual void setValue (float val) { value = val; } + virtual float getValue () const { return value; }; + + virtual void setMin (float val) { vmin = val; } + virtual float getMin () const { return vmin; } + virtual void setMax (float val) { vmax = val; } + virtual float getMax () const { return vmax; } + + virtual void setOldValue (float val) { oldValue = val; } + virtual float getOldValue (void) const { return oldValue; } + virtual void setDefaultValue (float val) { defaultValue = val; } + virtual float getDefaultValue (void) const { return defaultValue; } + + virtual void setTag (long val) { tag = val; } + virtual long getTag () const { return tag; } + + virtual bool isDirty () const; + virtual void setDirty (const bool val = true); + + virtual void beginEdit (); + virtual void endEdit (); + + virtual void setBackOffset (CPoint &offset); + virtual void copyBackOffset (); + + virtual void setWheelInc (float val) { wheelInc = val; } + virtual float getWheelInc () const { return wheelInc; } + + virtual void bounceValue (); + virtual bool checkDefaultValue (CDrawContext *pContext, long button); + + CControlListener* getListener () const { return listener; } + void setListener (CControlListener* l) { listener = l; } + bool isDoubleClick (); + + CLASS_METHODS(CControl, CView) + +protected: + CControlListener *listener; + long tag; + float oldValue; + float defaultValue; + float value; + float vmin; + float vmax; + float wheelInc; + + long lastTicks; + long delta; + + CPoint backOffset; +}; + + +//----------------------------------------------------------------------------- +// COnOffButton Declaration +//! a button control with 2 states +//----------------------------------------------------------------------------- +class COnOffButton : public CControl +{ +public: + COnOffButton (const CRect &size, CControlListener *listener, long tag, + CBitmap *background, long style = kPreListenerUpdate); + virtual ~COnOffButton (); + + virtual void draw (CDrawContext*); + virtual void mouse (CDrawContext *pContext, CPoint &where, long button = -1); + + virtual long getStyle () const { return style; } + virtual void setStyle (long newStyle) { style = newStyle; } + + enum { + kPreListenerUpdate, ///< listener will be called after doIdleStuff was called + kPostListenerUpdate, ///< listener will be called before doIdleStuff is called + }; + + CLASS_METHODS(COnOffButton, CControl) +protected: + long style; +}; + + +//----------------------------------------------------------------------------- +// CParamDisplay Declaration +//! a parameter display control +//----------------------------------------------------------------------------- +class CParamDisplay : public CControl +{ +public: + CParamDisplay (const CRect &size, CBitmap *background = 0, const long style = 0); + virtual ~CParamDisplay (); + + virtual void setFont (CFont fontID); + CFont getFont () const { return fontID; } + + virtual void setFontColor (CColor color); + CColor getFontColor () const { return fontColor; } + + virtual void setBackColor (CColor color); + CColor getBackColor () const { return backColor; } + + virtual void setFrameColor (CColor color); + CColor getFrameColor () const { return frameColor; } + + virtual void setShadowColor (CColor color); + CColor getShadowColor () const { return shadowColor; } + + virtual void setHoriAlign (CHoriTxtAlign hAlign); + + virtual void setStringConvert (void (*convert) (float value, char *string)); + virtual void setStringConvert (void (*convert) (float value, char *string, void *userDta), + void *userData); + virtual void setString2FloatConvert (void (*convert) (char *string, float &output)); + + virtual void setStyle (long val); + long getStyle () const { return style; } + + virtual void setTxtFace (CTxtFace val); + CTxtFace getTxtFace () const { return txtFace; } + + virtual void draw (CDrawContext *pContext); + + virtual void setTextTransparency (bool val) { bTextTransparencyEnabled = val; } + bool getTextTransparency () const { return bTextTransparencyEnabled; } + + CLASS_METHODS(CParamDisplay, CControl) + +protected: + void drawText (CDrawContext *pContext, char *string, CBitmap *newBack = 0); + + void (*stringConvert) (float value, char *string); + void (*stringConvert2) (float value, char *string, void *userData); + void (*string2FloatConvert) (char *string, float &output); + void *userData; + + CHoriTxtAlign horiTxtAlign; + long style; + + CFont fontID; + CTxtFace txtFace; + CColor fontColor; + CColor backColor; + CColor frameColor; + CColor shadowColor; + bool bTextTransparencyEnabled; +}; + + +//----------------------------------------------------------------------------- +// CLabel Declaration +//! a text label +//----------------------------------------------------------------------------- +class CTextLabel : public CParamDisplay +{ +public: + CTextLabel (const CRect& size, const char* txt = 0, CBitmap* background = 0, const long style = 0); + ~CTextLabel (); + + virtual void setText (const char* txt); + virtual const char* getText () const; + + virtual void draw (CDrawContext *pContext); + + CLASS_METHODS(CTextLabel, CParamDisplay) + +protected: + void freeText (); + char* text; +}; + +//----------------------------------------------------------------------------- +// CTextEdit Declaration +//! a text edit control +//----------------------------------------------------------------------------- +class CTextEdit : public CParamDisplay +{ +public: + CTextEdit (const CRect &size, CControlListener *listener, long tag, const char *txt = 0, + CBitmap *background = 0, const long style = 0); + virtual ~CTextEdit (); + + virtual void setText (char *txt); + virtual void getText (char *txt) const; + + virtual void draw (CDrawContext *pContext); + virtual void mouse (CDrawContext *pContext, CPoint &where, long button = -1); + + virtual void setTextEditConvert (void (*editConvert) (char *input, char *string)); + virtual void setTextEditConvert (void (*editConvert2) (char *input, char *string, + void *userDta), void *userData); + + virtual void takeFocus (CDrawContext *pContext = 0); + virtual void looseFocus (CDrawContext *pContext = 0); + + void *platformFontColor; + void *platformControl; + bool bWasReturnPressed; + #if MAC + short pluginResID; + #if QUARTZ + HIViewRef textControl; + #endif + #endif + + CLASS_METHODS(CTextEdit, CParamDisplay) + +protected: + void *platformFont; + char text[256]; + +#if (MAC && !MACX) + void *text_edit; + bool bLoosefocusWanted; +#endif + + void (*editConvert) (char *input, char *string); + void (*editConvert2) (char *input, char *string, void *userData); +}; + + +//----------------------------------------------------------------------------- +// COptionMenuScheme Declaration +//----------------------------------------------------------------------------- +class COptionMenuScheme : public CReferenceCounter +{ +public: + COptionMenuScheme (); + virtual ~COptionMenuScheme (); + + enum { kChecked = 0x01, kDisabled = 0x02, kSelected = 0x04, kSubMenu = 0x08, kTitle = 0x10 }; + + virtual void getItemSize (const char* text, CDrawContext* pContext, CPoint& size); + virtual void drawItem (const char* text, long itemId, long state, CDrawContext* pContext, const CRect& rect); + + void setColors (CColor back, CColor select, CColor text, CColor htext, CColor dtext) + { backgroundColor = back; selectionColor = select; textColor = text; + hiliteTextColor = htext; disableTextColor = dtext;} + + void setFont (CFont f) { font = f; } +protected: + + CColor backgroundColor; + CColor selectionColor; + CColor textColor; + CColor hiliteTextColor; + CColor disableTextColor; + CFont font; + + virtual void drawItemBack (CDrawContext* pContext, const CRect& rect, bool hilite); + + #if MAC_ENABLE_MENU_SCHEME + static pascal OSStatus eventHandler (EventHandlerCallRef inCallRef, EventRef inEvent, void *inUserData); + void registerWithToolbox (); + void unregisterWithToolbox (); + #endif +}; + +//----------------------------------------------------------------------------- +extern COptionMenuScheme* gOptionMenuScheme; + +//----------------------------------------------------------------------------- +// COptionMenu Declaration +//! a popup menu control +//----------------------------------------------------------------------------- +class COptionMenu : public CParamDisplay +{ +public: + COptionMenu (const CRect &size, CControlListener *listener, long tag, + CBitmap *background = 0, CBitmap *bgWhenClick = 0, + const long style = 0); + virtual ~COptionMenu (); + + enum { MAX_ENTRY = 1024 }; + + virtual void setValue (float val); + virtual bool addEntry (COptionMenu *subMenu, char *txt); + virtual bool addEntry (char *txt, long index = -1); + virtual long getCurrent (char *txt = 0, bool countSeparator = true) const; + virtual bool setCurrent (long index, bool countSeparator = true); + virtual bool getEntry (long index, char *txt) const; + virtual bool setEntry (long index, char *txt); + virtual bool removeEntry (long index); + virtual bool removeAllEntry (); + virtual long getNbEntries () const { return nbEntries; } + virtual long getIndex (char *txt) const; + + virtual bool checkEntry (long index, bool state); + virtual bool checkEntryAlone (long index); + virtual bool isCheckEntry (long index) const; + + virtual void draw (CDrawContext *pContext); + virtual void mouse (CDrawContext *pContext, CPoint &where, long button = -1); + + virtual void takeFocus (CDrawContext *pContext = 0); + virtual void looseFocus (CDrawContext *pContext = 0); + + virtual void setNbItemsPerColumn (long val) { nbItemsPerColumn = val; } + virtual long getNbItemsPerColumn () const { return nbItemsPerColumn; } + +#if MOTIF + void setCurrentSelected (void *itemSelected); +#elif MAC + short getMenuID () const { return menuID; } +#endif + + long getLastResult () const { return lastResult; } + COptionMenu *getLastItemMenu (long &idxInMenu) const; + + void setScheme (COptionMenuScheme* s) { scheme = s; } + virtual COptionMenuScheme* getScheme () const { return scheme; } + + virtual void setPrefixNumbers (long preCount); + + COptionMenu* getSubMenu (long idx) const; + + CLASS_METHODS(COptionMenu, CParamDisplay) + +protected: + COptionMenu *getItemMenu (long idx, long &idxInMenu, long &offsetIdx); + void removeItems (); + void *appendItems (long &offsetIdx); + + void *platformControl; + + bool allocateMenu (long nb); + bool allocateSubMenu (long nb); + + char **entry; + COptionMenu **submenuEntry; + bool *check; + +#if MOTIF + void *itemWidget[MAX_ENTRY]; +#elif MAC + short menuID; +#endif + + long nbEntries; + long nbSubMenus; + long currentIndex; + CBitmap *bgWhenClick; + long lastButton; + long nbItemsPerColumn; + long nbAllocated; + long nbSubMenuAllocated; + long lastResult; + long prefixNumbers; + COptionMenu *lastMenu; + COptionMenuScheme* scheme; +}; + + +//----------------------------------------------------------------------------- +// CKnob Declaration +//! a knob control +//----------------------------------------------------------------------------- +class CKnob : public CControl +{ +public: + CKnob (const CRect &size, CControlListener *listener, long tag, + CBitmap *background, CBitmap *handle, const CPoint &offset); + virtual ~CKnob (); + + virtual void draw (CDrawContext *pContext); + virtual void mouse (CDrawContext *pContext, CPoint &where, long button = -1); + virtual bool onWheel (CDrawContext *pContext, const CPoint &where, float distance); + virtual long onKeyDown (VstKeyCode& keyCode); + + virtual void drawHandle (CDrawContext *pContext); + + virtual void setStartAngle (float val); + virtual float getStartAngle () const { return startAngle; } + + virtual void setRangeAngle (float val); + virtual float getRangeAngle () const { return rangeAngle; } + + virtual void valueToPoint (CPoint &point) const; + virtual float valueFromPoint (CPoint &point) const; + + virtual void setInsetValue (long val) { inset = val; } + + virtual void setColorShadowHandle (CColor color); + virtual void setColorHandle (CColor color); + + virtual void setHandleBitmap (CBitmap *bitmap); + + virtual void setZoomFactor (float val) { zoomFactor = val; } + virtual float getZoomFactor () const { return zoomFactor; } + + CLASS_METHODS(CKnob, CControl) + +protected: + void compute (); + + CPoint offset; + CColor colorHandle, colorShadowHandle; + + CBitmap *pHandle; + long inset; + float startAngle, rangeAngle, halfAngle; + float aCoef, bCoef; + float radius; + float zoomFactor; +}; + +//----------------------------------------------------------------------------- +// CAnimKnob Declaration +//! a bitmap knob control +//----------------------------------------------------------------------------- +class CAnimKnob : public CKnob +{ +public: + CAnimKnob (const CRect &size, CControlListener *listener, long tag, + CBitmap *background, CPoint &offset); + CAnimKnob (const CRect &size, CControlListener *listener, long tag, + long subPixmaps, // number of subPixmaps + CCoord heightOfOneImage, // pixel + CBitmap *background, CPoint &offset); + virtual ~CAnimKnob (); + + virtual bool isDirty () const; + + virtual void draw (CDrawContext* pContext); + + void setInverseBitmap (bool val) { bInverseBitmap = val; } + + CLASS_METHODS(CAnimKnob, CKnob) + +protected: + long subPixmaps; // number of subPixmaps + CCoord heightOfOneImage; + bool bInverseBitmap; + CPoint lastDrawnPoint; +}; + +//----------------------------------------------------------------------------- +// CVerticalSwitch Declaration +//! a vertical switch control +//----------------------------------------------------------------------------- +class CVerticalSwitch : public CControl +{ +public: + CVerticalSwitch (const CRect &size, CControlListener *listener, long tag, + CBitmap *background, CPoint &offset); + CVerticalSwitch (const CRect &size, CControlListener *listener, long tag, + long subPixmaps, // number of subPixmaps + CCoord heightOfOneImage, // pixel + long iMaxPositions, + CBitmap *background, CPoint &offset); + virtual ~CVerticalSwitch (); + + virtual void draw (CDrawContext*); + virtual void mouse (CDrawContext *pContext, CPoint &where, long button = -1); + + CLASS_METHODS(CVerticalSwitch, CControl) + +protected: + CPoint offset; + long subPixmaps; // number of subPixmaps + CCoord heightOfOneImage; + long iMaxPositions; +}; + + +//----------------------------------------------------------------------------- +// CHorizontalSwitch Declaration +//! a horizontal switch control +//----------------------------------------------------------------------------- +class CHorizontalSwitch : public CControl +{ +public: + CHorizontalSwitch (const CRect &size, CControlListener *listener, long tag, + CBitmap *background, CPoint &offset); + CHorizontalSwitch (const CRect &size, CControlListener *listener, long tag, + long subPixmaps, // number of subPixmaps + CCoord heightOfOneImage, // pixel + long iMaxPositions, + CBitmap *background, CPoint &offset); + virtual ~CHorizontalSwitch (); + + virtual void draw (CDrawContext*); + virtual void mouse (CDrawContext *pContext, CPoint &where, long button = -1); + + CLASS_METHODS(CHorizontalSwitch, CControl) + +protected: + CPoint offset; + long subPixmaps; // number of subPixmaps + long iMaxPositions; + CCoord heightOfOneImage; +}; + + +//----------------------------------------------------------------------------- +// CRockerSwitch Declaration +//! a switch control with 3 sub bitmaps +//----------------------------------------------------------------------------- +class CRockerSwitch : public CControl +{ +public: + CRockerSwitch (const CRect &size, CControlListener *listener, long tag, + CBitmap *background, CPoint &offset, const long style = kHorizontal); + CRockerSwitch (const CRect &size, CControlListener *listener, long tag, + CCoord heightOfOneImage, // pixel + CBitmap *background, CPoint &offset, const long style = kHorizontal); + virtual ~CRockerSwitch (); + + virtual void draw (CDrawContext*); + virtual void mouse (CDrawContext *pContext, CPoint &where, long button = -1); + virtual bool onWheel (CDrawContext *pContext, const CPoint &where, float distance); + + CLASS_METHODS(CRockerSwitch, CControl) + +protected: + CPoint offset; + CCoord heightOfOneImage; + long style; +}; + + +//----------------------------------------------------------------------------- +// CMovieBitmap Declaration +//! a bitmap control that displays different bitmaps according to its current value +//----------------------------------------------------------------------------- +class CMovieBitmap : public CControl +{ +public: + CMovieBitmap (const CRect &size, CControlListener *listener, long tag, + CBitmap *background, CPoint &offset); + CMovieBitmap (const CRect &size, CControlListener *listener, long tag, + long subPixmaps, // number of subPixmaps + CCoord heightOfOneImage, // pixel + CBitmap *background, CPoint &offset); + virtual ~CMovieBitmap (); + + virtual void draw (CDrawContext*); + + CLASS_METHODS(CMovieBitmap, CControl) + +protected: + CPoint offset; + long subPixmaps; // number of subPixmaps + CCoord heightOfOneImage; +}; + + +//----------------------------------------------------------------------------- +// CMovieButton Declaration +//! a bi-states button with 2 subbitmaps +//----------------------------------------------------------------------------- +class CMovieButton : public CControl +{ +public: + CMovieButton (const CRect &size, CControlListener *listener, long tag, + CBitmap *background, CPoint &offset); + CMovieButton (const CRect &size, CControlListener *listener, long tag, + CCoord heightOfOneImage, // pixel + CBitmap *background, CPoint &offset); + virtual ~CMovieButton (); + + virtual void draw (CDrawContext*); + virtual void mouse (CDrawContext *pContext, CPoint &where, long button = -1); + + CLASS_METHODS(CMovieButton, CControl) + +protected: + CPoint offset; + CCoord heightOfOneImage; + float buttonState; +}; + + +//----------------------------------------------------------------------------- +// CAutoAnimation Declaration +//! +//----------------------------------------------------------------------------- +class CAutoAnimation : public CControl +{ +public: + CAutoAnimation (const CRect &size, CControlListener *listener, long tag, + CBitmap *background, CPoint &offset); + CAutoAnimation (const CRect &size, CControlListener *listener, long tag, + long subPixmaps, // number of subPixmaps... + CCoord heightOfOneImage, // pixel + CBitmap *background, CPoint &offset); + virtual ~CAutoAnimation (); + + virtual void draw (CDrawContext*); + virtual void mouse (CDrawContext *pContext, CPoint &where, long button = -1); + + virtual void openWindow (void); + virtual void closeWindow (void); + + virtual void nextPixmap (void); + virtual void previousPixmap (void); + + bool isWindowOpened () const { return bWindowOpened; } + + CLASS_METHODS(CAutoAnimation, CControl) + +protected: + CPoint offset; + + long subPixmaps; + CCoord heightOfOneImage; + CCoord totalHeightOfBitmap; + + bool bWindowOpened; +}; + + +//----------------------------------------------------------------------------- +// CSlider Declaration +//! a slider control +//----------------------------------------------------------------------------- +class CSlider : public CControl +{ +public: + CSlider (const CRect &size, CControlListener *listener, long tag, + long iMinPos, // min position in pixel + long iMaxPos, // max position in pixel + CBitmap *handle, // handle bitmap + CBitmap *background, // background bitmap + CPoint &offset, // offset in the background + const long style = kLeft|kHorizontal); // style (kBottom,kRight,kTop,kLeft,kHorizontal,kVertical) + + CSlider (const CRect &rect, CControlListener *listener, long tag, + CPoint &offsetHandle, // handle offset + long rangeHandle, // size of handle range + CBitmap *handle, // handle bitmap + CBitmap *background, // background bitmap + CPoint &offset, // offset in the background + const long style = kLeft|kHorizontal); // style (kBottom,kRight,kTop,kLeft,kHorizontal,kVertical) + + virtual ~CSlider (); + + virtual bool attached (CView *parent); + virtual bool removed (CView *parent); + virtual void draw (CDrawContext*); + virtual void mouse (CDrawContext *pContext, CPoint &where, long button = -1); + virtual bool onWheel (CDrawContext *pContext, const CPoint &where, float distance); + virtual long onKeyDown (VstKeyCode& keyCode); + + virtual void setDrawTransparentHandle (bool val) { bDrawTransparentEnabled = val; } + virtual void setFreeClick (bool val) { bFreeClick = val; } + virtual bool getFreeClick () const { return bFreeClick; } + virtual void setOffsetHandle (CPoint &val); + + virtual void setHandle (CBitmap* pHandle); + virtual CBitmap *getHandle () const { return pHandle; } + + virtual void setZoomFactor (float val) { zoomFactor = val; } + virtual float getZoomFactor () const { return zoomFactor; } + + CLASS_METHODS(CSlider, CControl) + +protected: + CPoint offset; + CPoint offsetHandle; + + CBitmap *pHandle; + COffscreenContext *pOScreen; + + long style; + + CCoord widthOfSlider; // size of the handle-slider + CCoord heightOfSlider; + CCoord rangeHandle; + CCoord minTmp; + CCoord maxTmp; + CCoord minPos; + CCoord widthControl; + CCoord heightControl; + float zoomFactor; + + bool bDrawTransparentEnabled; + bool bFreeClick; +}; + +//----------------------------------------------------------------------------- +// CVerticalSlider Declaration +//! a vertical slider control +//----------------------------------------------------------------------------- +class CVerticalSlider : public CSlider +{ +public: + CVerticalSlider (const CRect &size, CControlListener *listener, long tag, + long iMinPos, // min Y position in pixel + long iMaxPos, // max Y position in pixel + CBitmap *handle, // bitmap slider + CBitmap *background, // bitmap background + CPoint &offset, // offset in the background + const long style = kBottom); // style (kBottom, kTop)) + + CVerticalSlider (const CRect &rect, CControlListener *listener, long tag, + CPoint &offsetHandle, // handle offset + long rangeHandle, // size of handle range + CBitmap *handle, // bitmap of slider + CBitmap *background, // bitmap of background + CPoint &offset, // offset in the background + const long style = kBottom); // style (kBottom, kTop) +}; + +//----------------------------------------------------------------------------- +// CHorizontalSlider Declaration +//! a horizontal slider control +//----------------------------------------------------------------------------- +class CHorizontalSlider : public CSlider +{ +public: + CHorizontalSlider (const CRect &size, CControlListener *listener, long tag, + long iMinPos, // min X position in pixel + long iMaxPos, // max X position in pixel + CBitmap *handle, // bitmap slider + CBitmap *background, // bitmap background + CPoint &offset, // offset in the background + const long style = kRight); // style (kRight, kLeft) + + CHorizontalSlider (const CRect &rect, CControlListener *listener, long tag, + CPoint &offsetHandle, // handle offset + long rangeHandle, // size of handle range + CBitmap *handle, // bitmap of slider + CBitmap *background, // bitmap of background + CPoint &offset, // offset in the background + const long style = kRight); // style (kRight, kLeft) +}; + + +//----------------------------------------------------------------------------- +// CSpecialDigit Declaration +//! special display with custom numbers (0...9) +//----------------------------------------------------------------------------- +class CSpecialDigit : public CControl +{ +public: + CSpecialDigit (const CRect &size, CControlListener *listener, long tag, // tag identifier + long dwPos, // actual value + long iNumbers, // amount of numbers (max 7) + long *xpos, // array of all XPOS + long *ypos, // array of all YPOS + long width, // width of ONE number + long height, // height of ONE number + CBitmap *background); // bitmap numbers + virtual ~CSpecialDigit (); + + virtual void draw (CDrawContext*); + + virtual float getNormValue (void) const; + + CLASS_METHODS(CSpecialDigit, CControl) + +protected: + long iNumbers; // amount of numbers + long xpos[7]; // array of all XPOS, max 7 possible + long ypos[7]; // array of all YPOS, max 7 possible + long width; // width of ONE number + long height; // height of ONE number +}; + + +//----------------------------------------------------------------------------- +// CKickButton Declaration +//! +//----------------------------------------------------------------------------- +class CKickButton : public CControl +{ +public: + CKickButton (const CRect &size, CControlListener *listener, long tag, + CBitmap *background, CPoint &offset); + CKickButton (const CRect &size, CControlListener *listener, long tag, + CCoord heightOfOneImage, // pixel + CBitmap *background, CPoint &offset); + virtual ~CKickButton (); + + virtual void draw (CDrawContext*); + virtual void mouse (CDrawContext *pContext, CPoint &where, long button = -1); + + CLASS_METHODS(CKickButton, CControl) + +protected: + CPoint offset; + CCoord heightOfOneImage; +}; + + +//----------------------------------------------------------------------------- +// CSplashScreen Declaration +//! +//----------------------------------------------------------------------------- +class CSplashScreen : public CControl +{ +public: + CSplashScreen (const CRect &size, CControlListener *listener, long tag, + CBitmap *background, + CRect &toDisplay, + CPoint &offset); + virtual ~CSplashScreen (); + + virtual void draw (CDrawContext*); + virtual bool hitTest (const CPoint& where, const long buttons = -1); + virtual void mouse (CDrawContext *pContext, CPoint &where, long button = -1); + virtual void unSplash (CDrawContext *pContext = 0); + + void setBitmapTransparency (unsigned char transparency); + unsigned char getBitmapTransparency () const { return bitmapTransparency; } + + const CPoint& getOffset () const { return offset; } + + CLASS_METHODS(CSplashScreen, CControl) + +protected: + CRect toDisplay; + CRect keepSize; + CPoint offset; + unsigned char bitmapTransparency; +}; + + +//----------------------------------------------------------------------------- +// CVuMeter Declaration +//! +//----------------------------------------------------------------------------- +class CVuMeter : public CControl +{ +public: + CVuMeter (const CRect& size, CBitmap *onBitmap, CBitmap *offBitmap, + long nbLed, const long style = kVertical); + virtual ~CVuMeter (); + + virtual void setDecreaseStepValue (float value) { decreaseValue = value; } + + virtual bool attached (CView *parent); + virtual bool removed (CView *parent); + virtual void draw (CDrawContext *pContext); + virtual void setDirty (const bool val = true); + + void setUseOffscreen (bool val = true); + bool getUseOffscreen () const { return bUseOffscreen; } + + CLASS_METHODS(CVuMeter, CControl) + +protected: + CBitmap *onBitmap; + CBitmap *offBitmap; + COffscreenContext *pOScreen; + + long nbLed; + long style; + float decreaseValue; + bool bUseOffscreen; + + CRect rectOn; + CRect rectOff; +}; + +END_NAMESPACE_VSTGUI + +#endif // __vstcontrol__ diff --git a/vstgui.sf/vstgui/vstgui.cpp b/vstgui.sf/vstgui/vstgui.cpp new file mode 100644 index 0000000..9375e6f --- /dev/null +++ b/vstgui.sf/vstgui/vstgui.cpp @@ -0,0 +1,9851 @@ +//----------------------------------------------------------------------------- +// VST Plug-Ins SDK +// VSTGUI: Graphical User Interface Framework for VST plugins : +// +// Version 3.0 $Date: 2006/02/08 17:31:19 $ +// +// Added Motif/Windows vers.: Yvan Grabit 01.98 +// Added Mac version : Charlie Steinberg 02.98 +// Added BeOS version : Georges-Edouard Berenger 05.99 +// Added new functions : Matthias Juwan 12.01 +// Added MacOSX version : Arne Scheffler 02.03 +// Added Quartz stuff : Arne Scheffler 08.03 +// Added Win Alpha Blending : Arne Scheffler 04.04 +// +//----------------------------------------------------------------------------- +// VSTGUI LICENSE +// © 2004, Steinberg Media Technologies, All Rights Reserved +//----------------------------------------------------------------------------- +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// * Neither the name of the Steinberg Media Technologies nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +// OF THE POSSIBILITY OF SUCH DAMAGE. +//----------------------------------------------------------------------------- + +#ifndef __vstgui__ +#include "vstgui.h" +#endif + +#if !PLUGGUI +#ifndef __audioeffectx__ +#include "audioeffectx.h" +#endif +#endif + +#include "vstkeycode.h" + +#include +#include +#include +#include + +//---Some defines------------------------------------- +#define USE_ALPHA_BLEND QUARTZ || USE_LIBPNG +#define USE_CLIPPING_DRAWRECT 1 +#define MAC_OLD_DRAG 1 +#define NEW_UPDATE_MECHANISM 1 +#define USE_VST_WINDOW (!PLUGGUI && !VST_FORCE_DEPRECATED) + +#if !WINDOWS +// For OS which allows a lot of Drawing contexts +#define USE_GLOBAL_CONTEXT 1 +#endif + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +#if USE_NAMESPACE +#define VSTGUI_CFrame VSTGUI::CFrame +#define VSTGUI_CPoint VSTGUI::CPoint +#define VSTGUI_CTextEdit VSTGUI::CTextEdit +#define VSTGUI_CColor VSTGUI::CColor +#define VSTGUI_CDrawContext VSTGUI::CDrawContext +#define VSTGUI_COffscreenContext VSTGUI::COffscreenContext +#define VSTGUI_COptionMenu VSTGUI::COptionMenu +#define VSTGUI_COptionMenuScheme VSTGUI::COptionMenuScheme +#define VSTGUI_CDragContainer VSTGUI::CDragContainer +#else +#define VSTGUI_CFrame CFrame +#define VSTGUI_CPoint CPoint +#define VSTGUI_CTextEdit CTextEdit +#define VSTGUI_CColor CColor +#define VSTGUI_CDrawContext CDrawContext +#define VSTGUI_COffscreenContext COffscreenContext +#define VSTGUI_COptionMenu COptionMenu +#define VSTGUI_COptionMenuScheme COptionMenuScheme +#define VSTGUI_CDragContainer CDragContainer +#endif + +static VSTGUI_CDragContainer* gDragContainer = 0; + +//---For Debugging------------------------ +#if DEBUG + +long gNbCBitmap = 0; +long gNbCView = 0; +long gNbCDrawContext = 0; +long gNbCOffscreenContext = 0; +long gBitmapAllocation = 0; +long gNbDC = 0; + +#include + +void DebugPrint (char *format, ...); +void DebugPrint (char *format, ...) +{ + char string[300]; + va_list marker; + va_start (marker, format); + vsprintf (string, format, marker); + if (!string) + strcpy (string, "Empty string\n"); + #if WINDOWS + OutputDebugString (string); + #elif MAC && !MACX + Str255 pStr; + c2pstrcpy (pStr, string); + DebugStr (pStr); + #else + fprintf (stderr, string); + #endif +} +#endif +//---End For Debugging------------------------ + +#if WINDOWS +static bool bSwapped_mouse_buttons = false; +OSVERSIONINFOEX gSystemVersion; + +// Alpha blending for Windows using library : msimg32.dll +#define DYNAMICALPHABLEND 1 + +#define WIN32_LEAN_AND_MEAN 1 +#include +#include +#include +#include +#include + +#if DYNAMICALPHABLEND +typedef BOOL (WINAPI *PFNALPHABLEND)( + HDC hdcDest, // handle to destination DC + int nXOriginDest, // x-coord of upper-left corner + int nYOriginDest, // y-coord of upper-left corner + int nWidthDest, // destination width + int nHeightDest, // destination height + HDC hdcSrc, // handle to source DC + int nXOriginSrc, // x-coord of upper-left corner + int nYOriginSrc, // y-coord of upper-left corner + int nWidthSrc, // source width + int nHeightSrc, // source height + BLENDFUNCTION blendFunction // alpha-blending function +); + +PFNALPHABLEND pfnAlphaBlend = NULL; + +typedef BOOL (WINAPI *PFNTRANSPARENTBLT)( + HDC hdcDest, // handle to destination DC + int nXOriginDest, // x-coord of destination upper-left corner + int nYOriginDest, // y-coord of destination upper-left corner + int nWidthDest, // width of destination rectangle + int hHeightDest, // height of destination rectangle + HDC hdcSrc, // handle to source DC + int nXOriginSrc, // x-coord of source upper-left corner + int nYOriginSrc, // y-coord of source upper-left corner + int nWidthSrc, // width of source rectangle + int nHeightSrc, // height of source rectangle + UINT crTransparent // color to make transparent +); + +PFNTRANSPARENTBLT pfnTransparentBlt = NULL; +#endif + +#if PLUGGUI + extern HINSTANCE ghInst; + inline HINSTANCE GetInstance () { return ghInst; } +#else + extern void* hInstance; + inline HINSTANCE GetInstance () { return (HINSTANCE)hInstance; } +#endif + +static long gUseCount = 0; +static char gClassName[100] = {0}; +static bool InitWindowClass (); +static void ExitWindowClass (); +LONG_PTR WINAPI WindowProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); + +static HANDLE CreateMaskBitmap (CDrawContext* pContext, CRect& rect, CColor transparentColor); +static void DrawTransparent (CDrawContext* pContext, CRect& rect, const CPoint& offset, HDC hdcBitmap, POINT ptSize, HBITMAP pMask, COLORREF color); +static bool checkResolveLink (const char* nativePath, char* resolved); +static void *createDropTarget (VSTGUI_CFrame* pFrame); + +BEGIN_NAMESPACE_VSTGUI +long gStandardFontSize[] = { 12, 18, 14, 12, 11, 10, 9, 13 }; +const char* gStandardFontName[] = { + "Arial", "Arial", "Arial", + "Arial", "Arial", "Arial", + "Arial", "Symbol" }; +END_NAMESPACE_VSTGUI + +#if USE_LIBPNG +#include "png.h" +#endif + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +#elif MOTIF + + #define USE_XPM 0 + #define TEST_REGION 0 + + #if USE_XPM + #include + #endif + + #include + #include + #include + #include + #include + #include + + #if SGI + #include + #elif SUN + #elif LINUX + #endif + + #define XDRAWPARAM pDisplay, (Window)pWindow, (GC)pSystemContext + #define XWINPARAM pDisplay, (Window)pWindow + #define XGCPARAM pDisplay, (GC)pSystemContext + +// init the static variable about font +bool gFontInit = false; +XFontStruct *gFontStructs[] = {0, 0, 0, 0, 0, 0, 0}; + +struct SFontTable {char* name; char* string;}; + +static SFontTable gFontTable[] = { + {"SystemFont", "-adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-*-*"}, // kSystemFont + {"NormalFontVeryBig", "-adobe-helvetica-medium-r-*-*-18-*-*-*-*-*-*-*"}, // kNormalFontVeryBig + {"NormalFontBig", "-adobe-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-*"}, // kNormalFontBig + {"NormalFont", "-adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*"}, // kNormalFont + {"NormalFontSmall", "-adobe-helvetica-medium-r-*-*-10-*-*-*-*-*-*-*"}, // kNormalFontSmall + {"NormalFontSmaller", "-adobe-helvetica-medium-r-*-*-9-*-*-*-*-*-*-*"}, // kNormalFontSmaller + {"NormalFontVerySmall", "-adobe-helvetica-medium-r-*-*-8-*-*-*-*-*-*-*"}, // kNormalFontVerySmall + {"SymbolFont", "-adobe-symbol-medium-r-*-*-12-*-*-*-*-*-*-*"} // kSymbolFont +}; + +long gStandardFontSize[] = { 12, 16, 14, 12, 10, 9, 8, 10 }; + +//----------------------------------------------------------------------------- +// declaration of different local functions +long convertPoint2Angle (CPoint &pm, CPoint &pt); + +// callback for the frame +void _drawingAreaCallback (Widget widget, XtPointer clientData, XtPointer callData); +void _eventHandler (Widget w, XtPointer clientData, XEvent *event, char *p); +void _destroyCallback (Widget widget, XtPointer clientData, XtPointer callData); + +// stuff for color +long getIndexColor8Bit (CColor color, Display *pDisplay, Colormap colormap); +long CDrawContext::nbNewColor = 0; +static CColor paletteNewColor[256]; + +//------ our user-defined XPM functions +bool xpmGetValues (char **ppDataXpm, long *pWidth, long *pHeight, long *pNcolor, long *pCpp); + + #if !USE_XPM + #include "xpmloader.cpp" + #endif + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +#elif MAC +BEGIN_NAMESPACE_VSTGUI + +long pSystemVersion; + +#if MACX +//----------------------------------------------------------------------------- +#include + +#if QUARTZ +const char* gMacXfontNames[] = { + "Helvetica", + "Helvetica", + "Helvetica", + "Helvetica", + "Helvetica", + "Helvetica", + "Helvetica", + "Symbol" +}; + +#ifndef M_PI +#define M_PI 3.14159265358979323846 /* pi */ +#endif + +static inline void QuartzSetLineDash (CGContextRef context, CLineStyle style, CCoord lineWidth); +static inline void QuartzSetupClip (CGContextRef context, const CRect clipRect); +static inline double radians (double degrees) { return degrees * M_PI / 180; } +CGColorSpaceRef GetGenericRGBColorSpace (); + +typedef void (*CGContextStrokeLineSegmentsProc) (CGContextRef c, const CGPoint points[], size_t count); +typedef CGImageRef (*CGImageCreateWithImageInRectProc) (CGImageRef image, CGRect rect); +static CGImageCreateWithImageInRectProc _CGImageCreateWithImageInRect = NULL; +static CGContextStrokeLineSegmentsProc _CGContextStrokeLineSegments = NULL; + +// cache graphics importer +static ComponentInstance bmpGI = 0; +static ComponentInstance pngGI = 0; +static ComponentInstance jpgGI = 0; +static ComponentInstance pictGI = 0; + + +#else +const unsigned char* gMacXfontNames[] = { + "\pArial", + "\pArial", + "\pArial", + "\pArial", + "\pArial", + "\pArial", + "\pArial", + "\pSymbol" +}; +#endif + +//----------------------------------------------------------------------------- +#else +#include +#include +#include +#include +#endif + +long gStandardFontSize[] = { 12, 18, 14, 12, 10, 9, 9, 12 }; + +long convertPoint2Angle (CPoint &pm, CPoint &pt); +void RectNormalize (Rect& rect); +void CRect2Rect (const CRect &cr, Rect &rr); +void Rect2CRect (Rect &rr, CRect &cr); +void CColor2RGBColor (const CColor &cc, RGBColor &rgb); +void RGBColor2CColor (const RGBColor &rgb, CColor &cc); + +#if MAC_OLD_DRAG +static void install_drop (CFrame *frame); +static void remove_drop (CFrame *frame); +#endif + +//----------------------------------------------------------------------------- +void RectNormalize (Rect& rect) +{ + if (rect.left > rect.right) + { + long temp = rect.right; + rect.right = rect.left; + rect.left = temp; + } + if (rect.top > rect.bottom) + { + long temp = rect.bottom; + rect.bottom = rect.top; + rect.top = temp; + } +} + +//----------------------------------------------------------------------------- +void CRect2Rect (const CRect &cr, Rect &rr) +{ + rr.left = (short)cr.left; + rr.right = (short)cr.right; + rr.top = (short)cr.top; + rr.bottom = (short)cr.bottom; + RectNormalize (rr); +} + +//----------------------------------------------------------------------------- +void Rect2CRect (Rect &rr, CRect &cr) +{ + cr.left = rr.left; + cr.right = rr.right; + cr.top = rr.top; + cr.bottom = rr.bottom; +} + +//----------------------------------------------------------------------------- +void CColor2RGBColor (const CColor &cc, RGBColor &rgb) +{ + rgb.red = cc.red * 257; + rgb.green = cc.green * 257; + rgb.blue = cc.blue * 257; +} + +//----------------------------------------------------------------------------- +void RGBColor2CColor (const RGBColor &rgb, CColor &cc) +{ + cc.red = rgb.red / 257; + cc.green = rgb.green / 257; + cc.blue = rgb.blue / 257; +} + +END_NAMESPACE_VSTGUI +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +#elif BEOS + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//-------------------------- +class PlugView: public BView +{ +public: + PlugView (BRect frame, CFrame* cframe); + void Draw (BRect updateRect); + void MouseDown (BPoint where); + void MessageReceived (BMessage *msg); +private: + CFrame* cframe; +}; + +long convertPoint2Angle (CPoint &pm, CPoint &pt); + +drawing_mode modeToPlatform [] = { +// kCopyMode kOrMode kXorMode + B_OP_COPY, B_OP_OVER, B_OP_INVERT +}; + +long gStandardFontSize[] = { 12, 18, 14, 12, 11, 10, 9, 12 }; +const char* standardFont = "Swis721 BT"; +const char* standardFontS = "Roman"; +const char* systemFont = "Swis721 BT"; +const char* systemFontS = "Bold"; +const char* gStandardFontName[] = { systemFont, + standardFont, standardFont, standardFont, standardFont, standardFont, + standardFont }; +const char* gStandardFontStyle[] = { systemFontS, + standardFontS, standardFontS, standardFontS, standardFontS, standardFontS, + standardFontS }; +#endif + +//----------------------------------------------------------------------------- +bool CRect::pointInside (const CPoint& where) const +{ + return where.h >= left && where.h < right && where.v >= top && where.v < bottom; +} + +//----------------------------------------------------------------------------- +bool CRect::isEmpty () const +{ + if (right <= left) + return true; + if (bottom <= top) + return true; + return false; +} + +//----------------------------------------------------------------------------- +void CRect::bound (const CRect& rect) +{ + if (left < rect.left) + left = rect.left; + if (top < rect.top) + top = rect.top; + if (right > rect.right) + right = rect.right; + if (bottom > rect.bottom) + bottom = rect.bottom; + if (bottom < top) + bottom = top; + if (right < left) + right = left; +} + +BEGIN_NAMESPACE_VSTGUI + +CColor kTransparentCColor = {255, 255, 255, 0}; +CColor kBlackCColor = {0, 0, 0, 255}; +CColor kWhiteCColor = {255, 255, 255, 255}; +CColor kGreyCColor = {127, 127, 127, 255}; +CColor kRedCColor = {255, 0, 0, 255}; +CColor kGreenCColor = {0 , 255, 0, 255}; +CColor kBlueCColor = {0 , 0, 255, 255}; +CColor kYellowCColor = {255, 255, 0, 255}; +CColor kMagentaCColor= {255, 0, 255, 255}; +CColor kCyanCColor = {0 , 255, 255, 255}; + +#define kDragDelay 0 + +//----------------------------------------------------------------------------- +// CDrawContext Implementation +//----------------------------------------------------------------------------- +/** + * CDrawContext constructor. + * @param inFrame the parent CFrame + * @param inSystemContext the platform system context, can be NULL + * @param inWindow the platform window object + */ +CDrawContext::CDrawContext (CFrame *inFrame, void *inSystemContext, void *inWindow) +: pSystemContext (inSystemContext) +, pWindow (inWindow) +, pFrame (inFrame) +, fontSize (-1) +, fontStyle (0) +, fontId (kNumStandardFonts) +, frameWidth (0) +, lineStyle (kLineOnOffDash) +, drawMode (kAntialias) +#if WINDOWS +, pBrush (0), pFont (0), pPen (0) +, pOldBrush (0), pOldFont (0), pOldPen (0) +#elif MAC && !QUARTZ +, bInitialized (false) +#endif +{ + #if DEBUG + gNbCDrawContext++; + #endif + + // initialize values + if (pFrame) + pFrame->getViewSize (clipRect); + else + clipRect (0, 0, 1000, 1000); + + const CColor notInitalized = {0, 0, 0, 0}; + frameColor = notInitalized; + fillColor = notInitalized; + fontColor = notInitalized; + + // offsets use by offscreen + offset (0, 0); + offsetScreen (0, 0); + +#if WINDOWS + pHDC = 0; + if (!pSystemContext && pWindow) + pSystemContext = pHDC = GetDC ((HWND)pWindow); + + if (pSystemContext) + { + pOldBrush = GetCurrentObject ((HDC)pSystemContext, OBJ_BRUSH); + pOldPen = GetCurrentObject ((HDC)pSystemContext, OBJ_PEN); + pOldFont = GetCurrentObject ((HDC)pSystemContext, OBJ_FONT); + SetBkMode ((HDC)pSystemContext, TRANSPARENT); + } + iPenStyle = PS_SOLID; + + // get position + if (pWindow) + { + RECT rctTempWnd; + GetWindowRect ((HWND)pWindow, &rctTempWnd); + offsetScreen.h = rctTempWnd.left; + offsetScreen.v = rctTempWnd.top; + } + +#elif MAC + #if QUARTZ + if (pFrame && (pSystemContext || pWindow)) + { + HIRect bounds; + HIViewGetFrame ((HIViewRef)pFrame->getPlatformControl (), &bounds); + if (pWindow || !pSystemContext) + { + WindowAttributes attr; + GetWindowAttributes ((WindowRef)pWindow, &attr); + if (attr & kWindowCompositingAttribute) + { + HIViewRef contentView; + HIViewFindByID (HIViewGetRoot ((WindowRef)pWindow), kHIViewWindowContentID, &contentView); + if (HIViewGetSuperview ((HIViewRef)pFrame->getPlatformControl ()) != contentView) + HIViewConvertRect (&bounds, (HIViewRef)pFrame->getPlatformControl (), contentView); + bounds.origin.x += pFrame->hiScrollOffset.x; + bounds.origin.y += pFrame->hiScrollOffset.y; + } + } + offsetScreen.x = (CCoord)bounds.origin.x; + offsetScreen.y = (CCoord)bounds.origin.y; + clipRect (0, 0, (CCoord)bounds.size.width, (CCoord)bounds.size.height); + clipRect.offset (pFrame->hiScrollOffset.x, pFrame->hiScrollOffset.y); + } + gCGContext = 0; + if (pSystemContext) + { + gCGContext = (CGContextRef) pSystemContext; + CGContextSaveGState (gCGContext); // save the original state + CGContextScaleCTM (gCGContext, 1, -1); + CGContextSetShouldAntialias (gCGContext, false); + CGContextSetFillColorSpace (gCGContext, GetGenericRGBColorSpace ()); + CGContextSetStrokeColorSpace (gCGContext, GetGenericRGBColorSpace ()); + CGContextSaveGState (gCGContext); + setClipRect (clipRect); + if (pFrame) + pFrame->setDrawContext (this); + } + else if (pWindow) + { + GrafPtr port = GetWindowPort ((WindowRef)pWindow); + OSStatus err = QDBeginCGContext (port, &gCGContext); + if (err == noErr) + { + CGContextSaveGState (gCGContext); // save the original state + SyncCGContextOriginWithPort (gCGContext, port); + Rect rect; + GetPortBounds (port, &rect); + CGContextTranslateCTM (gCGContext, 0, rect.bottom - rect.top); + CGContextTranslateCTM (gCGContext, offsetScreen.x, -offsetScreen.y); + CGContextTranslateCTM (gCGContext, -pFrame->hiScrollOffset.x, pFrame->hiScrollOffset.y); + CGContextSetShouldAntialias (gCGContext, false); + CGContextSetFillColorSpace (gCGContext, GetGenericRGBColorSpace ()); + CGContextSetStrokeColorSpace (gCGContext, GetGenericRGBColorSpace ()); + CGContextScaleCTM (gCGContext, 1, -1); + QuartzSetupClip (gCGContext, clipRect); + CGContextScaleCTM (gCGContext, 1, -1); + CGContextSaveGState (gCGContext); + setClipRect (clipRect); + if (pFrame) + pFrame->setDrawContext (this); + } + } + if (gCGContext) + { + CGAffineTransform cgCTM = CGAffineTransformMake (1.0, 0.0, 0.0, -1.0, 0.0, 0.0); + CGContextSetTextMatrix (gCGContext, cgCTM); + } + needToSynchronizeCGContext = false; + + #else + pSystemContext = pWindow; + + #endif + +#elif MOTIF + if (pFrame) + pDisplay = pFrame->getDisplay (); + + // set the current font + if (pSystemContext) + setFont (kNormalFont); + else + fprintf (stderr, "Error in CDrawContext::CDrawContext : pSystemContext must not be Null!!!\n"); + +#elif BEOS + pView = (BView*) pSystemContext; + if (pView) + pView->LockLooper (); + +#endif + + if (1 || pSystemContext) + { + // set the default values + setFrameColor (kWhiteCColor); + setLineStyle (kLineSolid); + setLineWidth (1); +#if !MOTIF + setFillColor (kBlackCColor); + setFontColor (kWhiteCColor); +#endif + setFont (kSystemFont); + setDrawMode (kCopyMode); + } +} + +//----------------------------------------------------------------------------- +CDrawContext::~CDrawContext () +{ + #if DEBUG + gNbCDrawContext--; + #endif + +#if WINDOWS + if (pOldBrush) + SelectObject ((HDC)pSystemContext, pOldBrush); + if (pOldPen) + SelectObject ((HDC)pSystemContext, pOldPen); + if (pOldFont) + SelectObject ((HDC)pSystemContext, pOldFont); + + if (pBrush) + DeleteObject (pBrush); + if (pPen) + DeleteObject (pPen); + if (pFont) + DeleteObject (pFont); + + if (pHDC) + { + ReleaseDC ((HWND)pWindow, pHDC); + #if DEBUG + gNbDC--; + #endif + } + +#elif (MAC && QUARTZ) + if (gCGContext) + { + CGContextRestoreGState (gCGContext); // restore the original state + CGContextRestoreGState (gCGContext); // we need to do it twice !!! + CGContextSynchronize (gCGContext); + if (!pSystemContext && pWindow) + QDEndCGContext (GetWindowPort ((WindowRef)pWindow), &gCGContext); + if (pFrame) + pFrame->setDrawContext (0); + } +#elif MOTIF +#elif BEOS + if (pView) + { + pView->Flush (); + pView->UnlockLooper (); + } +#endif +} + +//----------------------------------------------------------------------------- +void CDrawContext::setLineStyle (CLineStyle style) +{ + if (lineStyle == style) + return; + + lineStyle = style; + +#if WINDOWS + switch (lineStyle) + { + case kLineOnOffDash: + iPenStyle = PS_DOT; + break; + default: + iPenStyle = PS_SOLID; + break; + } + + LOGPEN logPen = {iPenStyle, {frameWidth, frameWidth}, + RGB (frameColor.red, frameColor.green, frameColor.blue)}; + + HANDLE newPen = CreatePenIndirect (&logPen); + SelectObject ((HDC)pSystemContext, newPen); + if (pPen) + DeleteObject (pPen); + pPen = newPen; + +#elif MAC + #if QUARTZ + + // nothing to do here + + #else + CGrafPtr OrigPort; + GDHandle OrigDevice; + if (pWindow) + { + GetGWorld (&OrigPort, &OrigDevice); + SetGWorld (getPort (), NULL); + PenState penState; + GetPenState (&penState); + switch (lineStyle) + { + case kLineOnOffDash: + StuffHex (&penState.pnPat, "\pF0F0F0F00F0F0F0F"); // dashed line 4 pixel + break; + default: + StuffHex (&penState.pnPat, "\pFFFFFFFFFFFFFFFF"); + break; + } + SetPenState (&penState); + SetGWorld (OrigPort, OrigDevice); + } + #endif + +#elif MOTIF + long line_width; + long line_style; + if (frameWidth == 1) + line_width = 0; + else + line_width = frameWidth; + + switch (lineStyle) + { + case kLineOnOffDash: + line_style = LineOnOffDash; + break; + default: + line_style = LineSolid; + break; + } + + XSetLineAttributes (XGCPARAM, line_width, line_style, CapNotLast, JoinRound); +#endif +} + +//----------------------------------------------------------------------------- +void CDrawContext::setLineWidth (CCoord width) +{ + if (frameWidth == width) + return; + + frameWidth = width; + +#if WINDOWS + LOGPEN logPen = {iPenStyle, {frameWidth, frameWidth}, + RGB (frameColor.red, frameColor.green, frameColor.blue)}; + + HANDLE newPen = CreatePenIndirect (&logPen); + SelectObject ((HDC)pSystemContext, newPen); + if (pPen) + DeleteObject (pPen); + pPen = newPen; + +#elif MAC + #if QUARTZ + if (gCGContext) + CGContextSetLineWidth (gCGContext, width); + #else + CGrafPtr OrigPort; + GDHandle OrigDevice; + if (pWindow) + { + GetGWorld (&OrigPort, &OrigDevice); + SetGWorld (getPort (), NULL); + PenState penState; + GetPenState (&penState); + penState.pnSize.h = width; + penState.pnSize.v = width; + SetPenState (&penState); + SetGWorld (OrigPort, OrigDevice); + } + #endif +#elif MOTIF + setLineStyle (lineStyle); +#endif +} + +//----------------------------------------------------------------------------- +void CDrawContext::setDrawMode (CDrawMode mode) +{ + if (drawMode == mode) + return; + + drawMode = mode; + +#if WINDOWS + long iMode = 0; + switch (drawMode) + { + case kXorMode : + iMode = R2_NOTXORPEN; // Pixel is the inverse of the R2_XORPEN color (final pixel = ~ (pen ^ screen pixel)). + break; + case kOrMode : + iMode = R2_MERGEPEN; // Pixel is a combination of the pen color and the screen color (final pixel = pen | screen pixel). + break; + default: + iMode = R2_COPYPEN; + break; + } + SetROP2 ((HDC)pSystemContext, iMode); + +#elif MAC + #if QUARTZ + // quartz only support antialias + if (gCGContext) + CGContextSetShouldAntialias (gCGContext, drawMode == kAntialias ? true : false); + + #else + if (pWindow) + { + CGrafPtr OrigPort; + GDHandle OrigDevice; + GetGWorld (&OrigPort, &OrigDevice); + SetGWorld (getPort (), NULL); + long iMode = 0; + + switch (drawMode) + { + case kXorMode : + iMode = patXor; + break; + case kOrMode : + iMode = patOr; + break; + default: + iMode = patCopy; + } + PenMode (mode); + + SetGWorld (OrigPort, OrigDevice); + } + #endif + +#elif MOTIF + long iMode = 0; + switch (drawMode) + { + case kXorMode : + iMode = GXinvert; + break; + case kOrMode : + iMode = GXor; + break; + default: + iMode = GXcopy; + } + ((XGCValues*)pSystemContext)->function = iMode; + XChangeGC (XGCPARAM, GCFunction, (XGCValues*)pSystemContext); +#endif +} + +//------------------------------------------------------------------------------ +void CDrawContext::setClipRect (const CRect &clip) +{ + CRect _clip (clip); + _clip.offset (offset.h, offset.v); + + if (clipRect == _clip) + return; + + clipRect = _clip; + +#if MAC + #if QUARTZ + if (0 && gCGContext) + { + CGContextRestoreGState (gCGContext); + CGContextSaveGState (gCGContext); + CGContextScaleCTM (gCGContext, 1, -1); + CGRect cgClipRect = CGRectMake (clipRect.left, clipRect.top, clipRect.width ()-1.f, clipRect.height ()-1.f); + CGContextClipToRect (gCGContext, cgClipRect); + CGContextScaleCTM (gCGContext, 1, -1); + setLineWidth (frameWidth); + setLineStyle (lineStyle); + setFrameColor (frameColor); + setFillColor (fillColor); + setFont (fontId, fontSize); + setDrawMode (drawMode); + } + + #else + Rect r; + CRect2Rect (_clip, r); + + CGrafPtr OrigPort; + GDHandle OrigDevice; + GetGWorld (&OrigPort, &OrigDevice); + SetGWorld (getPort (), NULL); + ClipRect (&r); + SetGWorld (OrigPort, OrigDevice); + #endif + +#elif WINDOWS + RECT r = {clipRect.left, clipRect.top, clipRect.right, clipRect.bottom}; + HRGN hRgn = CreateRectRgn (r.left, r.top, r.right, r.bottom); + SelectClipRgn ((HDC)pSystemContext, hRgn); + DeleteObject (hRgn); + +#elif MOTIF + XRectangle r; + r.x = 0; + r.y = 0; + r.width = clipRect.right - clipRect.left; + r.height = clipRect.bottom - clipRect.top; + XSetClipRectangles (XGCPARAM, clipRect.left, clipRect.top, &r, 1, Unsorted); + +#elif BEOS + clipping_rect r = {clipRect.left, clipRect.top, clipRect.right - 1, clipRect.bottom - 1}; + BRegion region; + region.Set (r); + pView->ConstrainClippingRegion (®ion); +#endif +} + +//------------------------------------------------------------------------------ +void CDrawContext::resetClipRect () +{ + CRect newClip; + if (pFrame) + pFrame->getViewSize (newClip); + else + newClip (0, 0, 1000, 1000); + +#if (MAC && QUARTZ) + if (0 && gCGContext) + { + CGContextRestoreGState (gCGContext); + CGContextScaleCTM (gCGContext, 1, -1); + CGRect cgClipRect = CGRectMake (newClip.left, newClip.top, newClip.width (), newClip.height ()); + CGContextClipToRect (gCGContext, cgClipRect); + CGContextScaleCTM (gCGContext, 1, -1); + CGContextSaveGState (gCGContext); + setLineWidth (frameWidth); + setLineStyle (lineStyle); + setFrameColor (frameColor); + setFillColor (fillColor); + setFont (fontId, fontSize); + setDrawMode (drawMode); + } + +#elif MAC || WINDOWS || MOTIF + setClipRect (newClip); + +#elif BEOS + pView->ConstrainClippingRegion (NULL); +#endif + + clipRect = newClip; +} + +//----------------------------------------------------------------------------- +void CDrawContext::moveTo (const CPoint &_point) +{ + CPoint point (_point); + point.offset (offset.h, offset.v); + +#if WINDOWS + MoveToEx ((HDC)pSystemContext, point.h, point.v, NULL); + +#elif MAC + #if QUARTZ + #else + CGrafPtr OrigPort; + GDHandle OrigDevice; + GetGWorld (&OrigPort, &OrigDevice); // get current GrafPort + SetGWorld (getPort (), NULL); // activate our GWorld + MoveTo (point.h, point.v); + SetGWorld (OrigPort, OrigDevice); + #endif + penLoc = point; + +#elif MOTIF || BEOS + penLoc = point; +#endif +} + +//----------------------------------------------------------------------------- +void CDrawContext::lineTo (const CPoint& _point) +{ + CPoint point (_point); + point.offset (offset.h, offset.v); + +#if WINDOWS + LineTo ((HDC)pSystemContext, point.h, point.v); + +#elif MAC + #if QUARTZ + CGContextRef context = beginCGContext (true); + { + QuartzSetLineDash (context, lineStyle, frameWidth); + + CGContextBeginPath (context); + CGContextMoveToPoint (context, penLoc.h, penLoc.v); + CGContextAddLineToPoint (context, point.h, point.v); + CGContextDrawPath (context, kCGPathStroke); + releaseCGContext (context); + } + penLoc = point; + #else + CGrafPtr OrigPort; + GDHandle OrigDevice; + GetGWorld (&OrigPort, &OrigDevice); // get current GrafPort + SetGWorld (getPort (), NULL); // activate our GWorld + RGBColor col; + CColor2RGBColor (frameColor, col); + RGBForeColor (&col); + #if 1 + if (point.v == penLoc.v) + { + CPoint old = point; + if (point.h > penLoc.h) + point.h--; + else + point.h++; + penLoc = old; + LineTo (point.h, point.v); + MoveTo (penLoc.h, penLoc.v); + } + else if (point.h == penLoc.h) + { + CPoint old = point; + if (point.v > penLoc.v) + point.v--; + else + point.v++; + penLoc = old; + LineTo (point.h, point.v); + MoveTo (penLoc.h, penLoc.v); + } + else + { + penLoc = point; + LineTo (point.h, point.v); + } + #else + if (point.v > penLoc.v) + point.v--; + else if (point.v < penLoc.v) + point.v++; + if (point.h > penLoc.h) + point.h--; + else if (point.h < penLoc.h) + point.h++; + penLoc = point; + LineTo (point.h, point.v); + #endif + SetGWorld (OrigPort, OrigDevice); + #endif + +#elif MOTIF + CPoint start (penLoc); + CPoint end (point); + if (start.h == end.h) + { + if (start.v < -5) + start.v = -5; + else if (start.v > 10000) + start.v = 10000; + + if (end.v < -5) + end.v = -5; + else if (end.v > 10000) + end.v = 10000; + } + if (start.v == end.v) + { + if (start.h < -5) + start.h = -5; + else if (start.h > 10000) + start.h = 10000; + + if (end.h < -5) + end.h = -5; + else if (end.h > 10000) + end.h = 10000; + } + XDrawLine (XDRAWPARAM, start.h, start.v, end.h, end.v); + + // keep trace of the new position + penLoc = point; + +#elif BEOS + rgb_color c = { frameColor.red, frameColor.green, frameColor.blue, 255 }; + pView->SetHighColor (c); + pView->SetDrawingMode (modeToPlatform [drawMode]); + pView->SetPenSize (frameWidth); + lineFromTo (penLoc, point); + penLoc = point; +#endif +} + +//----------------------------------------------------------------------------- +void CDrawContext::drawLines (const CPoint* points, const long& numLines) +{ + #if QUARTZ + CGContextRef context = beginCGContext (true); + if (context) + { + QuartzSetLineDash (context, lineStyle, frameWidth); + + #ifdef MAC_OS_X_VERSION_10_4 + if (_CGContextStrokeLineSegments) + { + CGPoint* cgPoints = new CGPoint[numLines*2]; + for (long i = 0; i < numLines * 2; i += 2) + { + cgPoints[i].x = points[i].x + offset.x; + cgPoints[i+1].x = points[i+1].x + offset.x; + cgPoints[i].y = points[i].y + offset.y; + cgPoints[i+1].y = points[i+1].y + offset.y; + } + _CGContextStrokeLineSegments (context, cgPoints, numLines*2); + delete [] cgPoints; + } + else + #endif + { + CGContextBeginPath (context); + for (long i = 0; i < numLines * 2; i += 2) + { + CGContextMoveToPoint (context, points[i].x + offset.x, points[i].y + offset.y); + CGContextAddLineToPoint (context, points[i+1].x + offset.x, points[i+1].y + offset.y); + } + CGContextDrawPath (context, kCGPathStroke); + } + releaseCGContext (context); + } + + #else + // default implementation, when no platform optimized code is implemented + for (long i = 0; i < numLines * 2; i+=2) + { + moveTo (points[i]); + lineTo (points[i+1]); + } + #endif +} + +//----------------------------------------------------------------------------- +void CDrawContext::drawPolygon (const CPoint *pPoints, long numberOfPoints, const CDrawStyle drawStyle) +{ +#if MAC && QUARTZ + CGContextRef context = beginCGContext (true); + { + CGPathDrawingMode m; + switch (drawStyle) + { + case kDrawFilled : m = kCGPathFill; break; + case kDrawFilledAndStroked : m = kCGPathFillStroke; break; + default : m = kCGPathStroke; break; + } + + QuartzSetLineDash (context, lineStyle, frameWidth); + + CGContextBeginPath (context); + CGContextMoveToPoint (context, pPoints[0].h + offset.h, pPoints[0].v + offset.v); + for (long i = 1; i < numberOfPoints; i++) + CGContextAddLineToPoint (context, pPoints[i].h + offset.h, pPoints[i].v + offset.v); + CGContextDrawPath (context, m); + releaseCGContext (context); + } +#else + if (drawStyle == kDrawFilled || drawStyle == kDrawFilledAndStroked) + fillPolygon (pPoints, numberOfPoints); + if (drawStyle == kDrawStroked || drawStyle == kDrawFilledAndStroked) + polyLine (pPoints, numberOfPoints); +#endif +} + +//----------------------------------------------------------------------------- +void CDrawContext::polyLine (const CPoint *pPoints, long numberOfPoints) +{ +#if WINDOWS + POINT points[30]; + POINT *polyPoints; + bool allocated = false; + + if (numberOfPoints > 30) + { + polyPoints = (POINT*)new char [numberOfPoints * sizeof (POINT)]; + if (!polyPoints) + return; + allocated = true; + } + else + polyPoints = points; + + for (long i = 0; i < numberOfPoints; i++) + { + polyPoints[i].x = pPoints[i].h + offset.h; + polyPoints[i].y = pPoints[i].v + offset.v; + } + + Polyline ((HDC)pSystemContext, polyPoints, numberOfPoints); + + if (allocated) + delete[] polyPoints; + +#elif MAC + #if QUARTZ + drawPolygon (pPoints, numberOfPoints); + + #else + CGrafPtr OrigPort; + GDHandle OrigDevice; + GetGWorld (&OrigPort, &OrigDevice); + SetGWorld (getPort (), NULL); + RGBColor col; + CColor2RGBColor (frameColor, col); + RGBForeColor (&col); + MoveTo (pPoints[0].h, pPoints[0].v); + for (long i = 1; i < numberOfPoints; i++) + LineTo (pPoints[i].h + offset.h, pPoints[i].v + offset.v); + SetGWorld (OrigPort, OrigDevice); + #endif + +#elif MOTIF + XPoint* pt = (XPoint*)malloc (numberOfPoints * sizeof (XPoint)); + if (!pt) + return; + for (long i = 0; i < numberOfPoints; i++) + { + pt[i].x = (short)pPoints[i].h + offset.h; + pt[i].y = (short)pPoints[i].v + offset.v; + } + + XDrawLines (XDRAWPARAM, pt, numberOfPoints, CoordModeOrigin); + + free (pt); + +#elif BEOS + rgb_color c = { frameColor.red, frameColor.green, frameColor.blue, 255 }; + pView->SetHighColor (c); + pView->SetDrawingMode (modeToPlatform [drawMode]); + pView->SetPenSize (frameWidth); + + CPoint begin (pPoints[0]); + begin.offset (offset.h, offset.v); + CPoint end; + for (long i = 1; i < numberOfPoints; i++) + { + end = pPoints[i]; + end.offset (offset.h, offset.v); + lineFromTo (begin, end); + begin = end; + } +#endif +} + +//----------------------------------------------------------------------------- +void CDrawContext::fillPolygon (const CPoint *pPoints, long numberOfPoints) +{ + // Don't draw boundary +#if WINDOWS + POINT points[30]; + POINT *polyPoints; + bool allocated = false; + + if (numberOfPoints > 30) + { + polyPoints = (POINT*)new char [numberOfPoints * sizeof (POINT)]; + if (!polyPoints) + return; + allocated = true; + } + else + polyPoints = points; + + for (long i = 0; i < numberOfPoints; i++) + { + polyPoints[i].x = pPoints[i].h + offset.h; + polyPoints[i].y = pPoints[i].v + offset.v; + } + + HANDLE nullPen = GetStockObject (NULL_PEN); + HANDLE oldPen = SelectObject ((HDC)pSystemContext, nullPen); + Polygon ((HDC)pSystemContext, polyPoints, numberOfPoints); + SelectObject ((HDC)pSystemContext, oldPen); + + if (allocated) + delete[] polyPoints; + +#elif MAC + #if QUARTZ + drawPolygon (pPoints, numberOfPoints, kDrawFilled); + + #else + CGrafPtr OrigPort; + GDHandle OrigDevice; + PolyHandle thePoly; + RGBColor col; + + GetGWorld (&OrigPort, &OrigDevice); + SetGWorld (getPort (), NULL); + CColor2RGBColor (fillColor, col); + RGBForeColor (&col); + thePoly = OpenPoly (); // start recording + polyLine (pPoints, numberOfPoints); // draw polygon + LineTo (pPoints[0].h + offset.h, pPoints[0].v + offset.v); // close the boundary + ClosePoly (); // stop recording + + PixPatHandle pixPatHandle = NewPixPat (); + CColor2RGBColor (fillColor, col); + MakeRGBPat (pixPatHandle, &col); // create pixel pattern with fill color + + FillCPoly (thePoly, pixPatHandle); // fill inside + KillPoly (thePoly); // deallocate all memory used here + DisposePixPat (pixPatHandle); + SetGWorld (OrigPort, OrigDevice); + #endif + +#elif MOTIF + // convert the points + XPoint* pt = (XPoint*)malloc (numberOfPoints * sizeof (XPoint)); + for (long i = 0; i < numberOfPoints; i++) + { + pt[i].x = (short)pPoints[i].h + offset.h; + pt[i].y = (short)pPoints[i].v + offset.v; + } + + XFillPolygon (XDRAWPARAM, pt, numberOfPoints, Convex, CoordModeOrigin); + + free (pt); + +#elif BEOS + BPoint bpoints[30]; + BPoint* polyPoints; + bool allocated = false; + + if (numberOfPoints > 30) + { + polyPoints = new BPoint [numberOfPoints]; + if (!polyPoints) + return; + allocated = true; + } + else + polyPoints = bpoints; + + for (long i = 0; i < numberOfPoints; i++) + polyPoints[i].Set (pPoints[i].h + offset.h, pPoints[i].v + offset.v); + + rgb_color c = { fillColor.red, fillColor.green, fillColor.blue, 255 }; + pView->SetHighColor (c); + pView->SetDrawingMode (modeToPlatform [drawMode]); + pView->FillPolygon (polyPoints, numberOfPoints); + + if (allocated) + delete[] polyPoints; +#endif +} + +//----------------------------------------------------------------------------- +void CDrawContext::drawRect (const CRect &_rect, const CDrawStyle drawStyle) +{ + CRect rect (_rect); + rect.offset (offset.h, offset.v); + +#if WINDOWS + if (drawStyle == kDrawFilled || drawStyle == kDrawFilledAndStroked) + { + RECT wr = {rect.left, rect.top, rect.right, rect.bottom}; + HANDLE nullPen = GetStockObject (NULL_PEN); + HANDLE oldPen = SelectObject ((HDC)pSystemContext, nullPen); + FillRect ((HDC)pSystemContext, &wr, (HBRUSH)pBrush); + SelectObject ((HDC)pSystemContext, oldPen); + } + if (drawStyle == kDrawStroked || drawStyle == kDrawFilledAndStroked) + { + MoveToEx ((HDC)pSystemContext, rect.left, rect.top, NULL); + LineTo ((HDC)pSystemContext, rect.right-1, rect.top); + LineTo ((HDC)pSystemContext, rect.right-1, rect.bottom-1); + LineTo ((HDC)pSystemContext, rect.left, rect.bottom-1); + LineTo ((HDC)pSystemContext, rect.left, rect.top); + } + +#elif MAC + #if QUARTZ + CGContextRef context = beginCGContext (true); + { + CGPathDrawingMode m; + switch (drawStyle) + { + case kDrawFilled : m = kCGPathFill; break; + case kDrawFilledAndStroked : m = kCGPathFillStroke; break; + default : m = kCGPathStroke; break; + } + + CGRect r = CGRectMake (rect.left, rect.top+1, rect.width () - 1, rect.height () - 1); + + QuartzSetLineDash (context, lineStyle, frameWidth); + + CGContextBeginPath (context); + CGContextMoveToPoint (context, r.origin.x, r.origin.y); + CGContextAddLineToPoint (context, r.origin.x + r.size.width, r.origin.y); + CGContextAddLineToPoint (context, r.origin.x + r.size.width, r.origin.y + r.size.height); + CGContextAddLineToPoint (context, r.origin.x, r.origin.y + r.size.height); + CGContextClosePath (context); + + CGContextDrawPath (context, m); + + releaseCGContext (context); + } + #else + CGrafPtr OrigPort; + GDHandle OrigDevice; + GetGWorld (&OrigPort, &OrigDevice); // get current GrafPort + SetGWorld (getPort (), NULL); // activate our GWorld + + if (drawStyle == kDrawFilled || drawStyle == kDrawFilledAndStroked) + { + Rect rr; + RGBColor col; + CColor2RGBColor (fillColor, col); + RGBForeColor (&col); + CRect2Rect (rect, rr); + FillRect (&rr, &fillPattern); + } + if (drawStyle == kDrawStroked || drawStyle == kDrawFilledAndStroked) + { + RGBColor col; + CColor2RGBColor (frameColor, col); + RGBForeColor (&col); + MoveTo (rect.left, rect.top); + LineTo (rect.right-1, rect.top); + LineTo (rect.right-1, rect.bottom-1); + LineTo (rect.left, rect.bottom-1); + LineTo (rect.left, rect.top); + } + SetGWorld (OrigPort, OrigDevice); + #endif + +#elif MOTIF + XDrawRectangle (XDRAWPARAM, rect.left, rect.top, rect.width (), rect.height ()); + +#elif BEOS + rgb_color c = { frameColor.red, frameColor.green, frameColor.blue, 255 }; + pView->SetHighColor (c); + pView->SetDrawingMode (modeToPlatform [drawMode]); + BRect r (rect.left, rect.top, rect.right, rect.bottom); + pView->SetPenSize (frameWidth); + pView->StrokeRect (r); + +#endif +} + +//----------------------------------------------------------------------------- +void CDrawContext::fillRect (const CRect &_rect) +{ + CRect rect (_rect); + rect.offset (offset.h, offset.v); + + // Don't draw boundary +#if WINDOWS + RECT wr = {rect.left + 1, rect.top + 1, rect.right, rect.bottom}; + HANDLE nullPen = GetStockObject (NULL_PEN); + HANDLE oldPen = SelectObject ((HDC)pSystemContext, nullPen); + FillRect ((HDC)pSystemContext, &wr, (HBRUSH)pBrush); + SelectObject ((HDC)pSystemContext, oldPen); + +#elif MAC + #if QUARTZ + CGContextRef context = beginCGContext (true); + { + CGRect r = CGRectMake (rect.left, rect.top, rect.width (), rect.height ()); + CGContextFillRect (context, r); + releaseCGContext (context); + } + #else + Rect rr; + CGrafPtr OrigPort; + GDHandle OrigDevice; + GetGWorld (&OrigPort, &OrigDevice); + SetGWorld (getPort (), NULL); + RGBColor col; + CColor2RGBColor (fillColor, col); + RGBForeColor (&col); + CRect2Rect (rect, rr); + rr.left++; + rr.top++; + FillRect (&rr, &fillPattern); + SetGWorld (OrigPort, OrigDevice); + #endif + +#elif MOTIF + XFillRectangle (XDRAWPARAM, rect.left + 1, rect.top + 1, rect.width () - 1, rect.height () - 1); + +#elif BEOS + rgb_color c = { fillColor.red, fillColor.green, fillColor.blue, 255 }; + pView->SetHighColor (c); + pView->SetDrawingMode (modeToPlatform [drawMode]); + BRect r (rect.left + 1, rect.top + 1, rect.right - 1, rect.bottom - 1); + pView->FillRect (r); +#endif +} + +//----------------------------------------------------------------------------- +void CDrawContext::drawEllipse (const CRect &_rect, const CDrawStyle drawStyle) +{ + #if QUARTZ + CRect rect (_rect); + rect.offset (offset.h, offset.v); + + CGContextRef context = beginCGContext (true); + { + CGPathDrawingMode m; + switch (drawStyle) + { + case kDrawFilled : m = kCGPathFill; break; + case kDrawFilledAndStroked : m = kCGPathFillStroke; break; + default : m = kCGPathStroke; break; + } + if (rect.width () != rect.height ()) + { + CGContextSaveGState (context); + + QuartzSetLineDash (context, lineStyle, frameWidth); + + CGContextBeginPath (context); + + CGRect cgRect = CGRectMake (rect.left, rect.top, rect.width (), rect.height ()); + CGPoint center = CGPointMake (CGRectGetMidX (cgRect), CGRectGetMidY (cgRect)); + float a = CGRectGetWidth (cgRect) / 2; + float b = CGRectGetHeight (cgRect) / 2; + + CGContextTranslateCTM (context, center.x, center.y); + CGContextScaleCTM (context, a, b); + CGContextMoveToPoint (context, 1, 0); + CGContextAddArc (context, 0, 0, 1, radians (0), radians (360), 0); + + CGContextClosePath (context); + CGContextRestoreGState (context); + CGContextDrawPath (context, m); + } + else + { + float radius = rect.width () * 0.5f; + CGContextBeginPath (context); + CGContextAddArc (context, rect.left + radius, rect.top + radius, radius, radians (0), radians (360), 0); + CGContextClosePath (context); + CGContextDrawPath (context, m); + } + releaseCGContext (context); + } + + #else + CPoint point (_rect.left + (_rect.right - _rect.left) / 2, _rect.top); + drawArc (_rect, point, point); + #endif +} + +//----------------------------------------------------------------------------- +void CDrawContext::fillEllipse (const CRect &_rect) +{ + CRect rect (_rect); + rect.offset (offset.h, offset.v); + + // Don't draw boundary +#if WINDOWS + HANDLE nullPen = GetStockObject (NULL_PEN); + HANDLE oldPen = SelectObject ((HDC)pSystemContext, nullPen); + Ellipse ((HDC)pSystemContext, rect.left + 1, rect.top + 1, rect.right + 1, rect.bottom + 1); + SelectObject ((HDC)pSystemContext, oldPen); + +#elif QUARTZ + CGContextRef context = beginCGContext (true); + { + CGContextSaveGState (context); + CGContextBeginPath (context); + + CGRect cgRect = CGRectMake (rect.left, rect.top, rect.width (), rect.height ()); + CGPoint center = CGPointMake (CGRectGetMidX (cgRect), CGRectGetMidY (cgRect)); + float a = CGRectGetWidth (cgRect) / 2; + float b = CGRectGetHeight (cgRect) / 2; + + CGContextTranslateCTM (context, center.x, center.y); + CGContextScaleCTM (context, a, b); + CGContextMoveToPoint (context, 1, 0); + CGContextAddArc (context, 0, 0, 1, radians (0), radians (360), 0); + + CGContextClosePath (context); + CGContextRestoreGState (context); + CGContextDrawPath (context, kCGPathFill); + releaseCGContext (context); + } + +#else + CPoint point (_rect.left + ((_rect.right - _rect.left) / 2), _rect.top); + fillArc (_rect, point, point); +#endif +} + +//----------------------------------------------------------------------------- +void CDrawContext::drawPoint (const CPoint &_point, CColor color) +{ + CPoint point (_point); + +#if WINDOWS + point.offset (offset.h, offset.v); + SetPixel ((HDC)pSystemContext, point.h, point.v, RGB(color.red, color.green, color.blue)); + +#elif MOTIF + CColor oldframecolor = frameColor; + setFrameColor (color); + XDrawPoint (XDRAWPARAM, point.h, point.v); + setFrameColor (oldframecolor); + +#elif MAC + CCoord oldframeWidth = frameWidth; + CColor oldframecolor = frameColor; + setLineWidth (1); + setFrameColor (color); + CPoint point2 (point); + point2.h++; + moveTo (point); + lineTo (point2); + + setFrameColor (oldframecolor); + setLineWidth (oldframeWidth); + +#else + int oldframeWidth = frameWidth; + CColor oldframecolor = frameColor; + setLineWidth (1); + setFrameColor (color); + moveTo (point); + lineTo (point); + + setFrameColor (oldframecolor); + setLineWidth (oldframeWidth); +#endif +} + +//----------------------------------------------------------------------------- +CColor CDrawContext::getPoint (const CPoint& _point) +{ + CPoint point (_point); + point.offset (offset.h, offset.v); + CColor color = kBlackCColor; + + #if WINDOWS + COLORREF c = GetPixel ((HDC)pSystemContext, point.h, point.v); + color.red = GetRValue (c); + color.green = GetGValue (c); + color.blue = GetBValue (c); + + #elif MAC + #if QUARTZ + // no quartz equivalent + + #else + CGrafPtr OrigPort; + GDHandle OrigDevice; + GetGWorld (&OrigPort, &OrigDevice); + SetGWorld (getPort (), NULL); + RGBColor cPix; + GetCPixel (point.h, point.v, &cPix); + RGBColor2CColor (cPix, color); + SetGWorld (OrigPort, OrigDevice); + #endif + #endif + + return color; +} + +//----------------------------------------------------------------------------- +void CDrawContext::floodFill (const CPoint& _start) +{ + CPoint start (_start); + start.offset (offset.h, offset.v); + + #if WINDOWS + COLORREF c = GetPixel ((HDC)pSystemContext, start.h, start.v); + ExtFloodFill ((HDC)pSystemContext, start.h, start.v, c, FLOODFILLSURFACE); + + #elif MAC + #if QUARTZ + // no quartz equivalent + + #else + CGrafPtr oldPort; + GDHandle oldDevice; + GetGWorld (&oldPort, &oldDevice); + SetGWorld (getPort (), 0); + + Rect r; + GetPortBounds (getPort (), &r); + GWorldPtr pMask; + OSErr err = NewGWorld ((GWorldPtr*)&pMask, 1, &r, 0, 0, 0); // create monochrome GWorld + if (!err) + { + // generate fill mask + PixMapHandle srcBits = GetGWorldPixMap (getPort ()); + PixMapHandle dstBits = GetGWorldPixMap (pMask); + if (srcBits && dstBits) + { + LockPixels (srcBits); + LockPixels (dstBits); + + SeedCFill ((BitMapPtr)*srcBits, (BitMapPtr)*dstBits, &r, &r, start.h, start.v, 0, 0); + + // fill destination + RGBColor oldForeColor, oldBackColor; + GetForeColor (&oldForeColor); + GetBackColor (&oldBackColor); + + ::BackColor (whiteColor); + + RGBColor col; + CColor2RGBColor (fillColor, col); + RGBForeColor (&col); + + CopyMask ((BitMapPtr)*dstBits, (BitMapPtr)*dstBits, (BitMapPtr)*srcBits, &r, &r, &r); + + RGBForeColor (&oldForeColor); + RGBBackColor (&oldBackColor); + + // cleanup + UnlockPixels (srcBits); + UnlockPixels (dstBits); + } + + DisposeGWorld (pMask); + } + + SetGWorld (oldPort, oldDevice); + #endif + #endif +} + +#if QUARTZ +void addOvalToPath(CGContextRef c, CPoint center, float a, float b, float start_angle, float end_angle) +{ + CGContextSaveGState (c); + CGContextTranslateCTM (c, center.x, center.y); + CGContextScaleCTM (c, a, b); + + CGContextMoveToPoint (c, cos (radians (start_angle)), sin (radians (start_angle))); + + CGContextAddArc(c, 0, 0, 1, radians (start_angle), radians (end_angle), 1); + + CGContextRestoreGState(c); +} +#endif + +//----------------------------------------------------------------------------- +void CDrawContext::drawArc (const CRect &_rect, const float _startAngle, const float _endAngle, const CDrawStyle drawStyle) // in degree +{ + CRect rect (_rect); + rect.offset (offset.h, offset.v); + + #if WINDOWS + float startRad = (float)(k2PI * _startAngle / 360.f); + float endRad = (float)(k2PI * _endAngle / 360.f); + + CPoint point1, point2; + long midX = _rect.width () / 2; + long midY = _rect.height () / 2; + + point1.x = (long)(midX + midX * cosf (startRad)); + point1.y = (long)(midY - midY * sinf (startRad)); + point2.x = (long)(midX + midX * cosf (endRad)); + point2.y = (long)(midY - midY * sinf (endRad)); + point1.offset (offset.h, offset.v); + point2.offset (offset.h, offset.v); + + if (drawStyle == kDrawFilled || drawStyle == kDrawFilledAndStroked) + { + HANDLE nullPen = GetStockObject (NULL_PEN); + HANDLE oldPen = SelectObject ((HDC)pSystemContext, nullPen); + Pie ((HDC)pSystemContext, rect.left, rect.top, rect.right + 1, rect.bottom + 1, + point1.h, point1.v, point2.h, point2.v); + SelectObject ((HDC)pSystemContext, oldPen); + } + if (drawStyle == kDrawStroked || drawStyle == kDrawFilledAndStroked) + { + Arc ((HDC)pSystemContext, rect.left, rect.top, rect.right + 1, rect.bottom + 1, + point1.h, point1.v, point2.h, point2.v); + } + + #elif MOTIF + + XDrawArc (XDRAWPARAM, rect.left, rect.top, rect.width (), rect.height (), + _startAngle * 64, _endAngle * 64); + + #elif MAC + + #if QUARTZ + CGContextRef context = beginCGContext (true); + { + CGPathDrawingMode m; + switch (drawStyle) + { + case kDrawFilled : m = kCGPathFill; break; + case kDrawFilledAndStroked : m = kCGPathFillStroke; break; + default : m = kCGPathStroke; break; + } + QuartzSetLineDash (context, lineStyle, frameWidth); + + CGContextBeginPath (context); + addOvalToPath (context, CPoint (rect.left + rect.width () / 2, rect.top + rect.height () / 2), rect.width () / 2, rect.height () / 2, -_startAngle, -_endAngle); + + CGContextDrawPath (context, m); + releaseCGContext (context); + } + #else + Rect rr; + CGrafPtr OrigPort; + GDHandle OrigDevice; + GetGWorld (&OrigPort, &OrigDevice); + SetGWorld (getPort (), NULL); + RGBColor col; + CColor2RGBColor (frameColor, col); + RGBForeColor (&col); + CRect2Rect (rect, rr); + FrameArc (&rr, 90 - _startAngle, -_endAngle); + SetGWorld (OrigPort, OrigDevice); + #endif + + #elif BEOS + rgb_color c = { frameColor.red, frameColor.green, frameColor.blue, 255 }; + pView->SetHighColor (c); + pView->SetDrawingMode (modeToPlatform [drawMode]); + BRect r (rect.left, rect.top, rect.right, rect.bottom); + pView->SetPenSize (frameWidth); + pView->StrokeArc (r, _startAngle, _endAngle); + + #endif +} + +//----------------------------------------------------------------------------- +void CDrawContext::drawArc (const CRect &_rect, const CPoint &_point1, const CPoint &_point2) +{ + CRect rect (_rect); + rect.offset (offset.h, offset.v); + CPoint point1 (_point1); + point1.offset (offset.h, offset.v); + CPoint point2 (_point2); + point2.offset (offset.h, offset.v); + + // draws from point1 to point2 counterclockwise +#if WINDOWS + Arc ((HDC)pSystemContext, rect.left, rect.top, rect.right + 1, rect.bottom + 1, + point1.h, point1.v, point2.h, point2.v); + +#elif MAC || MOTIF || BEOS + + int angle1, angle2; + if ((point1.v == point2.v) && (point1.h == point2.h)) + { + angle1 = 0; + angle2 = 23040; // 360 * 64 + } + else + { + CPoint pm ((rect.left + rect.right) / 2, (rect.top + rect.bottom) / 2); + angle1 = convertPoint2Angle (pm, point1); + angle2 = convertPoint2Angle (pm, point2) - angle1; + if (angle2 < 0) + angle2 += 23040; // 360 * 64 + } + +#if MAC + + #if QUARTZ + angle1 /= 64; + angle2 /= 64; + CGContextRef context = beginCGContext (true); + { + QuartzSetLineDash (context, lineStyle, frameWidth); + + CGContextBeginPath (context); + addOvalToPath (context, CPoint (rect.left + rect.width () / 2, rect.top + rect.height () / 2), rect.width () / 2, rect.height () / 2, 90-angle1, (90-angle1)-angle2); + CGContextDrawPath (context, kCGPathStroke); + releaseCGContext (context); + } + #else + Rect rr; + CGrafPtr OrigPort; + GDHandle OrigDevice; + GetGWorld (&OrigPort, &OrigDevice); + SetGWorld (getPort (), NULL); + RGBColor col; + CColor2RGBColor (frameColor, col); + RGBForeColor (&col); + CRect2Rect (rect, rr); + FrameArc (&rr, 90 - (angle1 / 64), -angle2 / 64); + SetGWorld (OrigPort, OrigDevice); + #endif + +#elif MOTIF + XDrawArc (XDRAWPARAM, rect.left, rect.top, rect.width (), rect.height (), + angle1, angle2); + +#elif BEOS + rgb_color c = { frameColor.red, frameColor.green, frameColor.blue, 255 }; + pView->SetHighColor (c); + pView->SetDrawingMode (modeToPlatform [drawMode]); + BRect r (rect.left, rect.top, rect.right, rect.bottom); + pView->SetPenSize (frameWidth); + pView->StrokeArc (r, angle1 / 64, angle2 / 64); +#endif + +#endif +} + +//----------------------------------------------------------------------------- +void CDrawContext::fillArc (const CRect &_rect, const CPoint &_point1, const CPoint &_point2) +{ + CRect rect (_rect); + rect.offset (offset.h, offset.v); + CPoint point1 (_point1); + point1.offset (offset.h, offset.v); + CPoint point2 (_point2); + point2.offset (offset.h, offset.v); + + // Don't draw boundary +#if WINDOWS + HANDLE nullPen = GetStockObject (NULL_PEN); + HANDLE oldPen = SelectObject ((HDC)pSystemContext, nullPen); + Pie ((HDC)pSystemContext, offset.h + rect.left + 1, offset.v + rect.top + 1, offset.h + rect.right, offset.v + rect.bottom, + point1.h, point1.v, point2.h, point2.v); + SelectObject ((HDC)pSystemContext, oldPen); + +#elif MAC || MOTIF || BEOS + + int angle1, angle2; + if ((point1.v == point2.v) && (point1.h == point2.h)) + { + angle1 = 0; + angle2 = 23040; // 360 * 64 + } + else + { + CPoint pm ((rect.left + rect.right) / 2, (rect.top + rect.bottom) / 2); + angle1 = convertPoint2Angle (pm, point1); + angle2 = convertPoint2Angle (pm, point2); + } + +#if MAC + #if QUARTZ + angle1 /= 64; + angle2 /= 64; + CGContextRef context = beginCGContext (true); + { + CGContextBeginPath (context); + addOvalToPath (context, CPoint (rect.left + rect.width () / 2, rect.top + rect.height () / 2), rect.width () / 2, rect.height () / 2, -angle1, -angle2); + CGContextClosePath (context); + CGContextDrawPath (context, kCGPathFill); + releaseCGContext (context); + } + + #else + Rect rr; + CGrafPtr OrigPort; + GDHandle OrigDevice; + GetGWorld (&OrigPort, &OrigDevice); + SetGWorld (getPort (), NULL); + RGBColor col; + CColor2RGBColor (fillColor, col); + RGBForeColor (&col); + CRect2Rect (rect, rr); + + angle2 = angle2 - angle1; + if (angle2 < 0) + angle2 = -angle2; + FillArc (&rr, 90 - (angle1 / 64), -angle2 / 64, &fillPattern); + + SetGWorld (OrigPort, OrigDevice); + #endif + +#elif MOTIF + XFillArc (XDRAWPARAM, rect.left, rect.top, rect.width (), rect.height (), + angle1, angle2); + +#elif BEOS + rgb_color c = { fillColor.red, fillColor.green, fillColor.blue, 255 }; + pView->SetHighColor (c); + pView->SetDrawingMode (modeToPlatform [drawMode]); + BRect r (rect.left + 1, rect.top + 1, rect.right - 1, rect.bottom - 1); + pView->FillArc (r, angle1 / 64, angle2 / 64); + +#endif +#endif +} + +//----------------------------------------------------------------------------- +void CDrawContext::setFontColor (const CColor color) +{ + fontColor = color; + +#if WINDOWS + SetTextColor ((HDC)pSystemContext, RGB (fontColor.red, fontColor.green, fontColor.blue)); + +#elif MAC + #if QUARTZ + // on quartz the fill color is the font color + + #else + RGBColor col; + CGrafPtr OrigPort; + GDHandle OrigDevice; + if (pWindow) + { + GetGWorld (&OrigPort, &OrigDevice); + SetGWorld (getPort (), NULL); + CColor2RGBColor (fontColor, col); + RGBForeColor (&col); + SetGWorld (OrigPort, OrigDevice); + } + #endif + +#elif MOTIF + setFrameColor (fontColor); + +#endif +} + +//----------------------------------------------------------------------------- +void CDrawContext::setFrameColor (const CColor color) +{ + if (frameColor == color) + return; + + frameColor = color; + +#if WINDOWS + LOGPEN logPen = {iPenStyle, {frameWidth, frameWidth}, + RGB (frameColor.red, frameColor.green, frameColor.blue)}; + + HANDLE newPen = CreatePenIndirect (&logPen); + SelectObject ((HDC)pSystemContext, newPen); + if (pPen) + DeleteObject (pPen); + pPen = newPen; + +#elif MAC + #if QUARTZ + if (gCGContext) + CGContextSetRGBStrokeColor (gCGContext, color.red/255.f, color.green/255.f, color.blue/255.f, color.alpha/255.f); + #else + RGBColor col; + CGrafPtr OrigPort; + GDHandle OrigDevice; + if (pWindow) + { + GetGWorld (&OrigPort, &OrigDevice); + SetGWorld (getPort (), NULL); + CColor2RGBColor (frameColor, col); + RGBForeColor (&col); + SetGWorld (OrigPort, OrigDevice); + } + #endif + +#elif MOTIF + XSetForeground (XGCPARAM, getIndexColor (frameColor)); +#endif +} + +//----------------------------------------------------------------------------- +void CDrawContext::setFillColor (const CColor color) +{ + if (fillColor == color) + return; + + fillColor = color; + +#if WINDOWS + SetBkColor ((HDC)pSystemContext, RGB (color.red, color.green, color.blue)); + LOGBRUSH logBrush = {BS_SOLID, RGB (color.red, color.green, color.blue), 0 }; + HANDLE newBrush = CreateBrushIndirect (&logBrush); + if (newBrush == 0) + { + DWORD err = GetLastError (); + return; + } + SelectObject ((HDC)pSystemContext, newBrush); + if (pBrush) + DeleteObject (pBrush); + pBrush = newBrush; + +#elif MAC + #if QUARTZ + if (gCGContext) + CGContextSetRGBFillColor (gCGContext, color.red/255.f, color.green/255.f, color.blue/255.f, color.alpha/255.f); + #else + RGBColor col; + CGrafPtr OrigPort; + GDHandle OrigDevice; + if (pWindow) + { + GetGWorld (&OrigPort, &OrigDevice); + SetGWorld (getPort (), NULL); + CColor2RGBColor (fillColor, col); + RGBForeColor (&col); + SetGWorld (OrigPort, OrigDevice); + } + #endif + +#elif MOTIF + // set the background for the text + XSetBackground (XGCPARAM, getIndexColor (fillColor)); + + // set the foreground for the fill + setFrameColor (fillColor); +#endif +} + +//----------------------------------------------------------------------------- +void CDrawContext::setFont (CFont fontID, const long size, long style) +{ + if (fontID < 0 || fontID >= kNumStandardFonts) + fontID = kSystemFont; + + if (fontId == fontID && fontSize == (size != 0 ? size : gStandardFontSize[fontID]) && fontStyle == style) + return; + + fontStyle = style; + fontId = fontID; + if (size != 0) + fontSize = size; + else + fontSize = gStandardFontSize[fontID]; + +#if WINDOWS + LOGFONT logfont = {0}; + + if (style & kBoldFace) + logfont.lfWeight = FW_BOLD; + else + logfont.lfWeight = FW_NORMAL; + if (style & kItalicFace) + logfont.lfItalic = true; + if (style & kUnderlineFace) + logfont.lfUnderline = true; + + logfont.lfHeight = -fontSize; + logfont.lfPitchAndFamily = VARIABLE_PITCH | FF_SWISS; + strcpy (logfont.lfFaceName, gStandardFontName[fontID]); + + if (fontID == kSymbolFont) + logfont.lfPitchAndFamily = DEFAULT_PITCH | FF_DECORATIVE; + else if (fontID == kSystemFont) + logfont.lfWeight = FW_BOLD; + + logfont.lfClipPrecision = CLIP_STROKE_PRECIS; + logfont.lfOutPrecision = OUT_STRING_PRECIS; + logfont.lfQuality = DEFAULT_QUALITY; + logfont.lfCharSet = ANSI_CHARSET; + + HANDLE newFont = CreateFontIndirect (&logfont); + SelectObject ((HDC)pSystemContext, newFont); + if (pFont) + DeleteObject (pFont); + pFont = newFont; + +#elif MAC + #if QUARTZ + char myMacXFontName[255]; + strcpy(myMacXFontName, gMacXfontNames[fontId]); + if (style & kBoldFace) + strcat(myMacXFontName, " Bold"); + if (style & kItalicFace) + strcat(myMacXFontName, " Italic"); + if (style & kUnderlineFace) + strcat(myMacXFontName, " Underline"); + + if (gCGContext) + CGContextSelectFont (gCGContext, (const char*)myMacXFontName, fontSize, kCGEncodingMacRoman); + #else + CGrafPtr OrigPort; + GDHandle OrigDevice; + if (pWindow) + { + GetGWorld (&OrigPort, &OrigDevice); + SetGWorld (getPort (), NULL); + + TextFace (style); // normal, bold, italic, underline... + TextMode (0); + TextSize (fontSize); + + #if MACX + short familyID; + + GetFNum (gMacXfontNames[fontID], &familyID); + + TextFont (familyID); + + #else + if (fontID == kSymbolFont) + TextFont (kFontIDSymbol); + else if (fontID == kSystemFont) + TextFont (0); // system + else if (fontID == kNormalFontSmaller) + TextFont (kFontIDGeneva); // Geneva + else + TextFont (kFontIDHelvetica); + #endif + + GetFontInfo (&fontInfoStruct); + SetGWorld (OrigPort, OrigDevice); + } + #endif + +#elif MOTIF + XSetFont (XGCPARAM, gFontStructs[fontID]->fid); + + // keep trace of the current font + pFontInfoStruct = gFontStructs[fontID]; + +#elif BEOS + font.SetFamilyAndStyle (gStandardFontName[fontID], gStandardFontStyle[fontID]); + font.SetSize (fontSize); + pView->SetFont (&font, B_FONT_FAMILY_AND_STYLE | B_FONT_SIZE); +#endif +} + +//------------------------------------------------------------------------------ +CCoord CDrawContext::getStringWidth (const char *pStr) +{ + CCoord result = 0; + + #if MAC + #if QUARTZ + CGContextRef context = beginCGContext (true); + if (context) + { + CGContextSetTextDrawingMode (context, kCGTextInvisible); + CGContextSetTextPosition (context, 0.f, 0.f); + CGContextShowText (context, pStr, strlen (pStr)); + CGPoint p = CGContextGetTextPosition (context); + result = (CCoord)p.x; + releaseCGContext (context); + } + #else + CGrafPtr OrigPort; + GDHandle OrigDevice; + GetGWorld (&OrigPort, &OrigDevice); + SetGWorld (getPort (), NULL); + + result = (long)TextWidth (pStr, 0, strlen (pStr)); + + SetGWorld (OrigPort, OrigDevice); + #endif + + #elif WINDOWS + SIZE size; + GetTextExtentPoint32 ((HDC)pSystemContext, pStr, (int)strlen (pStr), &size); + result = (long)size.cx; + + #elif MOTIF + result = (long)XTextWidth (pFontInfoStruct, pStr, strlen (pStr)); + + #elif BEOS + result = (long)(ceil (pView->StringWidth (pStr))); + #endif + + return result; +} + +//----------------------------------------------------------------------------- +void CDrawContext::drawString (const char *string, const CRect &_rect, + const short opaque, const CHoriTxtAlign hAlign) +{ + if (!string) + return; + + CRect rect (_rect); + rect.offset (offset.h, offset.v); + +#if WINDOWS + // set the visibility mask + SetBkMode ((HDC)pSystemContext, opaque ? OPAQUE : TRANSPARENT); + + RECT Rect = {rect.left, rect.top, rect.right, rect.bottom}; + UINT flag = DT_VCENTER + DT_SINGLELINE + DT_NOPREFIX; + switch (hAlign) + { + case kCenterText: + // without DT_SINGLELINE no vertical center alignment here + DrawText ((HDC)pSystemContext, string, (int)strlen (string), &Rect, flag + DT_CENTER); + break; + + case kRightText: + DrawText ((HDC)pSystemContext, string, (int)strlen (string), &Rect, flag + DT_RIGHT); + break; + + default : // left adjust + Rect.left++; + DrawText ((HDC)pSystemContext, string, (int)strlen (string), &Rect, flag + DT_LEFT); + } + + SetBkMode ((HDC)pSystemContext, TRANSPARENT); + +#elif MAC + #if QUARTZ + CGContextRef context = beginCGContext (true); + if (context) + { + CCoord strWidth = getStringWidth (string); + rect.bottom -= rect.height ()/2 - fontSize / 2 + 1; + switch (hAlign) + { + case kCenterText: + { + rect.left += rect.width () / 2 - strWidth/2; + break; + } + case kRightText: + rect.left = rect.right - strWidth; + break; + default : // left adjust + rect.left++; + } + + CGContextSetShouldAntialias (context, true); + CGContextSetTextDrawingMode (context, kCGTextFill); + CGContextSetRGBFillColor (context, fontColor.red/255.f, fontColor.green/255.f, fontColor.blue/255.f, fontColor.alpha/255.f); + CGContextSetTextPosition (context, rect.left, rect.bottom); + CGContextShowText (context, string, strlen (string)); + releaseCGContext (context); + } + + #else + CGrafPtr OrigPort; + GDHandle OrigDevice; + int width; + int xPos, yPos; + int fontHeight; + int rectHeight; + int stringLength; + + Rect stringsRect; + Rect contextsClip; + Rect compositeClip; + + CRect2Rect (rect, stringsRect); + CRect2Rect (clipRect, contextsClip); + + if (SectRect (&stringsRect, &contextsClip, &compositeClip)) + { + GetGWorld (&OrigPort, &OrigDevice); + SetGWorld (getPort (), NULL); + + if (opaque) + TextMode (srcCopy); + else + TextMode (srcOr); + + RGBColor col; + CColor2RGBColor (fontColor, col); + RGBForeColor (&col); + + CColor2RGBColor (fillColor, col); + RGBBackColor (&col); + + rectHeight = rect.height (); + fontHeight = fontInfoStruct.ascent + fontInfoStruct.descent; + yPos = rect.bottom - fontInfoStruct.descent; + if (rectHeight >= fontHeight) + yPos -= (rectHeight - fontHeight) / 2; + + stringLength = strlen (string); + width = TextWidth ((Ptr)string, 0, stringLength); + + switch (hAlign) + { + case kCenterText: + xPos = (rect.right + rect.left - width) / 2; + break; + + case kRightText: + xPos = rect.right - width; + break; + + default: // left adjust + xPos = rect.left; + } + + RgnHandle saveRgn = NewRgn (); + GetClip (saveRgn); + + ClipRect (&compositeClip); + + #if TARGET_API_MAC_CARBON + CFStringRef str; + + // Create a unicode string + str = CFStringCreateWithCString(NULL, string, kCFStringEncodingMacRoman); + + // Initialize proper text box options + TXNTextBoxOptionsData myOptions; + myOptions.optionTags = kTXNSetJustificationMask; + myOptions.justification = kTXNFlushLeft; + + // Determine the vertical alignment of the text box. + // It is centered vertically. + // Somehow, the yPos calculation above doesn't work here + // or I am too stupid to understand it. Therefore I calculate + // the text position in the surrounding control rect myself. + long myHeight = (rect.height () - fontHeight) / 2; + if (myHeight>0) + { + stringsRect.top += myHeight; + stringsRect.bottom += myHeight; + } + stringsRect.left = xPos; + stringsRect.right = xPos + width;//rect.width (); + + // Draw the unicode string + TXNDrawCFStringTextBox (str, &stringsRect, NULL, &myOptions); + + // Release the unicode string + CFRelease (str); + #else + MoveTo (xPos, yPos); + DrawText ((Ptr)string, 0, stringLength); + #endif + + SetClip (saveRgn); + DisposeRgn (saveRgn); + TextMode (srcOr); + SetGWorld (OrigPort, OrigDevice); + } + #endif + +#elif MOTIF + int width; + int fontHeight = pFontInfoStruct->ascent + pFontInfoStruct->descent; + int xPos; + int yPos; + int rectHeight = rect.height (); + + if (rectHeight >= fontHeight) + yPos = rect.bottom - (rectHeight - fontHeight) / 2; + else + yPos = rect.bottom; + yPos -= pFontInfoStruct->descent; + + switch (hAlign) + { + case kCenterText: + width = XTextWidth (pFontInfoStruct, string, strlen (string)); + xPos = (rect.right + rect.left - width) / 2; + break; + + case kRightText: + width = XTextWidth (pFontInfoStruct, string, strlen (string)); + xPos = rect.right - width; + break; + + default: // left adjust + xPos = rect.left + 1; + } + + if (opaque) + XDrawImageString (XDRAWPARAM, xPos, yPos, string, strlen (string)); + else + XDrawString (XDRAWPARAM, xPos, yPos, string, strlen (string)); + +#elif BEOS + BRect r (rect.left, rect.top, rect.right - 1, rect.bottom - 1); + BRegion LocalRegion (r); + pView->ConstrainClippingRegion (&LocalRegion); + pView->SetFontSize (fontSize); + float width = -1; + if (opaque) + { + width = ceil (pView->StringWidth (string)); + CRect cr (rect.left, rect.top, rect.left + width, rect.bottom); + fillRect (cr); + } + rgb_color c = { fontColor.red, fontColor.green, fontColor.blue, 255 }; + pView->SetHighColor (c); + if (drawMode == kXorMode) + pView->SetDrawingMode (B_OP_INVERT); + else + pView->SetDrawingMode (B_OP_OVER); + BPoint p; + font_height height; + pView->GetFontHeight (&height); + p.y = r.bottom - (rect.height () - height.ascent) / 2; + if (hAlign == kCenterText || hAlign == kRightText) + { + if (width < 0) + width = ceil (pView->StringWidth (string)); + if (hAlign == kCenterText) + p.x = rect.left + (rect.right - rect.left - width) / 2; + else + p.x = rect.right - width - 1; + } + else + p.x = rect.left + 1; + pView->DrawString (string, p); + pView->ConstrainClippingRegion (NULL); +#endif +} + +//----------------------------------------------------------------------------- +long CDrawContext::getMouseButtons () +{ + long buttons = 0; + +#if WINDOWS + if (GetAsyncKeyState (VK_LBUTTON) < 0) + buttons |= (bSwapped_mouse_buttons ? kRButton : kLButton); + if (GetAsyncKeyState (VK_MBUTTON) < 0) + buttons |= kMButton; + if (GetAsyncKeyState (VK_RBUTTON) < 0) + buttons |= (bSwapped_mouse_buttons ? kLButton : kRButton); + + if (GetAsyncKeyState (VK_SHIFT) < 0) + buttons |= kShift; + if (GetAsyncKeyState (VK_CONTROL) < 0) + buttons |= kControl; + if (GetAsyncKeyState (VK_MENU) < 0) + buttons |= kAlt; + +#elif MAC + #if MACX // this works for MacOSX 10.2 and later + UInt32 state = GetCurrentButtonState (); + if (state & kEventMouseButtonPrimary) + buttons |= kLButton; + if (state & kEventMouseButtonSecondary) + buttons |= kRButton; + if (state & 4)//kEventMouseButtonTertiary) this define is false...Apple ? + buttons |= kMButton; + + state = GetCurrentKeyModifiers (); + if (state & cmdKey) + buttons |= kControl; + if (state & shiftKey) + buttons |= kShift; + if (state & optionKey) + buttons |= kAlt; + if (state & controlKey) + buttons |= kApple; + // for the one buttons + if (buttons & kApple && buttons & kLButton) + { + buttons &= ~(kApple | kLButton); + buttons |= kRButton; + } + #else + if (Button ()) + buttons |= kLButton; + + KeyMap Keys; + unsigned char *BytePtr = (unsigned char*)Keys; + GetKeys (Keys); + + if (BytePtr[7] & 1) // Shift 0x38 == 56 = (7 * 8) + 0 + buttons |= kShift; + if (BytePtr[7] & 8) // Control (extra Mac) 0x3B == 59 = (7 * 8) + 3 + buttons |= kApple; + if (BytePtr[7] & 4) // Alt 0x3A == 58 = (7 * 8) + 2 + buttons |= kAlt; + if (BytePtr[6] & 128) // Apple => ctrl (PC) 0x37 == 55 = (6 * 8) + 7 + buttons |= kControl; + #endif + +#elif MOTIF + Window root, child; + long rootX, rootY, childX, childY; + unsigned int mask; + int result = XQueryPointer (XWINPARAM, &root, &child, &rootX, &rootY, + &childX, &childY, &mask); + if (mask & Button1Mask) + buttons |= kLButton; + if (mask & Button2Mask) + buttons |= kMButton; + if (mask & Button3Mask) + buttons |= kRButton; + + if (mask & ShiftMask) + buttons |= kShift; + if (mask & ControlMask) + buttons |= kControl; + if (mask & Mod1Mask) + buttons |= kAlt; + +#elif BEOS + BPoint where; + uint32 b; + pView->GetMouse (&where, &b); + if (b & B_PRIMARY_MOUSE_BUTTON) + buttons |= kLButton; + if (b & B_SECONDARY_MOUSE_BUTTON) + buttons |= kRButton; + if (b & B_TERTIARY_MOUSE_BUTTON) + buttons |= kMButton; + int32 m = modifiers (); + if (m & B_SHIFT_KEY) + buttons |= kShift; + if (m & B_COMMAND_KEY) + buttons |= kControl; + if (m & B_OPTION_KEY) + buttons |= kApple; + if (m & B_CONTROL_KEY) + buttons |= kAlt; +#endif + + return buttons; +} + +//----------------------------------------------------------------------------- +void CDrawContext::getMouseLocation (CPoint &point) +{ +#if WINDOWS + POINT where; + GetCursorPos (&where); + point (where.x, where.y); + +#elif MACX + #if 0 // QUARTZ // does not work sic! + Point where; + UInt32 mod; + MouseTrackingResult result; + if (TrackMouseLocationWithOptions ((CGrafPtr)-1, 0, kEventDurationNoWait, &where, &mod, &result) == noErr) + { + QDGlobalToLocalPoint (getPort (), &where); + point (where.h, where.v); + } + #else + Point where; + CGrafPtr savedPort; + Boolean portChanged = QDSwapPort (getPort (), &savedPort); + GetMouse (&where); + if (portChanged) + QDSwapPort (savedPort, NULL); + point (where.h, where.v); + #endif + #if QUARTZ + point.offset (pFrame->hiScrollOffset.x,pFrame->hiScrollOffset.y); + #endif +#elif MAC + Point where; + GetMouse (&where); + point (where.h, where.v); + +#elif MOTIF + Window root, child; + int rootX, rootY, childX, childY; + unsigned int mask; + int result = XQueryPointer (XWINPARAM, &root, &child, &rootX, &rootY, + &childX, &childY, &mask); + point (childX, childY); + +#elif BEOS + BPoint where; + uint32 b; + pView->GetMouse (&where, &b); + point (where.x, where.y); +#endif + + point.offset (-offsetScreen.h, -offsetScreen.v); +} + +//----------------------------------------------------------------------------- +bool CDrawContext::waitDoubleClick () +{ + bool doubleClick = false; + +#if WINDOWS + CPoint mouseLoc; + getMouseLocation (mouseLoc); + CRect observe (mouseLoc.h - 2, mouseLoc.v - 2, mouseLoc.h + 2, mouseLoc.v + 2); + + DWORD currentTime = GetTickCount (); + DWORD clickTime = GetMessageTime () + (DWORD)GetDoubleClickTime (); + + MSG message; + while (currentTime < clickTime) + { + getMouseLocation (mouseLoc); + if (!observe.pointInside (mouseLoc)) + break; + + if (PeekMessage (&message, 0, WM_LBUTTONDOWN, WM_LBUTTONDOWN, PM_REMOVE | PM_NOYIELD)) + { + doubleClick = true; + break; + } + + currentTime = GetTickCount (); + } + +#elif MAC + #if MACX + #if QUARTZ + EventTimeout timeout = GetDblTime () * kEventDurationSecond / 60; + const EventTypeSpec eventTypes[] = { { kEventClassMouse, kEventMouseDown }, { kEventClassMouse, kEventMouseDragged } }; + EventRef event; + if (ReceiveNextEvent (GetEventTypeCount (eventTypes), eventTypes, timeout, true, &event) == noErr) + { + if (GetEventKind (event) == kEventMouseDown) + { + doubleClick = true; + } + ReleaseEvent (event); + } + + #else + unsigned long clickTime, doubletime; + EventRecord downEvent; + + doubletime = GetDblTime (); + clickTime = TickCount () + doubletime; + while (TickCount () < clickTime) + { + if (GetNextEvent (mDownMask, &downEvent)) + { + doubleClick = true; + break; + } + } + #endif // !QUARTZ + + #else + long clickTime, doubleTime; + EventRecord downEvent; + + #define MOUSE_IS_DOWN ((* (char*)0x172) >= 0) + + doubleTime = GetDblTime () / 2; + clickTime = TickCount () + doubleTime; + + while (TickCount () < clickTime) + if (!MOUSE_IS_DOWN) break; /* look for mouse up! */ + + if (GetNextEvent (mUpMask, &downEvent)) + { + clickTime += doubleTime; + while (TickCount () < clickTime) + if (MOUSE_IS_DOWN) break; /* look for mouse down! */ + if (GetNextEvent (mDownMask, &downEvent)) + doubleClick = true; + } + #endif +#elif MOTIF + long currentTime = _getTicks (); + long clickTime = currentTime + XtGetMultiClickTime (pDisplay); + + XEvent e; + while (currentTime < clickTime) + { + if (XCheckTypedEvent (pDisplay, ButtonPress, &e)) + { + doubleClick = true; + break; + } + + currentTime = _getTicks (); + } + +#elif BEOS + const bigtime_t snoozeTime = 5000; + bigtime_t latest = system_time (); + bigtime_t doubleclicktime; + get_click_speed (&doubleclicktime); + latest += doubleclicktime; + BPoint location; + uint32 buttons; + pView->GetMouse (&location, &buttons); + while (buttons) // user should release the mouse button + { + if (system_time () > latest) + return false; + + snooze (snoozeTime); + pView->GetMouse (&location, &buttons); + } + + while (!buttons) + { + if (system_time () > latest) + return false; + + snooze (snoozeTime); + pView->GetMouse (&location, &buttons); + } + + doubleClick = true; + +#endif + + return doubleClick; +} + +//----------------------------------------------------------------------------- +bool CDrawContext::waitDrag () +{ + #if MACX && QUARTZ + bool dragged = false; + if (GetCurrentEventButtonState () & kEventMouseButtonPrimary) + { + const EventTypeSpec eventTypes[] = { { kEventClassMouse, kEventMouseUp }, { kEventClassMouse, kEventMouseDown }, { kEventClassMouse, kEventMouseDragged } }; + EventRef event; + if (ReceiveNextEvent (GetEventTypeCount (eventTypes), eventTypes, kEventDurationForever, true, &event) == noErr) + { + if (GetEventKind (event) == kEventMouseDragged) + { + dragged = true; + } + ReleaseEvent (event); + } + } + return dragged; + + #else + if (!pFrame) + return false; + + CPoint mouseLoc; + getMouseLocation (mouseLoc); + CRect observe (mouseLoc.h - 2, mouseLoc.v - 2, mouseLoc.h + 2, mouseLoc.v + 2); + + long currentTime = pFrame->getTicks (); + bool wasOutside = false; + + while (((getMouseButtons () & ~(kMButton|kRButton)) & kLButton) != 0) + { + pFrame->doIdleStuff (); + if (!wasOutside) + { + getMouseLocation (mouseLoc); + if (!observe.pointInside (mouseLoc)) + { + if (kDragDelay <= 0) + return true; + wasOutside = true; + } + } + + if (wasOutside && (pFrame->getTicks () - currentTime > kDragDelay)) + return true; + } + return false; + #endif +} + +//----------------------------------------------------------------------------- +void CDrawContext::forget () +{ + #if QUARTZ + synchronizeCGContext (); + #endif + CReferenceCounter::forget (); +} + +//----------------------------------------------------------------------------- +#if MOTIF +//----------------------------------------------------------------------------- +long CDrawContext::getIndexColor (CColor color) +{ + // 24bit visual ? + if (pFrame->getDepth () == 24) + return (unsigned int)color.blue << 16 | (unsigned int)color.green << 8 | (unsigned int)color.red; + + // 8bit stuff + return getIndexColor8Bit (color, pDisplay, pFrame->getColormap ()); +} + +//----------------------------------------------------------------------------- +Colormap CDrawContext::getColormap () +{ + if (pFrame) + return pFrame->getColormap (); + else + return NULL; +} + +//----------------------------------------------------------------------------- +Visual* CDrawContext::getVisual () +{ + if (pFrame) + return pFrame->getVisual (); + else + return NULL; +} + +//----------------------------------------------------------------------------- +unsigned int CDrawContext::getDepth () +{ + if (pFrame) + return pFrame->getDepth (); + else + return NULL; +} + +//----------------------------------------------------------------------------- +#elif BEOS +//----------------------------------------------------------------------------- +void CDrawContext::lineFromTo (CPoint& cstart, CPoint& cend) +{ + BPoint start (cstart.h, cstart.v); + BPoint end (cend.h, cend.v); + if (start.x == end.x) + { + if (start.y < end.y) + end.y--; + else if (end.y < start.y) + start.y--; + } + else if (start.y == end.y) + { + if (start.x < end.x) + end.x--; + else if (end.x < start.x) + start.x--; + } + else + { + if (start.x > end.x) + { + BPoint t = end; + end = start; + start = t; + } + end.x--; + if (end.y > start.y) + end.y--; + else + end.y++; + } + + pView->MovePenTo (start); + if (lineStyle == kLineSolid) + pView->StrokeLine (end); + else + { + pattern stripes = { {0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3} }; + pView->StrokeLine (end, stripes); + } +} + +//----------------------------------------------------------------------------- +#elif MAC +#if QUARTZ +//----------------------------------------------------------------------------- +CGContextRef CDrawContext::beginCGContext (bool swapYAxis) +{ + if (gCGContext) + { + CGContextSaveGState (gCGContext); + CGContextScaleCTM (gCGContext, 1, -1); + QuartzSetupClip (gCGContext, clipRect); + if (!swapYAxis) + CGContextScaleCTM (gCGContext, 1, -1); + return gCGContext; + } + return 0; +} + +//----------------------------------------------------------------------------- +void CDrawContext::releaseCGContext (CGContextRef context) +{ + if (context) + { + CGContextRestoreGState (context); + needToSynchronizeCGContext = true; + } +} + +//----------------------------------------------------------------------------- +void CDrawContext::synchronizeCGContext () +{ + if (needToSynchronizeCGContext && gCGContext) + { + CGContextSynchronize (gCGContext); + needToSynchronizeCGContext = false; + } +} + +//----------------------------------------------------------------------------- +CGImageRef CDrawContext::getCGImage () const +{ + return 0; +} + +//----------------------------------------------------------------------------- +void QuartzSetupClip (CGContextRef context, const CRect clipRect) +{ + CGRect cgClipRect = CGRectMake (clipRect.left, clipRect.top, clipRect.width (), clipRect.height ()); + CGContextClipToRect (context, cgClipRect); +} + +//----------------------------------------------------------------------------- +void QuartzSetLineDash (CGContextRef context, CLineStyle style, CCoord lineWidth) +{ + if (style == kLineOnOffDash) + { + float offset = 0; + float dotf[2] = { lineWidth, lineWidth }; + CGContextSetLineDash (context, offset, dotf, 2); + } +} +#endif + +//----------------------------------------------------------------------------- +BitMapPtr CDrawContext::getBitmap () +{ + #if QUARTZ + return (BitMapPtr)GetPortBitMapForCopyBits (GetWindowPort ((WindowRef)pWindow)); + #else + PixMapHandle pixMap = GetPortPixMap (GetWindowPort ((WindowRef)pWindow)); + if (pixMap) + { + LockPixels (pixMap); + return (BitMapPtr)*pixMap; + } + #endif + return 0; +} + +//----------------------------------------------------------------------------- +void CDrawContext::releaseBitmap () +{ + #if !QUARTZ + PixMapHandle pixMap = GetPortPixMap (GetWindowPort ((WindowRef)pWindow)); + UnlockPixels (pixMap); + #endif +} + +//----------------------------------------------------------------------------- +CGrafPtr CDrawContext::getPort () +{ + #if QUARTZ + if (pWindow) + return (CGrafPtr)GetWindowPort ((WindowRef)pWindow); + return 0; + #else + if (!bInitialized) + { + CGrafPtr OrigPort; + GDHandle OrigDevice; + GetGWorld (&OrigPort, &OrigDevice); + SetGWorld ((CGrafPtr)GetWindowPort ((WindowRef)pWindow), NULL); + + TextMode (srcOr); + PenMode (patCopy); + StuffHex (&fillPattern, "\pFFFFFFFFFFFFFFFF"); + + SetGWorld (OrigPort, OrigDevice); + + bInitialized = true; + } + return (CGrafPtr)GetWindowPort ((WindowRef)pWindow); + #endif +} + +#endif + + +//----------------------------------------------------------------------------- +// COffscreenContext Implementation +//----------------------------------------------------------------------------- +COffscreenContext::COffscreenContext (CDrawContext *pContext, CBitmap *pBitmapBg, bool drawInBitmap) +: CDrawContext (pContext->pFrame, NULL, NULL) +, pBitmap (0) +, pBitmapBg (pBitmapBg) +, height (20) +, width (20) +{ + if (pBitmapBg) + { + height = pBitmapBg->getHeight (); + width = pBitmapBg->getWidth (); + + clipRect (0, 0, width, height); + } + + #if DEBUG + gNbCOffscreenContext++; + gBitmapAllocation += (long)height * (long)width; + #endif + + bDestroyPixmap = false; + +#if WINDOWS + if (pOldBrush) + SelectObject ((HDC)getSystemContext (), pOldBrush); + if (pOldPen) + SelectObject ((HDC)getSystemContext (), pOldPen); + if (pOldFont) + SelectObject ((HDC)getSystemContext (), pOldFont); + pOldBrush = pOldPen = pOldFont = 0; + + pSystemContext = CreateCompatibleDC ((HDC)pContext->getSystemContext ()); + + if (drawInBitmap) + pWindow = pBitmapBg->getHandle (); + else // create bitmap if no bitmap handle exists + { + bDestroyPixmap = true; + pWindow = CreateCompatibleBitmap ((HDC)pContext->getSystemContext (), width, height); + } + oldBitmap = SelectObject ((HDC)pSystemContext, pWindow); + +#elif MAC + #if QUARTZ + offscreenBitmap = 0; + if (drawInBitmap) + { + if (pBitmapBg->getHandle ()) + { + PixMapHandle pixMap = GetGWorldPixMap ((GWorldPtr)pBitmapBg->getHandle ()); + LockPixels (pixMap); + size_t pixDepth = GetPixDepth (pixMap) / 4; + size_t rowBytes = GetPixRowBytes (pixMap); + gCGContext = CGBitmapContextCreate (GetPixBaseAddr (pixMap), (size_t)width, (size_t)height, pixDepth, rowBytes, GetGenericRGBColorSpace (), kCGImageAlphaPremultipliedFirst); + if (gCGContext) + { + CGContextTranslateCTM (gCGContext, 0, (float)height); + CGContextSetFillColorSpace (gCGContext, GetGenericRGBColorSpace ()); + CGContextSetStrokeColorSpace (gCGContext, GetGenericRGBColorSpace ()); + CGAffineTransform cgCTM = CGAffineTransformMake (1.0, 0.0, 0.0, -1.0, 0.0, 0.0); + CGContextSetTextMatrix (gCGContext, cgCTM); + CGContextSaveGState (gCGContext); + } + } + } + else + { // todo !!! + } + + #else + + if (drawInBitmap) + pWindow = pBitmapBg->getHandle (); + else + { + Rect GWRect; + GWRect.top = 0; + GWRect.left = 0; + GWRect.right = width; + GWRect.bottom = height; + NewGWorld ((GWorldPtr*)&pWindow, 0, &GWRect, NULL, NULL, 0); + bDestroyPixmap = true; + } + + StuffHex (&fillPattern, "\pFFFFFFFFFFFFFFFF"); + #endif + +#elif MOTIF + // if no bitmap handle => create one + if (!pWindow) + { + Drawable dWindow = pContext->pFrame->getWindow (); + pWindow = (void*)XCreatePixmap (pDisplay, dWindow, width, height, pFrame->getDepth ()); + bDestroyPixmap = true; + } + + // set the current font + if (pSystemContext) + setFont (kNormalFont); + +#elif BEOS + bDestroyPixmap = true; + offscreenBitmap = new BBitmap (BRect (0, 0, width - 1, height - 1), B_RGB16, true, false); + pView = new BView (BRect (0, 0, width - 1, height - 1), NULL, 0, 0); + offscreenBitmap->Lock (); + offscreenBitmap->AddChild (pView); + +#endif + + if (!drawInBitmap) + { + // draw bitmap to Offscreen + CRect r (0, 0, width, height); + if (pBitmapBg) + pBitmapBg->draw (this, r); + else + { + setFillColor (kBlackCColor); + fillRect (r); + } + } +} + +//----------------------------------------------------------------------------- +COffscreenContext::COffscreenContext (CFrame *pFrame, long width, long height, const CColor backgroundColor) +: CDrawContext (pFrame, NULL, NULL) +, pBitmap (0) +, pBitmapBg (0) +, height (height) +, width (width) +, backgroundColor (backgroundColor) +{ + clipRect (0, 0, width, height); + + #if DEBUG + gNbCOffscreenContext++; + gBitmapAllocation += height * width; + #endif + + bDestroyPixmap = true; + +#if WINDOWS + void *SystemWindow = pFrame->getSystemWindow (); + void *SystemContext = GetDC ((HWND)SystemWindow); + + pSystemContext = CreateCompatibleDC ((HDC)SystemContext); + #if DEBUG + gNbDC++; + #endif + pWindow = CreateCompatibleBitmap ((HDC)SystemContext, width, height); + + oldBitmap = SelectObject ((HDC)pSystemContext, pWindow); + ReleaseDC ((HWND)SystemWindow, (HDC)SystemContext); + + CRect r (0, 0, width, height); + setFillColor (backgroundColor); + setFrameColor (backgroundColor); + fillRect (r); + drawRect (r); + +#elif MAC + #if QUARTZ + CGContextRef context = NULL; + int bitmapByteCount; + int bitmapBytesPerRow; + + // each pixel is represented by four bytes + // (8 bits each of alpha, R, G, B) + bitmapBytesPerRow = width * 4; + bitmapByteCount = bitmapBytesPerRow * height; + + // create the bitmap + offscreenBitmap = malloc (bitmapByteCount); + if (offscreenBitmap != NULL) + { + memset (offscreenBitmap, 0, bitmapByteCount); + // create the context + context = CGBitmapContextCreate (offscreenBitmap, + width, + height, + 8, // bits per component + bitmapBytesPerRow, + GetGenericRGBColorSpace (), + kCGImageAlphaPremultipliedFirst); + + if (context == NULL) + { + // the context couldn't be created for some reason, + // and we have no use for the bitmap without the context + free (offscreenBitmap); + offscreenBitmap = 0; + } + else + { + CGContextTranslateCTM (context, 0, (float)height); + CGContextSetFillColorSpace (context, GetGenericRGBColorSpace ()); + CGContextSetStrokeColorSpace (context, GetGenericRGBColorSpace ()); + CGAffineTransform cgCTM = CGAffineTransformMake (1.0, 0.0, 0.0, -1.0, 0.0, 0.0); + CGContextSetTextMatrix (context, cgCTM); + CGContextSaveGState (context); + CGRect r = CGRectMake (0, 0, width, height); + CGContextClearRect (context, r); + } + } + gCGContext = context; + + CRect r (0, 0, width, height); + setFillColor (backgroundColor); + setFrameColor (backgroundColor); + fillRect (r); + drawRect (r); + + + #else + QDErr err; + Rect GWRect; + + GWRect.top = GWRect.left = 0; + GWRect.right = width; + GWRect.bottom = height; + err = NewGWorld ((GWorldPtr*) &pWindow, 0, &GWRect, NULL, NULL, 0); + if (err) + pWindow = NULL; + + StuffHex (&fillPattern, "\pFFFFFFFFFFFFFFFF"); + + CRect r (0, 0, width, height); + setFillColor (backgroundColor); + setFrameColor (backgroundColor); + fillRect (r); + drawRect (r); + #endif + +#elif MOTIF + Drawable dWindow = pFrame->getWindow (); + + pWindow = (void*)XCreatePixmap (pDisplay, dWindow, width, height, pFrame->getDepth ()); + + // clear the pixmap + XGCValues values; + values.foreground = getIndexColor (backgroundColor); + GC gc = XCreateGC (pDisplay, (Drawable)pWindow, GCForeground, &values); + XFillRectangle (pDisplay, (Drawable)pWindow, gc, 0, 0, width, height); + XFreeGC (pDisplay, gc); + + // set the current font + if (pSystemContext) + setFont (kNormalFont); + +#elif BEOS + BRect frame (0, 0, width - 1, height - 1); + offscreenBitmap = new BBitmap (frame, B_RGB16, true, false); + pView = new BView (BRect (0, 0, width - 1, height - 1), NULL, 0, 0); + offscreenBitmap->Lock (); + offscreenBitmap->AddChild (pView); + if (backgroundColor.red != 255 || backgroundColor.green != 255 || backgroundColor.blue != 255) + { + rgb_color c = { backgroundColor.red, backgroundColor.green, backgroundColor.blue, 255 }; + pView->SetHighColor (c); + pView->FillRect (frame); + } +#endif +} + +//----------------------------------------------------------------------------- +COffscreenContext::~COffscreenContext () +{ + #if DEBUG + gNbCOffscreenContext--; + gBitmapAllocation -= (long)height * (long)width; + #endif + + if (pBitmap) + pBitmap->forget (); + +#if WINDOWS + if (pSystemContext) + { + DeleteDC ((HDC)pSystemContext); + pSystemContext = 0; + #if DEBUG + gNbDC--; + #endif + } + if (bDestroyPixmap && pWindow) + DeleteObject (pWindow); + +#elif MAC + #if QUARTZ + if (gCGContext) + { + CGContextRestoreGState (gCGContext); + CGContextRelease (gCGContext); + } + gCGContext = 0; + if (offscreenBitmap) + free (offscreenBitmap); + else if (pBitmapBg && pBitmapBg->getHandle ()) + { + PixMapHandle pixMap = GetGWorldPixMap ((GWorldPtr)pBitmapBg->getHandle ()); + UnlockPixels (pixMap); + } + #else + if (bDestroyPixmap && pWindow) + DisposeGWorld ((GWorldPtr)pWindow); + #endif + +#elif MOTIF + if (bDestroyPixmap && pWindow) + XFreePixmap (pDisplay, (Pixmap)pWindow); + +#elif BEOS + delete offscreenBitmap; + pView = 0; // deleted because attached to the offscreen +#endif +} + +//----------------------------------------------------------------------------- +void COffscreenContext::copyTo (CDrawContext* pContext, CRect& srcRect, CPoint destOffset) +{ +#if WINDOWS + BitBlt ((HDC)pSystemContext, + destOffset.h, + destOffset.v, + srcRect.width (), + srcRect.height (), + (HDC)pContext->getSystemContext (), + srcRect.left + pContext->offset.h, + srcRect.top + pContext->offset.v, + SRCCOPY); + +#elif MAC + #if QUARTZ + if (!pBitmapBg) + return; + #else + if (!pWindow) + return; + #endif + + Rect source, dest; + RGBColor savedForeColor, savedBackColor; + + source.left = (short)(srcRect.left + pContext->offset.h + pContext->offsetScreen.h); + source.top = (short)(srcRect.top + pContext->offset.v + pContext->offsetScreen.v); + source.right = (short)(source.left + srcRect.right - srcRect.left); + source.bottom = (short)(source.top + srcRect.bottom - srcRect.top); + + dest.left = (short)destOffset.h; + dest.top = (short)destOffset.v; + dest.right = (short)(dest.left + srcRect.right - srcRect.left); + dest.bottom = (short)(dest.top + srcRect.bottom - srcRect.top); + + GetForeColor (&savedForeColor); + GetBackColor (&savedBackColor); + ::BackColor (whiteColor); + ::ForeColor (blackColor); + + CopyBits (pContext->getBitmap (), getBitmap (), &source, &dest, srcCopy, 0L); + releaseBitmap (); + pContext->releaseBitmap (); + + RGBForeColor (&savedForeColor); + RGBBackColor (&savedBackColor); +#endif +} + +//----------------------------------------------------------------------------- +void COffscreenContext::copyFrom (CDrawContext *pContext, CRect destRect, CPoint srcOffset) +{ +#if WINDOWS + BitBlt ((HDC)pContext->getSystemContext (), // hdcDest + destRect.left + pContext->offset.h, // xDest + destRect.top + pContext->offset.v, // yDest + destRect.right - destRect.left, // xWidth, + destRect.bottom - destRect.top, // yHeight + + (HDC)pSystemContext, // hdcSrc + srcOffset.h, // xSrc + srcOffset.v, // ySrc + SRCCOPY); // dwROP + +#elif MAC + #if QUARTZ + if (!gCGContext) + return; + CGContextRef context = pContext->beginCGContext (); + if (context) + { + size_t pixRowBytes = CGBitmapContextGetBytesPerRow (gCGContext); + short pixDepth = CGBitmapContextGetBitsPerPixel (gCGContext); + size_t size = pixRowBytes * CGBitmapContextGetHeight (gCGContext); + + CGImageRef image = 0; + CGDataProviderRef provider = CGDataProviderCreateWithData (NULL, CGBitmapContextGetData (gCGContext), size, NULL); + CGImageAlphaInfo alphaInfo = CGBitmapContextGetAlphaInfo (gCGContext); + image = CGImageCreate (CGBitmapContextGetWidth (gCGContext), CGBitmapContextGetHeight (gCGContext), 8 , pixDepth, pixRowBytes, GetGenericRGBColorSpace (), alphaInfo, provider, NULL, 0, kCGRenderingIntentDefault); + if (image) + { + CGRect dest; + dest.origin.x = destRect.left - srcOffset.h + pContext->offset.h; + dest.origin.y = (destRect.top + pContext->offset.v) * -1 - (getHeight () - srcOffset.v); + dest.size.width = getWidth (); + dest.size.height = getHeight (); + + CGRect clipRect; + clipRect.origin.x = destRect.left + pContext->offset.h; + clipRect.origin.y = (destRect.top + pContext->offset.v) * -1 - destRect.height (); + clipRect.size.width = destRect.width (); + clipRect.size.height = destRect.height (); + + CGContextClipToRect (context, clipRect); + + CGContextDrawImage (context, dest, image); + + CGImageRelease (image); + } + CGDataProviderRelease (provider); + + pContext->releaseCGContext (context); + } + #else + if (!pWindow) + return; + + Rect source, dest; + RGBColor savedForeColor, savedBackColor; + + source.left = srcOffset.h; + source.top = srcOffset.v; + source.right = source.left + destRect.right - destRect.left; + source.bottom = source.top + destRect.bottom - destRect.top; + + dest.top = destRect.top + pContext->offset.v; + dest.left = destRect.left + pContext->offset.h; + dest.bottom = destRect.bottom + pContext->offset.v; + dest.right = destRect.right + pContext->offset.h; + + GetForeColor (&savedForeColor); + GetBackColor (&savedBackColor); + ::BackColor (whiteColor); + ::ForeColor (blackColor); + + CopyBits (getBitmap (), pContext->getBitmap (), &source, &dest, srcCopy, 0L); + #if MACX + QDAddRectToDirtyRegion (pContext->getPort (), &dest); + #endif + releaseBitmap (); + pContext->releaseBitmap (); + + RGBForeColor (&savedForeColor); + RGBBackColor (&savedBackColor); + #endif + +#elif MOTIF + XCopyArea (pDisplay, (Drawable)pWindow, (Drawable)pContext->getWindow (), + (GC)pSystemContext, srcOffset.h, srcOffset.v, + destRect.width (), destRect.height (), + destRect.left, destRect.top); + +#elif BEOS + pContext->pView->SetDrawingMode (B_OP_COPY); + BRect destination (destRect.left, destRect.top, destRect.right - 1, destRect.bottom - 1); + BRect source = destination; + source.OffsetTo (srcOffset.h, srcOffset.v); + pView->Sync (); + pContext->pView->DrawBitmap (offscreenBitmap, source, destination); +#endif +} + +//----------------------------------------------------------------------------- +#if MAC +#if QUARTZ +//----------------------------------------------------------------------------- +CGImageRef COffscreenContext::getCGImage () const +{ + #ifdef MAC_OS_X_VERSION_10_4 + if (CGBitmapContextCreateImage && gCGContext) + { + return CGBitmapContextCreateImage (gCGContext); + } + #endif + return 0; +} + +#endif + +//----------------------------------------------------------------------------- +BitMapPtr COffscreenContext::getBitmap () +{ + #if QUARTZ + return pBitmapBg ? (BitMapPtr)GetPortBitMapForCopyBits ((GWorldPtr)pBitmapBg->getHandle ()) : 0; + #else + PixMapHandle pixMap = GetGWorldPixMap ((GWorldPtr)pWindow); + if (pixMap) + { + LockPixels (pixMap); + return (BitMapPtr)*pixMap; + } + return 0; + #endif +} + +//----------------------------------------------------------------------------- +void COffscreenContext::releaseBitmap () +{ + #if QUARTZ + #else + PixMapHandle pixMap = GetGWorldPixMap ((GWorldPtr)pWindow); + UnlockPixels (pixMap); + #endif +} + +#if !QUARTZ +//----------------------------------------------------------------------------- +CGrafPtr COffscreenContext::getPort () +{ + if (!bInitialized) + bInitialized = true; + + return (CGrafPtr)pWindow; +} +#endif // QUARTZ +#endif // MAC + +//----------------------------------------------------------------------------- +class CAttributeListEntry +{ +public: + CAttributeListEntry (long size, CViewAttributeID id) + : nextEntry (0) + , pointer (0) + , sizeOfPointer (size) + , id (id) + { + pointer = malloc (size); + } + + ~CAttributeListEntry () + { + if (pointer) + free (pointer); + } + + const CViewAttributeID getID () const { return id; } + const long getSize () const { return sizeOfPointer; } + void* getPointer () const { return pointer; } + CAttributeListEntry* getNext () const { return nextEntry; } + + void setNext (CAttributeListEntry* entry) { nextEntry = entry; } + +protected: + CAttributeListEntry () : nextEntry (0), pointer (0), sizeOfPointer (0), id (0) {} + + CAttributeListEntry* nextEntry; + void* pointer; + long sizeOfPointer; + CViewAttributeID id; +}; + +//----------------------------------------------------------------------------- +char* kMsgCheckIfViewContainer = "kMsgCheckIfViewContainer"; + +//----------------------------------------------------------------------------- +// CView +//----------------------------------------------------------------------------- +/*! @class CView +base class of all view objects +*/ +//----------------------------------------------------------------------------- +CView::CView (const CRect& size) +: size (size) +, mouseableArea (size) +, pParentFrame (0) +, pParentView (0) +, bDirty (false) +, bMouseEnabled (true) +, bTransparencyEnabled (false) +, bWantsFocus (false) +, pBackground (0) +, pAttributeList (0) +{ + #if DEBUG + gNbCView++; + #endif +} + +//----------------------------------------------------------------------------- +CView::~CView () +{ + if (pBackground) + pBackground->forget (); + + if (pAttributeList) + { + CAttributeListEntry* entry = pAttributeList; + while (entry) + { + CAttributeListEntry* nextEntry = entry->getNext (); + delete entry; + entry = nextEntry; + } + } + #if DEBUG + gNbCView--; + #endif +} + +//----------------------------------------------------------------------------- +void CView::getMouseLocation (CDrawContext* context, CPoint &point) +{ + if (context) + { + if (pParentView && pParentView->notify (this, kMsgCheckIfViewContainer) == kMessageNotified) + { + CCoord save[4]; + ((CViewContainer*)pParentView)->modifyDrawContext (save, context); + pParentView->getMouseLocation (context, point); + ((CViewContainer*)pParentView)->restoreDrawContext (context, save); + } + else + context->getMouseLocation (point); + } +} + +#if ENABLE_DEPRECATED_METHODS +//----------------------------------------------------------------------------- +void CView::getFrameTopLeftPos (CPoint& topLeft) const +{ + topLeft.h += size.left; + topLeft.v += size.top; + if (pParentView && pParentView->notify (0, kMsgCheckIfViewContainer) == kMessageNotified) + pParentView->getFrameTopLeftPos (topLeft); +} +#endif + +//----------------------------------------------------------------------------- +CPoint& CView::frameToLocal (CPoint& point) const +{ + if (pParentView && pParentView->isTypeOf ("CViewContainer")) + return pParentView->frameToLocal (point); + return point; +} + +//----------------------------------------------------------------------------- +CPoint& CView::localToFrame (CPoint& point) const +{ + if (pParentView && pParentView->isTypeOf ("CViewContainer")) + return pParentView->localToFrame (point); + return point; +} + +//----------------------------------------------------------------------------- +void CView::redraw () +{ + if (pParentFrame) + pParentFrame->draw (this); +} + +//----------------------------------------------------------------------------- +void CView::redrawRect (CDrawContext* context, const CRect& rect) +{ + // we always pass it on to the parent view as it knows what else must be drawn (needed for nested view containers) + if (pParentView) + pParentView->redrawRect (context, rect); + else if (pParentFrame) + pParentFrame->drawRect (context, rect); +} + +//----------------------------------------------------------------------------- +void CView::draw (CDrawContext *pContext) +{ + if (pBackground) + { + if (bTransparencyEnabled) + pBackground->drawTransparent (pContext, size); + else + pBackground->draw (pContext, size); + } + setDirty (false); +} + +//----------------------------------------------------------------------------- +void CView::mouse (CDrawContext *pContext, CPoint &where, long buttons) +{} + +//----------------------------------------------------------------------------- +bool CView::onWheel (CDrawContext *pContext, const CPoint &where, float distance) +{ + return false; +} + +//------------------------------------------------------------------------ +bool CView::onWheel (CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance) +{ + return onWheel (pContext, where, distance); +} + +//------------------------------------------------------------------------ +void CView::update (CDrawContext *pContext) +{ + if (isDirty ()) + { + #if NEW_UPDATE_MECHANISM + if (pContext) + redrawRect (pContext, size); + else + redraw (); + #else + #if USE_ALPHA_BLEND + if (pContext) + { + if (bTransparencyEnabled) + getFrame ()->drawRect (pContext, size); + else + draw (pContext); + } + #else + if (pContext) + draw (pContext); + #endif + else + redraw (); + #endif // !NEW_UPDATE_MECHANISM + setDirty (false); + } +} + +//------------------------------------------------------------------------------ +long CView::onKeyDown (VstKeyCode& keyCode) +{ + return -1; +} + +//------------------------------------------------------------------------------ +long CView::onKeyUp (VstKeyCode& keyCode) +{ + return -1; +} + +//------------------------------------------------------------------------------ +long CView::notify (CView* sender, const char* message) +{ + return kMessageUnknown; +} + +//------------------------------------------------------------------------------ +void CView::looseFocus (CDrawContext *pContext) +{} + +//------------------------------------------------------------------------------ +void CView::takeFocus (CDrawContext *pContext) +{} + +//------------------------------------------------------------------------------ +void CView::setViewSize (CRect &rect) +{ + size = rect; + setDirty (); +} + +//----------------------------------------------------------------------------- +void *CView::getEditor () const +{ + return pParentFrame ? pParentFrame->getEditor () : 0; +} + +//----------------------------------------------------------------------------- +void CView::setBackground (CBitmap *background) +{ + if (pBackground) + pBackground->forget (); + pBackground = background; + if (pBackground) + pBackground->remember (); + setDirty (true); +} + +//----------------------------------------------------------------------------- +const CViewAttributeID kCViewAttributeReferencePointer = 'cvrp'; + +//----------------------------------------------------------------------------- +/** + * @param id the ID of the Attribute + * @param outSize on return the size of the attribute + */ +bool CView::getAttributeSize (const CViewAttributeID id, long& outSize) const +{ + if (pAttributeList) + { + CAttributeListEntry* entry = pAttributeList; + while (entry) + { + if (entry->getID () == id) + break; + entry = entry->getNext (); + } + if (entry) + { + outSize = entry->getSize (); + return true; + } + } + return false; +} + +//----------------------------------------------------------------------------- +/** + * @param id the ID of the Attribute + * @param inSize the size of the outData pointer + * @param outData a pointer where to copy the attribute data + * @param outSize the size in bytes which was copied into outData + */ +bool CView::getAttribute (const CViewAttributeID id, const long inSize, void* outData, long& outSize) const +{ + if (pAttributeList) + { + CAttributeListEntry* entry = pAttributeList; + while (entry) + { + if (entry->getID () == id) + break; + entry = entry->getNext (); + } + if (entry && inSize >= entry->getSize ()) + { + outSize = entry->getSize (); + memcpy (outData, entry->getPointer (), outSize); + return true; + } + } + return false; +} + +//----------------------------------------------------------------------------- +/** + * copies data into the attribute. If it does not exist, creates a new attribute. + * @param id the ID of the Attribute + * @param inSize the size of the outData pointer + * @param inData a pointer to the data + */ +bool CView::setAttribute (const CViewAttributeID id, const long inSize, void* inData) +{ + CAttributeListEntry* lastEntry = 0; + if (pAttributeList) + { + CAttributeListEntry* entry = pAttributeList; + while (entry) + { + if (entry->getID () == id) + break; + if (entry->getNext () == 0) + lastEntry = entry; + entry = entry->getNext (); + } + if (entry) + { + if (entry->getSize () >= inSize) + { + memcpy (entry->getPointer (), inData, inSize); + return true; + } + else + return false; + } + } + + // create a new attribute + CAttributeListEntry* newEntry = new CAttributeListEntry (inSize, id); + memcpy (newEntry->getPointer (), inData, inSize); + if (lastEntry) + lastEntry->setNext (newEntry); + else if (!pAttributeList) + pAttributeList = newEntry; + else + { + delete newEntry; + return false; + } + return true; +} + +#if DEBUG +//----------------------------------------------------------------------------- +void CView::dumpInfo () +{ + CRect viewRect = getViewSize (viewRect); + DebugPrint ("left:%4d, top:%4d, width:%4d, height:%4d ", viewRect.left, viewRect.top, viewRect.getWidth (), viewRect.getHeight ()); + if (getMouseEnabled ()) + DebugPrint ("(Mouse Enabled) "); + if (getTransparency ()) + DebugPrint ("(Transparent) "); + CRect mouseRect = getMouseableArea (mouseRect); + if (mouseRect != viewRect) + DebugPrint (" (Mouseable Area: left:%4d, top:%4d, width:%4d, height:%4d ", mouseRect.left, mouseRect.top, mouseRect.getWidth (), mouseRect.getHeight ()); +} +#endif + +#define FOREACHSUBVIEW for (CCView *pSv = pFirstView; pSv; pSv = pSv->pNext) {CView *pV = pSv->pView; +#define FOREACHSUBVIEW_REVERSE(reverse) for (CCView *pSv = reverse ? pLastView : pFirstView; pSv; pSv = reverse ? pSv->pPrevious : pSv->pNext) {CView *pV = pSv->pView; +#define ENDFOR } + +//----------------------------------------------------------------------------- +// CFrame Implementation +//----------------------------------------------------------------------------- +/*! @class CFrame +It creates a platform dependend view object. +On classic Mac OS it just draws into the provided window. +On Mac OS X it is a ControlRef. +On Windows it's a WS_CHILD Window. +*/ +CFrame::CFrame (const CRect &inSize, void *inSystemWindow, void *inEditor) +: CViewContainer (inSize, 0, 0) +, pEditor (inEditor) +, pSystemWindow (inSystemWindow) +, pModalView (0) +, pFocusView (0) +, bFirstDraw (true) +, bDropActive (false) +, bUpdatesDisabled (false) +, pFrameContext (0) +, bAddedWindow (false) +, pVstWindow (0) +, defaultCursor (0) +{ + setOpenFlag (true); + + pParentFrame = this; + +#if WINDOWS + pHwnd = 0; + dropTarget = 0; + backBuffer = 0; + OleInitialize (0); + + #if DYNAMICALPHABLEND + pfnAlphaBlend = 0; + pfnTransparentBlt = 0; + + hInstMsimg32dll = LoadLibrary ("msimg32.dll"); + if (hInstMsimg32dll) + { + pfnAlphaBlend = (PFNALPHABLEND)GetProcAddress (hInstMsimg32dll, "AlphaBlend"); + + // get OS version + memset (&gSystemVersion, 0, sizeof (gSystemVersion)); + gSystemVersion.dwOSVersionInfoSize = sizeof (gSystemVersion); + + if (GetVersionEx ((OSVERSIONINFO *)&gSystemVersion)) + { + // Is this win NT or better? + if (gSystemVersion.dwPlatformId >= VER_PLATFORM_WIN32_NT) + { + // Yes, then TransparentBlt doesn't have the memory-leak and can be safely used + pfnTransparentBlt = (PFNTRANSPARENTBLT)GetProcAddress (hInstMsimg32dll, "TransparentBlt"); + } + } + } + #endif // DYNAMICALPHABLEND + +#elif MOTIF + gc = 0; + depth = 0; + pDisplay = 0; + pVisual = 0; + window = 0; + +#elif BEOS + pPlugView = NULL; +#endif + + initFrame (pSystemWindow); + +#if WINDOWS + #if USE_GLOBAL_CONTEXT + pFrameContext = new CDrawContext (this, 0, getSystemWindow ()); + #endif + +#elif MAC + Gestalt (gestaltSystemVersion, &pSystemVersion); + #if QUARTZ + pFrameContext = 0; + #else + pFrameContext = new CDrawContext (this, getSystemWindow (), getSystemWindow ()); + pFrameContext->offset.h = size.left; + pFrameContext->offset.v = size.top; + #endif + +#elif MOTIF + pFrameContext = new CDrawContext (this, gc, (void*)window); +#endif +} + +//----------------------------------------------------------------------------- +CFrame::CFrame (const CRect& inSize, const char* inTitle, void* inEditor, const long inStyle) +: CViewContainer (inSize, 0, 0) +, pEditor (inEditor) +, pSystemWindow (0) +, pModalView (0) +, pFocusView (0) +, bFirstDraw (true) +, bDropActive (false) +, bUpdatesDisabled (false) +, pFrameContext (0) +, pVstWindow (0) +, defaultCursor (0) +{ + bAddedWindow = true; + setOpenFlag (false); + pParentFrame = this; + +#if WINDOWS + pHwnd = 0; + dropTarget = 0; + backBuffer = 0; + OleInitialize (0); + + #if DYNAMICALPHABLEND + pfnAlphaBlend = 0; + pfnTransparentBlt = 0; + + hInstMsimg32dll = LoadLibrary ("msimg32.dll"); + if (hInstMsimg32dll) + { + pfnAlphaBlend = (PFNALPHABLEND)GetProcAddress (hInstMsimg32dll, "AlphaBlend"); + + // get OS version + OSVERSIONINFOEX osvi; + + memset (&osvi, 0, sizeof (osvi)); + osvi.dwOSVersionInfoSize = sizeof (osvi); + + if (GetVersionEx ((OSVERSIONINFO *)&osvi)) + { + // Is this win NT or better? + if (osvi.dwPlatformId >= VER_PLATFORM_WIN32_NT) + { + // Yes, then TransparentBlt doesn't have the memory-leak and can be safely used + pfnTransparentBlt = (PFNTRANSPARENTBLT)GetProcAddress (hInstMsimg32dll, "TransparentBlt"); + } + } + } + #endif + +#elif MOTIF + gc = 0; + depth = 0; + pDisplay = 0; + pVisual = 0; + window = 0; + +#elif BEOS + pPlugView = NULL; + +#endif + + #if USE_VST_WINDOW + pVstWindow = (VstWindow*)malloc (sizeof (VstWindow)); + strcpy (((VstWindow*)pVstWindow)->title, inTitle); + ((VstWindow*)pVstWindow)->xPos = (short)size.left; + ((VstWindow*)pVstWindow)->yPos = (short)size.top; + ((VstWindow*)pVstWindow)->width = (short)size.width (); + ((VstWindow*)pVstWindow)->height = (short)size.height (); + ((VstWindow*)pVstWindow)->style = inStyle; + ((VstWindow*)pVstWindow)->parent = 0; + ((VstWindow*)pVstWindow)->userHandle = 0; + ((VstWindow*)pVstWindow)->winHandle = 0; + #endif +} + +//----------------------------------------------------------------------------- +CFrame::~CFrame () +{ + if (pModalView) + removeView (pModalView, false); + + setCursor (kCursorDefault); + + setDropActive (false); + + if (pFrameContext) + pFrameContext->forget (); + +#if WINDOWS + OleUninitialize (); + + if (backBuffer) + backBuffer->forget (); + + #if DYNAMICALPHABLEND + if (hInstMsimg32dll) + FreeLibrary (hInstMsimg32dll); + #endif + + if (pHwnd) + { + SetWindowLongPtr ((HWND)pHwnd, GWLP_USERDATA, (long)NULL); + DestroyWindow ((HWND)pHwnd); + + ExitWindowClass (); + } + +#elif MOTIF + #if TEST_REGION + XDestroyRegion (region); + #endif + + // remove callbacks to avoid undesirable update + if (pSystemWindow) + { + XtRemoveCallback ((Widget)pSystemWindow, XmNexposeCallback, _drawingAreaCallback, this); + XtRemoveCallback ((Widget)pSystemWindow, XmNinputCallback, _drawingAreaCallback, this); + XtRemoveCallback ((Widget)pSystemWindow, XmNdestroyCallback, _destroyCallback, this); + + freeGc (); + } +#endif + + if (bAddedWindow) + close (); + if (pVstWindow) + free (pVstWindow); + +#if BEOS + CBitmap::closeResource (); // must be done only once at the end of the story. +#endif + +#if MAC && QUARTZ + if (controlRef) + DisposeControl (controlRef); + if (controlSpec.u.classRef) + { + OSStatus status = UnregisterToolboxObjectClass ((ToolboxObjectClassRef)controlSpec.u.classRef); + if (status != noErr) + fprintf (stderr, "UnregisterToolboxObjectClass failed : %d\n", (int)status); + } +#endif +} + +//----------------------------------------------------------------------------- +bool CFrame::open (CPoint *point) +{ +#if PLUGGUI + return false; +#else + if (!bAddedWindow) + return false; + if (getOpenFlag ()) + { +#if WINDOWS + BringWindowToTop (GetParent (GetParent ((HWND)getSystemWindow ()))); + +#elif MOTIF + Widget widget = (Widget)getSystemWindow (); + while (widget && !XtIsTopLevelShell (widget)) + widget = XtParent (widget); + if (widget) + XRaiseWindow (getDisplay (), XtWindow (widget)); + +#elif BEOS + pPlugView->Window ()->Activate (true); +#endif + return false; + } + +#if USE_VST_WINDOW + if (pVstWindow) + { + if (point) + { + ((VstWindow*)pVstWindow)->xPos = (short)point->h; + ((VstWindow*)pVstWindow)->yPos = (short)point->v; + } + AudioEffectX *pAudioEffectX = (AudioEffectX*)(((AEffGUIEditor*)pEditor)->getEffect ()); + pSystemWindow = pAudioEffectX->openWindow ((VstWindow*)pVstWindow); + } +#endif + + if (pSystemWindow) + { + if (initFrame (pSystemWindow)) + setOpenFlag (true); + } + + return getOpenFlag (); +#endif +} + +//----------------------------------------------------------------------------- +bool CFrame::close () +{ +#if PLUGGUI + return false; +#else + if (!bAddedWindow || !getOpenFlag () || !pSystemWindow) + return false; + +#if USE_VST_WINDOW + AudioEffectX *pAudioEffectX = (AudioEffectX*)(((AEffGUIEditor*)pEditor)->getEffect ()); + pAudioEffectX->closeWindow ((VstWindow*)pVstWindow); +#endif + + pSystemWindow = 0; + + return true; +#endif +} + +//----------------------------------------------------------------------------- +bool CFrame::initFrame (void *systemWin) +{ + if (!systemWin) + return false; + +#if WINDOWS + + InitWindowClass (); + pHwnd = CreateWindowEx (0, gClassName, "Window", + WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, + 0, 0, size.width (), size.height (), + (HWND)pSystemWindow, NULL, GetInstance (), NULL); + + SetWindowLongPtr ((HWND)pHwnd, GWLP_USERDATA, (LONG_PTR)this); + +#elif MAC + + #if QUARTZ + dragEventHandler = 0; + if (!registerWithToolbox ()) + return false; + + hasFocus = false; + Rect r = {(short)size.top, (short)size.left, (short)size.bottom, (short)size.right}; + OSStatus status = CreateCustomControl (NULL, &r, &controlSpec, NULL, &controlRef); + if (status != noErr) + { + fprintf (stderr, "Could not create Control : %d\n", (int)status); + return false; + } + EventTypeSpec keyWorkaroundEvents[] = { + { kEventClassTextInput, kEventTextInputUnicodeForKeyEvent } + }; + InstallWindowEventHandler ((WindowRef)systemWin, carbonEventHandler, GetEventTypeCount (keyWorkaroundEvents), keyWorkaroundEvents, this, NULL); + + SetControlDragTrackingEnabled (controlRef, true); + SetAutomaticControlDragTrackingEnabledForWindow ((WindowRef)systemWin, true); + #if !AU // for AudioUnits define AU and embed the controlRef at your AUCarbonViewBase + WindowAttributes attributes; + GetWindowAttributes ((WindowRef)systemWin, &attributes); + if (attributes & kWindowCompositingAttribute) + { + HIViewRef contentView; + HIViewRef rootView = HIViewGetRoot ((WindowRef)systemWin); + if (HIViewFindByID (rootView, kHIViewWindowContentID, &contentView) != noErr) + contentView = rootView; + HIViewAddSubview (contentView, controlRef); + } + else + { + ControlRef rootControl; + GetRootControl ((WindowRef)systemWin, &rootControl); + if (rootControl == NULL) + CreateRootControl ((WindowRef)systemWin, &rootControl); + EmbedControl(controlRef, rootControl); + } + #endif + size.offset (-size.left, -size.top); + mouseableArea.offset (-size.left, -size.top); + #endif + +#elif MOTIF + // attach the callbacks + XtAddCallback ((Widget)systemWin, XmNexposeCallback, _drawingAreaCallback, this); + XtAddCallback ((Widget)systemWin, XmNinputCallback, _drawingAreaCallback, this); + XtAddCallback ((Widget)systemWin, XmNdestroyCallback, _destroyCallback, this); + XtAddEventHandler ((Widget)systemWin, LeaveWindowMask, true, _eventHandler, this); + + // init a default gc + window = XtWindow ((Widget)systemWin); + pDisplay = XtDisplay ((Widget)systemWin); + XGCValues values; + values.foreground = 1; + gc = XCreateGC (pDisplay, (Drawable)window, GCForeground, &values); + +#if TEST_REGION + region = XCreateRegion (); +#endif + + // get the std colormap + XWindowAttributes attr; + XGetWindowAttributes (pDisplay, window, &attr); + colormap = attr.colormap; + pVisual = attr.visual; + depth = attr.depth; + + // init and load the fonts + if (!gFontInit) + { + for (long i = 0; i < kNumStandardFonts; i++) + { + gFontStructs[i] = XLoadQueryFont (pDisplay, gFontTable[i].string); + assert (gFontStructs[i] != 0); + } + gFontInit = true; + } + +#elif BEOS + BView* parentView = (BView*) pSystemWindow; + BRect frame = parentView->Frame (); + frame.OffsetTo (B_ORIGIN); + pPlugView = new PlugView (frame, this); + parentView->AddChild (pPlugView); +#endif + + setDropActive (true); + + return true; +} + +//----------------------------------------------------------------------------- +bool CFrame::setDropActive (bool val) +{ + if (!bDropActive && !val) + return true; + +#if WINDOWS + if (!pHwnd) + return false; + if (dropTarget) + { + RevokeDragDrop ((HWND)pHwnd); + dropTarget = 0; + } + if (val) + { + dropTarget = createDropTarget (this); + RegisterDragDrop ((HWND)pHwnd, (IDropTarget*)dropTarget); + } + +#elif MAC +#if MAC_OLD_DRAG + if (val) + install_drop (this); + else + remove_drop (this); +#endif +#endif + + bDropActive = val; + return true; +} + +#if MOTIF +//----------------------------------------------------------------------------- +void CFrame::freeGc () +{ + if (gc) + XFreeGC (pDisplay, gc); + gc = 0; +} +#endif + +//----------------------------------------------------------------------------- +CDrawContext* CFrame::createDrawContext () +{ + if (pFrameContext) + { + pFrameContext->remember (); + return pFrameContext; + } + + CDrawContext* pContext = 0; + #if WINDOWS || MAC + pContext = new CDrawContext (this, NULL, getSystemWindow ()); + + #elif MOTIF + pContext = new CDrawContext (this, gc, (void*)window); + + #elif BEOS + pContext = new CDrawContext (this, pPlugView, 0); + #endif + + return pContext; +} + +//----------------------------------------------------------------------------- +void CFrame::draw (CDrawContext *pContext) +{ + if (bFirstDraw) + bFirstDraw = false; + + if (!pContext) + pContext = pFrameContext; + + // draw the background and the children + CViewContainer::draw (pContext); +} + +//----------------------------------------------------------------------------- +void CFrame::drawRect (CDrawContext *pContext, const CRect& updateRect) +{ + if (bFirstDraw) + bFirstDraw = false; + + bool localContext = false; + if (!pContext) + { + localContext = true; + pContext = createDrawContext (); + } + + #if USE_CLIPPING_DRAWRECT + CRect oldClip; + pContext->getClipRect (oldClip); + CRect newClip (updateRect); + newClip.bound (oldClip); + pContext->setClipRect (newClip); + #endif + + // draw the background and the children + if (updateRect.getWidth () > 0 && updateRect.getHeight () > 0) + CViewContainer::drawRect (pContext, updateRect); + + #if USE_CLIPPING_DRAWRECT + pContext->setClipRect (oldClip); + #endif + + if (localContext) + pContext->forget (); +} + +//----------------------------------------------------------------------------- +void CFrame::draw (CView *pView) +{ + CView *pViewToDraw = 0; + + // Search it in the view list + if (pView && isChild(pView)) + pViewToDraw = pView; + + CDrawContext *pContext = createDrawContext (); + if (pContext) + { + if (pViewToDraw) + pViewToDraw->draw (pContext); + else + draw (pContext); + + pContext->forget (); + } +} + +//----------------------------------------------------------------------------- +void CFrame::mouse (CDrawContext *pContext, CPoint &where, long buttons) +{ + if (!pContext) + pContext = pFrameContext; + + if (pFocusView) + setFocusView (NULL); + + if (buttons == -1 && pContext) + buttons = pContext->getMouseButtons (); + + if (pModalView) + { + if (pModalView->hitTest (where, buttons)) + pModalView->mouse (pContext, where, buttons); + } + else + { + CViewContainer::mouse (pContext, where, buttons); + } +} + +//----------------------------------------------------------------------------- +long CFrame::onKeyDown (VstKeyCode& keyCode) +{ + long result = -1; + + if (pFocusView) + result = pFocusView->onKeyDown (keyCode); + + if (result == -1 && pModalView) + result = pModalView->onKeyDown (keyCode); + + if (result == -1 && keyCode.virt == VKEY_TAB) + result = advanceNextFocusView (pFocusView, (keyCode.modifier & MODIFIER_SHIFT) ? true : false) ? 1 : -1; + + return result; +} + +//----------------------------------------------------------------------------- +long CFrame::onKeyUp (VstKeyCode& keyCode) +{ + long result = -1; + + if (pFocusView) + result = pFocusView->onKeyUp (keyCode); + + if (result == -1 && pModalView) + result = pModalView->onKeyUp (keyCode); + + return result; +} + +//------------------------------------------------------------------------ +bool CFrame::onWheel (CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance) +{ + bool result = false; + + CView *view = pModalView ? pModalView : getViewAt (where); + if (view) + { + bool localContext = false; + if (!pContext) + { + localContext = true; + pContext = createDrawContext (); + } + + result = view->onWheel (pContext, where, axis, distance); + + if (localContext) + pContext->forget (); + + #if BEOS + pPlugView->UnlockLooper (); + #endif + } + return result; +} + +//----------------------------------------------------------------------------- +bool CFrame::onWheel (CDrawContext *pContext, const CPoint &where, float distance) +{ + return onWheel (pContext, where, kMouseWheelAxisY, distance); +} + +//----------------------------------------------------------------------------- +void CFrame::update (CDrawContext *pContext) +{ + if (!getOpenFlag () || updatesDisabled ()) + return; + + #if WINDOWS && USE_ALPHA_BLEND + CDrawContext* oldFrameContext = pFrameContext; + CDrawContext* dc = pFrameContext = getBackBuffer (); + #else + CDrawContext* dc = pContext; + #endif + + if (bDirty) + { + draw (dc); + setDirty (false); + } + else + { + #if USE_CLIPPING_DRAWRECT + CRect oldClipRect; + dc->getClipRect (oldClipRect); + #endif + #if NEW_UPDATE_MECHANISM + if (pModalView && pModalView->isDirty ()) + pModalView->update (dc); + #endif + FOREACHSUBVIEW + #if USE_CLIPPING_DRAWRECT + CRect viewSize (pV->size); + viewSize.bound (oldClipRect); + dc->setClipRect (viewSize); + #endif + pV->update (dc); + ENDFOR + #if USE_CLIPPING_DRAWRECT + dc->setClipRect (oldClipRect); + #endif + } + + #if MACX && !QUARTZ + if (QDIsPortBufferDirty (GetWindowPort ((WindowRef)pSystemWindow))) + { + QDFlushPortBuffer (GetWindowPort ((WindowRef)pSystemWindow), NULL); + } + #endif + #if WINDOWS && USE_ALPHA_BLEND + backBuffer->copyFrom (pContext, size); + pFrameContext = oldFrameContext; + #endif +} + +//----------------------------------------------------------------------------- +void CFrame::idle () +{ + if (!getOpenFlag ()) + return; + + #if MAC + // if the window is collapsed, we don't need to draw anything + if (pSystemWindow && IsWindowCollapsed ((WindowRef)pSystemWindow)) + return; + #endif + + // don't do an idle before a draw + if (bFirstDraw) + return; + + if (!isDirty ()) + return; + + #if BEOS + if (pPlugView->LockLooperWithTimeout (0) != B_OK) + return; + #endif + + CDrawContext *pContext = createDrawContext (); + + update (pContext); + + pContext->forget (); + + #if BEOS + pPlugView->UnlockLooper (); + #endif +} + +//----------------------------------------------------------------------------- +void CFrame::doIdleStuff () +{ +#if PLUGGUI + if (pEditor) + ((PluginGUIEditor*)pEditor)->doIdleStuff (); +#else + if (pEditor) + ((AEffGUIEditor*)pEditor)->doIdleStuff (); +#endif +#if (MAC && QUARTZ) + if (pFrameContext) + pFrameContext->synchronizeCGContext (); +#endif +} + +//----------------------------------------------------------------------------- +unsigned long CFrame::getTicks () const +{ +#if PLUGGUI + if (pEditor) + return ((PluginGUIEditor*)pEditor)->getTicks (); +#else + if (pEditor) + return ((AEffGUIEditor*)pEditor)->getTicks (); +#endif + return 0; +} + +//----------------------------------------------------------------------------- +long CFrame::getKnobMode () const +{ +#if PLUGGUI + return PluginGUIEditor::getKnobMode (); +#else + return AEffGUIEditor::getKnobMode (); +#endif +} + +//----------------------------------------------------------------------------- +#if WINDOWS +COffscreenContext* CFrame::getBackBuffer () +{ + #if WINDOWS && USE_ALPHA_BLEND + if (!backBuffer) + backBuffer = new COffscreenContext (this, size.width (), size.height ()); + #endif + + return backBuffer; +} + +HWND CFrame::getOuterWindow () const +{ + int diffWidth, diffHeight; + RECT rctTempWnd, rctPluginWnd; + HWND hTempWnd = (HWND)pHwnd; + GetWindowRect (hTempWnd, &rctPluginWnd); + + while (hTempWnd != NULL) + { + // Looking for caption bar + if (GetWindowLong (hTempWnd, GWL_STYLE) & WS_CAPTION) + return hTempWnd; + + // Looking for last parent + if (!GetParent (hTempWnd)) + return hTempWnd; + + // get difference between plugin-window and current parent + GetWindowRect (GetParent (hTempWnd), &rctTempWnd); + + diffWidth = (rctTempWnd.right - rctTempWnd.left) - (rctPluginWnd.right - rctPluginWnd.left); + diffHeight = (rctTempWnd.bottom - rctTempWnd.top) - (rctPluginWnd.bottom - rctPluginWnd.top); + + // Looking for size mismatch + if ((abs (diffWidth) > 60) || (abs (diffHeight) > 60)) // parent belongs to host + return (hTempWnd); + + if (diffWidth < 0) + diffWidth = 0; + if (diffHeight < 0) + diffHeight = 0; + + // get the next parent window + hTempWnd = GetParent (hTempWnd); + } + + return NULL; +} +#endif + +//----------------------------------------------------------------------------- +bool CFrame::setPosition (CCoord x, CCoord y) +{ + if (!getOpenFlag ()) + return false; +#if MAC + #if QUARTZ + if (controlRef) + { + HIRect r; + if (HIViewGetFrame (controlRef, &r) != noErr) + return false; + if (HIViewMoveBy (controlRef, x - r.origin.x, y - r.origin.y) != noErr) + return false; + return true; + } + #else + return false; + #endif +#elif WINDOWS + // not implemented yet + +#else + // not implemented yet + +#endif + return false; +} + +//----------------------------------------------------------------------------- +bool CFrame::getPosition (CCoord &x, CCoord &y) const +{ + if (!getOpenFlag ()) + return false; + + // get the position of the Window including this frame in the main pWindow +#if WINDOWS + HWND wnd = (HWND)getOuterWindow (); + HWND wndParent = GetParent (wnd); + + RECT rctTempWnd; + GetWindowRect (wnd, &rctTempWnd); + + POINT point; + point.x = rctTempWnd.left; + point.y = rctTempWnd.top; + + MapWindowPoints (HWND_DESKTOP, wndParent, &point, 1); + + x = point.x; + y = point.y; + +#elif MAC + Rect bounds; + GetWindowBounds ((WindowRef)pSystemWindow, kWindowContentRgn, &bounds); + + x = bounds.left; + y = bounds.top; + + #if QUARTZ + WindowAttributes attr; + GetWindowAttributes ((WindowRef)pSystemWindow, &attr); + if (attr & kWindowCompositingAttribute) + { +/* HIPoint hip = { 0.f, 0.f }; + HIViewRef contentView; + HIViewFindByID (HIViewGetRoot ((WindowRef)pSystemWindow), kHIViewWindowContentID, &contentView); + if (HIViewGetSuperview ((HIViewRef)controlRef) != contentView) + HIViewConvertPoint (&hip, controlRef, contentView); + x += hip.x; + y += hip.y;*/ + } + else + { + HIRect hirect; + HIViewGetFrame ((HIViewRef)controlRef, &hirect); + x += (CCoord)hirect.origin.x; + y += (CCoord)hirect.origin.y; + } + x -= hiScrollOffset.x; + y -= hiScrollOffset.y; + #endif + +#elif MOTIF + Position xWin, yWin; + + // get the topLevelShell of the pSystemWindow + Widget parent = (Widget)getSystemWindow (); + Widget parentOld = parent; + while (parent != 0 && !XtIsTopLevelShell (parent)) + { + parentOld = parent; + parent = XtParent (parent); + } + + if (parent == 0) + parent = parentOld; + + if (parent) + { + XtVaGetValues (parent, XtNx, &xWin, XtNy, &yWin, NULL); + x = xWin - 8; + y = yWin - 30; + } + +#elif BEOS + BRect frame = pPlugView->Window ()->Frame (); + x = (long) frame.left; + y = (long) frame.top; +#endif + return true; +} + +//----------------------------------------------------------------------------- +void CFrame::setViewSize (CRect& inRect) +{ + setSize (inRect.width (), inRect.height ()); +} + +//----------------------------------------------------------------------------- +bool CFrame::setSize (CCoord width, CCoord height) +{ + if (!getOpenFlag ()) + return false; + + if ((width == size.width ()) && (height == size.height ())) + return false; + +#if WINDOWS + if (backBuffer) + backBuffer->forget (); + backBuffer = 0; +#endif +#if !PLUGGUI + if (pEditor) + { + AudioEffectX* effect = (AudioEffectX*)((AEffGUIEditor*)pEditor)->getEffect (); + if (effect && effect->canHostDo ("sizeWindow")) + { + if (effect->sizeWindow ((long)width, (long)height)) + { + size.right = size.left + width; + size.bottom = size.top + height; + + #if WINDOWS + SetWindowPos ((HWND)pHwnd, HWND_TOP, 0, 0, width, height, SWP_NOMOVE); + + #elif (MAC && QUARTZ) + Rect bounds; + CRect2Rect (size, bounds); + SetControlBounds (controlRef, &bounds); + #endif + + return true; + } + } + } +#endif + + // keep old values + CCoord oldWidth = size.width (); + CCoord oldHeight = size.height (); + + // set the new size + size.right = size.left + width; + size.bottom = size.top + height; + +#if WINDOWS + RECT rctTempWnd, rctParentWnd; + HWND hTempWnd; + long iFrame = (2 * GetSystemMetrics (SM_CYFIXEDFRAME)); + + long diffWidth = 0; + long diffHeight = 0; + + hTempWnd = (HWND)pHwnd; + + while ((diffWidth != iFrame) && (hTempWnd != NULL)) // look for FrameWindow + { + HWND hTempParentWnd = GetParent (hTempWnd); + char buffer[1024]; + GetClassName (hTempParentWnd, buffer, 1024); + if (!hTempParentWnd || !strcmp (buffer, "MDIClient")) + break; + GetWindowRect (hTempWnd, &rctTempWnd); + GetWindowRect (hTempParentWnd, &rctParentWnd); + + SetWindowPos (hTempWnd, HWND_TOP, 0, 0, width + diffWidth, height + diffHeight, SWP_NOMOVE); + + diffWidth += (rctParentWnd.right - rctParentWnd.left) - (rctTempWnd.right - rctTempWnd.left); + diffHeight += (rctParentWnd.bottom - rctParentWnd.top) - (rctTempWnd.bottom - rctTempWnd.top); + + if ((diffWidth > 80) || (diffHeight > 80)) // parent belongs to host + return true; + + if (diffWidth < 0) + diffWidth = 0; + if (diffHeight < 0) + diffHeight = 0; + + hTempWnd = hTempParentWnd; + } + + if (hTempWnd) + SetWindowPos (hTempWnd, HWND_TOP, 0, 0, width + diffWidth, height + diffHeight, SWP_NOMOVE); + +#elif MAC + #if QUARTZ + if (getSystemWindow ()) + { + WindowAttributes windowAttributes; + GetWindowAttributes ((WindowRef)getSystemWindow (), &windowAttributes); + if (!(windowAttributes & kWindowCompositingAttribute)) + { + Rect bounds; + GetPortBounds (GetWindowPort ((WindowRef)getSystemWindow ()), &bounds); + SizeWindow ((WindowRef)getSystemWindow (), (short)((bounds.right - bounds.left) - oldWidth + width), + (short)((bounds.bottom - bounds.top) - oldHeight + height), true); + } + } + if (controlRef) + { + HIRect frameRect; + HIViewGetFrame (controlRef, &frameRect); + frameRect.size.width = width; + frameRect.size.height = height; + HIViewSetFrame (controlRef, &frameRect); + } + + #else + if (getSystemWindow ()) + { + Rect bounds; + GetPortBounds (GetWindowPort ((WindowRef)getSystemWindow ()), &bounds); + SizeWindow ((WindowRef)getSystemWindow (), (bounds.right - bounds.left) - oldWidth + width, + (bounds.bottom - bounds.top) - oldHeight + height, true); + #if MACX && !QUARTZ + SetPort (GetWindowPort ((WindowRef)getSystemWindow ())); + #endif + #if QUARTZ + CRect2Rect (size, bounds); + SetControlBounds (controlRef, &bounds); + #endif + } + #endif + +#elif MOTIF + Dimension heightWin, widthWin; + + // get the topLevelShell of the pSystemWindow + Widget parent = (Widget)getSystemWindow (); + Widget parentOld = parent; + while (parent != 0 && !XtIsTopLevelShell (parent)) + { + parentOld = parent; + parent = XtParent (parent); + } + + if (parent == 0) + parent = parentOld; + if (parent) + { + XtVaGetValues (parent, XtNwidth, &widthWin, XtNheight, &heightWin, NULL); + long diffWidth = widthWin - oldWidth; + long diffHeight = heightWin - oldHeight; + XtVaSetValues (parent, XmNwidth, width + diffWidth, + XmNheight, height + diffHeight, NULL); + } + +#elif BEOS + BView* parent = pPlugView->Parent (); + parent->SetResizingMode (B_FOLLOW_ALL_SIDES); + BRect frame = pPlugView->Frame (); + pPlugView->Window ()->ResizeBy (width - frame.Width () - 1, height - frame.Height () - 1); + parent->SetResizingMode (B_FOLLOW_NONE); +#endif + + CRect myViewSize (0, 0, size.width (), size.height ()); + CViewContainer::setViewSize (myViewSize); + + return true; +} + +//----------------------------------------------------------------------------- +bool CFrame::getSize (CRect *pRect) const +{ + if (!getOpenFlag ()) + return false; + +#if WINDOWS + // return the size relative to the client rect of this window + // get the main window + HWND wnd = GetParent ((HWND)getSystemWindow ()); + HWND wndParent = GetParent (wnd); + HWND wndParentParent = GetParent (wndParent); + + RECT rctTempWnd; + GetWindowRect (wnd, &rctTempWnd); + + POINT point; + point.x = rctTempWnd.left; + point.y = rctTempWnd.top; + + MapWindowPoints (HWND_DESKTOP, wndParentParent, &point, 1); + + pRect->left = point.x; + pRect->top = point.y; + pRect->right = pRect->left + rctTempWnd.right - rctTempWnd.left; + pRect->bottom = pRect->top + rctTempWnd.bottom - rctTempWnd.top; + +#elif MAC + #if QUARTZ + HIRect hiRect; + if (HIViewGetFrame (controlRef, &hiRect) == noErr) + { + pRect->left = (CCoord)hiRect.origin.x; + pRect->top = (CCoord)hiRect.origin.y; + pRect->setWidth ((CCoord)hiRect.size.width); + pRect->setHeight ((CCoord)hiRect.size.height); + return true; + } + #endif + + Rect bounds; + GetPortBounds (GetWindowPort ((WindowRef)getSystemWindow ()), &bounds); + + pRect->left = bounds.left; + pRect->top = bounds.top; + pRect->right = bounds.right; + pRect->bottom = bounds.bottom; + +#elif MOTIF + Dimension height, width; + XtVaGetValues ((Widget)getSystemWindow (), + XtNwidth, &width, XtNheight, &height, NULL); + + Position x, y; + Position xTotal = 0, yTotal = 0; + Widget parent = (Widget)getSystemWindow (); + while (parent != 0 && !XtIsTopLevelShell (parent) && !XmIsDialogShell (parent)) + { + XtVaGetValues (parent, XtNx, &x, XtNy, &y, NULL); + xTotal += x; + yTotal += y; + parent = XtParent (parent); + } + + pRect->left = xTotal; + pRect->top = yTotal; + pRect->right = width + pRect->left; + pRect->bottom = height + pRect->top; + +#elif BEOS + BRect v = pPlugView->Frame (); + (*pRect) (v.left, v.top, v.right + 1, v.bottom + 1); +#endif + return true; +} + +//----------------------------------------------------------------------------- +bool CFrame::getSize (CRect& outSize) const +{ + return getSize (&outSize); +} + +//----------------------------------------------------------------------------- +long CFrame::setModalView (CView *pView) +{ + // There's already a modal view so we get out + if (pView && pModalView) + return 0; + + if (pModalView) + removeView (pModalView, false); + + pModalView = pView; + if (pModalView) + addView (pModalView); + + return 1; +} + +//----------------------------------------------------------------------------- +void CFrame::beginEdit (long index) +{ +#if PLUGGUI + #if AU + if (pEditor) + ((PluginGUIEditor*)pEditor)->beginEdit (index); + #endif +#else + if (pEditor) + ((AEffGUIEditor*)pEditor)->beginEdit (index); +#endif +} + +//----------------------------------------------------------------------------- +void CFrame::endEdit (long index) +{ +#if PLUGGUI + #if AU + if (pEditor) + ((PluginGUIEditor*)pEditor)->endEdit (index); + #endif +#else + if (pEditor) + ((AEffGUIEditor*)pEditor)->endEdit (index); +#endif +} + +//----------------------------------------------------------------------------- +CView *CFrame::getCurrentView () const +{ + if (pModalView) + return pModalView; + + return CViewContainer::getCurrentView (); +} + +//----------------------------------------------------------------------------- +bool CFrame::getCurrentLocation (CPoint &where) +{ +#if WINDOWS + HWND hwnd = (HWND)this->getSystemWindow (); + POINT _where; + GetCursorPos (&_where); + where (_where.x, _where.y); + if (hwnd) + { + RECT rctTempWnd; + GetWindowRect (hwnd, &rctTempWnd); + where.offset (-rctTempWnd.left, -rctTempWnd.top); + } + return true; +#endif + + // create a local context + CDrawContext *pContext = createDrawContext (); + if (pContext) + { + // get the current position + pContext->getMouseLocation (where); + pContext->forget (); + } + return true; +} + +#if MACX +#define kThemeResizeUpDownCursor 21 +#define kThemeNotAllowedCursor 18 +#endif + +//----------------------------------------------------------------------------- +void CFrame::setCursor (CCursorType type) +{ + #if WINDOWS + if (!defaultCursor) + defaultCursor = GetCursor (); + switch (type) + { + case kCursorWait: + SetCursor (LoadCursor (0, IDC_WAIT)); + break; + case kCursorHSize: + SetCursor (LoadCursor (0, IDC_SIZEWE)); + break; + case kCursorVSize: + SetCursor (LoadCursor (0, IDC_SIZENS)); + break; + case kCursorNESWSize: + SetCursor (LoadCursor (0, IDC_SIZENESW)); + break; + case kCursorNWSESize: + SetCursor (LoadCursor (0, IDC_SIZENWSE)); + break; + case kCursorSizeAll: + SetCursor (LoadCursor (0, IDC_SIZEALL)); + break; + case kCursorNotAllowed: + SetCursor (LoadCursor (0, IDC_NO)); + break; + case kCursorHand: + SetCursor (LoadCursor (0, IDC_HAND)); + break; + default: + SetCursor ((HCURSOR)defaultCursor); + break; + } + #elif MAC + #if MACX + switch (type) + { + case kCursorWait: + SetThemeCursor (kThemeWatchCursor); + break; + case kCursorHSize: + SetThemeCursor (pSystemVersion < 0x1030 ? kThemeCrossCursor : kThemeResizeLeftRightCursor); + break; + case kCursorVSize: + SetThemeCursor (pSystemVersion < 0x1030 ? kThemeCrossCursor : kThemeResizeUpDownCursor); + break; + case kCursorNESWSize: + SetThemeCursor (kThemeCrossCursor); + break; + case kCursorNWSESize: + SetThemeCursor (kThemeCrossCursor); + break; + case kCursorSizeAll: + SetThemeCursor (kThemeCrossCursor); + break; + case kCursorCopy: + SetThemeCursor (kThemeCopyArrowCursor); + break; + case kCursorNotAllowed: + SetThemeCursor (pSystemVersion < 0x1020 ? kThemeArrowCursor : kThemeNotAllowedCursor); + break; + case kCursorHand: + SetThemeCursor (kThemeOpenHandCursor); + break; + default: + SetThemeCursor (kThemeArrowCursor); + break; + } + #else + //if (!defaultCursor) + // defaultCursor = GetCursor (0); + switch (type) + { + case kCursorWait: + SetCursor (*GetCursor (watchCursor)); + break; + case kCursorHSize: + SetCursor (*GetCursor (crossCursor)); + break; + case kCursorVSize: + SetCursor (*GetCursor (crossCursor)); + break; + case kCursorNESWSize: + SetCursor (*GetCursor (crossCursor)); + break; + case kCursorNWSESize: + SetCursor (*GetCursor (crossCursor)); + break; + case kCursorSizeAll: + SetCursor (*GetCursor (plusCursor)); + break; + default: + InitCursor (); + break; + } + #endif + #endif +} + +//----------------------------------------------------------------------------- +void CFrame::setFocusView (CView *pView) +{ + CView *pOldFocusView = pFocusView; + pFocusView = pView; + if (pFocusView && pFocusView->wantsFocus ()) + pFocusView->setDirty (); + + if (pOldFocusView) + { + pOldFocusView->looseFocus (); + if (pOldFocusView->wantsFocus ()) + pOldFocusView->setDirty (); + } +} + +//----------------------------------------------------------------------------- +bool CFrame::advanceNextFocusView (CView* oldFocus, bool reverse) +{ + if (pModalView) + return false; // currently not supported, but should be done sometime + if (oldFocus == 0) + { + if (pFocusView == 0) + return CViewContainer::advanceNextFocusView (0, reverse); + oldFocus = pFocusView; + } + if (isChild (oldFocus)) + { + if (CViewContainer::advanceNextFocusView (oldFocus, reverse)) + return true; + else + { + setFocusView (NULL); + return false; + } + } + CView* parentView = oldFocus->getParentView (); + if (parentView && parentView->isTypeOf ("CViewContainer")) + { + CView* tempOldFocus = oldFocus; + CViewContainer* vc = (CViewContainer*)parentView; + while (vc) + { + if (vc->advanceNextFocusView (tempOldFocus, reverse)) + return true; + else + { + tempOldFocus = vc; + if (vc->getParentView () && vc->getParentView ()->isTypeOf ("CViewContainer")) + vc = (CViewContainer*)vc->getParentView (); + else + vc = 0; + } + } + } + return CViewContainer::advanceNextFocusView (oldFocus, reverse); +} + +//----------------------------------------------------------------------------- +void CFrame::invalidate (const CRect &rect) +{ + CRect rectView; + FOREACHSUBVIEW + if (pV) + { + pV->getViewSize (rectView); + if (rect.rectOverlap (rectView)) + pV->setDirty (true); + } + ENDFOR +} + +#if DEBUG +//----------------------------------------------------------------------------- +void CFrame::dumpHierarchy () +{ + dumpInfo (); + DebugPrint ("\n"); + CViewContainer::dumpHierarchy (); +} +#endif + +//----------------------------------------------------------------------------- +// CCView Implementation +//----------------------------------------------------------------------------- +CCView::CCView (CView *pView) + : pView (pView), pNext (0), pPrevious (0) +{ + if (pView) + pView->remember (); +} + +//----------------------------------------------------------------------------- +CCView::~CCView () +{ + if (pView) + pView->forget (); +} + +//----------------------------------------------------------------------------- +// CViewContainer Implementation +//----------------------------------------------------------------------------- +/** + * CViewContainer constructor. + * @param rect the size of the container + * @param pParent the parent CFrame + * @param pBackground the background bitmap, can be NULL + */ +CViewContainer::CViewContainer (const CRect &rect, CFrame *pParent, CBitmap *pBackground) +: CView (rect), pFirstView (0), pLastView (0), + mode (kNormalUpdate), pOffscreenContext (0), bDrawInOffscreen (true), currentDragView (0) +{ + #if MACX || USE_ALPHA_BLEND + bDrawInOffscreen = false; + #endif + backgroundOffset (0, 0); + this->pParentFrame = pParent; + setBackground (pBackground); + backgroundColor = kBlackCColor; + #if NEW_UPDATE_MECHANISM + mode = kOnlyDirtyUpdate; + #endif +} + +//----------------------------------------------------------------------------- +CViewContainer::~CViewContainer () +{ + // remove all views + removeAll (true); + + #if !BEOS + if (pOffscreenContext) + pOffscreenContext->forget (); + pOffscreenContext = 0; + #endif +} + +//----------------------------------------------------------------------------- +/** + * @param rect the new size of the container + */ +void CViewContainer::setViewSize (CRect &rect) +{ + CView::setViewSize (rect); + + #if !BEOS + if (pOffscreenContext && bDrawInOffscreen) + { + pOffscreenContext->forget (); + pOffscreenContext = new COffscreenContext (pParentFrame, (long)size.width (), (long)size.height (), kBlackCColor); + } + #endif +} + +//----------------------------------------------------------------------------- +/** + * @param color the new background color of the container + */ +void CViewContainer::setBackgroundColor (CColor color) +{ + backgroundColor = color; + setDirty (true); +} + +//------------------------------------------------------------------------------ +long CViewContainer::notify (CView* sender, const char* message) +{ + if (message == kMsgCheckIfViewContainer) + return kMessageNotified; + return kMessageUnknown; +} + +//----------------------------------------------------------------------------- +/** + * @param pView the view object to add to this container + */ +void CViewContainer::addView (CView *pView) +{ + if (!pView) + return; + + CCView *pSv = new CCView (pView); + + pView->pParentFrame = pParentFrame; + pView->pParentView = this; + + CCView *pV = pFirstView; + if (!pV) + { + pLastView = pFirstView = pSv; + } + else + { + while (pV->pNext) + pV = pV->pNext; + pV->pNext = pSv; + pSv->pPrevious = pV; + pLastView = pSv; + } + pView->attached (this); + pView->setDirty (); +} + +//----------------------------------------------------------------------------- +/** + * @param pView the view object to add to this container + * @param mouseableArea the view area in where the view will get mouse events + * @param mouseEnabled bool to set if view will get mouse events + */ +void CViewContainer::addView (CView *pView, CRect &mouseableArea, bool mouseEnabled) +{ + if (!pView) + return; + + pView->setMouseEnabled (mouseEnabled); + pView->setMouseableArea (mouseableArea); + + addView (pView); +} + +//----------------------------------------------------------------------------- +/** + * @param withForget bool to indicate if the view's reference counter should be decreased after removed from the container + */ +void CViewContainer::removeAll (const bool &withForget) +{ + CCView *pV = pFirstView; + while (pV) + { + CCView *pNext = pV->pNext; + if (pV->pView) + { + pV->pView->removed (this); + if (withForget) + pV->pView->forget (); + } + + delete pV; + + pV = pNext; + } + pFirstView = 0; + pLastView = 0; +} + +//----------------------------------------------------------------------------- +/** + * @param pView the view which should be removed from the container + * @param withForget bool to indicate if the view's reference counter should be decreased after removed from the container + */ +void CViewContainer::removeView (CView *pView, const bool &withForget) +{ + if (pParentFrame && pParentFrame->getFocusView () == pView) + pParentFrame->setFocusView (0); + CCView *pV = pFirstView; + while (pV) + { + if (pView == pV->pView) + { + CCView *pNext = pV->pNext; + CCView *pPrevious = pV->pPrevious; + if (pV->pView) + { + pV->pView->removed (this); + if (withForget) + pV->pView->forget (); + } + delete pV; + if (pPrevious) + { + pPrevious->pNext = pNext; + if (pNext) + pNext->pPrevious = pPrevious; + else + pLastView = pPrevious; + } + else + { + pFirstView = pNext; + if (pNext) + pNext->pPrevious = 0; + else + pLastView = 0; + } + break; + } + else + pV = pV->pNext; + } +} + +//----------------------------------------------------------------------------- +/** + * @param pView the view which should be checked if it is a child of this container + */ +bool CViewContainer::isChild (CView *pView) const +{ + bool found = false; + + CCView *pV = pFirstView; + while (pV) + { + if (pView == pV->pView) + { + found = true; + break; + } + pV = pV->pNext; + } + return found; +} + +//----------------------------------------------------------------------------- +long CViewContainer::getNbViews () const +{ + long nb = 0; + CCView *pV = pFirstView; + while (pV) + { + pV = pV->pNext; + nb++; + } + return nb; +} + +//----------------------------------------------------------------------------- +/** + * @param index the index of the view to return + */ +CView *CViewContainer::getView (long index) const +{ + long nb = 0; + CCView *pV = pFirstView; + while (pV) + { + if (nb == index) + return pV->pView; + pV = pV->pNext; + nb++; + } + return 0; +} + +//----------------------------------------------------------------------------- +/** + * @param pContext the context which to use to draw this container and its subviews + */ +void CViewContainer::draw (CDrawContext *pContext) +{ + CDrawContext *pC; + CCoord save[4]; + + #if BEOS + // create offscreen + if (pBackground) + pC = new COffscreenContext (pContext, pBackground); + else + pC = new COffscreenContext (pParentFrame, size.width (), size.height (), backgroundColor); + + #else + if (!pOffscreenContext && bDrawInOffscreen) + pOffscreenContext = new COffscreenContext (pParentFrame, (long)size.width (), (long)size.height (), kBlackCColor); + #if USE_ALPHA_BLEND + if (pOffscreenContext && bTransparencyEnabled) + pOffscreenContext->copyTo (pContext, size); + #endif + + if (bDrawInOffscreen) + pC = pOffscreenContext; + else + { + pC = pContext; + modifyDrawContext (save, pContext); + } + + CRect r (0, 0, size.width (), size.height ()); + + #if USE_CLIPPING_DRAWRECT + CRect oldClip; + pContext->getClipRect (oldClip); + CRect oldClip2 (oldClip); + if (bDrawInOffscreen && getFrame () != this) + oldClip.offset (-oldClip.left, -oldClip.top); + + CRect newClip (r); + newClip.bound (oldClip); + pC->setClipRect (newClip); + #endif + + // draw the background + if (pBackground) + { + if (bTransparencyEnabled) + pBackground->drawTransparent (pC, r, backgroundOffset); + else + pBackground->draw (pC, r, backgroundOffset); + } + else if (!bTransparencyEnabled) + { + pC->setFillColor (backgroundColor); + pC->fillRect (r); + } + #endif + + // draw each view + FOREACHSUBVIEW + #if USE_CLIPPING_DRAWRECT + CRect vSize (pV->size); + vSize.bound (oldClip); + pC->setClipRect (vSize); + #endif + pV->draw (pC); + ENDFOR + + #if USE_CLIPPING_DRAWRECT + pC->setClipRect (oldClip2); + #endif + + // transfert offscreen + if (bDrawInOffscreen) + ((COffscreenContext*)pC)->copyFrom (pContext, size); + else + restoreDrawContext (pContext, save); + + #if BEOS + delete pC; + #endif + + setDirty (false); +} + +//----------------------------------------------------------------------------- +/** + * @param pContext the context which to use to draw the background + * @param _updateRect the area which to draw + */ +void CViewContainer::drawBackgroundRect (CDrawContext *pContext, CRect& _updateRect) +{ + if (pBackground) + { + CRect oldClip; + pContext->getClipRect (oldClip); + CRect newClip (_updateRect); + newClip.bound (oldClip); + pContext->setClipRect (newClip); + CRect tr (0, 0, pBackground->getWidth (), pBackground->getHeight ()); + if (bTransparencyEnabled) + pBackground->drawTransparent (pContext, tr, backgroundOffset); + else + pBackground->draw (pContext, tr, backgroundOffset); + pContext->setClipRect (oldClip); + } + else if (!bTransparencyEnabled) + { + pContext->setFillColor (backgroundColor); + pContext->fillRect (_updateRect); + } +} + +//----------------------------------------------------------------------------- +/** + * @param pContext the context which to use to draw + * @param _updateRect the area which to draw + */ +void CViewContainer::drawRect (CDrawContext *pContext, const CRect& _updateRect) +{ + CDrawContext *pC; + CCoord save[4]; + + #if BEOS + // create offscreen + if (pBackground) + pC = new COffscreenContext (pContext, pBackground); + else + pC = new COffscreenContext (pParentFrame, size.width (), size.height (), backgroundColor); + + #else + if (!pOffscreenContext && bDrawInOffscreen) + pOffscreenContext = new COffscreenContext (pParentFrame, (long)size.width (), (long)size.height (), kBlackCColor); + #if USE_ALPHA_BLEND + if (pOffscreenContext && bTransparencyEnabled) + pOffscreenContext->copyTo (pContext, size); + #endif + + if (bDrawInOffscreen) + pC = pOffscreenContext; + else + { + pC = pContext; + modifyDrawContext (save, pContext); + } + + CRect updateRect (_updateRect); + updateRect.bound (size); + + CRect clientRect (updateRect); + clientRect.offset (-size.left, -size.top); + + #if USE_CLIPPING_DRAWRECT + CRect oldClip; + pContext->getClipRect (oldClip); + CRect oldClip2 (oldClip); + if (bDrawInOffscreen && getFrame () != this) + oldClip.offset (-oldClip.left, -oldClip.top); + + CRect newClip (clientRect); + newClip.bound (oldClip); + pC->setClipRect (newClip); + #endif + + // draw the background + drawBackgroundRect (pC, clientRect); + #endif + + // draw each view + FOREACHSUBVIEW + if (pV->checkUpdate (clientRect)) + { + #if USE_CLIPPING_DRAWRECT + CRect viewSize (pV->size); + viewSize.bound (newClip); + if (viewSize.getWidth () == 0 || viewSize.getHeight () == 0) + continue; + pC->setClipRect (viewSize); + #endif + + bool wasDirty = pV->isDirty (); + pV->drawRect (pC, clientRect); + + #if DEBUG_FOCUS_DRAWING + if (getFrame ()->getFocusView() == pV && pV->wantsFocus ()) + { + pC->setDrawMode (kCopyMode); + pC->setFrameColor (kRedCColor); + pC->drawRect (pV->size); + } + #endif + if (wasDirty && pV->size != viewSize && !isTypeOf ("CScrollContainer")) + { + pV->setDirty (true); + } + } + ENDFOR + + #if USE_CLIPPING_DRAWRECT + pC->setClipRect (oldClip2); + #endif + + // transfer offscreen + if (bDrawInOffscreen) + ((COffscreenContext*)pC)->copyFrom (pContext, updateRect, CPoint (clientRect.left, clientRect.top)); + else + restoreDrawContext (pContext, save); + + #if BEOS + delete pC; + #endif + +#if EVENT_DRAW_FIX + if (bDirty && newClip == size) +#endif + setDirty (false); +} + +//----------------------------------------------------------------------------- +/** + * @param context the context which to use to redraw this container + * @param rect the area which to redraw + */ +void CViewContainer::redrawRect (CDrawContext* context, const CRect& rect) +{ + CRect _rect (rect); + _rect.offset (size.left, size.top); + if (bTransparencyEnabled) + { + // as this is transparent, we call the parentview to redraw this area. + if (pParentView) + pParentView->redrawRect (context, _rect); + else if (pParentFrame) + pParentFrame->drawRect (context, _rect); + } + else + { + CCoord save[4]; + if (pParentView) + { + CPoint off; + pParentView->localToFrame (off); + // store + save[0] = context->offsetScreen.h; + save[1] = context->offsetScreen.v; + save[2] = context->offset.h; + save[3] = context->offset.v; + + context->offsetScreen.h += off.x; + context->offsetScreen.v += off.y; + context->offset.h += off.x; + context->offset.v += off.y; + } + + drawRect (context, _rect); + + if (pParentView) + { + // restore + context->offsetScreen.h = save[0]; + context->offsetScreen.v = save[1]; + context->offset.h = save[2]; + context->offset.v = save[3]; + } + } +} + +//----------------------------------------------------------------------------- +bool CViewContainer::hitTestSubViews (const CPoint& where, const long buttons) +{ + CPoint where2 (where); + where2.offset (-size.left, -size.top); + + CCView *pSv = pLastView; + while (pSv) + { + CView *pV = pSv->pView; + if (pV && pV->getMouseEnabled () && pV->hitTest (where2, buttons)) + return true; + pSv = pSv->pPrevious; + } + return false; +} + +//----------------------------------------------------------------------------- +bool CViewContainer::hitTest (const CPoint& where, const long buttons) +{ + //return hitTestSubViews (where); would change default behavior + return CView::hitTest (where, buttons); +} + +//----------------------------------------------------------------------------- +void CViewContainer::mouse (CDrawContext *pContext, CPoint &where, long buttons) +{ + // convert to relativ pos + CPoint where2 (where); + where2.offset (-size.left, -size.top); + + if (buttons == -1 && pContext) + buttons = pContext->getMouseButtons (); + + CCView *pSv = pLastView; + while (pSv) + { + CView *pV = pSv->pView; + if (pV && pV->getMouseEnabled () && pV->hitTest (where2, buttons)) + { + pV->mouse (pContext, where2, buttons); + break; + } + pSv = pSv->pPrevious; + } +} + +//----------------------------------------------------------------------------- +long CViewContainer::onKeyDown (VstKeyCode& keyCode) +{ + long result = -1; + + CCView* pSv = pLastView; + while (pSv) + { + long result = pSv->pView->onKeyDown (keyCode); + if (result != -1) + break; + + pSv = pSv->pPrevious; + } + + return result; +} + +//----------------------------------------------------------------------------- +long CViewContainer::onKeyUp (VstKeyCode& keyCode) +{ + long result = -1; + + CCView* pSv = pLastView; + while (pSv) + { + long result = pSv->pView->onKeyUp (keyCode); + if (result != -1) + break; + + pSv = pSv->pPrevious; + } + + return result; +} + +//----------------------------------------------------------------------------- +bool CViewContainer::onWheel (CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance) +{ + bool result = false; + CView *view = getViewAt (where); + if (view) + { + // convert to relativ pos + CPoint where2 (where); + where2.offset (-size.left, -size.top); + + CCoord save[4]; + modifyDrawContext (save, pContext); + + result = view->onWheel (pContext, where2, axis, distance); + + restoreDrawContext (pContext, save); + } + return result; +} + +//----------------------------------------------------------------------------- +bool CViewContainer::onWheel (CDrawContext *pContext, const CPoint &where, float distance) +{ + return onWheel (pContext, where, kMouseWheelAxisY, distance); +} + +//----------------------------------------------------------------------------- +bool CViewContainer::onDrop (CDrawContext* context, CDragContainer* drag, const CPoint& where) +{ + if (!pParentFrame) + return false; + + bool result = false; + + CCoord save[4]; + modifyDrawContext (save, context); + + // convert to relativ pos + CPoint where2 (where); + where2.offset (-size.left, -size.top); + + CView* view = getViewAt (where); + if (view != currentDragView) + { + if (currentDragView) + currentDragView->onDragLeave (context, drag, where2); + currentDragView = view; + } + if (currentDragView) + { + result = currentDragView->onDrop (context, drag, where2); + currentDragView->onDragLeave (context, drag, where2); + } + currentDragView = 0; + + restoreDrawContext (context, save); + + return result; +} + +//----------------------------------------------------------------------------- +void CViewContainer::onDragEnter (CDrawContext* context, CDragContainer* drag, const CPoint& where) +{ + if (!pParentFrame) + return; + + CCoord save[4]; + modifyDrawContext (save, context); + + // convert to relativ pos + CPoint where2 (where); + where2.offset (-size.left, -size.top); + + if (currentDragView) + currentDragView->onDragLeave (context, drag, where2); + CView* view = getViewAt (where); + currentDragView = view; + if (view) + view->onDragEnter (context, drag, where2); + + restoreDrawContext (context, save); +} + +//----------------------------------------------------------------------------- +void CViewContainer::onDragLeave (CDrawContext* context, CDragContainer* drag, const CPoint& where) +{ + if (!pParentFrame) + return; + + CCoord save[4]; + modifyDrawContext (save, context); + + // convert to relativ pos + CPoint where2 (where); + where2.offset (-size.left, -size.top); + + if (currentDragView) + currentDragView->onDragLeave (context, drag, where2); + currentDragView = 0; + + restoreDrawContext (context, save); +} + +//----------------------------------------------------------------------------- +void CViewContainer::onDragMove (CDrawContext* context, CDragContainer* drag, const CPoint& where) +{ + if (!pParentFrame) + return; + + CCoord save[4]; + modifyDrawContext (save, context); + + // convert to relativ pos + CPoint where2 (where); + where2.offset (-size.left, -size.top); + + CView* view = getViewAt (where); + if (view != currentDragView) + { + if (currentDragView) + currentDragView->onDragLeave (context, drag, where2); + if (view) + view->onDragEnter (context, drag, where2); + currentDragView = view; + } + else if (currentDragView) + currentDragView->onDragMove (context, drag, where2); + + restoreDrawContext (context, save); +} + +//----------------------------------------------------------------------------- +void CViewContainer::update (CDrawContext *pContext) +{ + switch (mode) + { + //---Normal : redraw all... + case kNormalUpdate: + if (isDirty ()) + { + #if NEW_UPDATE_MECHANISM + CRect ur (0, 0, size.width (), size.height ()); + redrawRect (pContext, ur); + #else + #if USE_ALPHA_BLEND + if (bTransparencyEnabled) + { + CRect updateRect (size); + CPoint offset (0,0); + localToFrame (offset); + updateRect.offset (offset.x, offset.y); + getFrame ()->drawRect (pContext, updateRect); + } + else + #endif + draw (pContext); + #endif // !NEW_UPDATE_MECHANISM + setDirty (false); + } + break; + + //---Redraw only dirty controls----- + case kOnlyDirtyUpdate: + { + #if NEW_UPDATE_MECHANISM + if (bDirty) + { + CRect ur (0, 0, size.width (), size.height ()); + redrawRect (pContext, ur); + } + else + { + CRect updateRect (size); + updateRect.offset (-size.left, -size.top); + FOREACHSUBVIEW + if (pV->isDirty () && pV->checkUpdate (updateRect)) + { + if (pV->notify (this, kMsgCheckIfViewContainer)) + pV->update (pContext); + else + { + CRect drawSize (pV->size); + drawSize.bound (updateRect); + pV->redrawRect (pContext, drawSize); + } + } + ENDFOR + } + #else + #if USE_ALPHA_BLEND + if (bTransparencyEnabled) + { + if (bDirty) + { + CRect updateRect (size); + CPoint offset (0,0); + localToFrame (offset); + updateRect.offset (offset.x, offset.y); + getFrame ()->drawRect (pContext, updateRect); + } + else + { + CRect updateRect (size); + updateRect.offset (-size.left, -size.top); + FOREACHSUBVIEW + if (pV->isDirty () && pV->checkUpdate (updateRect)) + { + if (pV->notify (this, kMsgCheckIfViewContainer)) + { + pV->update (pContext); + } + else + { + CPoint offset; + CRect viewSize (pV->size); + pV->localToFrame (offset); + viewSize.offset (offset.x, offset.y); + getFrame ()->drawRect (pContext, viewSize); + } + } + ENDFOR + } + setDirty (false); + return; + } + #endif + if (bDirty) + draw (pContext); + else if (bDrawInOffscreen && pOffscreenContext) + { + bool doCopy = false; + if (isDirty ()) + doCopy = true; + + FOREACHSUBVIEW + pV->update (pOffscreenContext); + ENDFOR + + // transfert offscreen + if (doCopy) + pOffscreenContext->copyFrom (pContext, size); + } + else + { + long save[4]; + modifyDrawContext (save, pContext); + + FOREACHSUBVIEW + if (pV->isDirty ()) + { + long oldMode = 0; + CViewContainer* child = 0; + if (pV->notify (this, kMsgCheckIfViewContainer)) + { + child = (CViewContainer*)pV; + oldMode = child->getMode (); + child->setMode (kNormalUpdate); + } + CRect viewSize (pV->size); + drawBackgroundRect (pContext, viewSize); + pV->update (pContext); + if (child) + child->setMode (oldMode); + } + ENDFOR + + restoreDrawContext (pContext, save); + } + #endif // !NEW_UPDATE_MECHANISM + setDirty (false); + break; + } + } +} + +//----------------------------------------------------------------------------- +void CViewContainer::looseFocus (CDrawContext *pContext) +{ + FOREACHSUBVIEW + pV->looseFocus (pContext); + ENDFOR +} + +//----------------------------------------------------------------------------- +void CViewContainer::takeFocus (CDrawContext *pContext) +{ + FOREACHSUBVIEW + pV->takeFocus (pContext); + ENDFOR +} + +//----------------------------------------------------------------------------- +bool CViewContainer::advanceNextFocusView (CView* oldFocus, bool reverse) +{ + bool foundOld = false; + FOREACHSUBVIEW_REVERSE(reverse) + if (oldFocus && !foundOld) + { + if (oldFocus == pV) + { + foundOld = true; + continue; + } + } + else + { + if (pV->wantsFocus ()) + { + getFrame ()->setFocusView (pV); + return true; + } + else if (pV->isTypeOf ("CViewContainer")) + { + if (((CViewContainer*)pV)->advanceNextFocusView (0, reverse)) + return true; + } + } + ENDFOR + return false; +} + +//----------------------------------------------------------------------------- +bool CViewContainer::isDirty () const +{ + if (bDirty) + return true; + + CRect viewSize (size); + viewSize.offset (-size.left, -size.top); + + FOREACHSUBVIEW + if (pV->isDirty ()) + { + CRect r (pV->size); + r.bound (viewSize); + if (r.getWidth () > 0 && r.getHeight () > 0) + return true; + } + ENDFOR + return false; +} + +//----------------------------------------------------------------------------- +CView *CViewContainer::getCurrentView () const +{ + if (!pParentFrame) + return 0; + + // get the current position + CPoint where; + pParentFrame->getCurrentLocation (where); + + frameToLocal (where); + + CCView *pSv = pLastView; + while (pSv) + { + CView *pV = pSv->pView; + if (pV && where.isInside (pV->mouseableArea)) + return pV; + pSv = pSv->pPrevious; + } + + return 0; +} + +//----------------------------------------------------------------------------- +CView *CViewContainer::getViewAt (const CPoint& p, bool deep) const +{ + if (!pParentFrame) + return 0; + + CPoint where (p); + + // convert to relativ pos + where.offset (-size.left, -size.top); + + CCView *pSv = pLastView; + while (pSv) + { + CView *pV = pSv->pView; + if (pV && where.isInside (pV->mouseableArea)) + { + if (deep) + { + if (pV->isTypeOf ("CViewContainer")) + return ((CViewContainer*)pV)->getViewAt (where, deep); + } + return pV; + } + pSv = pSv->pPrevious; + } + + return 0; +} + +//----------------------------------------------------------------------------- +CPoint& CViewContainer::frameToLocal (CPoint& point) const +{ + point.offset (-size.left, -size.top); + if (pParentView && pParentView->isTypeOf ("CViewContainer")) + return pParentView->frameToLocal (point); + return point; +} + +//----------------------------------------------------------------------------- +CPoint& CViewContainer::localToFrame (CPoint& point) const +{ + point.offset (size.left, size.top); + if (pParentView && pParentView->isTypeOf ("CViewContainer")) + return pParentView->localToFrame (point); + return point; +} + +//----------------------------------------------------------------------------- +bool CViewContainer::removed (CView* parent) +{ + #if !BEOS + if (pOffscreenContext) + pOffscreenContext->forget (); + pOffscreenContext = 0; + #endif + + return true; +} + +//----------------------------------------------------------------------------- +bool CViewContainer::attached (CView* view) +{ + #if !BEOS + // create offscreen bitmap + if (!pOffscreenContext && bDrawInOffscreen) + pOffscreenContext = new COffscreenContext (pParentFrame, (long)size.width (), (long)size.height (), kBlackCColor); + #endif + + return true; +} + +//----------------------------------------------------------------------------- +void CViewContainer::useOffscreen (bool b) +{ + bDrawInOffscreen = b; + + #if !BEOS + if (!bDrawInOffscreen && pOffscreenContext) + { + pOffscreenContext->forget (); + pOffscreenContext = 0; + } + #endif +} + +//----------------------------------------------------------------------------- +void CViewContainer::modifyDrawContext (CCoord save[4], CDrawContext* pContext) +{ + // store + save[0] = pContext->offsetScreen.h; + save[1] = pContext->offsetScreen.v; + save[2] = pContext->offset.h; + save[3] = pContext->offset.v; + + pContext->offsetScreen.h += size.left; + pContext->offsetScreen.v += size.top; + pContext->offset.h += size.left; + pContext->offset.v += size.top; +} + +//----------------------------------------------------------------------------- +void CViewContainer::restoreDrawContext (CDrawContext* pContext, CCoord save[4]) +{ + // restore + pContext->offsetScreen.h = save[0]; + pContext->offsetScreen.v = save[1]; + pContext->offset.h = save[2]; + pContext->offset.v = save[3]; +} + +#if DEBUG +static long _debugDumpLevel = 0; +//----------------------------------------------------------------------------- +void CViewContainer::dumpInfo () +{ + static const char* modeString[] = { "Normal Update Mode", "Only Dirty Update Mode"}; + DebugPrint ("CViewContainer: Mode: %s, Offscreen:%s ", modeString[mode], bDrawInOffscreen ? "Yes" : "No"); + CView::dumpInfo (); +} + +//----------------------------------------------------------------------------- +void CViewContainer::dumpHierarchy () +{ + _debugDumpLevel++; + FOREACHSUBVIEW + for (long i = 0; i < _debugDumpLevel; i++) + DebugPrint ("\t"); + pV->dumpInfo (); + DebugPrint ("\n"); + if (pV->isTypeOf ("CViewContainer")) + ((CViewContainer*)pV)->dumpHierarchy (); + ENDFOR + _debugDumpLevel--; +} + +#endif + +#if WINDOWS && USE_LIBPNG +class PNGResourceStream +{ +public: + PNGResourceStream () + : streamPos (0) + , resData (0) + , resSize (0) + { + } + + ~PNGResourceStream () + { + } + + bool open (long resourceID) + { + HRSRC rsrc = FindResource (GetInstance (), MAKEINTRESOURCE (resourceID), "PNG"); + if (rsrc) + { + resSize = SizeofResource (GetInstance (), rsrc); + HGLOBAL resDataLoad = LoadResource (GetInstance (), rsrc); + if (resDataLoad) + { + resData = LockResource (resDataLoad); + return true; + } + } + return false; + } + + void read (unsigned char* ptr, size_t size) + { + if (streamPos + size <= resSize) + { + memcpy (ptr, ((unsigned char*)resData+streamPos), size); + streamPos += (unsigned long)size; + } + } + + static void readCallback (png_struct* pngPtr, unsigned char* ptr, size_t size) + { + void* obj = png_get_io_ptr (pngPtr); + if (obj) + ((PNGResourceStream*)obj)->read (ptr, size); + } +protected: + HGLOBAL resData; + unsigned long streamPos; + unsigned long resSize; +}; +#endif + +//----------------------------------------------------------------------------- +// CBitmap Implementation +//----------------------------------------------------------------------------- +/*! @class CBitmap +@section cbitmap_alphablend Alpha Blend and Transparency +With Version 3.0 of VSTGUI it is possible to use alpha blended bitmaps. This comes free on Mac OS X and with Windows you need to include libpng. +Per default PNG images will be rendered alpha blended. If you want to use a transparency color with PNG Bitmaps, you need to call setNoAlpha(true) on the bitmap and set the transparency color. +@section cbitmap_macos Classic Apple Mac OS +The Bitmaps are PICTs and stored inside the resource fork. +@section cbitmap_macosx Apple Mac OS X +The Bitmaps can be of type PNG, JPEG, PICT, BMP and are stored in the Resources folder of the plugin bundle. +They must be named bmp00100.png (or bmp00100.jpg, etc). The number is the resource id. +@section cbitmap_windows Microsoft Windows +The Bitmaps are .bmp files and must be included in the plug (usually using a .rc file). +It's also possible to use png as of version 3.0 if you define the macro USE_LIBPNG and include the libpng and zlib libraries/sources to your project. +*/ +CBitmap::CBitmap (long resourceID) + : resourceID (resourceID), width (0), height (0), noAlpha (true) +{ + #if DEBUG + gNbCBitmap++; + #endif + +#if WINDOWS || MAC + pMask = 0; + pHandle = 0; + #if QUARTZ + cgImage = 0; + #endif + + loadFromResource (resourceID); + +#elif MOTIF + bool found = false; + long i = 0; + long ncolors, cpp; + + pHandle = 0; + pMask = 0; + + // find the good pixmap resource + while (xpmResources[i].id != 0) + { + if (xpmResources[i].id == resourceID) + { + if (xpmResources[i].xpm != NULL) + { + found = true; + ppDataXpm = xpmResources[i].xpm; + + xpmGetValues (ppDataXpm, &width, &height, &ncolors, &cpp); + break; + } + } + i++; + } + + if (!found) + ppDataXpm = 0; + +#elif BEOS + bbitmap = 0; + transparencySet = false; + if (resourceFile == 0) + { + // this is a hack to find the plug-in on the disk to access resources. + const char* locate_me = ""; + int32 cookie = 0; + image_info iinfo; + uint32 here = uint32 (locate_me); + while (get_next_image_info (0, &cookie, &iinfo) == B_OK) + { + uint32 begin = uint32 (iinfo.text); + if (begin <= here && here <= begin + iinfo.text_size) + break; + } + BFile resource (iinfo.name, B_READ_ONLY); + resourceFile = new BResources (&resource); + resourceFile->PreloadResourceType (); + } + size_t outSize; + const char* res = (const char*) resourceFile->LoadResource ('RAWT', resourceID, &outSize); + if (res) + { + BMemoryIO memoryIO (res, outSize); + bbitmap = BTranslationUtils::GetBitmap (&memoryIO); + if (bbitmap) + { + BRect rect = bbitmap->Bounds (); + width = (long) rect.Width () + 1; + height = (long) rect.Height () + 1; + } + } + if (!bbitmap) + fprintf (stderr, "********* Resource %d could NOT be loaded!\n", (int)resourceID); +#endif + + setTransparentColor (kTransparentCColor); + + #if DEBUG + gBitmapAllocation += (long)height * (long)width; + #endif +} + +//----------------------------------------------------------------------------- +CBitmap::CBitmap (CFrame &frame, CCoord width, CCoord height) + : width (width), height (height), noAlpha (true) +{ + #if DEBUG + gNbCBitmap++; + #endif + +#if WINDOWS + HDC hScreen = GetDC (0); + pHandle = CreateCompatibleBitmap (hScreen, width, height); + ReleaseDC (0, hScreen); + pMask = 0; + +#elif MAC + pHandle = 0; + pMask = 0; + + Rect r; + r.left = r.top = 0; + r.right = (short)width; + r.bottom = (short)height; + + #if QUARTZ + NewGWorld ((GWorldPtr*)&pHandle, 32, &r, 0, 0, 0); + cgImage = 0; + #else + NewGWorld ((GWorldPtr*)&pHandle, 0, &r, 0, 0, 0); + + #endif + +#elif MOTIF + pXdisplay = frame.getDisplay (); + Drawable pWindow = frame.getWindow (); + + pMask = 0; + pHandle = (void*)XCreatePixmap (pXdisplay, (Drawable)pWindow, width, height, frame.getDepth ()); + +#elif BEOS + bbitmap = 0; + transparencySet = false; +#endif + + setTransparentColor (kTransparentCColor); +} + +//----------------------------------------------------------------------------- +CBitmap::CBitmap () +: resourceID (0) +, width (0) +, height (0) +, noAlpha (true) +{ + #if WINDOWS + pHandle = 0; + pMask = 0; + + #elif MAC + pHandle = 0; + pMask = 0; + #if QUARTZ + cgImage = 0; + #endif + + #elif MOTIF + pMask = 0; + pHandle = 0; + + #elif BEOS + bbitmap = 0; + + #endif +} + +//----------------------------------------------------------------------------- +CBitmap::~CBitmap () +{ + dispose (); +} + +//----------------------------------------------------------------------------- +void CBitmap::dispose () +{ + #if DEBUG + gNbCBitmap--; + gBitmapAllocation -= (long)height * (long)width; + #endif + + #if WINDOWS + if (pHandle) + DeleteObject (pHandle); + if (pMask) + DeleteObject (pMask); + + pHandle = 0; + pMask = 0; + noAlpha = false; + + #elif MAC + #if QUARTZ + if (cgImage) + CGImageRelease ((CGImageRef)cgImage); + cgImage = 0; + #endif + if (pHandle) + DisposeGWorld ((GWorldPtr)pHandle); + if (pMask) + DisposeGWorld ((GWorldPtr)pMask); + + pHandle = 0; + pMask = 0; + + #elif MOTIF + if (pHandle) + XFreePixmap (pXdisplay, (Pixmap)pHandle); + if (pMask) + XFreePixmap (pXdisplay, (Pixmap)pMask); + + pHandle = 0; + pMask = 0; + + #elif BEOS + if (bbitmap) + delete bbitmap; + + bbitmap = 0; + + #endif + + width = 0; + height = 0; + +} + +//----------------------------------------------------------------------------- +void *CBitmap::getHandle () const + { + #if WINDOWS||MOTIF + return pHandle; + + #elif MAC + return pHandle; + + #elif BEOS + return bbitmap; + #endif +} + +//----------------------------------------------------------------------------- +bool CBitmap::loadFromResource (long resourceID) +{ + bool result = false; + + dispose (); + + //--------------------------------------------------------------------------------------------- + #if WINDOWS + //--------------------------------------------------------------------------------------------- + #if USE_LIBPNG + PNGResourceStream resStream; + if (resStream.open (resourceID)) + { + // setup libpng + png_structp png_ptr; + png_infop info_ptr; + png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + if (png_ptr) + { + info_ptr = png_create_info_struct (png_ptr); + if (info_ptr) + { + if (setjmp (png_jmpbuf (png_ptr)) == 0) + { + int bit_depth, color_type; + png_set_read_fn (png_ptr, (void *)&resStream, PNGResourceStream::readCallback); + png_read_info (png_ptr, info_ptr); + png_get_IHDR (png_ptr, info_ptr, (png_uint_32*)&width, (png_uint_32*)&height, &bit_depth, &color_type, 0, 0, 0); + long bytesPerRow = width * (32 / 8); + while (bytesPerRow & 0x03) + bytesPerRow++; + // create BITMAP + BITMAPINFO* bmInfo = new BITMAPINFO; + BITMAPINFOHEADER* header = (BITMAPINFOHEADER*)bmInfo; + memset (header, 0, sizeof(BITMAPINFOHEADER)); + header->biSize = sizeof(BITMAPINFOHEADER); + header->biWidth = width; + header->biHeight = height; + header->biPlanes = 1; + header->biBitCount = 32; + header->biCompression = BI_RGB; + header->biClrUsed = 0; + void* bits; + HDC dstDC = 0; //CreateCompatibleDC (0); + pHandle = CreateDIBSection (dstDC, bmInfo, DIB_RGB_COLORS, &bits, NULL, 0); + delete bmInfo; + if (pHandle) + { + if (color_type == PNG_COLOR_TYPE_PALETTE) + png_set_palette_to_rgb (png_ptr); + if (color_type == PNG_COLOR_TYPE_GRAY || color_type == PNG_COLOR_TYPE_GRAY_ALPHA) + png_set_gray_to_rgb (png_ptr); + if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) + png_set_gray_1_2_4_to_8 (png_ptr); + if (png_get_valid (png_ptr, info_ptr, PNG_INFO_tRNS)) + png_set_tRNS_to_alpha (png_ptr); + else + png_set_filler (png_ptr, 0xFF, PNG_FILLER_AFTER); + if (bit_depth == 16) + { + png_set_swap (png_ptr); + png_set_strip_16 (png_ptr); + } + if (color_type == PNG_COLOR_TYPE_RGB || color_type == PNG_COLOR_TYPE_RGB_ALPHA) + png_set_bgr (png_ptr); + png_read_update_info (png_ptr, info_ptr); + + unsigned char** rows = new unsigned char*[1]; + rows[0] = (unsigned char*)bits + (height-1) * bytesPerRow; + for (long i = 0; i < height; i++) + { + png_read_rows (png_ptr, rows, NULL, 1); + rows[0] -= bytesPerRow; + } + delete [] rows; + png_read_end (png_ptr, 0); + // premultiply alpha + unsigned long* pixelPtr = (unsigned long*)bits; + for (int y = 0; y > 8); + pixel[1] = ((pixel[1] * pixel[3]) >> 8); + pixel[2] = ((pixel[2] * pixel[3]) >> 8); + } + else + *pixelPtr = 0UL; + pixelPtr++; + } + } + if (dstDC) + DeleteDC (dstDC); +#if 0 + HDC srcDC = CreateCompatibleDC (0); + SelectObject (srcDC, pHandle); + + HDC dstDC = CreateCompatibleDC (0); + this->pHandle = CreateCompatibleBitmap (dstDC, width, height); + SelectObject (dstDC, this->pHandle); + + BLENDFUNCTION blendFunction; + blendFunction.BlendOp = AC_SRC_OVER; + blendFunction.BlendFlags = 0; + blendFunction.SourceConstantAlpha = 255; + #if USE_ALPHA_BLEND + if (noAlpha) + blendFunction.AlphaFormat = 0;//AC_SRC_NO_ALPHA; + else + blendFunction.AlphaFormat = AC_SRC_ALPHA; + #else + blendFunction.AlphaFormat = 0;//AC_SRC_NO_ALPHA; + #endif + #if DYNAMICALPHABLEND + (*pfnAlphaBlend) (dstDC, + 0, 0, + width, height, + srcDC, + 0, 0, + width, height, + blendFunction); + #else + #endif + + DeleteDC (srcDC); + DeleteDC (dstDC); + DeleteObject (pHandle); +#endif + } + } + } + png_destroy_read_struct (&png_ptr, &info_ptr, NULL); + } + noAlpha = false; + return true; + } + #endif + pHandle = LoadBitmap (GetInstance (), MAKEINTRESOURCE (resourceID)); + BITMAP bm; + if (pHandle && GetObject (pHandle, sizeof (bm), &bm)) + { + width = bm.bmWidth; + height = bm.bmHeight; + noAlpha = true; + return true; + } + + //--------------------------------------------------------------------------------------------- + #elif MAC + //--------------------------------------------------------------------------------------------- + pHandle = 0; + pMask = 0; + #if QUARTZ + cgImage = 0; + #endif + #if MACX + if (gBundleRef) + { + // find the bitmap in our Bundle. It must be in the form of bmp00123.png, where the resource id would be 123. + char filename [PATH_MAX]; + sprintf (filename, "bmp%05d", (int)resourceID); + CFStringRef cfStr = CFStringCreateWithCString (NULL, filename, kCFStringEncodingASCII); + if (cfStr) + { + CFURLRef url = NULL; + int i = 0; + while (url == NULL) + { + static CFStringRef resTypes [] = { CFSTR("png"), CFSTR("bmp"), CFSTR("jpg"), CFSTR("pict"), NULL }; + url = CFBundleCopyResourceURL ((CFBundleRef)gBundleRef, cfStr, resTypes[i], NULL); + if (resTypes[++i] == NULL) + break; + } + CFRelease (cfStr); + if (url) + { + result = loadFromPath (url); + CFRelease (url); + } + else + { + #if DEVELOPMENT + fprintf (stderr, "Bitmap Nr.:%d not found.\n", resourceID); + #endif + } + } + } + #endif + + if (!result && pHandle == 0) + { + Handle picHandle = GetResource ('PICT', resourceID); + if (picHandle) + { + HLock (picHandle); + + PictInfo info; + GetPictInfo ((PicHandle)picHandle, &info, recordComments, 0, systemMethod, 0); + width = info.sourceRect.right; + height = info.sourceRect.bottom; + + OSErr err = NewGWorld ((GWorldPtr*)&pHandle, 32, &info.sourceRect, 0, 0, 0); + if (!err) + { + GWorldPtr oldPort; + GDHandle oldDevice; + GetGWorld (&oldPort, &oldDevice); + SetGWorld ((GWorldPtr)pHandle, 0); + + DrawPicture ((PicHandle)picHandle, &info.sourceRect); + + SetGWorld (oldPort, oldDevice); + result = true; + } + + HUnlock (picHandle); + ReleaseResource (picHandle); + } + } + + #else + // other platforms go here + #endif + return result; +} + +//----------------------------------------------------------------------------- +bool CBitmap::loadFromPath (const void* platformPath) +{ + bool result = false; + + dispose (); + + #if QUARTZ + CFURLRef url = (CFURLRef)platformPath; + + FSRef fsRef; + if (CFURLGetFSRef (url, &fsRef)) + { + FSSpec fsSpec; + FSCatalogInfoBitmap infoBitmap = kFSCatInfoNone; + if (FSGetCatalogInfo (&fsRef, infoBitmap, NULL, NULL, &fsSpec, NULL) == noErr) + { + ComponentInstance* gi = 0; + CFStringRef ext = CFURLCopyPathExtension (url); + if (ext == 0) + return false; + if (CFStringCompare (ext, CFSTR("bmp"), 0) == kCFCompareEqualTo) + gi = &bmpGI; + else if (CFStringCompare (ext, CFSTR("png"), 0) == kCFCompareEqualTo) + { + gi = &pngGI; + noAlpha = false; + } + else if (CFStringCompare (ext, CFSTR("jpg"), 0) == kCFCompareEqualTo) + gi = &jpgGI; + else if (CFStringCompare (ext, CFSTR("pict"), 0) == kCFCompareEqualTo) + gi = &pictGI; + CFRelease (ext); + + if (*gi == 0) + GetGraphicsImporterForFile (&fsSpec, gi); + else + if (GraphicsImportSetDataFile (*gi, &fsSpec) != noErr) + return false; + if (*gi) + { + #ifdef MAC_OS_X_VERSION_10_3 + if (!noAlpha && GraphicsImportCreateCGImage) + { + if (GraphicsImportCreateCGImage (*gi, (CGImageRef*)&cgImage, 0) == noErr) + { + width = CGImageGetWidth ((CGImageRef)cgImage); + height = CGImageGetHeight ((CGImageRef)cgImage); + result = true; + } + } + else + #endif + { + Rect r; + GraphicsImportGetSourceRect (*gi, &r); + OSErr err = NewGWorld ((GWorldPtr*)&pHandle, 32, &r, 0, 0, 0); + if (!err) + { + width = r.right; + height = r.bottom; + GraphicsImportSetGWorld (*gi, (GWorldPtr)pHandle, 0); + GraphicsImportDraw (*gi); + result = true; + } + } + } + } + } + #elif WINDOWS + // todo + + #endif + + return result; +} + +//----------------------------------------------------------------------------- +bool CBitmap::isLoaded () const +{ + #if MOTIF + if (ppDataXpm) + return true; + + #elif QUARTZ + if (cgImage || getHandle ()) + return true; + #else + if (getHandle ()) + return true; + #endif + + return false; +} + +#if QUARTZ +class CDataProvider +{ +public: + CDataProvider (CBitmap* bitmap) : bmp (bitmap) + { + pos = 0; + PixMapHandle pixMap = GetGWorldPixMap ((GWorldPtr)bmp->getHandle ()); + ptr = (unsigned char*)GetPixBaseAddr (pixMap); + color = bmp->getTransparentColor (); + } + + static size_t getBytes (void *info, void *buffer, size_t count) + { // this could be optimized ;-) + CDataProvider* p = (CDataProvider*)info; + unsigned char* dst = (unsigned char*)buffer; + unsigned char* src = p->ptr + p->pos; + for (unsigned long i = 0; i < count / 4; i++) + { + if (src[1] == p->color.red && src[2] == p->color.green && src[3] == p->color.blue) + { + *dst++ = 0; + src++; + } + else + *dst++ = *src++; + *dst++ = *src++; + *dst++ = *src++; + *dst++ = *src++; + } + p->pos += count; + return count; + } + + static void skipBytes (void *info, size_t count) + { + CDataProvider* p = (CDataProvider*)info; + p->pos += count; + } + + static void rewind (void *info) + { + CDataProvider* p = (CDataProvider*)info; + p->pos = 0; + } + + static void releaseProvider (void *info) + { + CDataProvider* p = (CDataProvider*)info; + delete p; + } + + unsigned long pos; + CBitmap* bmp; + unsigned char* ptr; + CColor color; +}; + +//----------------------------------------------------------------------------- +CGImageRef CBitmap::createCGImage (bool transparent) +{ + if (cgImage) + { + CGImageRetain ((CGImageRef)cgImage); + return (CGImageRef)cgImage; + } + if (!pHandle) + return NULL; + + PixMapHandle pixMap = GetGWorldPixMap ((GWorldPtr)pHandle); + + Rect bounds; + GetPixBounds (pixMap, &bounds); + + size_t pixRowBytes = GetPixRowBytes (pixMap); + short pixDepth = GetPixDepth (pixMap); + size_t size = pixRowBytes * (bounds.bottom - bounds.top); + + CGImageRef image = 0; + CGDataProviderRef provider = 0; + static CGDataProviderCallbacks callbacks = { CDataProvider::getBytes, CDataProvider::skipBytes, CDataProvider::rewind, CDataProvider::releaseProvider }; + if (transparent) + provider = CGDataProviderCreate (new CDataProvider (this), &callbacks); + else + provider = CGDataProviderCreateWithData (NULL, GetPixBaseAddr (pixMap), size, NULL); + CGImageAlphaInfo alphaInfo = kCGImageAlphaFirst; + if (GetPixDepth (pixMap) != 32) + alphaInfo = kCGImageAlphaNone; + image = CGImageCreate (bounds.right - bounds.left, bounds.bottom - bounds.top, 8 , pixDepth, pixRowBytes, GetGenericRGBColorSpace (), alphaInfo, provider, NULL, false, kCGRenderingIntentDefault); + CGDataProviderRelease (provider); + + cgImage = image; + CGImageRetain (image); + return image; +} +#endif + +//----------------------------------------------------------------------------- +void CBitmap::draw (CDrawContext *pContext, CRect &rect, const CPoint &offset) +{ +#if WINDOWS + #if USE_ALPHA_BLEND + if (!noAlpha) + { + drawAlphaBlend (pContext, rect, offset, 255); + return; + } + #endif + + if (pHandle) + { + HGDIOBJ hOldObj; + HDC hdcMemory = CreateCompatibleDC ((HDC)pContext->pSystemContext); + hOldObj = SelectObject (hdcMemory, pHandle); + BitBlt ((HDC)pContext->pSystemContext, + rect.left + pContext->offset.h, rect.top + pContext->offset.v, rect.width (), rect.height (), + (HDC)hdcMemory, offset.h, offset.v, SRCCOPY); + SelectObject (hdcMemory, hOldObj); + DeleteDC (hdcMemory); + } + +#elif MAC + + #if QUARTZ + drawAlphaBlend (pContext, rect, offset, 255); + + #else + Rect source, dest; + dest.top = rect.top + pContext->offset.v; + dest.left = rect.left + pContext->offset.h; + dest.bottom = dest.top + rect.height (); + dest.right = dest.left + rect.width (); + + source.top = offset.v; + source.left = offset.h; + source.bottom = source.top + rect.height (); + source.right = source.left + rect.width (); + + pContext->getPort (); + BitMapPtr bitmapPtr = pContext->getBitmap (); + + if (pHandle && bitmapPtr) + { + PixMapHandle pmHandle = GetGWorldPixMap ((GWorldPtr)pHandle); + if (pmHandle && LockPixels (pmHandle)) + { + RGBColor oldForeColor, oldBackColor; + GetForeColor (&oldForeColor); + GetBackColor (&oldBackColor); + ::BackColor (whiteColor); + ::ForeColor (blackColor); + + CopyBits ((BitMapPtr)*pmHandle, bitmapPtr, &source, &dest, srcCopy, 0L); + #if MACX + QDAddRectToDirtyRegion (pContext->getPort (), &dest); + #endif + + RGBForeColor (&oldForeColor); + RGBBackColor (&oldBackColor); + + UnlockPixels (pmHandle); + } + } + + pContext->releaseBitmap (); + #endif + +#elif MOTIF + if (!pHandle) + { + // the first time try to decode the pixmap + pHandle = createPixmapFromXpm (pContext); + if (!pHandle) + return; + + // keep a trace of the display for deletion + pXdisplay = pContext->pDisplay; + } + +#if DEVELOPMENT + if (!(offset.h >= 0 && offset.v >= 0 && + rect.width () <= (getWidth () - offset.h) && + rect.height () <= (getHeight () - offset.v))) + { + fprintf (stderr, "%s(%d) -> Assert failed: try to display outside from the bitmap\n", __FILE__, __LINE__); + return; + } +#endif + + XCopyArea (pContext->pDisplay, (Drawable)pHandle, + (Drawable)pContext->pWindow, + (GC)pContext->pSystemContext, offset.h, offset.v, + rect.width (), rect.height (), rect.left, rect.top); + +#elif BEOS + BRect brect (rect.left, rect.top, rect.right - 1, rect.bottom - 1); + BRect drect = brect; + brect.OffsetTo (offset.h, offset.v); + drect.OffsetBy (pContext->offset.h, pContext->offset.v); + pContext->pView->SetDrawingMode (B_OP_COPY); + pContext->pView->DrawBitmap (bbitmap, brect, drect); +#endif +} + +//----------------------------------------------------------------------------- +void CBitmap::drawTransparent (CDrawContext *pContext, CRect &rect, const CPoint &offset) +{ +#if WINDOWS + #if USE_ALPHA_BLEND + if (!noAlpha) + { + drawAlphaBlend (pContext, rect, offset, 255); + return; + } + #endif + + BITMAP bm; + HDC hdcBitmap; + POINT ptSize; + + hdcBitmap = CreateCompatibleDC ((HDC)pContext->pSystemContext); + SelectObject (hdcBitmap, pHandle); // Select the bitmap + + GetObject (pHandle, sizeof (BITMAP), (LPSTR)&bm); + ptSize.x = bm.bmWidth; // Get width of bitmap + ptSize.y = bm.bmHeight; // Get height of bitmap + DPtoLP (hdcBitmap, &ptSize, 1); // Convert from device to logical points + + DrawTransparent (pContext, rect, offset, hdcBitmap, ptSize, (HBITMAP)pMask, RGB(transparentCColor.red, transparentCColor.green, transparentCColor.blue)); + + DeleteDC (hdcBitmap); + +#elif MAC + + #if QUARTZ + if (noAlpha) + { + CGImageRef image = createCGImage (true); + if (image) + { + drawAlphaBlend (pContext, rect, offset, 255); + CGImageRelease (image); + } + } + else + drawAlphaBlend (pContext, rect, offset, 255); + + #else + Rect source, dest; + dest.top = rect.top + pContext->offset.v; + dest.left = rect.left + pContext->offset.h; + dest.bottom = dest.top + rect.height (); + dest.right = dest.left + rect.width (); + + source.top = offset.v; + source.left = offset.h; + source.bottom = source.top + rect.height (); + source.right = source.left + rect.width (); + + pContext->getPort (); + BitMapPtr bitmapPtr = pContext->getBitmap (); + + if (pHandle && bitmapPtr) + { + PixMapHandle pmHandle = GetGWorldPixMap ((GWorldPtr)pHandle); + if (pmHandle && LockPixels (pmHandle)) + { + RGBColor oldForeColor, oldBackColor; + GetForeColor (&oldForeColor); + GetBackColor (&oldBackColor); + + RGBColor col; + CColor2RGBColor (transparentCColor, col); + RGBBackColor (&col); + ::ForeColor (blackColor); + + if (pMask) + { + PixMapHandle pmHandleMask = GetGWorldPixMap ((GWorldPtr)pMask); + if (pmHandleMask && LockPixels (pmHandleMask)) + { + CopyMask ((BitMapPtr)*pmHandle, (BitMapPtr)*pmHandleMask, bitmapPtr, + &source, &source, &dest); + + UnlockPixels (pmHandleMask); + } + } + else + CopyBits ((BitMapPtr)*pmHandle, bitmapPtr, &source, &dest, transparent, 0L); + + RGBForeColor (&oldForeColor); + RGBBackColor (&oldBackColor); + + #if MACX + QDAddRectToDirtyRegion (pContext->getPort (), &dest); + #endif + + UnlockPixels (pmHandle); + } + } + + pContext->releaseBitmap (); + #endif + +#elif MOTIF + if (!pHandle) + { + // the first time try to decode the pixmap + pHandle = createPixmapFromXpm (pContext); + if (!pHandle) + return; + + // keep a trace of the display for deletion + pXdisplay = pContext->pDisplay; + } + + if (pMask == 0) + { + // get image from the pixmap + XImage* image = XGetImage (pContext->pDisplay, (Drawable)pHandle, + 0, 0, width, height, AllPlanes, ZPixmap); + assert (image); + + // create the bitmap mask + pMask = (void*)XCreatePixmap (pContext->pDisplay, (Drawable)pContext->pWindow, + width, height, 1); + assert (pMask); + + // create a associated GC + XGCValues values; + values.foreground = 1; + GC gc = XCreateGC (pContext->pDisplay, (Drawable)pMask, GCForeground, &values); + + // clear the mask + XFillRectangle (pContext->pDisplay, (Drawable)pMask, gc, 0, 0, width, height); + + // get the transparent color index + int color = pContext->getIndexColor (transparentCColor); + + // inverse the color + values.foreground = 0; + XChangeGC (pContext->pDisplay, gc, GCForeground, &values); + + // compute the mask + XPoint *points = new XPoint [height * width]; + int x, y, nbPoints = 0; + switch (image->depth) + { + case 8: + for (y = 0; y < height; y++) + { + char* src = image->data + (y * image->bytes_per_line); + + for (x = 0; x < width; x++) + { + if (src[x] == color) + { + points[nbPoints].x = x; + points[nbPoints].y = y; + nbPoints++; + } + } + } + break; + + case 24: { + int bytesPerPixel = image->bits_per_pixel >> 3; + char *lp = image->data; + for (y = 0; y < height; y++) + { + char* cp = lp; + for (x = 0; x < width; x++) + { + if (*(int*)cp == color) + { + points[nbPoints].x = x; + points[nbPoints].y = y; + nbPoints++; + } + cp += bytesPerPixel; + } + lp += image->bytes_per_line; + } + } break; + + default : + break; + } + + XDrawPoints (pContext->pDisplay, (Drawable)pMask, gc, + points, nbPoints, CoordModeOrigin); + + // free + XFreeGC (pContext->pDisplay, gc); + delete []points; + + // delete + XDestroyImage (image); + } + + // set the new clipmask + XGCValues value; + value.clip_mask = (Pixmap)pMask; + value.clip_x_origin = rect.left - offset.h; + value.clip_y_origin = rect.top - offset.v; + XChangeGC (pContext->pDisplay, (GC)pContext->pSystemContext, + GCClipMask|GCClipXOrigin|GCClipYOrigin, &value); + + XCopyArea (pContext->pDisplay, (Drawable)pHandle, (Drawable)pContext->pWindow, + (GC)pContext->pSystemContext, offset.h, offset.v, + rect.width (), rect.height (), rect.left, rect.top); + + // unset the clipmask + XSetClipMask (pContext->pDisplay, (GC)pContext->pSystemContext, None); + + +#elif BEOS + if (!transparencySet) + { + uint32 c32 = transparentCColor.red | (transparentCColor.green << 8) | (transparentCColor.blue << 16); + uint32 *pix = (uint32*) bbitmap->Bits (); + uint32 ctr = B_TRANSPARENT_32_BIT.red | (B_TRANSPARENT_32_BIT.green << 8) | (B_TRANSPARENT_32_BIT.blue << 16) | (B_TRANSPARENT_32_BIT.alpha << 24); + + for (int32 z = 0, count = bbitmap->BitsLength () / 4; z < count; z++) + { + if ((pix[z] & 0xffffff) == c32) + pix[z] = ctr; + } + transparencySet = true; + } + BRect brect (rect.left, rect.top, rect.right - 1, rect.bottom - 1); + BRect drect = brect; + brect.OffsetTo (offset.h, offset.v); + drect.OffsetBy (pContext->offset.h, pContext->offset.v); + pContext->pView->SetDrawingMode (B_OP_OVER); + pContext->pView->DrawBitmap (bbitmap, brect, drect); + +#endif +} + +//----------------------------------------------------------------------------- +void CBitmap::drawAlphaBlend (CDrawContext *pContext, CRect &rect, const CPoint &offset, unsigned char alpha) +{ +#if WINDOWS + if (pHandle) + { + HGDIOBJ hOldObj; + HDC hdcMemory = CreateCompatibleDC ((HDC)pContext->pSystemContext); + hOldObj = SelectObject (hdcMemory, pHandle); + + BLENDFUNCTION blendFunction; + blendFunction.BlendOp = AC_SRC_OVER; + blendFunction.BlendFlags = 0; + blendFunction.SourceConstantAlpha = alpha; + #if USE_ALPHA_BLEND + if (noAlpha) + blendFunction.AlphaFormat = 0;//AC_SRC_NO_ALPHA; + else + blendFunction.AlphaFormat = AC_SRC_ALPHA; + #else + blendFunction.AlphaFormat = 0;//AC_SRC_NO_ALPHA; + #endif + #if DYNAMICALPHABLEND + // check for Win98 as it has a bug in AlphaBlend + if (gSystemVersion.dwMajorVersion == 4 && gSystemVersion.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS && gSystemVersion.dwMinorVersion == 10) + { + HGDIOBJ hOldObj1; + HDC hdcMemory1 = CreateCompatibleDC ((HDC)pContext->pSystemContext); + HBITMAP hbmp = CreateCompatibleBitmap(hdcMemory, rect.width(), rect.height()); + //this does NOT work: + //HBITMAP hbmp = CreateCompatibleBitmap(hdcMemory1, rect.width(), rect.height()); + hOldObj1 = SelectObject (hdcMemory1, hbmp); + + //copy contents of original picture in hdcMemory + //from the offset to hdcMemory1 (0,0) + long res = BitBlt((HDC)hdcMemory1, + 0, 0, + rect.width(), rect.height(), + (HDC)hdcMemory, offset.h, offset.v, SRCCOPY); + + //Copy the resulting image with alpha blending: + (*pfnAlphaBlend) ((HDC)pContext->pSystemContext, + rect.left + pContext->offset.h, rect.top + pContext->offset.v, + rect.width (), rect.height (), + hdcMemory1, + 0, 0,//the offset is done in BitBlt + rect.width (), rect.height (), + blendFunction); + SelectObject (hdcMemory1, hOldObj1); + DeleteDC(hdcMemory1); + DeleteObject(hbmp); + } + else + { + (*pfnAlphaBlend) ((HDC)pContext->pSystemContext, + rect.left + pContext->offset.h, rect.top + pContext->offset.v, + rect.width (), rect.height (), + (HDC)hdcMemory, + offset.h, offset.v, + rect.width (), rect.height (), + blendFunction); + } + #else + AlphaBlend ((HDC)pContext->pSystemContext, + rect.left + pContext->offset.h, rect.top + pContext->offset.v, + rect.width (), rect.height (), + (HDC)hdcMemory, + offset.h, offset.v, + rect.width (), rect.height (), + blendFunction); + #endif + SelectObject (hdcMemory, hOldObj); + DeleteDC (hdcMemory); + } + +#elif MAC + + #if QUARTZ + if (_CGImageCreateWithImageInRect) // this is much faster on Mac OS X 10.4 and above + { + if (pHandle || cgImage) + { + CGContextRef context = pContext->beginCGContext (); + if (context) + { + if (alpha != 255) + CGContextSetAlpha (context, (float)alpha / 255.f); + + CGImageRef image = createCGImage (); + + if (image) + { + CRect ccr; + pContext->getClipRect (ccr); + CGRect clipRect = CGRectMake (ccr.left - rect.left + offset.h, ccr.top - rect.top + offset.v, ccr.width (), ccr.height ()); + CGRect subRect = CGRectMake (offset.h, offset.v, rect.getWidth (), rect.getHeight ()); + subRect = CGRectIntersection (clipRect, subRect); + if (subRect.size.width && subRect.size.height) + { + CGImageRef subImage = _CGImageCreateWithImageInRect (image, subRect); + if (subImage) + { + CGRect dest; + dest.origin.x = subRect.origin.x + pContext->offset.h - offset.h + rect.left; + dest.origin.y = subRect.origin.y + pContext->offset.v - offset.v + rect.top; + dest.size.width = subRect.size.width; + dest.size.height = subRect.size.height; + CGContextScaleCTM (context, 1, -1); + HIViewDrawCGImage (context, &dest, subImage); + CGImageRelease (subImage); + } + } + CGImageRelease (image); + } + pContext->releaseCGContext (context); + } + } + return; + } + if (pHandle || cgImage) + { + CGContextRef context = pContext->beginCGContext (); + if (context) + { + if (alpha != 255) + CGContextSetAlpha (context, (float)alpha / 255.f); + + CGImageRef image = createCGImage (); + + if (image) + { + CGRect dest; + dest.origin.x = rect.left - offset.h + pContext->offset.h; + dest.origin.y = (rect.top + pContext->offset.v) * -1 - (getHeight () - offset.v); + dest.size.width = getWidth (); + dest.size.height = getHeight (); + + CRect ccr; + pContext->getClipRect (ccr); + CGRect cgClipRect = CGRectMake (ccr.left + pContext->offset.h, (ccr.top + pContext->offset.v) * -1 - ccr.height (), ccr.width (), ccr.height ()); + CGContextClipToRect (context, cgClipRect); + + CGRect clipRect; + clipRect.origin.x = rect.left + pContext->offset.h; + clipRect.origin.y = (rect.top + pContext->offset.v) * -1 - rect.height (); + clipRect.size.width = rect.width (); + clipRect.size.height = rect.height (); + + CGContextClipToRect (context, clipRect); + + CGContextDrawImage (context, dest, image); + CGImageRelease (image); + } + pContext->releaseCGContext (context); + } + } + + #else + Rect source, dest; + dest.top = rect.top + pContext->offset.v; + dest.left = rect.left + pContext->offset.h; + dest.bottom = dest.top + rect.height (); + dest.right = dest.left + rect.width (); + + source.top = offset.v; + source.left = offset.h; + source.bottom = source.top + rect.height (); + source.right = source.left + rect.width (); + + pContext->getPort (); + BitMapPtr bitmapPtr = pContext->getBitmap (); + if (bitmapPtr) + { + RGBColor col; + CColor color = {alpha, alpha, alpha, 0}; + CColor2RGBColor (color, col); + OpColor (&col); + + if (pHandle) + { + PixMapHandle pmHandle = GetGWorldPixMap ((GWorldPtr)pHandle); + if (pmHandle && LockPixels (pmHandle)) + { + RGBColor oldForeColor, oldBackColor; + GetForeColor (&oldForeColor); + GetBackColor (&oldBackColor); + ::BackColor (whiteColor); + ::ForeColor (blackColor); + + CopyBits ((BitMapPtr)*pmHandle, bitmapPtr, &source, &dest, blend, 0L); + #if MACX + QDAddRectToDirtyRegion (pContext->getPort (), &dest); + #endif + + RGBForeColor (&oldForeColor); + RGBBackColor (&oldBackColor); + + UnlockPixels (pmHandle); + } + } + } + + pContext->releaseBitmap (); + #endif +#endif +} +//----------------------------------------------------------------------------- +void CBitmap::setTransparentColor (const CColor color) +{ + transparentCColor = color; +#if QUARTZ + if (noAlpha) + { + if (cgImage) + CGImageRelease ((CGImageRef)cgImage); + cgImage = 0; + } +#endif +} + +//----------------------------------------------------------------------------- +void CBitmap::setTransparencyMask (CDrawContext* pContext, const CPoint& offset) +{ +#if WINDOWS + if (pMask) + DeleteObject (pMask); + + CRect r (0, 0, width, height); + r.offset (offset.h, offset.v); + pMask = CreateMaskBitmap (pContext, r, transparentCColor); + +#elif MAC + #if QUARTZ + #else + if (pMask) + DisposeGWorld ((GWorldPtr)pMask); + pMask = 0; + + Rect r; + r.left = r.top = 0; + r.right = width; + r.bottom = height; + OSErr err = NewGWorld ((GWorldPtr*)&pMask, 1, &r, 0, 0, 0); // create monochrome GWorld + if (!err) + { + GWorldPtr oldPort; + GDHandle oldDevice; + GetGWorld (&oldPort, &oldDevice); + SetGWorld ((GWorldPtr)pMask, 0); + + PixMapHandle pmHandle = GetGWorldPixMap ((GWorldPtr)pMask); + BitMapPtr sourcePtr = pContext->getBitmap (); + + if (sourcePtr && pmHandle && LockPixels (pmHandle)) + { + RGBColor oldForeColor, oldBackColor; + GetForeColor (&oldForeColor); + GetBackColor (&oldBackColor); + + RGBColor col; + CColor2RGBColor (transparentCColor, col); + RGBBackColor (&col); + + ::ForeColor (blackColor); + + Rect src = r; + src.left += offset.h; + src.right += offset.h; + src.top += offset.v; + src.bottom += offset.v; + + CopyBits (sourcePtr, (BitMapPtr)*pmHandle, &src, &r, srcCopy, 0L); + + RGBForeColor (&oldForeColor); + RGBBackColor (&oldBackColor); + + UnlockPixels (pmHandle); + } + + pContext->releaseBitmap (); + + SetGWorld (oldPort, oldDevice); + } + #endif + +#else + // todo: implement me! +#endif +} + +//----------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +#if MOTIF +//----------------------------------------------------------------------------- +void* CBitmap::createPixmapFromXpm (CDrawContext *pContext) +{ + if (!ppDataXpm) + return NULL; + + Pixmap pixmap = 0; + XpmAttributes attributes; + + attributes.valuemask = XpmCloseness|XpmColormap|XpmVisual|XpmDepth; + attributes.closeness = 100000; + attributes.visual = pContext->getVisual (); + attributes.depth = pContext->getDepth (); + + // use the pContext colormap instead of the DefaultColormapOfScreen + attributes.colormap = pContext->getColormap (); + + int status; + if (attributes.depth == 8 || attributes.depth == 24) + { +#if USE_XPM + status = XpmCreatePixmapFromData (pContext->pDisplay, + (Drawable)pContext->pWindow, ppDataXpm, &pixmap, NULL, &attributes); + if (status != XpmSuccess) + { + fprintf (stderr, "createPixmapFromXpm-> XpmError: %s\n", XpmGetErrorString(status)); + return NULL; + } +#else + status = createPixmapFromData (pContext->pDisplay, + (Drawable)pContext->pWindow, ppDataXpm, &pixmap, &attributes); + if (!status) + { + fprintf (stderr, "createPixmapFromXpm-> Error\n"); + return NULL; + } +#endif + } + else + { + fprintf (stderr, "createPixmapFromXpm-> Depth %d not supported\n", attributes.depth); + return NULL; + } + +#if DEVELOPMENT + fprintf (stderr, "createPixmapFromXpm-> There are %d requested colors\n", attributes.ncolors); +#endif + + return (void*)pixmap; +} +#endif + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +#if BEOS +//---------------------------------------------------------------------------- + +BResources* CBitmap::resourceFile = 0; + +//---------------------------------------------------------------------------- + +void CBitmap::closeResource () +{ + if (resourceFile) + { + delete resourceFile; + resourceFile = 0; + } +} + +//---------------------------------------------------------------------------- +#endif + + +//----------------------------------------------------------------------------- +// CDragContainer Implementation +//----------------------------------------------------------------------------- +CDragContainer::CDragContainer (void* platformDrag) +: platformDrag (platformDrag) +, nbItems (0) +, iterator (0) +, lastItem (0) +{ + #if MAC + DragRef dragRef = (DragRef)platformDrag; + UInt16 numItems; + CountDragItems (dragRef, &numItems); + nbItems = numItems; + + #elif WINDOWS + + IDataObject* dataObject = (IDataObject*)platformDrag; + STGMEDIUM medium; + FORMATETC formatTEXTDrop = {CF_TEXT, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL}; + FORMATETC formatHDrop = {CF_HDROP, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL}; + + long type = 0; // 0 = file, 1 = text + + HRESULT hr = dataObject->GetData (&formatTEXTDrop, &medium); + if (hr != S_OK) + hr = dataObject->GetData (&formatHDrop, &medium); + else + type = 1; + + if (type == 0) + nbItems = (long)DragQueryFile ((HDROP)medium.hGlobal, 0xFFFFFFFFL, 0, 0); + else + nbItems = 1; + + #else + #endif +} + +//----------------------------------------------------------------------------- +CDragContainer::~CDragContainer () +{ + if (lastItem) + { + free (lastItem); + lastItem = 0; + } +} + +//----------------------------------------------------------------------------- +long CDragContainer::getType (long idx) const +{ + #if MACX + DragItemRef itemRef; + if (GetDragItemReferenceNumber ((DragRef)platformDrag, idx+1, &itemRef) == noErr) + { + FlavorType type; + if (GetFlavorType ((DragRef)platformDrag, itemRef, 1, &type) == noErr) + { + if (type == flavorTypeHFS || type == typeFileURL) + return kFile; + else if (type == 'TEXT' || type == 'XML ') + return kText; + } + } + #elif WINDOWS + IDataObject* dataObject = (IDataObject*)platformDrag; + STGMEDIUM medium; + FORMATETC formatTEXTDrop = {CF_TEXT, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL}; + FORMATETC formatHDrop = {CF_HDROP, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL}; + + long type = 0; // 0 = file, 1 = text + + HRESULT hr = dataObject->GetData (&formatTEXTDrop, &medium); + if (hr != S_OK) + hr = dataObject->GetData (&formatHDrop, &medium); + else + type = 1; + if (type == 0) + return kFile; + else + return kText; + + #else + // not implemented + #endif + return kUnknown; +} + +//----------------------------------------------------------------------------- +void* CDragContainer::first (long& size, long& type) +{ + iterator = 0; + return next (size, type); +} + +//----------------------------------------------------------------------------- +void* CDragContainer::next (long& size, long& type) +{ + if (lastItem) + { + free (lastItem); + lastItem = 0; + } + size = 0; + type = kUnknown; + #if MACX + long flavorSize; + DragItemRef itemRef; + if (GetDragItemReferenceNumber ((DragRef)platformDrag, ++iterator, &itemRef) == noErr) + { + FlavorType flavorType; + if (GetFlavorType ((DragRef)platformDrag, itemRef, 1, &flavorType) == noErr) + { + if (flavorType == flavorTypeHFS) + { + HFSFlavor hfs; + if (GetFlavorDataSize ((DragRef)platformDrag, itemRef, flavorTypeHFS, &flavorSize) == noErr) + { + GetFlavorData ((DragRef)platformDrag, itemRef, flavorTypeHFS, &hfs, &flavorSize, 0L); + + FSRef fsRef; + if (FSpMakeFSRef (&hfs.fileSpec, &fsRef) == noErr) + { + lastItem = malloc (PATH_MAX); + if (FSRefMakePath (&fsRef, (unsigned char*)lastItem, PATH_MAX) == noErr) + { + size = strlen ((const char*)lastItem); + type = kFile; + return lastItem; + } + } + } + } + else if (flavorType == typeFileURL) + { + if (GetFlavorDataSize ((DragRef)platformDrag, itemRef, typeFileURL, &flavorSize) == noErr) + { + void* bytes = malloc (flavorSize); + if (GetFlavorData ((DragRef)platformDrag, itemRef, typeFileURL, bytes, &flavorSize, 0L) == noErr) + { + CFURLRef url = CFURLCreateWithBytes (NULL, (const unsigned char*)bytes, flavorSize, kCFStringEncodingUTF8, NULL); + lastItem = malloc (PATH_MAX); + CFURLGetFileSystemRepresentation (url, false, (unsigned char*)lastItem, PATH_MAX); + CFRelease (url); + type = kFile; + } + free (bytes); + return lastItem; + } + } + else + { + if (GetFlavorDataSize ((DragRef)platformDrag, itemRef, flavorType, &flavorSize) == noErr) + { + lastItem = malloc (flavorSize + 1); + ((char*)lastItem)[0] = 0; + if (GetFlavorData ((DragRef)platformDrag, itemRef, flavorType, lastItem, &flavorSize, 0) == noErr) + { + ((char*)lastItem)[flavorSize] = 0; + size = flavorSize; + if (flavorType == 'TEXT' || flavorType == 'XML ') + type = kText; + return lastItem; + } + } + else + { + if (GetFlavorDataSize ((DragRef)platformDrag, itemRef, 'TEXT', &flavorSize) == noErr) + { + lastItem = malloc (flavorSize + 1); + ((char*)lastItem)[0] = 0; + if (GetFlavorData ((DragRef)platformDrag, itemRef, 'TEXT', lastItem, &flavorSize, 0) == noErr) + { + ((char*)lastItem)[flavorSize] = 0; + size = flavorSize; + type = kText; + return lastItem; + } + } + } + + } + } + } + #elif WINDOWS + IDataObject* dataObject = (IDataObject*)platformDrag; + void* hDrop = 0; + STGMEDIUM medium; + FORMATETC formatTEXTDrop = {CF_TEXT, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL}; + FORMATETC formatHDrop = {CF_HDROP, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL}; + + long wintype = 0; // 0 = file, 1 = text + + HRESULT hr = dataObject->GetData (&formatTEXTDrop, &medium); + if (hr != S_OK) + hr = dataObject->GetData (&formatHDrop, &medium); + else + wintype = 1; + if (hr == S_OK) + hDrop = medium.hGlobal; + + if (hDrop) + { + if (wintype == 0) + { + char fileDropped[1024]; + + long nbRealItems = 0; + if (DragQueryFile ((HDROP)hDrop, iterator++, fileDropped, sizeof (fileDropped))) + { + // resolve link + checkResolveLink (fileDropped, fileDropped); + lastItem = malloc (strlen (fileDropped)+1); + strcpy ((char*)lastItem, fileDropped); + size = (long)strlen ((const char*)lastItem); + type = kFile; + return lastItem; + } + } + else if (iterator++ == 0) + //---TEXT---------------------------- + { + void* data = GlobalLock (medium.hGlobal); + long dataSize = (long)GlobalSize (medium.hGlobal); + if (data && dataSize) + { + lastItem = malloc (dataSize+1); + memcpy (lastItem, data, dataSize); + size = dataSize; + type = kText; + } + + GlobalUnlock (medium.hGlobal); + if (medium.pUnkForRelease) + medium.pUnkForRelease->Release (); + else + GlobalFree (medium.hGlobal); + return lastItem; + } + } + #else + // not implemented + #endif + return NULL; +} + +END_NAMESPACE_VSTGUI + + +#if WINDOWS + +#if USE_MOUSE_HOOK +HHOOK MouseHook = 0L; + +LRESULT CALLBACK MouseProc (int nCode, WPARAM wParam, LPARAM lParam) +{ + if (nCode < 0) + return CallNextHookEx (MouseHook, nCode, wParam, lParam); + + if (wParam == 522) + { + MOUSEHOOKSTRUCT* struct2 = (MOUSEHOOKSTRUCT*) lParam; + if (struct2->hwnd == ???) + { + return -1; + } + } + return CallNextHookEx (MouseHook, nCode, wParam, lParam); +} +#endif + +//----------------------------------------------------------------------------- +bool InitWindowClass () +{ + gUseCount++; + if (gUseCount == 1) + { + sprintf (gClassName, "Plugin%p", GetInstance ()); + + WNDCLASS windowClass; + windowClass.style = CS_GLOBALCLASS;//|CS_OWNDC; // add Private-DC constant + + windowClass.lpfnWndProc = WindowProc; + windowClass.cbClsExtra = 0; + windowClass.cbWndExtra = 0; + windowClass.hInstance = GetInstance (); + windowClass.hIcon = 0; + + windowClass.hCursor = LoadCursor (NULL, IDC_ARROW); + windowClass.hbrBackground = GetSysColorBrush (COLOR_BTNFACE); + windowClass.lpszMenuName = 0; + windowClass.lpszClassName = gClassName; + RegisterClass (&windowClass); + + #if USE_MOUSE_HOOK + MouseHook = SetWindowsHookEx (WH_MOUSE, MouseProc, GetInstance (), 0); + #endif + + bSwapped_mouse_buttons = GetSystemMetrics (SM_SWAPBUTTON) > 0; + } + return true; +} + +//----------------------------------------------------------------------------- +void ExitWindowClass () +{ + gUseCount--; + if (gUseCount == 0) + { + UnregisterClass (gClassName, GetInstance ()); + + #if USE_MOUSE_HOOK + if (MouseHook) + { + UnhookWindowsHookEx (MouseHook); + MouseHook = 0L; + } + #endif + } +} + +//----------------------------------------------------------------------------- +LONG_PTR WINAPI WindowProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + USING_NAMESPACE_VSTGUI + CFrame* pFrame = (CFrame*)GetWindowLongPtr (hwnd, GWLP_USERDATA); + + switch (message) + { + case WM_MOUSEWHEEL: + { + if (pFrame) + { + VSTGUI_CDrawContext context (pFrame, 0, hwnd); + VSTGUI_CPoint where (LOWORD (lParam), HIWORD (lParam)); + short zDelta = (short) HIWORD(wParam); + pFrame->onWheel (&context, where, (float)zDelta / WHEEL_DELTA); + } + break; + } + case WM_CTLCOLOREDIT: + { + if (pFrame) + { + VSTGUI_CTextEdit *textEdit = (VSTGUI_CTextEdit*)pFrame->getFocusView (); + if (textEdit) + { + VSTGUI_CColor fontColor = textEdit->getFontColor (); + SetTextColor ((HDC) wParam, RGB (fontColor.red, fontColor.green, fontColor.blue)); + + VSTGUI_CColor backColor = textEdit->getBackColor (); + SetBkColor ((HDC) wParam, RGB (backColor.red, backColor.green, backColor.blue)); + + if (textEdit->platformFontColor) + DeleteObject (textEdit->platformFontColor); + textEdit->platformFontColor = CreateSolidBrush (RGB (backColor.red, backColor.green, backColor.blue)); + return (LRESULT)(textEdit->platformFontColor); + } + } + } + break; + + case WM_PAINT: + { + RECT r; + if (pFrame && GetUpdateRect (hwnd, &r, false)) + { + PAINTSTRUCT ps; + HDC hdc = BeginPaint (hwnd, &ps); + + VSTGUI_CDrawContext* context = pFrame->getBackBuffer (); + if (!context) + context = new VSTGUI_CDrawContext (pFrame, hdc, hwnd); + + CRect updateRect (ps.rcPaint.left, ps.rcPaint.top, ps.rcPaint.right, ps.rcPaint.bottom); + pFrame->drawRect (context, updateRect); + + if (pFrame->getBackBuffer ()) + { + VSTGUI_CDrawContext localContext (pFrame, hdc, hwnd); + pFrame->getBackBuffer ()->copyFrom (&localContext, updateRect, CPoint (ps.rcPaint.left, ps.rcPaint.top)); + } + else + context->forget (); + + EndPaint (hwnd, &ps); + return 0; + } + } + break; + + case WM_MEASUREITEM : + { + MEASUREITEMSTRUCT* ms = (MEASUREITEMSTRUCT*)lParam; + if (pFrame && ms && ms->CtlType == ODT_MENU && ms->itemData) + { + VSTGUI_COptionMenu* optMenu = (VSTGUI_COptionMenu*)pFrame->getFocusView (); + if (optMenu && optMenu->getScheme ()) + { + VSTGUI_CPoint size; + + VSTGUI_CDrawContext context (pFrame, 0, hwnd); + optMenu->getScheme ()->getItemSize ((const char*)ms->itemData, &context, size); + + ms->itemWidth = size.h; + ms->itemHeight = size.v; + return TRUE; + } + } + } + break; + + case WM_DRAWITEM : + { + DRAWITEMSTRUCT* ds = (DRAWITEMSTRUCT*)lParam; + if (pFrame && ds && ds->CtlType == ODT_MENU && ds->itemData) + { + VSTGUI_COptionMenu* optMenu = (VSTGUI_COptionMenu*)pFrame->getFocusView (); + if (optMenu && optMenu->getScheme ()) + { + long state = 0; + if (ds->itemState & ODS_CHECKED) + state |= VSTGUI_COptionMenuScheme::kChecked; + if (ds->itemState & ODS_DISABLED) // ODS_GRAYED? + state |= VSTGUI_COptionMenuScheme::kDisabled; + if (ds->itemState & ODS_SELECTED) + state |= VSTGUI_COptionMenuScheme::kSelected; + + CRect r (ds->rcItem.left, ds->rcItem.top, ds->rcItem.right, ds->rcItem.bottom); + r.bottom++; + + VSTGUI_CDrawContext* pContext = new VSTGUI_CDrawContext (pFrame, ds->hDC, 0); + optMenu->getScheme ()->drawItem ((const char*)ds->itemData, ds->itemID, state, pContext, r); + delete pContext; + return TRUE; + } + } + } + break; + + case WM_RBUTTONDOWN: + case WM_MBUTTONDOWN: + case WM_LBUTTONDOWN: + if (pFrame) + { + #if 1 + VSTGUI_CDrawContext context (pFrame, 0, hwnd); + VSTGUI_CPoint where (LOWORD (lParam), HIWORD (lParam)); + pFrame->mouse (&context, where); + #else + VSTGUI_CPoint where (LOWORD (lParam), HIWORD (lParam)); + pFrame->mouse ((VSTGUI_CDrawContext*)0, where); + #endif + + return 0; + } + break; + + case WM_DESTROY: + if (pFrame) + { + pFrame->setOpenFlag (false); + pFrame->setParentSystemWindow (0); + } + break; + } + return DefWindowProc (hwnd, message, wParam, lParam); +} + +//----------------------------------------------------------------------------- +HANDLE CreateMaskBitmap (CDrawContext* pContext, CRect& rect, CColor transparentColor) +{ + HBITMAP pMask = CreateBitmap (rect.width (), rect.height (), 1, 1, 0); + + HDC hSrcDC = (HDC)pContext->getSystemContext (); + HDC hDstDC = CreateCompatibleDC (hSrcDC); + SelectObject (hDstDC, pMask); + + COLORREF oldBkColor = SetBkColor (hSrcDC, RGB (transparentColor.red, transparentColor.green, transparentColor.blue)); + + BitBlt (hDstDC, 0, 0, rect.width (), rect.height (), hSrcDC, rect.left, rect.top, SRCCOPY); + + SetBkColor (hSrcDC, oldBkColor); + DeleteDC (hDstDC); + + return pMask; +} + +//----------------------------------------------------------------------------- +void DrawTransparent (CDrawContext* pContext, CRect& rect, const CPoint& offset, + HDC hdcBitmap, POINT ptSize, HBITMAP pMask, COLORREF color) +{ + if (pMask == NULL) + { + if (pfnTransparentBlt) + { + HDC hdcSystemContext = (HDC)pContext->getSystemContext (); + long x, y; + long width = rect.width (); + long height = rect.height (); + + x = rect.x + pContext->offset.x; + y = rect.y + pContext->offset.y; + + pfnTransparentBlt (hdcSystemContext, x, y, width, height, hdcBitmap, offset.x, offset.y, width, height, color); + } + else + { + // OPTIMIZATION: we only do four instead of EIGHT blits + HDC hdcSystemContext = (HDC)pContext->getSystemContext (); + HDC hdcMask = CreateCompatibleDC (hdcSystemContext); + + COLORREF crOldBack = SetBkColor (hdcSystemContext, 0xFFFFFF); + COLORREF crOldText = SetTextColor (hdcSystemContext, 0x000000); + HBITMAP bmMaskOld, maskMap; + + long x, y; + long width = rect.width (); + long height = rect.height (); + + x = rect.x + pContext->offset.x; + y = rect.y + pContext->offset.y; + + // Create mask-bitmap in memory + maskMap = CreateBitmap (width, height, 1, 1, NULL); + bmMaskOld = (HBITMAP)SelectObject (hdcMask, maskMap); + + // Copy bitmap into mask-bitmap and converting it into a black'n'white mask + SetBkColor (hdcBitmap, color); + BitBlt (hdcMask, 0, 0, width, height, hdcBitmap, offset.x, offset.y, SRCCOPY); + + // Copy image masked to screen + BitBlt (hdcSystemContext, x, y, width, height, hdcBitmap, offset.x, offset.y, SRCINVERT); + BitBlt (hdcSystemContext, x, y, width, height, hdcMask, 0, 0, SRCAND); + BitBlt (hdcSystemContext, x, y, width, height, hdcBitmap, offset.x, offset.y, SRCINVERT); + + DeleteObject (SelectObject (hdcMask, bmMaskOld)); + DeleteDC (hdcMask); + + SetBkColor (hdcSystemContext, crOldBack); + SetTextColor (hdcSystemContext, crOldText); + } + } + else + { + // OPTIMIZATION: we only do five instead of EIGHT blits + HDC hdcSystemContext = (HDC)pContext->getSystemContext (); + HDC hdcMask = CreateCompatibleDC (hdcSystemContext); + HDC hdcMem = CreateCompatibleDC (hdcSystemContext); + HBITMAP bmAndMem; + HBITMAP bmMemOld, bmMaskOld; + + long x, y; + long width = rect.width (); + long height = rect.height (); + + x = rect.x + pContext->offset.x; + y = rect.y + pContext->offset.y; + + bmAndMem = CreateCompatibleBitmap(hdcSystemContext, width, height); + + bmMaskOld = (HBITMAP)SelectObject (hdcMask, pMask); + bmMemOld = (HBITMAP)SelectObject (hdcMem, bmAndMem); + + BitBlt (hdcMem, 0, 0, width, height, hdcSystemContext, x, y, SRCCOPY); + BitBlt (hdcMem, 0, 0, width, height, hdcBitmap, offset.x, offset.y, SRCINVERT); + BitBlt (hdcMem, 0, 0, width, height, hdcMask, offset.x, offset.y, SRCAND); + BitBlt (hdcMem, 0, 0, width, height, hdcBitmap, offset.x, offset.y, SRCINVERT); + BitBlt (hdcSystemContext, x, y, width, height, hdcMem, 0, 0, SRCCOPY); + + DeleteObject (SelectObject (hdcMem, bmMemOld)); + SelectObject (hdcMask, bmMaskOld); + + DeleteDC (hdcMem); + DeleteDC(hdcMask); + } +} +#endif + +//----------------------------------------------------------------------------- +#if MAC || MOTIF || BEOS +BEGIN_NAMESPACE_VSTGUI +// return a degre value between [0, 360 * 64[ +long convertPoint2Angle (CPoint &pm, CPoint &pt) +{ + long angle; + if (pt.h == pm.h) + { + if (pt.v < pm.v) + angle = 5760; // 90 * 64 + else + angle = 17280; // 270 * 64 + } + else if (pt.v == pm.v) + { + if (pt.h < pm.h) + angle = 11520; // 180 * 64 + else + angle = 0; + } + else + { + // 3666.9299 = 180 * 64 / pi + angle = (long)(3666.9298 * atan ((double)(pm.v - pt.v) / (double)(pt.h - pm.h))); + + if (pt.v < pm.v) + { + if (pt.h < pm.h) + angle += 11520; // 180 * 64 + } + else + { + if (pt.h < pm.h) + angle += 11520; // 180 * 64 + else + angle += 23040; // 360 * 64 + } + } + return angle; +} +END_NAMESPACE_VSTGUI +#endif + + +//----------------------------------------------------------------------------- +#if MOTIF +XRectangle rect; +static bool first = true; + +//----------------------------------------------------------------------------- +void _destroyCallback (Widget widget, XtPointer clientData, XtPointer callData) +{ + CFrame* pFrame = (CFrame*)clientData; + if (pFrame) + { + pFrame->freeGc (); + pFrame->setOpenFlag (false); + pFrame->pSystemWindow = 0; + } +} + +//----------------------------------------------------------------------------- +void _drawingAreaCallback (Widget widget, XtPointer clientData, XtPointer callData) +{ + CFrame* pFrame = (CFrame*)clientData; + XmDrawingAreaCallbackStruct *cbs = (XmDrawingAreaCallbackStruct *)callData; + XEvent *event = cbs->event; + + //------------------------------------- + if (cbs->reason == XmCR_INPUT) + { + if (event->xbutton.type == ButtonRelease) + return; + + if (event->xbutton.type != ButtonPress && + event->xbutton.type != KeyPress) + return; + + Window pWindow = pFrame->getWindow (); + CDrawContext context (pFrame, pFrame->getGC (), (void*)pWindow); + + CPoint where (event->xbutton.x, event->xbutton.y); + pFrame->mouse (&context, where); + } + //------------------------------------ + else if (cbs->reason == XmCR_EXPOSE) + { + XExposeEvent *expose = (XExposeEvent*)event; +#if TEST_REGION + rect.x = expose->x; + rect.y = expose->y; + rect.width = expose->width; + rect.height = expose->height; + if (first) + { + pFrame->region = XCreateRegion (); + first = false; + } + + XUnionRectWithRegion (&rect, pFrame->region, pFrame->region); +#endif + if (expose->count == 0) + { +#if TEST_REGION + XSetRegion (expose->pDisplay, pFrame->getGC (), pFrame->region); + + // add processus of static first to set the region to max after a total draw and destroy it the first time... +#endif + pFrame->draw (); + +#if TEST_REGION + rect.x = 0; + rect.y = 0; + rect.width = pFrame->getWidth (); + rect.height = pFrame->getHeight (); + XUnionRectWithRegion (&rect, pFrame->region, pFrame->region); + XSetRegion (expose->pDisplay, pFrame->getGC (), pFrame->region); + XDestroyRegion (pFrame->region); + first = true; +#endif + } + } +} + +//----------------------------------------------------------------------------- +void _eventHandler (Widget w, XtPointer clientData, XEvent *event, char *p) +{ + switch (event->type) + { + case EnterNotify: + break; + + case LeaveNotify: + XCrossingEvent *xevent = (XCrossingEvent*)event; + + CFrame* pFrame = (CFrame*)clientData; + if (pFrame && pFrame->getFocusView ()) + { + if (xevent->x < 0 || xevent->x >= pFrame->getWidth () || + xevent->y < 0 || xevent->y >= pFrame->getHeight ()) + { + // if button pressed => don't defocus + if (xevent->state & (Button1Mask|Button2Mask|Button3Mask)) + break; + pFrame->getFocusView ()->looseFocus (); + pFrame->setFocusView (0); + } + } + break; + } +} + +//----------------------------------------------------------------------------- +long getIndexColor8Bit (CColor color, Display *pDisplay, Colormap colormap) +{ + long i; + + // search in pre-loaded color + for (i = 0; i < CDrawContext::nbNewColor; i++) + { + if ((paletteNewColor[i].red == color.red) && + (paletteNewColor[i].green == color.green) && + (paletteNewColor[i].blue == color.blue)) + return paletteNewColor[i].alpha; + } + + // Allocate new color cell + XColor xcolor; + int red = color.red << 8; + int green = color.green << 8; + int blue = color.blue << 8; + xcolor.red = red; + xcolor.green = green; + xcolor.blue = blue; + if (XAllocColor (pDisplay, colormap, &xcolor)) + { + // store this new color + if (CDrawContext::nbNewColor < 255) + { + paletteNewColor[CDrawContext::nbNewColor].red = color.red; + paletteNewColor[CDrawContext::nbNewColor].green = color.green; + paletteNewColor[CDrawContext::nbNewColor].blue = color.blue; + paletteNewColor[CDrawContext::nbNewColor].alpha = xcolor.pixel; + CDrawContext::nbNewColor++; + } + return xcolor.pixel; + } + + // take the nearest color + int diff; + int min = 3 * 65536; + int index = 0; + + XColor xcolors[256]; + for (i = 0; i < 256; i++) + xcolors[i].pixel = i; + + XQueryColors (pDisplay, colormap, xcolors, 256); + + for (i = 0; i < 256; i++) + { + diff = fabs (xcolors[i].red - red) + fabs (xcolors[i].green - green) + fabs (xcolors[i].blue - blue); + if (diff < min) + { + min = diff; + index = i; + } + } + + // store this new color + if (CDrawContext::nbNewColor < 255) + { + paletteNewColor[CDrawContext::nbNewColor].red = color.red; + paletteNewColor[CDrawContext::nbNewColor].green = color.green; + paletteNewColor[CDrawContext::nbNewColor].blue = color.blue; + paletteNewColor[CDrawContext::nbNewColor].alpha = index; + CDrawContext::nbNewColor++; + } + return (index); +} + +//----------------------------------------------------------------------------- +bool xpmGetValues (char **ppDataXpm, long *pWidth, long *pHeight, long *pNcolor, long *pCpp) +{ + // get the size of the pixmap + sscanf (ppDataXpm[0], "%d %d %d %d", pWidth, pHeight, pNcolor, pCpp); + + return true; +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +#elif BEOS +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +PlugView::PlugView (BRect frame, CFrame* cframe) + : BView (frame, NULL, B_FOLLOW_ALL, B_WILL_DRAW), cframe (cframe) +{ + SetViewColor (B_TRANSPARENT_COLOR); +} + +//----------------------------------------------------------------------------- +void PlugView::Draw (BRect updateRect) +{ + cframe->draw (); +} + +//----------------------------------------------------------------------------- +void PlugView::MouseDown (BPoint where) +{ + BMessage* m = Window ()->CurrentMessage (); + int32 buttons; + m->FindInt32 ("buttons", &buttons); + + if (buttons & B_SECONDARY_MOUSE_BUTTON && !Window ()->IsFront () && !Window ()->IsFloating ()) + { + Window ()->Activate (true); + return; + } + + CDrawContext context (cframe, this, NULL); + CPoint here (where.x, where.y); + cframe->mouse (&context, here); +} + +//----------------------------------------------------------------------------- +void PlugView::MessageReceived (BMessage *msg) +{ + if (msg->what == B_SIMPLE_DATA) + { + int32 countMax = 0; // max number of references. Possibly not all valid... + type_code typeFound; + msg->GetInfo ("refs", &typeFound, &countMax); + if (countMax > 0) + { + entry_ref item; + int nbRealItems = 0; + char ** ptrItems = new char* [countMax]; + for (int k = 0; k < countMax; k++) + if (msg->FindRef ("refs", k, &item) == B_OK) + { + BPath path (&item); + if (path.InitCheck () == B_OK) + ptrItems[nbRealItems++] = strdup (path.Path ()); + } + BPoint bwhere = msg->DropPoint (); + ConvertFromScreen (&bwhere); + CPoint where (bwhere.x, bwhere.y); + cframe->onDrop ((void**)ptrItems, nbRealItems, kDropFiles, where); + for (long i = 0; i < nbRealItems; i++) + free (ptrItems[i]); + delete []ptrItems; + } + } + else BView::MessageReceived (msg); +} + +#endif + + +//----------------------------------------------------------------------------- +#if WINDOWS +//----------------------------------------------------------------------------- +// Drop Implementation +//----------------------------------------------------------------------------- +class CDropTarget : public IDropTarget +{ +public: + CDropTarget (VSTGUI_CFrame* pFrame); + virtual ~CDropTarget (); + + // IUnknown + STDMETHOD (QueryInterface) (REFIID riid, void** object); + STDMETHOD_ (ULONG, AddRef) (void); + STDMETHOD_ (ULONG, Release) (void); + + // IDropTarget + STDMETHOD (DragEnter) (IDataObject *dataObject, DWORD keyState, POINTL pt, DWORD *effect); + STDMETHOD (DragOver) (DWORD keyState, POINTL pt, DWORD *effect); + STDMETHOD (DragLeave) (void); + STDMETHOD (Drop) (IDataObject *dataObject, DWORD keyState, POINTL pt, DWORD *effect); +private: + long refCount; + bool accept; + VSTGUI_CFrame* pFrame; +}; + +//----------------------------------------------------------------------------- +// CDropTarget +//----------------------------------------------------------------------------- +void* createDropTarget (VSTGUI_CFrame* pFrame) +{ + return new CDropTarget (pFrame); +} + +//----------------------------------------------------------------------------- +CDropTarget::CDropTarget (VSTGUI_CFrame* pFrame) +: refCount (0), pFrame (pFrame) +{ +} + +//----------------------------------------------------------------------------- +CDropTarget::~CDropTarget () +{ +} + +//----------------------------------------------------------------------------- +STDMETHODIMP CDropTarget::QueryInterface (REFIID riid, void** object) +{ + if (riid == IID_IDropTarget || riid == IID_IUnknown) + { + *object = this; + AddRef (); + return NOERROR; + } + *object = 0; + return E_NOINTERFACE; +} + +//----------------------------------------------------------------------------- +STDMETHODIMP_(ULONG) CDropTarget::AddRef (void) +{ + return ++refCount; +} + +//----------------------------------------------------------------------------- +STDMETHODIMP_(ULONG) CDropTarget::Release (void) +{ + refCount--; + if (refCount <= 0) + { + delete this; + return 0; + } + return refCount; +} + +//----------------------------------------------------------------------------- +STDMETHODIMP CDropTarget::DragEnter (IDataObject *dataObject, DWORD keyState, POINTL pt, DWORD *effect) +{ + if (dataObject && pFrame) + { + gDragContainer = new CDragContainer (dataObject); + CDrawContext* context = pFrame->createDrawContext (); + VSTGUI_CPoint where; + pFrame->getMouseLocation (context, where); + pFrame->onDragEnter (context, gDragContainer, where); + context->forget (); + *effect = DROPEFFECT_MOVE; + } + else + *effect = DROPEFFECT_NONE; + return S_OK; +} + +//----------------------------------------------------------------------------- +STDMETHODIMP CDropTarget::DragOver (DWORD keyState, POINTL pt, DWORD *effect) +{ + if (gDragContainer && pFrame) + { + CDrawContext* context = pFrame->createDrawContext (); + VSTGUI_CPoint where; + pFrame->getMouseLocation (context, where); + pFrame->onDragMove (context, gDragContainer, where); + context->forget (); + *effect = DROPEFFECT_MOVE; + } + return S_OK; +} + +//----------------------------------------------------------------------------- +STDMETHODIMP CDropTarget::DragLeave (void) +{ + if (gDragContainer && pFrame) + { + CDrawContext* context = pFrame->createDrawContext (); + VSTGUI_CPoint where; + pFrame->getMouseLocation (context, where); + pFrame->onDragLeave (context, gDragContainer, where); + context->forget (); + gDragContainer->forget (); + gDragContainer = 0; + } + return S_OK; +} + +//----------------------------------------------------------------------------- +STDMETHODIMP CDropTarget::Drop (IDataObject *dataObject, DWORD keyState, POINTL pt, DWORD *effect) +{ + if (gDragContainer && pFrame) + { + CDrawContext* context = pFrame->createDrawContext (); + VSTGUI_CPoint where; + pFrame->getMouseLocation (context, where); + pFrame->onDrop (context, gDragContainer, where); + context->forget (); + gDragContainer->forget (); + gDragContainer = 0; + } + return S_OK; +} + +//----------------------------------------------------------------------------- +bool checkResolveLink (const char* nativePath, char* resolved) +{ + const char* ext = strrchr (nativePath, '.'); + if (ext && _stricmp (ext, ".lnk") == NULL) + { + IShellLink* psl; + IPersistFile* ppf; + WIN32_FIND_DATA wfd; + HRESULT hres; + WORD wsz[2048]; + + // Get a pointer to the IShellLink interface. + hres = CoCreateInstance (CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, + IID_IShellLink, (void**)&psl); + if (SUCCEEDED (hres)) + { + // Get a pointer to the IPersistFile interface. + hres = psl->QueryInterface (IID_IPersistFile, (void**)&ppf); + if (SUCCEEDED (hres)) + { + // Ensure string is Unicode. + MultiByteToWideChar (CP_ACP, 0, nativePath, -1, (LPWSTR)wsz, 2048); + // Load the shell link. + hres = ppf->Load ((LPWSTR)wsz, STGM_READ); + if (SUCCEEDED (hres)) + { + hres = psl->Resolve (0, MAKELONG (SLR_ANY_MATCH | SLR_NO_UI, 500)); + if (SUCCEEDED (hres)) + { + // Get the path to the link target. + hres = psl->GetPath (resolved, 2048, &wfd, SLGP_SHORTPATH); + } + } + // Release pointer to IPersistFile interface. + ppf->Release (); + } + // Release pointer to IShellLink interface. + psl->Release (); + } + return SUCCEEDED(hres); + } + return false; +} + +#elif MAC +BEGIN_NAMESPACE_VSTGUI + +#if MAC_OLD_DRAG +//----------------------------------------------------------------------------- +// Drop Implementation +//----------------------------------------------------------------------------- +#if !MACX +#include "Drag.h" +#endif + +pascal static short drag_receiver (WindowPtr w, void* ref, DragReference drag); +pascal static OSErr drag_tracker (DragTrackingMessage message, WindowRef theWindow, void *handlerRefCon, DragRef theDrag); + +static DragReceiveHandlerUPP drh; +static DragTrackingHandlerUPP dth; + +static bool gEventDragWorks = false; + +//------------------------------------------------------------------------------------------- +void install_drop (CFrame *frame) +{ + drh = NewDragReceiveHandlerUPP (drag_receiver); + dth = NewDragTrackingHandlerUPP (drag_tracker); +#if TARGET_API_MAC_CARBON + InstallReceiveHandler (drh, (WindowRef)(frame->getSystemWindow ()), (void*)frame); + InstallTrackingHandler (dth, (WindowRef)(frame->getSystemWindow ()), (void*)frame); +#else + InstallReceiveHandler (drh, (GrafPort*)(frame->getSystemWindow ()), (void*)frame); + InstallTrackingHandler (dth, (GrafPort*)(frame->getSystemWindow ()), (void*)frame); +#endif +} + +//------------------------------------------------------------------------------------------- +void remove_drop (CFrame *frame) +{ +#if TARGET_API_MAC_CARBON + RemoveReceiveHandler (drh, (WindowRef)(frame->getSystemWindow ())); + RemoveTrackingHandler (dth, (WindowRef)(frame->getSystemWindow ())); +#else + RemoveReceiveHandler (drh, (GrafPort*)(frame->getSystemWindow ())); + RemoveTrackingHandler (dth, (GrafPort*)(frame->getSystemWindow ())); +#endif + DisposeDragReceiveHandlerUPP (drh); + DisposeDragTrackingHandlerUPP (dth); +} + +// drag tracking for visual feedback +pascal OSErr drag_tracker (DragTrackingMessage message, WindowRef theWindow, void *handlerRefCon, DragRef dragRef) +{ + #if QUARTZ + if (gEventDragWorks) + return noErr; + #endif + + CFrame* frame = (CFrame*)handlerRefCon; + switch (message) + { + case kDragTrackingEnterWindow: + { + if (gDragContainer) + gDragContainer->forget (); + gDragContainer = new CDragContainer (dragRef); + + CDrawContext* context = frame->createDrawContext (); + VSTGUI_CPoint where; + frame->setCursor (kCursorNotAllowed); + frame->getMouseLocation (context, where); + frame->onDragEnter (context, gDragContainer, where); + context->forget (); + break; + } + case kDragTrackingLeaveWindow: + { + CDrawContext* context = frame->createDrawContext (); + VSTGUI_CPoint where; + frame->getMouseLocation (context, where); + frame->onDragLeave (context, gDragContainer, where); + frame->setCursor (kCursorDefault); + context->forget (); + gDragContainer->forget (); + gDragContainer = NULL; + break; + } + case kDragTrackingInWindow: + { + CDrawContext* context = frame->createDrawContext (); + VSTGUI_CPoint where; + frame->getMouseLocation (context, where); + frame->onDragMove (context, gDragContainer, where); + context->forget (); + + break; + } + } + return noErr; +} + +//------------------------------------------------------------------------------------------- +// Drop has happened in one of our's windows. +// The data is either of our own type (flavour type stCA), or comes from +// another app. The only data from outside that is currently accepted are +// HFS-files +//------------------------------------------------------------------------------------------- +pascal short drag_receiver (WindowPtr w, void* ref, DragReference drag) +{ + #if QUARTZ + if (gEventDragWorks) + return noErr; + #endif + + if (!gDragContainer) + return noErr; + + CFrame* frame = (CFrame*) ref; + + CDrawContext* context = frame->createDrawContext (); + VSTGUI_CPoint where; + frame->getMouseLocation (context, where); + frame->onDrop (context, gDragContainer, where); + frame->setCursor (kCursorDefault); + context->forget (); + + gDragContainer->forget (); + gDragContainer = NULL; + return noErr; +} +#endif // MAC_OLD_DRAG + +#if QUARTZ +#define defControlStringMask CFSTR ("net.sourceforge.vstgui.%d") + +bool CFrame::registerWithToolbox () +{ + CFStringRef defControlString = CFStringCreateWithFormat (NULL, NULL, defControlStringMask, this); + + controlSpec.defType = kControlDefObjectClass; + controlSpec.u.classRef = NULL; + + EventTypeSpec eventTypes[] = { {kEventClassControl, kEventControlDraw}, + {kEventClassControl, kEventControlHitTest}, + {kEventClassControl, kEventControlClick}, + {kEventClassControl, kEventControlTrack}, + {kEventClassControl, kEventControlContextualMenuClick}, + {kEventClassKeyboard, kEventRawKeyDown}, + {kEventClassKeyboard, kEventRawKeyRepeat}, + {kEventClassMouse, kEventMouseWheelMoved}, + {kEventClassControl, kEventControlDragEnter}, + {kEventClassControl, kEventControlDragWithin}, + {kEventClassControl, kEventControlDragLeave}, + {kEventClassControl, kEventControlDragReceive}, + {kEventClassControl, kEventControlInitialize}, + {kEventClassControl, kEventControlGetClickActivation}, + {kEventClassControl, kEventControlGetOptimalBounds}, + {kEventClassScrollable, kEventScrollableGetInfo}, + {kEventClassScrollable, kEventScrollableScrollTo}, + {kEventClassControl, kEventControlSetFocusPart}, + {kEventClassControl, kEventControlGetFocusPart}, + }; + + ToolboxObjectClassRef controlClass = NULL; + + OSStatus status = RegisterToolboxObjectClass ( defControlString, + NULL, + GetEventTypeCount (eventTypes), + eventTypes, + CFrame::carbonEventHandler, + this, + &controlClass); + if (status == noErr) + controlSpec.u.classRef = controlClass; + + CFRelease (defControlString); + + return (controlSpec.u.classRef != NULL); +} +//------------------------------------------------------------------------------ +static short keyTable[] = { + VKEY_BACK, 0x33, + VKEY_TAB, 0x30, + VKEY_RETURN, 0x24, + VKEY_PAUSE, 0x71, + VKEY_ESCAPE, 0x35, + VKEY_SPACE, 0x31, + + VKEY_END, 0x77, + VKEY_HOME, 0x73, + + VKEY_LEFT, 0x7B, + VKEY_UP, 0x7E, + VKEY_RIGHT, 0x7C, + VKEY_DOWN, 0x7D, + VKEY_PAGEUP, 0x74, + VKEY_PAGEDOWN, 0x79, + + VKEY_PRINT, 0x69, + VKEY_ENTER, 0x4C, + VKEY_HELP, 0x72, + VKEY_DELETE, 0x75, + VKEY_NUMPAD0, 0x52, + VKEY_NUMPAD1, 0x53, + VKEY_NUMPAD2, 0x54, + VKEY_NUMPAD3, 0x55, + VKEY_NUMPAD4, 0x56, + VKEY_NUMPAD5, 0x57, + VKEY_NUMPAD6, 0x58, + VKEY_NUMPAD7, 0x59, + VKEY_NUMPAD8, 0x5B, + VKEY_NUMPAD9, 0x5C, + VKEY_MULTIPLY, 0x43, + VKEY_ADD, 0x45, + VKEY_SUBTRACT, 0x4E, + VKEY_DECIMAL, 0x41, + VKEY_DIVIDE, 0x4B, + VKEY_F1, 0x7A, + VKEY_F2, 0x78, + VKEY_F3, 0x63, + VKEY_F4, 0x76, + VKEY_F5, 0x60, + VKEY_F6, 0x61, + VKEY_F7, 0x62, + VKEY_F8, 0x64, + VKEY_F9, 0x65, + VKEY_F10, 0x6D, + VKEY_F11, 0x67, + VKEY_F12, 0x6F, + VKEY_NUMLOCK, 0x47, + VKEY_EQUALS, 0x51 +}; + +#ifndef kHIViewFeatureGetsFocusOnClick +#define kHIViewFeatureGetsFocusOnClick (1 << 8) +#endif + +bool hiToolboxAllowFocusChange = false; + +//--------------------------------------------------------------------------------------- +pascal OSStatus CFrame::carbonEventHandler (EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void *inUserData) +{ + OSStatus result = eventNotHandledErr; + CFrame* frame = (CFrame*)inUserData; + UInt32 eventClass = GetEventClass (inEvent); + UInt32 eventKind = GetEventKind (inEvent); + WindowRef window = (WindowRef)frame->getSystemWindow (); + + // WARNING : + // I've not implemented the old style resource file handling. + // Use the CFBundleCopyResourceURL... functions to get your resources. + + switch (eventClass) + { + case kEventClassScrollable: + { + switch (eventKind) + { + case kEventScrollableGetInfo: + { + HISize cs = {frame->getWidth (), frame->getHeight ()}; + SetEventParameter (inEvent, kEventParamImageSize, typeHISize, sizeof (HISize), &cs); + HIPoint origin = {frame->hiScrollOffset.x, frame->hiScrollOffset.y}; + SetEventParameter (inEvent, kEventParamOrigin, typeHIPoint, sizeof (HIPoint), &origin); + HISize lineSize = {50.0, 20.0}; + SetEventParameter(inEvent, kEventParamLineSize, typeHISize, sizeof(lineSize), &lineSize); + HIRect bounds; + HIViewGetBounds ((HIViewRef)frame->controlRef, &bounds); + SetEventParameter(inEvent, kEventParamViewSize, typeHISize, sizeof(bounds.size), &bounds.size); + result = noErr; + break; + } + case kEventScrollableScrollTo: + { + HIPoint where; + GetEventParameter(inEvent, kEventParamOrigin, typeHIPoint, NULL, sizeof(where), NULL, &where); + frame->hiScrollOffset.x = (CCoord)where.x; + frame->hiScrollOffset.y = (CCoord)where.y; + HIViewSetBoundsOrigin((HIViewRef)frame->controlRef, where.x, where.y); + HIViewSetNeedsDisplay((HIViewRef)frame->controlRef, true); + result = noErr; + break; + } + } + break; + } + case kEventClassControl: + { + switch (eventKind) + { + case kEventControlInitialize: + { + UInt32 controlFeatures = kControlSupportsDragAndDrop | kControlSupportsFocus | kControlHandlesTracking | kControlSupportsEmbedding | kHIViewFeatureGetsFocusOnClick; + SetEventParameter (inEvent, kEventParamControlFeatures, typeUInt32, sizeof (UInt32), &controlFeatures); + result = noErr; + break; + } + case kEventControlDraw: + { + CDrawContext* context = 0; + if (frame->pFrameContext) + { + context = frame->pFrameContext; + context->remember (); + } + else + { + CGContextRef cgcontext = 0; + OSStatus res = GetEventParameter (inEvent, kEventParamCGContextRef, typeCGContextRef, NULL, sizeof (cgcontext), NULL, &cgcontext); + context = new CDrawContext (frame, (res == noErr) ? cgcontext : NULL, window); + } + RgnHandle dirtyRegion; + if (GetEventParameter (inEvent, kEventParamRgnHandle, typeQDRgnHandle, NULL, sizeof (RgnHandle), NULL, &dirtyRegion) == noErr) + { + bool frameWasDirty = frame->bDirty; + Rect bounds; + GetRegionBounds (dirtyRegion, &bounds); + CRect updateRect; + Rect2CRect (bounds, updateRect); + WindowAttributes windowAttributes; + GetWindowAttributes (window, &windowAttributes); + if (!(windowAttributes & kWindowCompositingAttribute)) + updateRect.offset (-context->offsetScreen.x, -context->offsetScreen.y); + frame->drawRect (context, updateRect); + if (frameWasDirty && updateRect != frame->size) + frame->setDirty (true); + } + else + frame->draw (context); + context->forget (); + result = noErr; + break; + } + case kEventControlGetClickActivation: + { + ClickActivationResult activation = kActivateAndHandleClick; + SetEventParameter (inEvent, kEventParamClickActivation, typeClickActivationResult, sizeof (ClickActivationResult), &activation); + result = noErr; + break; + } + case kEventControlHitTest: + { + ControlPartCode code = kControlContentMetaPart; + SetEventParameter (inEvent, kEventParamControlPart, typeControlPartCode, sizeof (ControlPartCode), &code); + result = noErr; + break; + } + case kEventControlClick: + { + EventMouseButton buttonState; + GetEventParameter (inEvent, kEventParamMouseButton, typeMouseButton, NULL, sizeof (EventMouseButton), NULL, &buttonState); + if (buttonState == kEventMouseButtonPrimary) + { + result = CallNextEventHandler (inHandlerCallRef, inEvent); + break; + } + } + case kEventControlTrack: + case kEventControlContextualMenuClick: + { + long buttons = 0; + EventMouseButton buttonState; + HIPoint hipoint; + UInt32 modifiers; + GetEventParameter (inEvent, kEventParamMouseLocation, typeHIPoint, NULL, sizeof (HIPoint), NULL, &hipoint); + if (eventKind == kEventControlContextualMenuClick) + buttons = kRButton; + else if (eventKind == kEventControlTrack) + { + buttons = kLButton; + GetEventParameter (inEvent, kEventParamKeyModifiers, typeUInt32, NULL, sizeof (UInt32), NULL, &modifiers); + if (modifiers & cmdKey) + buttons |= kControl; + if (modifiers & shiftKey) + buttons |= kShift; + if (modifiers & optionKey) + buttons |= kAlt; + if (modifiers & controlKey) + buttons |= kApple; + } + else + { + GetEventParameter (inEvent, kEventParamKeyModifiers, typeUInt32, NULL, sizeof (UInt32), NULL, &modifiers); + GetEventParameter (inEvent, kEventParamMouseButton, typeMouseButton, NULL, sizeof (EventMouseButton), NULL, &buttonState); + if (buttonState == kEventMouseButtonPrimary) + buttons |= kLButton; + if (buttonState == kEventMouseButtonSecondary) + buttons |= kRButton; + if (buttonState == kEventMouseButtonTertiary) + buttons |= kMButton; + if (modifiers & cmdKey) + buttons |= kControl; + if (modifiers & shiftKey) + buttons |= kShift; + if (modifiers & optionKey) + buttons |= kAlt; + if (modifiers & controlKey) + buttons |= kApple; + } + //SetUserFocusWindow (window); + //AdvanceKeyboardFocus (window); + //SetKeyboardFocus (window, frame->controlRef, kControlFocusNextPart); + WindowAttributes windowAttributes; + GetWindowAttributes (window, &windowAttributes); + Point point = {(short)hipoint.y, (short)hipoint.x}; + if (eventKind == kEventControlClick && !(windowAttributes & kWindowCompositingAttribute)) + QDGlobalToLocalPoint (GetWindowPort (window), &point); + CDrawContext* context = frame->createDrawContext (); + CPoint p (point.h, point.v); + if (!(windowAttributes & kWindowCompositingAttribute)) + p.offset (-context->offsetScreen.x, -context->offsetScreen.y); + frame->mouse (context, p, buttons); + context->forget (); + result = noErr; + break; + } + case kEventControlGetOptimalBounds: + { + HIRect optimalBounds = { {0, 0}, { frame->getWidth (), frame->getHeight ()}}; + SetEventParameter (inEvent, kEventParamControlOptimalBounds, typeHIRect, sizeof (HIRect), &optimalBounds); + result = noErr; + break; + } + case kEventControlGetFocusPart: + { + if (hiToolboxAllowFocusChange) + { + ControlPartCode code = frame->hasFocus ? 127 : kControlFocusNoPart; + SetEventParameter (inEvent, kEventParamControlPart, typeControlPartCode, sizeof (ControlPartCode), &code); + result = noErr; + } + break; + } + case kEventControlSetFocusPart: + { + if (hiToolboxAllowFocusChange) + { + ControlPartCode code; + GetEventParameter (inEvent, kEventParamControlPart, typeControlPartCode, NULL, sizeof (ControlPartCode), NULL, &code); + if (code == kControlFocusNoPart) + { + frame->hasFocus = false; + frame->setFocusView (NULL); + } + else + { + bool anfResult = false; + if (code == kControlFocusNextPart) + anfResult = frame->advanceNextFocusView (frame->pFocusView); + else if (code == kControlFocusPrevPart) + anfResult = frame->advanceNextFocusView (frame->pFocusView, true); + if (anfResult) + { + frame->hasFocus = true; + code = 127; + } + else + { + frame->hasFocus = false; + code = kControlFocusNoPart; + } + } + SetEventParameter (inEvent, kEventParamControlPart, typeControlPartCode, sizeof (code), &code); + result = noErr; + } + break; + } + case kEventControlDragEnter: + { + #if MAC_OLD_DRAG + gEventDragWorks = true; + #endif + + DragRef dragRef; + if (GetEventParameter (inEvent, kEventParamDragRef, typeDragRef, NULL, sizeof (DragRef), NULL, &dragRef) == noErr) + { + gDragContainer = new CDragContainer (dragRef); + + CDrawContext* context = frame->createDrawContext (); + VSTGUI_CPoint where; + frame->setCursor (kCursorNotAllowed); + frame->getMouseLocation (context, where); + frame->onDragEnter (context, gDragContainer, where); + context->forget (); + + bool acceptDrop = true; + SetEventParameter (inEvent, kEventParamControlWouldAcceptDrop, typeBoolean, sizeof (bool), &acceptDrop); + } + result = noErr; + break; + } + case kEventControlDragWithin: + { + if (gDragContainer) + { + CDrawContext* context = frame->createDrawContext (); + VSTGUI_CPoint where; + frame->getMouseLocation (context, where); + frame->onDragMove (context, gDragContainer, where); + context->forget (); + } + result = noErr; + break; + } + case kEventControlDragLeave: + { + if (gDragContainer) + { + CDrawContext* context = frame->createDrawContext (); + VSTGUI_CPoint where; + frame->getMouseLocation (context, where); + frame->onDragLeave (context, gDragContainer, where); + frame->setCursor (kCursorDefault); + context->forget (); + } + result = noErr; + break; + } + case kEventControlDragReceive: + { + if (gDragContainer) + { + CDrawContext* context = frame->createDrawContext (); + VSTGUI_CPoint where; + frame->getMouseLocation (context, where); + frame->onDrop (context, gDragContainer, where); + frame->setCursor (kCursorDefault); + context->forget (); + gDragContainer->forget (); + gDragContainer = 0; + } + result = noErr; + break; + } + } + break; + } + case kEventClassMouse: + { + switch (eventKind) + { + case kEventMouseWheelMoved: + { + UInt32 modifiers; + HIPoint windowHIPoint; + SInt32 wheelDelta; + EventMouseWheelAxis wheelAxis; + WindowRef windowRef; + GetEventParameter (inEvent, kEventParamWindowRef, typeWindowRef, NULL, sizeof (WindowRef), NULL, &windowRef); + GetEventParameter (inEvent, kEventParamMouseWheelAxis, typeMouseWheelAxis, NULL, sizeof (EventMouseWheelAxis), NULL, &wheelAxis); + GetEventParameter (inEvent, kEventParamMouseWheelDelta, typeLongInteger, NULL, sizeof (SInt32), NULL, &wheelDelta); + GetEventParameter (inEvent, kEventParamWindowMouseLocation, typeHIPoint, NULL, sizeof (HIPoint), NULL, &windowHIPoint); + GetEventParameter (inEvent, kEventParamKeyModifiers, typeUInt32, NULL, sizeof (UInt32), NULL, &modifiers); + HIViewConvertPoint (&windowHIPoint, HIViewGetRoot (windowRef), frame->controlRef); + CPoint p ((CCoord)windowHIPoint.x, (CCoord)windowHIPoint.y); + CDrawContext* context = frame->createDrawContext (); + CMouseWheelAxis axis = kMouseWheelAxisX; + if (wheelAxis == kEventMouseWheelAxisY && !(modifiers & cmdKey)) + axis = kMouseWheelAxisY; + frame->onWheel (context, p, axis, wheelDelta); + context->forget (); + result = noErr; + break; + } + } + break; + } + case kEventClassTextInput: + { + switch (eventKind) + { + case kEventTextInputUnicodeForKeyEvent: + { + // The "Standard Event Handler" of a window would return noErr even though no one has handled the key event. + // This prevents the "Standard Handler" to be called for this event, with the exception of the tab key as it is used for control focus changes. + EventRef rawKeyEvent; + GetEventParameter (inEvent, kEventParamTextInputSendKeyboardEvent, typeEventRef, NULL, sizeof (EventRef), NULL, &rawKeyEvent); + if (rawKeyEvent) + { + UInt32 keyCode = 0; + GetEventParameter (rawKeyEvent, kEventParamKeyCode, typeUInt32, NULL, sizeof (UInt32), NULL, &keyCode); + if (keyCode == keyTable[VKEY_TAB+1]) + return result; + } + result = eventPassToNextTargetErr; + break; + } + } + break; + } + case kEventClassKeyboard: + { + if (frame->hasFocus) + { + switch (eventKind) + { + case kEventRawKeyDown: + case kEventRawKeyRepeat: + { + // todo: make this work + + char character = 0; + UInt32 keyCode = 0; + UInt32 modifiers = 0; + GetEventParameter (inEvent, kEventParamKeyMacCharCodes, typeChar, NULL, sizeof (char), NULL, &character); + GetEventParameter (inEvent, kEventParamKeyCode, typeUInt32, NULL, sizeof (UInt32), NULL, &keyCode); + GetEventParameter (inEvent, kEventParamKeyModifiers, typeUInt32, NULL, sizeof (UInt32), NULL, &modifiers); + char scanCode = keyCode; + VstKeyCode vstKeyCode; + memset (&vstKeyCode, 0, sizeof (VstKeyCode)); + KeyboardLayoutRef layout; + if (KLGetCurrentKeyboardLayout (&layout) == noErr) + { + const void* pKCHR = 0; + KLGetKeyboardLayoutProperty (layout, kKLKCHRData, &pKCHR); + if (pKCHR) + { + static UInt32 keyTranslateState = 0; + vstKeyCode.character = KeyTranslate (pKCHR, keyCode, &keyTranslateState); + if (modifiers & shiftKey) + { + vstKeyCode.character = toupper (vstKeyCode.character); + } + } + } + short entries = sizeof (keyTable) / (sizeof (short)); + for (int i = 0; i < entries; i += 2) + { + if (keyTable[i + 1] == scanCode) + { + vstKeyCode.virt = keyTable[i]; + vstKeyCode.character = 0; + break; + } + } + if (modifiers & cmdKey) + vstKeyCode.modifier |= MODIFIER_CONTROL; + if (modifiers & shiftKey) + vstKeyCode.modifier |= MODIFIER_SHIFT; + if (modifiers & optionKey) + vstKeyCode.modifier |= MODIFIER_ALTERNATE; + if (modifiers & controlKey) + vstKeyCode.modifier |= MODIFIER_COMMAND; + if (frame->onKeyDown (vstKeyCode) != -1) + result = noErr; + + break; + } + } + } + break; + } + } + return result; +} + +// code from CarbonSketch Example Code +#define kGenericRGBProfilePathStr "/System/Library/ColorSync/Profiles/Generic RGB Profile.icc" + +class QuartzStatics +{ +public: + //----------------------------------------------------------------------------- + QuartzStatics () + : genericRGBColorSpace (0) + { + CreateGenericRGBColorSpace (); + CFBundleRef coregraphicsBundle = CFBundleGetBundleWithIdentifier (CFSTR("com.apple.CoreGraphics")); + if (coregraphicsBundle) + { + _CGImageCreateWithImageInRect = (CGImageCreateWithImageInRectProc)CFBundleGetFunctionPointerForName (coregraphicsBundle, CFSTR("CGImageCreateWithImageInRect")); + _CGContextStrokeLineSegments = (CGContextStrokeLineSegmentsProc)CFBundleGetFunctionPointerForName (coregraphicsBundle, CFSTR("CGContextStrokeLineSegments")); + } + } + + //----------------------------------------------------------------------------- + ~QuartzStatics () + { + // we don't want to leak ;-) + CGColorSpaceRelease (genericRGBColorSpace); + + if (bmpGI) + CloseComponent (bmpGI); + if (pngGI) + CloseComponent (pngGI); + if (jpgGI) + CloseComponent (jpgGI); + if (pictGI) + CloseComponent (pictGI); + bmpGI = 0; + pngGI = 0; + jpgGI = 0; + pictGI = 0; + } + + inline CGColorSpaceRef getGenericRGBColorSpace () { return genericRGBColorSpace; } + +protected: + //----------------------------------------------------------------------------- + CMProfileRef OpenGenericProfile(void) + { + CMProfileLocation loc; + CMProfileRef cmProfile; + + loc.locType = cmPathBasedProfile; + strcpy(loc.u.pathLoc.path, kGenericRGBProfilePathStr); + + if (CMOpenProfile(&cmProfile, &loc) != noErr) + cmProfile = NULL; + + return cmProfile; + } + + //----------------------------------------------------------------------------- + void CreateGenericRGBColorSpace(void) + { + CMProfileRef genericRGBProfile = OpenGenericProfile(); + + if (genericRGBProfile) + { + genericRGBColorSpace = CGColorSpaceCreateWithPlatformColorSpace(genericRGBProfile); + + // we opened the profile so it is up to us to close it + CMCloseProfile(genericRGBProfile); + } + if (genericRGBColorSpace == NULL) + genericRGBColorSpace = CGColorSpaceCreateDeviceRGB (); + } + + CGColorSpaceRef genericRGBColorSpace; +}; + +static QuartzStatics _gQuartzStatics; + +inline CGColorSpaceRef GetGenericRGBColorSpace () +{ + return _gQuartzStatics.getGenericRGBColorSpace (); +} + +END_NAMESPACE_VSTGUI +#endif + +#endif + diff --git a/vstgui.sf/vstgui/vstgui.h b/vstgui.sf/vstgui/vstgui.h new file mode 100644 index 0000000..c15b2ea --- /dev/null +++ b/vstgui.sf/vstgui/vstgui.h @@ -0,0 +1,1227 @@ +//----------------------------------------------------------------------------- +// VST Plug-Ins SDK +// VSTGUI: Graphical User Interface Framework for VST plugins : +// +// Version 3.0 $Date: 2005/11/15 14:56:42 $ +// +//----------------------------------------------------------------------------- +// VSTGUI LICENSE +// © 2004, Steinberg Media Technologies, All Rights Reserved +//----------------------------------------------------------------------------- +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// * Neither the name of the Steinberg Media Technologies nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +// OF THE POSSIBILITY OF SUCH DAMAGE. +//----------------------------------------------------------------------------- + +#ifndef __vstgui__ +#define __vstgui__ + +// define global defines +#if WIN32 + #define WINDOWS 1 +#elif SGI | SUN + #define MOTIF 1 +#elif __MWERKS__ || __APPLE_CC__ + #define MAC 1 + #if __MACH__ + #define MACX 1 + #define QUARTZ 1 + #ifndef TARGET_API_MAC_CARBON + #define TARGET_API_MAC_CARBON 1 + #endif + #ifndef __CF_USE_FRAMEWORK_INCLUDES__ + #define __CF_USE_FRAMEWORK_INCLUDES__ 1 + #endif + #endif +#elif __BEOS__ + #define BEOS 1 +#endif + +#if WINDOWS + #define USE_NAMESPACE 1 +#endif + +#if USE_NAMESPACE + #define BEGIN_NAMESPACE_VSTGUI namespace VSTGUI { + #define END_NAMESPACE_VSTGUI } + #define USING_NAMESPACE_VSTGUI using namespace VSTGUI; +#else + #define BEGIN_NAMESPACE_VSTGUI + #define END_NAMESPACE_VSTGUI + #define USING_NAMESPACE_VSTGUI +#endif + +// VSTGUI Version +#define VSTGUI_VERSION_MAJOR 3 +#define VSTGUI_VERSION_MINOR 0 + +//---------------------------------------------------- +//---------------------------------------------------- +BEGIN_NAMESPACE_VSTGUI + +class CFrame; +class CDrawContext; +class COffscreenContext; +class CControl; +class CBitmap; + +END_NAMESPACE_VSTGUI + +#if PLUGGUI + #ifndef __plugguieditor__ + #include "plugguieditor.h" + #endif +#else + #ifndef __aeffguieditor__ + #include "aeffguieditor.h" + #endif +#endif + +//---------------------------------------------------- +#if WINDOWS + #include + +//---------------------------------------------------- +#elif MOTIF + #include + #include + #ifdef NOBOOL + #ifndef bool + typedef short bool; + #endif + #ifndef false + static const bool false = 0; + #endif + #ifndef true + static const bool true = 1; + #endif + #endif + + // definition of struct for XPixmap resources + struct CResTableEntry { + int id; + char **xpm; + }; + + typedef CResTableEntry CResTable[]; + extern CResTable xpmResources; + +//---------------------------------------------------- +#elif MAC + #if MACX + #include + //macho VST's set gBundleRef which is a CFBundleRef + BEGIN_NAMESPACE_VSTGUI + extern void* gBundleRef; + END_NAMESPACE_VSTGUI + #else + #include + #include + #include + #include + #include + #include + #include + #include + #endif +//---------------------------------------------------- +#elif BEOS + #include + class BView; + class PlugView; + class BBitmap; + class BResources; +#endif + +struct VstKeyCode; + +BEGIN_NAMESPACE_VSTGUI + +struct CPoint; + +#define CLASS_METHODS(name, parent) \ + virtual bool isTypeOf (const char* s) const \ + { return (!strcmp (s, (#name))) ? true : parent::isTypeOf (s); }\ + +#ifdef VSTGUI_FLOAT_COORDINATES +typedef float CCoord; +#else +typedef long CCoord; +#endif + +//----------------------------------------------------------------------------- +// Structure CRect +//----------------------------------------------------------------------------- +struct CRect +{ + CRect (CCoord left = 0, CCoord top = 0, CCoord right = 0, CCoord bottom = 0) + : left (left), top (top), right (right), bottom (bottom) {} + CRect (const CRect& r) + : left (r.left), top (r.top), right (r.right), bottom (r.bottom) {} + CRect& operator () (CCoord left, CCoord top, CCoord right, CCoord bottom) + { + if (left < right) + this->left = left, this->right = right; + else + this->left = right, this->right = left; + if (top < bottom) + this->top = top, this->bottom = bottom; + else + this->top = bottom, this->bottom = top; + return *this; + } + + bool operator != (const CRect& other) const + { return (left != other.left || right != other.right || + top != other.top || bottom != other.bottom); } + + bool operator == (const CRect& other) const + { return (left == other.left && right == other.right && + top == other.top && bottom == other.bottom); } + + inline CCoord width () const { return right - left; } + inline CCoord height () const { return bottom - top; } + + inline CCoord getWidth () const { return right - left; } + inline CCoord getHeight () const { return bottom - top; } + + inline void setWidth (CCoord width) { right = left + width; } + inline void setHeight (CCoord height) { bottom = top + height; } + + CRect &offset (CCoord x, CCoord y) + { left += x; right += x; top += y; bottom += y; return *this; } + + CRect &inset (CCoord deltaX, CCoord deltaY) + { left += deltaX; right -= deltaX; top += deltaY; bottom -= deltaY; + return *this; } + + CRect &moveTo (CCoord x, CCoord y) + { CCoord vDiff = y - top; CCoord hDiff = x - left; + top += vDiff; bottom += vDiff; left += hDiff; right += hDiff; + return *this; } + + bool pointInside (const CPoint& where) const; // Checks if point is inside this rect + bool isEmpty () const; + + bool rectOverlap (const CRect& rect) const + { + if (right < rect.left) return false; + if (left > rect.right) return false; + if (bottom < rect.top) return false; + if (top > rect.bottom) return false; + return true; + } + + void bound (const CRect& rect); + + union + { CCoord left; CCoord x;}; + + union + { CCoord top; CCoord y;}; + + union + { CCoord right; CCoord x2;}; + + union + { CCoord bottom; CCoord y2;}; +}; + +//----------------------------------------------------------------------------- +// Structure CPoint +//----------------------------------------------------------------------------- +struct CPoint +{ + CPoint (CCoord h = 0, CCoord v = 0) : h (h), v (v) {} + CPoint& operator () (CCoord h, CCoord v) + { this->h = h; this->v = v; return *this; } + + bool isInside (CRect& r) const + { return h >= r.left && h <= r.right && v >= r.top && v <= r.bottom; } + + bool operator != (const CPoint &other) const + { return (h != other.h || v != other.v); } + + bool operator == (const CPoint &other) const + { return (h == other.h && v == other.v); } + + CPoint &offset (CCoord h, CCoord v) + { this->h += h; this->v += v; return *this; } + + union + { CCoord h; CCoord x;}; + + union + { CCoord v; CCoord y;}; +}; + +//----------------------------------------------------------------------------- +// Structure CColor +//----------------------------------------------------------------------------- +struct CColor +{ + CColor& operator () (unsigned char red, + unsigned char green, + unsigned char blue, + unsigned char alpha) + { + this->red = red; + this->green = green; + this->blue = blue; + this->alpha = alpha; + return *this; + } + + CColor& operator = (const CColor& newColor) + { + red = newColor.red; + green = newColor.green; + blue = newColor.blue; + alpha = newColor.alpha; + return *this; + } + + CColor operator ~ () + { + CColor c; + c.red = ~red; + c.green = ~green; + c.blue = ~blue; + c.alpha = ~alpha; + return c; + } + + bool operator != (const CColor &other) const + { return (red != other.red || green != other.green || blue != other.blue || alpha != other.alpha); } + + bool operator == (const CColor &other) const + { return (red == other.red && green == other.green && blue == other.blue && alpha == other.alpha); } + + unsigned char red; + unsigned char green; + unsigned char blue; + unsigned char alpha; +}; + +// define some basic colors +extern CColor kTransparentCColor; +extern CColor kBlackCColor; +extern CColor kWhiteCColor; +extern CColor kGreyCColor; +extern CColor kRedCColor; +extern CColor kGreenCColor; +extern CColor kBlueCColor; +extern CColor kYellowCColor; +extern CColor kCyanCColor; +extern CColor kMagentaCColor; + + +//----------------------------------------------------------------------------- +// Definitions of special characters in a platform independent way + +#if WINDOWS || MOTIF +#define kDegreeSymbol "\xB0" +#define kInfiniteSymbol "oo" +#define kCopyrightSymbol "\xA9" +#define kTrademarkSymbol "\x99" +#define kRegisteredSymbol "\xAE" +#define kMicroSymbol "\x85" +#define kPerthousandSymbol "\x89" + +#elif BEOS +#define kDegreeSymbol "\xC2\xB0" +#define kInfiniteSymbol "\xE2\x88\x9E" +#define kCopyrightSymbol "\xC2\xA9" +#define kTrademarkSymbol "\xE2\x84\xA2" +#define kRegisteredSymbol "\xC2\xAE" +#define kMicroSymbol "\xC2\xB5" +#define kPerthousandSymbol "\xE2\x80\xB0" + +#elif MAC +#define kDegreeSymbol "\xA1" +#define kInfiniteSymbol "oo" +#define kCopyrightSymbol "\xA9" +#define kTrademarkSymbol "\xAA" +#define kRegisteredSymbol "\xA8" +#define kMicroSymbol "\xB5" +#define kPerthousandSymbol "\xE4" +#endif + +class CDragContainer; +class CCView; +class CAttributeListEntry; + +//----------------------------------------------------------------------------- +typedef unsigned long CViewAttributeID; +//----------------------------------------------------------------------------- +// Attributes +// all attributes where the first letter is lowercase are reserved for the vstgui lib + +extern const CViewAttributeID kCViewAttributeReferencePointer; // 'cvrp' + +//----------------------------------------------------------------------------- +//----------- +// Font Type +//----------- +enum CFont +{ + kSystemFont = 0, + kNormalFontVeryBig, + kNormalFontBig, + kNormalFont, + kNormalFontSmall, + kNormalFontSmaller, + kNormalFontVerySmall, + kSymbolFont, + + kNumStandardFonts +}; + +//----------- +// Text Face +//----------- +enum CTxtFace +{ + kNormalFace = 0, + kBoldFace = 1, + kItalicFace = 2, + kUnderlineFace = 4 +}; + +//----------- +// Line Style +//----------- +enum CLineStyle +{ + kLineSolid = 0, + kLineOnOffDash +}; + +//----------- +// Draw Mode +//----------- +enum CDrawMode +{ + kCopyMode = 0, + kOrMode, + kXorMode, + kAntialias +}; + +//---------------------------- +// Text Alignment (Horizontal) +//---------------------------- +enum CHoriTxtAlign +{ + kLeftText = 0, + kCenterText, + kRightText +}; + +//---------------------------- +// Buttons Type (+modifiers) +//---------------------------- +enum CButton +{ + kLButton = 1, + kMButton = 2, + kRButton = 4, + kShift = 8, + kControl = 16, + kAlt = 32, + kApple = 64 +}; + +//---------------------------- +// Cursor Type +//---------------------------- +enum CCursorType +{ + kCursorDefault = 0, + kCursorWait, + kCursorHSize, + kCursorVSize, + kCursorSizeAll, + kCursorNESWSize, + kCursorNWSESize, + kCursorCopy, + kCursorNotAllowed, + kCursorHand +}; + +//---------------------------- +// Knob Mode +//---------------------------- +enum CKnobMode +{ + kCircularMode = 0, + kRelativCircularMode, + kLinearMode +}; + +//---------------------------- +// Draw Style +//---------------------------- +enum CDrawStyle +{ + kDrawStroked = 0, + kDrawFilled, + kDrawFilledAndStroked +}; + +enum CMouseWheelAxis +{ + kMouseWheelAxisX = 0, + kMouseWheelAxisY +}; + +//----------------------------------------------------------------------------- +// CReferenceCounter Declaration (Reference Counting) +//----------------------------------------------------------------------------- +class CReferenceCounter +{ +public: + CReferenceCounter () : nbReference (1) {} + virtual ~CReferenceCounter () {} + + virtual void forget () { nbReference--; if (nbReference == 0) delete this; } + virtual void remember () { nbReference++; } + long getNbReference () const { return nbReference; } + +private: + long nbReference; +}; + +//----------------------------------------------------------------------------- +// CDrawContext Declaration +//! A drawing context encapsulates the drawing context of the underlying OS. It implements the drawing functions. +//----------------------------------------------------------------------------- +class CDrawContext : public CReferenceCounter +{ +public: + CDrawContext (CFrame *pFrame, void *pSystemContext, void *pWindow = 0); + virtual ~CDrawContext (); + + void moveTo (const CPoint &point); ///< move line position to point + void lineTo (const CPoint &point); ///< draw a line from current position to point + void drawLines (const CPoint* points, const long& numberOfLines); ///< draw multiple lines at once + + void drawPolygon (const CPoint *pPoints, long numberOfPoints, const CDrawStyle drawStyle = kDrawStroked); ///< draw a polygon + void polyLine (const CPoint *pPoint, long numberOfPoints); ///< draw a stroked polygon + void fillPolygon (const CPoint *pPoint, long numberOfPoints); ///< draw a filled polygon + + void drawRect (const CRect &rect, const CDrawStyle drawStyle = kDrawStroked); ///< draw a stroked rect + void fillRect (const CRect &rect); ///< draw a filled rect + + void drawArc (const CRect &rect, const float startAngle1, const float endAngle2, const CDrawStyle drawStyle = kDrawStroked); ///< draw a stroked arc, where the angles are in degree + void drawArc (const CRect &rect, const CPoint &point1, const CPoint &point2); ///< draw a stroked arc between point1 and point2 + void fillArc (const CRect &rect, const CPoint &point1, const CPoint &point2); ///< draw a filled arc between point1 and point2 + + void drawEllipse (const CRect &rect, const CDrawStyle drawStyle = kDrawStroked); ///< draw an ellipse + void fillEllipse (const CRect &rect); ///< draw a filled ellipse + + void drawPoint (const CPoint &point, CColor color); ///< draw a point + CColor getPoint (const CPoint& point); ///< \deprecated + + void floodFill (const CPoint& start); ///< \deprecated + + void setLineStyle (CLineStyle style); ///< set the current line style + CLineStyle getLineStyle () const { return lineStyle; } ///< get the current line style + + void setLineWidth (CCoord width); ///< set the current line width + CCoord getLineWidth () const { return frameWidth; } ///< get the current line width + + void setDrawMode (CDrawMode mode); ///< set the current draw mode, see CDrawMode + CDrawMode getDrawMode () const { return drawMode; } ///< get the current draw mode, see CDrawMode + + void setClipRect (const CRect &clip); ///< set the current clip + CRect &getClipRect (CRect &clip) const { clip = clipRect; clip.offset (-offset.h, -offset.v); return clip; } ///< get the current clip + void resetClipRect (); ///< reset the clip to the default state + + void setFillColor (const CColor color); ///< set current fill color + CColor getFillColor () const { return fillColor; } ///< get current fill color + + void setFrameColor (const CColor color); ///< set current stroke color + CColor getFrameColor () const { return frameColor; } ///< get current stroke color + + void setFontColor (const CColor color); ///< set current font color + CColor getFontColor () const { return fontColor; } ///< get current font color + void setFont (CFont fontID, const long size = 0, long style = 0); ///< set current font + CFont getFont () const { return fontId; } ///< get current font + long getFontSize () const { return fontSize; } ///< get current font size + + CCoord getStringWidth (const char* pStr); ///< get the width of a string + + void drawString (const char *pString, const CRect &rect, const short opaque = false, + const CHoriTxtAlign hAlign = kCenterText); ///< draw a string + + long getMouseButtons (); ///< get current mouse buttons + void getMouseLocation (CPoint &point); ///< get current mouse location. should not be used, see CView::getMouseLocation + bool waitDoubleClick (); ///< check if another mouse click occurs in the near future + bool waitDrag (); ///< check if the mouse will be dragged + +#if MOTIF + long getIndexColor (CColor color); + Colormap getColormap (); + Visual *getVisual (); + unsigned int getDepth (); + + static long nbNewColor; +#endif + + void *getWindow () { return pWindow; } + void setWindow (void *ptr) { pWindow = ptr; } + void getLoc (CPoint &where) const { where = penLoc; } + CFrame* getFrame () const { return pFrame; } + + CPoint offsetScreen; + CPoint offset; + + void *getSystemContext () const { return pSystemContext; } + + virtual void forget (); + + //------------------------------------------- +protected: + + friend class CBitmap; + friend class COffscreenContext; + + void *pSystemContext; + void *pWindow; + CFrame *pFrame; + + long fontSize; + long fontStyle; + CFont fontId; + CColor fontColor; + CPoint penLoc; + + CCoord frameWidth; + CColor frameColor; + CColor fillColor; + CLineStyle lineStyle; + CDrawMode drawMode; + CRect clipRect; + +#if WINDOWS + void *pBrush; + void *pPen; + void *pFont; + void *pOldBrush; + void *pOldPen; + void *pOldFont; + long iPenStyle; + HDC pHDC; + +#elif MAC + #if QUARTZ + CGContextRef gCGContext; + bool needToSynchronizeCGContext; + public: + CGContextRef getCGContext () const { return gCGContext; } + CGContextRef beginCGContext (bool swapYAxis = false); + void releaseCGContext (CGContextRef context); + void synchronizeCGContext (); + + virtual CGImageRef getCGImage () const; + protected: + #else + + FontInfo fontInfoStruct; + Pattern fillPattern; + bool bInitialized; + #endif + virtual BitMapPtr getBitmap (); + virtual void releaseBitmap (); + virtual CGrafPtr getPort (); + +#elif MOTIF + Display *pDisplay; + + XFontStruct *pFontInfoStruct; + +#elif BEOS + BView* pView; + BFont font; + void lineFromTo (CPoint& cstart, CPoint& cend); + +#endif +}; + + +//----------------------------------------------------------------------------- +// COffscreenContext Declaration +//! A drawing device which uses a pixmap as its drawing surface. +//----------------------------------------------------------------------------- +class COffscreenContext : public CDrawContext +{ +public: + COffscreenContext (CDrawContext *pContext, CBitmap *pBitmap, bool drawInBitmap = false); + COffscreenContext (CFrame *pFrame, long width, long height, const CColor backgroundColor = kBlackCColor); + + virtual ~COffscreenContext (); + + void copyFrom (CDrawContext *pContext, CRect destRect, CPoint srcOffset = CPoint (0, 0)); ///< copy from offscreen to pContext + void copyTo (CDrawContext* pContext, CRect& srcRect, CPoint destOffset = CPoint (0, 0)); ///< copy to offscreen from pContext + + inline CCoord getWidth () const { return width; } + inline CCoord getHeight () const { return height; } + + //------------------------------------------- +protected: + CBitmap *pBitmap; + CBitmap *pBitmapBg; + CCoord height; + CCoord width; + bool bDestroyPixmap; + + CColor backgroundColor; + +#if WINDOWS + void* oldBitmap; + +#elif MOTIF + Display *pXdisplay; + +#elif BEOS + BBitmap *offscreenBitmap; + +#elif MAC + #if QUARTZ + void* offscreenBitmap; + virtual CGImageRef getCGImage () const; + #else + CGrafPtr getPort (); + #endif + BitMapPtr getBitmap (); + void releaseBitmap (); +#endif +}; + + +//----------------------------------------------------------------------------- +// CBitmap Declaration +//! Encapsulates various platform depended kinds of bitmaps. +//----------------------------------------------------------------------------- +class CBitmap : public CReferenceCounter +{ +public: + CBitmap (long resourceID); ///< Create a pixmap from a resource identifier + CBitmap (CFrame &frame, CCoord width, CCoord height); ///< Create a pixmap with a given size. + virtual ~CBitmap (); + + virtual void draw (CDrawContext *pContext, CRect &rect, const CPoint &offset = CPoint (0, 0)); ///< Draw the pixmap using a given rect as output position and a given offset of its source pixmap. + virtual void drawTransparent (CDrawContext *pContext, CRect &rect, const CPoint &offset = CPoint (0, 0)); + virtual void drawAlphaBlend (CDrawContext *pContext, CRect &rect, const CPoint &offset = CPoint (0, 0), unsigned char alpha = 128); ///< Same as CBitmap::draw except that it uses the alpha value to draw the bitmap alpha blended. + + inline CCoord getWidth () const { return width; } + inline CCoord getHeight () const { return height; } + + bool isLoaded () const; + void *getHandle () const; + + void setTransparentColor (const CColor color); + CColor getTransparentColor () const { return transparentCColor; } + void setTransparencyMask (CDrawContext* pContext, const CPoint& offset = CPoint (0, 0)); + + void setNoAlpha (bool state) { noAlpha = state; } + bool getNoAlpha () const { return noAlpha; } + +#if BEOS + static void closeResource (); +#endif +#if MACX + #if QUARTZ + virtual CGImageRef createCGImage (bool transparent = false); + #endif +#endif + + //------------------------------------------- +protected: + CBitmap (); + + virtual void dispose (); + virtual bool loadFromResource (long resourceID); + virtual bool loadFromPath (const void* platformPath); // load from a platform path. On Windows it's a C string and on Mac OS X its a CFURLRef. + + long resourceID; + CCoord width; + CCoord height; + + CColor transparentCColor; + bool noAlpha; + +#if WINDOWS + void *pHandle; + void *pMask; + +#elif MOTIF + void *createPixmapFromXpm (CDrawContext *pContext); + + char **ppDataXpm; + Display *pXdisplay; + void *pHandle; + void *pMask; + +#elif MAC + void* pHandle; + void* pMask; + #if QUARTZ + void* cgImage; + #endif +#elif BEOS + static BResources *resourceFile; + BBitmap *bbitmap; + bool transparencySet; +#endif +}; + +enum { + kMessageUnknown = 0, + kMessageNotified = 1 +}; + +//----------------------------------------------------------------------------- +// CView Declaration +//----------------------------------------------------------------------------- +class CView : public CReferenceCounter +{ +public: + CView (const CRect &size); + virtual ~CView (); + + virtual void draw (CDrawContext *pContext); ///< called if the view should draw itself + virtual void drawRect (CDrawContext *pContext, const CRect& updateRect) { draw (pContext); } ///< called if the view should draw itself + virtual bool checkUpdate (CRect& updateRect) const { return updateRect.rectOverlap (size); } + virtual void mouse (CDrawContext *pContext, CPoint &where, long buttons = -1); ///< called if a mouse click event occurs + + virtual void setBackground (CBitmap *background); ///< set the background image of this view + virtual CBitmap *getBackground () const { return pBackground; } ///< get the background image of this view + + virtual long onKeyDown (VstKeyCode& keyCode); ///< called if a key down event occurs and this view has focus + virtual long onKeyUp (VstKeyCode& keyCode); ///< called if a key up event occurs and this view has focus + + virtual bool onWheel (CDrawContext *pContext, const CPoint &where, float distance); ///< called if a mouse wheel event is happening over this view + virtual bool onWheel (CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance); ///< called if a mouse wheel event is happening over this view + + virtual bool onDrop (CDrawContext* context, CDragContainer* drag, const CPoint& where) { return false; } ///< called if a drag is dropped onto this view + virtual void onDragEnter (CDrawContext* context, CDragContainer* drag, const CPoint& where) {} ///< called if a drag is entering this view + virtual void onDragLeave (CDrawContext* context, CDragContainer* drag, const CPoint& where) {} ///< called if a drag is leaving this view + virtual void onDragMove (CDrawContext* context, CDragContainer* drag, const CPoint& where) {} ///< called if a drag is current moved over this view + + virtual void looseFocus (CDrawContext *pContext = 0); ///< called if view should loose focus + virtual void takeFocus (CDrawContext *pContext = 0); ///< called if view should take focus + + virtual bool isDirty () const { return bDirty; } ///< check if view is dirty + virtual void setDirty (const bool val = true) { bDirty = val; } ///< set the view to dirty so that it is redrawn in the next idle. Thread Safe ! + + virtual void setMouseEnabled (const bool bEnable = true) { bMouseEnabled = bEnable; } ///< turn on/off mouse usage for this view + virtual bool getMouseEnabled () const { return bMouseEnabled; } ///< get the state of wheather this view uses the mouse or not + + virtual void setMouseableArea (const CRect &rect) { mouseableArea = rect; } ///< set the area in which the view reacts to the mouse + virtual CRect &getMouseableArea (CRect &rect) const { rect = mouseableArea; return rect;} ///< get the area in which the view reacts to the mouse + + virtual bool hitTest (const CPoint& where, const long buttons = -1) { return where.isInside (mouseableArea); } ///< check if where hits this view + + virtual void setTransparency (bool val) { bTransparencyEnabled = val; } ///< set views transparent state + virtual bool getTransparency () const { return bTransparencyEnabled; } ///< is view transparent ? + + CCoord getHeight () const { return size.height (); } ///< get the height of the view + CCoord getWidth () const { return size.width (); } ///< get the width of the view + + virtual void setViewSize (CRect &rect); ///< set views size + virtual CRect &getViewSize (CRect &rect) const { rect = size; return rect; } ///< returns the current view size + + virtual bool removed (CView* parent) { return true; } ///< view is removed from parent view + virtual bool attached (CView* view) { return true; } ///< view is attached to a parent view + + virtual void getMouseLocation (CDrawContext* context, CPoint &point); ///< get current mouse location in local view coordinates + + virtual CPoint& frameToLocal (CPoint& point) const; ///< conversion from frame coordinates to local view coordinates + virtual CPoint& localToFrame (CPoint& point) const; ///< conversion from local view coordinates to frame coordinates + + bool getAttributeSize (const CViewAttributeID id, long& outSize) const; ///< get the size of an attribute + bool getAttribute (const CViewAttributeID id, const long inSize, void* outData, long& outSize) const; ///< get an attribute + bool setAttribute (const CViewAttributeID id, const long inSize, void* inData); ///< set an attribute + + CView *getParentView () const { return pParentView; } + CFrame *getFrame () const { return pParentFrame; } + virtual void *getEditor () const; + + virtual long notify (CView* sender, const char* message); + void redraw (); + virtual void redrawRect (CDrawContext* context, const CRect& rect); + + virtual bool wantsFocus () const { return bWantsFocus; } ///< check if view supports focus + virtual void setWantsFocus (bool state) { bWantsFocus = state; } ///< set focus support on/off + + #if DEBUG + virtual void dumpInfo (); + #endif + + virtual bool isTypeOf (const char* s) const + { return (!strcmp (s, "CView")); } + +#if ENABLE_DEPRECATED_METHODS + // deprecated methods will be placed here, so that people who really need them can turn the macro on + + virtual void setParentView (CView *pParentView) { this->pParentView = pParentView; } ///< \deprecated + virtual void setFrame (CFrame *pParent) { this->pParentFrame = pParent; } ///< \deprecated + virtual void getFrameTopLeftPos (CPoint& topLeft) const; ///< \deprecated +#endif + //------------------------------------------- +protected: + friend class CControl; + friend class CFrame; + friend class CViewContainer; + + CRect size; + CRect mouseableArea; + + CFrame *pParentFrame; + CView *pParentView; + + bool bDirty; + bool bMouseEnabled; + bool bTransparencyEnabled; + bool bWantsFocus; + + CBitmap* pBackground; + CAttributeListEntry* pAttributeList; + + virtual void update (CDrawContext *pContext); // don't call this !!! +}; + +// Message to check if View is a CViewContainer +extern char* kMsgCheckIfViewContainer; + +//----------------------------------------------------------------------------- +// CViewContainer Declaration +//! Container Class of CView objects. +//----------------------------------------------------------------------------- +class CViewContainer : public CView +{ +public: + CViewContainer (const CRect &size, CFrame *pParent, CBitmap *pBackground = 0); + virtual ~CViewContainer (); + + virtual void addView (CView *pView); ///< add a child view + virtual void addView (CView *pView, CRect &mouseableArea, bool mouseEnabled = true); ///< add a child view + virtual void removeView (CView *pView, const bool &withForget = true); ///< remove a child view + virtual void removeAll (const bool &withForget = true); ///< remove all child views + virtual bool isChild (CView *pView) const; ///< check if pView is a child view of this container + virtual long getNbViews () const; ///< get the number of child views + virtual CView *getView (long index) const; ///< get the child view at index + + virtual void setBackgroundColor (const CColor color); ///< set the background color (will only be drawn if this container is not set to transparent and does not have a background bitmap) + virtual CColor getBackgroundColor () const { return backgroundColor; } ///< get the background color + virtual void setBackgroundOffset (const CPoint &p) { backgroundOffset = p; } ///< set the offset of the background bitmap + virtual const CPoint& getBackgroundOffset () const { return backgroundOffset; } ///< get the offset of the background bitmap + + virtual void drawBackgroundRect (CDrawContext *pContext, CRect& _updateRect); ///< draw the background + + enum { + kNormalUpdate = 0, ///< this mode redraws the whole container if something is dirty + kOnlyDirtyUpdate ///< this mode only redraws the views which are dirty + }; + + virtual void setMode (long val) { mode = val; } ///< set the update mode + virtual long getMode () const { return mode; } ///< get the update mode + + virtual void useOffscreen (bool b); ///< turn on/off using an offscreen + + virtual CView *getCurrentView () const; ///< get the current view under the mouse + virtual CView *getViewAt (const CPoint& where, bool deep = false) const; ///< get the view at point where + + void modifyDrawContext (CCoord save[4], CDrawContext* pContext); + void restoreDrawContext (CDrawContext* pContext, CCoord save[4]); + + // CView + virtual void draw (CDrawContext *pContext); + virtual void drawRect (CDrawContext *pContext, const CRect& updateRect); + virtual void mouse (CDrawContext *pContext, CPoint &where, long buttons = -1); + virtual bool onWheel (CDrawContext *pContext, const CPoint &where, float distance); + virtual bool onWheel (CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance); + virtual void update (CDrawContext *pContext); + virtual bool hitTest (const CPoint& where, const long buttons = -1); + virtual long onKeyDown (VstKeyCode& keyCode); + virtual long onKeyUp (VstKeyCode& keyCode); + virtual long notify (CView* sender, const char* message); + + virtual bool onDrop (CDrawContext* context, CDragContainer* drag, const CPoint& where); + virtual void onDragEnter (CDrawContext* context, CDragContainer* drag, const CPoint& where); + virtual void onDragLeave (CDrawContext* context, CDragContainer* drag, const CPoint& where); + virtual void onDragMove (CDrawContext* context, CDragContainer* drag, const CPoint& where); + + virtual void looseFocus (CDrawContext *pContext = 0); + virtual void takeFocus (CDrawContext *pContext = 0); + virtual bool advanceNextFocusView (CView* oldFocus, bool reverse = false); + + virtual bool isDirty () const; + + virtual void setViewSize (CRect &rect); + + virtual bool removed (CView* parent); + virtual bool attached (CView* view); + + virtual CPoint& frameToLocal (CPoint& point) const; + virtual CPoint& localToFrame (CPoint& point) const; + + virtual void redrawRect (CDrawContext* context, const CRect& rect); + + CLASS_METHODS(CViewContainer, CView) + + #if DEBUG + virtual void dumpInfo (); + virtual void dumpHierarchy (); + #endif + + //------------------------------------------- +protected: + bool hitTestSubViews (const CPoint& where, const long buttons = -1); + + CCView *pFirstView; + CCView *pLastView; + long mode; + COffscreenContext *pOffscreenContext; + CColor backgroundColor; + CPoint backgroundOffset; + bool bDrawInOffscreen; + + CView* currentDragView; +}; + +//----------------------------------------------------------------------------- +// CFrame Declaration +//! The CFrame is the parent container of all views. +//----------------------------------------------------------------------------- +class CFrame : public CViewContainer +{ +public: + CFrame (const CRect &size, void *pSystemWindow, void *pEditor); + CFrame (const CRect &size, const char *pTitle, void *pEditor, const long style = 0); + + virtual ~CFrame (); + + virtual bool open (CPoint *pPoint = 0); + virtual bool close (); + virtual bool isOpen () const { return bOpenFlag; } + + virtual void idle (); + virtual void doIdleStuff (); + + virtual unsigned long getTicks () const; ///< get the current time (in ms) + virtual long getKnobMode () const; ///< get hosts knob mode + + virtual bool setPosition (CCoord x, CCoord y); + virtual bool getPosition (CCoord &x, CCoord &y) const; + + virtual bool setSize (CCoord width, CCoord height); + virtual bool getSize (CRect *pSize) const; + virtual bool getSize (CRect &pSize) const; + + virtual long setModalView (CView *pView); + virtual CView *getModalView () const { return pModalView; } + + virtual void beginEdit (long index); + virtual void endEdit (long index); + + virtual bool getCurrentLocation (CPoint &where); + virtual void setCursor (CCursorType type); + + virtual void setFocusView (CView *pView); + virtual CView *getFocusView () const { return pFocusView; } + virtual bool advanceNextFocusView (CView* oldFocus, bool reverse = false); + + virtual bool setDropActive (bool val); + virtual bool isDropActive () const { return bDropActive; }; + + CDrawContext* createDrawContext (); + + virtual void setOpenFlag (bool val) { bOpenFlag = val;}; + virtual bool getOpenFlag () const { return bOpenFlag; }; + + virtual void invalidate (const CRect &rect); + + virtual bool updatesDisabled () const { return bUpdatesDisabled; } + virtual bool updatesDisabled (bool state) { bool before = bUpdatesDisabled; bUpdatesDisabled = state; return before; } + + #if WINDOWS + HWND getOuterWindow () const; + void *getSystemWindow () const { return pHwnd; } + COffscreenContext* getBackBuffer (); + #elif BEOS + void *getSystemWindow () const { return pPlugView; } + #else + void *getSystemWindow () const { return pSystemWindow; } + #endif + void *getParentSystemWindow () const { return pSystemWindow; } + void setParentSystemWindow (void *val) { pSystemWindow = val; } + + // CView + virtual void draw (CDrawContext *pContext); + virtual void drawRect (CDrawContext *pContext, const CRect& updateRect); + virtual void draw (CView *pView = 0); + virtual void mouse (CDrawContext *pContext, CPoint &where, long buttons = -1); + virtual bool onWheel (CDrawContext *pContext, const CPoint &where, float distance); + virtual bool onWheel (CDrawContext *pContext, const CPoint &where, const CMouseWheelAxis axis, float distance); + virtual long onKeyDown (VstKeyCode& keyCode); + virtual long onKeyUp (VstKeyCode& keyCode); + virtual void update (CDrawContext *pContext); + virtual void setViewSize (CRect& inRect); + virtual CView *getCurrentView () const; + + virtual void *getEditor () const { return pEditor; } + +#if MOTIF + Colormap getColormap () const { return colormap; } + Visual *getVisual () const { return pVisual; } + unsigned int getDepth () const { return depth; } + Display *getDisplay () const { return pDisplay; } + Window getWindow () const { return window; } + void freeGc (); + + Region region; + + GC gc; + GC getGC () const { return gc; } +#endif + + #if DEBUG + virtual void dumpHierarchy (); + #endif + + CLASS_METHODS(CFrame, CViewContainer) + + //------------------------------------------- +protected: + bool initFrame (void *pSystemWin); + + void *pEditor; + + void *pSystemWindow; + CView *pModalView; + CView *pFocusView; + + bool bFirstDraw; + bool bOpenFlag; + bool bDropActive; + bool bUpdatesDisabled; + +#if WINDOWS + void *pHwnd; + HINSTANCE hInstMsimg32dll; + void* dropTarget; + COffscreenContext* backBuffer; + +#elif MOTIF + Colormap colormap; + Display *pDisplay; + Visual *pVisual; + Window window; + unsigned int depth; + + friend void _destroyCallback (Widget, XtPointer, XtPointer); + +#elif BEOS + PlugView *pPlugView; +#endif +#if QUARTZ + void setDrawContext (CDrawContext* context) { pFrameContext = context; } + friend class CDrawContext; + + static pascal OSStatus carbonEventHandler (EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void *inUserData); + bool registerWithToolbox (); + + ControlDefSpec controlSpec; + ControlRef controlRef; + bool hasFocus; + EventHandlerRef dragEventHandler; + public: + void* getPlatformControl () const { return controlRef; } + CPoint hiScrollOffset; + protected: +#endif + //------------------------------------------- +private: + CDrawContext *pFrameContext; + bool bAddedWindow; + void *pVstWindow; + void *defaultCursor; +}; + +//----------------------------------------------------------------------------- +// CDragContainer Declaration +//----------------------------------------------------------------------------- +class CDragContainer : public CReferenceCounter +{ +public: + CDragContainer (void* platformDrag); + ~CDragContainer (); + + void* first (long& size, long& type); ///< returns pointer on a char array if type is known + void* next (long& size, long& type); ///< returns pointer on a char array if type is known + + long getType (long idx) const; + long getCount () const { return nbItems; } + + enum { + kFile = 0, + kText, + + kUnknown = -1 + }; + +protected: + void* platformDrag; + long nbItems; + + long iterator; + void* lastItem; +}; + +//----------------------------------------------------------------------------- +// CCView Declaration +//----------------------------------------------------------------------------- +class CCView +{ +public: + CCView (CView *pView); + ~CCView (); + + CView *pView; + CCView *pNext; + CCView *pPrevious; +}; + +END_NAMESPACE_VSTGUI + +// include the control objects +#ifndef __vstcontrols__ +#include "vstcontrols.h" +#endif + +USING_NAMESPACE_VSTGUI + +//-End VSTGUI.H-------------------------------------- +#endif // __vstgui__ diff --git a/vstgui.sf/vstgui/vstkeycode.h b/vstgui.sf/vstgui/vstkeycode.h new file mode 100644 index 0000000..8a817bd --- /dev/null +++ b/vstgui.sf/vstgui/vstkeycode.h @@ -0,0 +1,91 @@ +#ifndef __vstkeycode__ +#define __vstkeycode__ + +#ifndef __aeffectx__ +// define VstKeyCode for non VST useage + +//---Structure and enum used for keyUp/keyDown----- +struct VstKeyCode +{ + long character; + unsigned char virt; // see enum VstVirtualKey + unsigned char modifier; // see enum VstModifierKey +}; + +//---Used by member virt of VstKeyCode------------- +enum VstVirtualKey +{ + VKEY_BACK = 1, + VKEY_TAB, + VKEY_CLEAR, + VKEY_RETURN, + VKEY_PAUSE, + VKEY_ESCAPE, + VKEY_SPACE, + VKEY_NEXT, + VKEY_END, + VKEY_HOME, + + VKEY_LEFT, + VKEY_UP, + VKEY_RIGHT, + VKEY_DOWN, + VKEY_PAGEUP, + VKEY_PAGEDOWN, + + VKEY_SELECT, + VKEY_PRINT, + VKEY_ENTER, + VKEY_SNAPSHOT, + VKEY_INSERT, + VKEY_DELETE, + VKEY_HELP, + VKEY_NUMPAD0, + VKEY_NUMPAD1, + VKEY_NUMPAD2, + VKEY_NUMPAD3, + VKEY_NUMPAD4, + VKEY_NUMPAD5, + VKEY_NUMPAD6, + VKEY_NUMPAD7, + VKEY_NUMPAD8, + VKEY_NUMPAD9, + VKEY_MULTIPLY, + VKEY_ADD, + VKEY_SEPARATOR, + VKEY_SUBTRACT, + VKEY_DECIMAL, + VKEY_DIVIDE, + VKEY_F1, + VKEY_F2, + VKEY_F3, + VKEY_F4, + VKEY_F5, + VKEY_F6, + VKEY_F7, + VKEY_F8, + VKEY_F9, + VKEY_F10, + VKEY_F11, + VKEY_F12, + VKEY_NUMLOCK, + VKEY_SCROLL, + + VKEY_SHIFT, + VKEY_CONTROL, + VKEY_ALT, + + VKEY_EQUALS +}; + +//---Used by member modifier of VstKeyCode--------- +enum VstModifierKey +{ + MODIFIER_SHIFT = 1<<0, // Shift + MODIFIER_ALTERNATE = 1<<1, // Alt + MODIFIER_COMMAND = 1<<2, // Control on Mac + MODIFIER_CONTROL = 1<<3 // Ctrl on PC, Apple on Mac +}; +#endif + +#endif diff --git a/vstgui.sf/vstgui/vstplugscarbon.h b/vstgui.sf/vstgui/vstplugscarbon.h new file mode 100644 index 0000000..e0e42c0 --- /dev/null +++ b/vstgui.sf/vstgui/vstplugscarbon.h @@ -0,0 +1,15 @@ + +#define MAC 1 +#define WINDOWS 0 +//#define PC 0 +#define SGI 0 +#define MOTIF 0 +#define BEBOX 0 + +#define CARBON 1 + +#define TARGET_API_MAC_CARBON 1 +#define TARGET_OS_MAC 1 +#define OLDP2C 1 +#define OPAQUE_TOOLBOX_STRUCTS 1 +#define USENAVSERVICES 1 \ No newline at end of file diff --git a/vstgui.sf/vstgui/vstplugsmac.h b/vstgui.sf/vstgui/vstplugsmac.h new file mode 100644 index 0000000..b7ccb69 --- /dev/null +++ b/vstgui.sf/vstgui/vstplugsmac.h @@ -0,0 +1,15 @@ +#define MAC 1 +#define WINDOWS 0 +#define SGI 0 +#define MOTIF 0 +#define BEBOX 0 +#define RHAPSODY 0 + +#define TARGET_OS_MAC 1 +#define OPAQUE_TOOLBOX_STRUCTS 0 +#define ACCESSOR_CALLS_ARE_FUNCTIONS 0 +#define CALL_NOT_IN_CARBON 1 +#define USENAVSERVICES 1 + +#define GetPortBounds(port,rect) *(rect) = port->portRect +#define GetPortPixMap(port) port->portPixMap diff --git a/vstgui.sf/vstgui/vstplugsmacho.h b/vstgui.sf/vstgui/vstplugsmacho.h new file mode 100644 index 0000000..824d006 --- /dev/null +++ b/vstgui.sf/vstgui/vstplugsmacho.h @@ -0,0 +1,22 @@ +#define MAC 1 +#define MACX 1 +#define WINDOWS 0 +#define SGI 0 +#define MOTIF 0 +#define BEBOX 0 + +#define USE_NAMESPACE 0 +#define CARBON 1 + +#define TARGET_API_MAC_CARBON 1 +#define TARGET_OS_MAC 1 +#define OLDP2C 1 +#define OPAQUE_TOOLBOX_STRUCTS 1 +#define USENAVSERVICES 1 + +#define __DEBUGGING__ +#define __CF_USE_FRAMEWORK_INCLUDES__ + +#if __MWERKS__ +#define __NOEXTENSIONS__ +#endif diff --git a/vstgui.sf/vstgui/vstplugsquartz.h b/vstgui.sf/vstgui/vstplugsquartz.h new file mode 100644 index 0000000..d90058f --- /dev/null +++ b/vstgui.sf/vstgui/vstplugsquartz.h @@ -0,0 +1,24 @@ +#define MAC 1 +#define MACX 1 +#define WINDOWS 0 +#define SGI 0 +#define MOTIF 0 +#define BEBOX 0 + +#define USE_NAMESPACE 0 + +#define TARGET_API_MAC_CARBON 1 +#define USENAVSERVICES 1 + +#define __CF_USE_FRAMEWORK_INCLUDES__ + +#if __MWERKS__ +#define __NOEXTENSIONS__ +#endif + +#define QUARTZ 1 + +#define MAC_OS_X_VERSION_MIN_REQUIRED 1020 +#define MAC_OS_X_VERSION_MAX_ALLOWED 1030 + +#include -- cgit v1.2.3-70-g09d2